poedit-3.6.3/0000755000175100001660000000000015011674364006560 5poedit-3.6.3/Makefile.in0000644000175100001660000007244715011674351010557 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/admin/ax_boost_base.m4 \ $(top_srcdir)/admin/ax_boost_iostreams.m4 \ $(top_srcdir)/admin/ax_boost_system.m4 \ $(top_srcdir)/admin/ax_boost_thread.m4 \ $(top_srcdir)/admin/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/admin/wxwin.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(dist_desktop_DATA) \ $(dist_metainfo_DATA) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(metainfodir)" DATA = $(dist_desktop_DATA) $(dist_metainfo_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir distdir-am dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/admin/compile \ $(top_srcdir)/admin/config.guess \ $(top_srcdir)/admin/config.sub $(top_srcdir)/admin/install-sh \ $(top_srcdir)/admin/missing AUTHORS COPYING NEWS README.md \ admin/compile admin/config.guess admin/config.sub \ admin/install-sh admin/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_IOSTREAMS_LIB = @BOOST_IOSTREAMS_LIB@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ BOOST_SYSTEM_LIB = @BOOST_SYSTEM_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLD2_LIBS = @CLD2_LIBS@ CPPFLAGS = @CPPFLAGS@ CPPREST_LIBS = @CPPREST_LIBS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ HAVE_CXX17 = @HAVE_CXX17@ ICU_CFLAGS = @ICU_CFLAGS@ ICU_LIBS = @ICU_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ 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@ LUCENE_LIBS = @LUCENE_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PUGIXML_CFLAGS = @PUGIXML_CFLAGS@ PUGIXML_LIBS = @PUGIXML_LIBS@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WXRC = @WXRC@ WX_CFLAGS = @WX_CFLAGS@ WX_CFLAGS_ONLY = @WX_CFLAGS_ONLY@ WX_CONFIG_PATH = @WX_CONFIG_PATH@ WX_CONFIG_WITH_ARGS = @WX_CONFIG_WITH_ARGS@ WX_CPPFLAGS = @WX_CPPFLAGS@ WX_CXXFLAGS = @WX_CXXFLAGS@ WX_CXXFLAGS_ONLY = @WX_CXXFLAGS_ONLY@ WX_LIBS = @WX_LIBS@ WX_LIBS_STATIC = @WX_LIBS_STATIC@ WX_RESCOMP = @WX_RESCOMP@ WX_VERSION = @WX_VERSION@ WX_VERSION_MAJOR = @WX_VERSION_MAJOR@ WX_VERSION_MICRO = @WX_VERSION_MICRO@ WX_VERSION_MINOR = @WX_VERSION_MINOR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I admin SUBDIRS = src docs locales artwork desktopdir = $(datadir)/applications dist_desktop_DATA = net.poedit.Poedit.desktop net.poedit.PoeditURI.desktop metainfodir = $(datadir)/metainfo dist_metainfo_DATA = net.poedit.Poedit.appdata.xml EXTRA_DIST = \ deps/json/LICENSE.MIT \ deps/json/single_include/nlohmann/json.hpp \ deps/pugixml/LICENSE.md \ deps/pugixml/src/pugiconfig.hpp \ deps/pugixml/src/pugixml.cpp \ deps/pugixml/src/pugixml.hpp \ README.md \ bootstrap all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): install-dist_desktopDATA: $(dist_desktop_DATA) @$(NORMAL_INSTALL) @list='$(dist_desktop_DATA)'; test -n "$(desktopdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(desktopdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(desktopdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(desktopdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \ done uninstall-dist_desktopDATA: @$(NORMAL_UNINSTALL) @list='$(dist_desktop_DATA)'; test -n "$(desktopdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(desktopdir)'; $(am__uninstall_files_from_dir) install-dist_metainfoDATA: $(dist_metainfo_DATA) @$(NORMAL_INSTALL) @list='$(dist_metainfo_DATA)'; test -n "$(metainfodir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(metainfodir)'"; \ $(MKDIR_P) "$(DESTDIR)$(metainfodir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(metainfodir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(metainfodir)" || exit $$?; \ done uninstall-dist_metainfoDATA: @$(NORMAL_UNINSTALL) @list='$(dist_metainfo_DATA)'; test -n "$(metainfodir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(metainfodir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(metainfodir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: 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) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_desktopDATA install-dist_metainfoDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_desktopDATA uninstall-dist_metainfoDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ dist-zstd distcheck distclean distclean-generic distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_desktopDATA \ install-dist_metainfoDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-dist_desktopDATA \ uninstall-dist_metainfoDATA .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: poedit-3.6.3/admin/0000755000175100001660000000000015011674362007646 5poedit-3.6.3/admin/depcomp0000755000175100001660000005602015011674351011144 #! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2021 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: poedit-3.6.3/admin/compile0000755000175100001660000001635015011674351011147 #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2021 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN* | MSYS*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: poedit-3.6.3/admin/missing0000755000175100001660000001533615011674351011173 #! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1996-2021 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=https://www.perl.org/ flex_URL=https://github.com/westes/flex gnu_software_URL=https://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: poedit-3.6.3/admin/config.guess0000755000175100001660000014051215011674351012107 #! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2022 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2022-01-09' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # Just in case it came from the environment. GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case $UNAME_SYSTEM in Linux|GNU|GNU/*) LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu #else #include /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl #endif #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" # Second heuristic to detect musl libc. if [ "$LIBC" = unknown ] && command -v ldd >/dev/null && ldd --version 2>&1 | grep -q ^musl; then LIBC=musl fi # If the system lacks a compiler, then just pick glibc. # We could probably try harder. if [ "$LIBC" = unknown ]; then LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` case $UNAME_MACHINE_ARCH in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case $UNAME_VERSION in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. GUESS=$machine-${os}${release}${abi-} ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE ;; *:SecBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE ;; *:MidnightBSD:*:*) GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE ;; *:ekkoBSD:*:*) GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE ;; *:SolidBSD:*:*) GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE ;; *:OS108:*:*) GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE ;; macppc:MirBSD:*:*) GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE ;; *:MirBSD:*:*) GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE ;; *:Sortix:*:*) GUESS=$UNAME_MACHINE-unknown-sortix ;; *:Twizzler:*:*) GUESS=$UNAME_MACHINE-unknown-twizzler ;; *:Redox:*:*) GUESS=$UNAME_MACHINE-unknown-redox ;; mips:OSF1:*.*) GUESS=mips-dec-osf1 ;; alpha:OSF1:*:*) # Reset EXIT trap before exiting to avoid spurious non-zero exit code. trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` GUESS=$UNAME_MACHINE-dec-osf$OSF_REL ;; Amiga*:UNIX_System_V:4.0:*) GUESS=m68k-unknown-sysv4 ;; *:[Aa]miga[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-amigaos ;; *:[Mm]orph[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-morphos ;; *:OS/390:*:*) GUESS=i370-ibm-openedition ;; *:z/VM:*:*) GUESS=s390-ibm-zvmoe ;; *:OS400:*:*) GUESS=powerpc-ibm-os400 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) GUESS=arm-acorn-riscix$UNAME_RELEASE ;; arm*:riscos:*:*|arm*:RISCOS:*:*) GUESS=arm-unknown-riscos ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) GUESS=hppa1.1-hitachi-hiuxmpp ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. case `(/bin/universe) 2>/dev/null` in att) GUESS=pyramid-pyramid-sysv3 ;; *) GUESS=pyramid-pyramid-bsd ;; esac ;; NILE*:*:*:dcosx) GUESS=pyramid-pyramid-svr4 ;; DRS?6000:unix:4.0:6*) GUESS=sparc-icl-nx6 ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) GUESS=sparc-icl-nx7 ;; esac ;; s390x:SunOS:*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL ;; sun4H:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-hal-solaris2$SUN_REL ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris2$SUN_REL ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) GUESS=i386-pc-auroraux$UNAME_RELEASE ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$SUN_ARCH-pc-solaris2$SUN_REL ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris3$SUN_REL ;; sun4*:SunOS:*:*) case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` GUESS=sparc-sun-sunos$SUN_REL ;; sun3*:SunOS:*:*) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case `/bin/arch` in sun3) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac ;; aushp:SunOS:*:*) GUESS=sparc-auspex-sunos$UNAME_RELEASE ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) GUESS=m68k-milan-mint$UNAME_RELEASE ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) GUESS=m68k-hades-mint$UNAME_RELEASE ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) GUESS=m68k-unknown-mint$UNAME_RELEASE ;; m68k:machten:*:*) GUESS=m68k-apple-machten$UNAME_RELEASE ;; powerpc:machten:*:*) GUESS=powerpc-apple-machten$UNAME_RELEASE ;; RISC*:Mach:*:*) GUESS=mips-dec-mach_bsd4.3 ;; RISC*:ULTRIX:*:*) GUESS=mips-dec-ultrix$UNAME_RELEASE ;; VAX*:ULTRIX*:*:*) GUESS=vax-dec-ultrix$UNAME_RELEASE ;; 2020:CLIX:*:* | 2430:CLIX:*:*) GUESS=clipper-intergraph-clix$UNAME_RELEASE ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } GUESS=mips-mips-riscos$UNAME_RELEASE ;; Motorola:PowerMAX_OS:*:*) GUESS=powerpc-motorola-powermax ;; Motorola:*:4.3:PL8-*) GUESS=powerpc-harris-powermax ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) GUESS=powerpc-harris-powermax ;; Night_Hawk:Power_UNIX:*:*) GUESS=powerpc-harris-powerunix ;; m88k:CX/UX:7*:*) GUESS=m88k-harris-cxux7 ;; m88k:*:4*:R4*) GUESS=m88k-motorola-sysv4 ;; m88k:*:3*:R3*) GUESS=m88k-motorola-sysv3 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then GUESS=m88k-dg-dgux$UNAME_RELEASE else GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else GUESS=i586-dg-dgux$UNAME_RELEASE fi ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) GUESS=m88k-dolphin-sysv3 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 GUESS=m88k-motorola-sysv3 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) GUESS=m88k-tektronix-sysv3 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) GUESS=m68k-tektronix-bsd ;; *:IRIX*:*:*) IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` GUESS=mips-sgi-irix$IRIX_REL ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) GUESS=i386-ibm-aix ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then GUESS=$SYSTEM_NAME else GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then GUESS=rs6000-ibm-aix3.2.4 else GUESS=rs6000-ibm-aix3.2 fi ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$IBM_ARCH-ibm-aix$IBM_REV ;; *:AIX:*:*) GUESS=rs6000-ibm-aix ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) GUESS=romp-ibm-bsd4.4 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) GUESS=rs6000-bull-bosx ;; DPX/2?00:B.O.S.:*:*) GUESS=m68k-bull-sysv3 ;; 9000/[34]??:4.3bsd:1.*:*) GUESS=m68k-hp-bsd ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) GUESS=m68k-hp-bsd4.4 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if test "$HP_ARCH" = hppa2.0w then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi GUESS=$HP_ARCH-hp-hpux$HPUX_REV ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` GUESS=ia64-hp-hpux$HPUX_REV ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } GUESS=unknown-hitachi-hiuxwe2 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) GUESS=hppa1.1-hp-bsd ;; 9000/8??:4.3bsd:*:*) GUESS=hppa1.0-hp-bsd ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) GUESS=hppa1.0-hp-mpeix ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) GUESS=hppa1.1-hp-osf ;; hp8??:OSF1:*:*) GUESS=hppa1.0-hp-osf ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then GUESS=$UNAME_MACHINE-unknown-osf1mk else GUESS=$UNAME_MACHINE-unknown-osf1 fi ;; parisc*:Lites*:*:*) GUESS=hppa1.1-hp-lites ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) GUESS=c1-convex-bsd ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) GUESS=c34-convex-bsd ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) GUESS=c38-convex-bsd ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) GUESS=c4-convex-bsd ;; CRAY*Y-MP:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=ymp-cray-unicos$CRAY_REL ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=t90-cray-unicos$CRAY_REL ;; CRAY*T3E:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=alphaev5-cray-unicosmk$CRAY_REL ;; CRAY*SV1:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=sv1-cray-unicos$CRAY_REL ;; *:UNICOS/mp:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=craynv-cray-unicosmp$CRAY_REL ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE ;; sparc*:BSD/OS:*:*) GUESS=sparc-unknown-bsdi$UNAME_RELEASE ;; *:BSD/OS:*:*) GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL ;; i*:CYGWIN*:*) GUESS=$UNAME_MACHINE-pc-cygwin ;; *:MINGW64*:*) GUESS=$UNAME_MACHINE-pc-mingw64 ;; *:MINGW*:*) GUESS=$UNAME_MACHINE-pc-mingw32 ;; *:MSYS*:*) GUESS=$UNAME_MACHINE-pc-msys ;; i*:PW*:*) GUESS=$UNAME_MACHINE-pc-pw32 ;; *:SerenityOS:*:*) GUESS=$UNAME_MACHINE-pc-serenity ;; *:Interix*:*) case $UNAME_MACHINE in x86) GUESS=i586-pc-interix$UNAME_RELEASE ;; authenticamd | genuineintel | EM64T) GUESS=x86_64-unknown-interix$UNAME_RELEASE ;; IA64) GUESS=ia64-unknown-interix$UNAME_RELEASE ;; esac ;; i*:UWIN*:*) GUESS=$UNAME_MACHINE-pc-uwin ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) GUESS=x86_64-pc-cygwin ;; prep*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=powerpcle-unknown-solaris2$SUN_REL ;; *:GNU:*:*) # the GNU system GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL ;; *:GNU/*:*:*) # other systems with GNU libc and userland GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; aarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi ;; avr32*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; cris:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; crisv32:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; e2k:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; frv:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; hexagon:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:Linux:*:*) GUESS=$UNAME_MACHINE-pc-linux-$LIBC ;; ia64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m68*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; openrisc*:Linux:*:*) GUESS=or1k-unknown-linux-$LIBC ;; or32:Linux:*:* | or1k*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; padre:Linux:*:*) GUESS=sparc-unknown-linux-$LIBC ;; parisc64:Linux:*:* | hppa64:Linux:*:*) GUESS=hppa64-unknown-linux-$LIBC ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; *) GUESS=hppa-unknown-linux-$LIBC ;; esac ;; ppc64:Linux:*:*) GUESS=powerpc64-unknown-linux-$LIBC ;; ppc:Linux:*:*) GUESS=powerpc-unknown-linux-$LIBC ;; ppc64le:Linux:*:*) GUESS=powerpc64le-unknown-linux-$LIBC ;; ppcle:Linux:*:*) GUESS=powerpcle-unknown-linux-$LIBC ;; riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; s390:Linux:*:* | s390x:Linux:*:*) GUESS=$UNAME_MACHINE-ibm-linux-$LIBC ;; sh64*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sh*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sparc:Linux:*:* | sparc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; tile*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; vax:Linux:*:*) GUESS=$UNAME_MACHINE-dec-linux-$LIBC ;; x86_64:Linux:*:*) set_cc_for_build LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_X32 >/dev/null then LIBCABI=${LIBC}x32 fi fi GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI ;; xtensa*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. GUESS=i386-sequent-sysv4 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. GUESS=$UNAME_MACHINE-pc-os2-emx ;; i*86:XTS-300:*:STOP) GUESS=$UNAME_MACHINE-unknown-stop ;; i*86:atheos:*:*) GUESS=$UNAME_MACHINE-unknown-atheos ;; i*86:syllable:*:*) GUESS=$UNAME_MACHINE-pc-syllable ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) GUESS=i386-unknown-lynxos$UNAME_RELEASE ;; i*86:*DOS:*:*) GUESS=$UNAME_MACHINE-pc-msdosdjgpp ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv32 fi ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. GUESS=i586-pc-msdosdjgpp ;; Intel:Mach:3*:*) GUESS=i386-pc-mach3 ;; paragon:*:*:*) GUESS=i860-intel-osf1 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi ;; mini*:CTIX:SYS*5:*) # "miniframe" GUESS=m68010-convergent-sysv ;; mc68k:UNIX:SYSTEM5:3.51m) GUESS=m68k-convergent-sysv ;; M680?0:D-NIX:5.3:*) GUESS=m68k-diab-dnix ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) GUESS=m68k-unknown-lynxos$UNAME_RELEASE ;; mc68030:UNIX_System_V:4.*:*) GUESS=m68k-atari-sysv4 ;; TSUNAMI:LynxOS:2.*:*) GUESS=sparc-unknown-lynxos$UNAME_RELEASE ;; rs6000:LynxOS:2.*:*) GUESS=rs6000-unknown-lynxos$UNAME_RELEASE ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) GUESS=powerpc-unknown-lynxos$UNAME_RELEASE ;; SM[BE]S:UNIX_SV:*:*) GUESS=mips-dde-sysv$UNAME_RELEASE ;; RM*:ReliantUNIX-*:*:*) GUESS=mips-sni-sysv4 ;; RM*:SINIX-*:*:*) GUESS=mips-sni-sysv4 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` GUESS=$UNAME_MACHINE-sni-sysv4 else GUESS=ns32k-sni-sysv fi ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says GUESS=i586-unisys-sysv4 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm GUESS=hppa1.1-stratus-sysv4 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. GUESS=i860-stratus-sysv4 ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. GUESS=$UNAME_MACHINE-stratus-vos ;; *:VOS:*:*) # From Paul.Green@stratus.com. GUESS=hppa1.1-stratus-vos ;; mc68*:A/UX:*:*) GUESS=m68k-apple-aux$UNAME_RELEASE ;; news*:NEWS-OS:6*:*) GUESS=mips-sony-newsos6 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then GUESS=mips-nec-sysv$UNAME_RELEASE else GUESS=mips-unknown-sysv$UNAME_RELEASE fi ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. GUESS=powerpc-be-beos ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. GUESS=powerpc-apple-beos ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. GUESS=i586-pc-beos ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. GUESS=i586-pc-haiku ;; x86_64:Haiku:*:*) GUESS=x86_64-unknown-haiku ;; SX-4:SUPER-UX:*:*) GUESS=sx4-nec-superux$UNAME_RELEASE ;; SX-5:SUPER-UX:*:*) GUESS=sx5-nec-superux$UNAME_RELEASE ;; SX-6:SUPER-UX:*:*) GUESS=sx6-nec-superux$UNAME_RELEASE ;; SX-7:SUPER-UX:*:*) GUESS=sx7-nec-superux$UNAME_RELEASE ;; SX-8:SUPER-UX:*:*) GUESS=sx8-nec-superux$UNAME_RELEASE ;; SX-8R:SUPER-UX:*:*) GUESS=sx8r-nec-superux$UNAME_RELEASE ;; SX-ACE:SUPER-UX:*:*) GUESS=sxace-nec-superux$UNAME_RELEASE ;; Power*:Rhapsody:*:*) GUESS=powerpc-apple-rhapsody$UNAME_RELEASE ;; *:Rhapsody:*:*) GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE ;; arm64:Darwin:*:*) GUESS=aarch64-apple-darwin$UNAME_RELEASE ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE ;; *:QNX:*:4*) GUESS=i386-pc-qnx ;; NEO-*:NONSTOP_KERNEL:*:*) GUESS=neo-tandem-nsk$UNAME_RELEASE ;; NSE-*:NONSTOP_KERNEL:*:*) GUESS=nse-tandem-nsk$UNAME_RELEASE ;; NSR-*:NONSTOP_KERNEL:*:*) GUESS=nsr-tandem-nsk$UNAME_RELEASE ;; NSV-*:NONSTOP_KERNEL:*:*) GUESS=nsv-tandem-nsk$UNAME_RELEASE ;; NSX-*:NONSTOP_KERNEL:*:*) GUESS=nsx-tandem-nsk$UNAME_RELEASE ;; *:NonStop-UX:*:*) GUESS=mips-compaq-nonstopux ;; BS2000:POSIX*:*:*) GUESS=bs2000-siemens-sysv ;; DS/*:UNIX_System_V:*:*) GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "${cputype-}" = 386; then UNAME_MACHINE=i386 elif test "x${cputype-}" != x; then UNAME_MACHINE=$cputype fi GUESS=$UNAME_MACHINE-unknown-plan9 ;; *:TOPS-10:*:*) GUESS=pdp10-unknown-tops10 ;; *:TENEX:*:*) GUESS=pdp10-unknown-tenex ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) GUESS=pdp10-dec-tops20 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) GUESS=pdp10-xkl-tops20 ;; *:TOPS-20:*:*) GUESS=pdp10-unknown-tops20 ;; *:ITS:*:*) GUESS=pdp10-unknown-its ;; SEI:*:*:SEIUX) GUESS=mips-sei-seiux$UNAME_RELEASE ;; *:DragonFly:*:*) DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case $UNAME_MACHINE in A*) GUESS=alpha-dec-vms ;; I*) GUESS=ia64-dec-vms ;; V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) GUESS=i386-pc-xenix ;; i*86:skyos:*:*) SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL ;; i*86:rdos:*:*) GUESS=$UNAME_MACHINE-pc-rdos ;; i*86:Fiwix:*:*) GUESS=$UNAME_MACHINE-pc-fiwix ;; *:AROS:*:*) GUESS=$UNAME_MACHINE-unknown-aros ;; x86_64:VMkernel:*:*) GUESS=$UNAME_MACHINE-unknown-esx ;; amd64:Isilon\ OneFS:*:*) GUESS=x86_64-unknown-onefs ;; *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; esac # Do we have a guess based on uname results? if test "x$GUESS" != x; then echo "$GUESS" exit fi # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" < #include #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include #if defined(_SIZE_T_) || defined(SIGLOST) #include #endif #endif #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) #include #if defined (BSD) #if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); #else #if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); #else printf ("vax-dec-bsd\n"); exit (0); #endif #endif #else printf ("vax-dec-bsd\n"); exit (0); #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF fi exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: poedit-3.6.3/admin/ax_boost_base.m40000644000175100001660000003262415011674230012641 # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_boost_base.html # =========================================================================== # # SYNOPSIS # # AX_BOOST_BASE([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # DESCRIPTION # # Test for the Boost C++ libraries of a particular version (or newer) # # If no path to the installed boost library is given the macro searchs # under /usr, /usr/local, /opt and /opt/local and evaluates the # $BOOST_ROOT environment variable. Further documentation is available at # . # # This macro calls: # # AC_SUBST(BOOST_CPPFLAGS) / AC_SUBST(BOOST_LDFLAGS) # # And sets: # # HAVE_BOOST # # LICENSE # # Copyright (c) 2008 Thomas Porschberg # Copyright (c) 2009 Peter Adolphs # # 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 45 # example boost program (need to pass version) m4_define([_AX_BOOST_BASE_PROGRAM], [AC_LANG_PROGRAM([[ #include ]],[[ (void) ((void)sizeof(char[1 - 2*!!((BOOST_VERSION) < ($1))])); ]])]) AC_DEFUN([AX_BOOST_BASE], [ AC_ARG_WITH([boost], [AS_HELP_STRING([--with-boost@<:@=ARG@:>@], [use Boost library from a standard location (ARG=yes), from the specified location (ARG=), or disable it (ARG=no) @<:@ARG=yes@:>@ ])], [ AS_CASE([$withval], [no],[want_boost="no";_AX_BOOST_BASE_boost_path=""], [yes],[want_boost="yes";_AX_BOOST_BASE_boost_path=""], [want_boost="yes";_AX_BOOST_BASE_boost_path="$withval"]) ], [want_boost="yes"]) AC_ARG_WITH([boost-libdir], [AS_HELP_STRING([--with-boost-libdir=LIB_DIR], [Force given directory for boost libraries. Note that this will override library path detection, so use this parameter only if default library detection fails and you know exactly where your boost libraries are located.])], [ AS_IF([test -d "$withval"], [_AX_BOOST_BASE_boost_lib_path="$withval"], [AC_MSG_ERROR([--with-boost-libdir expected directory name])]) ], [_AX_BOOST_BASE_boost_lib_path=""]) BOOST_LDFLAGS="" BOOST_CPPFLAGS="" AS_IF([test "x$want_boost" = "xyes"], [_AX_BOOST_BASE_RUNDETECT([$1],[$2],[$3])]) AC_SUBST(BOOST_CPPFLAGS) AC_SUBST(BOOST_LDFLAGS) ]) # convert a version string in $2 to numeric and affect to polymorphic var $1 AC_DEFUN([_AX_BOOST_BASE_TONUMERICVERSION],[ AS_IF([test "x$2" = "x"],[_AX_BOOST_BASE_TONUMERICVERSION_req="1.20.0"],[_AX_BOOST_BASE_TONUMERICVERSION_req="$2"]) _AX_BOOST_BASE_TONUMERICVERSION_req_shorten=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([[0-9]]*\.[[0-9]]*\)'` _AX_BOOST_BASE_TONUMERICVERSION_req_major=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([[0-9]]*\)'` AS_IF([test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_major" = "x"], [AC_MSG_ERROR([You should at least specify libboost major version])]) _AX_BOOST_BASE_TONUMERICVERSION_req_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[[0-9]]*\.\([[0-9]]*\)'` AS_IF([test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_minor" = "x"], [_AX_BOOST_BASE_TONUMERICVERSION_req_minor="0"]) _AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` AS_IF([test "X$_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor" = "X"], [_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor="0"]) _AX_BOOST_BASE_TONUMERICVERSION_RET=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req_major \* 100000 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_minor \* 100 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor` AS_VAR_SET($1,$_AX_BOOST_BASE_TONUMERICVERSION_RET) ]) dnl Run the detection of boost should be run only if $want_boost AC_DEFUN([_AX_BOOST_BASE_RUNDETECT],[ _AX_BOOST_BASE_TONUMERICVERSION(WANT_BOOST_VERSION,[$1]) succeeded=no AC_REQUIRE([AC_CANONICAL_HOST]) dnl On 64-bit systems check for system libraries in both lib64 and lib. dnl The former is specified by FHS, but e.g. Debian does not adhere to dnl this (as it rises problems for generic multi-arch support). dnl The last entry in the list is chosen by default when no libraries dnl are found, e.g. when only header-only libraries are installed! AS_CASE([${host_cpu}], [x86_64],[libsubdirs="lib64 libx32 lib lib64"], [ppc64|powerpc64|s390x|sparc64|aarch64|ppc64le|powerpc64le|riscv64],[libsubdirs="lib64 lib lib64"], [libsubdirs="lib"] ) dnl allow for real multi-arch paths e.g. /usr/lib/x86_64-linux-gnu. Give dnl them priority over the other paths since, if libs are found there, they dnl are almost assuredly the ones desired. AS_CASE([${host_cpu}], [i?86],[multiarch_libsubdir="lib/i386-${host_os}"], [multiarch_libsubdir="lib/${host_cpu}-${host_os}"] ) dnl first we check the system location for boost libraries dnl this location ist chosen if boost libraries are installed with the --layout=system option dnl or if you install boost with RPM AS_IF([test "x$_AX_BOOST_BASE_boost_path" != "x"],[ AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION) includes in "$_AX_BOOST_BASE_boost_path/include"]) AS_IF([test -d "$_AX_BOOST_BASE_boost_path/include" && test -r "$_AX_BOOST_BASE_boost_path/include"],[ AC_MSG_RESULT([yes]) BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include" for _AX_BOOST_BASE_boost_path_tmp in $multiarch_libsubdir $libsubdirs; do AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION) lib path in "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp"]) AS_IF([test -d "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" && test -r "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" ],[ AC_MSG_RESULT([yes]) BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp"; break; ], [AC_MSG_RESULT([no])]) done],[ AC_MSG_RESULT([no])]) ],[ if test X"$cross_compiling" = Xyes; then search_libsubdirs=$multiarch_libsubdir else search_libsubdirs="$multiarch_libsubdir $libsubdirs" fi for _AX_BOOST_BASE_boost_path_tmp in /usr /usr/local /opt /opt/local ; do if test -d "$_AX_BOOST_BASE_boost_path_tmp/include/boost" && test -r "$_AX_BOOST_BASE_boost_path_tmp/include/boost" ; then for libsubdir in $search_libsubdirs ; do if ls "$_AX_BOOST_BASE_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi done BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path_tmp/$libsubdir" BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path_tmp/include" break; fi done ]) dnl overwrite ld flags if we have required special directory with dnl --with-boost-libdir parameter AS_IF([test "x$_AX_BOOST_BASE_boost_lib_path" != "x"], [BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_lib_path"]) AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION)]) CPPFLAGS_SAVED="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS_SAVED="$LDFLAGS" LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS AC_REQUIRE([AC_PROG_CXX]) AC_LANG_PUSH(C++) AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[ AC_MSG_RESULT(yes) succeeded=yes found_system=yes ],[ ]) AC_LANG_POP([C++]) dnl if we found no boost with system layout we search for boost libraries dnl built and installed without the --layout=system option or for a staged(not installed) version if test "x$succeeded" != "xyes" ; then CPPFLAGS="$CPPFLAGS_SAVED" LDFLAGS="$LDFLAGS_SAVED" BOOST_CPPFLAGS= if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then BOOST_LDFLAGS= fi _version=0 if test -n "$_AX_BOOST_BASE_boost_path" ; then if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path"; then for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do _version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'` V_CHECK=`expr $_version_tmp \> $_version` if test "x$V_CHECK" = "x1" ; then _version=$_version_tmp fi VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'` BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include/boost-$VERSION_UNDERSCORE" done dnl if nothing found search for layout used in Windows distributions if test -z "$BOOST_CPPFLAGS"; then if test -d "$_AX_BOOST_BASE_boost_path/boost" && test -r "$_AX_BOOST_BASE_boost_path/boost"; then BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path" fi fi dnl if we found something and BOOST_LDFLAGS was unset before dnl (because "$_AX_BOOST_BASE_boost_lib_path" = ""), set it here. if test -n "$BOOST_CPPFLAGS" && test -z "$BOOST_LDFLAGS"; then for libsubdir in $libsubdirs ; do if ls "$_AX_BOOST_BASE_boost_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi done BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$libsubdir" fi fi else if test "x$cross_compiling" != "xyes" ; then for _AX_BOOST_BASE_boost_path in /usr /usr/local /opt /opt/local ; do if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path" ; then for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do _version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'` V_CHECK=`expr $_version_tmp \> $_version` if test "x$V_CHECK" = "x1" ; then _version=$_version_tmp best_path=$_AX_BOOST_BASE_boost_path fi done fi done VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'` BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE" if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then for libsubdir in $libsubdirs ; do if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi done BOOST_LDFLAGS="-L$best_path/$libsubdir" fi fi if test -n "$BOOST_ROOT" ; then for libsubdir in $libsubdirs ; do if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi done if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'` stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'` stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'` V_CHECK=`expr $stage_version_shorten \>\= $_version` if test "x$V_CHECK" = "x1" && test -z "$_AX_BOOST_BASE_boost_lib_path" ; then AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT) BOOST_CPPFLAGS="-I$BOOST_ROOT" BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir" fi fi fi fi CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS AC_LANG_PUSH(C++) AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[ AC_MSG_RESULT(yes) succeeded=yes found_system=yes ],[ ]) AC_LANG_POP([C++]) fi if test "x$succeeded" != "xyes" ; then if test "x$_version" = "x0" ; then AC_MSG_NOTICE([[We could not detect the boost libraries (version $1 or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in . See http://randspringer.de/boost for more documentation.]]) else AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).]) fi # execute ACTION-IF-NOT-FOUND (if present): ifelse([$3], , :, [$3]) else AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available]) # execute ACTION-IF-FOUND (if present): ifelse([$2], , :, [$2]) fi CPPFLAGS="$CPPFLAGS_SAVED" LDFLAGS="$LDFLAGS_SAVED" ]) poedit-3.6.3/admin/wxwin.m40000644000175100001660000011757015011674230011211 dnl --------------------------------------------------------------------------- dnl Author: wxWidgets development team, dnl Francesco Montorsi, dnl Bob McCown (Mac-testing) dnl Creation date: 24/11/2001 dnl --------------------------------------------------------------------------- dnl Increment this when changing this file. # serial 42 dnl =========================================================================== dnl Table of Contents of this macro file: dnl ------------------------------------- dnl dnl SECTION A: wxWidgets main macros dnl - WX_CONFIG_OPTIONS dnl - WX_CONFIG_CHECK dnl - WXRC_CHECK dnl - WX_STANDARD_OPTIONS dnl - WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS dnl - WX_DETECT_STANDARD_OPTION_VALUES dnl dnl SECTION B: wxWidgets-related utilities dnl - WX_LIKE_LIBNAME dnl - WX_ARG_ENABLE_YESNOAUTO dnl - WX_ARG_WITH_YESNOAUTO dnl dnl SECTION C: messages to the user dnl - WX_STANDARD_OPTIONS_SUMMARY_MSG dnl - WX_STANDARD_OPTIONS_SUMMARY_MSG_BEGIN dnl - WX_STANDARD_OPTIONS_SUMMARY_MSG_END dnl - WX_BOOLOPT_SUMMARY dnl dnl The special "WX_DEBUG_CONFIGURE" variable can be set to 1 to enable extra dnl debug output on stdout from these macros. dnl =========================================================================== dnl --------------------------------------------------------------------------- dnl Macros for wxWidgets detection. Typically used in configure.in as: dnl dnl AC_ARG_ENABLE(...) dnl AC_ARG_WITH(...) dnl ... dnl WX_CONFIG_OPTIONS dnl ... dnl ... dnl WX_CONFIG_CHECK([2.6.0], [wxWin=1]) dnl if test "$wxWin" != 1; then dnl AC_MSG_ERROR([ dnl wxWidgets must be installed on your system dnl but wx-config script couldn't be found. dnl dnl Please check that wx-config is in path, the directory dnl where wxWidgets libraries are installed (returned by dnl 'wx-config --libs' command) is in LD_LIBRARY_PATH or dnl equivalent variable and wxWidgets version is 2.3.4 or above. dnl ]) dnl fi dnl CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS" dnl CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY" dnl CFLAGS="$CFLAGS $WX_CFLAGS_ONLY" dnl dnl LIBS="$LIBS $WX_LIBS" dnl dnl If you want to support standard --enable-debug/unicode/shared options, you dnl may do the following: dnl dnl ... dnl AC_CANONICAL_TARGET dnl dnl # define configure options dnl WX_CONFIG_OPTIONS dnl WX_STANDARD_OPTIONS([debug,unicode,shared,toolkit,wxshared]) dnl dnl # basic configure checks dnl ... dnl dnl # we want to always have DEBUG==WX_DEBUG and UNICODE==WX_UNICODE dnl WX_DEBUG=$DEBUG dnl WX_UNICODE=$UNICODE dnl dnl WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS dnl WX_CONFIG_CHECK([2.8.0], [wxWin=1],,[html,core,net,base],[$WXCONFIG_FLAGS]) dnl WX_DETECT_STANDARD_OPTION_VALUES dnl dnl # write the output files dnl AC_CONFIG_FILES([Makefile ...]) dnl AC_OUTPUT dnl dnl # optional: just to show a message to the user dnl WX_STANDARD_OPTIONS_SUMMARY_MSG dnl dnl --------------------------------------------------------------------------- dnl --------------------------------------------------------------------------- dnl WX_CONFIG_OPTIONS dnl dnl adds support for --wx-prefix, --wx-exec-prefix, --with-wxdir and dnl --wx-config command line options dnl --------------------------------------------------------------------------- AC_DEFUN([WX_CONFIG_OPTIONS], [ AC_ARG_WITH(wxdir, [ --with-wxdir=PATH Use uninstalled version of wxWidgets in PATH], [ wx_config_name="$withval/wx-config" wx_config_args="--inplace"]) AC_ARG_WITH(wx-config, [ --with-wx-config=CONFIG wx-config script to use (optional)], wx_config_name="$withval" ) AC_ARG_WITH(wx-prefix, [ --with-wx-prefix=PREFIX Prefix where wxWidgets is installed (optional)], wx_config_prefix="$withval", wx_config_prefix="") AC_ARG_WITH(wx-exec-prefix, [ --with-wx-exec-prefix=PREFIX Exec prefix where wxWidgets is installed (optional)], wx_config_exec_prefix="$withval", wx_config_exec_prefix="") ]) dnl Helper macro for checking if wx version is at least $1.$2.$3, set's dnl wx_ver_ok=yes if it is: AC_DEFUN([_WX_PRIVATE_CHECK_VERSION], [ wx_ver_ok="" if test "x$WX_VERSION" != x ; then if test $wx_config_major_version -gt $1; then wx_ver_ok=yes else if test $wx_config_major_version -eq $1; then if test $wx_config_minor_version -gt $2; then wx_ver_ok=yes else if test $wx_config_minor_version -eq $2; then if test $wx_config_micro_version -ge $3; then wx_ver_ok=yes fi fi fi fi fi fi ]) dnl --------------------------------------------------------------------------- dnl WX_CONFIG_CHECK(VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND dnl [, WX-LIBS [, ADDITIONAL-WX-CONFIG-FLAGS dnl [, WX-OPTIONAL-LIBS]]]]]) dnl dnl Test for wxWidgets, and define WX_C*FLAGS, WX_LIBS and WX_LIBS_STATIC dnl (the latter is for static linking against wxWidgets). Set WX_CONFIG_NAME dnl environment variable to override the default name of the wx-config script dnl to use. Set WX_CONFIG_PATH to specify the full path to wx-config - in this dnl case the macro won't even waste time on tests for its existence. dnl dnl Optional WX-LIBS argument contains comma- or space-separated list of dnl wxWidgets libraries to link against. If it is not specified then WX_LIBS dnl and WX_LIBS_STATIC will contain flags to link with all of the core dnl wxWidgets libraries. dnl dnl Optional ADDITIONAL-WX-CONFIG-FLAGS argument is appended to wx-config dnl invocation command in present. It can be used to fine-tune lookup of dnl best wxWidgets build available. dnl dnl Optional WX-OPTIONAL-LIBS argument contains comma- or space-separated list dnl of wxWidgets libraries to link against if they are available. dnl WX-OPTIONAL-LIBS is supported on version 2.9.0 and later. dnl dnl Example use: dnl WX_CONFIG_CHECK([2.6.0], [wxWin=1], [wxWin=0], [html,core,net] dnl [--unicode --debug]) dnl --------------------------------------------------------------------------- dnl dnl Get the cflags and libraries from the wx-config script dnl AC_DEFUN([WX_CONFIG_CHECK], [ dnl do we have wx-config name: it can be wx-config or wxd-config or ... 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 dnl deal with optional prefixes 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 dnl don't search the PATH if WX_CONFIG_NAME is absolute filename if test -x "$WX_CONFIG_NAME" ; then AC_MSG_CHECKING(for wx-config) WX_CONFIG_PATH="$WX_CONFIG_NAME" AC_MSG_RESULT($WX_CONFIG_PATH) else AC_PATH_PROG(WX_CONFIG_PATH, $WX_CONFIG_NAME, no, "$WX_LOOKUP_PATH:$PATH") fi if test "$WX_CONFIG_PATH" != "no" ; then WX_VERSION="" min_wx_version=ifelse([$1], ,2.2.1,$1) if test -z "$5" ; then AC_MSG_CHECKING([for wxWidgets version >= $min_wx_version]) else AC_MSG_CHECKING([for wxWidgets version >= $min_wx_version ($5)]) fi dnl don't add the libraries (4th argument) to this variable as this would dnl result in an error when it's used with --version below WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args $5" 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/'` wx_config_micro_version=`echo $WX_VERSION | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` wx_requested_major_version=`echo $min_wx_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` wx_requested_minor_version=`echo $min_wx_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` wx_requested_micro_version=`echo $min_wx_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` _WX_PRIVATE_CHECK_VERSION([$wx_requested_major_version], [$wx_requested_minor_version], [$wx_requested_micro_version]) if test -n "$wx_ver_ok"; then AC_MSG_RESULT(yes (version $WX_VERSION)) wx_optional_libs="" _WX_PRIVATE_CHECK_VERSION(2,9,0) if test -n "$wx_ver_ok" -a -n "$6"; then wx_optional_libs="--optional-libs $6" fi WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs $4 $wx_optional_libs` dnl is this even still appropriate? --static is a real option now dnl and WX_CONFIG_WITH_ARGS is likely to contain it if that is dnl what the user actually wants, making this redundant at best. dnl For now keep it in case anyone actually used it in the past. AC_MSG_CHECKING([for wxWidgets static library]) WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs $4 $wx_optional_libs 2>/dev/null` if test "x$WX_LIBS_STATIC" = "x"; then AC_MSG_RESULT(no) else AC_MSG_RESULT(yes) fi dnl starting with version 2.2.6 wx-config has --cppflags argument wx_has_cppflags="" if test $wx_config_major_version -gt 2; then wx_has_cppflags=yes else if test $wx_config_major_version -eq 2; then if test $wx_config_minor_version -gt 2; then wx_has_cppflags=yes else if test $wx_config_minor_version -eq 2; then if test $wx_config_micro_version -ge 6; then wx_has_cppflags=yes fi fi fi fi fi dnl starting with version 2.7.0 wx-config has --rescomp option wx_has_rescomp="" if test $wx_config_major_version -gt 2; then wx_has_rescomp=yes else if test $wx_config_major_version -eq 2; then if test $wx_config_minor_version -ge 7; then wx_has_rescomp=yes fi fi fi if test "x$wx_has_rescomp" = x ; then dnl cannot give any useful info for resource compiler WX_RESCOMP= else WX_RESCOMP=`$WX_CONFIG_WITH_ARGS --rescomp` fi if test "x$wx_has_cppflags" = x ; then dnl no choice but to define all flags like CFLAGS WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags $4` WX_CPPFLAGS=$WX_CFLAGS WX_CXXFLAGS=$WX_CFLAGS WX_CFLAGS_ONLY=$WX_CFLAGS WX_CXXFLAGS_ONLY=$WX_CFLAGS else dnl we have CPPFLAGS included in CFLAGS included in CXXFLAGS WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags $4` WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags $4` WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags $4` WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"` WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"` fi ifelse([$2], , :, [$2]) else if test "x$WX_VERSION" = x; then dnl no wx-config at all AC_MSG_RESULT(no) else AC_MSG_RESULT(no (version $WX_VERSION is not new enough)) fi WX_CFLAGS="" WX_CPPFLAGS="" WX_CXXFLAGS="" WX_LIBS="" WX_LIBS_STATIC="" WX_RESCOMP="" if test ! -z "$5"; then wx_error_message=" The configuration you asked for $PACKAGE_NAME requires a wxWidgets build with the following settings: $5 but such build is not available. To see the wxWidgets builds available on this system, please use 'wx-config --list' command. To use the default build, returned by 'wx-config --selected-config', use the options with their 'auto' default values." fi wx_error_message=" The requested wxWidgets build couldn't be found. $wx_error_message If you still get this error, then check that 'wx-config' is in path, the directory where wxWidgets libraries are installed (returned by 'wx-config --libs' command) is in LD_LIBRARY_PATH or equivalent variable and wxWidgets version is $1 or above." ifelse([$3], , AC_MSG_ERROR([$wx_error_message]), [$3]) fi else WX_CFLAGS="" WX_CPPFLAGS="" WX_CXXFLAGS="" WX_LIBS="" WX_LIBS_STATIC="" WX_RESCOMP="" ifelse([$3], , :, [$3]) fi AC_SUBST(WX_CPPFLAGS) AC_SUBST(WX_CFLAGS) AC_SUBST(WX_CXXFLAGS) AC_SUBST(WX_CFLAGS_ONLY) AC_SUBST(WX_CXXFLAGS_ONLY) AC_SUBST(WX_LIBS) AC_SUBST(WX_LIBS_STATIC) AC_SUBST(WX_VERSION) AC_SUBST(WX_RESCOMP) dnl need to export also WX_VERSION_MINOR and WX_VERSION_MAJOR symbols dnl to support wxpresets bakefiles (we export also WX_VERSION_MICRO for completeness): WX_VERSION_MAJOR="$wx_config_major_version" WX_VERSION_MINOR="$wx_config_minor_version" WX_VERSION_MICRO="$wx_config_micro_version" AC_SUBST(WX_VERSION_MAJOR) AC_SUBST(WX_VERSION_MINOR) AC_SUBST(WX_VERSION_MICRO) ]) dnl --------------------------------------------------------------------------- dnl Get information on the wxrc program for making C++, Python and xrs dnl resource files. dnl dnl AC_ARG_ENABLE(...) dnl AC_ARG_WITH(...) dnl ... dnl WX_CONFIG_OPTIONS dnl ... dnl WX_CONFIG_CHECK(2.6.0, wxWin=1) dnl if test "$wxWin" != 1; then dnl AC_MSG_ERROR([ dnl wxWidgets must be installed on your system dnl but wx-config script couldn't be found. dnl dnl Please check that wx-config is in path, the directory dnl where wxWidgets libraries are installed (returned by dnl 'wx-config --libs' command) is in LD_LIBRARY_PATH or dnl equivalent variable and wxWidgets version is 2.6.0 or above. dnl ]) dnl fi dnl dnl WXRC_CHECK([HAVE_WXRC=1], [HAVE_WXRC=0]) dnl if test "x$HAVE_WXRC" != x1; then dnl AC_MSG_ERROR([ dnl The wxrc program was not installed or not found. dnl dnl Please check the wxWidgets installation. dnl ]) dnl fi dnl dnl CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS" dnl CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY" dnl CFLAGS="$CFLAGS $WX_CFLAGS_ONLY" dnl dnl LDFLAGS="$LDFLAGS $WX_LIBS" dnl --------------------------------------------------------------------------- dnl --------------------------------------------------------------------------- dnl WXRC_CHECK([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) dnl dnl Test for wxWidgets' wxrc program for creating either C++, Python or XRS dnl resources. The variable WXRC will be set and substituted in the configure dnl script and Makefiles. dnl dnl Example use: dnl WXRC_CHECK([wxrc=1], [wxrc=0]) dnl --------------------------------------------------------------------------- dnl dnl wxrc program from the wx-config script dnl AC_DEFUN([WXRC_CHECK], [ AC_ARG_VAR([WXRC], [Path to wxWidget's wxrc resource compiler]) if test "x$WX_CONFIG_NAME" = x; then AC_MSG_ERROR([The wxrc tests must run after wxWidgets test.]) else AC_MSG_CHECKING([for wxrc]) if test "x$WXRC" = x ; then dnl wx-config --utility is a new addition to wxWidgets: _WX_PRIVATE_CHECK_VERSION(2,5,3) if test -n "$wx_ver_ok"; then WXRC=`$WX_CONFIG_WITH_ARGS --utility=wxrc` fi fi if test "x$WXRC" = x ; then AC_MSG_RESULT([not found]) ifelse([$2], , :, [$2]) else AC_MSG_RESULT([$WXRC]) ifelse([$1], , :, [$1]) fi AC_SUBST(WXRC) fi ]) dnl --------------------------------------------------------------------------- dnl WX_LIKE_LIBNAME([output-var] [prefix], [name]) dnl dnl Sets the "output-var" variable to the name of a library named with same dnl wxWidgets rule. dnl E.g. for output-var=='lib', name=='test', prefix='mine', sets dnl the $lib variable to: dnl 'mine_gtk2ud_test-2.8' dnl if WX_PORT=gtk2, WX_UNICODE=1, WX_DEBUG=1 and WX_RELEASE=28 dnl --------------------------------------------------------------------------- AC_DEFUN([WX_LIKE_LIBNAME], [ wx_temp="$2""_""$WX_PORT" dnl add the [u][d] string if test "$WX_UNICODE" = "1"; then wx_temp="$wx_temp""u" fi if test "$WX_DEBUG" = "1"; then wx_temp="$wx_temp""d" fi dnl complete the name of the lib wx_temp="$wx_temp""_""$3""-$WX_VERSION_MAJOR.$WX_VERSION_MINOR" dnl save it in the user's variable $1=$wx_temp ]) dnl --------------------------------------------------------------------------- dnl WX_ARG_ENABLE_YESNOAUTO/WX_ARG_WITH_YESNOAUTO dnl dnl Two little custom macros which define the ENABLE/WITH configure arguments. dnl Macro arguments: dnl $1 = the name of the --enable / --with feature dnl $2 = the name of the variable associated dnl $3 = the description of that feature dnl $4 = the default value for that feature dnl $5 = additional action to do in case option is given with "yes" value dnl --------------------------------------------------------------------------- AC_DEFUN([WX_ARG_ENABLE_YESNOAUTO], [AC_ARG_ENABLE($1, AS_HELP_STRING([--enable-$1],[$3 (default is $4)]), [], [enableval="$4"]) dnl Show a message to the user about this option AC_MSG_CHECKING([for the --enable-$1 option]) if test "$enableval" = "yes" ; then AC_MSG_RESULT([yes]) $2=1 $5 elif test "$enableval" = "no" ; then AC_MSG_RESULT([no]) $2=0 elif test "$enableval" = "auto" ; then AC_MSG_RESULT([will be automatically detected]) $2="" else AC_MSG_ERROR([ Unrecognized option value (allowed values: yes, no, auto) ]) fi ]) AC_DEFUN([WX_ARG_WITH_YESNOAUTO], [AC_ARG_WITH($1, AS_HELP_STRING([--with-$1],[$3 (default is $4)]), [], [withval="$4"]) dnl Show a message to the user about this option AC_MSG_CHECKING([for the --with-$1 option]) if test "$withval" = "yes" ; then AC_MSG_RESULT([yes]) $2=1 $5 dnl NB: by default we don't allow --with-$1=no option dnl since it does not make much sense ! elif test "$6" = "1" -a "$withval" = "no" ; then AC_MSG_RESULT([no]) $2=0 elif test "$withval" = "auto" ; then AC_MSG_RESULT([will be automatically detected]) $2="" else AC_MSG_ERROR([ Unrecognized option value (allowed values: yes, auto) ]) fi ]) dnl --------------------------------------------------------------------------- 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|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. dnl dnl Note that e.g. UNICODE != WX_UNICODE; the first is the value of the dnl --enable-unicode option (in boolean format) while the second indicates dnl if wxWidgets was built in Unicode mode (and still is in boolean format). dnl --------------------------------------------------------------------------- AC_DEFUN([WX_STANDARD_OPTIONS], [ dnl the following lines will expand to WX_ARG_ENABLE_YESNOAUTO calls if and only if dnl the $1 argument contains respectively the debug,unicode or shared options. dnl be careful here not to set debug flag if only "wxdebug" was specified ifelse(regexp([$1], [\bdebug]), [-1],, [WX_ARG_ENABLE_YESNOAUTO([debug], [DEBUG], [Build in debug mode], [auto])]) ifelse(index([$1], [unicode]), [-1],, [WX_ARG_ENABLE_YESNOAUTO([unicode], [UNICODE], [Build in Unicode mode], [auto])]) ifelse(regexp([$1], [\bshared]), [-1],, [WX_ARG_ENABLE_YESNOAUTO([shared], [SHARED], [Build as shared library], [auto])]) dnl WX_ARG_WITH_YESNOAUTO cannot be used for --with-toolkit since it's an option dnl which must be able to accept the auto|gtk1|gtk2|msw|... values ifelse(index([$1], [toolkit]), [-1],, [ AC_ARG_WITH([toolkit], AS_HELP_STRING([--with-toolkit],[Build against a specific wxWidgets toolkit (default is auto)]), [], [withval="auto"]) dnl Show a message to the user about this option AC_MSG_CHECKING([for the --with-toolkit option]) if test "$withval" = "auto" ; then AC_MSG_RESULT([will be automatically detected]) TOOLKIT="" else TOOLKIT="$withval" dnl PORT must be one of the allowed values if test "$TOOLKIT" != "gtk1" -a "$TOOLKIT" != "gtk2" -a "$TOOLKIT" != "gtk3" -a \ "$TOOLKIT" != "msw" -a "$TOOLKIT" != "motif" -a \ "$TOOLKIT" != "osx_carbon" -a "$TOOLKIT" != "osx_cocoa" -a \ "$TOOLKIT" != "dfb" -a "$TOOLKIT" != "x11" -a "$TOOLKIT" != "base"; then AC_MSG_ERROR([ Unrecognized option value (allowed values: auto, gtk1, gtk2, gtk3, msw, motif, osx_carbon, osx_cocoa, dfb, x11, base) ]) fi AC_MSG_RESULT([$TOOLKIT]) fi ]) dnl ****** IMPORTANT ******* dnl Unlike for the UNICODE setting, you can build your program in dnl shared mode against a static build of wxWidgets. Thus we have the dnl following option which allows these mixtures. E.g. dnl dnl ./configure --disable-shared --with-wxshared dnl dnl will build your library in static mode against the first available dnl shared build of wxWidgets. dnl dnl Note that's not possible to do the viceversa: dnl dnl ./configure --enable-shared --without-wxshared dnl dnl Doing so you would try to build your library in shared mode against a static dnl build of wxWidgets. This is not possible (you would mix PIC and non PIC code) ! dnl A check for this combination of options is in WX_DETECT_STANDARD_OPTION_VALUES dnl (where we know what 'auto' should be expanded to). dnl dnl If you try to build something in ANSI mode against a UNICODE build dnl of wxWidgets or in RELEASE mode against a DEBUG build of wxWidgets, dnl then at best you'll get ton of linking errors ! dnl ************************ ifelse(index([$1], [wxshared]), [-1],, [ WX_ARG_WITH_YESNOAUTO( [wxshared], [WX_SHARED], [Force building against a shared build of wxWidgets, even if --disable-shared is given], [auto], [], [1]) ]) dnl Just like for SHARED and WX_SHARED it may happen that some adventurous dnl peoples will want to mix a wxWidgets release build with a debug build of dnl his app/lib. So, we have both DEBUG and WX_DEBUG variables. ifelse(index([$1], [wxdebug]), [-1],, [ WX_ARG_WITH_YESNOAUTO( [wxdebug], [WX_DEBUG], [Force building against a debug build of wxWidgets, even if --disable-debug is given], [auto], [], [1]) ]) dnl WX_ARG_WITH_YESNOAUTO cannot be used for --with-wxversion since it's an option dnl which accepts the "auto|2.6|2.7|2.8|2.9|3.0" etc etc values ifelse(index([$1], [wxversion]), [-1],, [ AC_ARG_WITH([wxversion], AS_HELP_STRING([--with-wxversion],[Build against a specific version of wxWidgets (default is auto)]), [], [withval="auto"]) dnl Show a message to the user about this option AC_MSG_CHECKING([for the --with-wxversion option]) if test "$withval" = "auto" ; then AC_MSG_RESULT([will be automatically detected]) WX_RELEASE="" else wx_requested_major_version=`echo $withval | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).*/\1/'` wx_requested_minor_version=`echo $withval | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).*/\2/'` dnl both vars above must be exactly 1 digit if test "${#wx_requested_major_version}" != "1" -o \ "${#wx_requested_minor_version}" != "1" ; then AC_MSG_ERROR([ Unrecognized option value (allowed values: auto, 2.6, 2.7, 2.8, 2.9, 3.0) ]) fi WX_RELEASE="$wx_requested_major_version"".""$wx_requested_minor_version" AC_MSG_RESULT([$WX_RELEASE]) fi ]) if test "$WX_DEBUG_CONFIGURE" = "1"; then echo "[[dbg]] DEBUG: $DEBUG, WX_DEBUG: $WX_DEBUG" echo "[[dbg]] UNICODE: $UNICODE, WX_UNICODE: $WX_UNICODE" echo "[[dbg]] SHARED: $SHARED, WX_SHARED: $WX_SHARED" echo "[[dbg]] TOOLKIT: $TOOLKIT, WX_TOOLKIT: $WX_TOOLKIT" echo "[[dbg]] VERSION: $VERSION, WX_RELEASE: $WX_RELEASE" fi ]) dnl --------------------------------------------------------------------------- dnl WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS dnl dnl Sets the WXCONFIG_FLAGS string using the SHARED,DEBUG,UNICODE variable values dnl which were specified. dnl Thus this macro needs to be called only once all options have been set. dnl --------------------------------------------------------------------------- AC_DEFUN([WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS], [ if test "$WX_SHARED" = "1" ; then WXCONFIG_FLAGS="--static=no " elif test "$WX_SHARED" = "0" ; then WXCONFIG_FLAGS="--static=yes " fi if test "$WX_DEBUG" = "1" ; then WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--debug=yes " elif test "$WX_DEBUG" = "0" ; then WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--debug=no " fi dnl The user should have set WX_UNICODE=UNICODE if test "$WX_UNICODE" = "1" ; then WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--unicode=yes " elif test "$WX_UNICODE" = "0" ; then WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--unicode=no " fi if test -n "$TOOLKIT" ; then WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--toolkit=$TOOLKIT " fi if test -n "$WX_RELEASE" ; then WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--version=$WX_RELEASE " fi dnl strip out the last space of the string WXCONFIG_FLAGS=${WXCONFIG_FLAGS% } if test "$WX_DEBUG_CONFIGURE" = "1"; then echo "[[dbg]] WXCONFIG_FLAGS: $WXCONFIG_FLAGS" fi ]) dnl --------------------------------------------------------------------------- dnl _WX_SELECTEDCONFIG_CHECKFOR([RESULTVAR], [STRING], [MSG]) dnl dnl Sets WX_$RESULTVAR to the value of $RESULTVAR if it's defined. Otherwise, dnl auto-detect the value by checking for the presence of STRING in dnl $WX_SELECTEDCONFIG (which is supposed to be set by caller) and set dnl WX_$RESULTVAR to either 0 or 1, also outputting "yes" or "no" after MSG. dnl --------------------------------------------------------------------------- AC_DEFUN([_WX_SELECTEDCONFIG_CHECKFOR], [ if test -z "$$1" ; then dnl The user does not have particular preferences for this option; dnl so we will detect the wxWidgets relative build setting and use it AC_MSG_CHECKING([$3]) dnl set WX_$1 variable to 1 if the $WX_SELECTEDCONFIG contains the $2 dnl string or to 0 otherwise. dnl NOTE: 'expr match STRING REGEXP' cannot be used since on Mac it dnl doesn't work; we use 'expr STRING : REGEXP' instead WX_$1=$(expr "$WX_SELECTEDCONFIG" : ".*$2.*") if test "$WX_$1" != "0"; then WX_$1=1 AC_MSG_RESULT([yes]) else WX_$1=0 AC_MSG_RESULT([no]) fi else dnl Use the setting given by the user WX_$1=$$1 fi ]) dnl --------------------------------------------------------------------------- dnl WX_DETECT_STANDARD_OPTION_VALUES dnl dnl Detects the values of the following variables: dnl 1) WX_RELEASE dnl 2) WX_UNICODE dnl 3) WX_DEBUG dnl 4) WX_SHARED (and also WX_STATIC) dnl 5) WX_PORT dnl from the previously selected wxWidgets build; this macro in fact must be dnl called *after* calling the WX_CONFIG_CHECK macro. dnl dnl Note that the WX_VERSION_MAJOR, WX_VERSION_MINOR symbols are already set dnl by WX_CONFIG_CHECK macro dnl --------------------------------------------------------------------------- AC_DEFUN([WX_DETECT_STANDARD_OPTION_VALUES], [ dnl IMPORTANT: WX_VERSION contains all three major.minor.micro digits, dnl while WX_RELEASE only the major.minor ones. WX_RELEASE="$WX_VERSION_MAJOR""$WX_VERSION_MINOR" if test $WX_RELEASE -lt 26 ; then AC_MSG_ERROR([ Cannot detect the wxWidgets configuration for the selected wxWidgets build since its version is $WX_VERSION < 2.6.0; please install a newer version of wxWidgets. ]) fi dnl The wx-config we are using understands the "--selected_config" dnl option which returns an easy-parseable string ! WX_SELECTEDCONFIG=$($WX_CONFIG_WITH_ARGS --selected_config) if test "$WX_DEBUG_CONFIGURE" = "1"; then echo "[[dbg]] Using wx-config --selected-config" echo "[[dbg]] WX_SELECTEDCONFIG: $WX_SELECTEDCONFIG" fi dnl we could test directly for WX_SHARED with a line like: dnl _WX_SELECTEDCONFIG_CHECKFOR([SHARED], [shared], dnl [if wxWidgets was built in SHARED mode]) dnl but wx-config --selected-config DOES NOT outputs the 'shared' dnl word when wx was built in shared mode; it rather outputs the dnl 'static' word when built in static mode. if test "$WX_SHARED" = "1"; then STATIC=0 elif test "$WX_SHARED" = "0"; then STATIC=1 fi dnl Now set the WX_UNICODE, WX_DEBUG, WX_STATIC variables _WX_SELECTEDCONFIG_CHECKFOR([UNICODE], [unicode], [if wxWidgets was built with UNICODE enabled]) _WX_SELECTEDCONFIG_CHECKFOR([DEBUG], [debug], [if wxWidgets was built in DEBUG mode]) _WX_SELECTEDCONFIG_CHECKFOR([STATIC], [static], [if wxWidgets was built in STATIC mode]) dnl init WX_SHARED from WX_STATIC if test "$WX_STATIC" != "0"; then WX_SHARED=0 else WX_SHARED=1 fi AC_SUBST(WX_UNICODE) AC_SUBST(WX_DEBUG) AC_SUBST(WX_SHARED) dnl detect the WX_PORT to use if test -z "$TOOLKIT" ; then dnl The user does not have particular preferences for this option; dnl so we will detect the wxWidgets relative build setting and use it AC_MSG_CHECKING([which wxWidgets toolkit was selected]) WX_GTKPORT1=$(expr "$WX_SELECTEDCONFIG" : ".*gtk1.*") WX_GTKPORT2=$(expr "$WX_SELECTEDCONFIG" : ".*gtk2.*") WX_GTKPORT3=$(expr "$WX_SELECTEDCONFIG" : ".*gtk3.*") WX_MSWPORT=$(expr "$WX_SELECTEDCONFIG" : ".*msw.*") WX_MOTIFPORT=$(expr "$WX_SELECTEDCONFIG" : ".*motif.*") WX_OSXCOCOAPORT=$(expr "$WX_SELECTEDCONFIG" : ".*osx_cocoa.*") WX_OSXCARBONPORT=$(expr "$WX_SELECTEDCONFIG" : ".*osx_carbon.*") WX_X11PORT=$(expr "$WX_SELECTEDCONFIG" : ".*x11.*") WX_DFBPORT=$(expr "$WX_SELECTEDCONFIG" : ".*dfb.*") WX_BASEPORT=$(expr "$WX_SELECTEDCONFIG" : ".*base.*") WX_PORT="unknown" if test "$WX_GTKPORT1" != "0"; then WX_PORT="gtk1"; fi if test "$WX_GTKPORT2" != "0"; then WX_PORT="gtk2"; fi if test "$WX_GTKPORT3" != "0"; then WX_PORT="gtk3"; fi if test "$WX_MSWPORT" != "0"; then WX_PORT="msw"; fi if test "$WX_MOTIFPORT" != "0"; then WX_PORT="motif"; fi 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_DFBPORT" != "0"; then WX_PORT="dfb"; fi if test "$WX_BASEPORT" != "0"; then WX_PORT="base"; fi dnl NOTE: backward-compatible check for wx2.8; in wx2.9 the mac dnl ports are called 'osx_cocoa' and 'osx_carbon' (see above) WX_MACPORT=$(expr "$WX_SELECTEDCONFIG" : ".*mac.*") if test "$WX_MACPORT" != "0"; then WX_PORT="mac"; fi dnl check at least one of the WX_*PORT has been set ! if test "$WX_PORT" = "unknown" ; then AC_MSG_ERROR([ Cannot detect the currently installed wxWidgets port ! Please check your 'wx-config --cxxflags'... ]) fi AC_MSG_RESULT([$WX_PORT]) else dnl Use the setting given by the user WX_PORT=$TOOLKIT fi AC_SUBST(WX_PORT) if test "$WX_DEBUG_CONFIGURE" = "1"; then echo "[[dbg]] Values of all WX_* options after final detection:" echo "[[dbg]] WX_DEBUG: $WX_DEBUG" echo "[[dbg]] WX_UNICODE: $WX_UNICODE" echo "[[dbg]] WX_SHARED: $WX_SHARED" echo "[[dbg]] WX_RELEASE: $WX_RELEASE" echo "[[dbg]] WX_PORT: $WX_PORT" fi dnl Avoid problem described in the WX_STANDARD_OPTIONS which happens when dnl the user gives the options: dnl ./configure --enable-shared --without-wxshared dnl or just do dnl ./configure --enable-shared dnl but there is only a static build of wxWidgets available. if test "$WX_SHARED" = "0" -a "$SHARED" = "1"; then AC_MSG_ERROR([ Cannot build shared library against a static build of wxWidgets ! This error happens because the wxWidgets build which was selected has been detected as static while you asked to build $PACKAGE_NAME as shared library and this is not possible. Use the '--disable-shared' option to build $PACKAGE_NAME as static library or '--with-wxshared' to use wxWidgets as shared library. ]) fi dnl now we can finally update the options to their final values if they dnl were not already set if test -z "$UNICODE" ; then UNICODE=$WX_UNICODE fi if test -z "$SHARED" ; then SHARED=$WX_SHARED fi if test -z "$TOOLKIT" ; then TOOLKIT=$WX_PORT fi dnl respect the DEBUG variable adding the optimize/debug flags and also dnl define a BUILD variable in case the user wants to use it dnl dnl NOTE: the CXXFLAGS are merged together with the CPPFLAGS so we dnl don't need to set them, too if test "$DEBUG" = "1"; then BUILD="debug" CXXFLAGS="$CXXFLAGS -g -O0" CFLAGS="$CFLAGS -g -O0" elif test "$DEBUG" = "0"; then BUILD="release" CXXFLAGS="$CXXFLAGS -O2" CFLAGS="$CFLAGS -O2" fi ]) dnl --------------------------------------------------------------------------- dnl WX_BOOLOPT_SUMMARY([name of the boolean variable to show summary for], dnl [what to print when var is 1], dnl [what to print when var is 0]) dnl dnl Prints $2 when variable $1 == 1 and prints $3 when variable $1 == 0. dnl This macro mainly exists just to make configure.ac scripts more readable. dnl dnl NOTE: you need to use the [" my message"] syntax for 2nd and 3rd arguments dnl if you want that m4 avoid to throw away the spaces prefixed to the dnl argument value. dnl --------------------------------------------------------------------------- AC_DEFUN([WX_BOOLOPT_SUMMARY], [ if test "x$$1" = "x1" ; then echo $2 elif test "x$$1" = "x0" ; then echo $3 else echo "$1 is $$1" fi ]) dnl --------------------------------------------------------------------------- dnl WX_STANDARD_OPTIONS_SUMMARY_MSG dnl dnl Shows a summary message to the user about the WX_* variable contents. dnl This macro is used typically at the end of the configure script. dnl --------------------------------------------------------------------------- AC_DEFUN([WX_STANDARD_OPTIONS_SUMMARY_MSG], [ echo echo " The wxWidgets build which will be used by $PACKAGE_NAME $PACKAGE_VERSION" echo " has the following settings:" WX_BOOLOPT_SUMMARY([WX_DEBUG], [" - DEBUG build"], [" - RELEASE build"]) WX_BOOLOPT_SUMMARY([WX_UNICODE], [" - UNICODE mode"], [" - ANSI mode"]) WX_BOOLOPT_SUMMARY([WX_SHARED], [" - SHARED mode"], [" - STATIC mode"]) echo " - VERSION: $WX_VERSION" echo " - PORT: $WX_PORT" ]) dnl --------------------------------------------------------------------------- dnl WX_STANDARD_OPTIONS_SUMMARY_MSG_BEGIN, WX_STANDARD_OPTIONS_SUMMARY_MSG_END dnl dnl Like WX_STANDARD_OPTIONS_SUMMARY_MSG macro but these two macros also gives info dnl about the configuration of the package which used the wxpresets. dnl dnl Typical usage: dnl WX_STANDARD_OPTIONS_SUMMARY_MSG_BEGIN dnl echo " - Package setting 1: $SETTING1" dnl echo " - Package setting 2: $SETTING1" dnl ... dnl WX_STANDARD_OPTIONS_SUMMARY_MSG_END dnl dnl --------------------------------------------------------------------------- AC_DEFUN([WX_STANDARD_OPTIONS_SUMMARY_MSG_BEGIN], [ echo echo " ----------------------------------------------------------------" echo " Configuration for $PACKAGE_NAME $PACKAGE_VERSION successfully completed." echo " Summary of main configuration settings for $PACKAGE_NAME:" WX_BOOLOPT_SUMMARY([DEBUG], [" - DEBUG build"], [" - RELEASE build"]) WX_BOOLOPT_SUMMARY([UNICODE], [" - UNICODE mode"], [" - ANSI mode"]) WX_BOOLOPT_SUMMARY([SHARED], [" - SHARED mode"], [" - STATIC mode"]) ]) AC_DEFUN([WX_STANDARD_OPTIONS_SUMMARY_MSG_END], [ WX_STANDARD_OPTIONS_SUMMARY_MSG echo echo " Now, just run make." echo " ----------------------------------------------------------------" echo ]) dnl --------------------------------------------------------------------------- dnl Deprecated macro wrappers dnl --------------------------------------------------------------------------- AC_DEFUN([AM_OPTIONS_WXCONFIG], [WX_CONFIG_OPTIONS]) AC_DEFUN([AM_PATH_WXCONFIG], [ WX_CONFIG_CHECK([$1],[$2],[$3],[$4],[$5]) ]) AC_DEFUN([AM_PATH_WXRC], [WXRC_CHECK([$1],[$2])]) poedit-3.6.3/admin/config.sub0000755000175100001660000010511615011674351011553 #! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2022 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2022-01-03' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 basic_os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova*) basic_machine=$field1 basic_os=$maybe_os ;; android-linux) basic_machine=$field1-unknown basic_os=linux-android ;; *) basic_machine=$field1-$field2 basic_os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any pattern case $field1-$field2 in decstation-3100) basic_machine=mips-dec basic_os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 basic_os=$field2 ;; zephyr*) basic_machine=$field1-unknown basic_os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ | convergent* | ncr* | news | 32* | 3600* | 3100* \ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ | ultra | tti* | harris | dolphin | highlevel | gould \ | cbm | ns | masscomp | apple | axis | knuth | cray \ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 basic_os= ;; *) basic_machine=$field1 basic_os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc basic_os=bsd ;; a29khif) basic_machine=a29k-amd basic_os=udi ;; adobe68k) basic_machine=m68010-adobe basic_os=scout ;; alliant) basic_machine=fx80-alliant basic_os= ;; altos | altos3068) basic_machine=m68k-altos basic_os= ;; am29k) basic_machine=a29k-none basic_os=bsd ;; amdahl) basic_machine=580-amdahl basic_os=sysv ;; amiga) basic_machine=m68k-unknown basic_os= ;; amigaos | amigados) basic_machine=m68k-unknown basic_os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown basic_os=sysv4 ;; apollo68) basic_machine=m68k-apollo basic_os=sysv ;; apollo68bsd) basic_machine=m68k-apollo basic_os=bsd ;; aros) basic_machine=i386-pc basic_os=aros ;; aux) basic_machine=m68k-apple basic_os=aux ;; balance) basic_machine=ns32k-sequent basic_os=dynix ;; blackfin) basic_machine=bfin-unknown basic_os=linux ;; cegcc) basic_machine=arm-unknown basic_os=cegcc ;; convex-c1) basic_machine=c1-convex basic_os=bsd ;; convex-c2) basic_machine=c2-convex basic_os=bsd ;; convex-c32) basic_machine=c32-convex basic_os=bsd ;; convex-c34) basic_machine=c34-convex basic_os=bsd ;; convex-c38) basic_machine=c38-convex basic_os=bsd ;; cray) basic_machine=j90-cray basic_os=unicos ;; crds | unos) basic_machine=m68k-crds basic_os= ;; da30) basic_machine=m68k-da30 basic_os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec basic_os= ;; delta88) basic_machine=m88k-motorola basic_os=sysv3 ;; dicos) basic_machine=i686-pc basic_os=dicos ;; djgpp) basic_machine=i586-pc basic_os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd basic_os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson basic_os=ose ;; gmicro) basic_machine=tron-gmicro basic_os=sysv ;; go32) basic_machine=i386-pc basic_os=go32 ;; h8300hms) basic_machine=h8300-hitachi basic_os=hms ;; h8300xray) basic_machine=h8300-hitachi basic_os=xray ;; h8500hms) basic_machine=h8500-hitachi basic_os=hms ;; harris) basic_machine=m88k-harris basic_os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp basic_os=hpux ;; hp300bsd) basic_machine=m68k-hp basic_os=bsd ;; hppaosf) basic_machine=hppa1.1-hp basic_os=osf ;; hppro) basic_machine=hppa1.1-hp basic_os=proelf ;; i386mach) basic_machine=i386-mach basic_os=mach ;; isi68 | isi) basic_machine=m68k-isi basic_os=sysv ;; m68knommu) basic_machine=m68k-unknown basic_os=linux ;; magnum | m3230) basic_machine=mips-mips basic_os=sysv ;; merlin) basic_machine=ns32k-utek basic_os=sysv ;; mingw64) basic_machine=x86_64-pc basic_os=mingw64 ;; mingw32) basic_machine=i686-pc basic_os=mingw32 ;; mingw32ce) basic_machine=arm-unknown basic_os=mingw32ce ;; monitor) basic_machine=m68k-rom68k basic_os=coff ;; morphos) basic_machine=powerpc-unknown basic_os=morphos ;; moxiebox) basic_machine=moxie-unknown basic_os=moxiebox ;; msdos) basic_machine=i386-pc basic_os=msdos ;; msys) basic_machine=i686-pc basic_os=msys ;; mvs) basic_machine=i370-ibm basic_os=mvs ;; nacl) basic_machine=le32-unknown basic_os=nacl ;; ncr3000) basic_machine=i486-ncr basic_os=sysv4 ;; netbsd386) basic_machine=i386-pc basic_os=netbsd ;; netwinder) basic_machine=armv4l-rebel basic_os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony basic_os=newsos ;; news1000) basic_machine=m68030-sony basic_os=newsos ;; necv70) basic_machine=v70-nec basic_os=sysv ;; nh3000) basic_machine=m68k-harris basic_os=cxux ;; nh[45]000) basic_machine=m88k-harris basic_os=cxux ;; nindy960) basic_machine=i960-intel basic_os=nindy ;; mon960) basic_machine=i960-intel basic_os=mon960 ;; nonstopux) basic_machine=mips-compaq basic_os=nonstopux ;; os400) basic_machine=powerpc-ibm basic_os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson basic_os=ose ;; os68k) basic_machine=m68k-none basic_os=os68k ;; paragon) basic_machine=i860-intel basic_os=osf ;; parisc) basic_machine=hppa-unknown basic_os=linux ;; psp) basic_machine=mipsallegrexel-sony basic_os=psp ;; pw32) basic_machine=i586-unknown basic_os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc basic_os=rdos ;; rdos32) basic_machine=i386-pc basic_os=rdos ;; rom68k) basic_machine=m68k-rom68k basic_os=coff ;; sa29200) basic_machine=a29k-amd basic_os=udi ;; sei) basic_machine=mips-sei basic_os=seiux ;; sequent) basic_machine=i386-sequent basic_os= ;; sps7) basic_machine=m68k-bull basic_os=sysv2 ;; st2000) basic_machine=m68k-tandem basic_os= ;; stratus) basic_machine=i860-stratus basic_os=sysv4 ;; sun2) basic_machine=m68000-sun basic_os= ;; sun2os3) basic_machine=m68000-sun basic_os=sunos3 ;; sun2os4) basic_machine=m68000-sun basic_os=sunos4 ;; sun3) basic_machine=m68k-sun basic_os= ;; sun3os3) basic_machine=m68k-sun basic_os=sunos3 ;; sun3os4) basic_machine=m68k-sun basic_os=sunos4 ;; sun4) basic_machine=sparc-sun basic_os= ;; sun4os3) basic_machine=sparc-sun basic_os=sunos3 ;; sun4os4) basic_machine=sparc-sun basic_os=sunos4 ;; sun4sol2) basic_machine=sparc-sun basic_os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun basic_os= ;; sv1) basic_machine=sv1-cray basic_os=unicos ;; symmetry) basic_machine=i386-sequent basic_os=dynix ;; t3e) basic_machine=alphaev5-cray basic_os=unicos ;; t90) basic_machine=t90-cray basic_os=unicos ;; toad1) basic_machine=pdp10-xkl basic_os=tops20 ;; tpf) basic_machine=s390x-ibm basic_os=tpf ;; udi29k) basic_machine=a29k-amd basic_os=udi ;; ultra3) basic_machine=a29k-nyu basic_os=sym1 ;; v810 | necv810) basic_machine=v810-nec basic_os=none ;; vaxv) basic_machine=vax-dec basic_os=sysv ;; vms) basic_machine=vax-dec basic_os=vms ;; vsta) basic_machine=i386-pc basic_os=vsta ;; vxworks960) basic_machine=i960-wrs basic_os=vxworks ;; vxworks68) basic_machine=m68k-wrs basic_os=vxworks ;; vxworks29k) basic_machine=a29k-wrs basic_os=vxworks ;; xbox) basic_machine=i686-pc basic_os=mingw32 ;; ymp) basic_machine=ymp-cray basic_os=unicos ;; *) basic_machine=$1 basic_os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm basic_os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec basic_os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec basic_os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull basic_os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi basic_os=${basic_os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray basic_os=${basic_os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $basic_os in irix*) ;; *) basic_os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari basic_os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony basic_os=newsos ;; next | m*-next) cpu=m68k vendor=next case $basic_os in openstep*) ;; nextstep*) ;; ns2*) basic_os=nextstep2 ;; *) basic_os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki basic_os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde basic_os=${basic_os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs basic_os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond basic_os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if test x$basic_os != x then # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. case $basic_os in gnu/linux*) kernel=linux os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` ;; os2-emx) kernel=os2 os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read kernel os <&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. case $kernel-$os in linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ | linux-musl* | linux-relibc* | linux-uclibc* ) ;; uclinux-uclibc* ) ;; -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 exit 1 ;; kfreebsd*-gnu* | kopensolaris*-gnu*) ;; vxworks-simlinux | vxworks-simwindows | vxworks-spe) ;; nto-qnx*) ;; os2-emx) ;; *-eabi* | *-gnueabi*) ;; -*) # Blank kernel with real OS is always fine. ;; *-*) echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 exit 1 ;; esac # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $cpu-$os in *-riscix*) vendor=acorn ;; *-sunos*) vendor=sun ;; *-cnk* | *-aix*) vendor=ibm ;; *-beos*) vendor=be ;; *-hpux*) vendor=hp ;; *-mpeix*) vendor=hp ;; *-hiux*) vendor=hitachi ;; *-unos*) vendor=crds ;; *-dgux*) vendor=dg ;; *-luna*) vendor=omron ;; *-genix*) vendor=ns ;; *-clix*) vendor=intergraph ;; *-mvs* | *-opened*) vendor=ibm ;; *-os400*) vendor=ibm ;; s390-* | s390x-*) vendor=ibm ;; *-ptx*) vendor=sequent ;; *-tpf*) vendor=ibm ;; *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; *-aux*) vendor=apple ;; *-hms*) vendor=hitachi ;; *-mpw* | *-macos*) vendor=apple ;; *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; *-vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: poedit-3.6.3/admin/ax_cxx_compile_stdcxx.m40000644000175100001660000005207515011674230014432 # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html # =========================================================================== # # SYNOPSIS # # AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional]) # # DESCRIPTION # # Check for baseline language coverage in the compiler for the specified # version of the C++ standard. If necessary, add switches to CXX and # CXXCPP to enable support. VERSION may be '11', '14', '17', or '20' for # the respective C++ standard version. # # The second argument, if specified, indicates whether you insist on an # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. # -std=c++11). If neither is specified, you get whatever works, with # preference for no added switch, and then for an extended mode. # # The third argument, if specified 'mandatory' or if left unspecified, # indicates that baseline support for the specified C++ standard is # required and that the macro should error out if no mode with that # support is found. If specified 'optional', then configuration proceeds # regardless, after defining HAVE_CXX${VERSION} if and only if a # supporting mode is found. # # LICENSE # # Copyright (c) 2008 Benjamin Kosnik # Copyright (c) 2012 Zack Weinberg # Copyright (c) 2013 Roy Stogner # Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov # Copyright (c) 2015 Paul Norman # Copyright (c) 2015 Moritz Klammler # Copyright (c) 2016, 2018 Krzesimir Nowak # Copyright (c) 2019 Enji Cooper # Copyright (c) 2020 Jason Merrill # Copyright (c) 2021 Jörn Heusipp # # 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 18 dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro dnl (serial version number 13). AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"], [$1], [14], [ax_cxx_compile_alternatives="14 1y"], [$1], [17], [ax_cxx_compile_alternatives="17 1z"], [$1], [20], [ax_cxx_compile_alternatives="20"], [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl m4_if([$2], [], [], [$2], [ext], [], [$2], [noext], [], [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true], [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true], [$3], [optional], [ax_cxx_compile_cxx$1_required=false], [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])]) AC_LANG_PUSH([C++])dnl ac_success=no m4_if([$2], [], [dnl AC_CACHE_CHECK(whether $CXX supports C++$1 features by default, ax_cv_cxx_compile_cxx$1, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], [ax_cv_cxx_compile_cxx$1=yes], [ax_cv_cxx_compile_cxx$1=no])]) if test x$ax_cv_cxx_compile_cxx$1 = xyes; then ac_success=yes fi]) m4_if([$2], [noext], [], [dnl if test x$ac_success = xno; then for alternative in ${ax_cxx_compile_alternatives}; do switch="-std=gnu++${alternative}" cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, $cachevar, [ac_save_CXX="$CXX" CXX="$CXX $switch" AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], [eval $cachevar=yes], [eval $cachevar=no]) CXX="$ac_save_CXX"]) if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done fi]) m4_if([$2], [ext], [], [dnl if test x$ac_success = xno; then dnl HP's aCC needs +std=c++11 according to: dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf dnl Cray's crayCC needs "-h std=c++11" dnl MSVC needs -std:c++NN for C++17 and later (default is C++14) for alternative in ${ax_cxx_compile_alternatives}; do for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}" MSVC; do if test x"$switch" = xMSVC; then dnl AS_TR_SH maps both `:` and `=` to `_` so -std:c++17 would collide dnl with -std=c++17. We suffix the cache variable name with _MSVC to dnl avoid this. switch=-std:c++${alternative} cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_${switch}_MSVC]) else cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) fi AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, $cachevar, [ac_save_CXX="$CXX" CXX="$CXX $switch" AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], [eval $cachevar=yes], [eval $cachevar=no]) CXX="$ac_save_CXX"]) if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done if test x$ac_success = xyes; then break fi done fi]) AC_LANG_POP([C++]) if test x$ax_cxx_compile_cxx$1_required = xtrue; then if test x$ac_success = xno; then AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.]) fi fi if test x$ac_success = xno; then HAVE_CXX$1=0 AC_MSG_NOTICE([No compiler with C++$1 support was found]) else HAVE_CXX$1=1 AC_DEFINE(HAVE_CXX$1,1, [define if the compiler supports basic C++$1 syntax]) fi AC_SUBST(HAVE_CXX$1) ]) dnl Test body for checking C++11 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11], _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 ) dnl Test body for checking C++14 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14], _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 ) dnl Test body for checking C++17 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17], _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 ) dnl Test body for checking C++20 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_20], _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 _AX_CXX_COMPILE_STDCXX_testbody_new_in_20 ) dnl Tests for new features in C++11 m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" // MSVC always sets __cplusplus to 199711L in older versions; newer versions // only set it correctly if /Zc:__cplusplus is specified as well as a // /std:c++NN switch: // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ #elif __cplusplus < 201103L && !defined _MSC_VER #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual ~Base() {} virtual void f() {} }; struct Derived : public Base { virtual ~Derived() override {} virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // 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 using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L ]]) dnl Tests for new features in C++14 m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[ // If the compiler admits that it is not ready for C++14, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201402L && !defined _MSC_VER #error "This is not a C++14 compiler" #else namespace cxx14 { namespace test_polymorphic_lambdas { int test() { const auto lambda = [](auto&&... args){ const auto istiny = [](auto x){ return (sizeof(x) == 1UL) ? 1 : 0; }; const int aretiny[] = { istiny(args)... }; return aretiny[0]; }; return lambda(1, 1L, 1.0f, '1'); } } namespace test_binary_literals { constexpr auto ivii = 0b0000000000101010; static_assert(ivii == 42, "wrong value"); } namespace test_generalized_constexpr { template < typename CharT > constexpr unsigned long strlen_c(const CharT *const s) noexcept { auto length = 0UL; for (auto p = s; *p; ++p) ++length; return length; } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("x") == 1UL, ""); static_assert(strlen_c("test") == 4UL, ""); static_assert(strlen_c("another\0test") == 7UL, ""); } namespace test_lambda_init_capture { int test() { auto x = 0; const auto lambda1 = [a = x](int b){ return a + b; }; const auto lambda2 = [a = lambda1(x)](){ return a; }; return lambda2(); } } namespace test_digit_separators { constexpr auto ten_million = 100'000'000; static_assert(ten_million == 100000000, ""); } namespace test_return_type_deduction { auto f(int& x) { return x; } decltype(auto) g(int& x) { return x; } template < typename T1, typename T2 > struct is_same { static constexpr auto value = false; }; template < typename T > struct is_same { static constexpr auto value = true; }; int test() { auto x = 0; static_assert(is_same::value, ""); static_assert(is_same::value, ""); return x; } } } // namespace cxx14 #endif // __cplusplus >= 201402L ]]) dnl Tests for new features in C++17 m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[ // If the compiler admits that it is not ready for C++17, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201703L && !defined _MSC_VER #error "This is not a C++17 compiler" #else #include #include #include namespace cxx17 { namespace test_constexpr_lambdas { constexpr int foo = [](){return 42;}(); } namespace test::nested_namespace::definitions { } namespace test_fold_expression { template int multiply(Args... args) { return (args * ... * 1); } template bool all(Args... args) { return (args && ...); } } namespace test_extended_static_assert { static_assert (true); } namespace test_auto_brace_init_list { auto foo = {5}; auto bar {5}; static_assert(std::is_same, decltype(foo)>::value); static_assert(std::is_same::value); } namespace test_typename_in_template_template_parameter { template typename X> struct D; } namespace test_fallthrough_nodiscard_maybe_unused_attributes { int f1() { return 42; } [[nodiscard]] int f2() { [[maybe_unused]] auto unused = f1(); switch (f1()) { case 17: f1(); [[fallthrough]]; case 42: f1(); } return f1(); } } namespace test_extended_aggregate_initialization { struct base1 { int b1, b2 = 42; }; struct base2 { base2() { b3 = 42; } int b3; }; struct derived : base1, base2 { int d; }; derived d1 {{1, 2}, {}, 4}; // full initialization derived d2 {{}, {}, 4}; // value-initialized bases } namespace test_general_range_based_for_loop { struct iter { int i; int& operator* () { return i; } const int& operator* () const { return i; } iter& operator++() { ++i; return *this; } }; struct sentinel { int i; }; bool operator== (const iter& i, const sentinel& s) { return i.i == s.i; } bool operator!= (const iter& i, const sentinel& s) { return !(i == s); } struct range { iter begin() const { return {0}; } sentinel end() const { return {5}; } }; void f() { range r {}; for (auto i : r) { [[maybe_unused]] auto v = i; } } } namespace test_lambda_capture_asterisk_this_by_value { struct t { int i; int foo() { return [*this]() { return i; }(); } }; } namespace test_enum_class_construction { enum class byte : unsigned char {}; byte foo {42}; } namespace test_constexpr_if { template int f () { if constexpr(cond) { return 13; } else { return 42; } } } namespace test_selection_statement_with_initializer { int f() { return 13; } int f2() { if (auto i = f(); i > 0) { return 3; } switch (auto i = f(); i + 4) { case 17: return 2; default: return 1; } } } namespace test_template_argument_deduction_for_class_templates { template struct pair { pair (T1 p1, T2 p2) : m1 {p1}, m2 {p2} {} T1 m1; T2 m2; }; void f() { [[maybe_unused]] auto p = pair{13, 42u}; } } namespace test_non_type_auto_template_parameters { template struct B {}; B<5> b1; B<'a'> b2; } namespace test_structured_bindings { int arr[2] = { 1, 2 }; std::pair pr = { 1, 2 }; auto f1() -> int(&)[2] { return arr; } auto f2() -> std::pair& { return pr; } struct S { int x1 : 2; volatile double y1; }; S f3() { return {}; } auto [ x1, y1 ] = f1(); auto& [ xr1, yr1 ] = f1(); auto [ x2, y2 ] = f2(); auto& [ xr2, yr2 ] = f2(); const auto [ x3, y3 ] = f3(); } namespace test_exception_spec_type_system { struct Good {}; struct Bad {}; void g1() noexcept; void g2(); template Bad f(T*, T*); template Good f(T1*, T2*); static_assert (std::is_same_v); } namespace test_inline_variables { template void f(T) {} template inline T g(T) { return T{}; } template<> inline void f<>(int) {} template<> int g<>(int) { return 5; } } } // namespace cxx17 #endif // __cplusplus < 201703L && !defined _MSC_VER ]]) dnl Tests for new features in C++20 m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_20], [[ #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 202002L && !defined _MSC_VER #error "This is not a C++20 compiler" #else #include namespace cxx20 { // As C++20 supports feature test macros in the standard, there is no // immediate need to actually test for feature availability on the // Autoconf side. } // namespace cxx20 #endif // __cplusplus < 202002L && !defined _MSC_VER ]]) poedit-3.6.3/admin/ax_boost_system.m40000644000175100001660000001012615011674230013244 # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_boost_system.html # =========================================================================== # # SYNOPSIS # # AX_BOOST_SYSTEM # # DESCRIPTION # # Test for System library from the Boost C++ libraries. The macro requires # a preceding call to AX_BOOST_BASE. Further documentation is available at # . # # This macro calls: # # AC_SUBST(BOOST_SYSTEM_LIB) # # And sets: # # HAVE_BOOST_SYSTEM # # LICENSE # # Copyright (c) 2008 Thomas Porschberg # Copyright (c) 2008 Michael Tindal # Copyright (c) 2008 Daniel Casimiro # # 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 19 AC_DEFUN([AX_BOOST_SYSTEM], [ AC_ARG_WITH([boost-system], AS_HELP_STRING([--with-boost-system@<:@=special-lib@:>@], [use the System library from boost - it is possible to specify a certain library for the linker e.g. --with-boost-system=boost_system-gcc-mt ]), [ if test "$withval" = "no"; then want_boost="no" elif test "$withval" = "yes"; then want_boost="yes" ax_boost_user_system_lib="" else want_boost="yes" ax_boost_user_system_lib="$withval" fi ], [want_boost="yes"] ) if test "x$want_boost" = "xyes"; then AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_BUILD]) CPPFLAGS_SAVED="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS_SAVED="$LDFLAGS" LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS AC_CACHE_CHECK(whether the Boost::System library is available, ax_cv_boost_system, [AC_LANG_PUSH([C++]) CXXFLAGS_SAVE=$CXXFLAGS CXXFLAGS= AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include ]], [[boost::system::error_category *a = 0;]])], ax_cv_boost_system=yes, ax_cv_boost_system=no) CXXFLAGS=$CXXFLAGS_SAVE AC_LANG_POP([C++]) ]) if test "x$ax_cv_boost_system" = "xyes"; then AC_SUBST(BOOST_CPPFLAGS) AC_DEFINE(HAVE_BOOST_SYSTEM,,[define if the Boost::System library is available]) BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'` LDFLAGS_SAVE=$LDFLAGS if test "x$ax_boost_user_system_lib" = "x"; then for libextension in `ls -r $BOOSTLIBDIR/libboost_system* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'` ; do ax_lib=${libextension} AC_CHECK_LIB($ax_lib, exit, [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break], [link_system="no"]) done if test "x$link_system" != "xyes"; then for libextension in `ls -r $BOOSTLIBDIR/boost_system* 2>/dev/null | sed 's,.*/,,' | sed -e 's,\..*,,'` ; do ax_lib=${libextension} AC_CHECK_LIB($ax_lib, exit, [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break], [link_system="no"]) done fi else for ax_lib in $ax_boost_user_system_lib boost_system-$ax_boost_user_system_lib; do AC_CHECK_LIB($ax_lib, exit, [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break], [link_system="no"]) done fi if test "x$ax_lib" = "x"; then AC_MSG_ERROR(Could not find a version of the library!) fi if test "x$link_system" = "xno"; then AC_MSG_ERROR(Could not link against $ax_lib !) fi fi CPPFLAGS="$CPPFLAGS_SAVED" LDFLAGS="$LDFLAGS_SAVED" fi ]) poedit-3.6.3/admin/install-sh0000755000175100001660000003577615011674351011612 #!/bin/sh # install - install a program, script, or datafile scriptversion=2020-11-14.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # 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 # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 # Create dirs (including intermediate dirs) using mode 755. # This is like GNU 'install' as of coreutils 8.32 (2020). mkdir_umask=22 backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -p pass -p to $cpprog. -s $stripprog installed files. -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG By default, rm is invoked with -f; when overridden with RMPROG, it's up to you to specify -f if you want it. If -S is not specified, no backups are attempted. Email bug reports to bug-automake@gnu.org. Automake home page: https://www.gnu.org/software/automake/ " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -p) cpprog="$cpprog -p";; -s) stripcmd=$stripprog;; -S) backupsuffix="$2" shift;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? # Don't chown directories that already exist. if test $dstdir_status = 0; then chowncmd="" fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false # The $RANDOM variable is not portable (e.g., dash). Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap ' ret=$? rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null exit $ret ' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writeable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p'. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && { test -z "$stripcmd" || { # Create $dsttmp read-write so that cp doesn't create it read-only, # which would cause strip to fail. if test -z "$doit"; then : >"$dsttmp" # No need to fork-exec 'touch'. else $doit touch "$dsttmp" fi } } && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # If $backupsuffix is set, and the file being installed # already exists, attempt a backup. Don't worry if it fails, # e.g., if mv doesn't support -f. if test -n "$backupsuffix" && test -f "$dst"; then $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null fi # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: poedit-3.6.3/admin/ax_boost_thread.m40000644000175100001660000001321115011674230013165 # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_boost_thread.html # =========================================================================== # # SYNOPSIS # # AX_BOOST_THREAD # # DESCRIPTION # # Test for Thread library from the Boost C++ libraries. The macro requires # a preceding call to AX_BOOST_BASE. Further documentation is available at # . # # This macro calls: # # AC_SUBST(BOOST_THREAD_LIB) # # And sets: # # HAVE_BOOST_THREAD # # LICENSE # # Copyright (c) 2009 Thomas Porschberg # Copyright (c) 2009 Michael Tindal # # 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 31 AC_DEFUN([AX_BOOST_THREAD], [ AC_ARG_WITH([boost-thread], AS_HELP_STRING([--with-boost-thread@<:@=special-lib@:>@], [use the Thread library from boost - it is possible to specify a certain library for the linker e.g. --with-boost-thread=boost_thread-gcc-mt ]), [ if test "$withval" = "yes"; then want_boost="yes" ax_boost_user_thread_lib="" else want_boost="yes" ax_boost_user_thread_lib="$withval" fi ], [want_boost="yes"] ) if test "x$want_boost" = "xyes"; then AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_BUILD]) CPPFLAGS_SAVED="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS_SAVED="$LDFLAGS" LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS AC_CACHE_CHECK(whether the Boost::Thread library is available, ax_cv_boost_thread, [AC_LANG_PUSH([C++]) CXXFLAGS_SAVE=$CXXFLAGS if test "x$host_os" = "xsolaris" ; then CXXFLAGS="-pthreads $CXXFLAGS" elif test "x$host_os" = "xmingw32" ; then CXXFLAGS="-mthreads $CXXFLAGS" else CXXFLAGS="-pthread $CXXFLAGS" fi AC_COMPILE_IFELSE([ AC_LANG_PROGRAM( [[@%:@include ]], [[boost::thread_group thrds; return 0;]])], ax_cv_boost_thread=yes, ax_cv_boost_thread=no) CXXFLAGS=$CXXFLAGS_SAVE AC_LANG_POP([C++]) ]) if test "x$ax_cv_boost_thread" = "xyes"; then if test "x$host_os" = "xsolaris" ; then BOOST_CPPFLAGS="-pthreads $BOOST_CPPFLAGS" elif test "x$host_os" = "xmingw32" ; then BOOST_CPPFLAGS="-mthreads $BOOST_CPPFLAGS" else BOOST_CPPFLAGS="-pthread $BOOST_CPPFLAGS" fi AC_SUBST(BOOST_CPPFLAGS) AC_DEFINE(HAVE_BOOST_THREAD,, [define if the Boost::Thread library is available]) BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'` LDFLAGS_SAVE=$LDFLAGS case "x$host_os" in *bsd* ) LDFLAGS="-pthread $LDFLAGS" break; ;; esac if test "x$ax_boost_user_thread_lib" = "x"; then for libextension in `ls -r $BOOSTLIBDIR/libboost_thread* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'`; do ax_lib=${libextension} AC_CHECK_LIB($ax_lib, exit, [link_thread="yes"; break], [link_thread="no"]) done if test "x$link_thread" != "xyes"; then for libextension in `ls -r $BOOSTLIBDIR/boost_thread* 2>/dev/null | sed 's,.*/,,' | sed 's,\..*,,'`; do ax_lib=${libextension} AC_CHECK_LIB($ax_lib, exit, [link_thread="yes"; break], [link_thread="no"]) done fi else for ax_lib in $ax_boost_user_thread_lib boost_thread-$ax_boost_user_thread_lib; do AC_CHECK_LIB($ax_lib, exit, [link_thread="yes"; break], [link_thread="no"]) done fi if test "x$ax_lib" = "x"; then AC_MSG_ERROR(Could not find a version of the library!) fi if test "x$link_thread" = "xno"; then AC_MSG_ERROR(Could not link against $ax_lib !) else BOOST_THREAD_LIB="-l$ax_lib" case "x$host_os" in *bsd* ) BOOST_LDFLAGS="-pthread $BOOST_LDFLAGS" break; ;; xsolaris ) BOOST_THREAD_LIB="$BOOST_THREAD_LIB -lpthread" break; ;; xmingw32 ) break; ;; * ) BOOST_THREAD_LIB="$BOOST_THREAD_LIB -lpthread" break; ;; esac AC_SUBST(BOOST_THREAD_LIB) fi fi CPPFLAGS="$CPPFLAGS_SAVED" LDFLAGS="$LDFLAGS_SAVED" fi ]) poedit-3.6.3/admin/ax_boost_iostreams.m40000644000175100001660000001101315011674230013722 # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_boost_iostreams.html # =========================================================================== # # SYNOPSIS # # AX_BOOST_IOSTREAMS # # DESCRIPTION # # Test for IOStreams library from the Boost C++ libraries. The macro # requires a preceding call to AX_BOOST_BASE. Further documentation is # available at . # # This macro calls: # # AC_SUBST(BOOST_IOSTREAMS_LIB) # # And sets: # # HAVE_BOOST_IOSTREAMS # # LICENSE # # Copyright (c) 2008 Thomas Porschberg # # 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 21 AC_DEFUN([AX_BOOST_IOSTREAMS], [ AC_ARG_WITH([boost-iostreams], AS_HELP_STRING([--with-boost-iostreams@<:@=special-lib@:>@], [use the IOStreams library from boost - it is possible to specify a certain library for the linker e.g. --with-boost-iostreams=boost_iostreams-gcc-mt-d-1_33_1 ]), [ if test "$withval" = "no"; then want_boost="no" elif test "$withval" = "yes"; then want_boost="yes" ax_boost_user_iostreams_lib="" else want_boost="yes" ax_boost_user_iostreams_lib="$withval" fi ], [want_boost="yes"] ) if test "x$want_boost" = "xyes"; then AC_REQUIRE([AC_PROG_CC]) CPPFLAGS_SAVED="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS_SAVED="$LDFLAGS" LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS AC_CACHE_CHECK(whether the Boost::IOStreams library is available, ax_cv_boost_iostreams, [AC_LANG_PUSH([C++]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include @%:@include ]], [[std::string input = "Hello World!"; namespace io = boost::iostreams; io::filtering_istream in(boost::make_iterator_range(input)); return 0; ]])], ax_cv_boost_iostreams=yes, ax_cv_boost_iostreams=no) AC_LANG_POP([C++]) ]) if test "x$ax_cv_boost_iostreams" = "xyes"; then AC_DEFINE(HAVE_BOOST_IOSTREAMS,,[define if the Boost::IOStreams library is available]) BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'` if test "x$ax_boost_user_iostreams_lib" = "x"; then for libextension in `ls $BOOSTLIBDIR/libboost_iostreams*.so* $BOOSTLIBDIR/libboost_iostream*.dylib* $BOOSTLIBDIR/libboost_iostreams*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_iostreams.*\)\.so.*$;\1;' -e 's;^lib\(boost_iostream.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_iostreams.*\)\.a.*$;\1;'` ; do ax_lib=${libextension} AC_CHECK_LIB($ax_lib, exit, [BOOST_IOSTREAMS_LIB="-l$ax_lib"; AC_SUBST(BOOST_IOSTREAMS_LIB) link_iostreams="yes"; break], [link_iostreams="no"]) done if test "x$link_iostreams" != "xyes"; then for libextension in `ls $BOOSTLIBDIR/boost_iostreams*.dll* $BOOSTLIBDIR/boost_iostreams*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_iostreams.*\)\.dll.*$;\1;' -e 's;^\(boost_iostreams.*\)\.a.*$;\1;'` ; do ax_lib=${libextension} AC_CHECK_LIB($ax_lib, exit, [BOOST_IOSTREAMS_LIB="-l$ax_lib"; AC_SUBST(BOOST_IOSTREAMS_LIB) link_iostreams="yes"; break], [link_iostreams="no"]) done fi else for ax_lib in $ax_boost_user_iostreams_lib boost_iostreams-$ax_boost_user_iostreams_lib; do AC_CHECK_LIB($ax_lib, main, [BOOST_IOSTREAMS_LIB="-l$ax_lib"; AC_SUBST(BOOST_IOSTREAMS_LIB) link_iostreams="yes"; break], [link_iostreams="no"]) done fi if test "x$ax_lib" = "x"; then AC_MSG_ERROR(Could not find a version of the library!) fi if test "x$link_iostreams" != "xyes"; then AC_MSG_ERROR(Could not link against $ax_lib !) fi fi CPPFLAGS="$CPPFLAGS_SAVED" LDFLAGS="$LDFLAGS_SAVED" fi ]) poedit-3.6.3/NEWS0000644000175100001660000011563615011674230007203 Version 3.6.3 ------------- - Fix regression in XLIFF 1.2 state handling introduced in 3.6.2. Version 3.6.2 ------------- - Improved XLIFF 1.2 compatibility with Xcode. - [Windows] Fixed crash due to a msvcp140.dll binary breakage. - Bugfixes. Version 3.6.1 ------------- - Fix incorrect msgmerge --no-fuzzy-matching invocation. - Recognize Shopify-style en.default.json files. - Fix uploading of same-as-source translations to Crowdin. Version 3.6 ----------- - Support for Apple XCLOC localization bundles. - Significantly improved updating and merging UI, with detailed changes reporting and error handling. - Long-runnig operations such as export/import now all report progress. - Added Serbian (Latin) and Uyghur translations. - Performance and UI responsiveness improvements. - Updated bundled GNU gettext to 0.23.1. Version 3.5.2 ------------- - Fixed false-positive QA warnings for Georgian. - Improved formatting of empty translation nodes in XLIFF. - Fixed several localization issues introduced with the switch wxWidgets 3.2. - [Windows] Fixed crash on session logoff. Version 3.5.1 ------------- - Several language-related fixes on Windows and Mac. - Minor visual fixes (alignment, dark mode, blurry icons). - [macOS] Added modern Quick Look preview extension (required on macOS 15). Version 3.5 ----------- - Added a tool to remove same-as-source translations. - Further improvements to JSON support, e.g. better compatiblity with Angular files. - Improved QA checks and editor performance. - Many "plumbing" improvements: upgraded to wxWidgets 3.2, Windows binaries are now 64-bit, system ICU is now used (smaller downloads) etc. - [Windows] Improved support for Windows 11 and modern visuals. Windows 10 is now required. - [Windows] Accessibility improvements with NVDA. - Removed the bookmarks functionality. It was broken by design, only implementable in PO files and is superseded by modern collaboration platforms. Version 3.4.4 ------------- - [Windows] Revert back to 32bit GNU gettext bundled binaries. Version 3.4.3 ------------- - Pass --no-convert to msgfmt with gettext >= 0.22 to avoid UTF-8 conversion. - Fixed parsing of @@locale values in ARB files. - Updated bundled GNU gettext to 0.22.5. - Assorted fixes. Version 3.4.2 ------------- - Compatibility fixes for wxWidgets 3.2 and latest ICU versions. - Updated bundled GNU gettext to 0.22.3. - Assorted UI improvements/fixes. Version 3.4.1 ------------- - Improved QA checks for Chinese and Japanese. - Improved handling of multiple 100% matches from the TM as well as search accuracy. - Recognize all ISO 639 languages in the language-setting controls. - Fixed bug in selection handling introduced in 3.4. Version 3.4 ----------- - Added support for syncing with Localazy translation platform. - Updated bundled GNU gettext to 0.22 and added support for its new features. - Assorted UI improvements/fixes. - [macOS] Support for macOS 14 Sonoma; dropped support for macOS 10.13. Version 3.3.2 ------------- - Added support for WebExtension JSON files. - Fixed failure to extract from source code and malformed Plural-Forms warning. - Minor UI fixes. Version 3.3.1 ------------- - Fixed catalog loosing source language information on update or similar manipulation. - [Windows] Fix crashes related to Lucene translation memory. Version 3.3 ----------- - Added support for JSON translation files, including Flutter. - Added support for XLIFF 2.1. Version 3.2.2 ------------- - Fixed overzealous placeholders correctness check. - Updated bundled GNU gettext to 0.21.1. - [macOS] Minor fixes for Ventura. Version 3.2.1 ------------- - Fixed chown/chmod verification logic broken in 3.2. Version 3.2 ----------- - Added QA warnings about incorrect use of placeholders. - Added format string highlighting for Objective-C, Qt, KDE, Lua, C# and Pascal. - Bugfixes. Version 3.1.1 ------------- - [Linux] Fixed regression where recent files icons would sometimes be broken. - [Windows] Fixed incorrect detection of Edge vs MSIE for source code viewing. Version 3.1 ----------- - Added Go / Previously Edited menu command. - Improved source code viewer performance. - XLIFF: added support for resname/name attributes. - Fixed ID column sizing on some platforms. - Fixed issues with certain rare escape sequences. Version 3.0.1 ------------- - Bugfixes. Version 3.0 ----------- - [macOS] Full support for macOS 11 Big Sur and Apple Silicon (M1). - Completely reworked welcome screen. - Modernized user interface and icons. - Much improved opening of recently edited files. - Automatic reloading of files modified outside of Poedit. - Completely new source code occurrences viewers with syntax highlighting for virtually all programming languages used with gettext. - Editing area now indicates source and translation string lengths. - Full python-format support for PO files. - Further improvements to XLIFF handling. Version 2.4.3 ------------- - Bugfixes. Version 2.4.2 ------------- - Minor improvements to syntax highlighting. - Improved language and placeholders handling in XLIFF. - [Windows] Fix issue with running gettext tools on UNC paths. Version 2.4.1 ------------- - Upgraded bundled GNU gettext version to 0.21. - Added support for Ruby format strings. - [macOS] Fixed compatibility with OS X 10.10 and 10.11. Version 2.4 ----------- - Crowdin integration was greatly improved and now supports editing of any kind of localization: files from Crowdin projects, not just POs. - Improvements to editor user interface. - [macOS] Fixes to light/dark mode switching. Version 2.3.1 ------------- - Upgraded bundled GNU gettext version to 0.20.2 with JSX parsing fixes. - Fixed TM matching of strings differing only in case. - Fixed crash in presence of invalid bookmarks data. Version 2.3 ----------- - Improved pre-translation performance. - Added support for XLIFF 1.0. - Improved handling of punctuation in QA checks. - Improved macOS 10.15 Catalina compatiblity. Version 2.2.4 ------------- - XLIFF improvements: handling of initial states, non-translatable items and better visual representation of placeholders. - Upgraded bundled GNU gettext version to 0.20.1; in particular, this adds support for ES6 template literals to the JavaScript extractor. - If a file has warnings or errors, show them immediately upon opening instead of waiting for the user to explicitly validate the file. - Misc. small fixes and visual improvements. Version 2.2.3 ------------- - Fixed asserts when compiled against wxGTK 3.0. - [Windows] Fixed issue where custom font wasn't respected in some cases. Version 2.2.2 ------------- - [Windows] Fix problem with some MSIE proxy configurations not being imported. - [Windows] Performance improvements. - Assorted bugfixes. Version 2.2.1 ------------- - Improved highlighting of HTML and placeholders. - File references are now supported in XLIFF. - [Linux] Compatibility fixes for Wayland, wxGTK 3.0 and dark themes. Version 2.2 ----------- - Support for editing XLIFF (both 1.2 and 2) files. - Fixes for correct handling of dark themes, including on macOS Mojave. - [Linux] Improved appearance with GTK+ 3. - [Linux] Updated AppData and desktop files to use reverse DNS naming. Version 2.1.1 ------------- - Fixed breakage of some localizations on macOS. Version 2.1 ----------- - Added import and export of translation memory as TMX files. - Added ability to delete bad translations from the TM. - TM now has limited support for plural forms (only nplurals<=2). - Improved handling plural form rules. CLDR is now used as the data source and expressions are checked for equivalence before warning about unusual forms. Version 2.0.9 ------------- - Improved dark theme supports (still not perfect). - Fix broken list rendering of RTL text on Windows. Version 2.0.8 ------------- - Add CakePHP support. - QA warnings and RTL fixes. - Make TM reset work when the index is corrupted. Version 2.0.7 ------------- - Fix mangled non-English gettext error messages. - Add inline explanation of custom extractors syntax. Version 2.0.6 ------------- - Fix hanging with certain rare (non-UTF8, non-ASCII msgids) PO files. Version 2.0.5 ------------- - [macOS] Fixed crashing bug on macOS. - [Windows] Improved HiDPI support. - Assorted bugfixes. Version 2.0.4 ------------- - Added support for Crowdin branches. - Poedit now remembers your pre-translation settings. Version 2.0.3 ------------- - Much faster loading and saving of large PO files. - Fixed frequent false positives in QA warnings for German, Japanese, Arabic and translations with reordered brackets. - Fixed issues with suggestions not showing up in the sidebar if the user had an unusually tall editing area set up. - Fixed assert when opening a PO file on Linux. Version 2.0.2 ------------- - Unusual whitespace (2+ spaces) in the middle of strings is now highlighted. - Strings with warnings are now put at the top together with errors. - Fixed crash when clicking on an item with plurals in a POT file. - Added --line command line argument to open a file at specified item. Version 2.0.1 ------------- - Restored compatibility with Zend Framework and its .phtml extension. - Fixed keyboard navigation between plurals. - Fixed false positives in punctuation warnings (quotes, Chinese). - [Linux] Mostly fixed compatibility with wxGTK 3.0.2. - [macOS] Fixed crash with Vietnamese input method. - [Windows] Fixed disappearing menu with HiDPI >200% zoom. - [Windows] Fixed settings-related crash. - [Windows] Fixed Ctrl+A handling. IMPORTANT NOTE TO DISTRIBUTION MAINTAINERS: Poedit is affected by a bug in wxGTK 3.0.2 that cannot be worked around in user code, requiring this patch to wxGTK to be applied: https://github.com/wxWidgets/wxWidgets/commit/ed88188be7e97a0503f3471f7b0452740b732902 Version 2.0 ----------- - Revamped user interface. - Syntax highlighting for markup and special characters. - Warnings are now shown for common translation mistakes. - More robust pre-translation (previous "Fill missing translations from TM"). - "Fuzzy" was renamed "Needs work" thorough to be more accessible to gettext non-experts. - xgettext invocation can now be customized on per-file basis. - Files opened from Crowdin now auto-sync on save. - New Linux icon. - Many small improvements all over. Version 1.8.12 -------------- - Fixed previous msgid display. - Fixed Find to correctly highlight text with "whole words only" enabled. - [Windows] Fixed to accelerators and suggestions interaction with selection. - Poedit now passes --previous to msgmerge. Version 1.8.11 -------------- - [macOS] Fixed opening files by double-clicking them in Finder. - Fixed handling of sr_RS locale. Version 1.8.10 -------------- - Added support for X-Source-Language header. - [macOS] Improved macOS Sierra compatibility. - [Windows] Fixed Open in Editor button that didn't work in some cases. - [UNIX] Added AppData file. Version 1.8.9 ------------- - [Windows] Use IE proxy settings. - Start searches from the current position, not beginning of the file. - Updated bundled gettext to 0.19.8.1. - More fixes for right-to-left languages. Version 1.8.8 ------------- - Greatly reduced UI flicker on Windows plus other visual improvements on Windows 10. - Multiple fixes to Poedit’s interface in right-to-left languages. - Don't leave directional marks in translated text if there's a LTR/RTL mismatch. - Assorted small fixes. Version 1.8.7 ------------- - Added Copy From Singular operation and Next/Prev Plural Form navigation shortcuts. - Translation errors are now properly translated. - Fixed default Turkish plural form. - Fixed a bug where a perfect match wouldn't be found in the TM in some rare cases. - Updated bundled gettext to 0.19.7 (added appdata.xml and ITS support). - Assorted bugfixes. Version 1.8.6 ------------- - Fix properties window on OS X 10.9 and older. - Fix visual flicker when quickly scrolling through a file with arrow keys. - [OS X] Fix rare exception when pasting text. - Fix file width autodetection when long comments were present. - Disable Find next/prev menu items properly. Version 1.8.5 ------------- - Improved setting and handling of source paths. - Implement gzip support in Crowdin API client. - Assorted fixes. Version 1.8.4 ------------- - Fixed bug in handling POTs with plural forms introduced in 1.8.3. Version 1.8.3 ------------- - Fixed Last-Translator error when creating a new translation from existing POT. - Fixed bogus "Sources not available" error for single files setups. - Fixed TM error reporting to prevent rendering the entire UI mostly unusable. Version 1.8.2 ------------- - text editor now ensures that trailing newlines are present only if they also exist in the source text - fix HTML export error on Windows - automatically fix some bad paths settings in PO files - improved source language detection - fix incorrect timezone of PO-Revision-Date in some cases - use the user's default browser for Crowdin authentication on all platforms (wxWebView no longer required as a dependency when building on Linux) 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 ------------- - strip whitespace in extractor definitions resulting from copy & paste Version 1.7.6 ------------- - fix handling of multiple displays - [Windows] fix "file couldn't be formatted nicely" problems with files in directories with (some) Unicode names Version 1.7.5 ------------- - fix scrolling to the top when saving a file; focus should be preserved now - fix disabling of extractors in preferences (oops) - [Windows, OS X] improve resilience of the TM to power loss Version 1.7.4 ------------- - size of the bottom editing part is now remembered correctly again - [GTK+] fix broken Edit->Copy/Cut/Paste - [OS X] fix stray BOM marks appearing on suggestions in some cases - [OS X] fix Brazilian Portuguese localization not being used - [OS X] fix sandbox permission window with unusual source paths setting - [Windows] HiDPI support Version 1.7.3 ------------- - it is now possible to disable unwanted extractors in preferences - source paths in catalog properties can now include individual files - exclusion paths in catalog properties can now use wildcards (e.g. *.js, now default for WordPress) - "Consult TM when updating from sources" now includes only "good" matches (with at least 75% score) - fix losing of the editing position when saving a file - fix Preferences layout in Japanese and Chinese translations - Windows: fix custom font setting after using a suggestion or copying from source text (there was no version 1.7.2) Version 1.7.1 ------------- - fix menu shortcuts problem in Polish localization Version 1.7 ----------- - reworked preferences - support for extraction from JavaScript (and more) sources - suggestions and other relevant information (comments etc.) are now much easier to access in a unified sidebar - syntax highlighting of special characters in translations - added Group by Context sorting option - implemented multiple selection - formatting of PO files can now be customized - added support for msgmerge --no-fuzzy-matching Version 1.6.10 -------------- - multiple fixes to parsing of the Language header - fix handling of broken POTs with duplicate headers - improved robustness of the Lucene TM database - misc small fixes - translations updates and fixes Version 1.6.9 ------------- - fixes to handling of RTL translations - fix editing-related crashes under wxGTK - translations updates Version 1.6.8 ------------- - fix parsing of obsolete entries in PO files - improved spellchecker handling on OS X and Windows - misc fixes - translations updates Version 1.6.7 ------------- - better handle "fatal" (but not really) msgfmt errors - OS X: fix OS X 10.7 compatibility - OS X/Win: update bundled Gettext to 0.19.2 - translations updates Version 1.6.6 ------------- - added exclusion paths support to updating from sources - spellchecking is now supported on Windows 8+ - STL version of wxWidgets is no longer required to build on Unix - update Windows and OS X builds to GNU gettext 0.19 - misc fixes - translations updates Version 1.6.5 ------------- - assorted small bugfixes Version 1.6.4 ------------- - translation memory tuning - Unix: restore compatibility with GTK+ 2 - misc fixes - minor UI improvements (better wording etc.) - OS X: misc fixes for Mavericks compatibility - OS X/Win: update bundled Gettext to 0.18.3.2 - translations updates Version 1.6.3 ------------- - fix invocation of external parser tools that need PATH - Unix: use XDG_CONFIG_HOME for dotfile location - OS X: fix conflict with Smart Quotes on Mavericks - translations updates Version 1.6.2 ------------- - fix TM failures with non-ASCII paths on Windows - add support for Zend Framework's .phtml - and support for WordPress' translators: comments - translations updates Version 1.6.1 ------------- - fixes to TM migration code - OS X: fixes for Retina displays Version 1.6 ----------- - improved languages handling (entering, sorting, plural forms expressions) - completely new translation memory implementation - assorted UI improvements - better build systems on OS X and Windows - OS X: minimum required version is 10.7; PPC builds are no longer supported Version 1.5.7 ------------- - fix incorrect --add-comments flag introduced in 1.5.6 Version 1.5.6 ------------- - fix several problems with the file viewer: better lookup of files, fix display of UTF-8 files, better detection of DOS-style paths - fix Find window's text field focus on OS X - add --add-comments=TRANSLATORS to xgettext call in default parsers - fix parsing of obsolete entries to recognize "#~|" - fix incorrect update stats when using msg contexts - translations updates Version 1.5.5 ------------- - fix crash when auto-updating translations with some TMs - fix file corruption when the catalog's charset was set to one that couldn't represent all of the text - translations updates Version 1.5.4 ------------- - fix display of source code (#472) - fix bug when saving file fails on permissions (#491) - fix Unix makefiles to install all icons (#493) - translations updates Version 1.5.3 ------------- - fixes to parsing of msgfmt errors - misc UI fixes - OS X: fixed crash when closing a document and opening another - fixed compatibility with OS X 10.5 Leopard - fixed problems with TM migration after upgrade - reverted removal of line numbers in 1.5.2 - reverted: the default is to compile MO files on save again - translations updates Version 1.5.2 ------------- - fixed crash when clearing the translation (#428, #468) - removed no longer needed line numbers from the UI - OS X: improved attention bar looks - translations updates Version 1.5.1 ------------- - Windows: fix missing libstdc++-6.dll - updated several translations Version 1.5 ----------- - show translation errors inline with the entries they relate to, instead of a confusing errors log when saving - implement full support for message contexts - replaced popups when Poedit is started for the first time with unobtrusive Firefox-style notifications - selecting suggested translation from right-click popup menu now correctly removes fuzzy flag from the translation - warn the user if Plural-Forms header is inconsistent with the number of plural translations in the catalog or if has syntax errors - correctly deduce catalog's language from filenames in the form of foo.LANG.po, as used by several large Open Source projects (#267) - Boost library is now required when compiling from sources - fixed the Find window so that it can be closed using the Esc key (#187) - positions of translation fields are now remembered correctly when Poedit window is maximized (#194) - added Edit->Clear translation command (Marcin Floryan) - removed View->Fullscreen view, it doesn't make sense in this kind of app - better application and document icons - removed the "Shaded translations list" option, it's now always enabled - misc minor UI improvements - fixed possible transaction memory database corruption (#337, #352) - added instructions on how to install additional spellchecker dictionaries - added sorting by different criteria (#256, #239) - improved source files viewer (#346) - included outdated documentation was replaced with online wiki docs (#343) - more keyboard navigation shortcuts - saving PO files no longer reformats source code references (#323); moreover, they are always formatted according to the default style used by GNU gettext tools (#348) - don't restore remembered window positions if they are outside currently available screens (#318) - changed Alt+ shortcuts to non-conflicting Ctrl+ ones: "Copy From Source Text" now uses Ctrl+B and "Translation Is Fuzzy" Ctrl+U - various UI improvements - added more translations: Bosnian translation (Kenan Dervisevic) Tajik (Victor Ibragimov) Kurdish Sorani (Asos Ap) Version 1.4.6 ------------- - OS X: fixed TM configuration tab to show languages list - fixed bug introduced in 1.4.3 that caused "Update from POT file" to clear metadata in catalog header (#355) - added Kazakh translation (Baurzhan Muftakhidinov) Version 1.4.5 ------------- - OS X: fixed Find to actually show hits in text control - OS X: fixed "Check for updates" preference broken by 1.4.4 Version 1.4.4 ------------- - sort catalogs in the manager alphabetically (#245) - fixed escaping of quotes in catalog headers (#290) - fixed reformatting of obsolete entries in catalogs (#329) - fixed list selection visibility on Windows 7 (#336) - Windows: automatically check for available updates Version 1.4.3 ------------- - Unix: fixed crash with Zemberek spell-checker backend installed (#276) - fixed parsing of catalogs produced with xgettext --indent (#189) - fixed TM updating broken in 1.3.5 (#294) - support GNOME's xml2po file references (#314) - fixed handling of "%" in filenames (#143) - added more translations: Vietnamese (Trần Ngá»c Quân) Uzbek (Oybek Djuraev) Version 1.4.2 ------------- - Unix: fixed Ctrl+Up/Down/PgUp/PgDn shortcuts when NumLock is on (#2006843) - OS X: fixed running Gettext tools when Poedit is in directory with spaces in its name (#2025823) - added Uyghur translation (Abduqadir Abliz) Version 1.4.1 ------------- - fixed HTML export to properly escape the text (#1739062) - remember last used search phrase in Find window (#1909847) - Windows: fixed text entry using AltGr on many European keyboards Version 1.4 ----------- - wxWidgets >= 2.8 is now required when compiling from sources - don't show comments windows by default to avoid confusion - OS X: fixed conflict with 10.5's Spaces - Command-arrows can now be used to navigate in the list control in addition to Ctrl-arrows - Windows, OS X: significantly faster updating of catalogs on multi-core machines (on Linux, some distributions included multi-threaded gettext, some don't) - fixed remaining problems with list selection - use more standard way of differentiating between different kinds of entries in the list (translated, fuzzy, new) by using font variants instead of different background colors (#1863332) - don't update PO-Revision-Date header if it's unused (#1900298) - Windows: common shortcuts like Ctrl-A or Ctrl-backspace now work - added Belarusian latin translation (Alaksandar Navicki) Version 1.3.9 ------------- - OS X: fixed corruption of first entry when opening catalog from manager Version 1.3.8 ------------- - OS X: fixed startup on computers that didn't have Poedit installed before - fixed translation status color indicator to work correctly in case of plural entries - changed the official spelling from "poEdit" to "Poedit" - preserve old msgid records (#| msgid "...") when saving - preserve deleted records when updating catalogs - preserve msgctxt entries in catalogs (#1680554) - OS X: Sparkle is now used for automatic updates - OS X: fixed spell checker to use catalog's language - fixed View->Display quotes setting broken in 1.3.7 - Windows: fixed crash when catalog update removes translations - added more translations: Irish (Seanán Ó Coistín) Version 1.3.7 ------------- - Windows: Windows 95/98 is no longer supported by the official binary - OS X: Poedit is now built as Universal binary - fixed the Preferences menu entry in catalogs manager - fixed to handle file references with Windows paths on Unix - fixed the "failed to convert to unicode" bug when saving (#1589744) - OS X: fixed clicking on PO files in Finder (#1583967) - fixed opening source files in external editor if the path contains spaces (#1743172) - Windows: fixed keyboard navigation in Find dialog (#1697743) - added more translations: Urdu (Muhammad Shakir Aziz) Version 1.3.6 ------------- - fixed failure to load correct catalogs without error message - fixed loading of X-Poedit-Language header (#1567018) - fixed loading of files in charsets other than UTF-8 (#1562780) - fixed shortcuts on Mac OS X to not use Alt+something Version 1.3.5 ------------- - fixed Content-Type header parsing (bug #1346495) - Unicode build of wxWidgets 2.6 is now required - fixed bug with entering numbers when using German translation (#1325590) - fixed broken layout on startup when showing comments window (#1313612) - initial Mac OS X port - fixed crash when loading some invalid PO files (#1495970) - fixed the Find window to not be on top of other apps' windows - install .desktop files and icons according to freedesktop.org standards - changed the icons to a combination of Tango Desktop Project and Silk icons - removed on-the-fly checking of catalog items, it's too buggy - added more translations: Macedonian (Jovan Kostovski) Arabic (Mohammed al zaid) Thai (Pun) Malay (Mahrazi Mohd Kamal) Version 1.3.4 ------------- - fixed crash when closing the application - fixed searching in catalogs (bug #1230857) - fixed restoring window size when maximized - fixed reading of files with trailing whitespace on lines - use standard accelerators for Close command - fixed "Copy original to translation field" to work on singular form entries in catalogs that contain plural forms - added Tatarish translation (Albert Fazli) Version 1.3.3 ------------- - added ability to create bookmarks (Olivier Sannier) - improved status icons (Olivier Sannier) - more robust parsing of catalog headers - saving into read-only file now fails as expected - fixed saving of gettext keywords with commas in them - added more translations: Galician (Leandro Regueiro) Indonesian (Bayu Artanto) Friulian (Andrea Decorte) Finnish (Keikki Suopanki) Version 1.3.2 ------------- - fixed bogus warnings when updating from a POT file - added "New catalog from POT file" feature - added ability to display automatic comments in the UI (Olivier Sannier) - translations manager now searches subdirectories as well (David Fraser) - the Find tool can now optionally search from current position instead of from the beginning of the catalog (Olivier Sannier) - fixed TM to not crash on catalogs with non-ASCII msgid values - fixed catalog parser to correctly preserve automatic comments with duplicate lines and to not ignore every second automatic comment (Olivier Sannier) - added ability to search comments (Olivier Sannier) - Poedit now preserves obsolete translations (Olivier Sannier) - added checking of input files' correctness - fixed parsing of "\\n" substrings in catalog headers - fixed compilation with wxWidgets >= 2.5.3 - fixed Find to search in all plural forms instead of only the first one - added "whole words only" option to Find tool (Olivier Sannier) - added default parsers for more programming languages supported by xgettext - Windows: fixed list control corruption when updated catalog had fewer items than before the update - added more translations: Korean (Hojin Choi) Hebrew (Nir Lavi) Kyrgyz (Ilyas Bakirov) Ukrainian (Cawko Xakep) Puerto Rico Spanish (Fernando Ortiz) Asturian (Softastur) Version 1.3.1 ------------- - fixed assertion failure when viewing source files in the builtin viewer - fixed wrong escaping of backslashes in X-Poedit-* headers - fixed parsing of references to filenames containing spaces (Shane Harper) - fixed crash with catalogs that have plural forms but no Plural-Forms header - fixed parsing of the line following last msgstr[i] entry (bug #1025211) - fixed controls layout when compiled against wxWidgets 2.4 Version 1.3.0 ------------- - plural forms support (based on patch by Christophe Hermier and Guido Flohr) - fixed catalog I/O to correctly handle automatic comments (Tim Dijkstra) - Windows: visual improvements to main window (Tim Kosse) - usability improvements - fixed storing of non-ASCII catalog headers - Poedit now preserves non-standard entries in PO file header - Poedit now respects c-format and no-c-format when checking tokens correctness - position in translations list is no longer lost when saving the file - configure now correctly detects libdb4 with versioned symbols - "Find" tool now selects matches in text controls (Sergio Talens-Oliag) - use msgfmt for tokens validation - double-clicking on invalid entry now pops up error description - Unix: use GNOME theme icons if they are installed on the system - Unix: use GtkSpell for spell checking (GTK+ 2 only) - Poedit no longer saves .po.poedit file, the headers were moved into custom X-Poedit-* fields in .po file header - added more translations: Punjabi (Amanpreet Singh Alam) Albanian (Besnik Bleta) Amharic (Tegegne Tefera) Hindi (Dhananjaya Sharma) Esperanto (Tim Morley) Belarusian (Siarhei) Breton (Korvigellou an Drouizig) Walloon (Pablo Saratxaga) Bangla (Omi Azad) Basque (3ARRANO Euskalgintza Taldea) Version 1.2.5 ------------- - added catalog export to HTML (Christophe Hermier) - fixed bug in displaying list entries in ANSI build introduced in 1.2.4 - fixed opening of source files specified using absolute path - Poedit now preserves fuzzy status if set after partially editing an entry - many fixes to comment window (Olivier Sannier) - comment window is now (optionally) editable (Olivier Sannier) - fixed preferences dialog if translation memory is not used (Olivier Sannier) - added printf() tokens validation (Frederic Giudicelli) (requires wxWidgets >= 2.5.1 in Unicode build) - added ability to specify source code charset other than US-ASCII (based on patch by Stefan Kowski) - added Mongolian translation (Mendbayar Bayar, Khurelbaatar Lkhagvasuren) Version 1.2.4 ------------- - added optional comment window to the bottom of main screen (based on patch by Olivier Sannier, still not fully functional) - added "Automatically translate using TM" operation to the Catalog menu - Windows: upgraded bundled gettext to 0.12.1 - fixed .po files parser to read files created by xgettext -i - added ability to customize fonts - Windows: added support for Delphi via dxgettext (http://dybdahl.dk/dxgettext/) - translation memory wizard fixes for multiple languages case - comments and msgid strings are stored using catalog's charset and are not limited to US-ASCII anymore (based on patch by Stefan Kowski) Version 1.2.3 ------------- - fixed compilation with Berkeley DB 4.1.25 - fixed disappearing catalog status information - fixed bug in redrawing overview list on startup - added more translations: Serbian (Bojan Suzic) Portuguese (Lazarus Long) Hungarian (Szilard Vizi) Lithuanian (Mantas Kriauciunas, Liudas Dmitrijevas, Kestutis Snieska, Ramunas Lukasevicius) Farsi (Abbas Izad) Afrikaans (Petri Jooste) Slovenian (Luka Marinko) Version 1.2.2 ------------- - Poedit now correctly differentiates between Traditional and Simplified Chinese - optimizations for better handling of catalogs with very large entries - Mac: compilation fixes for buggy gcc 3.1 snapshot used by MacOS X - added country metadata into catalog settings dialog - Windows: it is now possible to change UI language directly in Poedit - added catalog updating from POT files - more intuitive UI for translation memory creation - added more translations: partial Greek translation (Simos Xenitellis) Japanese (Masapon) Simplified Chinese (Leo Liaw) Russian (Pavel Maryanov) Norwegian BokmÃ¥l (Hans Fr. Nordhaug) Icelandic (Samúel Jón Gunnarsson) Brazilian Portuguese (Leonardo Peixoto) Spanish (Javier Bravo) Danish (Lars Dybdahl) Version 1.2.1 ------------- - Windows: Poedit window now accepts files dropped on it via drag'n'drop - added more translations: Georgian (Aiet Kolkhi) Romanian (Ovidiu Constantin) Catalan (Pau Bosch i Crespo) - reworked Traditional Chinese translation (Leo Liaw) - fixed bug when empty error text was shown if msgfmt reported error - moved "Shaded translations list" from preferences into the View menu - Windows: allow coexistence of multiple Poedit versions on same system Version 1.2.0 ------------- - fixed bug in catalog updater: didn't use default keywords if none specified - added a warning if no files were found during catalog update - fixed "Copy original to translation field" to do exact copy - added more translations: Tamil (Prabu Anand) Bulgarian (Dimitar Boyn) Swedish (Simon Bohlin) Slovak (Pavol Cvengros) - fixed Turkish translation (wrong catalog included by mistake) - Linux: RPMs are no longer provided in Mandrake and RedHat flavors, they were unified into single RPM (mdk menu support was _not_ lost by this) - fixed data loss when updating catalog with invalid entries - Windows: fixed toolbars look on Windows XP - Windows: the installer no longer requires Administrator privileges Version 1.1.10 -------------- - fix to "fixes to catalog charset handling" from 1.1.9 - Unix: configure now checks for db4 in addition to db and db3 - Windows: fixed launching Poedit via associations when long filenames were involved - added more translations: Polish (Arkadiusz Lipiec) Norwegian Nynorsk (Karl Ove Hufthammer) Turkish (Hakki Dogusan) Latvian (Artis Trops) Italian (Pino Toscano) Version 1.1.9 ------------- - fixes to catalog charset handling - Linux: added Mandrake RPM packages - added translations to more languages: Estonian (Joosep-Georg Jarvemaa) Dutch (Patrick Hubers) German (Bernd Böckmann) French (Lionel Allorge) Croatian (Mladen Mintakovic) Version 1.1.8 ------------- - fixes to editable list control Version 1.1.7 ------------- - fixed a bug that prevented direct opening of files in editor from working - fixed Find dialog (didn't select found entries in the list) - Poedit 1.1.6 package contained out-of-date resources.zip by mistake, this is fixed now - added an option to disable list rows shading - minor UI tweaks - added Chinese (zh_TW) translation (Ying-Chieh Liao) - several fixes related to handling of directory names with spaces - fixed launching Poedit with filename as the argument Version 1.1.6 ------------- - support for Windows XP native look & feel - Win32 version is now Unicode-enabled - fixes to the way multiline entries are stored in .po file - i18n support in the app itself (finally!) (so far only Czech translation is available, translators welcome!) - added an option to display .po file line numbers for catalog entries - fixed crash when browsing certain source files - added ability to open referred source files directly in the editor of choice instead of in built-in files viewer - Windows: fixed wrong placement of progress indicator in the status bar - Unix: man page is now installed - Unix: Poedit now links with libdb-3.x for x > 1, too - Linux: RPM package now comes in two favors: poedit and poedit-semistatic (the latter is statically linked against wxGTK and libdb) Version 1.1.5 ------------- - upgraded to link against any of libdb-3.{1,2,3} - Windows: fixed bug when editing entries in editable listbox control - updated ISO 639-1 table - visually improved listbox - Win32 binary package is now cross-compiled with Mingw32 - fixed Unix makefile to not attempt to install KDE and/or GNOME entries if you doesn't have necessary write permissions Version 1.1.4 ------------- - fixed bug in Search when looking for strings with non-ASCII characters in them - charset combobox in catalog settings now remember values Version 1.1.3 ------------- - added ability to edit comments - nicer icons by Dean S. Jones - new source code references browser - new keyboard navigation - various UI improvements and bugfixes - added catalogs manager for easier access to translator's files - updated documentation Version 1.1.2 ------------- - fixed incorrect update of TM database path setting from preferences dialog - fixed assertion failures with empty catalog files when right-clicking the list control - changed default TM DB path to something more sane under Windows - Windows: fixed directories traversal during TM update under Windows Version 1.1.1 ------------- - added support for semi-automatic translations using translation memory concept. Translation memory is an indexed database of all string-translation pairs found in the system, plus algorithm to retrieve similar strings from the database. Poedit can dig translations from PO, MO and RPM files. - implemented search - Poedit source code is now documented with Doxygen - Windows: HTML Help documentation now uses CSS and looks much better - better keyboard navigation Version 1.1.0 ------------- - support for UTF-8 - changes to make Poedit work correctly with gettext 0.10.37 - fixed default ISO charset names to be iso-8859-n instead of iso8859-n - new ability to save catalogs in all common CR/LF formats, plus an option to preserve file's format (default values: Unix and preserve) - added fullscreen mode Version 1.0.3 ------------- - fixed comments parsing bug (reported by Mattias Dahlberg) - Windows: fixed ugly blinking when resizing Poedit window Version 1.0.2 ------------- - Unix: fixed problem with localized versions of gettext - fixed Content-Transfer-Encoding header (was "8-bit" instead of "8bit") - fixed POT-Creation-Date and PO-Revision-Date date writing - better handling of \n: strings with \n in them are now both displayed and saved to .po file as multiline records - saving catalog now preserves comments - Unix: fixed dist makefile target Version 1.0.1 ------------- - fixed loading of catalogs with multiline msgid records - fixed assertion failure in parsers info saving if ~/.poedit did not exist [harmless, in debug builds only] - right-clicking list control now selects the item under cursor - Unix: fixed docs/Makefile.am to cd correctly - Unix: configure change: better check for wxWidgets - Linux: fixed RPM spec file - Unix: added integration with KDE and GNOME desktops Version 1.0.0 ------------- - initial release poedit-3.6.3/COPYING0000644000175100001660000000204615011674230007525 Copyright (c) 1999-2025 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. poedit-3.6.3/configure0000755000175100001660000116421715011674351010417 #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for poedit 3.6.3. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and help@poedit.net $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='poedit' PACKAGE_TARNAME='poedit' PACKAGE_VERSION='3.6.3' PACKAGE_STRING='poedit 3.6.3' PACKAGE_BUGREPORT='help@poedit.net' PACKAGE_URL='' ac_unique_file="net.poedit.Poedit.desktop" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_cxx_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS WX_CONFIG_WITH_ARGS CLD2_LIBS PUGIXML_LIBS PUGIXML_CFLAGS LUCENE_LIBS LUCENE_CFLAGS GTKSPELL_LIBS GTKSPELL_CFLAGS ICU_LIBS ICU_CFLAGS WXRC WX_VERSION_MICRO WX_VERSION_MINOR WX_VERSION_MAJOR WX_RESCOMP WX_VERSION WX_LIBS_STATIC WX_LIBS WX_CXXFLAGS_ONLY WX_CFLAGS_ONLY 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 BOOST_IOSTREAMS_LIB BOOST_THREAD_LIB BOOST_SYSTEM_LIB BOOST_LDFLAGS BOOST_CPPFLAGS HAVE_CXX17 CXXCPP am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC RANLIB LN_S MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V CSCOPE ETAGS CTAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode with_wxdir with_wx_config with_wx_prefix with_wx_exec_prefix enable_debug enable_dependency_tracking with_boost with_boost_libdir with_boost_system with_boost_thread with_cpprest with_boost_iostreams with_cld2 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CXX CXXFLAGS CCC CXXCPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR LIBSECRET_CFLAGS LIBSECRET_LIBS WXRC ICU_CFLAGS ICU_LIBS GTKSPELL_CFLAGS GTKSPELL_LIBS LUCENE_CFLAGS LUCENE_LIBS PUGIXML_CFLAGS PUGIXML_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # 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 3.6.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/poedit] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of poedit 3.6.3:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-debug Enable debug build --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-wxdir=PATH Use uninstalled version of wxWidgets in PATH --with-wx-config=CONFIG wx-config script to use (optional) --with-wx-prefix=PREFIX Prefix where wxWidgets is installed (optional) --with-wx-exec-prefix=PREFIX Exec prefix where wxWidgets is installed (optional) --with-boost[=ARG] use Boost library from a standard location (ARG=yes), from the specified location (ARG=), or disable it (ARG=no) [ARG=yes] --with-boost-libdir=LIB_DIR Force given directory for boost libraries. Note that this will override library path detection, so use this parameter only if default library detection fails and you know exactly where your boost libraries are located. --with-boost-system[=special-lib] use the System library from boost - it is possible to specify a certain library for the linker e.g. --with-boost-system=boost_system-gcc-mt --with-boost-thread[=special-lib] use the Thread library from boost - it is possible to specify a certain library for the linker e.g. --with-boost-thread=boost_thread-gcc-mt --without-cpprest Ignore presence of C++ REST SDK and disable it --with-boost-iostreams[=special-lib] use the IOStreams library from boost - it is possible to specify a certain library for the linker e.g. --with-boost-iostreams=boost_iostreams-gcc-mt-d-1_33_1 --without-cld2 Ignore presence of cld2 and disable it Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor 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 C compiler flags for GTKSPELL, overriding pkg-config GTKSPELL_LIBS linker flags for GTKSPELL, overriding pkg-config LUCENE_CFLAGS C compiler flags for LUCENE, overriding pkg-config LUCENE_LIBS linker flags for LUCENE, overriding pkg-config PUGIXML_CFLAGS C compiler flags for PUGIXML, overriding pkg-config PUGIXML_LIBS linker flags for PUGIXML, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF poedit configure 3.6.3 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" 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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" 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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" 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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext 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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. 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_link # 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop 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 $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_compile # ac_fn_cxx_check_func LINENO FUNC VAR # ------------------------------------ # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_cxx_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_func ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac 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 3.6.3, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " # Test code for whether the C++ compiler supports C++98 (global declarations) ac_cxx_conftest_cxx98_globals=' // Does the compiler advertise C++98 conformance? #if !defined __cplusplus || __cplusplus < 199711L # error "Compiler does not advertise C++98 conformance" #endif // These inclusions are to reject old compilers that // lack the unsuffixed header files. #include #include // and are *not* freestanding headers in C++98. extern void assert (int); namespace std { extern int strcmp (const char *, const char *); } // Namespaces, exceptions, and templates were all added after "C++ 2.0". using std::exception; using std::strcmp; namespace { void test_exception_syntax() { try { throw "test"; } catch (const char *s) { // Extra parentheses suppress a warning when building autoconf itself, // due to lint rules shared with more typical C programs. assert (!(strcmp) (s, "test")); } } template struct test_template { T const val; explicit test_template(T t) : val(t) {} template T add(U u) { return static_cast(u) + val; } }; } // anonymous namespace ' # Test code for whether the C++ compiler supports C++98 (body of main) ac_cxx_conftest_cxx98_main=' assert (argc); assert (! argv[0]); { test_exception_syntax (); test_template tt (2.0); assert (tt.add (4) == 6.0); assert (true && !false); } ' # Test code for whether the C++ compiler supports C++11 (global declarations) ac_cxx_conftest_cxx11_globals=' // Does the compiler advertise C++ 2011 conformance? #if !defined __cplusplus || __cplusplus < 201103L # error "Compiler does not advertise C++11 conformance" #endif namespace cxx11test { constexpr int get_val() { return 20; } struct testinit { int i; double d; }; class delegate { public: delegate(int n) : n(n) {} delegate(): delegate(2354) {} virtual int getval() { return this->n; }; protected: int n; }; class overridden : public delegate { public: overridden(int n): delegate(n) {} virtual int getval() override final { return this->n * 2; } }; class nocopy { public: nocopy(int i): i(i) {} nocopy() = default; nocopy(const nocopy&) = delete; nocopy & operator=(const nocopy&) = delete; private: int i; }; // for testing lambda expressions template Ret eval(Fn f, Ret v) { return f(v); } // for testing variadic templates and trailing return types template auto sum(V first) -> V { return first; } template auto sum(V first, Args... rest) -> V { return first + sum(rest...); } } ' # Test code for whether the C++ compiler supports C++11 (body of main) ac_cxx_conftest_cxx11_main=' { // Test auto and decltype auto a1 = 6538; auto a2 = 48573953.4; auto a3 = "String literal"; int total = 0; for (auto i = a3; *i; ++i) { total += *i; } decltype(a2) a4 = 34895.034; } { // Test constexpr short sa[cxx11test::get_val()] = { 0 }; } { // Test initializer lists cxx11test::testinit il = { 4323, 435234.23544 }; } { // Test range-based for int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; for (auto &x : array) { x += 23; } } { // Test lambda expressions using cxx11test::eval; assert (eval ([](int x) { return x*2; }, 21) == 42); double d = 2.0; assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); assert (d == 5.0); assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); assert (d == 5.0); } { // Test use of variadic templates using cxx11test::sum; auto a = sum(1); auto b = sum(1, 2); auto c = sum(1.0, 2.0, 3.0); } { // Test constructor delegation cxx11test::delegate d1; cxx11test::delegate d2(); cxx11test::delegate d3(45); } { // Test override and final cxx11test::overridden o1(55464); } { // Test nullptr char *c = nullptr; } { // Test template brackets test_template<::test_template> v(test_template(12)); } { // Unicode literals char const *utf8 = u8"UTF-8 string \u2500"; char16_t const *utf16 = u"UTF-8 string \u2500"; char32_t const *utf32 = U"UTF-32 string \u2500"; } ' # Test code for whether the C compiler supports C++11 (complete). ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} ${ac_cxx_conftest_cxx11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} ${ac_cxx_conftest_cxx11_main} return ok; } " # Test code for whether the C compiler supports C++98 (complete). ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} return ok; } " as_fn_append ac_header_cxx_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_cxx_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_cxx_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_cxx_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_cxx_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_cxx_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_cxx_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_cxx_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_cxx_list " unistd.h unistd_h HAVE_UNISTD_H" # Auxiliary files required by this configure script. ac_aux_files="compile missing install-sh config.guess config.sub" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}/admin" # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac am__api_version='1.16' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='poedit' VERSION='3.6.3' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test ${enable_maintainer_mode+y} then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else $as_nop USE_MAINTAINER_MODE=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' # Check whether --with-wxdir was given. if test ${with_wxdir+y} then : withval=$with_wxdir; wx_config_name="$withval/wx-config" wx_config_args="--inplace" fi # Check whether --with-wx-config was given. if test ${with_wx_config+y} then : withval=$with_wx_config; wx_config_name="$withval" fi # Check whether --with-wx-prefix was given. if test ${with_wx_prefix+y} then : withval=$with_wx_prefix; wx_config_prefix="$withval" else $as_nop wx_config_prefix="" fi # Check whether --with-wx-exec-prefix was given. if test ${with_wx_exec_prefix+y} then : withval=$with_wx_exec_prefix; wx_config_exec_prefix="$withval" else $as_nop wx_config_exec_prefix="" fi # Check whether --enable-debug was given. if test ${enable_debug+y} then : enableval=$enable_debug; USE_DEBUG="$enableval" else $as_nop USE_DEBUG="no" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for install location" >&5 printf %s "checking for install location... " >&6; } case "$prefix" in NONE) if test ${m_cv_prefix+y} then : printf %s "(cached) " >&6 else $as_nop m_cv_prefix=$ac_default_prefix fi ;; *) m_cv_prefix=$prefix ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $m_cv_prefix" >&5 printf "%s\n" "$m_cv_prefix" >&6; } case "$m_cv_prefix" in /*) ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --prefix=$prefix must be an absolute path name, using $ac_default_prefix" >&5 printf "%s\n" "$as_me: WARNING: --prefix=$prefix must be an absolute path name, using $ac_default_prefix" >&2;} m_cv_prefix=$ac_default_prefix esac prefix=$m_cv_prefix for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" 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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" 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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } 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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { 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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" 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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf "%s\n" "$CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf "%s\n" "$ac_ct_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" 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\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_prog_cxx_stdcxx=no if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } if test ${ac_cv_prog_cxx_cxx11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_cxx11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx11" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ac_prog_cxx_stdcxx=cxx11 fi fi if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } if test ${ac_cv_prog_cxx_cxx98+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_cxx98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx98_program _ACEOF for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx98" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx98" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx98" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ac_prog_cxx_stdcxx=cxx98 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CXX_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 printf %s "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test ${ac_cv_prog_CXXCPP+y} then : printf %s "(cached) " >&6 else $as_nop # Double quotes because $CXX needs to be expanded for CXXCPP in "$CXX -E" cpp /lib/cpp do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 printf "%s\n" "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ax_cxx_compile_alternatives="17 1z" ax_cxx_compile_cxx17_required=true ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_success=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++17 features by default" >&5 printf %s "checking whether $CXX supports C++17 features by default... " >&6; } if test ${ax_cv_cxx_compile_cxx17+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" // MSVC always sets __cplusplus to 199711L in older versions; newer versions // only set it correctly if /Zc:__cplusplus is specified as well as a // /std:c++NN switch: // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ #elif __cplusplus < 201103L && !defined _MSC_VER #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual ~Base() {} virtual void f() {} }; struct Derived : public Base { virtual ~Derived() override {} virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // 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 using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L // If the compiler admits that it is not ready for C++14, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201402L && !defined _MSC_VER #error "This is not a C++14 compiler" #else namespace cxx14 { namespace test_polymorphic_lambdas { int test() { const auto lambda = [](auto&&... args){ const auto istiny = [](auto x){ return (sizeof(x) == 1UL) ? 1 : 0; }; const int aretiny[] = { istiny(args)... }; return aretiny[0]; }; return lambda(1, 1L, 1.0f, '1'); } } namespace test_binary_literals { constexpr auto ivii = 0b0000000000101010; static_assert(ivii == 42, "wrong value"); } namespace test_generalized_constexpr { template < typename CharT > constexpr unsigned long strlen_c(const CharT *const s) noexcept { auto length = 0UL; for (auto p = s; *p; ++p) ++length; return length; } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("x") == 1UL, ""); static_assert(strlen_c("test") == 4UL, ""); static_assert(strlen_c("another\0test") == 7UL, ""); } namespace test_lambda_init_capture { int test() { auto x = 0; const auto lambda1 = [a = x](int b){ return a + b; }; const auto lambda2 = [a = lambda1(x)](){ return a; }; return lambda2(); } } namespace test_digit_separators { constexpr auto ten_million = 100'000'000; static_assert(ten_million == 100000000, ""); } namespace test_return_type_deduction { auto f(int& x) { return x; } decltype(auto) g(int& x) { return x; } template < typename T1, typename T2 > struct is_same { static constexpr auto value = false; }; template < typename T > struct is_same { static constexpr auto value = true; }; int test() { auto x = 0; static_assert(is_same::value, ""); static_assert(is_same::value, ""); return x; } } } // namespace cxx14 #endif // __cplusplus >= 201402L // If the compiler admits that it is not ready for C++17, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201703L && !defined _MSC_VER #error "This is not a C++17 compiler" #else #include #include #include namespace cxx17 { namespace test_constexpr_lambdas { constexpr int foo = [](){return 42;}(); } namespace test::nested_namespace::definitions { } namespace test_fold_expression { template int multiply(Args... args) { return (args * ... * 1); } template bool all(Args... args) { return (args && ...); } } namespace test_extended_static_assert { static_assert (true); } namespace test_auto_brace_init_list { auto foo = {5}; auto bar {5}; static_assert(std::is_same, decltype(foo)>::value); static_assert(std::is_same::value); } namespace test_typename_in_template_template_parameter { template typename X> struct D; } namespace test_fallthrough_nodiscard_maybe_unused_attributes { int f1() { return 42; } [[nodiscard]] int f2() { [[maybe_unused]] auto unused = f1(); switch (f1()) { case 17: f1(); [[fallthrough]]; case 42: f1(); } return f1(); } } namespace test_extended_aggregate_initialization { struct base1 { int b1, b2 = 42; }; struct base2 { base2() { b3 = 42; } int b3; }; struct derived : base1, base2 { int d; }; derived d1 {{1, 2}, {}, 4}; // full initialization derived d2 {{}, {}, 4}; // value-initialized bases } namespace test_general_range_based_for_loop { struct iter { int i; int& operator* () { return i; } const int& operator* () const { return i; } iter& operator++() { ++i; return *this; } }; struct sentinel { int i; }; bool operator== (const iter& i, const sentinel& s) { return i.i == s.i; } bool operator!= (const iter& i, const sentinel& s) { return !(i == s); } struct range { iter begin() const { return {0}; } sentinel end() const { return {5}; } }; void f() { range r {}; for (auto i : r) { [[maybe_unused]] auto v = i; } } } namespace test_lambda_capture_asterisk_this_by_value { struct t { int i; int foo() { return [*this]() { return i; }(); } }; } namespace test_enum_class_construction { enum class byte : unsigned char {}; byte foo {42}; } namespace test_constexpr_if { template int f () { if constexpr(cond) { return 13; } else { return 42; } } } namespace test_selection_statement_with_initializer { int f() { return 13; } int f2() { if (auto i = f(); i > 0) { return 3; } switch (auto i = f(); i + 4) { case 17: return 2; default: return 1; } } } namespace test_template_argument_deduction_for_class_templates { template struct pair { pair (T1 p1, T2 p2) : m1 {p1}, m2 {p2} {} T1 m1; T2 m2; }; void f() { [[maybe_unused]] auto p = pair{13, 42u}; } } namespace test_non_type_auto_template_parameters { template struct B {}; B<5> b1; B<'a'> b2; } namespace test_structured_bindings { int arr[2] = { 1, 2 }; std::pair pr = { 1, 2 }; auto f1() -> int(&)[2] { return arr; } auto f2() -> std::pair& { return pr; } struct S { int x1 : 2; volatile double y1; }; S f3() { return {}; } auto [ x1, y1 ] = f1(); auto& [ xr1, yr1 ] = f1(); auto [ x2, y2 ] = f2(); auto& [ xr2, yr2 ] = f2(); const auto [ x3, y3 ] = f3(); } namespace test_exception_spec_type_system { struct Good {}; struct Bad {}; void g1() noexcept; void g2(); template Bad f(T*, T*); template Good f(T1*, T2*); static_assert (std::is_same_v); } namespace test_inline_variables { template void f(T) {} template inline T g(T) { return T{}; } template<> inline void f<>(int) {} template<> int g<>(int) { return 5; } } } // namespace cxx17 #endif // __cplusplus < 201703L && !defined _MSC_VER _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ax_cv_cxx_compile_cxx17=yes else $as_nop ax_cv_cxx_compile_cxx17=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx17" >&5 printf "%s\n" "$ax_cv_cxx_compile_cxx17" >&6; } if test x$ax_cv_cxx_compile_cxx17 = xyes; then ac_success=yes fi if test x$ac_success = xno; then for alternative in ${ax_cxx_compile_alternatives}; do switch="-std=gnu++${alternative}" cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx17_$switch" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++17 features with $switch" >&5 printf %s "checking whether $CXX supports C++17 features with $switch... " >&6; } if eval test \${$cachevar+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_CXX="$CXX" CXX="$CXX $switch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" // MSVC always sets __cplusplus to 199711L in older versions; newer versions // only set it correctly if /Zc:__cplusplus is specified as well as a // /std:c++NN switch: // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ #elif __cplusplus < 201103L && !defined _MSC_VER #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual ~Base() {} virtual void f() {} }; struct Derived : public Base { virtual ~Derived() override {} virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // 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 using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L // If the compiler admits that it is not ready for C++14, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201402L && !defined _MSC_VER #error "This is not a C++14 compiler" #else namespace cxx14 { namespace test_polymorphic_lambdas { int test() { const auto lambda = [](auto&&... args){ const auto istiny = [](auto x){ return (sizeof(x) == 1UL) ? 1 : 0; }; const int aretiny[] = { istiny(args)... }; return aretiny[0]; }; return lambda(1, 1L, 1.0f, '1'); } } namespace test_binary_literals { constexpr auto ivii = 0b0000000000101010; static_assert(ivii == 42, "wrong value"); } namespace test_generalized_constexpr { template < typename CharT > constexpr unsigned long strlen_c(const CharT *const s) noexcept { auto length = 0UL; for (auto p = s; *p; ++p) ++length; return length; } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("x") == 1UL, ""); static_assert(strlen_c("test") == 4UL, ""); static_assert(strlen_c("another\0test") == 7UL, ""); } namespace test_lambda_init_capture { int test() { auto x = 0; const auto lambda1 = [a = x](int b){ return a + b; }; const auto lambda2 = [a = lambda1(x)](){ return a; }; return lambda2(); } } namespace test_digit_separators { constexpr auto ten_million = 100'000'000; static_assert(ten_million == 100000000, ""); } namespace test_return_type_deduction { auto f(int& x) { return x; } decltype(auto) g(int& x) { return x; } template < typename T1, typename T2 > struct is_same { static constexpr auto value = false; }; template < typename T > struct is_same { static constexpr auto value = true; }; int test() { auto x = 0; static_assert(is_same::value, ""); static_assert(is_same::value, ""); return x; } } } // namespace cxx14 #endif // __cplusplus >= 201402L // If the compiler admits that it is not ready for C++17, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201703L && !defined _MSC_VER #error "This is not a C++17 compiler" #else #include #include #include namespace cxx17 { namespace test_constexpr_lambdas { constexpr int foo = [](){return 42;}(); } namespace test::nested_namespace::definitions { } namespace test_fold_expression { template int multiply(Args... args) { return (args * ... * 1); } template bool all(Args... args) { return (args && ...); } } namespace test_extended_static_assert { static_assert (true); } namespace test_auto_brace_init_list { auto foo = {5}; auto bar {5}; static_assert(std::is_same, decltype(foo)>::value); static_assert(std::is_same::value); } namespace test_typename_in_template_template_parameter { template typename X> struct D; } namespace test_fallthrough_nodiscard_maybe_unused_attributes { int f1() { return 42; } [[nodiscard]] int f2() { [[maybe_unused]] auto unused = f1(); switch (f1()) { case 17: f1(); [[fallthrough]]; case 42: f1(); } return f1(); } } namespace test_extended_aggregate_initialization { struct base1 { int b1, b2 = 42; }; struct base2 { base2() { b3 = 42; } int b3; }; struct derived : base1, base2 { int d; }; derived d1 {{1, 2}, {}, 4}; // full initialization derived d2 {{}, {}, 4}; // value-initialized bases } namespace test_general_range_based_for_loop { struct iter { int i; int& operator* () { return i; } const int& operator* () const { return i; } iter& operator++() { ++i; return *this; } }; struct sentinel { int i; }; bool operator== (const iter& i, const sentinel& s) { return i.i == s.i; } bool operator!= (const iter& i, const sentinel& s) { return !(i == s); } struct range { iter begin() const { return {0}; } sentinel end() const { return {5}; } }; void f() { range r {}; for (auto i : r) { [[maybe_unused]] auto v = i; } } } namespace test_lambda_capture_asterisk_this_by_value { struct t { int i; int foo() { return [*this]() { return i; }(); } }; } namespace test_enum_class_construction { enum class byte : unsigned char {}; byte foo {42}; } namespace test_constexpr_if { template int f () { if constexpr(cond) { return 13; } else { return 42; } } } namespace test_selection_statement_with_initializer { int f() { return 13; } int f2() { if (auto i = f(); i > 0) { return 3; } switch (auto i = f(); i + 4) { case 17: return 2; default: return 1; } } } namespace test_template_argument_deduction_for_class_templates { template struct pair { pair (T1 p1, T2 p2) : m1 {p1}, m2 {p2} {} T1 m1; T2 m2; }; void f() { [[maybe_unused]] auto p = pair{13, 42u}; } } namespace test_non_type_auto_template_parameters { template struct B {}; B<5> b1; B<'a'> b2; } namespace test_structured_bindings { int arr[2] = { 1, 2 }; std::pair pr = { 1, 2 }; auto f1() -> int(&)[2] { return arr; } auto f2() -> std::pair& { return pr; } struct S { int x1 : 2; volatile double y1; }; S f3() { return {}; } auto [ x1, y1 ] = f1(); auto& [ xr1, yr1 ] = f1(); auto [ x2, y2 ] = f2(); auto& [ xr2, yr2 ] = f2(); const auto [ x3, y3 ] = f3(); } namespace test_exception_spec_type_system { struct Good {}; struct Bad {}; void g1() noexcept; void g2(); template Bad f(T*, T*); template Good f(T1*, T2*); static_assert (std::is_same_v); } namespace test_inline_variables { template void f(T) {} template inline T g(T) { return T{}; } template<> inline void f<>(int) {} template<> int g<>(int) { return 5; } } } // namespace cxx17 #endif // __cplusplus < 201703L && !defined _MSC_VER _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : eval $cachevar=yes else $as_nop eval $cachevar=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXX="$ac_save_CXX" fi eval ac_res=\$$cachevar { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done fi if test x$ac_success = xno; then for alternative in ${ax_cxx_compile_alternatives}; do for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}" MSVC; do if test x"$switch" = xMSVC; then switch=-std:c++${alternative} cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx17_${switch}_MSVC" | $as_tr_sh` else cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx17_$switch" | $as_tr_sh` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++17 features with $switch" >&5 printf %s "checking whether $CXX supports C++17 features with $switch... " >&6; } if eval test \${$cachevar+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_CXX="$CXX" CXX="$CXX $switch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" // MSVC always sets __cplusplus to 199711L in older versions; newer versions // only set it correctly if /Zc:__cplusplus is specified as well as a // /std:c++NN switch: // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ #elif __cplusplus < 201103L && !defined _MSC_VER #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual ~Base() {} virtual void f() {} }; struct Derived : public Base { virtual ~Derived() override {} virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // 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 using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L // If the compiler admits that it is not ready for C++14, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201402L && !defined _MSC_VER #error "This is not a C++14 compiler" #else namespace cxx14 { namespace test_polymorphic_lambdas { int test() { const auto lambda = [](auto&&... args){ const auto istiny = [](auto x){ return (sizeof(x) == 1UL) ? 1 : 0; }; const int aretiny[] = { istiny(args)... }; return aretiny[0]; }; return lambda(1, 1L, 1.0f, '1'); } } namespace test_binary_literals { constexpr auto ivii = 0b0000000000101010; static_assert(ivii == 42, "wrong value"); } namespace test_generalized_constexpr { template < typename CharT > constexpr unsigned long strlen_c(const CharT *const s) noexcept { auto length = 0UL; for (auto p = s; *p; ++p) ++length; return length; } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("x") == 1UL, ""); static_assert(strlen_c("test") == 4UL, ""); static_assert(strlen_c("another\0test") == 7UL, ""); } namespace test_lambda_init_capture { int test() { auto x = 0; const auto lambda1 = [a = x](int b){ return a + b; }; const auto lambda2 = [a = lambda1(x)](){ return a; }; return lambda2(); } } namespace test_digit_separators { constexpr auto ten_million = 100'000'000; static_assert(ten_million == 100000000, ""); } namespace test_return_type_deduction { auto f(int& x) { return x; } decltype(auto) g(int& x) { return x; } template < typename T1, typename T2 > struct is_same { static constexpr auto value = false; }; template < typename T > struct is_same { static constexpr auto value = true; }; int test() { auto x = 0; static_assert(is_same::value, ""); static_assert(is_same::value, ""); return x; } } } // namespace cxx14 #endif // __cplusplus >= 201402L // If the compiler admits that it is not ready for C++17, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201703L && !defined _MSC_VER #error "This is not a C++17 compiler" #else #include #include #include namespace cxx17 { namespace test_constexpr_lambdas { constexpr int foo = [](){return 42;}(); } namespace test::nested_namespace::definitions { } namespace test_fold_expression { template int multiply(Args... args) { return (args * ... * 1); } template bool all(Args... args) { return (args && ...); } } namespace test_extended_static_assert { static_assert (true); } namespace test_auto_brace_init_list { auto foo = {5}; auto bar {5}; static_assert(std::is_same, decltype(foo)>::value); static_assert(std::is_same::value); } namespace test_typename_in_template_template_parameter { template typename X> struct D; } namespace test_fallthrough_nodiscard_maybe_unused_attributes { int f1() { return 42; } [[nodiscard]] int f2() { [[maybe_unused]] auto unused = f1(); switch (f1()) { case 17: f1(); [[fallthrough]]; case 42: f1(); } return f1(); } } namespace test_extended_aggregate_initialization { struct base1 { int b1, b2 = 42; }; struct base2 { base2() { b3 = 42; } int b3; }; struct derived : base1, base2 { int d; }; derived d1 {{1, 2}, {}, 4}; // full initialization derived d2 {{}, {}, 4}; // value-initialized bases } namespace test_general_range_based_for_loop { struct iter { int i; int& operator* () { return i; } const int& operator* () const { return i; } iter& operator++() { ++i; return *this; } }; struct sentinel { int i; }; bool operator== (const iter& i, const sentinel& s) { return i.i == s.i; } bool operator!= (const iter& i, const sentinel& s) { return !(i == s); } struct range { iter begin() const { return {0}; } sentinel end() const { return {5}; } }; void f() { range r {}; for (auto i : r) { [[maybe_unused]] auto v = i; } } } namespace test_lambda_capture_asterisk_this_by_value { struct t { int i; int foo() { return [*this]() { return i; }(); } }; } namespace test_enum_class_construction { enum class byte : unsigned char {}; byte foo {42}; } namespace test_constexpr_if { template int f () { if constexpr(cond) { return 13; } else { return 42; } } } namespace test_selection_statement_with_initializer { int f() { return 13; } int f2() { if (auto i = f(); i > 0) { return 3; } switch (auto i = f(); i + 4) { case 17: return 2; default: return 1; } } } namespace test_template_argument_deduction_for_class_templates { template struct pair { pair (T1 p1, T2 p2) : m1 {p1}, m2 {p2} {} T1 m1; T2 m2; }; void f() { [[maybe_unused]] auto p = pair{13, 42u}; } } namespace test_non_type_auto_template_parameters { template struct B {}; B<5> b1; B<'a'> b2; } namespace test_structured_bindings { int arr[2] = { 1, 2 }; std::pair pr = { 1, 2 }; auto f1() -> int(&)[2] { return arr; } auto f2() -> std::pair& { return pr; } struct S { int x1 : 2; volatile double y1; }; S f3() { return {}; } auto [ x1, y1 ] = f1(); auto& [ xr1, yr1 ] = f1(); auto [ x2, y2 ] = f2(); auto& [ xr2, yr2 ] = f2(); const auto [ x3, y3 ] = f3(); } namespace test_exception_spec_type_system { struct Good {}; struct Bad {}; void g1() noexcept; void g2(); template Bad f(T*, T*); template Good f(T1*, T2*); static_assert (std::is_same_v); } namespace test_inline_variables { template void f(T) {} template inline T g(T) { return T{}; } template<> inline void f<>(int) {} template<> int g<>(int) { return 5; } } } // namespace cxx17 #endif // __cplusplus < 201703L && !defined _MSC_VER _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : eval $cachevar=yes else $as_nop eval $cachevar=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXX="$ac_save_CXX" fi eval ac_res=\$$cachevar { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done if test x$ac_success = xyes; then break fi done fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test x$ax_cxx_compile_cxx17_required = xtrue; then if test x$ac_success = xno; then as_fn_error $? "*** A compiler with support for C++17 language features is required." "$LINENO" 5 fi fi if test x$ac_success = xno; then HAVE_CXX17=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: No compiler with C++17 support was found" >&5 printf "%s\n" "$as_me: No compiler with C++17 support was found" >&6;} else HAVE_CXX17=1 printf "%s\n" "#define HAVE_CXX17 1" >>confdefs.h fi WXLIBS_USED="xrc,xml,webview,adv,core,net" case "$USE_DEBUG" in yes) DEBUG_FLAGS="-g -Wall -O0" ;; esac # Check whether --with-boost was given. if test ${with_boost+y} then : withval=$with_boost; case $withval in #( no) : want_boost="no";_AX_BOOST_BASE_boost_path="" ;; #( yes) : want_boost="yes";_AX_BOOST_BASE_boost_path="" ;; #( *) : want_boost="yes";_AX_BOOST_BASE_boost_path="$withval" ;; esac else $as_nop want_boost="yes" fi # Check whether --with-boost-libdir was given. if test ${with_boost_libdir+y} then : withval=$with_boost_libdir; if test -d "$withval" then : _AX_BOOST_BASE_boost_lib_path="$withval" else $as_nop as_fn_error $? "--with-boost-libdir expected directory name" "$LINENO" 5 fi else $as_nop _AX_BOOST_BASE_boost_lib_path="" fi BOOST_LDFLAGS="" BOOST_CPPFLAGS="" if test "x$want_boost" = "xyes" then : if test "x1.60" = "x" then : _AX_BOOST_BASE_TONUMERICVERSION_req="1.20.0" else $as_nop _AX_BOOST_BASE_TONUMERICVERSION_req="1.60" fi _AX_BOOST_BASE_TONUMERICVERSION_req_shorten=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([0-9]*\.[0-9]*\)'` _AX_BOOST_BASE_TONUMERICVERSION_req_major=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([0-9]*\)'` if test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_major" = "x" then : as_fn_error $? "You should at least specify libboost major version" "$LINENO" 5 fi _AX_BOOST_BASE_TONUMERICVERSION_req_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[0-9]*\.\([0-9]*\)'` if test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_minor" = "x" then : _AX_BOOST_BASE_TONUMERICVERSION_req_minor="0" fi _AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[0-9]*\.[0-9]*\.\([0-9]*\)'` if test "X$_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor" = "X" then : _AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor="0" fi _AX_BOOST_BASE_TONUMERICVERSION_RET=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req_major \* 100000 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_minor \* 100 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor` WANT_BOOST_VERSION=$_AX_BOOST_BASE_TONUMERICVERSION_RET succeeded=no case ${host_cpu} in #( x86_64) : libsubdirs="lib64 libx32 lib lib64" ;; #( ppc64|powerpc64|s390x|sparc64|aarch64|ppc64le|powerpc64le|riscv64) : libsubdirs="lib64 lib lib64" ;; #( *) : libsubdirs="lib" ;; esac case ${host_cpu} in #( i?86) : multiarch_libsubdir="lib/i386-${host_os}" ;; #( *) : multiarch_libsubdir="lib/${host_cpu}-${host_os}" ;; esac if test "x$_AX_BOOST_BASE_boost_path" != "x" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for boostlib >= 1.60 ($WANT_BOOST_VERSION) includes in \"$_AX_BOOST_BASE_boost_path/include\"" >&5 printf %s "checking for boostlib >= 1.60 ($WANT_BOOST_VERSION) includes in \"$_AX_BOOST_BASE_boost_path/include\"... " >&6; } if test -d "$_AX_BOOST_BASE_boost_path/include" && test -r "$_AX_BOOST_BASE_boost_path/include" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include" for _AX_BOOST_BASE_boost_path_tmp in $multiarch_libsubdir $libsubdirs; do { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for boostlib >= 1.60 ($WANT_BOOST_VERSION) lib path in \"$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp\"" >&5 printf %s "checking for boostlib >= 1.60 ($WANT_BOOST_VERSION) lib path in \"$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp\"... " >&6; } if test -d "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" && test -r "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp"; break; else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi done else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else $as_nop if test X"$cross_compiling" = Xyes; then search_libsubdirs=$multiarch_libsubdir else search_libsubdirs="$multiarch_libsubdir $libsubdirs" fi for _AX_BOOST_BASE_boost_path_tmp in /usr /usr/local /opt /opt/local ; do if test -d "$_AX_BOOST_BASE_boost_path_tmp/include/boost" && test -r "$_AX_BOOST_BASE_boost_path_tmp/include/boost" ; then for libsubdir in $search_libsubdirs ; do if ls "$_AX_BOOST_BASE_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi done BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path_tmp/$libsubdir" BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path_tmp/include" break; fi done fi if test "x$_AX_BOOST_BASE_boost_lib_path" != "x" then : BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_lib_path" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for boostlib >= 1.60 ($WANT_BOOST_VERSION)" >&5 printf %s "checking for boostlib >= 1.60 ($WANT_BOOST_VERSION)... " >&6; } CPPFLAGS_SAVED="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS_SAVED="$LDFLAGS" LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { (void) ((void)sizeof(char[1 - 2*!!((BOOST_VERSION) < ($WANT_BOOST_VERSION))])); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } succeeded=yes found_system=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "x$succeeded" != "xyes" ; then CPPFLAGS="$CPPFLAGS_SAVED" LDFLAGS="$LDFLAGS_SAVED" BOOST_CPPFLAGS= if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then BOOST_LDFLAGS= fi _version=0 if test -n "$_AX_BOOST_BASE_boost_path" ; then if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path"; then for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do _version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'` V_CHECK=`expr $_version_tmp \> $_version` if test "x$V_CHECK" = "x1" ; then _version=$_version_tmp fi VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'` BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include/boost-$VERSION_UNDERSCORE" done if test -z "$BOOST_CPPFLAGS"; then if test -d "$_AX_BOOST_BASE_boost_path/boost" && test -r "$_AX_BOOST_BASE_boost_path/boost"; then BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path" fi fi if test -n "$BOOST_CPPFLAGS" && test -z "$BOOST_LDFLAGS"; then for libsubdir in $libsubdirs ; do if ls "$_AX_BOOST_BASE_boost_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi done BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$libsubdir" fi fi else if test "x$cross_compiling" != "xyes" ; then for _AX_BOOST_BASE_boost_path in /usr /usr/local /opt /opt/local ; do if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path" ; then for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do _version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'` V_CHECK=`expr $_version_tmp \> $_version` if test "x$V_CHECK" = "x1" ; then _version=$_version_tmp best_path=$_AX_BOOST_BASE_boost_path fi done fi done VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'` BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE" if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then for libsubdir in $libsubdirs ; do if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi done BOOST_LDFLAGS="-L$best_path/$libsubdir" fi fi if test -n "$BOOST_ROOT" ; then for libsubdir in $libsubdirs ; do if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi done if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'` stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'` stage_version_shorten=`expr $stage_version : '\([0-9]*\.[0-9]*\)'` V_CHECK=`expr $stage_version_shorten \>\= $_version` if test "x$V_CHECK" = "x1" && test -z "$_AX_BOOST_BASE_boost_lib_path" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: We will use a staged boost library from $BOOST_ROOT" >&5 printf "%s\n" "$as_me: We will use a staged boost library from $BOOST_ROOT" >&6;} BOOST_CPPFLAGS="-I$BOOST_ROOT" BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir" fi fi fi fi CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { (void) ((void)sizeof(char[1 - 2*!!((BOOST_VERSION) < ($WANT_BOOST_VERSION))])); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } succeeded=yes found_system=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi if test "x$succeeded" != "xyes" ; then if test "x$_version" = "x0" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: We could not detect the boost libraries (version 1.60 or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in . See http://randspringer.de/boost for more documentation." >&5 printf "%s\n" "$as_me: We could not detect the boost libraries (version 1.60 or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in . See http://randspringer.de/boost for more documentation." >&6;} else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Your boost libraries seems to old (version $_version)." >&5 printf "%s\n" "$as_me: Your boost libraries seems to old (version $_version)." >&6;} fi # execute ACTION-IF-NOT-FOUND (if present): as_fn_error $? "Boost libraries are required" "$LINENO" 5 else printf "%s\n" "#define HAVE_BOOST /**/" >>confdefs.h # execute ACTION-IF-FOUND (if present): : fi CPPFLAGS="$CPPFLAGS_SAVED" LDFLAGS="$LDFLAGS_SAVED" fi # Check whether --with-boost-system was given. if test ${with_boost_system+y} then : withval=$with_boost_system; if test "$withval" = "no"; then want_boost="no" elif test "$withval" = "yes"; then want_boost="yes" ax_boost_user_system_lib="" else want_boost="yes" ax_boost_user_system_lib="$withval" fi else $as_nop want_boost="yes" fi if test "x$want_boost" = "xyes"; then CPPFLAGS_SAVED="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS_SAVED="$LDFLAGS" LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the Boost::System library is available" >&5 printf %s "checking whether the Boost::System library is available... " >&6; } if test ${ax_cv_boost_system+y} then : printf %s "(cached) " >&6 else $as_nop ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CXXFLAGS_SAVE=$CXXFLAGS CXXFLAGS= cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { boost::system::error_category *a = 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ax_cv_boost_system=yes else $as_nop ax_cv_boost_system=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXXFLAGS=$CXXFLAGS_SAVE ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_system" >&5 printf "%s\n" "$ax_cv_boost_system" >&6; } if test "x$ax_cv_boost_system" = "xyes"; then printf "%s\n" "#define HAVE_BOOST_SYSTEM /**/" >>confdefs.h BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'` LDFLAGS_SAVE=$LDFLAGS if test "x$ax_boost_user_system_lib" = "x"; then for libextension in `ls -r $BOOSTLIBDIR/libboost_system* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'` ; do ax_lib=${libextension} as_ac_Lib=`printf "%s\n" "ac_cv_lib_$ax_lib""_exit" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5 printf %s "checking for exit in -l$ax_lib... " >&6; } if eval test \${$as_ac_Lib+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-l$ax_lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ namespace conftest { extern "C" int exit (); } int main (void) { return conftest::exit (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : eval "$as_ac_Lib=yes" else $as_nop eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : BOOST_SYSTEM_LIB="-l$ax_lib"; link_system="yes"; break else $as_nop link_system="no" fi done if test "x$link_system" != "xyes"; then for libextension in `ls -r $BOOSTLIBDIR/boost_system* 2>/dev/null | sed 's,.*/,,' | sed -e 's,\..*,,'` ; do ax_lib=${libextension} as_ac_Lib=`printf "%s\n" "ac_cv_lib_$ax_lib""_exit" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5 printf %s "checking for exit in -l$ax_lib... " >&6; } if eval test \${$as_ac_Lib+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-l$ax_lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ namespace conftest { extern "C" int exit (); } int main (void) { return conftest::exit (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : eval "$as_ac_Lib=yes" else $as_nop eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : BOOST_SYSTEM_LIB="-l$ax_lib"; link_system="yes"; break else $as_nop link_system="no" fi done fi else for ax_lib in $ax_boost_user_system_lib boost_system-$ax_boost_user_system_lib; do as_ac_Lib=`printf "%s\n" "ac_cv_lib_$ax_lib""_exit" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5 printf %s "checking for exit in -l$ax_lib... " >&6; } if eval test \${$as_ac_Lib+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-l$ax_lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ namespace conftest { extern "C" int exit (); } int main (void) { return conftest::exit (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : eval "$as_ac_Lib=yes" else $as_nop eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : BOOST_SYSTEM_LIB="-l$ax_lib"; link_system="yes"; break else $as_nop link_system="no" fi done fi if test "x$ax_lib" = "x"; then as_fn_error $? "Could not find a version of the library!" "$LINENO" 5 fi if test "x$link_system" = "xno"; then as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5 fi fi CPPFLAGS="$CPPFLAGS_SAVED" LDFLAGS="$LDFLAGS_SAVED" fi # Check whether --with-boost-thread was given. if test ${with_boost_thread+y} then : withval=$with_boost_thread; if test "$withval" = "yes"; then want_boost="yes" ax_boost_user_thread_lib="" else want_boost="yes" ax_boost_user_thread_lib="$withval" fi else $as_nop want_boost="yes" fi if test "x$want_boost" = "xyes"; then CPPFLAGS_SAVED="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS_SAVED="$LDFLAGS" LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the Boost::Thread library is available" >&5 printf %s "checking whether the Boost::Thread library is available... " >&6; } if test ${ax_cv_boost_thread+y} then : printf %s "(cached) " >&6 else $as_nop ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CXXFLAGS_SAVE=$CXXFLAGS if test "x$host_os" = "xsolaris" ; then CXXFLAGS="-pthreads $CXXFLAGS" elif test "x$host_os" = "xmingw32" ; then CXXFLAGS="-mthreads $CXXFLAGS" else CXXFLAGS="-pthread $CXXFLAGS" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { boost::thread_group thrds; return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ax_cv_boost_thread=yes else $as_nop ax_cv_boost_thread=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXXFLAGS=$CXXFLAGS_SAVE ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_thread" >&5 printf "%s\n" "$ax_cv_boost_thread" >&6; } if test "x$ax_cv_boost_thread" = "xyes"; then if test "x$host_os" = "xsolaris" ; then BOOST_CPPFLAGS="-pthreads $BOOST_CPPFLAGS" elif test "x$host_os" = "xmingw32" ; then BOOST_CPPFLAGS="-mthreads $BOOST_CPPFLAGS" else BOOST_CPPFLAGS="-pthread $BOOST_CPPFLAGS" fi printf "%s\n" "#define HAVE_BOOST_THREAD /**/" >>confdefs.h BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'` LDFLAGS_SAVE=$LDFLAGS case "x$host_os" in *bsd* ) LDFLAGS="-pthread $LDFLAGS" break; ;; esac if test "x$ax_boost_user_thread_lib" = "x"; then for libextension in `ls -r $BOOSTLIBDIR/libboost_thread* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'`; do ax_lib=${libextension} as_ac_Lib=`printf "%s\n" "ac_cv_lib_$ax_lib""_exit" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5 printf %s "checking for exit in -l$ax_lib... " >&6; } if eval test \${$as_ac_Lib+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-l$ax_lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ namespace conftest { extern "C" int exit (); } int main (void) { return conftest::exit (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : eval "$as_ac_Lib=yes" else $as_nop eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : link_thread="yes"; break else $as_nop link_thread="no" fi done if test "x$link_thread" != "xyes"; then for libextension in `ls -r $BOOSTLIBDIR/boost_thread* 2>/dev/null | sed 's,.*/,,' | sed 's,\..*,,'`; do ax_lib=${libextension} as_ac_Lib=`printf "%s\n" "ac_cv_lib_$ax_lib""_exit" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5 printf %s "checking for exit in -l$ax_lib... " >&6; } if eval test \${$as_ac_Lib+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-l$ax_lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ namespace conftest { extern "C" int exit (); } int main (void) { return conftest::exit (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : eval "$as_ac_Lib=yes" else $as_nop eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : link_thread="yes"; break else $as_nop link_thread="no" fi done fi else for ax_lib in $ax_boost_user_thread_lib boost_thread-$ax_boost_user_thread_lib; do as_ac_Lib=`printf "%s\n" "ac_cv_lib_$ax_lib""_exit" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5 printf %s "checking for exit in -l$ax_lib... " >&6; } if eval test \${$as_ac_Lib+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-l$ax_lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ namespace conftest { extern "C" int exit (); } int main (void) { return conftest::exit (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : eval "$as_ac_Lib=yes" else $as_nop eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : link_thread="yes"; break else $as_nop link_thread="no" fi done fi if test "x$ax_lib" = "x"; then as_fn_error $? "Could not find a version of the library!" "$LINENO" 5 fi if test "x$link_thread" = "xno"; then as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5 else BOOST_THREAD_LIB="-l$ax_lib" case "x$host_os" in *bsd* ) BOOST_LDFLAGS="-pthread $BOOST_LDFLAGS" break; ;; xsolaris ) BOOST_THREAD_LIB="$BOOST_THREAD_LIB -lpthread" break; ;; xmingw32 ) break; ;; * ) BOOST_THREAD_LIB="$BOOST_THREAD_LIB -lpthread" break; ;; esac fi fi CPPFLAGS="$CPPFLAGS_SAVED" LDFLAGS="$LDFLAGS_SAVED" fi CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS" # Check whether --with-cpprest was given. if test ${with_cpprest+y} then : withval=$with_cpprest; fi ac_header= ac_cache= for ac_item in $ac_header_cxx_list do if test $ac_cache; then ac_fn_cxx_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi if test "x$with_cpprest" != "xno" then : # Check whether --with-boost-iostreams was given. if test ${with_boost_iostreams+y} then : withval=$with_boost_iostreams; if test "$withval" = "no"; then want_boost="no" elif test "$withval" = "yes"; then want_boost="yes" ax_boost_user_iostreams_lib="" else want_boost="yes" ax_boost_user_iostreams_lib="$withval" fi else $as_nop want_boost="yes" fi if test "x$want_boost" = "xyes"; then CPPFLAGS_SAVED="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" export CPPFLAGS LDFLAGS_SAVED="$LDFLAGS" LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" export LDFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the Boost::IOStreams library is available" >&5 printf %s "checking whether the Boost::IOStreams library is available... " >&6; } if test ${ax_cv_boost_iostreams+y} then : printf %s "(cached) " >&6 else $as_nop ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { std::string input = "Hello World!"; namespace io = boost::iostreams; io::filtering_istream in(boost::make_iterator_range(input)); return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ax_cv_boost_iostreams=yes else $as_nop ax_cv_boost_iostreams=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_boost_iostreams" >&5 printf "%s\n" "$ax_cv_boost_iostreams" >&6; } if test "x$ax_cv_boost_iostreams" = "xyes"; then printf "%s\n" "#define HAVE_BOOST_IOSTREAMS /**/" >>confdefs.h BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/[^\/]*//'` if test "x$ax_boost_user_iostreams_lib" = "x"; then for libextension in `ls $BOOSTLIBDIR/libboost_iostreams*.so* $BOOSTLIBDIR/libboost_iostream*.dylib* $BOOSTLIBDIR/libboost_iostreams*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_iostreams.*\)\.so.*$;\1;' -e 's;^lib\(boost_iostream.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_iostreams.*\)\.a.*$;\1;'` ; do ax_lib=${libextension} as_ac_Lib=`printf "%s\n" "ac_cv_lib_$ax_lib""_exit" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5 printf %s "checking for exit in -l$ax_lib... " >&6; } if eval test \${$as_ac_Lib+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-l$ax_lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ namespace conftest { extern "C" int exit (); } int main (void) { return conftest::exit (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : eval "$as_ac_Lib=yes" else $as_nop eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : BOOST_IOSTREAMS_LIB="-l$ax_lib"; link_iostreams="yes"; break else $as_nop link_iostreams="no" fi done if test "x$link_iostreams" != "xyes"; then for libextension in `ls $BOOSTLIBDIR/boost_iostreams*.dll* $BOOSTLIBDIR/boost_iostreams*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_iostreams.*\)\.dll.*$;\1;' -e 's;^\(boost_iostreams.*\)\.a.*$;\1;'` ; do ax_lib=${libextension} as_ac_Lib=`printf "%s\n" "ac_cv_lib_$ax_lib""_exit" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for exit in -l$ax_lib" >&5 printf %s "checking for exit in -l$ax_lib... " >&6; } if eval test \${$as_ac_Lib+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-l$ax_lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ namespace conftest { extern "C" int exit (); } int main (void) { return conftest::exit (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : eval "$as_ac_Lib=yes" else $as_nop eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : BOOST_IOSTREAMS_LIB="-l$ax_lib"; link_iostreams="yes"; break else $as_nop link_iostreams="no" fi done fi else for ax_lib in $ax_boost_user_iostreams_lib boost_iostreams-$ax_boost_user_iostreams_lib; do as_ac_Lib=`printf "%s\n" "ac_cv_lib_$ax_lib""_main" | $as_tr_sh` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -l$ax_lib" >&5 printf %s "checking for main in -l$ax_lib... " >&6; } if eval test \${$as_ac_Lib+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-l$ax_lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ namespace conftest { extern "C" int main (); } int main (void) { return conftest::main (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : eval "$as_ac_Lib=yes" else $as_nop eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes" then : BOOST_IOSTREAMS_LIB="-l$ax_lib"; link_iostreams="yes"; break else $as_nop link_iostreams="no" fi done fi if test "x$ax_lib" = "x"; then as_fn_error $? "Could not find a version of the library!" "$LINENO" 5 fi if test "x$link_iostreams" != "xyes"; then as_fn_error $? "Could not link against $ax_lib !" "$LINENO" 5 fi fi CPPFLAGS="$CPPFLAGS_SAVED" LDFLAGS="$LDFLAGS_SAVED" fi have_cpprest=no old_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $CXXFLAGS $BOOST_CPPFLAGS" for ac_header in cpprest/http_client.h do : ac_fn_cxx_check_header_compile "$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 : printf "%s\n" "#define HAVE_CPPREST_HTTP_CLIENT_H 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libcpprest >= 2.10.8" >&5 printf %s "checking for libcpprest >= 2.10.8... " >&6; } old_LIBS="$LIBS" LIBS="-lcpprest $BOOST_SYSTEM_LIB $BOOST_THREAD_LIB -lssl -lcrypto $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { #if CPPREST_VERSION < 201008 #error "cpprest >= 2.10.8 required" #endif web::http::client::http_client c(U("https://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.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$old_LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_cpprest" >&5 printf "%s\n" "$have_cpprest" >&6; } fi done CPPFLAGS="$old_CPPFLAGS" else $as_nop 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi if test "x$have_cpprest" = "xyes" then : printf "%s\n" "#define HAVE_HTTP_CLIENT 1" >>confdefs.h printf "%s\n" "#define HAVE_PPL 1" >>confdefs.h CPPREST_LIBS="-lcpprest $BOOST_IOSTREAMS_LIB $BOOST_THREAD_LIB $BOOST_SYSTEM_LIB -lssl -lcrypto" pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libsecret-1" >&5 printf %s "checking for libsecret-1... " >&6; } if test -n "$LIBSECRET_CFLAGS"; then pkg_cv_LIBSECRET_CFLAGS="$LIBSECRET_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsecret-1\""; } >&5 ($PKG_CONFIG --exists --print-errors "libsecret-1") 2>&5 ac_status=$? printf "%s\n" "$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" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsecret-1\""; } >&5 ($PKG_CONFIG --exists --print-errors "libsecret-1") 2>&5 ac_status=$? printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$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 . See \`config.log' for more details" "$LINENO" 5; } else LIBSECRET_CFLAGS=$pkg_cv_LIBSECRET_CFLAGS LIBSECRET_LIBS=$pkg_cv_LIBSECRET_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } CXXFLAGS="$CXXFLAGS $LIBSECRET_CFLAGS" fi else $as_nop 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 ac_fn_cxx_check_header_compile "$LINENO" "nlohmann/json.hpp" "ac_cv_header_nlohmann_json_hpp" "$ac_includes_default" if test "x$ac_cv_header_nlohmann_json_hpp" = xyes then : printf "%s\n" "#define HAVE_NLOHMANN_JSON_HPP 1" >>confdefs.h 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wx-config" >&5 printf %s "checking for wx-config... " >&6; } WX_CONFIG_PATH="$WX_CONFIG_NAME" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5 printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_WX_CONFIG_PATH+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_WX_CONFIG_PATH="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5 printf "%s\n" "$WX_CONFIG_PATH" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test "$WX_CONFIG_PATH" != "no" ; then WX_VERSION="" min_wx_version=3.2.4 if test -z "--unicode" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version" >&5 printf %s "checking for wxWidgets version >= $min_wx_version... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version (--unicode)" >&5 printf %s "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/'` wx_config_micro_version=`echo $WX_VERSION | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` wx_requested_major_version=`echo $min_wx_version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` wx_requested_minor_version=`echo $min_wx_version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` wx_requested_micro_version=`echo $min_wx_version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` wx_ver_ok="" if test "x$WX_VERSION" != x ; then if test $wx_config_major_version -gt $wx_requested_major_version; then wx_ver_ok=yes else if test $wx_config_major_version -eq $wx_requested_major_version; then if test $wx_config_minor_version -gt $wx_requested_minor_version; then wx_ver_ok=yes else if test $wx_config_minor_version -eq $wx_requested_minor_version; then if test $wx_config_micro_version -ge $wx_requested_micro_version; then wx_ver_ok=yes fi fi fi fi fi fi if test -n "$wx_ver_ok"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes (version $WX_VERSION)" >&5 printf "%s\n" "yes (version $WX_VERSION)" >&6; } wx_optional_libs="" wx_ver_ok="" if test "x$WX_VERSION" != x ; then if test $wx_config_major_version -gt 2; then wx_ver_ok=yes else if test $wx_config_major_version -eq 2; then if test $wx_config_minor_version -gt 9; then wx_ver_ok=yes else if test $wx_config_minor_version -eq 9; then if test $wx_config_micro_version -ge 0; then wx_ver_ok=yes fi fi fi fi fi fi if test -n "$wx_ver_ok" -a -n ""; then wx_optional_libs="--optional-libs " fi WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs $WXLIBS_USED $wx_optional_libs` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wxWidgets static library" >&5 printf %s "checking for wxWidgets static library... " >&6; } WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs $WXLIBS_USED $wx_optional_libs 2>/dev/null` if test "x$WX_LIBS_STATIC" = "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi wx_has_cppflags="" if test $wx_config_major_version -gt 2; then wx_has_cppflags=yes else if test $wx_config_major_version -eq 2; then if test $wx_config_minor_version -gt 2; then wx_has_cppflags=yes else if test $wx_config_minor_version -eq 2; then if test $wx_config_micro_version -ge 6; then wx_has_cppflags=yes fi fi fi fi fi wx_has_rescomp="" if test $wx_config_major_version -gt 2; then wx_has_rescomp=yes else if test $wx_config_major_version -eq 2; then if test $wx_config_minor_version -ge 7; then wx_has_rescomp=yes fi fi fi if test "x$wx_has_rescomp" = x ; then WX_RESCOMP= else WX_RESCOMP=`$WX_CONFIG_WITH_ARGS --rescomp` fi if test "x$wx_has_cppflags" = x ; then 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 $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 *@@"` fi WXFOUND=1 else if test "x$WX_VERSION" = x; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (version $WX_VERSION is not new enough)" >&5 printf "%s\n" "no (version $WX_VERSION is not new enough)" >&6; } fi WX_CFLAGS="" WX_CPPFLAGS="" WX_CXXFLAGS="" WX_LIBS="" WX_LIBS_STATIC="" WX_RESCOMP="" if test ! -z "--unicode"; then wx_error_message=" The configuration you asked for $PACKAGE_NAME requires a wxWidgets build with the following settings: --unicode but such build is not available. To see the wxWidgets builds available on this system, please use 'wx-config --list' command. To use the default build, returned by 'wx-config --selected-config', use the options with their 'auto' default values." fi wx_error_message=" The requested wxWidgets build couldn't be found. $wx_error_message If you still get this error, then check that 'wx-config' is in path, the directory where wxWidgets libraries are installed (returned by 'wx-config --libs' command) is in LD_LIBRARY_PATH or equivalent variable and wxWidgets version is 3.2.4 or above." WXFOUND=0 fi else WX_CFLAGS="" WX_CPPFLAGS="" WX_CXXFLAGS="" WX_LIBS="" WX_LIBS_STATIC="" WX_RESCOMP="" WXFOUND=0 fi WX_VERSION_MAJOR="$wx_config_major_version" WX_VERSION_MINOR="$wx_config_minor_version" WX_VERSION_MICRO="$wx_config_micro_version" if test "$WXFOUND" != 1; then as_fn_error $? "wxWidgets library is required" "$LINENO" 5 fi saved_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wxWidgets was built with wxUSE_XRC" >&5 printf %s "checking whether wxWidgets was built with wxUSE_XRC... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { #if !defined(wxUSE_XRC) || !wxUSE_XRC #error "XRC not compiled in" #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "XRC is required to build poedit!" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wxWidgets was built with wxUSE_WEBVIEW" >&5 printf %s "checking whether wxWidgets was built with wxUSE_WEBVIEW... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { #if !defined(wxUSE_WEBVIEW) || !wxUSE_WEBVIEW #error "wxWebView not compiled in" #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "wxWebView is required to build poedit!" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXXFLAGS="$saved_CXXFLAGS" CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS" if test "x$WX_CONFIG_NAME" = x; then as_fn_error $? "The wxrc tests must run after wxWidgets test." "$LINENO" 5 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wxrc" >&5 printf %s "checking for wxrc... " >&6; } if test "x$WXRC" = x ; then wx_ver_ok="" if test "x$WX_VERSION" != x ; then if test $wx_config_major_version -gt 2; then wx_ver_ok=yes else if test $wx_config_major_version -eq 2; then if test $wx_config_minor_version -gt 5; then wx_ver_ok=yes else if test $wx_config_minor_version -eq 5; then if test $wx_config_micro_version -ge 3; then wx_ver_ok=yes fi fi fi fi fi fi if test -n "$wx_ver_ok"; then WXRC=`$WX_CONFIG_WITH_ARGS --utility=wxrc` fi fi if test "x$WXRC" = x ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 printf "%s\n" "not found" >&6; } as_fn_error $? "wxrc is needed to compile Poedit." "$LINENO" 5 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WXRC" >&5 printf "%s\n" "$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 : printf "%s\n" "#define HAVE_MKDTEMP 1" >>confdefs.h else $as_nop as_fn_error $? "mkdtemp is required" "$LINENO" 5 fi done pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for icu-uc icu-i18n >= 54" >&5 printf %s "checking for icu-uc icu-i18n >= 54... " >&6; } if test -n "$ICU_CFLAGS"; then pkg_cv_ICU_CFLAGS="$ICU_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-uc icu-i18n >= 54\""; } >&5 ($PKG_CONFIG --exists --print-errors "icu-uc icu-i18n >= 54") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ICU_CFLAGS=`$PKG_CONFIG --cflags "icu-uc icu-i18n >= 54" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$ICU_LIBS"; then pkg_cv_ICU_LIBS="$ICU_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-uc icu-i18n >= 54\""; } >&5 ($PKG_CONFIG --exists --print-errors "icu-uc icu-i18n >= 54") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ICU_LIBS=`$PKG_CONFIG --libs "icu-uc icu-i18n >= 54" 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 ICU_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "icu-uc icu-i18n >= 54" 2>&1` else ICU_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "icu-uc icu-i18n >= 54" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$ICU_PKG_ERRORS" >&5 as_fn_error $? "missing ICU library" "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "missing ICU library" "$LINENO" 5 else ICU_CFLAGS=$pkg_cv_ICU_CFLAGS ICU_LIBS=$pkg_cv_ICU_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } CXXFLAGS="$CXXFLAGS $ICU_CFLAGS" LIBS="$LIBS $ICU_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if wxWidgets toolkit uses GTK+ 3" >&5 printf %s "checking if wxWidgets toolkit uses GTK+ 3... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { #ifndef __WXGTK3__ #error "not GTK+ 3" #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } gtkspell_packages="gtkspell3-3.0 gtk+-3.0" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if wxWidgets toolkit uses GTK+ 2" >&5 printf %s "checking if wxWidgets toolkit uses GTK+ 2... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { #ifndef __WXGTK20__ #error "not GTK+ 2" #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } gtkspell_packages="gtkspell-2.0 gtk+-2.0 >= 2.20" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "GTK+ build of wxWidgets is required" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $gtkspell_packages" >&5 printf %s "checking for $gtkspell_packages... " >&6; } if test -n "$GTKSPELL_CFLAGS"; then pkg_cv_GTKSPELL_CFLAGS="$GTKSPELL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$gtkspell_packages\""; } >&5 ($PKG_CONFIG --exists --print-errors "$gtkspell_packages") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKSPELL_CFLAGS=`$PKG_CONFIG --cflags "$gtkspell_packages" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTKSPELL_LIBS"; then pkg_cv_GTKSPELL_LIBS="$GTKSPELL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$gtkspell_packages\""; } >&5 ($PKG_CONFIG --exists --print-errors "$gtkspell_packages") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKSPELL_LIBS=`$PKG_CONFIG --libs "$gtkspell_packages" 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 GTKSPELL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$gtkspell_packages" 2>&1` else GTKSPELL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$gtkspell_packages" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTKSPELL_PKG_ERRORS" >&5 as_fn_error $? "missing GtkSpell library" "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "missing GtkSpell library" "$LINENO" 5 else GTKSPELL_CFLAGS=$pkg_cv_GTKSPELL_CFLAGS GTKSPELL_LIBS=$pkg_cv_GTKSPELL_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } CXXFLAGS="$CXXFLAGS $GTKSPELL_CFLAGS" LIBS="$LIBS $GTKSPELL_LIBS" fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for liblucene++ >= 3.0.5" >&5 printf %s "checking for liblucene++ >= 3.0.5... " >&6; } if test -n "$LUCENE_CFLAGS"; then pkg_cv_LUCENE_CFLAGS="$LUCENE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$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=$? printf "%s\n" "$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" && \ { { printf "%s\n" "$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=$? printf "%s\n" "$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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "missing Lucene++ library" "$LINENO" 5 else LUCENE_CFLAGS=$pkg_cv_LUCENE_CFLAGS LUCENE_LIBS=$pkg_cv_LUCENE_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } CXXFLAGS="$CXXFLAGS $LUCENE_CFLAGS" fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pugixml >= 1.9" >&5 printf %s "checking for pugixml >= 1.9... " >&6; } if test -n "$PUGIXML_CFLAGS"; then pkg_cv_PUGIXML_CFLAGS="$PUGIXML_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pugixml >= 1.9\""; } >&5 ($PKG_CONFIG --exists --print-errors "pugixml >= 1.9") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PUGIXML_CFLAGS=`$PKG_CONFIG --cflags "pugixml >= 1.9" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$PUGIXML_LIBS"; then pkg_cv_PUGIXML_LIBS="$PUGIXML_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pugixml >= 1.9\""; } >&5 ($PKG_CONFIG --exists --print-errors "pugixml >= 1.9") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PUGIXML_LIBS=`$PKG_CONFIG --libs "pugixml >= 1.9" 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 PUGIXML_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "pugixml >= 1.9" 2>&1` else PUGIXML_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "pugixml >= 1.9" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PUGIXML_PKG_ERRORS" >&5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else PUGIXML_CFLAGS=$pkg_cv_PUGIXML_CFLAGS PUGIXML_LIBS=$pkg_cv_PUGIXML_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } CXXFLAGS="$CXXFLAGS $PUGIXML_CFLAGS -DHAVE_PUGIXML" fi # Check whether --with-cld2 was given. if test ${with_cld2+y} then : withval=$with_cld2; fi if test "x$with_cld2" != "xno" then : have_cld2=no for ac_header in cld2/public/compact_lang_det.h do : ac_fn_cxx_check_header_compile "$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 : printf "%s\n" "#define HAVE_CLD2_PUBLIC_COMPACT_LANG_DET_H 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libcld2" >&5 printf %s "checking for libcld2... " >&6; } old_LIBS="$LIBS" LIBS="-lcld2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { 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.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$old_LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_cld2" >&5 printf "%s\n" "$have_cld2" >&6; } fi done else $as_nop have_cld2=no fi if test "x$have_cld2" = "xyes" then : printf "%s\n" "#define HAVE_CLD2 1" >>confdefs.h CLD2_LIBS="-lcld2" else $as_nop if test "x$with_cld2" = "xyes" then : as_fn_error $? "cld2 requested but not found" "$LINENO" 5 fi fi CXXFLAGS="$CXXFLAGS $DEBUG_FLAGS -DwxNO_UNSAFE_WXSTRING_CONV=1 \"-DPOEDIT_PREFIX=\\\"$prefix\\\"\"" ac_config_files="$ac_config_files Makefile src/Makefile artwork/Makefile locales/Makefile docs/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi 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 : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # 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 3.6.3, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Configuration commands: $config_commands Report bugs to ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ poedit config.status 3.6.3 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "artwork/Makefile") CONFIG_FILES="$CONFIG_FILES artwork/Makefile" ;; "locales/Makefile") CONFIG_FILES="$CONFIG_FILES locales/Makefile" ;; "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi echo " Configured $PACKAGE-$VERSION for $host Enabled features: * debug build: $USE_DEBUG * language detection: $have_cld2 * cloud accounts integration: $have_cpprest " if test "x$have_cld2" != "xyes" -o "x$have_cpprest" != "xyes" ; then echo " !!! WARNING !!! Your are building a limited version of Poedit without some important features (see above). This makes Poedit harder to use and is strongly advised against. !!! WARNING !!! " fi poedit-3.6.3/bootstrap0000755000175100001660000000054515011674230010437 #!/bin/sh set -e make_msgfmt() { for i in locales/*.po ; do msgfmt -c -o `echo $i | sed -e s/\.po/.mo/g` $i || exit 1 done } echo " - aclocal" && aclocal && \ echo " - automake" && automake -a -c -f && \ echo " - autoconf" && autoconf && \ \ echo " - msgfmt" && make_msgfmt && \ exit 0 echo "Automatic build files setup failed!" exit 1 poedit-3.6.3/configure.ac0000644000175100001660000002123015011674230010754 dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.61]) AC_INIT([poedit], [3.6.3], [help@poedit.net]) AC_CONFIG_AUX_DIR([admin]) AC_CONFIG_MACRO_DIR([admin]) AC_CONFIG_SRCDIR([net.poedit.Poedit.desktop]) AC_CANONICAL_BUILD AC_CANONICAL_HOST AM_INIT_AUTOMAKE([subdir-objects foreign]) AM_MAINTAINER_MODE m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) WX_CONFIG_OPTIONS AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug], [Enable debug build]), USE_DEBUG="$enableval", USE_DEBUG="no") AC_MSG_CHECKING(for install location) case "$prefix" in NONE) AC_CACHE_VAL(m_cv_prefix,m_cv_prefix=$ac_default_prefix);; *) m_cv_prefix=$prefix ;; esac AC_MSG_RESULT($m_cv_prefix) case "$m_cv_prefix" in /*) ;; *) AC_MSG_WARN([--prefix=$prefix must be an absolute path name, using $ac_default_prefix]) m_cv_prefix=$ac_default_prefix esac prefix=$m_cv_prefix dnl Checks for programs. AC_PROG_AWK AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_RANLIB AC_PROG_CC AC_PROG_CXX AC_PROG_CXXCPP AC_LANG([C++]) AX_CXX_COMPILE_STDCXX([17], [], [mandatory]) WXLIBS_USED="xrc,xml,webview,adv,core,net" case "$USE_DEBUG" in yes) DEBUG_FLAGS="-g -Wall -O0" ;; esac AX_BOOST_BASE([1.60], [], [AC_MSG_ERROR([Boost libraries are required])]) AX_BOOST_SYSTEM AX_BOOST_THREAD CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS" 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"], [ AX_BOOST_IOSTREAMS 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 $BOOST_CPPFLAGS" AC_CHECK_HEADERS([cpprest/http_client.h], [ AC_MSG_CHECKING([for libcpprest >= 2.10.8]) old_LIBS="$LIBS" LIBS="-lcpprest $BOOST_SYSTEM_LIB $BOOST_THREAD_LIB -lssl -lcrypto $LIBS" AC_LINK_IFELSE([AC_LANG_PROGRAM( [ #include #include ], [ #if CPPREST_VERSION < 201008 #error "cpprest >= 2.10.8 required" #endif web::http::client::http_client c(U("https://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]) AC_DEFINE([HAVE_PPL]) CPPREST_LIBS="-lcpprest $BOOST_IOSTREAMS_LIB $BOOST_THREAD_LIB $BOOST_SYSTEM_LIB -lssl -lcrypto" 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"]) AC_CHECK_HEADERS([nlohmann/json.hpp]) WX_CONFIG_CHECK([3.2.4], [WXFOUND=1], [WXFOUND=0], [$WXLIBS_USED], [--unicode]) if test "$WXFOUND" != 1; then AC_MSG_ERROR([wxWidgets library is required]) fi dnl Sanity checks for common wxWidgets misconfigurations: saved_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS" AC_MSG_CHECKING([whether wxWidgets was built with wxUSE_XRC]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([#include ], [ #if !defined(wxUSE_XRC) || !wxUSE_XRC #error "XRC not compiled in" #endif ])], [ AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) AC_MSG_ERROR([XRC is required to build poedit!]) ]) AC_MSG_CHECKING([whether wxWidgets was built with wxUSE_WEBVIEW]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([#include ], [ #if !defined(wxUSE_WEBVIEW) || !wxUSE_WEBVIEW #error "wxWebView not compiled in" #endif ])], [ AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) AC_MSG_ERROR([wxWebView is required to build poedit!]) ]) CXXFLAGS="$saved_CXXFLAGS" CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS" WXRC_CHECK([], [AC_MSG_ERROR([wxrc is needed to compile Poedit.])]) AC_CHECK_FUNCS([mkdtemp], [], [AC_MSG_ERROR([mkdtemp is required])]) PKG_CHECK_MODULES([ICU], [icu-uc icu-i18n >= 54], [ CXXFLAGS="$CXXFLAGS $ICU_CFLAGS" LIBS="$LIBS $ICU_LIBS" ], [ AC_MSG_ERROR([missing ICU library]) ]) dnl we need GtkSpell and GTK+ >= 2 for this, check if we're compatible AC_MSG_CHECKING([if wxWidgets toolkit uses GTK+ 3]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [ #ifndef __WXGTK3__ #error "not GTK+ 3" #endif ])], [ AC_MSG_RESULT([yes]) gtkspell_packages="gtkspell3-3.0 gtk+-3.0" ], [ AC_MSG_RESULT([no]) AC_MSG_CHECKING([if wxWidgets toolkit uses GTK+ 2]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([#include ], [ #ifndef __WXGTK20__ #error "not GTK+ 2" #endif ])], [ AC_MSG_RESULT([yes]) gtkspell_packages="gtkspell-2.0 gtk+-2.0 >= 2.20" ], [ AC_MSG_RESULT([no]) AC_MSG_ERROR([GTK+ build of wxWidgets is required]) ]) ]) PKG_CHECK_MODULES([GTKSPELL], [$gtkspell_packages], [ CXXFLAGS="$CXXFLAGS $GTKSPELL_CFLAGS" LIBS="$LIBS $GTKSPELL_LIBS" ], [ AC_MSG_ERROR([missing GtkSpell library]) ]) PKG_CHECK_MODULES([LUCENE], [liblucene++ >= 3.0.5], [ CXXFLAGS="$CXXFLAGS $LUCENE_CFLAGS" AC_SUBST(LUCENE_LIBS) ], [ AC_MSG_ERROR([missing Lucene++ library]) ]) PKG_CHECK_MODULES([PUGIXML], [pugixml >= 1.9], [ CXXFLAGS="$CXXFLAGS $PUGIXML_CFLAGS -DHAVE_PUGIXML" AC_SUBST(PUGIXML_LIBS) ], [ dnl use bundled copy ]) 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 #include ], [ 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])]) ]) CXXFLAGS="$CXXFLAGS $DEBUG_FLAGS -DwxNO_UNSAFE_WXSTRING_CONV=1 \"-DPOEDIT_PREFIX=\\\"$prefix\\\"\"" AC_SUBST(LDFLAGS) AC_SUBST(CFLAGS) AC_SUBST(CXXFLAGS) AC_SUBST(WX_CONFIG_WITH_ARGS) AC_SUBST(WX_LIBS) AC_CONFIG_FILES([ Makefile src/Makefile artwork/Makefile locales/Makefile docs/Makefile ]) AC_OUTPUT echo " Configured $PACKAGE-$VERSION for $host Enabled features: * debug build: $USE_DEBUG * language detection: $have_cld2 * cloud accounts integration: $have_cpprest " if test "x$have_cld2" != "xyes" -o "x$have_cpprest" != "xyes" ; then echo " !!! WARNING !!! Your are building a limited version of Poedit without some important features (see above). This makes Poedit harder to use and is strongly advised against. !!! WARNING !!! " fi poedit-3.6.3/README.md0000644000175100001660000000751715011674230007761 # Poedit: cross-platform translation editor [![Crowdin](https://badges.crowdin.net/poedit/localized.svg)](https://crowdin.com/project/poedit) ## About This program is a simple translation editor for PO and XLIFF files. It also serves as a GUI frontend to more GNU gettext utilities (win32 version is part of the distribution) and catalogs editor/source code parser. It helps with translating applications into another language. For details on principles of the solution used, see GNU gettext documentation. ## Installation Easily-installable prebuilt binaries for Windows and macOS are available from https://poedit.net/download Official binaries for Linux are available as a Snap at https://snapcraft.io/poedit. Most Linux distributions also include native Poedit packages. ### Installing from sources Requirements: * Boost * Unicode build of [wxWidgets](http://www.wxwidgets.org) library, version >= 3.2 * ICU * LucenePlusPlus * If on Unix, GtkSpell for spell checking support Optional dependencies: * cld2 (better language autodetection and non-English source languages) * C++REST SDK >= 2.5 (Crowdin integration) ### Unix Do the usual thing: ./configure make make install You must have the dependencies installed in a location where configure will find them, e.g. by setting `CPPFLAGS` and `LDFLAGS` appropriately. ### macOS You need a full git checkout to build on macOS; see below for details. After checkout, use the `Poedit.xcworkspace` workspace and the latest version of Xcode to build Poedit. There are some additional dependencies on tools not included with macOS. They can be installed with Homebrew and `macos/Brewfile`: brew bundle --file=macos/Brewfile ### Windows using Visual Studio You need a full git checkout to build on Windows; see below for details. Note that the repository uses symlinks and so you'll need to enabled [Developer Mode](https://msdn.microsoft.com/en-us/windows/uwp/get-started/enable-your-device-for-development) and configure git to allow symlinks: git config --global core.symlinks true After checkout, use the `Poedit.sln` solution to build everything. To build the installer, open `win32/poedit.iss` in Inno Setup and compile the project. ### Installing from Git repository Get the sources from GitHub (https://github.com/vslavik/poedit): git clone https://github.com/vslavik/poedit.git If you are on Windows or OSX, you'll need all the dependencies too. After cloning the repository, run the following command: git submodule update --init --recursive On Linux and other Unices, only a subset of submodules is necessary, so you can save some time and disk space by checking out only them: git submodule update --init deps/json deps/pugixml When building for Unix/Linux, if you get the sources directly from the Git repository, some generated files are not present. You have to run the `./bootstrap` script to create them. After that, continue according to the instructions above. The `./bootstrap` script requires some additional tools to be installed: * AsciiDoc, xsltproc and xmlto to generate the manual page * gettext tools to create `.mo` files On macOS and Windows, bootstrapping is not needed. ## License Poedit is released under [the MIT license](COPYING) and you're free to do whatever you want with it and its source code (well, almost :-) -- see the license text). See the `COPYING` file for details on the program's licensing and the `icons/README` file for details on the icons. Windows and macOS versions contain GNU gettext binaries. They are distributed under the GNU General Public License and their source code is available from http://www.gnu.org/software/gettext. If you have difficulties getting them from there, email me for a copy of the sources. ## Links 1. [Poedit's website](https://poedit.net/) 2. [GNU gettext](http://www.gnu.org/software/gettext/) poedit-3.6.3/artwork/0000755000175100001660000000000015011674364010251 5poedit-3.6.3/artwork/Makefile.in0000644000175100001660000006073715011674351012247 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = artwork ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/admin/ax_boost_base.m4 \ $(top_srcdir)/admin/ax_boost_iostreams.m4 \ $(top_srcdir)/admin/ax_boost_system.m4 \ $(top_srcdir)/admin/ax_boost_thread.m4 \ $(top_srcdir)/admin/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/admin/wxwin.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(dist_appicons128_DATA) \ $(dist_appicons16_DATA) $(dist_appicons24_DATA) \ $(dist_appicons32_DATA) $(dist_appicons48_DATA) \ $(dist_appiconsscalable_DATA) $(dist_uiicons_DATA) \ $(dist_uiiconssymbolic_DATA) $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(appicons128dir)" \ "$(DESTDIR)$(appicons16dir)" "$(DESTDIR)$(appicons24dir)" \ "$(DESTDIR)$(appicons32dir)" "$(DESTDIR)$(appicons48dir)" \ "$(DESTDIR)$(appiconsscalabledir)" "$(DESTDIR)$(uiiconsdir)" \ "$(DESTDIR)$(uiiconssymbolicdir)" DATA = $(dist_appicons128_DATA) $(dist_appicons16_DATA) \ $(dist_appicons24_DATA) $(dist_appicons32_DATA) \ $(dist_appicons48_DATA) $(dist_appiconsscalable_DATA) \ $(dist_uiicons_DATA) $(dist_uiiconssymbolic_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_IOSTREAMS_LIB = @BOOST_IOSTREAMS_LIB@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ BOOST_SYSTEM_LIB = @BOOST_SYSTEM_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLD2_LIBS = @CLD2_LIBS@ CPPFLAGS = @CPPFLAGS@ CPPREST_LIBS = @CPPREST_LIBS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ HAVE_CXX17 = @HAVE_CXX17@ ICU_CFLAGS = @ICU_CFLAGS@ ICU_LIBS = @ICU_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ 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@ LUCENE_LIBS = @LUCENE_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PUGIXML_CFLAGS = @PUGIXML_CFLAGS@ PUGIXML_LIBS = @PUGIXML_LIBS@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WXRC = @WXRC@ WX_CFLAGS = @WX_CFLAGS@ WX_CFLAGS_ONLY = @WX_CFLAGS_ONLY@ WX_CONFIG_PATH = @WX_CONFIG_PATH@ WX_CONFIG_WITH_ARGS = @WX_CONFIG_WITH_ARGS@ WX_CPPFLAGS = @WX_CPPFLAGS@ WX_CXXFLAGS = @WX_CXXFLAGS@ WX_CXXFLAGS_ONLY = @WX_CXXFLAGS_ONLY@ WX_LIBS = @WX_LIBS@ WX_LIBS_STATIC = @WX_LIBS_STATIC@ WX_RESCOMP = @WX_RESCOMP@ WX_VERSION = @WX_VERSION@ WX_VERSION_MAJOR = @WX_VERSION_MAJOR@ WX_VERSION_MICRO = @WX_VERSION_MICRO@ WX_VERSION_MINOR = @WX_VERSION_MINOR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ iconsdir = $(datadir)/icons/hicolor appicons16dir = $(iconsdir)/16x16/apps appicons24dir = $(iconsdir)/24x24/apps appicons32dir = $(iconsdir)/32x32/apps appicons48dir = $(iconsdir)/48x48/apps appicons128dir = $(iconsdir)/128x128/apps appiconsscalabledir = $(iconsdir)/scalable/apps uiiconsdir = $(datadir)/poedit/icons uiiconssymbolicdir = $(uiiconsdir)/hicolor/scalable/actions dist_appicons16_DATA = linux/appicon/16x16/apps/net.poedit.Poedit.png dist_appicons24_DATA = linux/appicon/24x24/apps/net.poedit.Poedit.png dist_appicons32_DATA = linux/appicon/32x32/apps/net.poedit.Poedit.png dist_appicons48_DATA = linux/appicon/48x48/apps/net.poedit.Poedit.png dist_appicons128_DATA = linux/appicon/128x128/apps/net.poedit.Poedit.png dist_appiconsscalable_DATA = linux/appicon/scalable/apps/net.poedit.Poedit.svg dist_uiiconssymbolic_DATA = \ linux/poedit-sync-symbolic.svg \ linux/poedit-update-symbolic.svg \ linux/poedit-validate-symbolic.svg \ linux/sidebar-symbolic.svg dist_uiicons_DATA = \ linux/document-open.png \ linux/document-save.png \ linux/poedit-sync.png \ linux/poedit-update.png \ linux/poedit-validate.png \ linux/sidebar.png \ AccountCrowdin.png \ AccountLocalazy.png \ CrowdinLogo.png \ CrowdinLogoDark.png \ LocalazyLogo.png \ DownvoteTemplate.png \ ExtractorsGNUgettext.png \ ItemCommentTemplate.png \ SuggestionErrorTemplate.png \ SuggestionPerfectMatch.png \ SuggestionTMTemplate.png \ poedit-status-cat-mid.png \ poedit-status-cat-no.png \ poedit-status-cat-ok.png \ StatusError.png \ StatusErrorBlack.png \ StatusWarning.png \ StatusWarningBlack.png \ window-close.png all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign artwork/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign artwork/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_appicons128DATA: $(dist_appicons128_DATA) @$(NORMAL_INSTALL) @list='$(dist_appicons128_DATA)'; test -n "$(appicons128dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(appicons128dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(appicons128dir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(appicons128dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(appicons128dir)" || exit $$?; \ done uninstall-dist_appicons128DATA: @$(NORMAL_UNINSTALL) @list='$(dist_appicons128_DATA)'; test -n "$(appicons128dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(appicons128dir)'; $(am__uninstall_files_from_dir) install-dist_appicons16DATA: $(dist_appicons16_DATA) @$(NORMAL_INSTALL) @list='$(dist_appicons16_DATA)'; test -n "$(appicons16dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(appicons16dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(appicons16dir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(appicons16dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(appicons16dir)" || exit $$?; \ done uninstall-dist_appicons16DATA: @$(NORMAL_UNINSTALL) @list='$(dist_appicons16_DATA)'; test -n "$(appicons16dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(appicons16dir)'; $(am__uninstall_files_from_dir) install-dist_appicons24DATA: $(dist_appicons24_DATA) @$(NORMAL_INSTALL) @list='$(dist_appicons24_DATA)'; test -n "$(appicons24dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(appicons24dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(appicons24dir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(appicons24dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(appicons24dir)" || exit $$?; \ done uninstall-dist_appicons24DATA: @$(NORMAL_UNINSTALL) @list='$(dist_appicons24_DATA)'; test -n "$(appicons24dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(appicons24dir)'; $(am__uninstall_files_from_dir) install-dist_appicons32DATA: $(dist_appicons32_DATA) @$(NORMAL_INSTALL) @list='$(dist_appicons32_DATA)'; test -n "$(appicons32dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(appicons32dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(appicons32dir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(appicons32dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(appicons32dir)" || exit $$?; \ done uninstall-dist_appicons32DATA: @$(NORMAL_UNINSTALL) @list='$(dist_appicons32_DATA)'; test -n "$(appicons32dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(appicons32dir)'; $(am__uninstall_files_from_dir) install-dist_appicons48DATA: $(dist_appicons48_DATA) @$(NORMAL_INSTALL) @list='$(dist_appicons48_DATA)'; test -n "$(appicons48dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(appicons48dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(appicons48dir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(appicons48dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(appicons48dir)" || exit $$?; \ done uninstall-dist_appicons48DATA: @$(NORMAL_UNINSTALL) @list='$(dist_appicons48_DATA)'; test -n "$(appicons48dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(appicons48dir)'; $(am__uninstall_files_from_dir) install-dist_appiconsscalableDATA: $(dist_appiconsscalable_DATA) @$(NORMAL_INSTALL) @list='$(dist_appiconsscalable_DATA)'; test -n "$(appiconsscalabledir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(appiconsscalabledir)'"; \ $(MKDIR_P) "$(DESTDIR)$(appiconsscalabledir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(appiconsscalabledir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(appiconsscalabledir)" || exit $$?; \ done uninstall-dist_appiconsscalableDATA: @$(NORMAL_UNINSTALL) @list='$(dist_appiconsscalable_DATA)'; test -n "$(appiconsscalabledir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(appiconsscalabledir)'; $(am__uninstall_files_from_dir) install-dist_uiiconsDATA: $(dist_uiicons_DATA) @$(NORMAL_INSTALL) @list='$(dist_uiicons_DATA)'; test -n "$(uiiconsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(uiiconsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(uiiconsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(uiiconsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(uiiconsdir)" || exit $$?; \ done uninstall-dist_uiiconsDATA: @$(NORMAL_UNINSTALL) @list='$(dist_uiicons_DATA)'; test -n "$(uiiconsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(uiiconsdir)'; $(am__uninstall_files_from_dir) install-dist_uiiconssymbolicDATA: $(dist_uiiconssymbolic_DATA) @$(NORMAL_INSTALL) @list='$(dist_uiiconssymbolic_DATA)'; test -n "$(uiiconssymbolicdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(uiiconssymbolicdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(uiiconssymbolicdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(uiiconssymbolicdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(uiiconssymbolicdir)" || exit $$?; \ done uninstall-dist_uiiconssymbolicDATA: @$(NORMAL_UNINSTALL) @list='$(dist_uiiconssymbolic_DATA)'; test -n "$(uiiconssymbolicdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(uiiconssymbolicdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(appicons128dir)" "$(DESTDIR)$(appicons16dir)" "$(DESTDIR)$(appicons24dir)" "$(DESTDIR)$(appicons32dir)" "$(DESTDIR)$(appicons48dir)" "$(DESTDIR)$(appiconsscalabledir)" "$(DESTDIR)$(uiiconsdir)" "$(DESTDIR)$(uiiconssymbolicdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: 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) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_appicons128DATA \ install-dist_appicons16DATA install-dist_appicons24DATA \ install-dist_appicons32DATA install-dist_appicons48DATA \ install-dist_appiconsscalableDATA install-dist_uiiconsDATA \ install-dist_uiiconssymbolicDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_appicons128DATA \ uninstall-dist_appicons16DATA uninstall-dist_appicons24DATA \ uninstall-dist_appicons32DATA uninstall-dist_appicons48DATA \ uninstall-dist_appiconsscalableDATA uninstall-dist_uiiconsDATA \ uninstall-dist_uiiconssymbolicDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook .MAKE: install-am install-data-am install-strip uninstall-am .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-hook install-dist_appicons128DATA \ install-dist_appicons16DATA install-dist_appicons24DATA \ install-dist_appicons32DATA install-dist_appicons48DATA \ install-dist_appiconsscalableDATA install-dist_uiiconsDATA \ install-dist_uiiconssymbolicDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-dist_appicons128DATA uninstall-dist_appicons16DATA \ uninstall-dist_appicons24DATA uninstall-dist_appicons32DATA \ uninstall-dist_appicons48DATA \ uninstall-dist_appiconsscalableDATA uninstall-dist_uiiconsDATA \ uninstall-dist_uiiconssymbolicDATA uninstall-hook .PRECIOUS: Makefile update-icon-cache: test -z $(DESTDIR) && which gtk-update-icon-cache >/dev/null && gtk-update-icon-cache -f -t $(iconsdir) || true install-data-hook: update-icon-cache uninstall-hook: update-icon-cache # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: poedit-3.6.3/artwork/LocalazyLogo.png0000644000175100001660000000323315011674230013267 ‰PNG  IHDR~<ŽIÏbIDATxíY¸ëJ¾¬ðlÛ¶mÛ¶›´½Vï³mÛ¶íâÙ¶M{Œî›ÿ{Ý›99MÚž“ëÌ÷ÍA:;™GÛ31ùÒ‹Æm„¸£!֌۩âr>ðÓ)5ãR^6ÊAMt¥ëÚíÎä¼à[>“súÀOGI™k÷øm®hyû–l·ä|[Vëƒ?Q@ï(@éï·#Icu7ëæ:W¿Yîüíy¹»ütD¡„yKá-u© ÖZsK®üà-ÙrѾüã½RžœvÎ5\ÆCi±øÞ÷6öž¹32ÒÅ›eäöO€+ðqêYwk®üؤ4Ÿ—£ëYÓK+Ò»¾ &Ä·AÝ<©–ü,º9É_L?X¥F´(óàvHèçã=$[®¬ë@v jæöÎ=8ºÁ!Í<°zC\Ú”ä¾îpBìÛPO•0/¬èÏ…“Å dN¡Þë{WN‰­ã£Šs’ŸGûÊÇSŹlû¡ø¬Âi‡¨g±tÿN­ ÜU Üš-wt:í·~ ç©oŠ[©÷ ±t•ÕÄä ¿k4™/,¤Ë0_ÑÅZ¤ûg·uÕÍbâ‡e2rP/»’æAÌW£ê]7—Â!dúŸìkí‚:˜¾«• z׿êÀG“M«VwrªuQèRJà<÷hïžÈêûmؼ—ÀÃpúüW%‹è éÆÄ .Ž#;oä¶r=ó¦e…e‡¿éÿó°Žt\E@µ“üÃk^#‡ö>hÆa½–^ÜÙàU´sý¢&–´Ë…æºdK†3íá%¶®+2¼yȆ“- Ó3³bK·YÒ’7Ç»‡° Ý-¥XM.—“C©¦ÿ¦€¿5'×õx€ÄlÉ"uÛõ`£ÊM¬aÏ\H‰­y~¾.:ºi^§Zô[%£<íð8$kØõ£ÕZ‹ŽìÃÞ9Üæ«cÙž_‰¦›V±Cjö6¨f/èDšPLuö2ÈÝZû)Ð)Ýg€¼žE;jªPwY¶š*'ý õŒ×èZÖŠë3°¯!~ÆŠJséþpøÔæŠþí¥Š@³Eûv(éQɰ ÐŽCPÓ8(PUã±OtÝvKNžLý— xúÿP¯_1#ÌIÝpŒSdÉ7ã6ko,V¯]p¨zÒ(ú ËNó¢þO²AS ýÖ˜G¸˜+xæCâà×%H¦¹'fæØºQÎdlÒË¿^hŒù-Ew«ëhêþzé;òx8F¥qðì#ä¬ÕäòX”^W°U=ã‘êFÑaMó!£ýŸz×ð Méÿ§âpcŒŒôxv3% YmV:ò¾:†­û-¬·,X£>]Éc jh|…“)zšìÝãµowŸ§g#Ò+ÈSàí); »;ÈaÄñJ”–„vhÂÔ¶@3æ>­X"ÝÛÕø+7ô]ÿÐÃY[\k2²^IEND®B`‚poedit-3.6.3/artwork/ExtractorsGNUgettext.png0000644000175100001660000000132415011674230015004 ‰PNG  IHDR szzô›IDATxbŒ`Ú+k(¹a 3UafnÓwaN—úúM¾M•*ÌÌÌÌÌDÞ0“—µ²¢ß~s0+[GåÉï{3’þs‰¦Q3P3´‡@.ä,éHñþñx|¹â¯ê¡‘Ífÿ:޳º¦¦¦¿­‰&•ò”Å,ó-àÄP#´zuuõtë±Äm*Ê×È‚°#'rQ#´ÊÊÊ1Ú^\F—í´¨Ú@EEÅ8Ï `"Ÿ­SbXÌ >ç FÔ30Ž„<éw÷µÚû`™Zqq¾ºßZ ¹îlõ÷¶ÝYª¾'^w­l†ÍöÛ1uïãø‘@³]7a>‘6 ½<g‹$5hhŸ´mô c &lß0k€]k}¡Pd $…µBZOsû0$|òåT§Xuu‰zÿû>_ïD2þ¶;1?áÝûíµµÜ×-ˆÁ[Óùò2§òžFœµRm¸Ñ¬.jKkÂr.1ˆåzû3`Jø;õ·€æV ýüئ0l@ǯ ´0!¬¹Ä÷ìW() Æ¬Z¨yH(<©à–5 L[Ø2£% ù†›ÍúMØKs$$K¾4ÛïÄà±=ã))/ôÅ}ŽÿvלM‰±†½mZmDã#o90 kÅ®OÛB_˜O „ßiðÍ:¦·70*™úëB˜kƒ`¾àk’ée{ 5÷Ïýå¢FT}.^9¿AÑŠš4lýÚË»jkkûF5P®ÇÔóÏøãþHæò)ÕÐLÔ¾›ü•Eï*ÑØm0¿ºõΖÿÝgºþ·žjþ?÷¬ÿ&]ÚÄ`½Ü¤aêé‰ÿ_Yøö…™ÿ'êù¯_¦J¼,çJYL×o0íÓ¹jÔªyU·H¹A+QNŠFq6 µPy¦×ÍôIEND®B`‚poedit-3.6.3/artwork/StatusWarningBlack.png0000644000175100001660000000031315011674230014432 ‰PNG  IHDRµú7ê’IDAT(Ïc` .`gèbhe`Å­ ˜aúà’`˜V0‡»‚4°4&`“–eX”RÂe ‹$1T€õr!ˆ.F—Ö‡® „–&²4C'TØ!¬VF„'¸ó¢âàl[˜4Ã4¸ 2œÄÀQŠ$ñ úƒ¤ƒ¬@ ‰7ÙƒØ`ñ™”?Õè’æNIEND®B`‚poedit-3.6.3/artwork/AccountLocalazy.png0000644000175100001660000000131415011674230013761 ‰PNG  IHDR szzô“IDATxbŒ`h-X;‚( ? ñöFµ#UŠk;¶ý"4l» k3ªmÛ¶ð|Í™éü»9›½§wî²›²X¾%æ°ªSÍØý•Ûãj×}áré½ôã(Í­H̹ô6똮‹:ñ[ªý<o›}û;Q†Èåƒâ0qQ›ágˆ;úTZósŒö;@ÜÖë.§\ËôãàÞü•îÕ_û(ÙÑ iÍQ©ýÜ g¸rhOxZS«ÀYs*™÷æÏÚSÇ^xÅ/¾“æXË æÈ*•2ð®Y 0î‚»Þs?ç¿ý"<k·8­íwÀqèe¼ð&ËÏlØï@R‹8)6?ÿÆÿ$:Zó}Ô(zHh&î}ÍÙõ]5€ÃDF)˜@š¯>齌MGÁ}ñ¾cy¡Í¿Ãþ'‰µUO FÑGQ¼ûP¾Ççö—Ð H ÆœÁ5f×[ ŒêŒg£Æ4|$âl ð57‚ܶ—pÐõ[÷wQ¢¾æþÓ—G½?cs«®¨¨˜vãî£cmÑt<ªƒˆÁ× ®Ç¹Î\¼zH瞊ss§¡²²r\yyùÍ"½µcö)†æ`žÎ9A{[¹re¹jC¡P½ëÙX0çuÄ¿IIIÔsàêŒh™r·áH¨IEND®B`‚poedit-3.6.3/artwork/StatusErrorBlack.png0000644000175100001660000000021615011674230014120 ‰PNG  IHDRµú7êUIDAT(‘c` a˜À° 'yx¤±(AH«!%Ýœ@cOD(@­ „Ö@ˆWAC~¨‹#¾@q$²7ÕàÒ8B«4º,Òä0FÁÌ¿„IEND®B`‚poedit-3.6.3/artwork/CrowdinLogo.png0000644000175100001660000000357015011674230013122 ‰PNG  IHDRp"Gy|?IDATxíZ˜#Ë¿»¿ù¬3‚•&dfVgÛ¶mÛ¶mÛ¶mÛ¶Y¯+7ítxVêûj“Tµ]šÙx_!ùÉ É%&e†Á$1˜””Á ¿¤|Â@Ô9´Oõx þÅܧ.\MDXAÞ‘wèMJà·~ž) ùNgRr"ì)><€&u%ðžøPppðß¿eufUbça$rm&§¿ëR>LyJppšÿ¾ðˆRÚWpB•XJ Rt:0§ÎæH×m‰ÚÊ #€ÉÓ¤ù'ýý”Éõ’Zô=YŸ2Ó`j†¬ÐµwØ´u;ܺ}Dzüä ì?x¦Ïží»õDPYß].ô[àdʯ(Ÿ $ä÷2YÇDàв ÏŸ?žNž>ã&OƒššA‘²• [¢.g>ÛgÁRåÁœ&#ã±ÐøÔ(XU|ÏñOy)‚·aËVàéÂÅKP‹‚†ú´9òÚìÜ«/Œž0ÆLœ=ú ‚ô9ó;^)2™§y&9Ì ©éšKÛ¯7HÊ£¤–§ªŽí”â4;n«7©9RÈòoF¢ ¦m7̪Õaf9mÓ‡ê–!%¥¯žX³óm0îP×ÕÙ!çvÌÀ• Lg j‡5˜•({?¢t\Ÿš…®¯ÝÃÔ×}åhwâ´6M˜,Mš4ecc?X/)Uèz†£ÅÒói`µþä @à¹MçîÀÓ–í; <2 ä/YvîÙkw‹–­€¦m;@Åšõ @Ér`ŠIï0ŽŽD¦ò0gGÊÏ]¹m ØÎÐÐè¸k“c`o')¹Ø¦ºyb÷|þèïÓlic=xk%¥Ë D  ¿ojºÃ>¹Ð…ŠÛbÛìù‹À’&*]uèÞr.Ïž=ƒ*u°>>˜Ê¤ê˜^O”Z¢o7=ÔÆÈxHÎZcøöKâÀˆJ(އ1“é1–  ™þ¾÷Z&÷Öâì(íð6PYY­Ïr€DnÀí«#‹—œ¬°8/‚ö6ÒuœÅK.”y#4ý#ŸD‹eåkÔfí:B°MÛt€•kÖ¡üĤ"n±Öt¾%Y @õêÇ¢o©‡x{UtAèRµuìÑ\äe­~mj ägÍŸ£¢þG“”¥ö=™dE›·š§}b‚õ–8Ì9ÙS:0½Wó-/_¾„‹—¯`–i“ED§…JµêCÆ<y€Þ @Ìæ¸b?ϲóNM÷ÄMÙŸÀC­M®t*ÃâïR13Öm +¶ñæk—ä ŽgÏŒYL4ÉÄ@9ÛÛˆÙ¶8f§>X¼B`ô‚‰…y‰ŠÕ kBLhZvèó-y+1i`z´AÏbÑ-dŒažÄöj96>wôp”åJL®“b~±'DÞ­µ9çÂîsÁòHû¸‘.Žöes²²€¶]ò6¢x'1æ!pŒJW©™¦=3E7ŠOgÖmÜ EËU~SÙ|‹x±ÓK‘±Xû +ã6߀ÁËï\@Û@P‘Ñâ¸dâ–øäƒZÛ&ÇLU÷0::)“‹ƒ%\ÂÅ”›á#Dv!>€âk£¥+W£YóÚdUë5‚'OŸÚ²Ñ¼ÅJ{Î[!Ù#ÕßñÔ]”.”½+‚®ÐÃx¯\=wÄÃB½; Æ:‘Ó?fY1_”3+v5çÇð0?ylÖ\pýÆ `T·iK›ø˜Àøþ0c¢NŠTñ6ã{DW¯¡tº¬ÿÀÛõ6ºIƒ¤¦Gfe…'BÐ]éÑezŸôàc0~\32ÆD&Ãý¡Œ]±­«yPÆô.'ç3*‘ñµÆÁ*uBdÆì>‚çôÑ kÿ Ý/˜Ðõ`êëÿ—Š/œ´ÂuZåçþjò“Ÿ>ý *@ßÐAîIEND®B`‚poedit-3.6.3/artwork/StatusError.png0000644000175100001660000000025215011674230013163 ‰PNG  IHDRóÿaqIDATxc|àI¼›ßâÿÈ*&G†fLCˆÖüóæe&Îl6ÿûö„±¹ä60þ¼{ãÿÏ{7±z‡(¾Û ÂäðaŬÿ–N'ǘp "bo ŽÆ[W04“’h&l¦æA©àPi°¸qIEND®B`‚poedit-3.6.3/artwork/DownvoteTemplate.png0000644000175100001660000000025415011674230014171 ‰PNG  IHDR Øâ,÷sIDATxeɵUÑÿ Äj@›  $$&Ç-¤,£¬<º Îö\w~8°åο¢èú3 |Š!+@ÈŽ€ÝU‘|Ï"9¦¼¤õ0æIh9qhß&£n´Ö6¹eárB˜'·*”‘ñâ  ÞZ6{Ù>¼IEND®B`‚poedit-3.6.3/artwork/CrowdinLogoDark.png0000644000175100001660000000275715011674230013732 ‰PNG  IHDRp"Gy|¶IDATxíÚìäì€ñÕgÛ¶mÛ¶mÛ¶mkmÛ¶mþ±¶wÓ4é›f&ÛåÕ<É蜞÷dúT*ó?Hœ‡?Ð3,Ÿ9誸eˬ} `+T¶êtÄ~…ùéj܈“ÖVÃ*V½Qþÿ\àT@• v†£=ö]ÍΗ‘ù ˜;w®Ùsæ˜1s–%K–ÈÃãeÒö–ðÆêlö—~íÄ×ÅwAn“ ·~û‚ÜqøÍPÅcMK ÄIyÆÿ0Ž]€mñj¢%¾ÂÞËâï*ÕByÑæsÞüùúöèžGžtÀÑ'F›ÎÇŸYõ:õ´nßAŸþLŸ1CŠ]óô«€ŠòÓ5%g, æKˆfÎA‘Ü,Æ»ÁXgK¸-O® rgIèÄŸ‹ÇOÓsr¼[Â6A¼(¨›( pP& ,tÌéçŠå9þ¬ó#1í:uv؉§G±+o¾CIi)˜;ož '‰É*ðy ÓÑ50BÂi9ØÛa²„tÅ0,•pC°¦ÍüôøT@*÷ž„âØÉB˜Ri² Ö˜&¡V‘XTôúæ§_-Z´È±gœý>áì Ìš=[‡Î]#‘o}øI´?Ì*ëa Oê”CÀÄ<;ã2œˆ ø\Âý(ÔŠ €IA¼:`th(FÙÇDZ€E¸!ç´[Y©­ÅÖ–I 6Ü»Ÿ|îÙW߈־ž}ú‰…FGšC‡pðñ§DßC2 ¿@ŽÅâ@ú_x _a¸„Ru‡"d6ò?#¤zªþ1 ÓP •Pk[àL=õœX xM‹NÜ—¸DG¡•‰<'òØ£åg6öÉ 0/ƒütÁz9êÆHh“Ê]ŒÛÒWTÐEnf­mÝL,*râÙŠ%ªÛ¨ DâÞûô O¼ðŠ)S§ÉK†KiØŸc’„yhÉ @ŒÂ»ùÇs::c>`i\ó4*ä©y£â×éÜúçFb›<ûë÷1K0 5±ºÆµ_Ó_ôÛ*5ÿGáÕ=×d¿˜Mtr¾lí‹Î ÷;꯼ý~túì³±vY7ƒQ»cÃ2k‘pÿ¸ÖÁùò0{Μh?ؼU“ŠŠe£p;)¤pC÷ÿ†Â#pþ\ɇšîȸ+P À¿iªáäúLIEND®B`‚poedit-3.6.3/artwork/linux/0000755000175100001660000000000015011674364011410 5poedit-3.6.3/artwork/linux/document-open.png0000644000175100001660000000142315011674230014603 ‰PNG  IHDRÄ´l;ÚIDATx“Ep$GE6‰efffffßÌÌ7ùì£u3^ÌÌžÓÜÃ̸ÌÌ»bîÁ†êªÍªu´zqæ…~s¾ÈÊÒöÁƒß‘­”"šÙ ÏõÖÕká Åbq9Ì<`sÌ1=Ø C#Ó_}ñ–͉¦Pø?üôÃ6 öù…B¡„ ˜ÓN;m| …Ü)vìØ0 Óû$I ¥Ä“O>ß÷_°hÁ?ÜÜåÜy}ŽXqÖOþðœ¿ÿùûm/äÅŠC೚(¥Ì²=ÏÃí·Ýnî™ô<>>n¾¿úªkè¿ÿÿ}0/Ö*4»Ì4ÇqðÃß›w³Ütã͈¢2«³Àä:ŽÇFq*6Ý€l“Ûo¿;í6vœ6>[òƧ¿hÿýÄmúû%yá…ÄSO=eÿ·rÅ%ÂÌ4»yeîsûÛð7VG Ïÿè‘£ÓënÇÊ×]|"î½æt]B„=’}U‹„ýò¿JgÌrÔB…Ã:Ú0未£Ú]‡ö¸°l«’ÿ¯@5NîjàXšA* Œ=6?DZÙ<ÔbBog”Ûû/®ž( Ó`2£HxF@w§ ³ÞD*_‘H»ê˜‰lÇZŽ Cˆ„Ì À_¥¹7ßH¾ÏâWC(©F³K=ãzĉB%HP ….Nû¢Ú›©AH94§ãX#®Ä˜ª›®š¡äZ˜òƒX%r,3RϪ͵1S,m–0ÖM…ˆ&³b^¾ÄQ‡ôâÀNÝíšÅ"B•çÇ3ž2b"RëGBLøþX¼­(‰Jµæ‰êô60ÄéºöÚk?MŽ¿ëþ¸óX-AŠaiä÷•Å—àk±Ë9šs˜YAëHN‰³•h‘à rF9„ÖQ y f'B°âû·]`’IEND®B`‚poedit-3.6.3/artwork/linux/poedit-validate-symbolic.svg0000644000175100001660000000063715011674230016741 Validatepoedit-3.6.3/artwork/linux/document-save.png0000644000175100001660000000145215011674230014602 ‰PNG  IHDRÄ´l;ñIDATxb@9­ås}+'¾µHïþŒsº¾„WÔžÊk±f L]Xhàh`å ¢07Fc7¶Ñ¸¶mÛx¶mÛ¶m›wï3ê>;Ií=Ý’ÞUäÏìž{æ…|¾QûÆ9àYÖзÀŠ'dž=B7“D:iíól¿ËôÇ ÿ=®˜x7Eü²Ë*îÛV“ùF½`ÚkŸÊP³¬az˜>Dœ²hëï÷zÎg÷ÿ|ÅκZß? þ¢ƒ×°ÿ­ó¨Yù^Ú·ÃÀëÕ^ûù•˜NB.F4+ðŒo[õ<^™¹^ýKø°‰Ë3#—‚èT½5Òº¥¯ž)v~Ò¯œÎ…Ô3øZ|/²tºfoüKø¢I‰³¾›ÑC’ÆÜZT%÷¼C锉-zÔc¡[yݾobþÞ¿¯mðµ¸Ô5z«ÀŠÂ.Ww'Z^^f KKKâYDǼŠ1bŒ Æwa ÏÁ‰ù=ãN,­ÍµÞoOv¤Äù@QÇwe/æÂptv ˜€Ïú³âÌÌ á••u\Êû1,˜€]«ªªhnnN¾°0Qedh\à8ŽÿR™T<àË—/åÅÅE€Wݽ«¸¿¿ŸÞ¼yƒéšÞ-¶òšœš W¯^‘(ŠtçÞ­8ì+ÿ×ÀdðÄÄVÒ™L¦3‚ ¨– ÜÕÕEOž<¡àà`ŠŠŠ¢Ô´***¢’’ª­­¥ºº:joo§jjj¢ÑÑQ­£VxllŒÂÂÂ(22’ÒÓÓ);;›òòò¨¦¦†š››©­­íÏáîînvìöö6Ž Q™ÎÎNäÏàÞÞ^9 ÿvr9ƒOŸ=y?þgNŸ=¹þ;òðÖ» ÁIEND®B`‚poedit-3.6.3/artwork/linux/appicon/0000755000175100001660000000000015011674364013041 5poedit-3.6.3/artwork/linux/appicon/scalable/0000755000175100001660000000000015011674364014607 5poedit-3.6.3/artwork/linux/appicon/scalable/apps/0000755000175100001660000000000015011674364015552 5poedit-3.6.3/artwork/linux/appicon/scalable/apps/net.poedit.Poedit.svg0000644000175100001660000004516515011674230021512 Linux/128x128 poedit-3.6.3/artwork/linux/appicon/128x128/0000755000175100001660000000000015011674364013776 5poedit-3.6.3/artwork/linux/appicon/128x128/apps/0000755000175100001660000000000015011674364014741 5poedit-3.6.3/artwork/linux/appicon/128x128/apps/net.poedit.Poedit.png0000644000175100001660000000773615011674230020670 ‰PNG  IHDR€€Ã>aËsRGB®Îé˜IDATxìÁ€ ý©©¸½{’$i8þϪöpí“VzmÛ¶mÛ8Û¶mÛœ³¹6Æ-Tåó½×1±µ3=9]7_>yÈșܬ_V¢´ …²)Ò4~àŸ>yáÄ•ç-<ô¹3>ÿä©‹ú>iQ¥ë„Eúÿ¥{],£O6=pÜ"ÝuüBýÐñ +Ÿ0¿ï™“æ>·ìä=¹÷ÐÙ_鎠n8hI˲sÞðÐ ‹õSg½NÖ]ýfé½õí’¿ûRyàÝÕ$¿Ç&ƒ4t«ÇôǶzŒ_>Ö]Ç-ÔÏ4ïúþ0­Å¤#(Fêùs¾½W7%Ò‰ÔŽ;fȨ2R.€WA<´ß§"µÿ¨ý`nÛLj„ä#‚ò$ð먫#🺥>?øç%¿M–€„ýyëóUÌTÜE%8é$±Ž6ÊÉ4«V(f‹Å¸WzÿâŸ/»(:€zú¬ï(œÛfÌlqg¶Wl?¢}6Èßâ×òÇH@%\’³¦²UZذ.ﻕ»_ûËe÷6Ú œFñOùÓÜÖJɹqÆ´”;#ч ôXüˆñA²Gqùz:¶®eÚ´¤«ãÉ›OùÞäV@5«(Ày×ÒØ%‰„›š‘ìƒr ‹~°o°@Ǧµ$S±ÔÛÞ2éâ!SÕŒ)À9÷o;OÙcÇÌúy3ÊNÆ© ÛƒÑÍÄ·øJmÿ–ã)V2Qž!;뛇¯ÚhF±FÎþ7ÌKÿ½\òBñurìñœ)oƒxN,CX1ÍË…—yu×)•ÀN_ÊP‹U—å©ÅúŠL|mñ c^œ©ïJTGˆGÿ:€ ŽW_ð›ÕÂñ¥Fl½¿Œ——j¹J¿°ùž¹Õ>«/Vø% Þ©HNqСí{Ä,¾É™o¾Á—‘7B{B%ëÓýP™Ê€ Ñá°Ó—ÓÌþT '¡&,>!øbÒ"À˜òö³?™ÆM*jѶkìå¼jŠ¥•Å7Á—fAü†ÁtYè}¼B-V_VàñT§áÃâC8¾4ˆâ˜ã Hcí}²Bm®ÈÌv|Éãñ PêÕø2ø†#€)>À¦ÛKÛÞ¬¬®ö““†|bñð¦€ðs«|z­°óW3df¹( ÿÒÆ‚?´ow,~“ðÍ·!ø"#oȲ3sÌüpªzQgÓ]%j‘žáT“€r¿¦´Eã—…ZXü ‡¨ ~ÓFS|€9ŸN³Ë73 ›o/óÜ‘Yž?:gñƒåBÏ|ƒ)À_dÄ ™°$>¢ÆÎù\š¥{µ³ä¿­ ÀM+‹¾A0–qâT‡ýÖÝ\j1éÍqvüRš)oWË91żߵðúCÚiŸ³øµÅoÚÍ ±ÅXºg;P;=S_NQ»G`ñÍñM;@¾D añÙ>¾4{ ¶?þ°Å7ïÿÕ/,CßÕ³ø×)H¤»‹?þñÍG€ñoñ Á7Úà lذ¡I †Å!øÒÔ‚0cÆ {æGXg€jôø13üè°Å?ó#X†à‹Xü¨ë4À7è!ø`ñÇ ¾H“;€Å7ušâ8Æøbñ_eøÀâŸ:CðEïæøbñ£®Ó?Ø ðeÄøæõ=|åÚnjék×uãi(ùÂQey÷E[ØåÔ,>{ß»±‡G6—,~}|ƒ`аxrœ§»+ܵ®Dׯ2s;c8 ʾðõë{9à¡Abüùm|jç·¬)ñÙ«z¸neÑâ¿Ù»‚ø"#oÄŸÞÐÆâÉ æ´¹üë-í8 Ž~<ËýJÌnu¹ü““øñâö~[{5ù¼{€Þ’Xü@žñ. ü@¥P…¨há´§ó|en†¶„Cíw}i4阢¿¤¹ð…¼Åß`h€oÖØÇ6Wè-iLŠ×•I8ŠÝ:cܾ¶dñðƒáà?äkx¾Ï£Á×ÃéÊ{±ZÎâƒ!¾ùÝ@s|€eý³OÞÀ¶Ñ™ v€ )`h `ñë ”ù‹!æø" 7¤û·7µó®YÉ®c,~ðØc~ ü`LI;ülI ŸØ9E-zJ:P®¿$ÛNs|£)À ?Xf×εØZv€­E P[ ††Åƒ)À_Ä !ÀÒÉ1:’m©°mô•„çz*¼}FÂâ×—3Âp z|_ <ôIWñõ¹i.{©@ß6ÓÀÅ/æÑ™¸â‹»§Áâ8@¢Ú˜ãï÷à å벚ß?À¿ßÜÎo^ÛʽÊÕàsW÷ð¥ÝÓl)øœöLWÁ^oicF‹cñÍñM:@¾ÈˆòLw¥:ä×by¿HÇ~l"Ç=‘ãÊåEz$K&ïà§KZxýԸů ¾DðT° ¾ˆpæ‡'ÕNð»×µòÛ×¶Œæ X|ƒGÂLð#?pÌñÍ æ[üè딨¿lñÇ7¾Düz¸¼jñ->@lLðE,~¤uát‹?^ê Á7øV°¾`ñ£¯³ñco>„ãoܸÑâ7TÆÎ fŠ_‹iÓ¦YüëìàG½ `–žN‰rŽo!^)|á.Àâç3ß` 0Ç‹m!àQì,þøÆŒF€èñ³GüŠþß﹇,~#uñ£úVpßäcQ•g»ð^zœþ¿|‚ì¿D÷n²ø” âGý ³Æv}íÿ>ä»>GùÞ«éûéÛ(Ýx–Å-¾Dµ ¨ dôucÄ_÷¾j’bžò×A¹hñG…oðz¸¾Œ²±"Õ³=æÞÕT¸ðP¤¿›Ä{¿dñ‡)c€oº â£j¬.dÉ÷gÐ~}9Ç%õñïYüÆð ®˜âËèëdÚè8òvZÿp<8.µ(]†Å¶Œ9>€1~ bsöÀI·öI¼ûó¸³vÅ_ó<Þ³]¿A|‰b`ŽŒâ-çüð·H~è›o<Ûâ7†Á†/2úÆfû¨@û׆–iÛë’Q‹ ›ùz¸h|ÑA|‰ø X|øµŸQ‚×Ì) "B_,þ+ÿ—G Zƒ'TšÖJ¾ò|½}|¯”è X|¯” ýVpÙo^bYg}_ðPÎ÷Xüˆê,t£Tp(ûPôÈÒ” ¿@OÉ«ÇG@)aë w[üˆêì~þT=~íìg DO3FtONoìÔuø 8 6ßu0¥\¯Åor¥Á6ßx0.õø½ÅjÚh@Æ| (ørÏ#+¼:|¥ î(¦;ë¸óà°ü¾ Èv¯¡RÊYü1›óó nYͲ;Ï箽?Ä´Êjb.¨ú›‚<¾AÈ{r Çú:€þ%]ÅK?ÿºäo×vÇ[gOT à:0¡Åaž¬gåտ橜¦T_˰O¬ ÿ±iäéäÝI ŠàjTßá“`ÊðíL8 .LLÃÜv˜WÕã¯íÖô“=ç9.kdP#,ã)`òžŸLïW|íÛïJÒ’PuÛ×Pñ5ZƒÈPAÅ—~Y‚ù#ùëTC~.Ž/2<¾4ðô®€ syW)P€‹sƒø¹²pþP9gŸ{ø°(¤#¨Ö q cRš~ñîÔe-jæ§^—dr›ª‡ÑÀ¸Ç—ñü]akN¸îE,±ö؇ä³ýV@Ð#@ œ d€)_œxÝëf¨“3§ýu;ÅX2Ë%äUŒ/ã?XGÞƒ§7 m€R™®nùÁ­/ñ°È> æ 8 ´Ó>´0±èm;8‹0«³M1g¢Ã¬N‡Ž”"“T¤â DHÆLð-~ÙŠdK0P‚ Ùê|Ï`€µ]›å·,ã)`Sðì7íÁµ@è¦t¤˜ôë÷¦~ä{ò ×Q-É„Âë€Së5ÎÈ>2)ÐÈb¬.ø„ãBFùÎ`v8>Aü=n‡ ´_ƒ§¡ìöÉ91¹úè.NÌzt[€> d¾~*HíÀD }z;ßzcò½™„z3š™¾0AkÝàiR20ÃLÑàcˆÌ–¸C @ 9סGÁúŠ” @o?Wã Äç—7|)Óëv€–ú²°¨¼×±hSJ+ösÓO›9hL¢}u(1ªyöÞ›se¦Êc“Lë™­b·iU´ÔÃHh˜YÇn vW¨ÔŒ-ܰtéÒÊPªÔ3¾ÌTÉh˜Œ3¦rõŽ©MYK9gw/'Qãù[i¼v/øÔÞ‚THeŠŠÈÔD–V\áϪæ€)׃+? #íô%GL ò > ÞûJnÔÿ¨¯â9ÀŸ'¶?z–pÈHšïáÚÇ œgY–Œ$58²º‚¸d)bËú ѼÀ 4×ÑÄsûW4ŒÒL†#Ç,5±óåc:~wþºººQ;°£7qíô ëǻټy³ÃßoBȘ°ØýùŸï™}ó 5ì}°Êyô™¿añ¡ã ƒ–ºšO%”ˆñ¹9-¯®ì÷ª„tLÞd Œ¦ÏÍ;·ñìÆ‘e‡Ö/· f,‘bXðØùä0šîÆCãÖö A÷ÿL-9ÕIEND®B`‚poedit-3.6.3/artwork/linux/appicon/48x48/0000755000175100001660000000000015011674364013640 5poedit-3.6.3/artwork/linux/appicon/48x48/apps/0000755000175100001660000000000015011674364014603 5poedit-3.6.3/artwork/linux/appicon/48x48/apps/net.poedit.Poedit.png0000644000175100001660000000401115011674230020511 ‰PNG  IHDR00Wù‡sRGB®ÎéÃIDATxí™t»Æ™U»í>Û¶mÛ¶mÛ¶mÛ¶mÛ¬ålîcÎÉéÞ“vÿÆK‘Inæû®rgÃ_íßÜÌÈëó6ÎÍ2ÛÌ 5fX.™)D$ " €‚O™ã>¸1@oŽÔ¬ç¯ VòÖš–B,Ï}×R9k¿J_¢0·ï5þ–ÓO•¾~êÉSÑxÍÉ$Œ[È{˜àa8w ò§Œøòï¾#$ªÄ ÖZâz‡«´tZû]{¼í¶·oÄ'`Ž^;=ÇÚKŽÿÁ3f¢Æã´PCH¬ F âÏÃ(ò" bÁ=Ï‚ˆ0àä|ÁòùO±}ôƒ¡yN–OI‰ýÖç¬9gl˜w¼qÞb2‚: Áo'çÖ©YÓ`@j½Û;ùTÒL\1ãÜóA|? IG`œlb™ñš 8P3ïK4óîeð›ˆè×ûXpŽÄEìS}ûlÆËÆmŒ–@5¢t2š$•ŠpÖ3:xD$øY»0Æ(cúºþµI6˜w/À ÉHH%˜ˆ"/š žkxàÝ‚ÅvËg ññƒT‹RNkNÖZ"£Ž¹^¢4b-Èãã0"ÖePÌûÓC>½`Bk•é¶hä›òt¼Pæ»[óüôp!Èõ5ZVÁÜ7îÝpMü¾VCãΙd¼_ÿ~z°@ÇË%Òlú?‰ƒÚû¼#éɨsqߢ‘“|ô6bè~»‚‰ “.ŸÁDh„( ɬARÔµ´xÑæù㈠ˆËŒ:ãXJ-ˆôD…¶*ù–˜ÖGKˆUýßÍ×|Zë5Àº bp›¦/‘ô]ÈŠ`ÐÍØúd‘æi“$›!5¾!¨FË*QM~4+ŠüÁ .ÚÝ@fˆI—Kƒ¶É¥ /—ü*Ö€×hÑÈ;\î¯ÖBX“.›¡í™éñ#r3%˜rÍ _Æ Óh½ᨙÑ]W€ƒƒƒ5‹dúão``€©÷€ägûÃ=ŠÎUB‚¼µ¶Æ¢WŽ >ݤ¿ð…µꯣ·ÑåÓ"¿ YÀSL1E€×uÊëJƒ²¾Çy ø£ÿðþúfx—B}@ X[û€Ïz*ÜùEž»¿ÌcŒ¡m¸Ê5q×— qØ5FÏùá{nçBzõ„¥v±¦TÄIo ðvG™–¡˜5îëb’l’ïb6{´G«gB½ê*¡MO¬õª…±‚Ö¦jŽÈ¥"f/Å Ÿæ™sÂkN—aßù›ù¢7慟˪¦µÖ‚µÖëûŠËBhŒ{… T•OÿXä‘o LÑœ a`âÆˆ/ûâ_WÈÇQ-V¿V#”FMps™iÜCeA ÝE|àz¹AÍå=[ÉBÖÓ¼bn×O“K²ð¤©ß}ßCU }Ø2ã¸É@=¯†1×SÊ{¸bW‰ŠÄßöWè-Y¾ìÙmî&nÿ²›¾.ðY_Ìôã&Yvª´êz!ÀuÌó,`Ðk!\DÍ$ek8vÑ‘)›"\{žü±Ä´¹w­1ž“ i:ø^v3ßÑK ß½jk–ñ¿þ5:a¦hŠØnöl@k£Ç„Ö‚s:=Zë¾Ò²A½õ|@¾þªqq ª…œ`KKK}ÐÝ@ÕlØ×u7œÀúVÐø#¹\îo­çÇ4Œñ¢ËËÞt¿ó<*ï¿HvÛ£IÎ4ïXêùúÉ)A\RJ€(´€Ö7n¸ÙÍ¢üÜ”ßyV“UÁ’}Â¥†wñ‰FÀA] øðÕ ßx•o>ÂŒ? ^ ’½J [ñþ4Úá‚öÀôò›`r`»[)Þ}a]õ¼¦ézå^Jàý8Ð5ET?‹Ü±·Pyû)¤·]ÓX¸æ[í}`tw(?ˆP¼ýL:CñÑëF«çëú6Z±ˆr ‚VÌø õtFéñëiÜúHÒ+oEã'P~âF¤\µžWbª~‹ÐK‰Ø ÆgªXþæÓˆ¿ùž¼™æÓ¢tÖ.Øþnò—Jv¯s}¢á€ÔKæ°¼÷.[…@¹"%k%ãÚ¸H”lð5HvËÃhÜâP\ËtÙ1Öó~ Ž)Äm¥èy†P®PéBÒ6 ½¥²u>ÆàýNâRχãJ•wMâý/\àÜšß0vå髱@kõ£/ZídsMm0@üö9üøòYàñ[sB)b”“IA,@|üO—ý â¯)økÓœIþ!óu´ ñ >ûô'¥«§/ZÁ Ñ”ã²éˆ¦œÁ˜Ê⟃7îõ(P¼8Ò.Ëø¾F `ˆ«–ª…þ‚Ð:(|Ñ…}þ[®¬O úâw¼0Ý„•‹DØ«sÀDMC"FŒXœÆ¼Ï¡S|åL÷¡²Ë:ëyc‚W„á tc_úž‹^iç  `×§€é˜’åט#µùD͉Ù3 ÆIƒz.ìõâƒpà‘‘àðÝ¿yšñæY¡\®Ò×5̧O}íïtñ,ðPÁÙo‰‰€É€f þ½M€20´]< 8D@âÏžÿ¨Ö»Ç/@[â`&÷P?IEND®B`‚poedit-3.6.3/artwork/linux/appicon/24x24/0000755000175100001660000000000015011674364013624 5poedit-3.6.3/artwork/linux/appicon/24x24/apps/0000755000175100001660000000000015011674364014567 5poedit-3.6.3/artwork/linux/appicon/24x24/apps/net.poedit.Poedit.png0000644000175100001660000000142515011674230020503 ‰PNG  IHDRàw=øsRGB®ÎéÏIDATxµ•æÙ¡·8°ÀÒ°+Îÿ¼Vû¦ÓHŸÄIEND®B`‚poedit-3.6.3/artwork/linux/poedit-sync-symbolic.svg0000644000175100001660000000077615011674230016130 Syncpoedit-3.6.3/artwork/linux/sidebar-symbolic.svg0000644000175100001660000000044215011674230015271 Sidebarpoedit-3.6.3/artwork/linux/sidebar.png0000644000175100001660000000101415011674230013433 ‰PNG  IHDRàw=øÓIDATxb 5`LKKcUSS‹ÿÿÿÿjúïß?Æ»wï™5kÖoeeeKKË‰ŠŠŠ\Ô²àùóçߘ™™óÌ9 ]]]öOŸ>ýOMðâÅ‹ÿkÖ¬ YÆB®+7í=Çðöó/P(CEþ3ˆð±3ø:Äð÷ï_vvvŠ,øøí;ŠØ‡¯FÉÅ‚†¡iý÷¿ð¸Û%àƒ-_¥Ú:ɘú¨ªò`dD„÷ÎÚžÛŽv¾Òëo“»Áڇ߽ÿŒÔø@˜®J¿òw¶¨ ð"ä p-V^UäMUˆ¯*e·ˆÀÓhÜ d8ÖmÈ‚k;çãPgmî;Î%ÕIòÀq&ùÿ©œ52ö¹à¸Ù<=ÜÀçrÒW•ž.à"q‹’ÿtâ¥9ç~Ä+¸©2/ò$Ð,Ù‹FÈuñõLAð6ƒU“Ìïµ¼qM›@ÂKºEêÑ|ÖXÔ·ŠŸó+"nñ7uE)lÂæ01‚œ@€ðò›7o¾±²²rýþý›*†~ýúõǯ_¿þ‚-¸}ûö"`¸ÝÓÓÓV\Ÿ>}"ºnzTC2‚hhð0 ~ãááß½{÷FzgŽâóFðãÇIEND®B`‚poedit-3.6.3/artwork/linux/poedit-sync.png0000644000175100001660000000245015011674230014265 ‰PNG  IHDRÄ´l;ïIDATxÚ•“ L“Wǯ<»µ¥ÏïûÀe‹˜³ Î9ŸÅ ‚ŠVœè:A:8¥S©¼Q”´¨(/Ajå!¶”¾äkpE,¸M·,ÙXœK6çÌ…³[ÆkƒM=É/÷»÷žû¿çœ{>4“ ;ÿZ¶;QÁw«Ô²Ú66£spXé€^ÕT*d?þ­ï$æêºÈø&+uéú—T«¹Ÿ0õR?ê¬ä/ÚÛäƒÆNò^C;ÑQk!꯶Y5ᶺvr¾ŠæºO‹Ô6Vi¼Yú.Ryl¾Kåž4ߡಅ€¬K<ˆ;Áþ5\ÊêKb^ßr€Y·3…Y•˜Ë.>¢àäe”p“ÓÊ8¡¢²1Ñò:ÒGÙ~ó;/ÀÂ`즆Î5 àƒ¤Ù o5"œ³w%3)¹é•:~^©†_pö*?#OÉKæ³¶Šö0aî´4v§Z¿õ<>5õÏ @A÷¶»e*ü*º¼ƒKðâ¬Z0";ÏýJ*çhSÏyÊS/p¥GžbÙΉ9þ#Úã¥\Žòg3NÛÔC ©;Hðÿ„1¸=Á#ÙØCز¸ü»}«Äî …ŠWuþßTp…W›v[ •³÷íËe-õŸ–ý-üÙI¶W¹–oª6 ?Ðó3¸ÈßµX›hêüÁð#`‹‡9ë,'_þðœFQÇXª h·í¾k\û.wzsÙw®H„ìgê† h3f²$Â#±î†°EßMB®’7ŒãÇtլ룽çšýÝ0³þ·ÅZú½çU7 -ŸÊ9°%… þ1Ì¡·×ºlØë‘°:™‹c™¿ù¯ryGVÌQmKcƒã×…£ÓÈ·1ÕhÛ¶ o5ÝO±‡C7q'=#o§÷µ¤¡á ‡œGØm¡‹¤¯´€óÊI•IÑi­–(cÏS· 8müXÇ‹¹ø°}¨ú&QÕýÓ¨0 ñÜ)¦¼–ÞÔIŽä×òo‰³ØÅiÌ7fž²è\co|íe~RbÀB‹ÜÏdç³–jÚ‰Gmß{ÃñjÞŸËc™Y‰9,yN §!>›7_äBN›ñ¯“åy†i:Ègæ šn“#ñž#ø¾”M;•k„uWhÂZXÃïØ•ÃÊFÈa>â‚^Ñ\ÓN3öÕ¶M½$и§‹uH(àô(u«Œq<µl³ó66B^ä8ZÆ—™L&³Pá‰u÷óó[‘^8GZ®žZi˜WRXM”)œ{4N¶>þsœå1|æ@QQÑÆÊÊJÆD3Œ‡_ZZêLÓô!‹Åò^¯ÖétŸŸf³lsƒÁðÌM›‡êëë!==´Z­mÏæó»Õj5¶¶¶ú—g¢ÕD"‘½D" ŽŠŠ’GDDÃÂÂú‚ƒƒíر¢££¯9:_¿~ýÓûáááV±X\»?))‰÷_?‹Æ ãŽ!|||BBCC‹Ö­[WE.a”ø» ¯•áÇÆ>¾cµvÆ8b^Û\0LÌlŒÇë‰L¦`7…Y/÷ŸÙ÷/·%A¼ÉµµIEND®B`‚poedit-3.6.3/artwork/linux/poedit-update.png0000644000175100001660000000240715011674230014575 ‰PNG  IHDRÄ´l;ÎIDATx}Ôc#ëÇñ®º¯ï±mÛöÚ¶mÛ¶·’ÅØ¶'Ævj”Ìdl+¿ój‡G]õi÷·»Ÿ€cÓWã÷O&ø7 †,8ÜL¼¤‰m““ä Âý“Á•¿ÅžsʸôHn„ç!­Ð¥ÍCQ ÍnÄK-¸œvœ®½þŸá‘ñ‰«®».I sVõf;úúú”–…,}5¢òK‘,+†P[†“>Ð[°7xú?ŸxúF¾ûnœ zG9¤jzä+õHBᨥ˜™jœÅ¥PêÌ(0”àrh.X\Åq“ GØlô_” ¨¼rƒ^¯Z\M^ÕõÂ\Ñ ©¾¢rdZ4·´¢¹¹2SŽÝËÆÅ1KY|døÁâƒ!ìÕéµûÁ¢ÂXÝMp5nb¯é¶¬ žªjtvv²sÐÝÝŠ ’ œXBc.zè‰[„ãhÆÂR‚«a¹hl}pA\º¥@YÓ0gm 5fD% “­BLš5µu¨®®†ÆR„“¾B„½ó•”=õàcÒêkM‰9VTV×".%Úò”P˜)`«î…r`ˆªè<‰Ld‰5550˜Ì¸Ÿ¤Æ½/ƺ©>ž±™×Ÿop!P\‚D…yE°ÖxQÜSÔY׳Xxˆ«ÜI¾!Q‰ˆ’XqxÖö¶QáYÛ}  ñÈ-¯F†± Rg;T®n*º¡vu Ome±QÚÛÛ—PŒø<؈š /:Ò+Ò–!() b- Õ&D‹MHÕ7 E×€Du-¢Äôöö ×××C®TcïY>Â…fž¹½cd8|ÊÚ[M#.Æ™á(v=¸¨¡þéZå”ÃOì?³—‚E8é'@¾ÊˆÖÖV¸Ýnh4ZÌÜÁ/^ÉÆ¸|Tø×¹§­çÄग़G=ûêE¥åáJ¢ çbÌ8¦Ãn_%xÙðx<°Z­¸|Û[®¦áÈÝl$?ûšidxòw“ßcßÃ4Y²¤ ¿rXB6k±×_…mweXs3y©, …B“yÉ6cñáPP‘RxøG2kë=Ñ1º«_†rµ ì—…3ühläå³ –]cîÙ,l¿‰ÂÂBddfâj¨ûn§ã˜%Éá#Ó?ûmÛÌy»üZÎI'ÒÁfwà¦O8žËÂüsÙ˜}:S¥aÜ$ŒÙ‰”Ô4øÇKpü¾‡&­õ D1øò᫽ùÑÓçîôé8ÌÏD´ÔFO’‚'Ä~ß›€_vFcÜ„ L#öғ¦i0*丙„ã„#Ðôù”Lž°ü¬cÉá0»'?^…ão#+O‹—ø¸«Àá;Yƒc:ä&Çm¤kÿGþ6±¯oÈô—ßþæÜç¿/+þbÌòž9óâžOæÌ[„ÏÇ,ëZõÞwƒ¯>Úà¿Ûœ9sÞ cÈVr$Κ5Ë6{öìZï'`\.——¡ÌKÛ,ð¯ÂŸ{n+'“É&o“id7¹O H é ÀñãÇY´ ¶½víZ¶­{i_±‘@²œ|F^`Oü0y›Ì {‰‘“ZÒGÀH$øøøàìÙ³l{—t’bK¶“_È[´åÄùj“žIEND®B`‚poedit-3.6.3/artwork/linux/poedit-validate.png0000644000175100001660000000107115011674230015100 ‰PNG  IHDRÄ´l;IDATxµ”¬œA…ÿ"ªmÛj3lؘµÍ ¶mEµ¢Ú¶­m·s&kͶ{|ëýrîHU^ÛvlÚ¸}çª[¶mÚ˜'Æ-8ŠŠår9©T*R*•üY­Vs4 iµÚ:. Þ‹Å …".½}û6çÎ;E1 ¤×ëÅb$EºdRü) >‡¨B1’&ÛEZ!šL&±8™2s†f³Y„X|ýæ5ˆAY‰Y­V±8¹ÂhÑh4"`³Ù ÆsZ|¬y3iO“1yb´ž”>þ\ĵt×R’v7ÖH»]ÌcbAŠÍÓn·s\.ÇétÒ몽» 1iLÚßxPA1¤Àb±ð–!A*ŒvÍ»·’Ž|8Mn·›óFùšíJÕö4&iO£©g|ãæõdÚ‚­/¾¶©¨ßÉáüýkå{j|¤ ÿlÒ®ÉÅ/¹Ù‘r™zá}.¦:ÚÑ…ïרááNüý–·{Kï Ì2ˆ %ž~ie²âÉ:B•-˜k&ç¾\È’®}±ü~Yb‹&¾ûôõ?1‚êì@‡>ž¢`0H@àßÄØø˜-’bõ=ù|>žÐîuP(‚Xœ¸J.úÍ[7nÂaÞ¼ÙS¥U“ріы11†1Ž1‘11š1ˆÑÑ‚Q7ñ¿jR¢þb«µC;€ÅIEND®B`‚poedit-3.6.3/artwork/linux/poedit-update-symbolic.svg0000644000175100001660000000076515011674230016434 poedit-3.6.3/artwork/poedit-status-cat-mid.png0000644000175100001660000000034215011674230015007 ‰PNG  IHDRóÿa©IDAT8íÁ= qðïë¸×å=Èb07°™ %«<ÔÕ Qr›A)¿DyvÓuºpÂ¥¯·ð_l>à?A=H2†Æhè@N X0EòÙ “°Ïwà2Z—5L½FÐä2àóh3^çŸ;œ–¡0¹ÐWÐãc›ç]Ó¼í[¡0å7!á\û¯‡67a= ©UÖ¬ñJЮ ­f …,üá'¾»^ÕŒz‡¿IEND®B`‚poedit-3.6.3/artwork/window-close.png0000644000175100001660000000013515011674230013300 ‰PNG  IHDR Kpl_$IDATxc +øÆ„Å1%1ø„mB`²œG© „ý@^(Ñ xçc¨R¹IEND®B`‚poedit-3.6.3/artwork/ItemCommentTemplate.png0000644000175100001660000000017115011674230014603 ‰PNG  IHDRóÿa@IDATxcÀ£ ˆ7Àø Ø¥ÉP3jf,@€0OÁˆ"m‘âÙ@ˆ.I¬ €Ø™¬ÔµÙth¤}}´æ¶ÕðãIEND®B`‚poedit-3.6.3/artwork/AccountCrowdin.png0000644000175100001660000000164415011674230013616 ‰PNG  IHDR szzôkIDATxí—¬í9ÆŸ¯ãµ¥kÛ¶.Ãu´¶mK×¶mÛŒ®uŒÙùzþi&G]ó5ùe¦ÓÁ×^ž-ÿĵ{í`öb`úÙÃêm~àÜÜÜ›>Ÿoþ …^óóóŸÇÅÅ`±ý~?……HZiß .¦^7ÒŠ=Äëõ® Tã?ôæGs¤Ïç'Ÿ_àóÁFÄ/r”"Ôã3" صk×ѺVÉÿm`F´ï£½œŒOØÆ–6zîÕ7èö»î£s.¿†Ž<ödÍñg]@WÞ|Ý÷à£ôö‡ŸPck[P/ƒò׉4( ø<¸U ˆØßýHiÙ¹J@ncs+¥eåÊ>¿\€'ÜFˆ-¯¬ªóÞAJeˆ/YPqy%Îy°O÷Ao£ÇK’éÙ¹à[«ËË+ôÃñÛðßþ@Åe•ÔÐÜ D€oþnæ¾ûÑÃAjfMÍÌÒ9—]­•U¨ü%…3€>¨Wˆ~Æp»uÁxè5*þèãOKAjðmwÞ§H±ªz‰üB.·[39=£šbhOÿ€ŠÛ A÷=ð|Y‡8l0fÁ‹KKÌrˆ¨º¦f4¨ö¸ywè@¬ÆøXG£8-Ž;ë|uÛ+nºƒ&¦fT,93›’3²y?­r—¬|Yëb´3¾€*MŽ·€Ï¾ù1ý%xæå×u^¾ó 8œD¶€Ÿ÷^-à‘ÇžRgo¾ÿ‘Úwæù4Ï·/(-œ¡F€\ifD}@¢SSÛØ„azàøä”jôô˯©Ø­,p|jJåêÚÈD€C»ÃI@½aÝàùÇ&kšè§Œ,Ê/) „Á>¬ñ{à»Ã¡“¥ßÙÓGó3_qóíq+É3écFÔ/.Ø`£`C"ç;7ÚìÒ8|3ö_”gpäêÚú†Ín' Ó^Z°¶¾¾aú&<°¶¶öëM›ŒØ {+&ã­ííiê?ã(+fÇŽ§Õ54ä,­¬Ø6l6²È|øèUTR’̽OÅ &òÚc=wîÜyÜöíÛ/g®äЕ°a¸"B\ÖÀ—rÏØ&1æuà 7lg·×^{%°M²ñ~0"O³ï¾û"?6Ò’Ýëg8YõEÝIEND®B`‚poedit-3.6.3/artwork/README0000644000175100001660000000171015011674230011040 This directory holds some Poedit icons. Their authorship and licensing is as follows: The application icon as well as Poedit MIME type icons (except for platform-specific background template) are under the same license terms as Poedit itself. Toolbar icons are from the Tango Desktop Project [http://tango.freedesktop.org] and are released to the Public Domain. Status icons are from Mark James's Silk icons set [http://www.famfamfam.com/lab/icons/silk] and are under the Creative Commons Attribution 2.5 License [http://creativecommons.org/licenses/by/2.5/]. The Silk icons can also be used under Creative Commons Attribution 3.0 License [http://creativecommons.org/licenses/by/3.0/] (Hi Debian folks!) with the following requirements: "As an author, I would appreciate a reference to my authorship of the Silk icon set contents within a readme file or equivalent documentation for the software which includes the set or a subset of the icons contained within." poedit-3.6.3/artwork/poedit-status-cat-no.png0000644000175100001660000000034015011674230014650 ‰PNG  IHDRóÿa§IDAT8íÁ±ÁPÐÏmké`ï ZD $­ü†JGÂh1J,BÒÍf°Ýˆ#‘ÔMJ#ŸW¸K7çå ‡€¤p¡}W À=Èw ,Ò?ëŸQÄ*[oºH·Ì‡}šv“f:æކ­§‚Η šN‹¯FY2dŠª†­›‚<Âf2b–ļv{œÃØ:CG(ÙÃÓTõ ¾Ä¨ø+Ç÷M²7ÔÂIEND®B`‚poedit-3.6.3/artwork/SuggestionTMTemplate.png0000644000175100001660000000022715011674230014754 ‰PNG  IHDR Øâ,÷^IDATxÍÌ7A@῞êD ‚ 'äü¬UA.ÉÈP“3`r|*ÙÌÜÁÒLV  éð¥M`ôc5ê7àòض’RMâ”KÉö¯€ûÀ=Ðÿìñæ/dev/null && gtk-update-icon-cache -f -t $(iconsdir) || true install-data-hook: update-icon-cache uninstall-hook: update-icon-cache poedit-3.6.3/artwork/StatusWarning.png0000644000175100001660000000036215011674230013501 ‰PNG  IHDRóÿa¹IDATxcøzD—"LS¸€ø Ÿbvr ¨âÿP\Jª’@üÉ€÷@,BŠsàšx2±èñ¦H?†ð ˆÕ‰1`'ÌV#FvÅBx ;;Ä[ç°—ºWìqÀ Ä—‘%ê€1²4Z±Šp3êtÿÏi±1p,º<@ü$I$~ÄœÈ4¡+ˆL\6ꟸ ˆÀmÀ dì ’ˆ×P%7yCý¸‡ÊÑIEND®B`‚poedit-3.6.3/artwork/SuggestionPerfectMatch.png0000644000175100001660000000027315011674230015306 ‰PNG  IHDRľ‹‚IDATxcÈݪ@¼ˆ?BñZ¨HRˆßñd Sg©F—\wsÅÿÉg»@ìµ #‹ö¦ý¯>X–\kåÿW__ü¯9Tâ+˜wiÚÿ—_Ÿÿßyo3ˆ†I¬…êD—„[¡sdñ¾ tGjÀ¼©5鯅Š1µF^õgÂIEND®B`‚poedit-3.6.3/src/0000755000175100001660000000000015011674362007345 5poedit-3.6.3/src/icons.cpp0000644000175100001660000002046415011674230011104 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2004-2025 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 #include #include #include #include #ifdef __WXGTK__ #include #endif #include "icons.h" #include "colorscheme.h" #include "edapp.h" #include "hidpi.h" #include "utility.h" #ifndef __WXOSX__ namespace { #if defined(__WXGTK20__) && !defined(__WXGTK3__) // translates poedit item id or Tango stock item id to "legacy" GNOME id: wxString GetGnomeStockId(const wxString& id) { #define MAP(poedit, gnome) if ( id == _T(poedit) ) return _T(gnome) MAP("document-open", "gtk-open"); MAP("document-save", "gtk-save"); MAP("window-close", "gtk-close"); MAP("folder-open@symbolic", "gtk-jump-to"); MAP("list-add@symbolic", "list-add"); MAP("list-remove@symbolic", "list-remove"); #undef MAP return wxEmptyString; // no match found } #endif // __WXGTK20__ // Check if a given icon needs mirroring in right-to-left locales: bool ShouldBeMirorredInRTL(const wxArtID& id, const wxArtClient& client) { // Silence warning about unused parameter in some of the builds (void)client; static std::set s_directional = { "poedit-status-comment", "follow-link", "sidebar" }; bool mirror = s_directional.find(id) != s_directional.end(); #ifdef __WXMSW__ // Toolbar is already mirrored if (client == wxART_TOOLBAR) mirror = !mirror; #endif return mirror; } void ProcessTemplateImage(wxImage& img, bool keepOpaque, bool inverted) { int size = img.GetWidth() * img.GetHeight(); ColorScheme::Mode inverseMode = inverted ? ColorScheme::Light : ColorScheme::Dark; if (ColorScheme::GetAppMode() == inverseMode) { auto rgb = img.GetData(); for (int i = 0; i < 3*size; ++i, ++rgb) *rgb = 255 - *rgb; } // Apply 50% transparency if (!keepOpaque) { auto alpha = img.GetAlpha(); for (int i = 0; i < size; ++i, ++alpha) *alpha /= 2; } } #ifdef __WXGTK3__ // FIXME: This is not correct, should use dedicated loading API instead void ProcessSymbolicImage(wxBitmap& bmp) { wxAlphaPixelData data(bmp); if (!data) return; const char color = (ColorScheme::GetAppMode() == ColorScheme::Light) ? 0 : 255; wxAlphaPixelData::Iterator p(data); for (int y = 0; y < data.GetHeight(); ++y) { wxAlphaPixelData::Iterator rowStart = p; for (int x = 0; x < data.GetWidth(); ++x, ++p) { if (p.Red() == 0xBE && p.Green() == 0xBE && p.Blue() == 0xBE) p.Red() = p.Green() = p.Blue() = color; } p = rowStart; p.OffsetY(data, 1); } } #endif // __WXGTK3__ } // anonymous namespace PoeditArtProvider::PoeditArtProvider() { #ifdef __WXGTK3__ gtk_icon_theme_prepend_search_path(gtk_icon_theme_get_default(), GetIconsDir().fn_str()); #endif } wxString PoeditArtProvider::GetIconsDir() { #if defined(__WXMSW__) return wxStandardPaths::Get().GetResourcesDir() + "\\Resources"; #else return wxStandardPaths::Get().GetInstallPrefix() + "/share/poedit/icons"; #endif } wxBitmap PoeditArtProvider::CreateBitmap(const wxArtID& id_, const wxArtClient& client, const wxSize& size) { wxLogTrace("poedit.icons", "getting icon '%s'", id_.c_str()); wxArtID id(id_); #define CHECK_FOR_VARIANT(name) \ const bool name##Variant = id.Contains("@" #name); \ if (name##Variant) \ id.Replace("@" #name, "") CHECK_FOR_VARIANT(disabled); CHECK_FOR_VARIANT(opaque); CHECK_FOR_VARIANT(inverted); // Silence warning about unused parameter in some of the builds (void)client; (void)size; // Note: On Unix, this code is only called as last resort, if standard // theme provider (that uses current icon theme and files from // /usr/share/icons/) didn't find any matching icon. #if defined(__WXGTK20__) && !defined(__WXGTK3__) // try legacy GNOME icons from standard theme: wxString gnomeId = GetGnomeStockId(id); if ( !gnomeId.empty() ) { wxLogTrace("poedit.icons", "-> legacy '%s'", gnomeId.c_str()); wxBitmap gbmp(wxArtProvider::GetBitmap(gnomeId, client, size)); if ( gbmp.Ok() ) return gbmp; } #endif // defined(__WXGTK20__) && !defined(__WXGTK3__) #ifdef __WXGTK3__ CHECK_FOR_VARIANT(symbolic); if (symbolicVariant) { wxBitmap bmp(wxArtProvider::GetBitmap(id + "-symbolic", client, size)); if (bmp.Ok()) { ProcessSymbolicImage(bmp); return bmp; } } #endif auto iconsdir = GetIconsDir(); if ( !wxDirExists(iconsdir) ) { wxLogTrace("poedit.icons", "icons dir %s not found", iconsdir.c_str()); return wxNullBitmap; } wxString iconfile; iconfile.Printf("%s/%s", iconsdir, id); wxLogTrace("poedit.icons", "loading from %s", iconfile); ScaledImage icon; if (ColorScheme::GetAppMode() == ColorScheme::Dark) icon = LoadScaledBitmap(iconfile + "Dark"); if (!icon.IsOk()) icon = LoadScaledBitmap(iconfile); if (!icon.IsOk()) { wxLogTrace("poedit.icons", "failed to load icon '%s'", id); return wxNullBitmap; } if (id.ends_with("Template")) ProcessTemplateImage(icon.image, opaqueVariant, invertedVariant); if (disabledVariant) icon.image = icon.image.ConvertToDisabled(); if (wxTheApp->GetLayoutDirection() == wxLayout_RightToLeft && ShouldBeMirorredInRTL(id, client)) { icon.image = icon.image.Mirror(); } #ifdef __WXMSW__ if (client == wxART_TOOLBAR) { const int padding = PX(1); auto sz = icon.image.GetSize(); sz.IncBy(padding * 2); icon.image.Resize(sz, wxPoint(padding, padding)); } #endif // __WXMSW__ auto bitmap = wxBitmap(icon.image); bitmap.SetScaleFactor(icon.scale); return bitmap; } #endif // !__WXOSX__ wxBitmap GetPoeditAppIcon([[maybe_unused]]int pointSize) { #if defined(__WXMSW__) const auto scale = HiDPIScalingFactor(); int loadSize; if (scale == 1.0) loadSize = pointSize; else if (scale == 2.0) loadSize = 2 * pointSize; else loadSize = 256; if (loadSize != 48 && loadSize != 64 && loadSize != 256) loadSize = 256; // 128px etc. is not present wxIcon appicon("appicon", wxBITMAP_TYPE_ICO_RESOURCE, loadSize, loadSize); if (scale == 1.0 && loadSize == pointSize) { return appicon; } else if (scale == 2.0 && loadSize == 2 * pointSize) { appicon.SetScaleFactor(scale); return appicon; } else { wxBitmap appbmp(appicon); appicon.CopyFromBitmap(wxBitmap(appbmp.ConvertToImage().Scale(PX(pointSize), PX(pointSize), wxIMAGE_QUALITY_BICUBIC))); appicon.SetScaleFactor(scale); return appicon; } #elif defined(__WXGTK__) return wxArtProvider::GetIcon("net.poedit.Poedit", wxART_FRAME_ICON, wxSize(pointSize, pointSize)); #else return wxArtProvider::GetBitmap("Poedit"); #endif } poedit-3.6.3/src/http_client.h0000644000175100001660000002013415011674230011745 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2025 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 "concurrency.h" #include "json.h" #include #include #include #include #include class http_client; /** File downloaded using http_client::download(). The file is stored on disk in a unique temporary directory using filename corresponding to the URL. The temporary directory and the file exist only for the lifetime of the downloaded_file object and are deleted after destructions. You must read the file or move it elsewhere before that. */ class downloaded_file { public: downloaded_file(const std::string& filename = "", const std::string& etag = ""); ~downloaded_file(); /// Return location of the temporary file wxFileName filename() const; /// Return downloaded file's ETag if present or empty string otherwise std::string etag() const; /// Move the file to a different location void move_to(const wxFileName& target); private: class impl; // would prefer unique_ptr and movable-only downloaded_file class, // but pplx concurrency runtime in VC++ can't hold movable-only results // (https://github.com/microsoft/cpprestsdk/pull/47) std::shared_ptr m_impl; }; /// Abstract base class for encoded body data class http_body_data { public: http_body_data() {} virtual ~http_body_data() {} /// Content-Type header to use with the data. virtual std::string content_type() const = 0; /// Returns generated body of the request. virtual std::string body() const = 0; }; /// Stores unspecified binary data class octet_stream_data : public http_body_data { public: octet_stream_data(const std::string& body) : m_body(body) {}; /// Content-Type header to use with the data. std::string content_type() const override { return "application/octet-stream"; }; /// Returns generated body of the request. std::string body() const override { return m_body; }; private: std::string m_body; }; /// Stores POSTed data (RFC 1867) class multipart_form_data : public http_body_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); std::string content_type() const override; std::string body() const override; private: std::string m_boundary; std::string m_body; }; /// Stores application/x-www-form-urlencoded data class urlencoded_data : public http_body_data { public: /// Add a form value. void add_value(const std::string& name, const std::string& value); std::string content_type() const override { return "application/x-www-form-urlencoded"; } std::string body() const override { return m_body; } private: std::string m_body; }; /// Stores application/json data class json_data : public http_body_data { public: json_data(const json& data); std::string content_type() const override { return "application/json"; } std::string body() const override { return m_body; } private: std::string m_body; }; // Exception thrown when HTTP request fails with error status code class http_response_error : public std::runtime_error { public: http_response_error(int status, const std::string& what) : std::runtime_error(what), m_status(status) {} int status_code() const { return m_status; } private: int m_status; }; /** Client for accessing HTTP REST APIs. */ class http_client { public: /// Connection flags for the client. enum flags { // currently no flags are used default_flags = 0 }; using headers = std::vector>; /** 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 = default_flags); virtual ~http_client(); #ifndef __DARWIN__ /// Sets Accept-Language to use (language tag; managed automatically on macOS) static void set_ui_language(const std::string& lang); #endif /// Sets Authorization header to be used in all requests void set_authorization(const std::string& auth); /// Perform a GET request at the given URL dispatch::future get(const std::string& url, const headers& hdrs = headers()); /** Perform a GET request and store the body in a file. This method supports ETag handling. If the headers include If-None-Match value and the server returns 304 Not Modified, downloaded_file is not returned and an exception is thrown instead. */ dispatch::future download(const std::string& url, const headers& hdrs = headers()); /** Convenience variant of download() for downloading without having full http_client. This is useful e.g. when downloading from unknown host. @a url is absolute URL. */ static dispatch::future download_from_anywhere(const std::string& url, const headers& hdrs = headers()); /** Perform a POST request with multipart/form-data formatted @a params. */ dispatch::future post(const std::string& url, const http_body_data& data, const headers& hdrs = headers()); // Helper for encoding text as URL-encoded UTF-8 enum encode_flags { encode_no_plus = 1, // don't encode spaces as + encode_keep_slash = 2, // don't encode / as %2f }; static std::string url_encode(const std::string& s, int flags = 0); static std::string url_encode(const std::wstring& s, int flags = 0); protected: /** Extract more detailed, client specific error response from the JSON body of error response, if available. Does nothing by default, but can be overridden in derived class. */ virtual std::string parse_json_error(const json& /*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; std::unique_ptr m_impl; }; /// Monitor if networking is available class http_reachability { public: /// Creates an instance of the monitor object. http_reachability(const std::string& url); ~http_reachability(); /// Return true if the host is reachable, i.e. client is online bool is_reachable() const; private: class impl; std::unique_ptr m_impl; }; #endif // HAVE_HTTP_CLIENT #endif // Poedit_http_client_h poedit-3.6.3/src/Makefile.in0000644000175100001660000013102215011674351011327 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = poedit$(EXEEXT) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/admin/ax_boost_base.m4 \ $(top_srcdir)/admin/ax_boost_iostreams.m4 \ $(top_srcdir)/admin/ax_boost_system.m4 \ $(top_srcdir)/admin/ax_boost_thread.m4 \ $(top_srcdir)/admin/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/admin/wxwin.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am__poedit_SOURCES_DIST = app_updates.cpp app_updates.h \ attentionbar.cpp attentionbar.h cat_operations.h \ cat_operations.cpp cat_update.h cat_update.cpp cat_sorting.cpp \ cat_sorting.h catalog.cpp catalog.h catalog_po.cpp \ catalog_po.h catalog_json.cpp catalog_json.h catalog_xcloc.cpp \ catalog_xcloc.h catalog_xliff.cpp catalog_xliff.h uilang.cpp \ uilang.h cloud_sync.h colorscheme.h colorscheme.cpp \ commentdlg.h commentdlg.cpp concurrency.cpp concurrency.h \ configuration.cpp configuration.h custom_buttons.cpp \ custom_buttons.h customcontrols.cpp customcontrols.h \ custom_notebook.cpp custom_notebook.h edapp.cpp edapp.h \ edframe.cpp edframe.h editing_area.cpp editing_area.h \ edlistctrl.cpp edlistctrl.h errors.cpp errors.h \ export_html.cpp extractors/extractor.cpp \ extractors/extractor.h extractors/extractor_gettext.cpp \ extractors/extractor_legacy.cpp extractors/extractor_legacy.h \ filemonitor.cpp filemonitor.h fileviewer.cpp \ fileviewer.extensions.h fileviewer.h findframe.cpp findframe.h \ gexecute.h gexecute.cpp hidpi.cpp hidpi.h icons.h icons.cpp \ language.cpp language.h language_impl_legacy.h \ language_impl_plurals.h languagectrl.cpp languagectrl.h \ logcapture.h main_toolbar.h wx/main_toolbar.cpp manager.h \ manager.cpp menus.h menus.cpp pluralforms/pl_evaluate.cpp \ pluralforms/pl_evaluate.h prefsdlg.cpp prefsdlg.h \ pretranslate.cpp pretranslate.h progress.h progress_ui.h \ progress.cpp progress_ui.cpp propertiesdlg.cpp propertiesdlg.h \ qa_checks.cpp qa_checks.h recent_files.cpp recent_files.h \ sidebar.cpp sidebar.h spellchecking.h spellchecking.cpp \ static_ids.h str_helpers.h subprocess.h subprocess.cpp \ syntaxhighlighter.cpp syntaxhighlighter.h text_control.h \ text_control.cpp titleless_window.h titleless_window.cpp \ tm/suggestions.cpp tm/suggestions.h tm/transmem.cpp \ tm/transmem.h tm/tmx_io.cpp tm/tmx_io.h unicode_helpers.h \ unicode_helpers.cpp utility.cpp utility.h version.h \ welcomescreen.cpp welcomescreen.h pugixml.h http_client.h \ http_client.cpp http_client_cpprestsdk.cpp cloud_accounts.h \ cloud_accounts.cpp cloud_accounts_ui.h cloud_accounts_ui.cpp \ crowdin_client.h crowdin_client.cpp crowdin_gui.h \ crowdin_gui.cpp localazy_client.h localazy_client.cpp \ localazy_gui.h localazy_gui.cpp keychain/keytar_posix.cc \ keychain/keytar.h json.h am__dirstamp = $(am__leading_dot)dirstamp @HAVE_CPPREST_TRUE@am__objects_1 = http_client.$(OBJEXT) \ @HAVE_CPPREST_TRUE@ http_client_cpprestsdk.$(OBJEXT) \ @HAVE_CPPREST_TRUE@ cloud_accounts.$(OBJEXT) \ @HAVE_CPPREST_TRUE@ cloud_accounts_ui.$(OBJEXT) \ @HAVE_CPPREST_TRUE@ crowdin_client.$(OBJEXT) \ @HAVE_CPPREST_TRUE@ crowdin_gui.$(OBJEXT) \ @HAVE_CPPREST_TRUE@ localazy_client.$(OBJEXT) \ @HAVE_CPPREST_TRUE@ localazy_gui.$(OBJEXT) \ @HAVE_CPPREST_TRUE@ keychain/keytar_posix.$(OBJEXT) am_poedit_OBJECTS = app_updates.$(OBJEXT) attentionbar.$(OBJEXT) \ cat_operations.$(OBJEXT) cat_update.$(OBJEXT) \ cat_sorting.$(OBJEXT) catalog.$(OBJEXT) catalog_po.$(OBJEXT) \ catalog_json.$(OBJEXT) catalog_xcloc.$(OBJEXT) \ catalog_xliff.$(OBJEXT) uilang.$(OBJEXT) colorscheme.$(OBJEXT) \ commentdlg.$(OBJEXT) concurrency.$(OBJEXT) \ configuration.$(OBJEXT) custom_buttons.$(OBJEXT) \ customcontrols.$(OBJEXT) custom_notebook.$(OBJEXT) \ edapp.$(OBJEXT) edframe.$(OBJEXT) editing_area.$(OBJEXT) \ edlistctrl.$(OBJEXT) errors.$(OBJEXT) export_html.$(OBJEXT) \ extractors/extractor.$(OBJEXT) \ extractors/extractor_gettext.$(OBJEXT) \ extractors/extractor_legacy.$(OBJEXT) filemonitor.$(OBJEXT) \ fileviewer.$(OBJEXT) findframe.$(OBJEXT) gexecute.$(OBJEXT) \ hidpi.$(OBJEXT) icons.$(OBJEXT) language.$(OBJEXT) \ languagectrl.$(OBJEXT) wx/main_toolbar.$(OBJEXT) \ manager.$(OBJEXT) menus.$(OBJEXT) \ pluralforms/pl_evaluate.$(OBJEXT) prefsdlg.$(OBJEXT) \ pretranslate.$(OBJEXT) progress.$(OBJEXT) \ progress_ui.$(OBJEXT) propertiesdlg.$(OBJEXT) \ qa_checks.$(OBJEXT) recent_files.$(OBJEXT) sidebar.$(OBJEXT) \ spellchecking.$(OBJEXT) subprocess.$(OBJEXT) \ syntaxhighlighter.$(OBJEXT) text_control.$(OBJEXT) \ titleless_window.$(OBJEXT) tm/suggestions.$(OBJEXT) \ tm/transmem.$(OBJEXT) tm/tmx_io.$(OBJEXT) \ unicode_helpers.$(OBJEXT) utility.$(OBJEXT) \ welcomescreen.$(OBJEXT) $(am__objects_1) nodist_poedit_OBJECTS = compiled_xrc.$(OBJEXT) poedit_OBJECTS = $(am_poedit_OBJECTS) $(nodist_poedit_OBJECTS) am__DEPENDENCIES_1 = @HAVE_CPPREST_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) \ @HAVE_CPPREST_TRUE@ $(am__DEPENDENCIES_1) poedit_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/admin/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/app_updates.Po \ ./$(DEPDIR)/attentionbar.Po ./$(DEPDIR)/cat_operations.Po \ ./$(DEPDIR)/cat_sorting.Po ./$(DEPDIR)/cat_update.Po \ ./$(DEPDIR)/catalog.Po ./$(DEPDIR)/catalog_json.Po \ ./$(DEPDIR)/catalog_po.Po ./$(DEPDIR)/catalog_xcloc.Po \ ./$(DEPDIR)/catalog_xliff.Po ./$(DEPDIR)/cloud_accounts.Po \ ./$(DEPDIR)/cloud_accounts_ui.Po ./$(DEPDIR)/colorscheme.Po \ ./$(DEPDIR)/commentdlg.Po ./$(DEPDIR)/compiled_xrc.Po \ ./$(DEPDIR)/concurrency.Po ./$(DEPDIR)/configuration.Po \ ./$(DEPDIR)/crowdin_client.Po ./$(DEPDIR)/crowdin_gui.Po \ ./$(DEPDIR)/custom_buttons.Po ./$(DEPDIR)/custom_notebook.Po \ ./$(DEPDIR)/customcontrols.Po ./$(DEPDIR)/edapp.Po \ ./$(DEPDIR)/edframe.Po ./$(DEPDIR)/editing_area.Po \ ./$(DEPDIR)/edlistctrl.Po ./$(DEPDIR)/errors.Po \ ./$(DEPDIR)/export_html.Po ./$(DEPDIR)/filemonitor.Po \ ./$(DEPDIR)/fileviewer.Po ./$(DEPDIR)/findframe.Po \ ./$(DEPDIR)/gexecute.Po ./$(DEPDIR)/hidpi.Po \ ./$(DEPDIR)/http_client.Po \ ./$(DEPDIR)/http_client_cpprestsdk.Po ./$(DEPDIR)/icons.Po \ ./$(DEPDIR)/language.Po ./$(DEPDIR)/languagectrl.Po \ ./$(DEPDIR)/localazy_client.Po ./$(DEPDIR)/localazy_gui.Po \ ./$(DEPDIR)/manager.Po ./$(DEPDIR)/menus.Po \ ./$(DEPDIR)/prefsdlg.Po ./$(DEPDIR)/pretranslate.Po \ ./$(DEPDIR)/progress.Po ./$(DEPDIR)/progress_ui.Po \ ./$(DEPDIR)/propertiesdlg.Po ./$(DEPDIR)/qa_checks.Po \ ./$(DEPDIR)/recent_files.Po ./$(DEPDIR)/sidebar.Po \ ./$(DEPDIR)/spellchecking.Po ./$(DEPDIR)/subprocess.Po \ ./$(DEPDIR)/syntaxhighlighter.Po ./$(DEPDIR)/text_control.Po \ ./$(DEPDIR)/titleless_window.Po ./$(DEPDIR)/uilang.Po \ ./$(DEPDIR)/unicode_helpers.Po ./$(DEPDIR)/utility.Po \ ./$(DEPDIR)/welcomescreen.Po extractors/$(DEPDIR)/extractor.Po \ extractors/$(DEPDIR)/extractor_gettext.Po \ extractors/$(DEPDIR)/extractor_legacy.Po \ keychain/$(DEPDIR)/keytar_posix.Po \ pluralforms/$(DEPDIR)/pl_evaluate.Po \ tm/$(DEPDIR)/suggestions.Po tm/$(DEPDIR)/tmx_io.Po \ tm/$(DEPDIR)/transmem.Po wx/$(DEPDIR)/main_toolbar.Po am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(poedit_SOURCES) $(nodist_poedit_SOURCES) DIST_SOURCES = $(am__poedit_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/admin/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_IOSTREAMS_LIB = @BOOST_IOSTREAMS_LIB@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ BOOST_SYSTEM_LIB = @BOOST_SYSTEM_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLD2_LIBS = @CLD2_LIBS@ CPPFLAGS = @CPPFLAGS@ CPPREST_LIBS = @CPPREST_LIBS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ HAVE_CXX17 = @HAVE_CXX17@ ICU_CFLAGS = @ICU_CFLAGS@ ICU_LIBS = @ICU_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ 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@ LUCENE_LIBS = @LUCENE_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PUGIXML_CFLAGS = @PUGIXML_CFLAGS@ PUGIXML_LIBS = @PUGIXML_LIBS@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WXRC = @WXRC@ WX_CFLAGS = @WX_CFLAGS@ WX_CFLAGS_ONLY = @WX_CFLAGS_ONLY@ WX_CONFIG_PATH = @WX_CONFIG_PATH@ WX_CONFIG_WITH_ARGS = @WX_CONFIG_WITH_ARGS@ WX_CPPFLAGS = @WX_CPPFLAGS@ WX_CXXFLAGS = @WX_CXXFLAGS@ WX_CXXFLAGS_ONLY = @WX_CXXFLAGS_ONLY@ WX_LIBS = @WX_LIBS@ WX_LIBS_STATIC = @WX_LIBS_STATIC@ WX_RESCOMP = @WX_RESCOMP@ WX_VERSION = @WX_VERSION@ WX_VERSION_MAJOR = @WX_VERSION_MAJOR@ WX_VERSION_MICRO = @WX_VERSION_MICRO@ WX_VERSION_MINOR = @WX_VERSION_MINOR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @HAVE_CPPREST_TRUE@ACCOUNTS_SUPPORT_SRC = \ @HAVE_CPPREST_TRUE@ http_client.h http_client.cpp http_client_cpprestsdk.cpp \ @HAVE_CPPREST_TRUE@ cloud_accounts.h cloud_accounts.cpp cloud_accounts_ui.h cloud_accounts_ui.cpp \ @HAVE_CPPREST_TRUE@ crowdin_client.h crowdin_client.cpp \ @HAVE_CPPREST_TRUE@ crowdin_gui.h crowdin_gui.cpp \ @HAVE_CPPREST_TRUE@ localazy_client.h localazy_client.cpp \ @HAVE_CPPREST_TRUE@ localazy_gui.h localazy_gui.cpp \ @HAVE_CPPREST_TRUE@ keychain/keytar_posix.cc keychain/keytar.h \ @HAVE_CPPREST_TRUE@ json.h @HAVE_CPPREST_TRUE@ACCOUNTS_SUPPORT_LIBS = $(CPPREST_LIBS) $(LIBSECRET_LIBS) poedit_SOURCES = \ app_updates.cpp app_updates.h \ attentionbar.cpp attentionbar.h \ cat_operations.h cat_operations.cpp \ cat_update.h cat_update.cpp \ cat_sorting.cpp cat_sorting.h \ catalog.cpp catalog.h \ catalog_po.cpp catalog_po.h \ catalog_json.cpp catalog_json.h \ catalog_xcloc.cpp catalog_xcloc.h \ catalog_xliff.cpp catalog_xliff.h \ uilang.cpp uilang.h \ cloud_sync.h \ colorscheme.h colorscheme.cpp \ commentdlg.h commentdlg.cpp \ concurrency.cpp concurrency.h \ configuration.cpp configuration.h \ custom_buttons.cpp custom_buttons.h \ customcontrols.cpp customcontrols.h \ custom_notebook.cpp custom_notebook.h \ edapp.cpp edapp.h \ edframe.cpp edframe.h \ editing_area.cpp editing_area.h \ edlistctrl.cpp edlistctrl.h \ errors.cpp errors.h \ export_html.cpp \ extractors/extractor.cpp extractors/extractor.h \ extractors/extractor_gettext.cpp \ extractors/extractor_legacy.cpp extractors/extractor_legacy.h \ filemonitor.cpp filemonitor.h \ fileviewer.cpp fileviewer.extensions.h fileviewer.h \ findframe.cpp findframe.h \ gexecute.h gexecute.cpp \ hidpi.cpp hidpi.h \ icons.h icons.cpp \ language.cpp language.h \ language_impl_legacy.h language_impl_plurals.h \ languagectrl.cpp languagectrl.h \ logcapture.h \ main_toolbar.h wx/main_toolbar.cpp \ manager.h manager.cpp \ menus.h menus.cpp \ pluralforms/pl_evaluate.cpp pluralforms/pl_evaluate.h \ prefsdlg.cpp prefsdlg.h \ pretranslate.cpp pretranslate.h \ progress.h progress_ui.h progress.cpp progress_ui.cpp \ propertiesdlg.cpp propertiesdlg.h \ qa_checks.cpp qa_checks.h \ recent_files.cpp recent_files.h \ sidebar.cpp sidebar.h \ spellchecking.h spellchecking.cpp \ static_ids.h \ str_helpers.h \ subprocess.h subprocess.cpp \ syntaxhighlighter.cpp syntaxhighlighter.h \ text_control.h text_control.cpp \ titleless_window.h titleless_window.cpp \ tm/suggestions.cpp tm/suggestions.h \ tm/transmem.cpp tm/transmem.h \ tm/tmx_io.cpp tm/tmx_io.h \ unicode_helpers.h unicode_helpers.cpp \ utility.cpp utility.h \ version.h \ welcomescreen.cpp welcomescreen.h \ pugixml.h \ $(ACCOUNTS_SUPPORT_SRC) nodist_poedit_SOURCES = compiled_xrc.cpp poedit_LDADD = $(WX_LIBS) $(LUCENE_LIBS) $(CLD2_LIBS) $(PUGIXML_LIBS) $(ACCOUNTS_SUPPORT_LIBS) \ $(BOOST_LDFLAGS) $(BOOST_THREAD_LIB) $(BOOST_SYSTEM_LIB) XRC_RESOURCES = \ $(srcdir)/resources/comment.xrc \ $(srcdir)/resources/manager.xrc \ $(srcdir)/resources/menus.xrc \ $(srcdir)/resources/prefs.xrc \ $(srcdir)/resources/properties.xrc \ $(srcdir)/resources/toolbar.xrc DISTCLEANFILES = $(nodist_poedit_SOURCES) EXTRA_DIST = $(XRC_RESOURCES) pluralforms/COPYING all: all-am .SUFFIXES: .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 \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) extractors/$(am__dirstamp): @$(MKDIR_P) extractors @: > extractors/$(am__dirstamp) extractors/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) extractors/$(DEPDIR) @: > extractors/$(DEPDIR)/$(am__dirstamp) extractors/extractor.$(OBJEXT): extractors/$(am__dirstamp) \ extractors/$(DEPDIR)/$(am__dirstamp) extractors/extractor_gettext.$(OBJEXT): extractors/$(am__dirstamp) \ extractors/$(DEPDIR)/$(am__dirstamp) extractors/extractor_legacy.$(OBJEXT): extractors/$(am__dirstamp) \ extractors/$(DEPDIR)/$(am__dirstamp) wx/$(am__dirstamp): @$(MKDIR_P) wx @: > wx/$(am__dirstamp) wx/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) wx/$(DEPDIR) @: > wx/$(DEPDIR)/$(am__dirstamp) wx/main_toolbar.$(OBJEXT): wx/$(am__dirstamp) \ wx/$(DEPDIR)/$(am__dirstamp) pluralforms/$(am__dirstamp): @$(MKDIR_P) pluralforms @: > pluralforms/$(am__dirstamp) pluralforms/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) pluralforms/$(DEPDIR) @: > pluralforms/$(DEPDIR)/$(am__dirstamp) pluralforms/pl_evaluate.$(OBJEXT): pluralforms/$(am__dirstamp) \ pluralforms/$(DEPDIR)/$(am__dirstamp) tm/$(am__dirstamp): @$(MKDIR_P) tm @: > tm/$(am__dirstamp) tm/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) tm/$(DEPDIR) @: > tm/$(DEPDIR)/$(am__dirstamp) tm/suggestions.$(OBJEXT): tm/$(am__dirstamp) \ tm/$(DEPDIR)/$(am__dirstamp) tm/transmem.$(OBJEXT): tm/$(am__dirstamp) tm/$(DEPDIR)/$(am__dirstamp) tm/tmx_io.$(OBJEXT): tm/$(am__dirstamp) tm/$(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) poedit$(EXEEXT): $(poedit_OBJECTS) $(poedit_DEPENDENCIES) $(EXTRA_poedit_DEPENDENCIES) @rm -f poedit$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(poedit_OBJECTS) $(poedit_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f extractors/*.$(OBJEXT) -rm -f keychain/*.$(OBJEXT) -rm -f pluralforms/*.$(OBJEXT) -rm -f tm/*.$(OBJEXT) -rm -f wx/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/app_updates.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attentionbar.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cat_operations.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cat_sorting.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cat_update.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/catalog.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/catalog_json.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/catalog_po.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/catalog_xcloc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/catalog_xliff.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cloud_accounts.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cloud_accounts_ui.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/colorscheme.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commentdlg.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compiled_xrc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/concurrency.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/configuration.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crowdin_client.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crowdin_gui.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/custom_buttons.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/custom_notebook.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/customcontrols.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edapp.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edframe.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/editing_area.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edlistctrl.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errors.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/export_html.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filemonitor.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileviewer.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/findframe.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gexecute.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hidpi.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http_client.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http_client_cpprestsdk.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icons.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/language.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/languagectrl.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localazy_client.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localazy_gui.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/manager.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menus.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prefsdlg.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pretranslate.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progress.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progress_ui.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/propertiesdlg.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qa_checks.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recent_files.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sidebar.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spellchecking.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subprocess.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syntaxhighlighter.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text_control.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/titleless_window.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uilang.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicode_helpers.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utility.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/welcomescreen.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@extractors/$(DEPDIR)/extractor.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@extractors/$(DEPDIR)/extractor_gettext.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@extractors/$(DEPDIR)/extractor_legacy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@keychain/$(DEPDIR)/keytar_posix.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@pluralforms/$(DEPDIR)/pl_evaluate.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tm/$(DEPDIR)/suggestions.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tm/$(DEPDIR)/tmx_io.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tm/$(DEPDIR)/transmem.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@wx/$(DEPDIR)/main_toolbar.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: 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 extractors/$(DEPDIR)/$(am__dirstamp) -rm -f extractors/$(am__dirstamp) -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) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/app_updates.Po -rm -f ./$(DEPDIR)/attentionbar.Po -rm -f ./$(DEPDIR)/cat_operations.Po -rm -f ./$(DEPDIR)/cat_sorting.Po -rm -f ./$(DEPDIR)/cat_update.Po -rm -f ./$(DEPDIR)/catalog.Po -rm -f ./$(DEPDIR)/catalog_json.Po -rm -f ./$(DEPDIR)/catalog_po.Po -rm -f ./$(DEPDIR)/catalog_xcloc.Po -rm -f ./$(DEPDIR)/catalog_xliff.Po -rm -f ./$(DEPDIR)/cloud_accounts.Po -rm -f ./$(DEPDIR)/cloud_accounts_ui.Po -rm -f ./$(DEPDIR)/colorscheme.Po -rm -f ./$(DEPDIR)/commentdlg.Po -rm -f ./$(DEPDIR)/compiled_xrc.Po -rm -f ./$(DEPDIR)/concurrency.Po -rm -f ./$(DEPDIR)/configuration.Po -rm -f ./$(DEPDIR)/crowdin_client.Po -rm -f ./$(DEPDIR)/crowdin_gui.Po -rm -f ./$(DEPDIR)/custom_buttons.Po -rm -f ./$(DEPDIR)/custom_notebook.Po -rm -f ./$(DEPDIR)/customcontrols.Po -rm -f ./$(DEPDIR)/edapp.Po -rm -f ./$(DEPDIR)/edframe.Po -rm -f ./$(DEPDIR)/editing_area.Po -rm -f ./$(DEPDIR)/edlistctrl.Po -rm -f ./$(DEPDIR)/errors.Po -rm -f ./$(DEPDIR)/export_html.Po -rm -f ./$(DEPDIR)/filemonitor.Po -rm -f ./$(DEPDIR)/fileviewer.Po -rm -f ./$(DEPDIR)/findframe.Po -rm -f ./$(DEPDIR)/gexecute.Po -rm -f ./$(DEPDIR)/hidpi.Po -rm -f ./$(DEPDIR)/http_client.Po -rm -f ./$(DEPDIR)/http_client_cpprestsdk.Po -rm -f ./$(DEPDIR)/icons.Po -rm -f ./$(DEPDIR)/language.Po -rm -f ./$(DEPDIR)/languagectrl.Po -rm -f ./$(DEPDIR)/localazy_client.Po -rm -f ./$(DEPDIR)/localazy_gui.Po -rm -f ./$(DEPDIR)/manager.Po -rm -f ./$(DEPDIR)/menus.Po -rm -f ./$(DEPDIR)/prefsdlg.Po -rm -f ./$(DEPDIR)/pretranslate.Po -rm -f ./$(DEPDIR)/progress.Po -rm -f ./$(DEPDIR)/progress_ui.Po -rm -f ./$(DEPDIR)/propertiesdlg.Po -rm -f ./$(DEPDIR)/qa_checks.Po -rm -f ./$(DEPDIR)/recent_files.Po -rm -f ./$(DEPDIR)/sidebar.Po -rm -f ./$(DEPDIR)/spellchecking.Po -rm -f ./$(DEPDIR)/subprocess.Po -rm -f ./$(DEPDIR)/syntaxhighlighter.Po -rm -f ./$(DEPDIR)/text_control.Po -rm -f ./$(DEPDIR)/titleless_window.Po -rm -f ./$(DEPDIR)/uilang.Po -rm -f ./$(DEPDIR)/unicode_helpers.Po -rm -f ./$(DEPDIR)/utility.Po -rm -f ./$(DEPDIR)/welcomescreen.Po -rm -f extractors/$(DEPDIR)/extractor.Po -rm -f extractors/$(DEPDIR)/extractor_gettext.Po -rm -f extractors/$(DEPDIR)/extractor_legacy.Po -rm -f keychain/$(DEPDIR)/keytar_posix.Po -rm -f pluralforms/$(DEPDIR)/pl_evaluate.Po -rm -f tm/$(DEPDIR)/suggestions.Po -rm -f tm/$(DEPDIR)/tmx_io.Po -rm -f tm/$(DEPDIR)/transmem.Po -rm -f wx/$(DEPDIR)/main_toolbar.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/app_updates.Po -rm -f ./$(DEPDIR)/attentionbar.Po -rm -f ./$(DEPDIR)/cat_operations.Po -rm -f ./$(DEPDIR)/cat_sorting.Po -rm -f ./$(DEPDIR)/cat_update.Po -rm -f ./$(DEPDIR)/catalog.Po -rm -f ./$(DEPDIR)/catalog_json.Po -rm -f ./$(DEPDIR)/catalog_po.Po -rm -f ./$(DEPDIR)/catalog_xcloc.Po -rm -f ./$(DEPDIR)/catalog_xliff.Po -rm -f ./$(DEPDIR)/cloud_accounts.Po -rm -f ./$(DEPDIR)/cloud_accounts_ui.Po -rm -f ./$(DEPDIR)/colorscheme.Po -rm -f ./$(DEPDIR)/commentdlg.Po -rm -f ./$(DEPDIR)/compiled_xrc.Po -rm -f ./$(DEPDIR)/concurrency.Po -rm -f ./$(DEPDIR)/configuration.Po -rm -f ./$(DEPDIR)/crowdin_client.Po -rm -f ./$(DEPDIR)/crowdin_gui.Po -rm -f ./$(DEPDIR)/custom_buttons.Po -rm -f ./$(DEPDIR)/custom_notebook.Po -rm -f ./$(DEPDIR)/customcontrols.Po -rm -f ./$(DEPDIR)/edapp.Po -rm -f ./$(DEPDIR)/edframe.Po -rm -f ./$(DEPDIR)/editing_area.Po -rm -f ./$(DEPDIR)/edlistctrl.Po -rm -f ./$(DEPDIR)/errors.Po -rm -f ./$(DEPDIR)/export_html.Po -rm -f ./$(DEPDIR)/filemonitor.Po -rm -f ./$(DEPDIR)/fileviewer.Po -rm -f ./$(DEPDIR)/findframe.Po -rm -f ./$(DEPDIR)/gexecute.Po -rm -f ./$(DEPDIR)/hidpi.Po -rm -f ./$(DEPDIR)/http_client.Po -rm -f ./$(DEPDIR)/http_client_cpprestsdk.Po -rm -f ./$(DEPDIR)/icons.Po -rm -f ./$(DEPDIR)/language.Po -rm -f ./$(DEPDIR)/languagectrl.Po -rm -f ./$(DEPDIR)/localazy_client.Po -rm -f ./$(DEPDIR)/localazy_gui.Po -rm -f ./$(DEPDIR)/manager.Po -rm -f ./$(DEPDIR)/menus.Po -rm -f ./$(DEPDIR)/prefsdlg.Po -rm -f ./$(DEPDIR)/pretranslate.Po -rm -f ./$(DEPDIR)/progress.Po -rm -f ./$(DEPDIR)/progress_ui.Po -rm -f ./$(DEPDIR)/propertiesdlg.Po -rm -f ./$(DEPDIR)/qa_checks.Po -rm -f ./$(DEPDIR)/recent_files.Po -rm -f ./$(DEPDIR)/sidebar.Po -rm -f ./$(DEPDIR)/spellchecking.Po -rm -f ./$(DEPDIR)/subprocess.Po -rm -f ./$(DEPDIR)/syntaxhighlighter.Po -rm -f ./$(DEPDIR)/text_control.Po -rm -f ./$(DEPDIR)/titleless_window.Po -rm -f ./$(DEPDIR)/uilang.Po -rm -f ./$(DEPDIR)/unicode_helpers.Po -rm -f ./$(DEPDIR)/utility.Po -rm -f ./$(DEPDIR)/welcomescreen.Po -rm -f extractors/$(DEPDIR)/extractor.Po -rm -f extractors/$(DEPDIR)/extractor_gettext.Po -rm -f extractors/$(DEPDIR)/extractor_legacy.Po -rm -f keychain/$(DEPDIR)/keytar_posix.Po -rm -f pluralforms/$(DEPDIR)/pl_evaluate.Po -rm -f tm/$(DEPDIR)/suggestions.Po -rm -f tm/$(DEPDIR)/tmx_io.Po -rm -f tm/$(DEPDIR)/transmem.Po -rm -f wx/$(DEPDIR)/main_toolbar.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-binPROGRAMS install-data install-data-am \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS .PRECIOUS: Makefile compiled_xrc.cpp: $(XRC_RESOURCES) $(WXRC) -v -c -o $@ $(XRC_RESOURCES) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: poedit-3.6.3/src/localazy_client.cpp0000644000175100001660000003674015011674230013151 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2025 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 "localazy_client.h" #include "catalog.h" #include "configuration.h" #include "errors.h" #include "http_client.h" #include "keychain/keytar.h" #include "str_helpers.h" #include #include #include #include #include #include #include #include #include using namespace std::chrono_literals; // ---------------------------------------------------------------- // Implementation // ---------------------------------------------------------------- std::string LocalazyClient::AttributeLink(std::string page) { static const char *base_url = "https://localazy.com"; static const char *ref = "ref=a9PjgZZmxYvt-12r"; if (!boost::starts_with(page, "http")) page = base_url + page; page += page.find('?') == std::string::npos ? '?' : '&'; page += ref; return page; } class LocalazyClient::localazy_http_client : public http_client { public: localazy_http_client() : http_client("https://api.localazy.com") {} protected: std::string parse_json_error(const json& response) const override { wxLogTrace("poedit.localazy", "JSON error: %s", response.dump().c_str()); try { return response.at("message").get(); } catch (...) { return std::string(); } } }; class LocalazyClient::metadata { public: explicit metadata(const std::string& serialized) { if (serialized.empty()) clear(); else m_data = json::parse(serialized); } void clear() { m_data = json(); } std::string to_string() const { if (m_data.is_null()) return std::string(); else return m_data.dump(); } void add(const std::string& id, const json& project, const json& user) { m_data["user"] = user; m_data["projects"][id] = project; } bool is_valid() const { return !m_data.is_null(); } const json& user() const { return m_data.at("user"); } const json& projects() const { return m_data.at("projects"); } private: json m_data; }; class LocalazyClient::project_tokens { public: explicit project_tokens(const std::string& encoded_tokens) { if (encoded_tokens.empty()) return; std::vector parts; boost::split(parts, encoded_tokens, boost::is_any_of("/")); if (parts.empty()) return; for (auto& part: parts) { std::vector kv; boost::split(kv, part, boost::is_any_of("=")); if (kv.size() != 2) { m_tokens.clear(); return; } m_tokens[kv[0]] = kv[1]; } } void clear() { m_tokens.clear(); } std::string to_string() const { std::string result; for (auto& kv: m_tokens) { if (!result.empty()) result += "/"; result += kv.first + "=" + kv.second; } return result; } void add(const std::string& project, const std::string& token) { m_tokens[project] = token; } std::string get(const std::string& project) const { return m_tokens.at(project); } bool is_valid() const { return !m_tokens.empty(); } private: std::map m_tokens; }; LocalazyClient::LocalazyClient() : m_api(new localazy_http_client()) { InitMetadataAndTokens(); } LocalazyClient::~LocalazyClient() {} dispatch::future LocalazyClient::Authenticate() { m_authCallback.reset(new dispatch::promise); auto url = "https://localazy.com/extauth/oauth/poedit?ref=a9PjgZZmxYvt-12r"; wxLaunchDefaultBrowser(AttributeLink(url)); return m_authCallback->get_future(); } bool LocalazyClient::IsAuthCallback(const std::string& uri) { return boost::starts_with(uri, "poedit://localazy/"); } dispatch::future> LocalazyClient::HandleAuthCallback(const std::string& uri) { wxLogTrace("poedit.localazy", "Callback URI %s", uri.c_str()); std::smatch m; if (!(std::regex_search(uri, m, std::regex("//localazy/(open|oauth)/([^&]+)")) && m.size() > 2)) return dispatch::make_ready_future(std::shared_ptr()); std::string verb(m.str(1)); std::string tempToken(m.str(2)); // direct opening needs to work even when unexpected, but in-app auth shouldn't: if (!m_authCallback && verb != "open") return dispatch::make_ready_future(std::shared_ptr()); return ExchangeTemporaryToken(tempToken) .then_on_main([=](ProjectInfo prjInfo){ if (m_authCallback) { m_authCallback->set_value(); m_authCallback.reset(); } if (verb == "open") return std::make_shared(prjInfo); else return std::shared_ptr(); }); } dispatch::future LocalazyClient::ExchangeTemporaryToken(const std::string& token) { // http_client requires that all requests are relative to the provided prefix // (this is a C++REST SDK limitation enforced on some platforms), so we need // to create a transient http_client for it and use it to perform the request. auto transient = std::make_shared("https://localazy.com"); json data({ { "token", token } }); return transient->post("/extauth/exchange", json_data(data)) .then_on_main([transient,this](json r) { // notice that we must capture the `transient` http_client instance so that it won't // be destroyed before the request is done processing auto token = r.at("accessToken").get(); auto project = r.at("project"); auto user = r.at("user"); auto projectId = project.at("id").get(); ProjectInfo prjInfo { SERVICE_NAME, projectId, project.at("name").get(), project.at("slug").get(), project.at("image").get() }; std::lock_guard guard(m_mutex); m_metadata->add(projectId, project, user); m_tokens->add(projectId, token); SaveMetadataAndTokens(guard); return prjInfo; }); } void LocalazyClient::InitMetadataAndTokens() { std::lock_guard guard(m_mutex); m_metadata.reset(new metadata(Config::LocalazyMetadata())); // Our tokens stored in keychain have the form of :, so not // only do we have to check for token's existence but also that its version is current: std::string encoded_tokens; if (keytar::GetPassword("Localazy", "", &encoded_tokens) && encoded_tokens.substr(0, 2) == "1:") { encoded_tokens = encoded_tokens.substr(2); } else { // 'encoded' is empty or invalid, make sure it is empty encoded_tokens.clear(); } m_tokens.reset(new project_tokens(encoded_tokens)); } void LocalazyClient::SaveMetadataAndTokens(std::lock_guard& /*acquiredLock - just to make sure caller holds it*/) { Config::LocalazyMetadata(m_metadata->to_string()); auto encoded_tokens = m_tokens->to_string(); if (encoded_tokens.empty()) keytar::DeletePassword("Localazy", ""); else keytar::AddPassword("Localazy", "", "1:" + encoded_tokens); } std::string LocalazyClient::GetAuthorization(const std::string& project_id) const { std::lock_guard guard(m_mutex); return "Bearer " + m_tokens->get(project_id); } dispatch::future LocalazyClient::GetUserInfo() { std::lock_guard guard(m_mutex); auto user = m_metadata->user(); UserInfo info; info.service = SERVICE_NAME; user.at("slug").get_to(info.login); user.at("image").get_to(info.avatarUrl); info.name = str::to_wstring(user.at("name").get()); return dispatch::make_ready_future(std::move(info)); } dispatch::future> LocalazyClient::GetUserProjects() { std::lock_guard guard(m_mutex); std::vector all; for (auto p : m_metadata->projects()) { all.push_back( { SERVICE_NAME, p.at("id").get(), p.at("name").get(), p.at("slug").get(), p.at("image").get() }); } return dispatch::make_ready_future(std::move(all)); } dispatch::future LocalazyClient::GetProjectDetails(const ProjectInfo& project) { auto project_id = std::get(project.internalID); http_client::headers headers {{"Authorization", GetAuthorization(project_id)}}; return m_api->get("/projects?languages=true", headers) .then([project_id](json r) { for (auto prj: r) { auto id = prj.at("id"); if (id == project_id) { ProjectDetails details; // there's only one "file" in Localazy projects: ProjectFile f; f.title = _("All strings"); prj.at("url").get_to(f.description); details.files.push_back(f); for (auto lang: prj.at("languages")) { auto tag = lang.at("tag").get(); auto l = Language::FromLanguageTag(tag); if (l.IsValid()) details.languages.push_back(l); } return details; } } BOOST_THROW_EXCEPTION(Exception(_(L"Couldn’t download Localazy project details."))); }); } std::wstring LocalazyClient::CreateLocalFilename(const ProjectInfo& project, const ProjectFile& /*file*/, const Language& lang) const { auto project_name = project.name; // sanitize to be safe filenames: std::replace_if(project_name.begin(), project_name.end(), boost::is_any_of("\\/:\"<>|?*"), '_'); return project_name + L"." + str::to_wstring(lang.LanguageTag()) + L".json"; } std::shared_ptr LocalazyClient::ExtractSyncMetadata(Catalog& catalog) { if (catalog.Header().GetHeader("X-Generator") != "Localazy") return nullptr; auto meta = std::make_shared(); meta->service = SERVICE_NAME; meta->lang = catalog.GetLanguage().LanguageTag(); meta->projectId = str::to_utf8(catalog.Header().GetHeader("X-Localazy-Project")); return meta; } dispatch::future LocalazyClient::DownloadFile(const std::wstring& output_file, std::shared_ptr meta_) { auto meta = std::dynamic_pointer_cast(meta_); http_client::headers headers {{"Authorization", GetAuthorization(meta->projectId)}}; return m_api->download("/projects/" + meta->projectId + "/exchange/export/" + meta->lang, headers) .then([=](downloaded_file file) { wxString outfile(output_file); file.move_to(outfile); }); } dispatch::future LocalazyClient::DownloadFile(const std::wstring& output_file, const ProjectInfo& project, const ProjectFile&, const Language& lang) { auto meta = std::make_shared(); meta->projectId = std::get(project.internalID); meta->lang = lang.LanguageTag(); return DownloadFile(output_file, meta); } dispatch::future LocalazyClient::UploadFile(const std::string& file_buffer, std::shared_ptr meta_) { class upload_json_data : public octet_stream_data { public: using octet_stream_data::octet_stream_data; std::string content_type() const override { return "application/json"; }; }; auto meta = std::dynamic_pointer_cast(meta_); std::string prefix("/projects/" + meta->projectId + "/exchange"); http_client::headers headers {{"Authorization", GetAuthorization(meta->projectId)}}; return m_api->post(prefix + "/import", upload_json_data(file_buffer), headers) .then([this,prefix,headers] (json r) { auto ok = r.at("result").get(); if (!ok) { BOOST_THROW_EXCEPTION(Exception(_(L"There was an error when uploading translations to Localazy."))); } auto status_url = prefix + "/status/" + r.at("statusId").get(); // wait until processing finishes, by polling status: while (true) { std::this_thread::sleep_for(500ms); auto status = m_api->get(status_url, headers).get(); auto text = status.at("status").get(); if (text == "done") return; if (text != "in_progress" && text != "scheduled") { BOOST_THROW_EXCEPTION(Exception(_(L"There was an error when uploading translations to Localazy."))); } }; }); } bool LocalazyClient::IsSignedIn() const { std::lock_guard guard(m_mutex); return m_tokens->is_valid() && m_metadata->is_valid(); } void LocalazyClient::SignOut() { std::lock_guard guard(m_mutex); m_metadata->clear(); m_tokens->clear(); SaveMetadataAndTokens(guard); } // ---------------------------------------------------------------- // Singleton management // ---------------------------------------------------------------- static std::once_flag initializationFlag; LocalazyClient* LocalazyClient::ms_instance = nullptr; LocalazyClient& LocalazyClient::Get() { std::call_once(initializationFlag, []() { ms_instance = new LocalazyClient; }); return *ms_instance; } void LocalazyClient::CleanUp() { if (ms_instance) { delete ms_instance; ms_instance = nullptr; } } poedit-3.6.3/src/hidpi.h0000644000175100001660000000674615011674230010542 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2025 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_hidpi_h #define Poedit_hidpi_h #include #include #include class WXDLLIMPEXP_FWD_BASE wxString; #ifdef __WXMSW__ #define NEEDS_MANUAL_HIDPI 1 #endif #ifdef NEEDS_MANUAL_HIDPI // Scaling factor against "normal" DPI (2.0 would be macOS's "Retina" scaling) extern double g_pxScalingFactor; /// Returns current scaling factor. inline double HiDPIScalingFactor() { return g_pxScalingFactor; } /// Is the current mode HiDPI? inline bool IsHiDPI() { return g_pxScalingFactor > 1.0; } /** Use this macro to wrap pixel dimensions to scale them accordingly to the current DPI setting. */ #define PX(x) (int(((x) * g_pxScalingFactor) + 0.5)) #define PXDefaultBorder wxSizerFlags::GetDefaultBorder() #define PXBorder(dir) Border(dir, PXDefaultBorder) #define PXDoubleBorder(dir) Border(dir, 2 * PXDefaultBorder) /// Initializes HiDPI code, should be called early in OnInit. void InitHiDPIHandling(); #else // ! NEEDS_MANUAL_HIDPI #define PX(x) (x) #define PXDefaultBorder wxSizerFlags::GetDefaultBorder() #define PXBorder(dir) Border(dir) #define PXDoubleBorder(dir) DoubleBorder(dir) inline void InitHiDPIHandling() {} inline double HiDPIScalingFactor() { return 1.0; } #endif #define PXBorderAll() PXBorder(wxALL) #define PXDoubleBorderAll() PXDoubleBorder(wxALL) /// Fine-tuned creation of smaller fonts inline wxFont SmallerFont(const wxFont& font) { #ifdef __WXMSW__ // wxFont::Smaller() is uses precise fractional font sizes, which looks // ugly in low-DPI and small font sizes. if (!IsHiDPI()) { wxFont f(font); f.SetPointSize(int(f.GetPointSize() / 1.2f + 0.5)); return f; } #endif return font.Smaller(); } // helper for handling scaled images // TODO: replace with use of wxBitmapBundle & remove #include struct ScaledImage { wxImage image; double scale = 1.0; bool IsOk() const { return image.IsOk(); } }; /** Load image from given PNG file. Depending on the current scaling factor, the file loaded may be a @2x variant (e.g. "foo@2x.png" instead of "foo.png" for "foo" argument). In any case, the bitmap will be scaled appropriately. Note that @a name is given *without* the ".png" extension. */ extern ScaledImage LoadScaledBitmap(const wxString& name); #endif // Poedit_hidpi_h poedit-3.6.3/src/unicode_helpers.cpp0000644000175100001660000001101715011674230013133 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2025 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 "unicode_helpers.h" #include "str_helpers.h" #include namespace unicode { Collator::Collator(const Language& language, mode m) { UErrorCode err = U_ZERO_ERROR; if (language.IsValid()) m_coll = ucol_open(language.IcuLocaleName().c_str(), &err); else m_coll = ucol_open(NULL, &err); // NULL is default locale, i.e. set to user's if (!m_coll) m_coll = ucol_open("", &err); // "" is the root collator, should always exist wxASSERT(m_coll); if (m == case_insensitive) ucol_setStrength(m_coll, UCOL_SECONDARY); } Collator::~Collator() { if (m_coll) ucol_close(m_coll); } BreakIterator::BreakIterator(UBreakIteratorType type, const Language& lang) { UErrorCode err = U_ZERO_ERROR; m_bi = ubrk_open(type, lang.IcuLocaleName().c_str(), nullptr, 0, &err); if (U_FAILURE(err)) { // fall back to root locale err = U_ZERO_ERROR; m_bi = ubrk_open(type, "", nullptr, 0, &err); } } } // namespace unicode namespace bidi { TextDirection get_base_direction(const wxString& text) { if (text.empty()) return TextDirection::LTR; auto s = str::to_icu(text); switch (ubidi_getBaseDirection(s.data(), -1)) { case UBIDI_RTL: return TextDirection::RTL; case UBIDI_LTR: case UBIDI_NEUTRAL: return TextDirection::LTR; case UBIDI_MIXED: assert(false); // impossible value here return TextDirection::LTR; } return TextDirection::LTR; // VC++ is stupid } wxString strip_pointless_control_chars(const wxString& text, TextDirection dir) { if (text.empty()) return text; const wchar_t first = *text.begin(); const wchar_t last = *text.rbegin(); // POP DIRECTIONAL FORMATTING at the end is pointless (can happen on macOS // when editing RTL text under LTR locale: if (last == PDF) { return strip_pointless_control_chars(text.substr(0, text.size() - 1), dir); } if (dir == TextDirection::LTR) { switch (first) { case LRE: case LRO: case LRI: case LRM: return text.substr(1); default: return text; } } else if (dir == TextDirection::RTL) { switch (first) { case RLE: case RLO: case RLI: case RLM: return text.substr(1); default: return text; } } return text; } wxString strip_control_chars(const wxString& text) { if (text.empty()) return text; const wchar_t first = *text.begin(); switch (first) { case LRE: case LRO: case LRI: case LRM: case RLE: case RLO: case RLI: case RLM: return text.substr(1); default: break; } return text; } wxString mark_direction(const wxString& text, TextDirection dir) { if (text.empty()) return text; wchar_t mark = (dir == TextDirection::LTR) ? LRE : RLE; auto out = mark + text; #ifdef BIDI_NEEDS_DIRECTION_ON_EACH_LINE wchar_t replacement[3] = {0}; replacement[0] = L'\n'; replacement[1] = mark; out.Replace("\n", replacement); #endif return out; } } // namespace bidi poedit-3.6.3/src/catalog_json.h0000644000175100001660000000612115011674230012073 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2025 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_catalog_json_h #define Poedit_catalog_json_h #include "catalog.h" #include "errors.h" #include "json.h" #include class JSONFileException : public Exception { public: JSONFileException(const wxString& what) : Exception(what) {} }; class JSONCatalogItem : public CatalogItem { public: typedef ordered_json json_t; JSONCatalogItem(int id, json_t& node) : m_node(node) { m_id = id; m_isFuzzy = false; // not supported } JSONCatalogItem(const CatalogItem&) = delete; wxArrayString GetReferences() const override { return wxArrayString(); } protected: json_t& m_node; }; class JSONCatalog : public Catalog { public: typedef ordered_json json_t; ~JSONCatalog() {} bool HasCapability(Cap cap) const override; static bool CanLoadFile(const wxString& extension); wxString GetPreferredExtension() const override { return "json"; } static std::shared_ptr Open(const wxString& filename); bool Save(const wxString& filename, bool save_mo, ValidationResults& validation_results, CompilationStatus& mo_compilation_status) override; std::string SaveToBuffer() override; Language GetLanguage() const override { return m_language; } void SetLanguage(Language lang) override { m_language = lang; } // FIXME: PO specific bool HasDeletedItems() const override { return false;} void RemoveDeletedItems() override {} protected: JSONCatalog(json_t&& doc) : Catalog(Type::JSON), m_doc(std::move(doc)) {} virtual void Parse() = 0; private: static std::shared_ptr CreateForJSON(json_t&& doc, const std::string& extension); protected: json_t m_doc; Language m_language; struct FormattingRules { int indent; char indent_char; bool dos_line_endings; }; FormattingRules m_formatting; }; #endif // Poedit_catalog_json_h poedit-3.6.3/src/hidpi.cpp0000644000175100001660000001016515011674230011063 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2025 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 "hidpi.h" #include #include #include #ifdef NEEDS_MANUAL_HIDPI double g_pxScalingFactor = 1.0; void InitHiDPIHandling() { wxSize dpi = wxScreenDC().GetPPI(); g_pxScalingFactor = dpi.y / 96.0; } #endif // NEEDS_MANUAL_HIDPI namespace { void LoadPNGImage(wxImage& img, const wxString& filename) { img.LoadFile(filename, wxBITMAP_TYPE_PNG); // wxImage doesn't load alpha from PNG if it could be expressed as a mask. // Too bad this breaks a) scaling and b) wxToolbar's disabled bitmaps. // Beat some sense into it: if (img.IsOk() && img.HasMask()) { img.InitAlpha(); } } } // anonymous namespace ScaledImage LoadScaledBitmap(const wxString& name) { const wxString filename(name + ".png"); if (!wxFileExists(filename)) return ScaledImage(); wxImage img; #ifdef NEEDS_MANUAL_HIDPI // On Windows, arbitrary scaling factors are possible and "ugly" values like 125% // or 150% scaling are not only possible, but common. It is unrealistic to provide // custom-drawn bitmaps for all of them, so we make do with a basic set of 100%/@1x, // 200%/@2x (used on macOS too) and one more for 150%/@1.5x for Windows use. // To eliminate smudged scaling artifacts, we use these fixed sizes even for zoom // factors in-between (such as the very common 125% or less common 175%). This looks // better and the size difference is negligible. auto const screenScaling = HiDPIScalingFactor(); if (screenScaling > 1.25) { if (screenScaling <= 1.75) // @1.5x is reasonable { const wxString filename_15x(name + "@1.5x.png"); if (wxFileExists(filename_15x)) { LoadPNGImage(img, filename_15x); if (img.IsOk()) return { img, 1.5 }; } } double imgScale = screenScaling; const wxString filename_2x(name + "@2x.png"); if (wxFileExists(filename_2x)) { LoadPNGImage(img, filename_2x); if (screenScaling > 1.75 && screenScaling <= 2.50) // @2x is reasonable return { img, 2.0 }; else imgScale /= 2.0; } else // fall back to upscaled @1x { LoadPNGImage(img, filename); } if (!img.IsOk()) return ScaledImage(); // TODO: avoid this scaling altogether wxImageResizeQuality quality; if (imgScale == 2.0) quality = wxIMAGE_QUALITY_NEAREST; else if (imgScale == 1.5) quality = wxIMAGE_QUALITY_BILINEAR; else quality = wxIMAGE_QUALITY_BICUBIC; img.Rescale(img.GetWidth() * imgScale, img.GetHeight() * imgScale, quality); return { img, screenScaling }; } // else if screenScaling <= 1.25: @1x size is good enough, load normally #endif LoadPNGImage(img, filename); return { img, 1.0 }; } poedit-3.6.3/src/errors.cpp0000644000175100001660000000566115011674230011307 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2025 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 "errors.h" #include #if defined(HAVE_HTTP_CLIENT) && !defined(__WXOSX__) #include #include #endif namespace { inline wxString from_c_string(const char *msg) { // try interpreting as UTF-8 first as the most likely one (from external sources) wxString s = wxString::FromUTF8(msg); if (!s.empty()) return s; s = wxString(msg); if (!s.empty()) return s; // not in current locale either, fall back to Latin1 return wxString(msg, wxConvISO8859_1); } } // anonymous namespace wxString errors::detail::DescribeExceptionImpl(Rethrower& rethrower) { try { rethrower.rethrow(); return "no error"; // silence stupid VC++ } catch (const Exception& e) { return e.What(); } #if defined(HAVE_HTTP_CLIENT) && !defined(__WXOSX__) catch (const web::http::http_exception & e) { // rephrase the errors more humanly; the default form is too cryptic // also strip trailing newlines that C++REST tends to add std::string msg(e.what()); if (!boost::starts_with(msg, "WinHttp")) { boost::trim_right(msg); return from_c_string(msg.c_str()); // preserve actual messages } msg = e.error_code().message(); if (msg.empty()) return from_c_string(e.what()); // give up boost::trim_right(msg); return wxString::Format(_("Network error: %s (%d)"), from_c_string(msg.c_str()), e.error_code().value()); } #endif // defined(HAVE_HTTP_CLIENT) && !defined(__WXOSX__) catch (const std::exception& e) { return from_c_string(e.what()); } catch (...) { return _("Unknown error"); } } poedit-3.6.3/src/customcontrols.h0000644000175100001660000001673615011674230012543 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2025 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_customcontrols_h #define Poedit_customcontrols_h #include "colorscheme.h" #include "concurrency.h" #include "language.h" #include #include #include #include #include #include #include class WXDLLIMPEXP_ADV wxActivityIndicator; #include #include /// Label marking a subsection of a dialog: class HeadingLabel : public wxStaticText { public: HeadingLabel(wxWindow *parent, const wxString& label); }; /// Label that auto-wraps itself to fit surrounding control's width. class AutoWrappingText : public wxStaticText { public: AutoWrappingText(wxWindow *parent, wxWindowID winid, const wxString& label); void SetLanguage(Language lang); void SetAlignment(TextDirection dir); void SetAndWrapLabel(const wxString& label); bool InformFirstDirection(int direction, int size, int availableOtherDir) override; void SetLabel(const wxString& label) override; protected: void OnSize(wxSizeEvent& e); bool RewrapForWidth(int width); #ifdef __WXOSX__ wxSize DoGetBestSize() const override; #endif wxString m_text; int m_wrapWidth; Language m_language; }; /// A helper class that implements better sizer behavior for a window that contains AutoWrappingText template class WindowWith2DSizingConstraints : public Base { public: using Base::Base; void Fit() override { IterateUntilConvergence([=]{ this->SetSize(this->GetBestSize()); }); } bool Layout() override { IterateUntilConvergence([=]{ Base::Layout(); }); return true; } private: template void IterateUntilConvergence(T&& action) { // iterate sizing because performing layout may invalidate some best // sizes (AutoWrappingText) and may need to be redone. wxSize best = this->GetBestSize(); while ( true ) { action(); wxSize updatedBest = this->GetBestSize(); if ( best == updatedBest ) break; best = updatedBest; } } }; /// Like AutoWrappingText, but allows selecting (macOS) or at least copying (Windows) /// the text too. class SelectableAutoWrappingText : public AutoWrappingText { public: SelectableAutoWrappingText(wxWindow *parent, wxWindowID winid, const wxString& label); }; /** Longer, often multiline, explanation label used to provide more information about the effects of some less obvious settings. Typeset using smaller font on macOS and grey appearance. Auto-wraps itself to fit surrounding control's width. */ class ExplanationLabel : public AutoWrappingText { public: ExplanationLabel(wxWindow *parent, const wxString& label); #if defined(__WXOSX__) static const int CHECKBOX_INDENT = 21; #elif defined(__WXMSW__) static const int CHECKBOX_INDENT = 17; #elif defined(__WXGTK__) static const int CHECKBOX_INDENT = 25; #endif static wxColour GetTextColor() { return ColorScheme::Get(Color::SecondaryLabel); } }; /// Like ExplanationLabel, but nonwrapping class SecondaryLabel : public wxStaticText { public: SecondaryLabel(wxWindow *parent, const wxString& label); static wxColour GetTextColor() { return ExplanationLabel::GetTextColor(); } }; /// "Learn more" hyperlink for dialogs. class LearnMoreLink : public wxHyperlinkCtrl { public: LearnMoreLink(wxWindow *parent, const wxString& url, wxString label = wxString(), wxWindowID winid = wxID_ANY); }; class LearnMoreLinkXmlHandler : public wxXmlResourceHandler { public: LearnMoreLinkXmlHandler() {} wxObject *DoCreateResource() override; bool CanHandle(wxXmlNode *node) override; }; /// Indicator of background activity, using spinners where appropriate. class ActivityIndicator : public wxWindow { public: enum Flags { Centered = 1, }; ActivityIndicator(wxWindow *parent, int flags = 0); /// 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 HandleError; bool HasTransparentBackground() override { return true; } private: void UpdateLayoutAfterTextChange(); bool m_running; wxActivityIndicator *m_spinner; wxStaticText *m_label, *m_error; }; /// A bit nicer (macOS), color scheme aware, and easier to use image button class ImageButton : public wxBitmapButton { public: ImageButton(wxWindow *parent, const wxString& bitmapName); private: wxString m_bitmapName; }; /// Color scheme aware static bitmap class StaticBitmap : public wxStaticBitmap { public: StaticBitmap(wxWindow *parent, const wxString& bitmapName); void SetBitmapName(const wxString& bitmapName); private: wxString m_bitmapName; }; /// Avatar icon class AvatarIcon : public wxWindow { public: AvatarIcon(wxWindow *parent, const wxSize& size); /// Set name to be used if image can't be loaded void SetUserName(const wxString& name); void LoadIcon(const wxFileName& f); bool HasTransparentBackground() override { return true; } private: void InitForSize(); void OnPaint(wxPaintEvent&); private: wxRegion m_clipping; wxBitmap m_bitmap; wxString m_placeholder; }; /// wxDataViewListCtrl with icon and two-line content class IconAndSubtitleListCtrl : public wxDataViewListCtrl { public: IconAndSubtitleListCtrl(wxWindow *parent, const wxString& columnTitle, long style = wxBORDER_NONE); void AppendFormattedItem(const wxBitmap& icon, const wxString& title, const wxString& description); void UpdateFormattedItem(unsigned row, const wxString& title, const wxString& description); protected: int GetDefaultRowHeight() const; wxString FormatItemText(const wxString& title, const wxString& description); private: #ifndef __WXGTK__ void OnColorChange(); wxString GetSecondaryFormatting(); wxString m_secondaryFormatting[2]; #endif class MultilineTextRenderer; }; #endif // Poedit_customcontrols_h poedit-3.6.3/src/catalog_po.cpp0000644000175100001660000015761615011674230012113 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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 "catalog_po.h" #include "configuration.h" #include "errors.h" #include "extractors/extractor.h" #include "gexecute.h" #include "str_helpers.h" #include "utility.h" #include "version.h" #include "language.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __WXOSX__ #import #endif // TODO: split into different file #if wxUSE_GUI #include #endif // ---------------------------------------------------------------------- // Textfile processing utilities: // ---------------------------------------------------------------------- namespace { // If input begins with pattern, fill output with end of input (without // pattern; strips trailing spaces) and return true. Return false otherwise // and don't touch output. Is permissive about whitespace in the input: // a space (' ') in pattern will match any number of any whitespace characters // on that position in input. bool ReadParam(const wxString& input, const wxString& pattern, wxString& output, bool preserveWhitespace = false) { if (input.size() < pattern.size()) return false; unsigned in_pos = 0; unsigned pat_pos = 0; while (pat_pos < pattern.size() && in_pos < input.size()) { const wxChar pat = pattern[pat_pos++]; if (pat == _T(' ')) { if (!wxIsspace(input[in_pos++])) return false; if (!preserveWhitespace) { while (wxIsspace(input[in_pos])) { in_pos++; if (in_pos == input.size()) return false; } } } else { if (input[in_pos++] != pat) return false; } } if (pat_pos < pattern.size()) // pattern not fully matched return false; output = input.Mid(in_pos); if (!preserveWhitespace) output.Trim(true); // trailing whitespace return true; } // Checks if the file was loaded correctly, i.e. that non-empty lines // ended up non-empty in memory, after doing charset conversion in // wxTextFile. This detects for example files that claim they are in UTF-8 // while in fact they are not. bool VerifyFileCharset(const wxTextFile& f, const wxString& filename, const wxString& charset) { wxTextFile f2; if (!f2.Open(filename, wxConvISO8859_1)) return false; if (f.GetLineCount() != f2.GetLineCount()) { int linesCount = (int)f2.GetLineCount() - (int)f.GetLineCount(); wxLogError(wxPLURAL(L"%i line of file “%s†was not loaded correctly.", L"%i lines of file “%s†were not loaded correctly.", linesCount), linesCount, filename.c_str()); return false; } bool ok = true; size_t cnt = f.GetLineCount(); for (size_t i = 0; i < cnt; i++) { if (f[i].empty() && !f2[i].empty()) // wxMBConv conversion failed { wxLogError( _(L"Line %d of file “%s†is corrupted (not valid %s data)."), int(i), filename.c_str(), charset.c_str()); ok = false; } } return ok; } wxTextFileType GetFileCRLFFormat(wxTextFile& po_file) { wxLogNull null; auto crlf = po_file.GuessType(); // Discard any unsupported setting. In particular, we ignore "Mac" // line endings, because the ancient OS 9 systems aren't used anymore, // OSX uses Unix ending *and* "Mac" endings break gettext tools. So if // we encounter a catalog with "Mac" line endings, we silently convert // it into Unix endings (i.e. the modern Mac). if (crlf == wxTextFileType_Mac) crlf = wxTextFileType_Unix; if (crlf != wxTextFileType_Dos && crlf != wxTextFileType_Unix) crlf = wxTextFileType_None; return crlf; } wxTextFileType GetDesiredCRLFFormat(wxTextFileType existingCRLF) { if (existingCRLF != wxTextFileType_None && wxConfigBase::Get()->ReadBool("keep_crlf", true)) { return existingCRLF; } else { wxString format = wxConfigBase::Get()->Read("crlf_format", "unix"); if (format == "win") return wxTextFileType_Dos; else /* "unix" or obsolete settings */ return wxTextFileType_Unix; } } unsigned GetCountFromPluralFormsHeader(const Catalog::HeaderData& header) { if ( header.HasHeader("Plural-Forms") ) { // e.g. "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? // 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" wxString form = header.GetHeader("Plural-Forms"); form = form.BeforeFirst(_T(';')); if (form.BeforeFirst(_T('=')) == "nplurals") { wxString vals = form.AfterFirst('='); if (vals == "INTEGER") // POT default return 2; long val; if (vals.ToLong(&val)) return (unsigned)val; } } // fallback value for plural forms count should be 2, as in English: return 2; } } // anonymous namespace // ---------------------------------------------------------------------- // Parsers // ---------------------------------------------------------------------- bool POCatalogParser::Parse() { static const wxString prefix_flags(wxS("#, ")); static const wxString prefix_autocomments(wxS("#. ")); static const wxString prefix_autocomments2(wxS("#.")); // account for empty auto comments static const wxString prefix_references(wxS("#: ")); static const wxString prefix_prev_msgid(wxS("#| ")); static const wxString prefix_msgctxt(wxS("msgctxt \"")); static const wxString prefix_msgid(wxS("msgid \"")); static const wxString prefix_msgid_plural(wxS("msgid_plural \"")); static const wxString prefix_msgstr(wxS("msgstr \"")); static const wxString prefix_msgstr_plural(wxS("msgstr[")); static const wxString prefix_deleted(wxS("#~")); static const wxString prefix_deleted_msgid(wxS("#~ msgid")); if (m_textFile->GetLineCount() == 0) return false; wxString line, dummy; wxString mflags, mstr, msgid_plural, mcomment; wxArrayString mrefs, mextractedcomments, mtranslations; wxArrayString msgid_old; bool has_plural = false; bool has_context = false; wxString msgctxt; unsigned mlinenum = 0; line = m_textFile->GetFirstLine(); if (line.empty()) line = ReadTextLine(); while (!line.empty()) { // ignore empty special tags (except for extracted comments which we // DO want to preserve): while (line.length() == 2 && *line.begin() == '#' && (line[1] == ',' || line[1] == ':' || line[1] == '|')) line = ReadTextLine(); // flags: // Can't we have more than one flag, now only the last is kept ... if (ReadParam(line, prefix_flags, dummy)) { static wxString prefix_flags_partial(wxS(", ")); mflags = prefix_flags_partial + dummy; line = ReadTextLine(); } // auto comments: if (ReadParam(line, prefix_autocomments, dummy, /*preserveWhitespace=*/true) || ReadParam(line, prefix_autocomments2, dummy, /*preserveWhitespace=*/true)) { mextractedcomments.Add(dummy); line = ReadTextLine(); } // references: else if (ReadParam(line, prefix_references, dummy, /*preserveWhitespace=*/true)) { // Just store the references unmodified, we don't modify this // data anywhere. mrefs.push_back(dummy); line = ReadTextLine(); } // previous msgid value: else if (ReadParam(line, prefix_prev_msgid, dummy)) { msgid_old.Add(dummy); line = ReadTextLine(); } // msgctxt: else if (ReadParam(line, prefix_msgctxt, dummy)) { has_context = true; 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 += UnescapeCString(line.Mid(1, line.Length() - 2)); PossibleWrappedLine(); } else break; } } // msgid: else if (ReadParam(line, prefix_msgid, dummy)) { mstr = UnescapeCString(dummy.RemoveLast()); mlinenum = unsigned(m_textFile->GetCurrentLine() + 1); while (!(line = ReadTextLine()).empty()) { if (line[0u] == wxS('\t')) line.Remove(0, 1); if (line[0u] == wxS('"') && line.Last() == wxS('"')) { mstr += UnescapeCString(line.Mid(1, line.Length() - 2)); PossibleWrappedLine(); } else break; } } // msgid_plural: else if (ReadParam(line, prefix_msgid_plural, dummy)) { msgid_plural = UnescapeCString(dummy.RemoveLast()); has_plural = true; mlinenum = unsigned(m_textFile->GetCurrentLine() + 1); while (!(line = ReadTextLine()).empty()) { if (line[0u] == _T('\t')) line.Remove(0, 1); if (line[0u] == _T('"') && line.Last() == _T('"')) { msgid_plural += UnescapeCString(line.Mid(1, line.Length() - 2)); PossibleWrappedLine(); } else break; } } // msgstr: else if (ReadParam(line, prefix_msgstr, dummy)) { if (has_plural) { wxLogError(_("Broken PO file: singular form msgstr used together with msgid_plural")); return false; } 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 += UnescapeCString(line.Mid(1, line.Length() - 2)); PossibleWrappedLine(); } else break; } mtranslations.Add(str); bool shouldIgnore = m_ignoreHeader && (mstr.empty() && !has_context); if ( shouldIgnore ) { OnIgnoredEntry(); } else { if (!mstr.empty() && m_ignoreTranslations) mtranslations.clear(); if (!OnEntry(mstr, wxEmptyString, false, has_context, msgctxt, mtranslations, mflags, mrefs, mcomment, mextractedcomments, msgid_old, mlinenum)) { return false; } } mcomment = mstr = msgid_plural = msgctxt = mflags = wxEmptyString; has_plural = has_context = false; mrefs.Clear(); mextractedcomments.Clear(); mtranslations.Clear(); msgid_old.Clear(); } // msgstr[i]: else if (ReadParam(line, prefix_msgstr_plural, dummy)) { if (!has_plural) { wxLogError(_("Broken PO file: plural form msgstr used without msgid_plural")); return false; } wxString idx = dummy.BeforeFirst(wxS(']')); wxString label_prefix = prefix_msgstr_plural + idx + wxS("] \""); while (ReadParam(line, label_prefix, dummy)) { wxString str = UnescapeCString(dummy.RemoveLast()); while (!(line=ReadTextLine()).empty()) { line.Trim(/*fromRight=*/false); if (line[0u] == wxS('"') && line.Last() == wxS('"')) { str += UnescapeCString(line.Mid(1, line.Length() - 2)); PossibleWrappedLine(); } else { if (ReadParam(line, prefix_msgstr_plural, dummy)) { idx = dummy.BeforeFirst(wxS(']')); label_prefix = prefix_msgstr_plural + idx + wxS("] \""); } break; } } mtranslations.Add(str); } if (m_ignoreTranslations) mtranslations.clear(); if (!OnEntry(mstr, msgid_plural, true, has_context, msgctxt, mtranslations, mflags, mrefs, mcomment, mextractedcomments, msgid_old, mlinenum)) { return false; } mcomment = mstr = msgid_plural = msgctxt = mflags = wxEmptyString; has_plural = has_context = false; mrefs.Clear(); mextractedcomments.Clear(); mtranslations.Clear(); msgid_old.Clear(); } // deleted lines: else if (ReadParam(line, prefix_deleted, dummy)) { wxArrayString deletedLines; deletedLines.Add(line); mlinenum = unsigned(m_textFile->GetCurrentLine() + 1); while (!(line = ReadTextLine()).empty()) { // if line does not start with "#~" anymore, stop reading if (!ReadParam(line, prefix_deleted, dummy)) break; // if the line starts with "#~ msgid", we skipped an empty line // and it's a new entry, so stop reading too (see bug #329) if (ReadParam(line, prefix_deleted_msgid, dummy)) break; deletedLines.Add(line); } if (!m_ignoreTranslations) { if (!OnDeletedEntry(deletedLines, mflags, mrefs, mcomment, mextractedcomments, mlinenum)) { return false; } } mcomment = mstr = msgid_plural = mflags = wxEmptyString; has_plural = false; mrefs.Clear(); mextractedcomments.Clear(); mtranslations.Clear(); msgid_old.Clear(); } // comment: else if (line[0u] == wxS('#')) { bool readNewLine = false; while (!line.empty() && line[0u] == wxS('#') && (line.Length() < 2 || (line[1u] != wxS(',') && line[1u] != wxS(':') && line[1u] != wxS('.') && line[1u] != wxS('~') ))) { mcomment << line << wxS('\n'); readNewLine = true; line = ReadTextLine(); } if (!readNewLine) line = ReadTextLine(); } else { line = ReadTextLine(); } } return true; } wxString POCatalogParser::ReadTextLine() { m_previousLineHardWrapped = m_lastLineHardWrapped; m_lastLineHardWrapped = false; static const wxString msgid_alone(wxS("msgid \"\"")); static const wxString msgstr_alone(wxS("msgstr \"\"")); for (;;) { if (m_textFile->Eof()) return wxString(); // read next line and strip insignificant whitespace from it: const auto& ln = m_textFile->GetNextLine(); if (ln.empty()) continue; // gettext tools don't include (extracted) comments in wrapping, so they can't // be reliably used to detect file's wrapping either; just skip them. if (!ln.starts_with(wxS("#. ")) && !ln.starts_with(wxS("# "))) { if (ln.ends_with(wxS("\\n\""))) { // Similarly, lines ending with \n are always wrapped, so skip that too. m_lastLineHardWrapped = true; } else if (ln == msgid_alone || ln == msgstr_alone) { // The header is always indented like this m_lastLineHardWrapped = true; } else { // Watch out for lines with too long words that couldn't be wrapped. // That "2" is to account for unwrappable comment lines: "#: somethinglong" // See https://github.com/vslavik/poedit/issues/135 auto space = ln.find_last_of(' '); if (space != wxString::npos && space > 2) { m_detectedLineWidth = std::max(m_detectedLineWidth, (int)ln.size()); } } } if (wxIsspace(ln[0]) || wxIsspace(ln.Last())) { auto s = ln.Strip(wxString::both); if (!s.empty()) return s; } else { return ln; } } return wxString(); } int POCatalogParser::GetWrappingWidth() const { if (!m_detectedWrappedLines) return POCatalog::NO_WRAPPING; return m_detectedLineWidth; } class POCharsetInfoFinder : public POCatalogParser { public: POCharsetInfoFinder(wxTextFile *f) : POCatalogParser(f), m_charset("UTF-8") {} wxString GetCharset() const { return m_charset; } protected: wxString m_charset; virtual bool OnEntry(const wxString& msgid, const wxString& /*msgid_plural*/, bool /*has_plural*/, bool has_context, const wxString& /*context*/, const wxArrayString& mtranslations, const wxString& /*flags*/, const wxArrayString& /*references*/, const wxString& /*comment*/, const wxArrayString& /*extractedComments*/, const wxArrayString& /*msgid_old*/, unsigned /*lineNumber*/) { if (msgid.empty() && !has_context) { // gettext header: Catalog::HeaderData hdr; hdr.FromString(mtranslations[0]); m_charset = hdr.Charset; if (m_charset == "CHARSET") m_charset = "ISO-8859-1"; return false; // stop parsing } return true; } }; class POLoadParser : public POCatalogParser { public: POLoadParser(POCatalog& c, wxTextFile *f) : POCatalogParser(f), FileIsValid(false), m_catalog(c), m_nextId(1), m_seenHeaderAlready(false) {} // true if the file is valid, i.e. has at least some data bool FileIsValid; Language GetSpecifiedMsgidLanguage() { auto x_srclang = m_catalog.Header().GetHeader("X-Source-Language"); if (x_srclang.empty()) x_srclang = m_catalog.m_header.GetHeader("X-Loco-Source-Locale"); if (!x_srclang.empty()) { auto parsed = Language::TryParse(str::to_utf8(x_srclang)); if (parsed.IsValid()) return parsed; } return Language(); } protected: POCatalog& m_catalog; virtual bool OnEntry(const wxString& msgid, const wxString& msgid_plural, bool has_plural, bool has_context, const wxString& context, const wxArrayString& mtranslations, const wxString& flags, const wxArrayString& references, const wxString& comment, const wxArrayString& extractedComments, const wxArrayString& msgid_old, unsigned lineNumber); virtual bool OnDeletedEntry(const wxArrayString& deletedLines, const wxString& flags, const wxArrayString& references, const wxString& comment, const wxArrayString& extractedComments, unsigned lineNumber); virtual void OnIgnoredEntry() { FileIsValid = true; } private: int m_nextId; bool m_seenHeaderAlready; }; bool POLoadParser::OnEntry(const wxString& msgid, const wxString& msgid_plural, bool has_plural, bool has_context, const wxString& context, const wxArrayString& mtranslations, const wxString& flags, const wxArrayString& references, const wxString& comment, const wxArrayString& extractedComments, const wxArrayString& msgid_old, unsigned lineNumber) { FileIsValid = true; static const wxString MSGCAT_CONFLICT_MARKER("#-#-#-#-#"); if (msgid.empty() && !has_context) { if (!m_seenHeaderAlready) { // gettext header: m_catalog.m_header.FromString(mtranslations[0]); m_catalog.m_header.Comment = comment; for (const auto& s : extractedComments) m_catalog.m_header.Comment += "\n#. " + s; for (const auto& s : references) m_catalog.m_header.Comment += "\n#: " + s; if (!flags.empty()) m_catalog.m_header.Comment += "\n#" + flags; m_seenHeaderAlready = true; } // else: ignore duplicate header in malformed files } else { auto d = std::make_shared(); d->SetId(m_nextId++); if (!flags.empty()) d->SetFlags(flags); d->SetString(msgid); if (has_plural) { m_catalog.m_hasPluralItems = true; d->SetPluralString(msgid_plural); } if (has_context) d->SetContext(context); d->SetTranslations(mtranslations); d->SetComment(comment); d->SetLineNumber(lineNumber); d->SetRawReferences(references); for (auto i: extractedComments) { // Sometimes, msgcat produces conflicts in extracted comments; see the gory details: // https://groups.google.com/d/topic/poedit/j41KuvXtVUU/discussion // As a workaround, just filter them out. // FIXME: Fix this properly... but not using msgcat in the first place if (i.starts_with(MSGCAT_CONFLICT_MARKER) && i.ends_with(MSGCAT_CONFLICT_MARKER)) continue; d->AddExtractedComments(i); } d->SetOldMsgid(msgid_old); m_catalog.AddItem(d); } return true; } bool POLoadParser::OnDeletedEntry(const wxArrayString& deletedLines, const wxString& flags, const wxArrayString& /*references*/, const wxString& comment, const wxArrayString& extractedComments, unsigned lineNumber) { FileIsValid = true; POCatalogDeletedData d; if (!flags.empty()) d.SetFlags(flags); d.SetDeletedLines(deletedLines); d.SetComment(comment); d.SetLineNumber(lineNumber); for (size_t i = 0; i < extractedComments.GetCount(); i++) d.AddExtractedComments(extractedComments[i]); m_catalog.AddDeletedItem(d); return true; } // ---------------------------------------------------------------------- // POCatalogItem class // ---------------------------------------------------------------------- wxArrayString POCatalogItem::GetReferences() const { // A line may contain several references, separated by white-space. // Traditionally, each reference was in the form "path_name:line_number", but non // standard references are sometime used too, including hyperlinks. // Filenames that contain spaces are supported - they must be enclosed by Unicode // characters U+2068 and U+2069. wxArrayString refs; for (auto ref = m_references.begin(); ref != m_references.end(); ++ref) { auto line = ref->Strip(wxString::both); wxString buf; auto i = line.begin(); while (i != line.end()) { const wchar_t c = *i; if (wxIsspace(c)) { // store reference text encountered so far: if (!buf.empty()) { refs.push_back(buf); buf.clear(); } ++i; } else if (c == L'\u2068') { // quoted filename between U+2068 and U+2069: ++i; while (i != line.end() && *i != L'\u2069') { buf += *i; ++i; } if (i != line.end()) ++i; // skip trailing U+2069 } else { buf += c; ++i; } } if (!buf.empty()) refs.push_back(buf); } return refs; } // ---------------------------------------------------------------------- // POCatalog class // ---------------------------------------------------------------------- POCatalog::POCatalog(Type type) : Catalog(type) { m_fileCRLF = wxTextFileType_None; m_fileWrappingWidth = DEFAULT_WRAPPING; } POCatalog::POCatalog(const wxString& po_file, int flags) : Catalog(Type::PO) { m_fileCRLF = wxTextFileType_None; m_fileWrappingWidth = DEFAULT_WRAPPING; Load(po_file, flags); } void POCatalog::PostCreation() { Catalog::PostCreation(); // gettext historically assumes English: if (!m_sourceLanguage.IsValid() && !m_sourceIsSymbolicID) m_sourceLanguage = Language::English(); } bool POCatalog::HasCapability(Catalog::Cap cap) const { switch (cap) { case Cap::Translations: case Cap::LanguageSetting: case Cap::UserComments: case Cap::FuzzyTranslations: return m_fileType == Type::PO; } return false; // silence VC++ warning } bool POCatalog::CanLoadFile(const wxString& extension) { return extension == "po" || extension == "pot"; } wxString POCatalog::GetPreferredExtension() const { switch (m_fileType) { case Type::PO: return "po"; case Type::POT: return "pot"; default: wxFAIL_MSG("not possible here"); return "po"; } return "po"; } static inline wxString GetCurrentTimeString() { return wxDateTime::Now().Format("%Y-%m-%d %H:%M%z"); } void POCatalog::Load(const wxString& po_file, int flags) { wxTextFile f; Clear(); m_fileName = po_file; m_header.BasePath = wxEmptyString; wxString ext; wxFileName::SplitPath(po_file, nullptr, nullptr, &ext); if (ext.CmpNoCase("pot") == 0 || (flags & CreationFlag_IgnoreTranslations)) m_fileType = Type::POT; else m_fileType = Type::PO; /* Load the .po file: */ if (!f.Open(po_file, wxConvISO8859_1)) { BOOST_THROW_EXCEPTION(Exception(_(L"Couldn’t load the file, it is probably damaged."))); } { wxLogNull null; // don't report parsing errors from here, report them later POCharsetInfoFinder charsetFinder(&f); charsetFinder.Parse(); m_header.Charset = charsetFinder.GetCharset(); } f.Close(); wxCSConv encConv(m_header.Charset); if (!f.Open(po_file, encConv)) { BOOST_THROW_EXCEPTION(Exception(_(L"Couldn’t load the file, it is probably damaged."))); } if (!VerifyFileCharset(f, po_file, m_header.Charset)) { wxLogError(_("There were errors when loading the file. Some data may be missing or corrupted as the result.")); } POLoadParser parser(*this, &f); parser.IgnoreHeader(flags & CreationFlag_IgnoreHeader); parser.IgnoreTranslations(flags & CreationFlag_IgnoreTranslations); if (!parser.Parse()) { BOOST_THROW_EXCEPTION(Exception(_(L"Couldn’t load the file, it is probably damaged."))); } m_sourceLanguage = parser.GetSpecifiedMsgidLanguage(); // may be, and likely will, invalid m_fileCRLF = GetFileCRLFFormat(f); m_fileWrappingWidth = parser.GetWrappingWidth(); wxLogTrace("poedit", "detect line wrapping: %d", m_fileWrappingWidth); // If we didn't find any entries, the file must be invalid: if (!parser.FileIsValid) { BOOST_THROW_EXCEPTION(Exception(_(L"Couldn’t load the file, it is probably damaged."))); } f.Close(); FixupCommonIssues(); if ( flags & CreationFlag_IgnoreHeader ) CreateNewHeader(); } void POCatalog::FixupCommonIssues() { if (m_header.Project == "PACKAGE VERSION") m_header.Project.clear(); // In PHP use, strings with % (typically: 100%) get frequently mis-identified as php-format, because the // format string allows space, so e.g. "100% complete" has a valid "% c" format flag in it. Work around // this by removing the flag ourselves, as translators can rarely influence it: for (auto& i: items()) { if (i->GetFormatFlag() == "php") { auto s = i->GetRawString(); if (s.Contains(wxS("% ")) && !s.Contains(wxS("%% "))) { auto poi = std::dynamic_pointer_cast(i); poi->m_moreFlags.Replace("php-format", "no-php-format"); } } } // All the following fixups are specific to POs and should *not* be done in POTs: if (m_fileType == Type::POT) return; if (m_header.GetHeader("Language-Team") == "LANGUAGE ") { m_header.DeleteHeader("Language-Team"); m_header.LanguageTeam.clear(); } if (m_header.GetHeader("Last-Translator") == "FULL NAME ") { m_header.DeleteHeader("Last-Translator"); m_header.Translator.clear(); m_header.TranslatorEmail.clear(); } wxString pluralForms = m_header.GetHeader("Plural-Forms"); if (pluralForms == "nplurals=INTEGER; plural=EXPRESSION;") // default invalid value pluralForms = ""; if (!pluralForms.empty()) { if (!pluralForms.ends_with(";")) { pluralForms += ";"; m_header.SetHeader("Plural-Forms", pluralForms); } } else { // Auto-fill default plural form if it is missing: if (m_header.Lang.IsValid() && HasPluralItems()) { pluralForms = m_header.Lang.DefaultPluralFormsExpr().str(); if (!pluralForms.empty()) m_header.SetHeader("Plural-Forms", pluralForms); } } } void POCatalog::Clear() { // Catalog base class fields: m_items.clear(); // PO-specific fields: m_deletedItems.clear(); } // misc file-saving helpers namespace { inline bool CanEncodeStringToCharset(const wxString& s, wxMBConv& conv) { if (s.empty()) return true; const wxCharBuffer converted(s.mb_str(conv)); if ( converted.length() == 0 ) return false; return true; } bool CanEncodeToCharset(const wxTextBuffer& f, const wxString& charset) { if (charset.Lower() == "utf-8" || charset.Lower() == "utf8") return true; wxCSConv conv(charset); const size_t lines = f.GetLineCount(); for ( size_t i = 0; i < lines; i++ ) { if ( !CanEncodeStringToCharset(f.GetLine(i), conv) ) return false; } return true; } template inline void SplitIntoLines(const wxString& text, Func&& f) { if (text.empty()) return; wxString::const_iterator last = text.begin(); for (wxString::const_iterator i = text.begin(); i != text.end(); ++i) { if (*i == '\n') { f(wxString(last, i), false); last = i + 1; } } if (last != text.end()) f(wxString(last, text.end()), true); } void SaveMultiLines(wxTextBuffer &f, const wxString& text) { SplitIntoLines(text, [&f](wxString&& s, bool) { f.AddLine(s); }); } /** Adds \n characters as necessary for good-looking output */ wxString FormatStringForFile(const wxString& text) { wxString s; s.reserve(text.length() + 16); static wxString quoted_newline(wxS("\"\n\"")); SplitIntoLines(text, [&s](wxString&& piece, bool last) { if (!s.empty()) s += quoted_newline; if (!last) piece += '\n'; EscapeCStringInplace(piece); s += piece; }); return s; } } // anonymous namespace #ifdef __WXOSX__ @interface CompiledMOFilePresenter : NSObject @property (atomic, copy) NSURL *presentedItemURL; @property (atomic, copy) NSURL *primaryPresentedItemURL; @end @implementation CompiledMOFilePresenter - (NSOperationQueue *)presentedItemOperationQueue { return [NSOperationQueue mainQueue]; } @end #endif // __WXOSX__ bool POCatalog::Save(const wxString& po_file, bool save_mo, ValidationResults& validation_results, CompilationStatus& mo_compilation_status) { mo_compilation_status = CompilationStatus::NotDone; if ( wxFileExists(po_file) && !wxFile::Access(po_file, wxFile::write) ) { wxLogError(_(L"File “%s†is read-only and cannot be saved.\nPlease save it under different name."), po_file.c_str()); return false; } // Update information about last modification time. But if the header // 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: auto currentTime = GetCurrentTimeString(); 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; default: wxFAIL_MSG("not possible here"); break; } TempOutputFileFor po_file_temp_obj(po_file); const wxString po_file_temp = po_file_temp_obj.FileName(); wxTextFileType outputCrlf = GetDesiredCRLFFormat(m_fileCRLF); // Save into Unix line endings first and only if Windows is required, // reformat the file later. This is because msgcat cannot handle DOS // input particularly well. if ( !DoSaveOnly(po_file_temp, wxTextFileType_Unix) ) { wxLogError(_(L"Couldn’t save file %s."), po_file.c_str()); return false; } try { validation_results = Validate(/*fileWithSameContent=*/po_file_temp); } catch (...) { // DoValidate may fail catastrophically if app bundle is damaged, but // that shouldn't prevent Poedit from trying to save user's file. wxLogError("%s", DescribeCurrentException()); } // Now that the file was written, run msgcat to re-format it according // to the usual format. This is a (barely) passable fix for #25 until // proper preservation of formatting is implemented. bool msgcat_ok = false; { wxArrayString args { "msgcat", "--force-po" }; int wrapping = DEFAULT_WRAPPING; if (wxConfig::Get()->ReadBool("keep_crlf", true)) wrapping = m_fileWrappingWidth; if (wrapping == DEFAULT_WRAPPING) { if (wxConfig::Get()->ReadBool("wrap_po_files", true)) { wrapping = (int)wxConfig::Get()->ReadLong("wrap_po_files_width", 79); } else { wrapping = NO_WRAPPING; } } if (wrapping == NO_WRAPPING) args.push_back("--no-wrap"); else if (wrapping != DEFAULT_WRAPPING) args.push_back(wxString::Format("--width=%d", wrapping)); TempOutputFileFor po_file_temp2_obj(po_file_temp); const wxString po_file_temp2 = po_file_temp2_obj.FileName(); args.push_back("-o"); args.push_back(po_file_temp2); args.push_back(po_file_temp); wxLogTrace("poedit", "formatting file with %s", wxJoin(args, ' ')); // Ignore msgcat errors output (but not exit code), because it // a) complains about things DoValidate() already complained above // b) issues warnings about source-extraction things (e.g. using non-ASCII // msgids) that, while correct, are not something a *translator* can // do anything about. GettextRunner runner; msgcat_ok = runner.run_sync(args) && wxFileExists(po_file_temp2); // msgcat always outputs Unix line endings, so we need to reformat the file if (msgcat_ok && outputCrlf == wxTextFileType_Dos) { wxCSConv conv(m_header.Charset); wxTextFile finalFile(po_file_temp2); if (finalFile.Open(conv)) finalFile.Write(outputCrlf, conv); } if (!TempOutputFileFor::ReplaceFile(po_file_temp2, po_file)) msgcat_ok = false; } if ( msgcat_ok ) { wxRemoveFile(po_file_temp); } else { if ( !po_file_temp_obj.Commit() ) { wxLogError(_(L"Couldn’t save file %s."), po_file.c_str()); } else { // Only shows msgcat's failure warning if we don't also get // validation errors, because if we do, the cause is likely the // same. if ( !validation_results.errors ) { wxLogWarning(_("There was a problem formatting the file nicely (but it was saved all right).")); } } } /* If the user wants it, compile .mo file right now: */ bool compileMO = save_mo; if (!wxConfig::Get()->Read("compile_mo", (long)true)) compileMO = false; if (m_fileType == Type::PO && compileMO) { const wxString mo_file = wxFileName::StripExtension(po_file) + ".mo"; TempOutputFileFor mo_file_temp_obj(mo_file); const wxString mo_file_temp = mo_file_temp_obj.FileName(); { // Ignore msgfmt errors output (but not exit code), because it // complains about things DoValidate() already complained above. if (GettextRunner().run_sync("msgfmt", "-o", mo_file_temp, CliSafeFileName(po_file))) { mo_compilation_status = CompilationStatus::Success; } else { // Don't report errors, they were reported as part of validation // step above. Notice that we run msgfmt *without* the -c flag // here to create the MO file in as many cases as possible, even if // it has some errors. // // Still, msgfmt has the ugly habit of sometimes returning non-zero // exit code, reporting "fatal errors" and *still* producing a usable // .mo file. If this happens, don't pretend the file wasn't created. if (wxFileName::FileExists(mo_file_temp)) mo_compilation_status = CompilationStatus::Success; else mo_compilation_status = CompilationStatus::Error; } } // Move the MO from temporary location to the final one, if it was created if (mo_compilation_status == CompilationStatus::Success) { #ifdef __WXOSX__ NSURL *mofileUrl = [NSURL fileURLWithPath:str::to_NS(mo_file)]; NSURL *mofiletempUrl = [NSURL fileURLWithPath:str::to_NS(mo_file_temp)]; CompiledMOFilePresenter *presenter = [CompiledMOFilePresenter new]; presenter.presentedItemURL = mofileUrl; presenter.primaryPresentedItemURL = [NSURL fileURLWithPath:str::to_NS(po_file)]; [NSFileCoordinator addFilePresenter:presenter]; NSFileCoordinator *coo = [[NSFileCoordinator alloc] initWithFilePresenter:presenter]; [coo coordinateWritingItemAtURL:mofileUrl options:NSFileCoordinatorWritingForReplacing error:nil byAccessor:^(NSURL *newURL) { NSURL *resultingUrl; BOOL ok = [[NSFileManager defaultManager] replaceItemAtURL:newURL withItemAtURL:mofiletempUrl backupItemName:nil options:0 resultingItemURL:&resultingUrl error:nil]; if (!ok) { wxLogError(_(L"Couldn’t save file %s."), mo_file.c_str()); mo_compilation_status = CompilationStatus::Error; } }]; [NSFileCoordinator removeFilePresenter:presenter]; #else // !__WXOSX__ if ( !mo_file_temp_obj.Commit() ) { wxLogError(_(L"Couldn’t save file %s."), mo_file.c_str()); mo_compilation_status = CompilationStatus::Error; } #endif // __WXOSX__/!__WXOSX__ } } SetFileName(po_file); return true; } std::string POCatalog::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 POCatalog::CompileToMO(const wxString& mo_file, ValidationResults& validation_results, CompilationStatus& mo_compilation_status) { mo_compilation_status = CompilationStatus::NotDone; TempDirectory tmpdir; if ( !tmpdir.IsOk() ) return false; wxFileName mofn(mo_file); wxString po_file_temp = tmpdir.CreateFileName(mofn.GetName() + ".po"); if ( !DoSaveOnly(po_file_temp, wxTextFileType_Unix) ) { wxLogError(_(L"Couldn’t save file %s."), po_file_temp.c_str()); return false; } validation_results = Validate(/*fileWithSameContent=*/po_file_temp); TempOutputFileFor mo_file_temp_obj(mo_file); const wxString mo_file_temp = mo_file_temp_obj.FileName(); GettextRunner runner; runner.run_sync("msgfmt", "-o", mo_file_temp, po_file_temp); // Ignore msgfmt errors output (but not exit code), because it // complains about things DoValidate() already complained above. // // Don't check return code either: // msgfmt has the ugly habit of sometimes returning non-zero // exit code, reporting "fatal errors" and *still* producing a usable // .mo file. If this happens, don't pretend the file wasn't created. if (!wxFileName::FileExists(mo_file_temp)) { mo_compilation_status = CompilationStatus::Error; return false; } else { mo_compilation_status = CompilationStatus::Success; } if ( !mo_file_temp_obj.Commit() ) { wxLogError(_(L"Couldn’t save file %s."), mo_file.c_str()); return false; } return true; } bool POCatalog::DoSaveOnly(const wxString& po_file, wxTextFileType crlf) { wxTextFile f; if (!f.Create(po_file)) return false; return DoSaveOnly(f, crlf); } bool POCatalog::DoSaveOnly(wxTextBuffer& f, wxTextFileType crlf) { const bool isPOT = m_fileType == Type::POT; /* Save .po file: */ if (!m_header.Charset || m_header.Charset == "CHARSET") m_header.Charset = "UTF-8"; SaveMultiLines(f, m_header.Comment); if (isPOT) f.AddLine(wxS("#, fuzzy")); f.AddLine(wxS("msgid \"\"")); f.AddLine(wxS("msgstr \"\"")); wxString pohdr = wxString(wxS("\"")) + m_header.ToString(wxS("\"\n\"")); pohdr.RemoveLast(); SaveMultiLines(f, pohdr); f.AddLine(wxEmptyString); auto pluralsCount = GetPluralFormsCount(); for (auto& data_: m_items) { auto data = std::static_pointer_cast(data_); data->SetLineNumber(int(f.GetLineCount()+1)); SaveMultiLines(f, data->GetComment()); for (unsigned i = 0; i < data->GetExtractedComments().GetCount(); i++) { if (data->GetExtractedComments()[i].empty()) f.AddLine(wxS("#.")); else f.AddLine(wxS("#. ") + data->GetExtractedComments()[i]); } for (unsigned i = 0; i < data->GetRawReferences().GetCount(); i++) f.AddLine(wxS("#: ") + data->GetRawReferences()[i]); wxString dummy = data->GetFlags(); if (!dummy.empty()) f.AddLine(wxS("#") + dummy); for (unsigned i = 0; i < data->GetOldMsgidRaw().GetCount(); i++) f.AddLine(wxS("#| ") + data->GetOldMsgidRaw()[i]); if ( data->HasContext() ) { SaveMultiLines(f, wxS("msgctxt \"") + FormatStringForFile(data->GetContext()) + wxS("\"")); } dummy = FormatStringForFile(data->GetRawString()); SaveMultiLines(f, wxS("msgid \"") + dummy + wxS("\"")); if (data->HasPlural()) { dummy = FormatStringForFile(data->GetRawPluralString()); SaveMultiLines(f, wxS("msgid_plural \"") + dummy + wxS("\"")); for (unsigned i = 0; i < pluralsCount; i++) { dummy = FormatStringForFile(data->GetTranslation(i)); wxString hdr = wxString::Format(wxS("msgstr[%u] \""), i); SaveMultiLines(f, hdr + dummy + wxS("\"")); } } else { if (isPOT) { f.AddLine(wxS("msgstr \"\"")); } else { dummy = FormatStringForFile(data->GetTranslation()); SaveMultiLines(f, wxS("msgstr \"") + dummy + wxS("\"")); } } f.AddLine(wxEmptyString); } // Write back deleted items in the file so that they're not lost for (unsigned itemIdx = 0; itemIdx < m_deletedItems.size(); itemIdx++) { if ( itemIdx != 0 ) f.AddLine(wxEmptyString); POCatalogDeletedData& deletedItem = m_deletedItems[itemIdx]; deletedItem.SetLineNumber(int(f.GetLineCount()+1)); SaveMultiLines(f, deletedItem.GetComment()); for (unsigned i = 0; i < deletedItem.GetExtractedComments().GetCount(); i++) f.AddLine(wxS("#. ") + deletedItem.GetExtractedComments()[i]); for (unsigned i = 0; i < deletedItem.GetRawReferences().GetCount(); i++) f.AddLine(wxS("#: ") + deletedItem.GetRawReferences()[i]); wxString dummy = deletedItem.GetFlags(); if (!dummy.empty()) f.AddLine(wxS("#") + dummy); for (size_t j = 0; j < deletedItem.GetDeletedLines().GetCount(); j++) f.AddLine(deletedItem.GetDeletedLines()[j]); } if (!CanEncodeToCharset(f, m_header.Charset)) { #if wxUSE_GUI wxString msg; msg.Printf(_(L"The file couldn’t be saved in “%s†charset as specified in translation settings.\n\nIt was saved in UTF-8 instead and the setting was modified accordingly."), m_header.Charset.c_str()); wxMessageBox(msg, _("Error saving file"), wxOK | wxICON_EXCLAMATION); #endif m_header.Charset = "UTF-8"; // Re-do the save again because we modified a header: f.Clear(); return DoSaveOnly(f, crlf); } // Otherwise everything can be safely saved: return f.Write(crlf, wxCSConv(m_header.Charset)); } void POCatalog::SetLanguage(Language lang) { Catalog::SetLanguage(lang); // don't add unneeded header, but always update it if already present: if (HasPluralItems() || m_header.HasHeader("Plural-Forms")) m_header.SetHeaderNotEmpty("Plural-Forms", lang.DefaultPluralFormsExpr().str()); } unsigned POCatalog::GetPluralFormsCount() const { return std::max(GetCountFromPluralFormsHeader(m_header), Catalog::GetPluralFormsCount()); } bool POCatalog::HasWrongPluralFormsCount() const { unsigned count = 0; for (auto& i: m_items) { count = std::max(count, i->GetPluralFormsCount()); } if ( count == 0 ) return false; // nothing translated, so we can't tell // if 'count' is less than the count from header, it may simply mean there // are untranslated strings if ( count > GetCountFromPluralFormsHeader(m_header) ) return true; return false; } bool POCatalog::HasDuplicateItems() const { typedef std::pair MsgId; std::set ids; for (auto& item: m_items) { if (!ids.emplace(std::make_pair(item->GetContext(), item->GetRawString())).second) return true; } return false; } bool POCatalog::FixDuplicateItems() { auto oldname = m_fileName; TempDirectory tmpdir; if ( !tmpdir.IsOk() ) return false; wxString ext; wxFileName::SplitPath(m_fileName, nullptr, nullptr, &ext); wxString po_file_temp = tmpdir.CreateFileName("catalog." + ext); wxString po_file_fixed = tmpdir.CreateFileName("fixed." + ext); if ( !DoSaveOnly(po_file_temp, wxTextFileType_Unix) ) { wxLogError(_(L"Couldn’t save file %s."), po_file_temp.c_str()); return false; } GettextRunner().run_sync("msguniq", "-o", CliSafeFileName(po_file_fixed), CliSafeFileName(po_file_temp)); if (!wxFileName::FileExists(po_file_fixed)) return false; Load(po_file_fixed); m_fileName = oldname; PostCreation(); return true; } Catalog::ValidationResults POCatalog::Validate(const wxString& fileWithSameContent) { ValidationResults res = Catalog::Validate(fileWithSameContent); if (!HasCapability(Catalog::Cap::Translations)) return res; // no errors in POT files if (!fileWithSameContent.empty()) { ValidateWithMsgfmt(res, fileWithSameContent); } else { TempDirectory tmpdir; if ( !tmpdir.IsOk() ) return res; wxString tmp_po = tmpdir.CreateFileName("validated.po"); if ( !DoSaveOnly(tmp_po, wxTextFileType_Unix) ) return res; ValidateWithMsgfmt(res, tmp_po); } return res; } void POCatalog::ValidateWithMsgfmt(Catalog::ValidationResults& res, const wxString& po_file) { GettextRunner gtr; auto output = gtr.run_sync("msgfmt", "-o", "/dev/null", "-c", CliSafeFileName(po_file)); auto errors = gtr.parse_stderr(output); for (auto& i: errors.items) { if (i.has_location()) { auto item = FindItemByLine(i.line); if (item) { res.errors++; item->SetIssue(CatalogItem::Issue::Error, i.text); } } // else: ignore msgfmt output w/o a location because msgfmt outputs status information // (e.g. "N errors found") to stderr too } } bool POCatalog::UpdateFromPOT(const wxString& pot_file, bool replace_header) { try { POCatalogPtr pot = std::dynamic_pointer_cast(Catalog::Create(pot_file, CreationFlag_IgnoreTranslations)); return UpdateFromPOT(pot, replace_header); } catch (...) // FIXME { wxLogError(_(L"“%s†is not a valid POT file."), pot_file.c_str()); return false; } } bool POCatalog::UpdateFromPOT(POCatalogPtr pot, bool replace_header) { switch (m_fileType) { case Type::PO: { if (!Merge(pot)) return false; break; } case Type::POT: { m_items = pot->m_items; m_sourceLanguage = pot->m_sourceLanguage; m_sourceIsSymbolicID = pot->m_sourceIsSymbolicID; m_hasPluralItems = pot->m_hasPluralItems; break; } default: wxFAIL_MSG("not possible here"); break; } if (replace_header) CreateNewHeader(pot->Header()); return true; } POCatalogPtr POCatalog::CreateFromPOT(POCatalogPtr pot) { POCatalogPtr c(new POCatalog(Type::PO)); if (c->UpdateFromPOT(pot, /*replace_header=*/true)) return c; else return nullptr; } bool POCatalog::Merge(const POCatalogPtr& refcat) { wxString oldname = m_fileName; wxON_BLOCK_EXIT_SET(m_fileName, oldname); TempDirectory tmpdir; if ( !tmpdir.IsOk() ) return false; wxString tmp1 = tmpdir.CreateFileName("ref.pot"); wxString tmp2 = tmpdir.CreateFileName("input.po"); wxString tmp3 = tmpdir.CreateFileName("output.po"); refcat->DoSaveOnly(tmp1, wxTextFileType_Unix); DoSaveOnly(tmp2, wxTextFileType_Unix); std::vector args { "msgmerge", "-q", "--force-po", "--previous" }; if (Config::MergeBehavior() == Merge_None) { args.push_back("--no-fuzzy-matching"); } args.push_back("-o"); args.push_back(tmp3); args.push_back(tmp2); args.push_back(tmp1); GettextRunner runner; auto output = runner.run_sync(args); // FIXME: Don't do that here, report as part of return value instead runner.parse_stderr(output).log_errors(); if (output) { const wxString charset = m_header.Charset; Load(tmp3); m_fileName = oldname; PostCreation(); // msgmerge doesn't always preserve the charset, it tends to pick // the most generic one of the charsets used, so if we are merging with // UTF-8 catalog, it will become UTF-8. Some people hate this. m_header.Charset = charset; } return (bool)output; } poedit-3.6.3/src/progress_ui.cpp0000644000175100001660000003153615011674230012334 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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 "progress_ui.h" #include "customcontrols.h" #include "hidpi.h" #include "icons.h" #include "utility.h" #include #include #include #include #include #include #include #include #include #include #include #include namespace { class CapturingThreadLogger : public wxLog { public: CapturingThreadLogger(std::shared_ptr buffer) : m_buffer(buffer) { m_previous = wxLog::SetThreadActiveTarget(this); } ~CapturingThreadLogger() { wxLog::SetThreadActiveTarget(m_previous); } protected: void DoLogRecord(wxLogLevel level, const wxString& msg, [[maybe_unused]] const wxLogRecordInfo& info) override { if (level <= wxLOG_Warning) { m_buffer->push_back(msg); } else if ( level == wxLOG_Debug || level == wxLOG_Trace ) { wxLog::LogTextAtLevel(level, msg); } // else: ignore } private: std::shared_ptr m_buffer; wxLog *m_previous; }; } // anonymous namespace thread_local ProgressWindow *ProgressWindow::ms_activeWindow = nullptr; ProgressWindow::ProgressWindow(wxWindow *parent, const wxString& title, dispatch::cancellation_token_ptr cancellationToken) : TitlelessDialog(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE & ~wxCLOSE_BOX) { m_cancellationToken = cancellationToken; auto sizer = new wxBoxSizer(wxVERTICAL); auto topsizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(topsizer, wxSizerFlags(1).Expand().Border(wxALL, PX(20))); auto appicon = GetPoeditAppIcon(64); const wxSize logoSize(PX(64), PX(64)); m_image = new wxStaticBitmap(this, wxID_ANY, appicon, wxDefaultPosition, logoSize); m_image->SetMinSize(logoSize); m_infoSizer = new wxBoxSizer(wxVERTICAL); m_title = new wxStaticText(this, wxID_ANY, title); #ifdef __WXMSW__ auto titleFont = m_title->GetFont().Scaled(1.3f); #else auto titleFont = m_title->GetFont().Bold(); #endif m_title->SetFont(titleFont); m_infoSizer->Add(m_title, wxSizerFlags().Left().Border(wxBOTTOM, PX(3))); m_gauge = new wxGauge(this, wxID_ANY, PROGRESS_BAR_RANGE, wxDefaultPosition, wxSize(PX(380), -1), wxGA_SMOOTH); m_gauge->Pulse(); m_infoSizer->Add(m_gauge, wxSizerFlags().Expand()); m_progressMessage = new SecondaryLabel(this, ""); m_infoSizer->Add(m_progressMessage, wxSizerFlags().Left().Border(wxTOP, MSW_OR_OTHER(PX(2), 0))); // Manually align the topsizer area to be centered on the icon. We do it like this because we'll want to add some // additional content to the bottom as part of summary display: int topMarginImage = MSW_OR_OTHER(PX(2), 0); int topMarginInfo = (m_image->GetMinSize().y - m_infoSizer->GetMinSize().y) / 2; if (topMarginInfo < 0) { topMarginImage += -topMarginInfo; topMarginInfo = 0; } topsizer->Add(m_image, wxSizerFlags().Top().Border(wxTOP, topMarginImage)); topsizer->AddSpacer(PX(10)); topsizer->Add(m_infoSizer, wxSizerFlags(1).Top().Border(wxTOP, topMarginInfo)); m_infoSummarySizer = new wxBoxSizer(wxVERTICAL); m_infoSizer->Add(m_infoSummarySizer, wxSizerFlags().Expand()); m_errorsSizer = new wxBoxSizer(wxVERTICAL); m_infoSizer->Add(m_errorsSizer, wxSizerFlags().Expand().Border(wxTOP, PX(8))); m_detailsSizer = new wxBoxSizer(wxVERTICAL); m_infoSizer->Add(m_detailsSizer, wxSizerFlags().Expand().Border(wxTOP, PX(8))); m_buttonSizer = new wxBoxSizer(wxHORIZONTAL); m_buttonSizer->AddStretchSpacer(); m_infoSizer->Add(m_buttonSizer, wxSizerFlags().Expand().Border(wxTOP, PX(20))); if (cancellationToken) { m_cancelButton = new wxButton(this, wxID_CANCEL); m_cancelButton->Bind(wxEVT_BUTTON, &ProgressWindow::OnCancel, this); m_buttonSizer->Add(m_cancelButton); } SetSizerAndFit(sizer); sizer->SetMinSize(sizer->GetSize()); // prevent resizing down later if (parent) CenterOnParent(); } bool ProgressWindow::ShowSummary(const BackgroundTaskResult& data, const wxArrayString& errors) { if (!data) return false; if (!SetSummaryContent(data)) return false; if (!errors.empty()) { wxString text; if (errors.size() == 1) { text = _("Error: ") + errors.front(); } else { text = wxString::Format(wxPLURAL("%d error occurred:", "%d errors occurred:", (int)errors.size()), (int)errors.size()); text += '\n'; text += wxJoin(errors, '\n', 0); } auto errctrl = new SelectableAutoWrappingText(this, wxID_ANY, text); errctrl->SetForegroundColour(ColorScheme::Get(Color::ErrorText)); m_errorsSizer->Add(errctrl, wxSizerFlags().Expand().Border(wxTOP, PX(8))); } if (m_cancellationProgress) m_buttonSizer->Hide(m_cancellationProgress); m_gauge->SetValue(PROGRESS_BAR_RANGE); #ifdef __WXOSX__ m_gauge->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #else auto gaugeHeight = m_gauge->GetSize().y; m_infoSizer->Hide(m_gauge); m_infoSizer->Insert(1, new wxStaticLine(this), wxSizerFlags().Expand().Border(wxTOP|wxBOTTOM, gaugeHeight / 2 - 1)); #endif m_infoSizer->Hide(m_progressMessage); if (m_cancelButton) m_buttonSizer->Hide(m_cancelButton); m_okButton = new wxButton(this, wxID_OK); m_buttonSizer->Add(m_okButton); m_okButton->SetDefault(); m_okButton->SetFocus(); m_infoSizer->Layout(); GetSizer()->Layout(); GetSizer()->SetSizeHints(this); #ifdef __WXMSW__ Refresh(); #endif return true; } void ProgressWindow::AddSummaryText(const wxString& text) { auto summary = new AutoWrappingText(this, wxID_ANY, text); m_infoSummarySizer->Add(summary, wxSizerFlags().Expand().Border(wxTOP, PX(2))); } wxBoxSizer *ProgressWindow::AddSummaryDetailLine() { auto sizer = GetDetailsSizer(); auto row = new wxBoxSizer(wxHORIZONTAL); sizer->AddSpacer(PX(4)); sizer->Add(row, wxSizerFlags().Expand().Border(wxRIGHT, PX(2))); return row; } wxBoxSizer *ProgressWindow::AddSummaryDetailLine(const wxString& label, const wxString& value) { auto row = AddSummaryDetailLine(); if (value.empty()) { row->Add(new ExplanationLabel(this, label), wxSizerFlags(1).Center()); } else { row->Add(new SecondaryLabel(this, label), wxSizerFlags().Center()); row->AddStretchSpacer(); row->Add(new SecondaryLabel(this, value), wxSizerFlags().Center()); } return row; } bool ProgressWindow::SetSummaryContent(const BackgroundTaskResult& data) { bool done = false; if (!data.summary.empty()) { AddSummaryText(data.summary); done = true; } if (!data.details.empty()) { for (auto& line: data.details) AddSummaryDetailLine(line.first, line.second); done = true; } return done; } wxWindowPtr ProgressWindow::CreateErrorDialog(const wxArrayString& errors) { if (errors.empty()) return {}; wxString text; wxString extended; if (errors.size() == 1) { text = !m_errorMessage.empty() ? m_errorMessage : _("An error occurred."); extended = errors.front(); } else { if (m_errorMessage.empty()) text = wxString::Format(wxPLURAL("%d error occurred.", "%d errors occurred.", (int)errors.size()), (int)errors.size()); else text = m_errorMessage; extended = wxJoin(errors, '\n', 0); } wxWindowPtr dlg(new wxMessageDialog(GetParent(), text, MSW_OR_OTHER(m_title->GetLabel(), ""), wxOK | wxICON_ERROR)); if (!extended.empty()) dlg->SetExtendedMessage(extended); return dlg; } void ProgressWindow::DoRunTask(std::function&& task, std::function&& completionHandler, bool forceModal) { const bool runModally = forceModal || !GetParent(); auto loggedErrors = std::make_shared(); m_progress = std::make_shared(1); attach(*m_progress); auto windowShownSemaphore = std::make_shared(); Bind(wxEVT_SHOW, [=](wxShowEvent& e){ windowShownSemaphore->Post(); e.Skip(); }); auto bg = dispatch::async([=, task = std::move(task)] { CapturingThreadLogger logger(loggedErrors); Progress progress(1, *m_progress, 1); // Wait until progress window is shown. This greatly simplifies handling of exceptional // states, showing summaries etc. below, because the window is guaranteed to be visible // and (window-)modally showing even if the task finishes immediately. windowShownSemaphore->Wait(); ms_activeWindow = this; wxON_BLOCK_EXIT_SET(ms_activeWindow, nullptr); return task(); }) .then_on_main([=](BackgroundTaskResult result) { bool summaryShown = result ? ShowSummary(result, *loggedErrors) : false; if (summaryShown) { loggedErrors->clear(); // for handling below } else { if (m_cancellationToken && m_cancellationToken->is_cancelled() && !result) EndModal(wxID_CANCEL); else EndModal(wxID_OK); } }) .catch_ex([=](auto&) { EndModal(wxID_CANCEL); }) .catch_ex([=](auto& e) { SetErrorMessage(e.What()); if (!e.Details().empty()) loggedErrors->push_back(e.Details()); EndModal(wxID_CANCEL); }) .catch_all([=](dispatch::exception_ptr e) { loggedErrors->push_back(DescribeException(e)); EndModal(wxID_CANCEL); }); if (runModally) { bool success = ShowModal() != wxID_CANCEL; detach(); m_progress.reset(); Hide(); if (!loggedErrors->empty()) { auto error = CreateErrorDialog(*loggedErrors); error->ShowModal(); success = false; } if (completionHandler) completionHandler(success); } else { ShowWindowModalThenDo([=, completionHandler = std::move(completionHandler)](int retcode) { detach(); m_progress.reset(); Hide(); if (!loggedErrors->empty()) { auto error = CreateErrorDialog(*loggedErrors); error->ShowWindowModalThenDo([completionHandler,error](int /*retcode*/){ if (completionHandler) completionHandler(false); }); } else { if (completionHandler) completionHandler(retcode != wxID_CANCEL); } }); } } void ProgressWindow::update_message(const wxString& text) { dispatch::on_main([=] { m_progressMessage->SetLabel(text); }); } void ProgressWindow::update_progress(double completedFraction) { dispatch::on_main([=] { auto value = std::min((int)std::lround(completedFraction * PROGRESS_BAR_RANGE), PROGRESS_BAR_RANGE); m_gauge->SetValue(value); }); } void ProgressWindow::OnCancel(wxCommandEvent&) { ((wxButton*)FindWindow(wxID_CANCEL))->Enable(false); m_cancellationProgress = new ActivityIndicator(this); m_buttonSizer->Insert(0, m_cancellationProgress, wxSizerFlags().Center()); m_buttonSizer->Layout(); m_cancellationProgress->Start(_(L"Cancelling…")); m_cancellationToken->cancel(); } poedit-3.6.3/src/cat_sorting.h0000644000175100001660000000710315011674230011745 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2010-2025 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 _CAT_SORTING_H_ #define _CAT_SORTING_H_ #include "catalog.h" #include "unicode_helpers.h" #include /// Sort order information struct SortOrder { enum ByWhat { By_FileOrder, By_Source, By_Translation }; SortOrder() : by(By_FileOrder), groupByContext(false), untransFirst(false), errorsFirst(true) {} /// Loads default sort order from config settings static SortOrder Default(); /// Saves this sort order into config void Save(); /// What are we sorting by ByWhat by; /// Group items by context? bool groupByContext; /// Do untranslated entries go first? bool untransFirst; /// Do entries with errors go first? bool errorsFirst; }; /** Comparator for sorting catalog items by different criteria. */ class CatalogItemsComparator { public: /** Initializes comparator instance for given catalog. */ CatalogItemsComparator(const Catalog& catalog, const SortOrder& order); CatalogItemsComparator(const CatalogItemsComparator&) = delete; CatalogItemsComparator& operator=(const CatalogItemsComparator&) = delete; bool operator()(int i, int j) const; protected: const CatalogItem& Item(int i) const { return *m_catalog[i]; } // Pre-process given string and return it in a form efficient for comparing // with ICU collator. This does two things: // 1. Converts to UTF-16 (matters on non-Windows platforms where wchar_t is UTF-32) // 2. Perform substitution of accelerator characters in the string static str::UCharBuffer ConvertToSortKey(const wxString& a) { if (a.find_first_of(L"&_") == wxString::npos) { return str::to_icu(a); } else { wxString a_(a); a_.Replace("&", ""); a_.Replace("_", ""); auto buf = str::to_icu(a_); // on Windows to_icu() returns shallow view of the string, we need to make // a deep copy because a_ is a local temporary variable: buf.ensure_owned(); return buf; } } static str::UCharBuffer ConvertToSortKey(const wxString&& a) { return std::move(ConvertToSortKey(a).ensure_owned()); } private: const Catalog& m_catalog; SortOrder m_order; std::unique_ptr m_collator; std::vector m_sortKeys; }; #endif // _CAT_SORTING_H_ poedit-3.6.3/src/attentionbar.cpp0000644000175100001660000002127315011674230012462 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2008-2025 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 "attentionbar.h" #include "colorscheme.h" #include "custom_buttons.h" #include "customcontrols.h" #include "hidpi.h" #include "utility.h" #include #include #include #include #include #include #include #include #include #include #ifdef __WXOSX__ #define SMALL_BORDER PX(7) #define BUTTONS_SPACE PX(10) #else #define SMALL_BORDER PX(3) #define BUTTONS_SPACE PX(5) #endif BEGIN_EVENT_TABLE(AttentionBar, wxPanel) EVT_BUTTON(wxID_CLOSE, AttentionBar::OnClose) EVT_BUTTON(wxID_ANY, AttentionBar::OnAction) END_EVENT_TABLE() AttentionBar::AttentionBar(wxWindow *parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxBORDER_NONE) { #ifdef __WXOSX__ NSView *view = GetHandle(); view.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua]; #endif #ifdef __WXMSW__ m_icon = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap); #endif m_label = new AutoWrappingText(this, wxID_ANY, ""); m_explanation = new ExplanationLabel(this, ""); m_buttons = new wxBoxSizer(wxHORIZONTAL); m_checkbox = new wxCheckBox(this, wxID_ANY, ""); auto btnClose = new wxBitmapButton ( this, wxID_CLOSE, wxArtProvider::GetBitmap("window-close", wxART_MENU), wxDefaultPosition, wxDefaultSize, wxNO_BORDER ); btnClose->SetToolTip(_("Hide this notification message")); #if defined(__WXOSX__) || defined(__WXMSW__) wxFont boldFont = m_label->GetFont(); boldFont.SetWeight(MSW_OR_OTHER(wxFONTWEIGHT_BOLD, wxFONTWEIGHT_SEMIBOLD)); m_label->SetFont(boldFont); #endif Bind(wxEVT_PAINT, &AttentionBar::OnPaint, this); wxSizer *sizer = new wxBoxSizer(wxHORIZONTAL); sizer->AddSpacer(PXDefaultBorder); #ifdef __WXMSW__ sizer->Add(m_icon, wxSizerFlags().Center().Border(wxALL, SMALL_BORDER)); #endif auto labelSizer = new wxBoxSizer(wxVERTICAL); labelSizer->Add(m_label, wxSizerFlags().Expand()); labelSizer->AddSpacer(PX(1)); labelSizer->Add(m_explanation, wxSizerFlags().Expand().Border(wxRIGHT, PX(4))); sizer->Add(labelSizer, wxSizerFlags(1).Center().PXDoubleBorder(wxALL)); sizer->AddSpacer(PX(20)); auto allButtonsSizer = new wxBoxSizer(wxHORIZONTAL); auto buttonsAndCheckboxSizer = new wxBoxSizer(wxVERTICAL); sizer->Add(buttonsAndCheckboxSizer, wxSizerFlags().Center().Border(wxTOP, PX(1))); buttonsAndCheckboxSizer->Add(allButtonsSizer, wxSizerFlags().Expand()); buttonsAndCheckboxSizer->Add(m_checkbox, wxSizerFlags().Left().Border(wxTOP, MACOS_OR_OTHER(PX(2), PX(4)))); allButtonsSizer->Add(m_buttons); allButtonsSizer->AddStretchSpacer(); allButtonsSizer->AddSpacer(SMALL_BORDER); allButtonsSizer->Add(btnClose, wxSizerFlags().Center().Border(wxTOP, PX(1))); allButtonsSizer->AddSpacer(SMALL_BORDER); #ifdef __WXMSW__ sizer->AddSpacer(PX(4)); #endif SetSizer(sizer); // the bar should be initially hidden Show(false); ColorScheme::SetupWindowColors(this, [=] { UpdateBgColor(); #ifndef __WXOSX__ // The background is light even in dark mode, so we can't use system label colors in it: if (ColorScheme::GetAppMode() == ColorScheme::Light) { m_label->SetForegroundColour(ColorScheme::Get(Color::Label)); m_explanation->SetForegroundColour(ColorScheme::Get(Color::SecondaryLabel)); } else { m_label->SetForegroundColour(*wxBLACK); m_explanation->SetForegroundColour(*wxBLACK); } #endif #ifdef __WXMSW__ btnClose->SetBackgroundColour(GetBackgroundColour()); #endif }); } void AttentionBar::OnPaint(wxPaintEvent&) { wxPaintDC dc(this); auto bg = GetBackgroundColour().ChangeLightness(80); dc.SetBrush(bg); dc.SetPen(bg); wxRect rect(GetSize()); dc.DrawRectangle(0, rect.height - MACOS_OR_OTHER(0, PX(1)), rect.width, PX(1)); } void AttentionBar::UpdateBgColor() { wxColour bg; switch (m_currentKind) { case AttentionMessage::Warning: bg = ColorScheme::Get(Color::AttentionWarningBackground); break; case AttentionMessage::Question: bg = ColorScheme::Get(Color::AttentionQuestionBackground); break; case AttentionMessage::Error: bg = ColorScheme::Get(Color::AttentionErrorBackground); break; } SetBackgroundColour(bg); #ifdef __WXMSW__ for (auto w : GetChildren()) w->SetBackgroundColour(bg); #endif } void AttentionBar::ShowMessage(const AttentionMessage& msg) { if ( msg.IsBlacklisted() ) return; m_currentKind = msg.m_kind; UpdateBgColor(); wxString iconName; switch ( msg.m_kind ) { case AttentionMessage::Warning: iconName = wxART_WARNING; break; case AttentionMessage::Question: iconName = wxART_QUESTION; break; case AttentionMessage::Error: iconName = wxART_ERROR; break; } #ifdef __WXMSW__ m_icon->SetBitmap(wxArtProvider::GetBitmap(iconName, wxART_MENU, wxSize(PX(16), PX(16)))); #endif m_label->SetAndWrapLabel(msg.m_text); m_explanation->SetAndWrapLabel(msg.m_explanation); m_explanation->GetContainingSizer()->Show(m_explanation, !msg.m_explanation.empty()); m_checkbox->SetLabel(msg.m_checkbox); m_checkbox->GetContainingSizer()->Show(m_checkbox, !msg.m_checkbox.empty()); m_buttons->Clear(true/*delete_windows*/); m_actions.clear(); for ( AttentionMessage::Actions::const_iterator i = msg.m_actions.begin(); i != msg.m_actions.end(); ++i ) { auto b = new TranslucentButton(this, wxID_ANY, i->first); m_buttons->Add(b, wxSizerFlags().Center().Border(wxRIGHT, BUTTONS_SPACE)); m_actions[b] = i->second; } // we need to size the control correctly _and_ lay out the controls if this // is the first time it's being shown, otherwise we can get garbled look: wxWindowUpdateLocker lock(this); SetSize(GetParent()->GetClientSize().x, 1); Layout(); Refresh(); Show(); GetParent()->Layout(); } void AttentionBar::HideMessage() { Hide(); GetParent()->Layout(); } void AttentionBar::OnClose(wxCommandEvent& WXUNUSED(event)) { HideMessage(); } void AttentionBar::OnAction(wxCommandEvent& event) { ActionsMap::const_iterator i = m_actions.find(event.GetEventObject()); if ( i == m_actions.end() ) { event.Skip(); return; } // first perform the action... AttentionMessage::ActionInfo info; info.checkbox = m_checkbox->IsShown() && m_checkbox->IsChecked(); i->second(info); // ...then hide the message HideMessage(); } /* static */ void AttentionMessage::AddToBlacklist(const wxString& id) { wxConfig::Get()->Write ( wxString::Format("/messages/dont_show/%s", id.c_str()), (long)true ); } /* static */ bool AttentionMessage::IsBlacklisted(const wxString& id) { return wxConfig::Get()->ReadBool ( wxString::Format("/messages/dont_show/%s", id.c_str()), false ); } void AttentionMessage::AddDontShowAgain() { auto id = m_id; AddAction( MSW_OR_OTHER(_(L"Don’t show again"), _(L"Don’t Show Again")), [id]{ AddToBlacklist(id); }); } poedit-3.6.3/src/catalog_xcloc.h0000644000175100001660000000364715011674230012244 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2025 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_catalog_xcloc_h #define Poedit_catalog_xcloc_h #include "catalog_xliff.h" class XCLOCCatalog : public XLIFF1Catalog { public: using XLIFF1Catalog::XLIFF1Catalog; bool HasCapability(Cap cap) const override; static bool CanLoadFile(const wxString& extension); wxString GetPreferredExtension() const override { return "xcloc"; } static std::shared_ptr Open(const wxString& filename); bool Save(const wxString& filename, bool save_mo, ValidationResults& validation_results, CompilationStatus& mo_compilation_status) override; void SetLanguage(Language lang) override; protected: wxString m_originalFilename, m_embeddedXLIFFFilename; }; #endif // Poedit_catalog_xcloc_h poedit-3.6.3/src/pretranslate.h0000644000175100001660000000522015011674230012133 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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_pretranslate_h #define Poedit_pretranslate_h #include "catalog.h" #include "edlistctrl.h" #include #include /// Flags for pre-translation functions enum PreTranslateFlags { PreTranslate_OnlyExact = 0x01, PreTranslate_ExactNotFuzzy = 0x02, PreTranslate_OnlyGoodQuality = 0x04 }; /// Options passed to pre-translation functions struct PreTranslateOptions { explicit PreTranslateOptions(int flags_ = 0) : flags(flags_) {} /// Flags, a combination of PreTranslateFlags values int flags; }; /** Pre-translate all items in the catalog. If not nullptr, report # of pre-translated items in @a matchesCount Returns number of pre-translated (i.e. changed) items. */ void PreTranslateCatalogAuto(wxWindow *window, CatalogPtr catalog, const PreTranslateOptions& options, std::function onChangesMade); /** Show UI for choosing pre-translation choices, then proceed with pre-translation unless cancelled (in which case false is returned). @param parent Parent window @param list List to take selection from @param catalog Catalog to translate Returns true if any changes were made. */ void PreTranslateWithUI(wxWindow *window, PoeditListCtrl *list, CatalogPtr catalog, std::function onChangesMade); #endif // Poedit_pretranslate_h poedit-3.6.3/src/cat_sorting.cpp0000644000175100001660000001466215011674230012310 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 Vaclav Slavik * Copyright (C) 2005 Olivier Sannier * * 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 "cat_sorting.h" #include "str_helpers.h" #include #include /*static*/ SortOrder SortOrder::Default() { SortOrder order; 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; else if ( by == "translation" ) order.by = By_Translation; else order.by = By_FileOrder; order.groupByContext = (ctxt != 0); order.untransFirst = (untrans != 0); order.errorsFirst = (errors != 0); return order; } void SortOrder::Save() { wxString bystr; switch ( by ) { case By_FileOrder: bystr = "file-order"; break; case By_Source: bystr = "source"; break; case By_Translation: bystr = "translation"; break; } 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); } CatalogItemsComparator::CatalogItemsComparator(const Catalog& catalog, const SortOrder& order) : m_catalog(catalog), m_order(order) { if (m_order.by == SortOrder::By_Translation && !m_catalog.HasCapability(Catalog::Cap::Translations)) m_order.by = SortOrder::By_FileOrder; switch (m_order.by) { case SortOrder::By_Translation: m_collator.reset(new unicode::Collator(catalog.GetLanguage(), unicode::Collator::case_insensitive)); break; case SortOrder::By_FileOrder: // we still need collator for e.g. comparing contexts, use source language for that case SortOrder::By_Source: m_collator.reset(new unicode::Collator(catalog.GetSourceLanguage(), unicode::Collator::case_insensitive)); break; } // Prepare cache for faster comparison. ICU uses UTF-16 internally, we can significantly // speed up comparisons by doing string conversion in advance, in O(n) time and space, if // the platform's native representation is UTF-32 or -8 (which it is on non-Windows). // Moreover, the additional processing of removing accelerators is also done only once // on all platforms, resulting in massive speedups on Windows too. switch (m_order.by) { case SortOrder::By_Source: m_sortKeys.reserve(m_catalog.GetCount()); for (auto& i: m_catalog.items()) m_sortKeys.push_back(ConvertToSortKey(i->GetString())); break; case SortOrder::By_Translation: m_sortKeys.reserve(m_catalog.GetCount()); for (auto& i: m_catalog.items()) m_sortKeys.push_back(ConvertToSortKey(i->GetTranslation())); break; case SortOrder::By_FileOrder: break; } } bool CatalogItemsComparator::operator()(int i, int j) const { const CatalogItem& a = Item(i); const CatalogItem& b = Item(j); if ( m_order.errorsFirst ) { // hard errors always go first: if ( a.HasError() && !b.HasError() ) return true; else if ( !a.HasError() && b.HasError() ) return false; // warnings are more nuanced and should only be considered on non-fuzzy // entries (see https://github.com/vslavik/poedit/issues/611 for discussion): auto const a_shouldWarn = a.HasIssue() && !a.IsFuzzy(); auto const b_shouldWarn = b.HasIssue() && !b.IsFuzzy(); if ( a_shouldWarn && !b_shouldWarn ) return true; else if ( !a_shouldWarn && b_shouldWarn ) return false; } if ( m_order.untransFirst ) { if ( !a.IsTranslated() && b.IsTranslated() ) return true; else if ( a.IsTranslated() && !b.IsTranslated() ) return false; if ( a.IsFuzzy() && !b.IsFuzzy() ) return true; else if ( !a.IsFuzzy() && b.IsFuzzy() ) return false; } if ( m_order.groupByContext ) { if ( a.HasContext() && !b.HasContext() ) return true; else if ( !a.HasContext() && b.HasContext() ) return false; else if ( a.HasContext() && b.HasContext() ) { // we don't want to apply translation string pre-processing to contexts, use collator directly auto r = m_collator->compare(a.GetContext(), b.GetContext()); if ( r != 0 ) return r < 0; } } switch ( m_order.by ) { case SortOrder::By_FileOrder: { return i < j; } case SortOrder::By_Source: case SortOrder::By_Translation: { auto r = m_collator->compare(m_sortKeys[i], m_sortKeys[j]); if ( r != 0 ) return r < 0; break; } } // As last resort, sort by position in file. Note that this means that // no two items are considered equal w.r.t. sort order; this ensures stable // ordering. return i < j; } poedit-3.6.3/src/subprocess.cpp0000644000175100001660000001453315011674230012161 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2025 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 "subprocess.h" #include "errors.h" #include #include #include #include #include #include #include #include namespace { class Process : public wxProcess { public: Process() : m_timer(this) { } void watch_pipes() { Bind(wxEVT_TIMER, &Process::on_timer, this); m_timer.Start(100/*ms*/); } subprocess::Output make_output(int status) { read_available_output(); return {status, m_stdout.str(), m_stderr.str()}; } protected: void read_available_output(std::ostringstream& oss, wxInputStream *s) { if (!s || !s->CanRead()) return; char buffer[4096]; while (true) { if (!s->CanRead()) break; s->Read(buffer, sizeof(buffer)); size_t bytesRead = s->LastRead(); if (!bytesRead) break; // EOF or temporarily no more data oss.write(buffer, bytesRead); } } void read_available_output() { read_available_output(m_stdout, GetInputStream()); read_available_output(m_stderr, GetErrorStream()); } void on_timer(wxTimerEvent&) { read_available_output(); } wxTimer m_timer; std::ostringstream m_stdout, m_stderr; }; class PromiseNotifyingProcess : public Process { public: PromiseNotifyingProcess() = default; auto& get_promise() { return m_promise; } auto get_future() { return m_promise.get_future(); } protected: void OnTerminate([[maybe_unused]]int pid, int status) override { if (status != 0) wxLogTrace("poedit.execute", " execution failed with exit code %d", status); m_promise.set_value(make_output(status)); delete this; } dispatch::promise m_promise; }; } // anonymous namespace namespace subprocess { wxString try_find_program(const wxString& program, const wxString& primary_path) { wxFileName fn(program); if (fn.IsAbsolute()) return program; fn.SetPath(primary_path); fn.SetName(program); #ifdef __WXMSW__ fn.SetExt("exe"); #endif if (fn.IsFileExecutable()) return fn.GetFullPath(); return program; } std::vector Output::extract_lines(const std::string& output) { std::vector lines; wxMemoryInputStream s(output.data(), output.size()); wxTextInputStream tis(s); while (true) { auto line = tis.ReadLine(); if (!line.empty()) lines.push_back(line); if (s.Eof()) break; if (!s) break; } return lines; } Arguments::Arguments(const wxString& cmdline) : Arguments(wxCmdLineParser::ConvertStringToArgs(cmdline, wxCMD_LINE_SPLIT_UNIX)) { } wxString Arguments::pretty_print() const { return "[" + boost::join(m_args, ", ") + "]"; } wxExecuteEnv& Runner::wxenv() { if (!m_env) { m_env = std::make_shared(); wxGetEnvMap(&m_env->env); } return *m_env; } void Runner::preprocess_args(Arguments& args) const { if (m_primaryPath.empty()) return; auto program = args.args()[0]; args.replace(0, try_find_program(program, m_primaryPath)); } #if wxUSE_GUI dispatch::future Runner::do_run_async(Arguments&& argv) { preprocess_args(argv); auto env = m_env; auto process = new PromiseNotifyingProcess(); auto future = process->get_future(); dispatch::on_main([env, process, argv=std::move(argv)]() { try { process->Redirect(); wxLogTrace("poedit.execute", "executing process (async): %s", argv.pretty_print()); auto retval = wxExecute(argv, wxEXEC_ASYNC, process, env.get()); if (retval == 0) { wxLogTrace("poedit.execute", " failed to launch child process(%d): %s", (int)retval, argv.pretty_print()); BOOST_THROW_EXCEPTION(Exception(wxString::Format(_("Cannot execute program: %s"), argv.pretty_print()))); } process->watch_pipes(); } catch (...) { dispatch::set_current_exception(process->get_promise()); } }); return future; } #endif Output Runner::do_run_sync(Arguments&& argv) { #if wxUSE_GUI if (!wxThread::IsMain()) return do_run_async(std::move(argv)).get(); #endif preprocess_args(argv); Process process; process.Redirect(); wxLogTrace("poedit.execute", "executing process (sync): %s", argv.pretty_print()); auto retval = wxExecute(argv, wxEXEC_BLOCK | wxEXEC_NODISABLE | wxEXEC_NOEVENTS, &process, m_env.get()); if (retval == -1) { wxLogTrace("poedit.execute", " failed to launch child process(%d): %s", (int)retval, argv.pretty_print()); BOOST_THROW_EXCEPTION(Exception(wxString::Format(_("Cannot execute program: %s"), argv.pretty_print()))); } else if (retval != 0) { wxLogTrace("poedit.execute", " execution failed with exit code %d", (int)retval); } return process.make_output((int)retval); } } // namespace subprocess poedit-3.6.3/src/concurrency.cpp0000644000175100001660000001203415011674230012315 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2010-2025 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 // All this is for rethrow_for_boost: #if defined(HAVE_HTTP_CLIENT) #include "http_client.h" #ifndef __WXOSX__ #include #endif #endif using namespace dispatch; exception_ptr dispatch::current_exception() { // All this mess is necessary to convert std::exception_ptr to boost::exception_ptr // somewhat reasonably to correctly propagate exceptions through futures. // Unfortunately, boost::future has no support for std::exception_ptr and insists // on using boost::exception_ptr which requires manual support. // // See http://stackoverflow.com/questions/22010388/converting-stdexception-ptr-to-boostexception-ptr // for more in-depth examples of what this code does. #define CATCH_AND_WRAP(type) \ catch (type& e) \ { \ try \ { \ throw boost::enable_current_exception(e); \ } \ catch (...) \ { \ return boost::current_exception(); \ } \ } try { throw; } catch (boost::exception&) { return boost::current_exception(); } #if defined(HAVE_HTTP_CLIENT) CATCH_AND_WRAP(http_response_error) #ifndef __WXOSX__ CATCH_AND_WRAP(web::http::http_exception) #endif #endif CATCH_AND_WRAP(Exception) CATCH_AND_WRAP(cancellation_exception) CATCH_AND_WRAP(std::runtime_error) CATCH_AND_WRAP(std::logic_error) CATCH_AND_WRAP(std::exception) catch (...) { return boost::current_exception(); } } #if defined(HAVE_DISPATCH) #include void detail::dispatch_async_cxx(boost::executors::work&& f) { dispatch_queue_t dq = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(dq, [f{std::move(f)}]() mutable { try { f(); } 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()); } }); } #endif // HAVE_DISPATCH namespace { std::unique_ptr gs_background_executor; std::unique_ptr gs_main_thread_executor; static std::once_flag gs_background_executor_flag, gs_main_thread_executor_flag; } dispatch::detail::background_queue_executor& dispatch::detail::background_queue_executor::get() { std::call_once(gs_background_executor_flag, []{ gs_background_executor.reset(new background_queue_executor); }); return *gs_background_executor; } dispatch::detail::main_thread_executor& dispatch::detail::main_thread_executor::get() { std::call_once(gs_main_thread_executor_flag, []{ gs_main_thread_executor.reset(new main_thread_executor); }); return *gs_main_thread_executor; } void dispatch::cleanup() { if (gs_background_executor) gs_background_executor->close(); if (gs_main_thread_executor) gs_main_thread_executor->close(); // Don't destroy executor objects, because some still-in-fly tasks may be // referencing them. // Ideally, we would like to shut down worker queues, but that's easier said than done // (except boost's basic_thread_pool). } poedit-3.6.3/src/uilang.cpp0000644000175100001660000001757715011674230011263 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2003-2025 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 "uilang.h" #include "language.h" #include "str_helpers.h" #include #include #include namespace { // Return whether uloc_acceptLanguage() is working correctly inline bool icu_has_correct_accept_language() { // ICU 67.1 reimplemented uloc_acceptLanguage() to use the same algorithm as LocaleMatcher: // https://unicode-org.atlassian.net/browse/ICU-20700 // Without this, it couldn't be reliably used to determine the best language from OS-provided // list of locales that might be too specific (e.g. cs-CZ). Unfortunately, Windows 10 shipped // with ICU 64.2, so we need to handle older versions at least somehow too. UVersionInfo version; u_getVersion(version); auto major = version[0]; auto minor = version[1]; return major > 67 || (major == 67 && minor >= 1); } template inline void to_vectors(T&& list, std::vector& strings, std::vector& cstrings) { strings.reserve(list.size()); cstrings.reserve(list.size()); for (const auto& s: list) { strings.push_back(str::to_utf8(s)); cstrings.push_back(strings.back().c_str()); } } // converts to POSIX-like locale, is idempotent inline wxString as_posix(const wxString& tag) { wxString s(tag); s.Replace("-", "_"); s.Replace("zh_Hans", "zh_CN"); s.Replace("zh_Hant", "zh_TW"); s.Replace("_Latn", "@latin"); return s; } // converts to language tag, is idempotent inline wxString as_tag(const wxString& posix) { wxString s(posix); s.Replace("_", "-"); s.Replace("zh-CN", "zh-Hans"); s.Replace("zh-TW", "zh-Hant"); s.Replace("@latin", "-Latn"); return s; } auto get_preferred_languages() { auto langs = wxUILocale::GetPreferredUILanguages(); if (!icu_has_correct_accept_language()) { // Windows 10's ICU won't accept "cs" translation if "cs-CZ" is in preferred list, so // patch up the list by adding "base" languages to the end of the list too, much like // wx-3.2's implementation does. auto size = langs.size(); for (size_t i = 0; i < size; ++i) { // Normalize the code in-place. // Note that `lang` reference is invalidated in the loop below. auto& lang = langs[i]; lang = as_tag(lang); auto pos = lang.rfind('-'); if (pos != wxString::npos) { auto lang2(lang); while (true) { lang2 = lang2.substr(0, pos); langs.push_back(lang2); if (lang2 == "sr-Cyrl") langs.push_back("sr"); if ((pos = lang2.rfind('-')) == wxString::npos) break; } } } } return langs; } } // anonymous namespace /** Customized loader for translations. The primary purpose of this class is to overcome wx bugs or shortcomings: - https://github.com/wxWidgets/wxWidgets/pull/24297 - https://github.com/wxWidgets/wxWidgets/pull/24804 Note that this relies on specific knowledge of Poedit's shipping data, it is _not_ a universal replacement! */ Language PoeditTranslationsLoader::DetermineBestUILanguage() const { std::vector available, preferred; std::vector cavailable, cpreferred; to_vectors(GetAvailableTranslations("poedit"), available, cavailable); to_vectors(get_preferred_languages(), preferred, cpreferred); char best[ULOC_FULLNAME_CAPACITY]; UAcceptResult result; UErrorCode status = U_ZERO_ERROR; UEnumeration *enumLangs = uenum_openCharStringsEnumeration(cavailable.data(), (int32_t)cavailable.size(), &status); if (U_FAILURE(status)) return Language::English(); status = U_ZERO_ERROR; uloc_acceptLanguage(best, std::size(best), &result, cpreferred.data(), (int32_t)cpreferred.size(), enumLangs, &status); uenum_close(enumLangs); if (U_FAILURE(status) || result == ULOC_ACCEPT_FAILED) return Language::English(); char tag[ULOC_FULLNAME_CAPACITY]; status = U_ZERO_ERROR; uloc_toLanguageTag(best, tag, std::size(tag), false, &status); if (U_FAILURE(status)) return Language::English(); return Language::FromLanguageTag(tag); } wxArrayString PoeditTranslationsLoader::GetAvailableTranslations(const wxString& domain) const { auto all = wxFileTranslationsLoader::GetAvailableTranslations(domain); for (auto& lang: all) lang = as_tag(lang); all.push_back("en"); return all; } wxMsgCatalog *PoeditTranslationsLoader::LoadCatalog(const wxString& domain, const wxString& lang_) { #ifdef __WXOSX__ auto lang = (domain == "poedit-ota") ? as_posix(lang_) : as_tag(lang_); #else auto lang = as_posix(lang_); #endif return wxFileTranslationsLoader::LoadCatalog(domain, lang); } #if NEED_CHOOSELANG_UI static void SaveUILanguage(const wxString& lang) { if (lang.empty()) wxConfig::Get()->Write("ui_language", "default"); else wxConfig::Get()->Write("ui_language", as_tag(lang)); } Language GetUILanguage() { std::string lng = str::to_utf8(as_tag(wxConfig::Get()->Read("ui_language"))); if (lng.empty() || lng == "default") return Language(); auto lang = Language::FromLanguageTag(lng); if (!lang) lang = Language::TryParse(lng); // backward compatibility auto all = wxTranslations::Get()->GetAvailableTranslations("poedit"); if (all.Index(lang.LanguageTag(), false) == wxNOT_FOUND) return Language(); return lang; } static bool ChooseLanguage(wxString *value) { wxArrayString langs; wxArrayString arr; { wxBusyCursor bcur; langs = wxTranslations::Get()->GetAvailableTranslations("poedit"); langs.Sort(); arr.push_back(_("(Use default language)")); for (auto i : langs) { auto lang = Language::TryParse(i.ToStdWstring()); arr.push_back(lang.DisplayNameInItself() + L" — " + lang.DisplayName()); } } auto current = GetUILanguage(); int choice = current ? 0 : langs.Index(current.LanguageTag()) + 1; choice = wxGetSingleChoiceIndex(_("Select your preferred language"), _("Language selection"), arr, choice); if ( choice == -1 ) return false; if ( choice == 0 ) *value = ""; else *value = langs[choice-1]; return true; } void ChangeUILanguage() { wxString lang; if ( !ChooseLanguage(&lang) ) return; SaveUILanguage(lang); wxMessageBox(_("You must restart Poedit for this change to take effect."), "Poedit", wxOK | wxCENTRE | wxICON_INFORMATION); } #endif // NEED_CHOOSELANG_UI poedit-3.6.3/src/localazy_gui.cpp0000644000175100001660000003060615011674230012452 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2025 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 "localazy_gui.h" #include "localazy_client.h" #include "catalog.h" #include "cloud_sync.h" #include "colorscheme.h" #include "concurrency.h" #include "configuration.h" #include "customcontrols.h" #include "errors.h" #include "hidpi.h" #include "http_client.h" #include "languagectrl.h" #include "str_helpers.h" #include "utility.h" #include "catalog_xliff.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include LocalazyLoginPanel::LocalazyLoginPanel(wxWindow *parent, int flags) : AccountDetailPanel(parent, flags), m_state(State::Uninitialized), m_activity(nullptr) { wxBoxSizer *topsizer = new wxBoxSizer(wxVERTICAL); SetSizer(topsizer); wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); sizer->SetMinSize(PX(350), PX(320)); topsizer->Add(sizer, wxSizerFlags(1).Expand().Border(wxALL, (flags & SlimBorders) ? PX(0) : PX(16))); auto logo = new StaticBitmap(this, GetServiceLogo()); logo->SetCursor(wxCURSOR_HAND); logo->Bind(wxEVT_LEFT_UP, [this](wxMouseEvent&){ wxLaunchDefaultBrowser(GetServiceLearnMoreURL()); }); sizer->Add(logo, wxSizerFlags().PXDoubleBorder(wxBOTTOM)); auto explain = new ExplanationLabel(this, GetServiceDescription()); 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().Expand()); loginInfoContainer->AddStretchSpacer(); sizer->Add(loginInfoContainer, wxSizerFlags().Expand().ReserveSpaceEvenIfHidden().Border(wxTOP|wxBOTTOM, PX(16))); m_projects = new wxDataViewListCtrl(this, wxID_ANY, wxDefaultPosition, wxSize(-1, PX(100)), /*wxDV_NO_HEADER |*/ MSW_OR_OTHER(wxBORDER_SIMPLE, wxBORDER_SUNKEN)); #ifdef __WXOSX__ [((NSTableView*)[((NSScrollView*)m_projects->GetHandle()) documentView]) setIntercellSpacing:NSMakeSize(0.0, 0.0)]; if (@available(macOS 11.0, *)) ((NSTableView*)[((NSScrollView*)m_projects->GetHandle()) documentView]).style = NSTableViewStyleFullWidth; #endif sizer->Add(m_projects, wxSizerFlags(1).Expand().Border(wxBOTTOM, PX(16))); m_projects->AppendIconTextColumn(_("Projects")); m_signIn = new wxButton(this, wxID_ANY, MSW_OR_OTHER(_("Sign in"), _("Sign In"))); m_signIn->Bind(wxEVT_BUTTON, &LocalazyLoginPanel::OnSignIn, this); m_signOut= new wxButton(this, wxID_ANY, MSW_OR_OTHER(_("Sign out"), _("Sign Out"))); m_signOut->Bind(wxEVT_BUTTON, &LocalazyLoginPanel::OnSignOut, this); #ifdef __WXMSW__ m_signIn->SetBackgroundColour(GetBackgroundColour()); m_signOut->SetBackgroundColour(GetBackgroundColour()); #endif // TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" auto learnMore = new LearnMoreLink(this, GetServiceLearnMoreURL(), wxString::Format(_("Learn more about %s"), "Localazy")); auto buttons = new wxBoxSizer(wxHORIZONTAL); sizer->Add(buttons, wxSizerFlags().Expand().Border(wxBOTTOM, 1)); buttons->Add(learnMore, wxSizerFlags().Center()); buttons->AddSpacer(PX(60)); buttons->AddStretchSpacer(); buttons->Add(m_signIn, wxSizerFlags()); buttons->Add(m_signOut, wxSizerFlags()); if (flags & AddCancelButton) { auto cancel = new wxButton(this, wxID_CANCEL); #ifdef __WXMSW__ buttons->Add(cancel, wxSizerFlags().Border(wxLEFT, PX(3))); #else buttons->Insert(3, cancel, wxSizerFlags().Border(wxRIGHT, PX(6))); #endif m_signIn->SetDefault(); m_signIn->SetFocus(); } ChangeState(State::Uninitialized); } wxString LocalazyLoginPanel::GetServiceDescription() const { return _("Localazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily."); } wxString LocalazyLoginPanel::GetServiceLearnMoreURL() const { return LocalazyClient::AttributeLink("/"); } void LocalazyLoginPanel::InitializeAfterShown() { if (m_state != State::Uninitialized) return; if (IsSignedIn()) UpdateUserInfo(); else ChangeState(State::SignedOut); } bool LocalazyLoginPanel::IsSignedIn() const { return LocalazyClient::Get().IsSignedIn(); } void LocalazyLoginPanel::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); switch (state) { case State::SignedIn: case State::SignedOut: if (NotifyContentChanged) NotifyContentChanged(); break; case State::Authenticating: case State::UpdatingInfo: case State::Uninitialized: // not relevant for UI changes break; } } void LocalazyLoginPanel::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…"); m_activity = new ActivityIndicator(this, ActivityIndicator::Centered); sizer->AddStretchSpacer(); sizer->Add(m_activity, wxSizerFlags().Expand()); sizer->AddStretchSpacer(); m_activity->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 profile = new AvatarIcon(this, wxSize(PX(48), PX(48))); auto name = new wxStaticText(this, wxID_ANY, m_userName); auto username = new SecondaryLabel(this, m_userLogin); sizer->Add(profile, wxSizerFlags().Center()); sizer->AddSpacer(PX(6)); auto box = new wxBoxSizer(wxVERTICAL); box->Add(name, wxSizerFlags().Left()); box->Add(username, wxSizerFlags().Left()); sizer->Add(box, wxSizerFlags().Center()); sizer->AddStretchSpacer(); auto addPrj = new wxButton(this, wxID_ANY, MSW_OR_OTHER(_("Add project"), _("Add Project"))); #ifdef __WXOSX__ addPrj->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif #ifdef __WXMSW__ addPrj->SetBackgroundColour(GetBackgroundColour()); #endif addPrj->Bind(wxEVT_BUTTON, &LocalazyLoginPanel::OnAddProject, this); sizer->Add(addPrj, wxSizerFlags().Center().Border(wxALL, PX(6))); profile->SetUserName(m_userName); if (!m_userAvatar.empty()) { http_client::download_from_anywhere(m_userAvatar) .then_on_window(profile, [=](downloaded_file f) { profile->LoadIcon(f.filename()); }); } break; } } Layout(); } void LocalazyLoginPanel::UpdateUserInfo() { ChangeState(State::UpdatingInfo); LocalazyClient::Get().GetUserInfo() .then_on_window(this, [=](LocalazyClient::UserInfo u) { m_userName = u.name; m_userLogin = u.login; m_userAvatar = u.avatarUrl; ChangeState(State::SignedIn); }) .catch_all(m_activity->HandleError); LocalazyClient::Get().GetUserProjects() .then_on_window(m_projects, [=](std::vector projects){ m_projects->DeleteAllItems(); #ifdef __WXOSX__ auto dummyIcon = wxArtProvider::GetIcon("AccountLocalazy"); #else auto dummyIcon = wxArtProvider::GetIcon("AccountLocalazy", wxART_OTHER, wxSize(PX(16), PX(16))); dummyIcon.SetScaleFactor(HiDPIScalingFactor()); #endif unsigned idx = 0; for (auto p : projects) { wxVariant data(wxDataViewIconText(p.name, dummyIcon)); wxVector datavec; datavec.push_back(data); m_projects->AppendItem(datavec); if (!p.avatarUrl.empty()) { http_client::download_from_anywhere(p.avatarUrl) .then_on_window(m_projects, [=](downloaded_file f) { wxBitmap bitmap; #ifdef __WXOSX__ NSString *path = str::to_NS(f.filename().GetFullPath()); NSImage *img = [[NSImage alloc] initWithContentsOfFile:path]; if (img != nil) bitmap = wxBitmap(img); #else wxLogNull null; wxImage img(f.filename().GetFullPath()); if (img.IsOk()) { img.Rescale(PX(16), PX(16)); bitmap = wxBitmap(img); bitmap.SetScaleFactor(HiDPIScalingFactor()); } #endif if (bitmap.IsOk()) { wxVariant value; m_projects->GetValue(value, idx, 0); wxDataViewIconText iconText; iconText << value; wxIcon icon; icon.CopyFromBitmap(bitmap); iconText.SetIcon(icon); value << iconText; m_projects->SetValue(value, idx, 0); } }); } idx++; } }) .catch_all(m_activity->HandleError); } void LocalazyLoginPanel::SignIn() { ChangeState(State::Authenticating); LocalazyClient::Get().Authenticate() .then_on_window(this, &LocalazyLoginPanel::OnUserSignedIn); if (NotifyShouldBeRaised) NotifyShouldBeRaised(); } void LocalazyLoginPanel::OnSignIn(wxCommandEvent&) { SignIn(); } void LocalazyLoginPanel::OnAddProject(wxCommandEvent&) { // don't change UI state unlike with OnSignIn() -- FIXME: do indicate waiting in some way LocalazyClient::Get().Authenticate() .then_on_window(this, &LocalazyLoginPanel::OnUserSignedIn); } void LocalazyLoginPanel::OnUserSignedIn() { UpdateUserInfo(); Raise(); if (NotifyShouldBeRaised) NotifyShouldBeRaised(); } void LocalazyLoginPanel::OnSignOut(wxCommandEvent&) { LocalazyClient::Get().SignOut(); m_projects->DeleteAllItems(); ChangeState(State::SignedOut); } poedit-3.6.3/src/language_impl_plurals.h0000644000175100001660000003121015011674230013773 // Code generated with scripts/extract-plural-forms.py begins here { "af" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ak" , { "nplurals=2; plural=(n > 1);", 2 } }, { "am" , { "nplurals=2; plural=(n==0 || n==1);", 2 } }, { "ar" , { "nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);", 6 } }, { "ars" , { "nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);", 6 } }, { "as" , { "nplurals=2; plural=(n==0 || n==1);", 2 } }, { "asa" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ast" , { "nplurals=2; plural=(n != 1);", 2 } }, { "az" , { "nplurals=2; plural=(n != 1);", 2 } }, { "be" , { "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);", 3 } }, { "bem" , { "nplurals=2; plural=(n != 1);", 2 } }, { "bez" , { "nplurals=2; plural=(n != 1);", 2 } }, { "bg" , { "nplurals=2; plural=(n != 1);", 2 } }, { "bh" , { "nplurals=2; plural=(n > 1);", 2 } }, { "bm" , { "nplurals=1; plural=0;", 1 } }, { "bn" , { "nplurals=2; plural=(n==0 || n==1);", 2 } }, { "bo" , { "nplurals=1; plural=0;", 1 } }, { "br" , { "nplurals=5; plural=(n%10==1 && n%100!=11 && n%100!=71 && n%100!=91 ? 0 : n%10==2 && n%100!=12 && n%100!=72 && n%100!=92 ? 1 : ((n%10>=3 && n%10<=4) || n%10==9) && (n%100<10 || n%100>19) && (n%100<70 || n%100>79) && (n%100<90 || n%100>99) ? 2 : n!=0 && n%1000000==0 ? 3 : 4);", 5 } }, { "brx" , { "nplurals=2; plural=(n != 1);", 2 } }, { "bs" , { "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);", 3 } }, { "ca" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ce" , { "nplurals=2; plural=(n != 1);", 2 } }, { "cgg" , { "nplurals=2; plural=(n != 1);", 2 } }, { "chr" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ckb" , { "nplurals=2; plural=(n != 1);", 2 } }, { "cs" , { "nplurals=3; plural=(n==1 ? 0 : n>=2 && n<=4 ? 1 : 2);", 3 } }, { "cy" , { "nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n==3 ? 3 : n==6 ? 4 : 5);", 6 } }, { "da" , { "nplurals=2; plural=(n != 1);", 2 } }, { "de" , { "nplurals=2; plural=(n != 1);", 2 } }, { "dsb" , { "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100>=3 && n%100<=4 ? 2 : 3);", 4 } }, { "dv" , { "nplurals=2; plural=(n != 1);", 2 } }, { "dz" , { "nplurals=1; plural=0;", 1 } }, { "ee" , { "nplurals=2; plural=(n != 1);", 2 } }, { "el" , { "nplurals=2; plural=(n != 1);", 2 } }, { "en" , { "nplurals=2; plural=(n != 1);", 2 } }, { "eo" , { "nplurals=2; plural=(n != 1);", 2 } }, { "es" , { "nplurals=2; plural=(n != 1);", 2 } }, { "et" , { "nplurals=2; plural=(n != 1);", 2 } }, { "eu" , { "nplurals=2; plural=(n != 1);", 2 } }, { "fa" , { "nplurals=2; plural=(n==0 || n==1);", 2 } }, { "ff" , { "nplurals=2; plural=(n > 1);", 2 } }, { "fi" , { "nplurals=2; plural=(n != 1);", 2 } }, { "fil" , { "nplurals=2; plural=(n==1 || n==2 || n==3 || (n%10!=4 && n%10!=6 && n%10!=9));", 2 } }, { "fo" , { "nplurals=2; plural=(n != 1);", 2 } }, { "fr" , { "nplurals=2; plural=(n > 1);", 2 } }, { "fur" , { "nplurals=2; plural=(n != 1);", 2 } }, { "fy" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ga" , { "nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : n>=7 && n<=10 ? 3 : 4);", 5 } }, { "gd" , { "nplurals=4; plural=(n==1 || n==11 ? 0 : n==2 || n==12 ? 1 : (n>=3 && n<=10) || (n>=13 && n<=19) ? 2 : 3);", 4 } }, { "gl" , { "nplurals=2; plural=(n != 1);", 2 } }, { "gsw" , { "nplurals=2; plural=(n != 1);", 2 } }, { "gu" , { "nplurals=2; plural=(n==0 || n==1);", 2 } }, { "guw" , { "nplurals=2; plural=(n > 1);", 2 } }, { "gv" , { "nplurals=4; plural=(n%10==1 ? 0 : n%10==2 ? 1 : n%100==0 || n%100==20 || n%100==40 || n%100==60 || n%100==80 ? 2 : 3);", 4 } }, { "ha" , { "nplurals=2; plural=(n != 1);", 2 } }, { "haw" , { "nplurals=2; plural=(n != 1);", 2 } }, { "he" , { "nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? 2 : 3);", 4 } }, { "hi" , { "nplurals=2; plural=(n==0 || n==1);", 2 } }, { "hr" , { "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);", 3 } }, { "hsb" , { "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100>=3 && n%100<=4 ? 2 : 3);", 4 } }, { "hu" , { "nplurals=2; plural=(n != 1);", 2 } }, { "hy" , { "nplurals=2; plural=(n > 1);", 2 } }, { "id" , { "nplurals=1; plural=0;", 1 } }, { "ig" , { "nplurals=1; plural=0;", 1 } }, { "ii" , { "nplurals=1; plural=0;", 1 } }, { "in" , { "nplurals=1; plural=0;", 1 } }, { "io" , { "nplurals=2; plural=(n != 1);", 2 } }, { "is" , { "nplurals=2; plural=(n%10==1 && n%100!=11);", 2 } }, { "it" , { "nplurals=2; plural=(n != 1);", 2 } }, { "iu" , { "nplurals=3; plural=(n==1 ? 0 : n==2 ? 1 : 2);", 3 } }, { "iw" , { "nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? 2 : 3);", 4 } }, { "ja" , { "nplurals=1; plural=0;", 1 } }, { "jbo" , { "nplurals=1; plural=0;", 1 } }, { "jgo" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ji" , { "nplurals=2; plural=(n != 1);", 2 } }, { "jmc" , { "nplurals=2; plural=(n != 1);", 2 } }, { "jv" , { "nplurals=1; plural=0;", 1 } }, { "jw" , { "nplurals=1; plural=0;", 1 } }, { "ka" , { "nplurals=2; plural=(n != 1);", 2 } }, { "kab" , { "nplurals=2; plural=(n > 1);", 2 } }, { "kaj" , { "nplurals=2; plural=(n != 1);", 2 } }, { "kcg" , { "nplurals=2; plural=(n != 1);", 2 } }, { "kde" , { "nplurals=1; plural=0;", 1 } }, { "kea" , { "nplurals=1; plural=0;", 1 } }, { "kk" , { "nplurals=2; plural=(n != 1);", 2 } }, { "kkj" , { "nplurals=2; plural=(n != 1);", 2 } }, { "kl" , { "nplurals=2; plural=(n != 1);", 2 } }, { "km" , { "nplurals=1; plural=0;", 1 } }, { "kn" , { "nplurals=2; plural=(n==0 || n==1);", 2 } }, { "ko" , { "nplurals=1; plural=0;", 1 } }, { "ks" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ksb" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ksh" , { "nplurals=3; plural=(n==0 ? 0 : n==1 ? 1 : 2);", 3 } }, { "ku" , { "nplurals=2; plural=(n != 1);", 2 } }, { "kw" , { "nplurals=3; plural=(n==1 ? 0 : n==2 ? 1 : 2);", 3 } }, { "ky" , { "nplurals=2; plural=(n != 1);", 2 } }, { "lag" , { "nplurals=3; plural=(n==0 ? 0 : (n==0 || n==1) && n!=0 ? 1 : 2);", 3 } }, { "lb" , { "nplurals=2; plural=(n != 1);", 2 } }, { "lg" , { "nplurals=2; plural=(n != 1);", 2 } }, { "lkt" , { "nplurals=1; plural=0;", 1 } }, { "ln" , { "nplurals=2; plural=(n > 1);", 2 } }, { "lo" , { "nplurals=1; plural=0;", 1 } }, { "lt" , { "nplurals=3; plural=(n%10==1 && (n%100<11 || n%100>19) ? 0 : n%10>=2 && n%10<=9 && (n%100<11 || n%100>19) ? 1 : 2);", 3 } }, { "lv" , { "nplurals=3; plural=(n%10==0 || (n%100>=11 && n%100<=19) ? 0 : n%10==1 && n%100!=11 ? 1 : 2);", 3 } }, { "mas" , { "nplurals=2; plural=(n != 1);", 2 } }, { "mg" , { "nplurals=2; plural=(n > 1);", 2 } }, { "mgo" , { "nplurals=2; plural=(n != 1);", 2 } }, { "mk" , { "nplurals=2; plural=(n%10==1 && n%100!=11);", 2 } }, { "ml" , { "nplurals=2; plural=(n != 1);", 2 } }, { "mn" , { "nplurals=2; plural=(n != 1);", 2 } }, { "mo" , { "nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n%100<=19) ? 1 : 2);", 3 } }, { "mr" , { "nplurals=2; plural=(n==0 || n==1);", 2 } }, { "ms" , { "nplurals=1; plural=0;", 1 } }, { "mt" , { "nplurals=4; plural=(n==1 ? 0 : n==0 || (n%100>=2 && n%100<=10) ? 1 : n%100>=11 && n%100<=19 ? 2 : 3);", 4 } }, { "my" , { "nplurals=1; plural=0;", 1 } }, { "nah" , { "nplurals=2; plural=(n != 1);", 2 } }, { "naq" , { "nplurals=3; plural=(n==1 ? 0 : n==2 ? 1 : 2);", 3 } }, { "nb" , { "nplurals=2; plural=(n != 1);", 2 } }, { "nd" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ne" , { "nplurals=2; plural=(n != 1);", 2 } }, { "nl" , { "nplurals=2; plural=(n != 1);", 2 } }, { "nn" , { "nplurals=2; plural=(n != 1);", 2 } }, { "nnh" , { "nplurals=2; plural=(n != 1);", 2 } }, { "no" , { "nplurals=2; plural=(n != 1);", 2 } }, { "nqo" , { "nplurals=1; plural=0;", 1 } }, { "nr" , { "nplurals=2; plural=(n != 1);", 2 } }, { "nso" , { "nplurals=2; plural=(n > 1);", 2 } }, { "ny" , { "nplurals=2; plural=(n != 1);", 2 } }, { "nyn" , { "nplurals=2; plural=(n != 1);", 2 } }, { "om" , { "nplurals=2; plural=(n != 1);", 2 } }, { "or" , { "nplurals=2; plural=(n != 1);", 2 } }, { "os" , { "nplurals=2; plural=(n != 1);", 2 } }, { "pa" , { "nplurals=2; plural=(n > 1);", 2 } }, { "pap" , { "nplurals=2; plural=(n != 1);", 2 } }, { "pl" , { "nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);", 3 } }, { "prg" , { "nplurals=3; plural=(n%10==0 || (n%100>=11 && n%100<=19) ? 0 : n%10==1 && n%100!=11 ? 1 : 2);", 3 } }, { "ps" , { "nplurals=2; plural=(n != 1);", 2 } }, { "pt" , { "nplurals=2; plural=(n > 1);", 2 } }, { "pt_PT", { "nplurals=2; plural=(n != 1);", 2 } }, { "rm" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ro" , { "nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n%100<=19) ? 1 : 2);", 3 } }, { "rof" , { "nplurals=2; plural=(n != 1);", 2 } }, { "root" , { "nplurals=1; plural=0;", 1 } }, { "ru" , { "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);", 3 } }, { "rwk" , { "nplurals=2; plural=(n != 1);", 2 } }, { "sah" , { "nplurals=1; plural=0;", 1 } }, { "saq" , { "nplurals=2; plural=(n != 1);", 2 } }, { "scn" , { "nplurals=2; plural=(n != 1);", 2 } }, { "sd" , { "nplurals=2; plural=(n != 1);", 2 } }, { "sdh" , { "nplurals=2; plural=(n != 1);", 2 } }, { "se" , { "nplurals=3; plural=(n==1 ? 0 : n==2 ? 1 : 2);", 3 } }, { "seh" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ses" , { "nplurals=1; plural=0;", 1 } }, { "sg" , { "nplurals=1; plural=0;", 1 } }, { "sh" , { "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);", 3 } }, { "shi" , { "nplurals=3; plural=(n==0 || n==1 ? 0 : n>=2 && n<=10 ? 1 : 2);", 3 } }, { "si" , { "nplurals=2; plural=(n > 1);", 2 } }, { "sk" , { "nplurals=3; plural=(n==1 ? 0 : n>=2 && n<=4 ? 1 : 2);", 3 } }, { "sl" , { "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100>=3 && n%100<=4 ? 2 : 3);", 4 } }, { "sma" , { "nplurals=3; plural=(n==1 ? 0 : n==2 ? 1 : 2);", 3 } }, { "smi" , { "nplurals=3; plural=(n==1 ? 0 : n==2 ? 1 : 2);", 3 } }, { "smj" , { "nplurals=3; plural=(n==1 ? 0 : n==2 ? 1 : 2);", 3 } }, { "smn" , { "nplurals=3; plural=(n==1 ? 0 : n==2 ? 1 : 2);", 3 } }, { "sms" , { "nplurals=3; plural=(n==1 ? 0 : n==2 ? 1 : 2);", 3 } }, { "sn" , { "nplurals=2; plural=(n != 1);", 2 } }, { "so" , { "nplurals=2; plural=(n != 1);", 2 } }, { "sq" , { "nplurals=2; plural=(n != 1);", 2 } }, { "sr" , { "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);", 3 } }, { "ss" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ssy" , { "nplurals=2; plural=(n != 1);", 2 } }, { "st" , { "nplurals=2; plural=(n != 1);", 2 } }, { "sv" , { "nplurals=2; plural=(n != 1);", 2 } }, { "sw" , { "nplurals=2; plural=(n != 1);", 2 } }, { "syr" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ta" , { "nplurals=2; plural=(n != 1);", 2 } }, { "te" , { "nplurals=2; plural=(n != 1);", 2 } }, { "teo" , { "nplurals=2; plural=(n != 1);", 2 } }, { "th" , { "nplurals=1; plural=0;", 1 } }, { "ti" , { "nplurals=2; plural=(n > 1);", 2 } }, { "tig" , { "nplurals=2; plural=(n != 1);", 2 } }, { "tk" , { "nplurals=2; plural=(n != 1);", 2 } }, { "tl" , { "nplurals=2; plural=(n==1 || n==2 || n==3 || (n%10!=4 && n%10!=6 && n%10!=9));", 2 } }, { "tn" , { "nplurals=2; plural=(n != 1);", 2 } }, { "to" , { "nplurals=1; plural=0;", 1 } }, { "tr" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ts" , { "nplurals=2; plural=(n != 1);", 2 } }, { "tzm" , { "nplurals=2; plural=(n<=1 || (n>=11 && n<=99));", 2 } }, { "ug" , { "nplurals=2; plural=(n != 1);", 2 } }, { "uk" , { "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);", 3 } }, { "ur" , { "nplurals=2; plural=(n != 1);", 2 } }, { "uz" , { "nplurals=2; plural=(n != 1);", 2 } }, { "ve" , { "nplurals=2; plural=(n != 1);", 2 } }, { "vi" , { "nplurals=1; plural=0;", 1 } }, { "vo" , { "nplurals=2; plural=(n != 1);", 2 } }, { "vun" , { "nplurals=2; plural=(n != 1);", 2 } }, { "wa" , { "nplurals=2; plural=(n > 1);", 2 } }, { "wae" , { "nplurals=2; plural=(n != 1);", 2 } }, { "wo" , { "nplurals=1; plural=0;", 1 } }, { "xh" , { "nplurals=2; plural=(n != 1);", 2 } }, { "xog" , { "nplurals=2; plural=(n != 1);", 2 } }, { "yi" , { "nplurals=2; plural=(n != 1);", 2 } }, { "yo" , { "nplurals=1; plural=0;", 1 } }, { "yue" , { "nplurals=1; plural=0;", 1 } }, { "zh" , { "nplurals=1; plural=0;", 1 } }, { "zu" , { "nplurals=2; plural=(n==0 || n==1);", 2 } }, // Code generated with scripts/extract-plural-forms.py ends here poedit-3.6.3/src/json.h0000644000175100001660000000504015011674230010400 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2025 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_json_h #define Poedit_json_h #include "str_helpers.h" #include #define JSON_USE_IMPLICIT_CONVERSIONS 0 #define JSON_THROW_USER(exception) boost::throw_exception(exception) #ifdef HAVE_NLOHMANN_JSON_HPP #include #else #include "../deps/json/single_include/nlohmann/json.hpp" #endif using json = nlohmann::json; using ordered_json = nlohmann::ordered_json; // Implement conversion to and from std::wstring: namespace nlohmann { template<> struct adl_serializer { static void to_json(json& j, const std::wstring& s) { j = str::to_utf8(s); } static void from_json(const json& j, std::wstring& s) { s = str::to_wstring(j.get()); } }; } // namespace nlohmann /** Helper to get value from JSON key falling back to @a default. This differs from json::value() in that it yields the default even if the response contains that key, but has it set to null. */ template inline T get_value(const json& j, const char *key, const T& defaultValue) { auto i = j.find(key); if (i == j.end() || i->is_null()) return defaultValue; return i->get(); } inline std::string get_value(const json& j, const char *key, const char *defaultValue) { return get_value(j, key, defaultValue); } #endif // Poedit_json_h poedit-3.6.3/src/unicode_helpers.h0000644000175100001660000002217415011674230012606 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2025 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_unicode_helpers_h #define Poedit_unicode_helpers_h #include "language.h" #include "str_helpers.h" #include #include #include #ifdef __WXMSW__ #define BIDI_NEEDS_DIRECTION_ON_EACH_LINE #define BIDI_PLATFORM_DOESNT_DETECT_DIRECTION #endif namespace unicode { /// Collator class - language-aware sorting class Collator { public: enum mode { case_sensitive, case_insensitive }; typedef UCollationResult result_type; /// Ctor for sorting using rules for given language. /// If the language is not provide, uses current UI language. Collator(const Language& language, mode m = case_sensitive); Collator(mode m = case_sensitive) : Collator(Language(), m) {} ~Collator(); Collator(const Collator&) = delete; Collator& operator=(const Collator&) = delete; result_type compare(const wxString& a, const wxString& b) const { #if wxUSE_UNICODE_UTF8 UErrorCode err = U_ZERO_ERROR; return ucol_strcollUTF8(m_coll, a.wx_str(), -1, b.wx_str(), -1, &err); #else return ucol_strcoll(m_coll, str::to_icu(a), -1, str::to_icu(b), -1); #endif }; result_type compare(const std::string& a, const std::string& b) const { UErrorCode err = U_ZERO_ERROR; return ucol_strcollUTF8(m_coll, a.c_str(), (int32_t)a.length(), b.c_str(), (int32_t)b.length(), &err); } result_type compare(const std::wstring& a, const std::wstring& b) const { return ucol_strcoll(m_coll, str::to_icu(a), -1, str::to_icu(b), -1); } result_type compare(const UChar *a, const UChar *b) const { return ucol_strcoll(m_coll, a, -1, b, -1); } template bool operator()(const T& a, const T& b) const { return compare(a, b) == UCOL_LESS; } private: UCollator *m_coll = nullptr; }; /// Low-level thin wrapper around UBreakIterator class BreakIterator { public: BreakIterator(UBreakIteratorType type, const Language& lang); ~BreakIterator() { if (m_bi) ubrk_close(m_bi); } /** Set the text to process. The lifetime of the text buffer must be longer than the lifetime of BreakIterator! */ void set_text(const UChar *text) { UErrorCode err = U_ZERO_ERROR; ubrk_setText(m_bi, text, -1, &err); } /// Sets iterator to the beginning int32_t begin() { return ubrk_first(m_bi); } constexpr int32_t end() const { return UBRK_DONE; } /// Advances the iterator, returns character index of the next text boundary, or UBRK_DONE if all text boundaries have been returned. int32_t next() { return ubrk_next(m_bi); } int32_t previous() { return ubrk_previous(m_bi); } /// Return current rule status int32_t rule() const { return ubrk_getRuleStatus(m_bi); } private: UBreakIterator *m_bi = nullptr; }; /// Helper for writing data from ICU C API to string types, optimized to avoid copying in case of UTF-16 wchar_t template struct UCharWriteBuffer { UCharWriteBuffer(int32_t length) : m_data(str::UCharBuffer::owned(length)) {} UChar *data() { return m_data.data(); } int32_t capacity() { return m_data.capacity(); } auto output() { return str::to(m_data); } private: str::UCharBuffer m_data; }; namespace detail { template struct UCharWriteBufferIntoString { UCharWriteBufferIntoString(int32_t length) : m_data(length, L'\0') {} UChar *data() { return reinterpret_cast(m_data.data()); } int32_t capacity() { return (int32_t)m_data.length() + 1; } T output() { return std::move(m_data); } private: T m_data; }; } // namespace detail template<> struct UCharWriteBuffer : public detail::UCharWriteBufferIntoString { using detail::UCharWriteBufferIntoString::UCharWriteBufferIntoString; }; #if SIZEOF_WCHAR_T == 2 template<> struct UCharWriteBuffer : public detail::UCharWriteBufferIntoString { using detail::UCharWriteBufferIntoString::UCharWriteBufferIntoString; }; #endif /// Like fold_case(), but limited to buffers inline bool fold_case(const UChar *input, UChar *output, int32_t capacity) { UErrorCode err = U_ZERO_ERROR; u_strFoldCase(output, capacity, input, -1, U_FOLD_CASE_DEFAULT, &err); return U_SUCCESS(err); } /// Folds case Unicode-correctly, converting to a different output type template inline auto fold_case_to_type(const TIn& str) { UErrorCode err = U_ZERO_ERROR; auto input = str::to_icu(str); int32_t length = u_strFoldCase(nullptr, 0, input, -1, U_FOLD_CASE_DEFAULT, &err); UCharWriteBuffer folded(length); fold_case(input, folded.data(), folded.capacity()); return folded.output(); }; /// Folds case Unicode-correctly template inline auto fold_case(const T& str) { return fold_case_to_type(str); } /// Upper-casing Unicode-correctly template inline auto to_upper(const T& str) { UErrorCode err = U_ZERO_ERROR; auto input = str::to_icu(str); int32_t length = u_strToUpper(nullptr, 0, input, -1, nullptr, &err); err = U_ZERO_ERROR; UCharWriteBuffer transformed(length); u_strToUpper(transformed.data(), transformed.capacity(), input, -1, nullptr, &err); return transformed.output(); }; } // namespace unicode namespace bidi { /// Bidi control characters static const wchar_t LRE = L'\u202a'; // LEFT-TO-RIGHT EMBEDDING static const wchar_t RLE = L'\u202b'; // RIGHT-TO-LEFT EMBEDDING static const wchar_t PDF = L'\u202c'; // POP DIRECTIONAL FORMATTING static const wchar_t LRO = L'\u202d'; // LEFT-TO-RIGHT OVERRIDE static const wchar_t RLO = L'\u202e'; // RIGHT-TO-LEFT OVERRIDE static const wchar_t LRI = L'\u2066'; // LEFT‑TO‑RIGHT ISOLATE static const wchar_t RLI = L'\u2067'; // RIGHT‑TO‑LEFT ISOLATE static const wchar_t FSI = L'\u2068'; // FIRST STRONG ISOLATE static const wchar_t PDI = L'\u2069'; // POP DIRECTIONAL ISOLATE static const wchar_t LRM = L'\u200e'; // LEFT-TO-RIGHT MARK static const wchar_t RLM = L'\u200f'; // RIGHT-TO-LEFT MARK static const wchar_t ALM = L'\u061c'; // ARABIC LETTER MARK /// Is the character a directional control character? inline bool is_direction_mark(wchar_t c) { return (c >= LRE && c <= RLO) || (c >= LRI && c <= PDI) || (c >= LRM && c <= RLM) || (c == ALM); } /** Determine base direction of the text provided according to the Unicode Bidirectional Algorithm. */ TextDirection get_base_direction(const wxString& text); /** Removes leading directional control characters that don't make sense for text in given language. For example, prefixing RTL text with RLE is redundant; prefixing with LRE is not. This function exists primarily to solve issues with text controls when editing text in language different from the UI's language. */ wxString strip_pointless_control_chars(const wxString& text, TextDirection dir); /** Remove leading directional control characters. For use if the text has known direction or can't have control characters. */ wxString strip_control_chars(const wxString& text); /** Prepend directional mark to text, for display purposes on platforms that don't detect text's directionality on their own or when showing text in different directionality. */ wxString mark_direction(const wxString& text, TextDirection dir); inline wxString mark_direction(const wxString& text, const Language& lang) { return mark_direction(text, lang.Direction()); } inline wxString mark_direction(const wxString& text) { return mark_direction(text, get_base_direction(text)); } #ifdef BIDI_PLATFORM_DOESNT_DETECT_DIRECTION inline wxString platform_mark_direction(const wxString& text) { return mark_direction(text); } #else inline wxString platform_mark_direction(const wxString& text) { return text; } #endif } // namespace bidi #endif // Poedit_unicode_helpers_h poedit-3.6.3/src/filemonitor.h0000644000175100001660000000555015011674230011764 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2021-2025 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_filemonitor_h #define Poedit_filemonitor_h #include "edapp.h" #include #include class FileMonitor { public: FileMonitor(); ~FileMonitor(); void SetFile(wxFileName file); bool WasModifiedOnDisk() const { if (!m_file.IsOk()) return false; if (!m_file.FileExists()) return false; return m_loadTime != m_file.GetModificationTime(); } // if true is returned, _must_ call StopRespondingToEvent() afterwards bool ShouldRespondToFileChange() { if (!m_file.IsOk() || m_isRespondingGuard) return false; if (!WasModifiedOnDisk()) return false; m_isRespondingGuard = true; return true; } // logic for preventing multiple FS events from causing duplicate reloads void StopRespondingToEvent() { wxASSERT( m_isRespondingGuard ); m_isRespondingGuard = false; } struct WritingGuard { WritingGuard(FileMonitor& monitor) : m_monitor(monitor) { m_monitor.m_isRespondingGuard = true; } ~WritingGuard() { m_monitor.StopRespondingToEvent(); } FileMonitor& m_monitor; }; static void EventLoopStarted(); static void CleanUp(); // the following is public only for the needs of filemonitor.cpp implementations: class Impl; static void NotifyFileChanged(const wxString& path); private: void Reset(); private: bool m_isRespondingGuard; wxString m_monitoredPath; wxFileName m_file, m_dir; wxDateTime m_loadTime; std::unique_ptr m_impl; }; #endif // Poedit_filemonitor_h poedit-3.6.3/src/edframe.h0000644000175100001660000003404715011674230011043 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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 _EDFRAME_H_ #define _EDFRAME_H_ #include #include #include #include #include #include class WXDLLIMPEXP_FWD_CORE wxSplitterWindow; class WXDLLIMPEXP_FWD_CORE wxSplitterEvent; #include "catalog.h" #include "catalog_po.h" #include "gexecute.h" #include "edlistctrl.h" #include "edapp.h" #include "filemonitor.h" #ifdef __WXMSW__ #include "windows/win10_menubar.h" typedef WithWindows10Menubar PoeditFrameBase; #else typedef wxFrame PoeditFrameBase; #define FindFocusNoMenu() wxWindow::FindFocus() #endif class PoeditFrame; class AttentionBar; class FindFrame; class MainToolbar; class Sidebar; class EditingArea; /** This class provides main editing frame. It handles user's input and provides frontend to catalog editing engine. Nothing fancy. */ class PoeditFrame : public PoeditFrameBase { public: /** Public constructor functions. Creates and shows frame and opens \a catalog. If \a catalog is already opened in another Poedit frame, then this function won't create new frame but instead return pointer to existing one. \param catalog filename of catalog to open. */ static PoeditFrame *Create(const wxString& catalog, int lineno = 0); /** Public constructor functions. Creates and shows frame without catalog or other content. */ static PoeditFrame *CreateEmpty(); /// Opens given file in this frame. Asks user for permission first /// if there's unsaved document. void OpenFile(const wxString& filename, int lineno = 0); static CatalogPtr PreOpenFileWithErrorsUI(const wxString& filename, wxWindow *parent); // Opens given file in this frame, without asking user void DoOpenFile(CatalogPtr cat, int lineno = 0); // Re-read the file from disk if it changed externally void ReloadFileIfChanged(); /** Returns pointer to existing instance of PoeditFrame that currently exists and edits \a catalog. If no such frame exists, returns NULL. */ static PoeditFrame *Find(const wxString& catalog); /// Return all instances of PoeditFrame static const auto& GetInstances() { return ms_instances; } /// Returns true if at least one one window has unsaved changes static bool AnyWindowIsModified(); /// Returns true if any windows (with documents) are open static bool HasAnyWindow() { return !ms_instances.empty(); } static int GetOpenWindowsCount() { return (int)ms_instances.size(); } ~PoeditFrame(); /// Reads catalog, refreshes controls, takes ownership of catalog. void ReadCatalog(const CatalogPtr& cat); /// Writes catalog. void WriteCatalog(const wxString& catalog); template void WriteCatalog(const wxString& catalog, TFunctor completionHandler); void FixDuplicatesIfPresent(); void WarnAboutLanguageIssues(); void SideloadSourceTextFromFile(const wxFileName& fn); void OfferSideloadingSourceText(); /// Did the user modify the catalog? bool IsModified() const { return m_modified; } void MarkAsModified(); /** Updates catalog and sets m_modified flag. Updates from POT if \a pot_file is not empty and from sources otherwise. */ void UpdateCatalog(const wxString& pot_file = wxEmptyString); void UpdateAfterPreferencesChange(); static void UpdateAllAfterPreferencesChange(); void EditCatalogProperties(); void EditCatalogPropertiesAndUpdateFromSources(); /// Returns currently selected (edited) item CatalogItemPtr GetCurrentItem() const; /// Puts text from catalog & listctrl to textctrls. void UpdateToTextCtrl(int flags); /// Puts text from textctrls to catalog & listctrl. void OnUpdatedFromTextCtrl(CatalogItemPtr item, bool statsChanged); wxString GetFileName() const { return m_catalog ? m_catalog->GetFileName() : wxString(); } wxString GetFileNamePartOfTitle() const { return m_fileNamePartOfTitle; } #ifndef __WXOSX__ // synchronous version of DoIfCanDiscardCurrentDoc for public use: bool AskIfCanDiscardCurrentDoc(); #endif void NewFromScratch(); void NewFromPOT(POCatalogPtr pot, Language language = Language()); protected: // Don't show help in status bar, it's not common to do these days: void DoGiveHelp(const wxString& /*help*/, bool /*show*/) override {} private: /** Ctor. \param catalog filename of catalog to open. If empty, starts w/o opened file. */ PoeditFrame(); /// Current kind of content view enum class Content { Invalid, // no content whatsoever Translation, POT, Empty_PO }; Content m_contentType; /// parent of all content controls etc. wxWindow *m_contentView; wxSizer *m_contentWrappingSizer; /// Ensures creation of specified content view, destroying the /// current content if necessary void EnsureContentView(Content type); void EnsureAppropriateContentView(); wxWindow* CreateContentViewPO(Content type); wxWindow* CreateContentViewEmptyPO(); void DestroyContentView(); void PlaceInitialFocus(int lineno = 0); typedef std::set PoeditFramesList; static PoeditFramesList ms_instances; private: /// Refreshes controls. enum { Refresh_NoCatalogChanged = 1 }; void RefreshControls(int flags = 0); void NotifyCatalogChanged(const CatalogPtr& cat); /// Sets controls custom fonts. void SetCustomFonts(); void SetAccelerators(); // if there's modified catalog, ask user to save it; return true // if it's safe to discard m_catalog and load new data template void DoIfCanDiscardCurrentDoc(const TFunctor1& completionHandler, const TFunctor2& failureHandler); template void DoIfCanDiscardCurrentDoc(const TFunctor1& completionHandler) { DoIfCanDiscardCurrentDoc(completionHandler, []{}); } bool NeedsToAskIfCanDiscardCurrentDoc() const; wxWindowPtr CreateAskAboutSavingDialog(); /// Updates statistics in statusbar. void UpdateStatusBar(); /// Updates frame title. void UpdateTitle(); /// Updates menu -- disables and enables items. void UpdateMenu(); // Called when catalog's language possibly changed void UpdateTextLanguage(); /// Returns popup menu for given catalog entry. wxMenu *CreatePopupMenu(int item); // (Re)initializes spellchecker, if needed void InitSpellchecker(); void RecordItemToNavigationHistory(const CatalogItemPtr& item); // navigation to another item in the list typedef bool (*NavigatePredicate)(const CatalogItemPtr& item); int NavigateGetNextItem(const int start, int step, NavigatePredicate predicate, bool wrap, CatalogItemPtr *out_item); bool Navigate(int step, NavigatePredicate predicate, bool wrap); void OnDoneAndNext(wxCommandEvent&); void OnGoPreviouslyEdited(wxCommandEvent&); void OnPrev(wxCommandEvent&); void OnNext(wxCommandEvent&); void OnPrevPage(wxCommandEvent&); void OnNextPage(wxCommandEvent&); void OnPrevUnfinished(wxCommandEvent&); void OnNextUnfinished(wxCommandEvent&); void OnPrevPluralForm(wxCommandEvent&); void OnNextPluralForm(wxCommandEvent&); // Message handlers: void OnTranslationFromThisPot(wxCommandEvent& event); #ifndef __WXOSX__ void OnCloseCmd(wxCommandEvent& event); #endif private: void OnSave(wxCommandEvent& event); void OnSaveAs(wxCommandEvent& event); template void GetSaveAsFilenameThenDo(const CatalogPtr& cat, F then); void DoSaveAs(const wxString& filename); void OnEditProperties(wxCommandEvent& event); void OnUpdateEditProperties(wxUpdateUIEvent& 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(wxDataViewEvent& event); void OnListRightClick(wxDataViewEvent& event); void OnListFocus(wxFocusEvent& event); void OnSplitterSashMoving(wxSplitterEvent& event); void OnSidebarSplitterSashMoving(wxSplitterEvent& event); 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); void OnIDsFlag(wxCommandEvent& event); void OnToggleWarnings(wxCommandEvent& event); void OnCopyFromSource(wxCommandEvent& event); void OnCopyFromSingular(wxCommandEvent& event); void OnClearTranslation(wxCommandEvent& event); void OnFind(wxCommandEvent& event); void OnFindAndReplace(wxCommandEvent& event); void OnFindNext(wxCommandEvent& event); void OnFindPrev(wxCommandEvent& event); void OnUpdateFind(wxUpdateUIEvent& event); void OnEditComment(wxCommandEvent& event); void OnSortByFileOrder(wxCommandEvent&); void OnSortBySource(wxCommandEvent&); 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 OnSingleSelectionWithPluralsUpdate(wxUpdateUIEvent& event); void OnGoPreviouslyEditedUpdate(wxUpdateUIEvent& event); void OnHasCatalogUpdate(wxUpdateUIEvent& event); void OnIsEditableUpdate(wxUpdateUIEvent& event); void OnEditCommentUpdate(wxUpdateUIEvent& event); void OnFuzzyFlagUpdate(wxUpdateUIEvent& event); #if defined(__WXMSW__) || defined(__WXGTK__) void OnTextEditingCommand(wxCommandEvent& event); void OnTextEditingCommandUpdate(wxUpdateUIEvent& event); #endif void OnSuggestion(wxCommandEvent& event); void OnPreTranslateAll(wxCommandEvent& event); void OnRemoveSameAsSourceTranslations(wxCommandEvent& event); void OnPurgeDeleted(wxCommandEvent& event); void OnCompileMO(wxCommandEvent& event); void OnExportToHTML(wxCommandEvent& event); void ExportCatalogToHTML(const wxString& filename); void OnSize(wxSizeEvent& event); void UpdateEditingUIAfterChange(); template void ReportValidationErrors(Catalog::ValidationResults validation, Catalog::CompilationStatus mo_compilation_status, bool from_save, bool other_file_saved, TFunctor completionHandler); void NoteAsRecentFile(); void OnNewTranslationEntered(const CatalogItemPtr& item); DECLARE_EVENT_TABLE() private: CatalogPtr m_catalog; std::unique_ptr m_fileMonitor; bool m_fileExistsOnDisk; wxString m_fileNamePartOfTitle; std::unique_ptr m_toolbar; CatalogItemPtr m_pendingHumanEditedItem; std::vector m_navigationHistory; EditingArea *m_editingArea; wxSplitterWindow *m_splitter; wxSplitterWindow *m_sidebarSplitter; PoeditListCtrl *m_list; AttentionBar *m_attentionBar; Sidebar *m_sidebar; wxWeakRef m_findWindow; bool m_modified; bool m_hasObsoleteItems; bool m_displayIDs; bool m_setSashPositionsWhenMaximized; }; #endif // _EDFRAME_H_ poedit-3.6.3/src/recent_files.h0000644000175100001660000000524315011674230012076 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2020-2025 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_recent_files_h #define Poedit_recent_files_h #include "customcontrols.h" #include #include #include class WXDLLIMPEXP_FWD_BASE wxFileName; class WXDLLIMPEXP_FWD_CORE wxMenuBar; class WXDLLIMPEXP_FWD_CORE wxMenuItem; /// Event for opening recent files wxDECLARE_EVENT(EVT_OPEN_RECENT_FILE, wxCommandEvent); /// Management of recently opened files. class RecentFiles { public: /// Return singleton instance of the manager. static RecentFiles& Get(); /// Destroys the singleton, must be called (only) on app shutdown. static void CleanUp(); /// Use this menu to show recent items. void UseMenu(wxMenuItem *menu); /// Record a file as being recently edited. void NoteRecentFile(const wxFileName& fn); std::vector GetRecentFiles(); #ifdef __WXOSX__ /// Hack to make macOS' hack for Open Recent work correctly; must be called from applicationWillFinishLaunching: void MacCreateFakeOpenRecentMenu(); void MacTransferMenuTo(wxMenuBar *bar); #endif private: RecentFiles(); ~RecentFiles(); class impl; std::unique_ptr m_impl; friend class RecentFilesCtrl; }; /// Control with a list of recently opened files class RecentFilesCtrl : public IconAndSubtitleListCtrl { public: RecentFilesCtrl(wxWindow *parent); private: void RefreshContent(); void OnActivate(wxDataViewEvent& event); struct data; std::unique_ptr m_data; }; #endif // Poedit_recent_files_h poedit-3.6.3/src/sidebar.h0000644000175100001660000001512415011674230011044 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2025 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_sidebar_h #define Poedit_sidebar_h #include #include #include #include #include #include #include #include "catalog.h" #include "language.h" #include "tm/suggestions.h" class WXDLLIMPEXP_FWD_CORE wxMenu; class WXDLLIMPEXP_FWD_CORE wxMenuItem; class WXDLLIMPEXP_FWD_CORE wxSizer; class WXDLLIMPEXP_FWD_CORE wxStaticText; class ExplanationLabel; class StaticBitmap; struct Suggestion; class SuggestionsProvider; class SuggestionWidget; class Sidebar; #define SIDEBAR_PADDING PX(8) /// Implements part of the sidebar. class SidebarBlock : public std::enable_shared_from_this { public: virtual ~SidebarBlock() {} wxSizer *GetSizer() const { return m_sizer; } virtual void Show(bool show); void SetItem(const CatalogItemPtr& item); virtual bool ShouldShowForItem(const CatalogItemPtr& item) const = 0; virtual void Update(const CatalogItemPtr& item) = 0; virtual bool IsGrowable() const { return false; } protected: enum Flags { NoUpperMargin = 1, NoSideMargins = 2 }; SidebarBlock(Sidebar *parent, const wxString& label, int flags = 0); Sidebar *m_parent; wxSizer *m_headerSizer; wxSizer *m_innerSizer; wxSizer *m_sizer; }; wxDECLARE_EVENT(EVT_SUGGESTION_SELECTED, wxCommandEvent); /// Sidebar block implementation translation suggestions class SuggestionsSidebarBlock : public SidebarBlock { public: static SuggestionsSidebarBlock* Create(Sidebar *parent, wxMenu *menu) { auto s = new SuggestionsSidebarBlock(parent, menu); s->InitControls(); return s; } ~SuggestionsSidebarBlock(); void Show(bool show) override; bool IsGrowable() const override { return true; } bool ShouldShowForItem(const CatalogItemPtr& item) const override; void Update(const CatalogItemPtr& item) override; protected: SuggestionsSidebarBlock(Sidebar *parent, wxMenu *menu); virtual void InitControls(); virtual void InitMainPanel(); // How many entries can have shortcuts? static const int SUGGESTIONS_MENU_ENTRIES = 9; virtual void UpdateVisibility(); virtual wxString GetIconForSuggestion(const Suggestion& s) const; virtual wxString GetTooltipForSuggestion(const Suggestion& s) const; void ClearMessage(); void SetMessage(const wxString& icon, const wxString& text); virtual void ReportError(SuggestionsBackend *backend, dispatch::exception_ptr e); virtual void ClearSuggestions(); virtual void UpdateSuggestions(const SuggestionsList& hits); virtual void OnQueriesFinished(); virtual void BuildSuggestionsMenu(int count = SUGGESTIONS_MENU_ENTRIES); virtual void UpdateSuggestionsMenu(); virtual void ClearSuggestionsMenu(); virtual void QueryAllProviders(const CatalogItemPtr& item); void QueryProvider(SuggestionsBackend& backend, const CatalogItemPtr& item, uint64_t queryId); // Handle showing of suggestions void UpdateSuggestionsForItem(CatalogItemPtr item); void OnDelayedShowSuggestionsForItem(wxTimerEvent& e); protected: std::unique_ptr m_provider; wxWindow *m_suggestionsPanel; wxSizer *m_panelSizer; wxWeakRef m_suggestionsMenu; wxSizer *m_msgSizer; bool m_msgPresent; StaticBitmap *m_msgIcon; ExplanationLabel *m_msgText; wxStaticText *m_iGotNothing; wxSizer *m_suggestionsSizer; // Additional sizer for derived classes, shown below suggestions wxSizer *m_extrasSizer; SuggestionsList m_suggestions; std::vector m_suggestionsWidgets; wxWindow *m_suggestionsSeparator; std::vector m_suggestionsMenuItems; int m_pendingQueries; uint64_t m_latestQueryId; // delayed showing of suggestions: long long m_lastUpdateTime; wxTimer m_suggestionsTimer; friend class SuggestionWidget; }; /** Control showing Poedit's assistance sidebar. Contains TM suggestions, comments and possibly other auxiliary stuff. */ class Sidebar : public wxWindow { public: Sidebar(wxWindow *parent, wxMenu *suggestionsMenu); ~Sidebar(); /// Update selected item, if there's a single one. May be nullptr. void SetSelectedItem(const CatalogPtr& catalog, const CatalogItemPtr& item); /// Tell the sidebar there's multiple selection. void SetMultipleSelection(); /// Returns currently selected item CatalogItemPtr GetSelectedItem() const { return m_selectedItem; } Language GetCurrentSourceLanguage() const; Language GetCurrentLanguage() const; CatalogPtr GetCatalog() const { return m_catalog; } bool FileHasCapability(Catalog::Cap cap) const; /// Refreshes displayed content void RefreshContent(); /// Call when catalog changes/is invalidated void ResetCatalog() { SetSelectedItem(nullptr, nullptr); } /// Set max height of the upper (not input-aligned) part. void SetUpperHeight(int size); bool AcceptsFocus() const override { return false; } protected: void DoEnable(bool enable) override; private: enum BlockPos { Top, Bottom }; void AddBlock(SidebarBlock *block, BlockPos pos); void OnPaint(wxPaintEvent&); private: CatalogPtr m_catalog; CatalogItemPtr m_selectedItem; std::vector> m_blocks; wxSizer *m_blocksSizer; wxSizer *m_topBlocksSizer, *m_bottomBlocksSizer; }; #endif // Poedit_sidebar_h poedit-3.6.3/src/cat_update.cpp0000644000175100001660000004273515011674230012107 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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 "cat_update.h" #include "catalog_po.h" #include "colorscheme.h" #include "custom_notebook.h" #include "errors.h" #include "extractors/extractor.h" #include "hidpi.h" #include "progress_ui.h" #include "utility.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace { inline auto variant_vector(std::initializer_list&& init) { return wxVector(init.begin(), init.end()); } class SummaryList : public wxDataViewListCtrl { public: SummaryList(wxWindow *parent, int flags = 0) : wxDataViewListCtrl(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, flags | wxDV_ROW_LINES | wxDV_VARIABLE_LINE_HEIGHT | wxBORDER_NONE) { SetWindowVariant(wxWINDOW_VARIANT_SMALL); #ifdef __WXOSX__ if (@available(macOS 11.0, *)) ((NSTableView*)[((NSScrollView*)GetHandle()) documentView]).style = NSTableViewStyleFullWidth; #endif } }; /// This class provides simple dialog that displays list of changes made in the catalog. class MergeSummaryDialog : public wxDialog { public: MergeSummaryDialog(wxWindow *parent); ~MergeSummaryDialog(); /// Reads data from catalog and fill dialog's controls. void TransferTo(const MergeStats& r); private: SegmentedNotebookBase *m_notebook; }; MergeSummaryDialog::MergeSummaryDialog(wxWindow *parent) // TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file : wxDialog(parent, wxID_ANY, MSW_OR_OTHER(_("Update summary"), _("Update Summary")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { SetName("summary"); #ifdef __WXMSW__ SetIcons(wxIconBundle(wxStandardPaths::Get().GetResourcesDir() + "\\Resources\\Poedit.ico")); #endif auto topsizer = new wxBoxSizer(wxVERTICAL); SetSizer(topsizer); auto panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | MSW_OR_OTHER(wxBORDER_SIMPLE, wxBORDER_SUNKEN)); ColorScheme::SetupWindowColors(panel, [=] { if (ColorScheme::GetWindowMode(panel) == ColorScheme::Light) panel->SetBackgroundColour(*wxWHITE); else panel->SetBackgroundColour(GetDefaultAttributes().colBg); }); topsizer->Add(panel, wxSizerFlags(1).Expand().Border(wxLEFT|wxRIGHT|wxTOP, PX(20))); auto sizer = new wxBoxSizer(wxVERTICAL); panel->SetSizer(sizer); m_notebook = SegmentedNotebook::Create(panel, SegmentStyle::SidebarPanels); sizer->Add(m_notebook, wxSizerFlags(1).Expand().Border(wxTOP, PX(1))); auto buttons = CreateButtonSizer(wxOK); auto ok = static_cast(FindWindow(wxID_OK)); ok->SetLabel(_("Close")); ok->SetDefault(); #ifdef __WXOSX__ topsizer->AddSpacer(PX(5)); topsizer->Add(buttons, wxSizerFlags().Expand().Border(wxLEFT|wxRIGHT|wxBOTTOM, PX(10))); #else topsizer->AddSpacer(PX(10)); topsizer->Add(buttons, wxSizerFlags().Expand().Border(wxRIGHT, PX(15))); topsizer->AddSpacer(PX(15)); #endif RestoreWindowState(this, wxSize(PX(700), PX(500)), WinState_Size); CentreOnParent(); } MergeSummaryDialog::~MergeSummaryDialog() { SaveWindowState(this, WinState_Size); } void MergeSummaryDialog::TransferTo(const MergeStats& r) { wxWindowUpdateLocker lock(this); if (r.errors) { auto list = new SummaryList(m_notebook); m_notebook->AddPage(list, _("Issues")); // TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue list->AppendTextColumn(_("File"), wxDATAVIEW_CELL_INERT, wxCOL_WIDTH_AUTOSIZE); // TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue list->AppendTextColumn(_("Line"), wxDATAVIEW_CELL_INERT, wxCOL_WIDTH_AUTOSIZE, wxALIGN_RIGHT); // TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue list->AppendTextColumn(_("Issue"), wxDATAVIEW_CELL_INERT, wxCOL_WIDTH_AUTOSIZE); for (auto& i: r.errors.items) { if (i.has_location()) list->AppendItem(variant_vector({i.file, wxString::Format("%d", i.line), i.text})); else list->AppendItem(variant_vector({"", "", i.text})); } } if (!r.added.empty()) { auto list = new SummaryList(m_notebook, wxDV_NO_HEADER); m_notebook->AddPage(list, MSW_OR_OTHER(_("New strings"), _("New Strings"))); list->AppendTextColumn(MSW_OR_OTHER(_("New strings"), _("New Strings")), wxDATAVIEW_CELL_INERT, wxCOL_WIDTH_AUTOSIZE); for (auto& s: r.added) { list->AppendItem(variant_vector({s.to_string()})); } } if (!r.removed.empty()) { auto list = new SummaryList(m_notebook, wxDV_NO_HEADER); m_notebook->AddPage(list, MSW_OR_OTHER(_("Removed strings"), _("Removed Strings"))); list->AppendTextColumn(MSW_OR_OTHER(_("Removed strings"), _("Removed Strings")), wxDATAVIEW_CELL_INERT, wxCOL_WIDTH_AUTOSIZE); for (auto& s: r.removed) { list->AppendItem(variant_vector({s.to_string()})); } } } struct InterimResults { CatalogPtr reference; ParsedGettextErrors errors; }; InterimResults ExtractPOTFromSources(CatalogPtr catalog) { auto po = std::dynamic_pointer_cast(catalog); if (!po) BOOST_THROW_EXCEPTION(ExtractionException(ExtractionError::Unspecified)); Progress progress(1); progress.message(_(L"Collecting source files…")); auto spec = catalog->GetSourceCodeSpec(); if (!spec) { BOOST_THROW_EXCEPTION(ExtractionException(ExtractionError::NoSourcesFound)); } InterimResults output; auto files = Extractor::CollectAllFiles(*spec); progress.message ( // TRANSLATORS: %s is the number of files wxString::Format ( wxPLURAL(L"Extracting translatable strings from %s file…", L"Extracting translatable strings from %s files…", (int)files.size()), wxNumberFormatter::ToString((long)files.size()) ) ); if (!files.empty()) { TempDirectory tmpdir; auto result = Extractor::ExtractWithAll(tmpdir, *spec, files); if (!result) BOOST_THROW_EXCEPTION(ExtractionException(ExtractionError::Unspecified)); try { output.errors = result.errors; output.reference = POCatalog::Create(result.pot_file, Catalog::CreationFlag_IgnoreHeader); return output; } catch (...) { wxLogError(_("Failed to load file with extracted translations.")); BOOST_THROW_EXCEPTION(ExtractionException(ExtractionError::Unspecified)); } } else { BOOST_THROW_EXCEPTION(ExtractionException(ExtractionError::NoSourcesFound)); } } InterimResults ExtractPOTFromSourcesWithExplanatoryErrors(CatalogPtr catalog) { try { return ExtractPOTFromSources(catalog); } catch (ExtractionException& e) { // FIXME: nicer UI than this; log inside summary as multiple errors wxString msgSuffix; if (!e.file.empty() && e.file != ".") msgSuffix += "\n\n" + wxString::Format(_("In: %s"), e.file); wxString msg, explain; switch (e.error) { case ExtractionError::NoSourcesFound: msg = _("Source code not available."); explain = _(L"Translations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties."); break; case ExtractionError::PermissionDenied: msg = _("Permission denied."); explain = _(L"You don’t have permission to read source code files from the location specified in the file’s Properties."); #ifdef __WXOSX__ if (@available(macOS 13.0, *)) { // TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. explain += "\n\n" + _("If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders."); } else if (@available(macOS 10.15, *)) { // TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. explain += "\n\n" + _("If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders."); } #endif break; case ExtractionError::Unspecified: msg = _("Failed to extract strings from source code."); explain.clear(); // will be taken from wxLogError output, if any break; } explain += msgSuffix; BOOST_THROW_EXCEPTION( BackgroundTaskException(msg, explain) ); } } InterimResults LoadReferenceFile(const wxString& ref_file) { try { InterimResults data; data.reference = Catalog::Create(ref_file, Catalog::CreationFlag_IgnoreTranslations); // Silently fix duplicates because they are common in WordPress world: auto pot = std::dynamic_pointer_cast(data.reference); if (pot) { if (pot->HasDuplicateItems()) pot->FixDuplicateItems(); } return data; } catch (...) { BOOST_THROW_EXCEPTION ( BackgroundTaskException ( wxString::Format(_(L"The file “%s†couldn’t be opened."), wxFileName(ref_file).GetFullName()), DescribeCurrentException() ) ); } } template dispatch::future DoPerformUpdateWithUI(wxWindow *parent, CatalogPtr catalog, int timeCostObtainPOT, Func&& funcObtainPOT) { auto promise = std::make_shared>(); auto merge_result = std::make_shared(); auto cancellation = std::make_shared(); wxWindowPtr progress(new MergeProgressWindow(parent, _("Updating translations"), cancellation)); progress->RunTaskThenDo([merge_result,catalog,cancellation,funcObtainPOT,timeCostObtainPOT]() -> BackgroundTaskResult { InterimResults data; Progress p(100); { Progress subtask(1, p, timeCostObtainPOT); data = funcObtainPOT(); } cancellation->throw_if_cancelled(); MergeStats stats; stats.errors = data.errors; { Progress subtask(1, p, (100 - timeCostObtainPOT) / 2); subtask.message(_(L"Determining differences…")); ComputeMergeStats(stats, catalog, data.reference); } cancellation->throw_if_cancelled(); { Progress subtask(1, p, (100 - timeCostObtainPOT) / 2); subtask.message(_(L"Merging differences…")); *merge_result = MergeCatalogWithReference(catalog, data.reference); if (!(*merge_result)) BOOST_THROW_EXCEPTION( BackgroundTaskException(_("Failed to load file with extracted translations.")) ); stats.errors += merge_result->errors; } BackgroundTaskResult bg; bg.user_data = stats; if (stats.changes_count() == 0) { bg.summary = _("Translation file is already up to date, no changes to strings were made."); } else { bg.summary = wxString::Format ( wxPLURAL("Translation file was updated with %s change.", "Translation file was updated with %s changes.", stats.changes_count()), wxNumberFormatter::ToString((long)stats.changes_count()) ); bg.details.emplace_back(_("New strings to translate:"), wxNumberFormatter::ToString((long)stats.added.size())); bg.details.emplace_back(_("Removed strings (no longer used):"), wxNumberFormatter::ToString((long)stats.removed.size())); } return bg; }, [progress,promise,merge_result](bool ok) { promise->set_value(ok && merge_result ? merge_result->updated_catalog : nullptr); }); return promise->get_future(); } } // anonymous namespace MergeResult PerformUpdateFromSourcesSimple(CatalogPtr catalog) { Progress p(100); InterimResults data; { Progress subtask(1, p, 90); data = ExtractPOTFromSources(catalog); if (!data.reference) return {}; } { Progress subtask(1, p, 10); subtask.message(_(L"Merging differences…")); auto merged = MergeCatalogWithReference(catalog, data.reference); merged.errors += data.errors; return merged; } } dispatch::future PerformUpdateFromSourcesWithUI(wxWindow *parent, CatalogPtr catalog) { return DoPerformUpdateWithUI(parent, catalog, 90, [=]{ return ExtractPOTFromSourcesWithExplanatoryErrors(catalog); }); } dispatch::future PerformUpdateFromReferenceWithUI(wxWindow *parent, CatalogPtr catalog, const wxString& reference_file) { return DoPerformUpdateWithUI(parent, catalog, 50, [=]{ return LoadReferenceFile(reference_file); }); } bool MergeProgressWindow::SetSummaryContent(const BackgroundTaskResult& data) { if (!ProgressWindow::SetSummaryContent(data)) return false; if (!data.user_data.has_value()) return true; // nothing more to show if (auto r = std::any_cast(&data.user_data)) { AddViewDetails(*r); } else if (auto e = std::any_cast(&data.user_data)) { MergeStats ms; ms.errors = *e; AddViewDetails(ms); } return true; } void MergeProgressWindow::AddViewDetails(const MergeStats& r) { if (!r.errors && r.added.empty() && r.removed.empty()) return; // nothing at all to show if (r.errors) { auto msg = wxString::Format ( wxPLURAL("%d issue with the source strings was detected.", "%d issues with the source strings were detected.", (int)r.errors.items.size()), (int)r.errors.items.size() ); auto sizer = GetDetailsSizer(); auto line = new wxBoxSizer(wxHORIZONTAL); sizer->Insert(0, line, wxSizerFlags().Expand().Border(wxBOTTOM, PX(6))); line->Add(new wxStaticBitmap(this, wxID_ANY, wxArtProvider::GetBitmap("StatusWarning")), wxSizerFlags().Center().Border(wxTOP|wxBOTTOM, PX(2))); line->AddSpacer(PX(6)); auto label = new wxStaticText(this, wxID_ANY, msg); #if defined(__WXOSX__) || defined(__WXGTK__) label->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif #ifndef __WXGTK__ ColorScheme::SetupWindowColors(this, [=] { label->SetForegroundColour(ColorScheme::Get(Color::ItemFuzzy)); }); #endif line->Add(label, wxSizerFlags().Center()); } auto sizer = GetButtonSizer(); auto button = new wxButton(this, wxID_ANY, MSW_OR_OTHER(_(L"View details…"), _(L"View Details…"))); sizer->Insert(0, button); sizer->InsertStretchSpacer(1); button->Bind(wxEVT_BUTTON, [=](wxCommandEvent&) { auto dlg = new MergeSummaryDialog(this); dlg->TransferTo(r); dlg->ShowModal(); }); } poedit-3.6.3/src/catalog_xliff.h0000644000175100001660000001144015011674230012232 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2018-2025 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_catalog_xliff_h #define Poedit_catalog_xliff_h #include "catalog.h" #include "errors.h" #include "pugixml.h" #include #include class XLIFFCatalog; class XLIFFException : public Exception { public: XLIFFException(const wxString& what) : Exception(what) {} }; class XLIFFReadException : public XLIFFException { public: XLIFFReadException(const wxString& what); }; // Metadata concerning XLIFF representation in Poedit, e.g. for placeholders struct XLIFFStringMetadata { XLIFFStringMetadata() : isPlainText(true) {} XLIFFStringMetadata(XLIFFStringMetadata&& other) = default; XLIFFStringMetadata& operator=(XLIFFStringMetadata&&) = default; XLIFFStringMetadata(const XLIFFStringMetadata&) = delete; void operator=(const XLIFFStringMetadata&) = delete; bool isPlainText; struct Subst { std::string placeholder; std::string markup; }; std::vector substitutions; }; class XLIFFCatalogItem : public CatalogItem { public: XLIFFCatalogItem(XLIFFCatalog& owner, int id, pugi::xml_node node) : m_owner(owner), m_node(node) { m_id = id; } XLIFFCatalogItem(const CatalogItem&) = delete; wxString GetRawSymbolicId() const override { return m_symbolicId; } protected: struct document_lock : public std::lock_guard { document_lock(XLIFFCatalogItem *parent); }; protected: XLIFFCatalog& m_owner; pugi::xml_node m_node; XLIFFStringMetadata m_metadata; wxString m_symbolicId; }; class XLIFFCatalog : public Catalog { public: ~XLIFFCatalog() {} bool HasCapability(Cap cap) const override; static bool CanLoadFile(const wxString& extension); wxString GetPreferredExtension() const override { return "xlf"; } static std::shared_ptr Open(const wxString& filename); bool Save(const wxString& filename, bool save_mo, ValidationResults& validation_results, CompilationStatus& mo_compilation_status) override; std::string SaveToBuffer() override; Language GetLanguage() const override { return m_language; } void SetLanguage(Language lang) override { m_language = lang; } // FIXME: PO specific bool HasDeletedItems() const override { return false;} void RemoveDeletedItems() override {} pugi::xml_node GetXMLRoot() const { return m_doc.child("xliff"); } std::string GetXPathValue(const char* xpath) const; protected: XLIFFCatalog(pugi::xml_document&& doc) : Catalog(Type::XLIFF), m_doc(std::move(doc)) {} struct InstanceCreatorImpl { virtual ~InstanceCreatorImpl() {} virtual std::shared_ptr CreateFromDoc(pugi::xml_document&& doc, const std::string& xliff_version) = 0; }; static std::shared_ptr OpenImpl(const wxString& filename, InstanceCreatorImpl& creator); virtual void Parse(pugi::xml_node root) = 0; protected: std::mutex m_documentMutex; pugi::xml_document m_doc; Language m_language; friend class XLIFFCatalogItem; }; class XLIFF1Catalog : public XLIFFCatalog { public: XLIFF1Catalog(pugi::xml_document&& doc, int subversion) : XLIFFCatalog(std::move(doc)), m_subversion(subversion) {} void SetLanguage(Language lang) override; protected: void Parse(pugi::xml_node root) override; int m_subversion; }; class XLIFF2Catalog : public XLIFFCatalog { public: XLIFF2Catalog(pugi::xml_document&& doc) : XLIFFCatalog(std::move(doc)) {} void SetLanguage(Language lang) override; protected: void Parse(pugi::xml_node root) override; }; #endif // Poedit_catalog_xliff_h poedit-3.6.3/src/edlistctrl.h0000644000175100001660000002413315011674230011604 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 Vaclav Slavik * Copyright (C) 2005 Olivier Sannier * * 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_edlistctrl_h #define Poedit_edlistctrl_h #include #include #include class WXDLLIMPEXP_FWD_CORE wxListCtrl; class WXDLLIMPEXP_FWD_CORE wxListEvent; #include "catalog.h" #include "cat_sorting.h" #include "colorscheme.h" #include "language.h" // list control with both columns equally wide: class PoeditListCtrl : public wxDataViewCtrl { public: PoeditListCtrl(wxWindow *parent, wxWindowID id = -1, bool dispIDs = false); virtual ~PoeditListCtrl(); /// Re-sort the control according to user-specified criteria. void Sort(); void SizeColumns(); void SetDisplayLines(bool dl); void CatalogChanged(const CatalogPtr& catalog); int ListItemToListIndex(const wxDataViewItem& item) const { return item.IsOk() ? m_model->GetRow(item) : -1; } wxDataViewItem ListIndexToListItem(int index) const { return index != -1 ? m_model->GetItem(index) : wxDataViewItem(); } /// Returns the list item index for the given catalog index int CatalogIndexToList(int index) const { return m_model->RowFromCatalogIndex(index); } wxDataViewItem CatalogIndexToListItem(int index) const { return m_model->GetItem(m_model->RowFromCatalogIndex(index)); } wxDataViewItem CatalogItemToListItem(const CatalogItemPtr& item) const { return m_model->GetItem(m_model->RowFromCatalogItem(item)); } /// Returns item's index in the catalog int ListIndexToCatalog(int index) const { return index != -1 ? m_model->CatalogIndex(index) : -1; } int ListItemToCatalogIndex(const wxDataViewItem& item) const { return item.IsOk() ? m_model->CatalogIndex(m_model->GetRow(item)) : -1; } CatalogItemPtr ListItemToCatalogItem(const wxDataViewItem& item) const { return item.IsOk() ? m_model->Item(m_model->GetRow(item)) : nullptr; } /// Returns item from the catalog based on list index CatalogItemPtr ListIndexToCatalogItem(int index) const { return index != -1 ? m_model->Item(index) : nullptr; } CatalogItemPtr GetCurrentCatalogItem() { return ListItemToCatalogItem(GetCurrentItem()); } std::vector GetSelectedCatalogItems() const { auto catalog = m_model->m_catalog; std::vector s; for (auto i: GetSelectedCatalogItemIndexes()) s.push_back((*catalog)[i]); return s; } std::vector GetSelectedCatalogItemIndexes() const { wxDataViewItemArray sel; int count = GetSelections(sel); std::vector s; s.reserve(count); for (auto i: sel) s.push_back(m_model->CatalogIndex(m_model->GetRow(i))); return s; } void SetSelectedCatalogItemIndexes(const std::vector& selection) { wxDataViewItemArray sel; for (auto i: selection) sel.push_back(CatalogIndexToListItem(i)); SetSelections(sel); } // Perform given function for all selected items. The function takes // reference to the item as its argument. Also refresh the items touched, // on the assumption that the operation modifies them. template void ForSelectedCatalogItemsDo(T func) { wxDataViewItemArray sel; GetSelections(sel); for (auto item: sel) func(*ListItemToCatalogItem(item)); m_model->ItemsChanged(sel); } void SelectOnly(const wxDataViewItem& item) { wxDataViewItemArray sel; sel.push_back(item); SetSelections(sel); EnsureVisible(item); #ifndef __WXOSX__ wxDataViewEvent event(wxEVT_DATAVIEW_SELECTION_CHANGED, this, item); ProcessWindowEvent(event); #endif } void SelectAndFocus(const wxDataViewItem& item) { #ifndef __WXOSX__ // implicit in selection on macOS SetCurrentItem(item); #endif SelectOnly(item); } void SelectOnly(int n) { // TODO: Remove this API SelectOnly(m_model->GetItem(n)); } void SelectAndFocus(int n) { // TODO: Remove this API #ifndef __WXOSX__ // implicit in selection on macOS SetCurrentItem(m_model->GetItem(n)); #endif SelectOnly(n); } /// Returns true if exactly one item is selected. bool HasSingleSelection() const { return GetSelectedItemsCount() == 1; } /// Returns true if more than one item are selected. bool HasMultipleSelection() const { return GetSelectedItemsCount() > 1; } void RefreshAllItems(); void RefreshItem(const wxDataViewItem& item) { m_model->ItemChanged(item); } int GetCurrentItemListIndex() { return m_model->GetRow(GetCurrentItem()); } int GetItemCount() const { return m_model->GetCount(); } void SetCustomFont(wxFont font); // Order used for sorting SortOrder& sortOrder() { return m_model->sortOrder; } protected: void DoFreeze() override; void DoThaw() override; private: /// Model for the translation data class Model : public wxDataViewVirtualListModel { public: enum Column { Col_ID, Col_Icon, Col_Source, Col_Translation, Col_Max // invalid }; Model(TextDirection appTextDir); virtual ~Model() {} /// Configure items colors & fonts; must be called after ctor. void SetVisualMode(ColorScheme::Mode visualMode); void SetCatalog(CatalogPtr catalog); void UpdateSort(); unsigned int GetColumnCount() const override { return Col_Max; } wxString GetColumnType( unsigned int col ) const override; void GetValueByRow(wxVariant& variant, unsigned row, unsigned col) const override; bool SetValueByRow(const wxVariant&, unsigned, unsigned) override; bool GetAttrByRow(unsigned row, unsigned col, wxDataViewItemAttr& attr) const override; CatalogItemPtr Item(int row) const { int index = CatalogIndex(row); return index != -1 ? (*m_catalog)[index] : nullptr; } /// Returns item's index in the catalog int CatalogIndex(int row) const { if ( row < 0 || row >= (int)m_mapListToCatalog.size() ) return -1; else return m_mapListToCatalog[row]; } int RowFromCatalogIndex(int index) const { if ( index < 0 || index >= (int)m_mapCatalogToList.size() ) return -1; else return m_mapCatalogToList[index]; } int RowFromCatalogItem(const CatalogItemPtr& item) const { if (!item) return -1; auto& items = m_catalog->items(); for (size_t i = 0; i < items.size(); i++) { if (items[i] == item) return RowFromCatalogIndex((int)i); } return -1; } void CreateSortMap(); void Freeze() { m_frozen = true; } void Thaw() { m_frozen = false; } void SetMaxVisibleWidth(int chars) { m_maxVisibleWidth = chars; } public: CatalogPtr m_catalog; SortOrder sortOrder; private: bool m_frozen; int m_maxVisibleWidth; std::vector m_mapListToCatalog; std::vector m_mapCatalogToList; TextDirection m_sourceTextDir, m_transTextDir, m_appTextDir; wxColour m_clrID, m_clrInvalid, m_clrFuzzy; wxString m_clrContextFg, m_clrContextBg; wxIcon m_iconComment, m_iconError, m_iconWarning; }; void UpdateHeaderAttrs(); void CreateColumns(); void UpdateColumns(); void FixIdColumnSize(); void OnSize(wxSizeEvent& event); bool m_displayIDs; TextDirection m_appTextDir; wxDataViewColumn *m_colID, *m_colIcon, *m_colSource, *m_colTrans; CatalogPtr m_catalog; wxObjectDataPtr m_model; }; #endif // Poedit_edlistctrl_h poedit-3.6.3/src/extractors/0000755000175100001660000000000015011674362011543 5poedit-3.6.3/src/extractors/extractor_legacy.h0000644000175100001660000001204215011674230015164 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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_extractor_legacy_h #define Poedit_extractor_legacy_h #include "extractor.h" #include #include #include class WXDLLIMPEXP_FWD_BASE wxConfigBase; /** This class holds information about an external extractor. It does \b not do any extraction. The only functionality it provides is the metadata to invoke extractors. */ class LegacyExtractorSpec { public: LegacyExtractorSpec() : Enabled(true) {} /// User-oriented name of the extractor (e.g. "C/C++"). wxString Name; /// Whether the extractor is currently enabled. bool Enabled; /** Semicolon-separated list of wildcards. The extractor is capable of parsing files matching these wildcards. Example: "*.cpp;*.h" */ wxString Extensions; /** Command used to execute the extractor. %o expands to output file, %K to list of keywords and %F to list of files. */ wxString Command; /** Expansion string for single keyword. %k expands to keyword. %K in Command is replaced by n expansions of KeywordItem where n is the number of keywords. */ wxString KeywordItem; /** Expansion string for single filename. %f expands to filename. %F in Command is replaced by n expansions of FileItem where n is the number of filenames. */ wxString FileItem; /** Expansion string for single charset setting. %c expands to charset name. %C in command is replaced with this. */ wxString CharsetItem; bool operator==(const LegacyExtractorSpec& other) const { return Name == other.Name && Enabled == other.Enabled && Extensions == other.Extensions && Command == other.Command && KeywordItem == other.KeywordItem && FileItem == other.FileItem && CharsetItem == other.CharsetItem; } bool operator!=(const LegacyExtractorSpec& other) const { return !(*this == other); } /** Returns command line used to launch the extractor with specified input. This expands all variables in Command property of the parser and returns string that be directly passed to wxExecute. \param files list of files to parse \param keywords list of recognized keywords \param output name of temporary output file \param charset source code charset (may be empty) */ wxString BuildCommand(const std::vector& files, const wxArrayString& keywords, const wxString& output, const wxString& charset) const; }; /** Database of all available extractors. This class is regular pseudo-template dynamic wxArray with additional methods for storing its content to wxConfig object and retrieving it. */ class LegacyExtractorsDB { public: /// Reads DB from registry/dotfile. void Read(wxConfigBase *cfg); /// Write DB to registry/dotfile. void Write(wxConfigBase *cfg); /// Remove definitions superseded by GettextExtractor static void RemoveObsoleteExtractors(wxConfigBase *cfg); std::vector Data; }; /// Extractor implementation for legacy definitions class LegacyExtractor : public Extractor { public: LegacyExtractor(const LegacyExtractorSpec& spec); wxString GetId() const override { return m_id; } ExtractionOutput Extract(TempDirectory& tmpdir, const SourceCodeSpec& sourceSpec, const std::vector& files) const override; private: wxString m_id; LegacyExtractorSpec m_spec; }; #endif // Poedit_extractor_legacy_h poedit-3.6.3/src/extractors/extractor_legacy.cpp0000644000175100001660000002477115011674230015533 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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 "extractor_legacy.h" #include "gexecute.h" #include #include #include #include namespace { inline LegacyExtractorSpec LoadExtractorSpec(const wxString& name, wxConfigBase *cfg) { LegacyExtractorSpec info; info.Name = name; info.Enabled = cfg->ReadBool("Enabled", true); info.Extensions = cfg->Read("Extensions", wxEmptyString); info.Command = cfg->Read("Command", wxEmptyString); info.KeywordItem = cfg->Read("KeywordItem", wxEmptyString); info.FileItem = cfg->Read("FileItem", wxEmptyString); info.CharsetItem = cfg->Read("CharsetItem", wxEmptyString); return info; } template inline void DoReadLegacyExtractors(wxConfigBase *cfg, F&& action) { cfg->SetExpandEnvVars(false); wxString list = cfg->Read("/Parsers/CustomExtractorsList", ""); if (list.empty()) list = cfg->Read("/Parsers/List", ""); wxString oldpath = cfg->GetPath(); wxStringTokenizer tkn(list, ";"); while (tkn.HasMoreTokens()) { wxString name = tkn.GetNextToken(); wxString key = name; key.Replace("/", "_"); cfg->SetPath("/Parsers/" + key); action(cfg, name); } cfg->SetPath(oldpath); } } // anonymous namespace void LegacyExtractorsDB::Read(wxConfigBase *cfg) { Data.clear(); DoReadLegacyExtractors(cfg, [=](wxConfigBase *c, wxString name) { if (!c->ReadBool("DontUseIn20", false)) Data.push_back(LoadExtractorSpec(name, c)); }); } void LegacyExtractorsDB::Write(wxConfigBase *cfg) { #if 0 // asserts on wxGTK, some bug in wx if (cfg->HasGroup("/Parsers")) cfg->DeleteGroup("/Parsers"); #endif cfg->SetExpandEnvVars(false); size_t i; wxString list; if (!Data.empty()) { list << Data[0].Name; for (i = 1; i < Data.size(); i++) list << ";" << Data[i].Name; } cfg->Write("/Parsers/CustomExtractorsList", list); wxString oldpath = cfg->GetPath(); wxString key; for (const auto& item: Data) { key = item.Name; key.Replace("/", "_"); cfg->SetPath("/Parsers/" + key); cfg->Write("Enabled", item.Enabled); cfg->Write("Extensions", item.Extensions); cfg->Write("Command", item.Command); cfg->Write("KeywordItem", item.KeywordItem); cfg->Write("FileItem", item.FileItem); cfg->Write("CharsetItem", item.CharsetItem); cfg->SetPath(oldpath); } } void LegacyExtractorsDB::RemoveObsoleteExtractors(wxConfigBase *cfg) { // only run the migration once if (cfg->ReadBool("/Parsers/MigratedTo20", false)) return; // Legacy extractor definitions. Now replaced with GettextExtractor. static struct { char enableByDefault; const char *name; const char *exts; } s_gettextLangs[] = { { 1, "C/C++", "*.c;*.cpp;*.cc;*.C;*.c++;*.cxx;*.h;*.hpp;*.hxx;*.hh" }, { 1, "C#", "*.cs" }, { 1, "EmacsLisp", "*.el" }, { 1, "GSettings", "*.gschema.xml" }, { 1, "Glade", "*.glade;*.glade2;*.ui" }, { 1, "AppData", "*.appdata.xml" }, { 1, "Java", "*.java" }, { 1, "JavaScript", "*.js" }, { 1, "Lisp", "*.lisp" }, { 1, "Lua", "*.lua" }, { 1, "ObjectiveC", "*.m" }, { 1, "PHP", "*.php;*.php3;*.php4;*.phtml" }, { 1, "Perl", "*.pl;*.PL;*.pm;*.perl" }, { 1, "Python", "*.py" }, { 0, "RST", "*.rst" }, { 1, "Scheme", "*.scm" }, { 0, "Shell", "*.sh;*.bash" }, { 1, "Smalltalk", "*.st" }, { 1, "TCL", "*.tcl" }, { 1, "Vala", "*.vala" }, { 1, "YCP", "*.ycp" }, { 1, "awk", "*.awk" }, { 1, "librep", "*.jl" }, { 0, NULL, NULL } }; DoReadLegacyExtractors(cfg, [=](wxConfigBase *c, wxString name) { // check if it is a known default extractor; if not, keep it for (size_t i = 0; s_gettextLangs[i].name != NULL; i++) { if (name == s_gettextLangs[i].name) { // build previously used default extractor definition: wxString langflag; if ( wxStrcmp(s_gettextLangs[i].name, "C/C++") == 0 ) langflag = " --language=C++"; else langflag = wxString(" --language=") + s_gettextLangs[i].name; LegacyExtractorSpec ex; ex.Name = s_gettextLangs[i].name; ex.Enabled = (bool)s_gettextLangs[i].enableByDefault; ex.Extensions = s_gettextLangs[i].exts; ex.Command = wxString("xgettext") + langflag + " --add-comments=TRANSLATORS: --force-po -o %o %C %K %F"; ex.KeywordItem = "-k%k"; ex.FileItem = "%f"; ex.CharsetItem = "--from-code=%c"; // load what is stored in the settings: LegacyExtractorSpec loaded = LoadExtractorSpec(name, c); loaded.Enabled = ex.Enabled; if (loaded != ex) { // this bad, but mostly harmless, config was used for ~2 years, so check for it too ex.Command.Replace(" --add-comments=TRANSLATORS: ", " --add-comments=TRANSLATORS: --add-comments=translators: "); } if (loaded == ex) { // mark the extractor as not to be used, but keep it around // to make it possible to downgrade to Poedit 1.8: c->Write("DontUseIn20", true); } // else: keep customized extractor break; } } }); cfg->Write("/Parsers/MigratedTo20", true); } wxString LegacyExtractorSpec::BuildCommand(const std::vector& files, const wxArrayString& keywords, const wxString& output, const wxString& charset) const { using subprocess::quote_arg; wxString cmdline, kline, fline; cmdline = Command; cmdline.Replace("%o", quote_arg(output)); for (auto&kw: keywords) { wxString dummy = KeywordItem; dummy.Replace("%k", kw); kline << " " << dummy; } for (auto fn: files) { #ifdef __WXMSW__ // Gettext tools can't handle Unicode filenames well (due to using // char* arguments), so work around this by using the short names. if (!fn.IsAscii()) { fn = CliSafeFileName(fn); fn.Replace("\\", "/"); } #endif wxString dummy = FileItem; dummy.Replace("%f", quote_arg(fn)); fline << " " << dummy; } wxString charsetline; if (!charset.empty()) { charsetline = CharsetItem; charsetline.Replace("%c", charset); } cmdline.Replace("%C", charsetline); cmdline.Replace("%K", kline); cmdline.Replace("%F", fline); return cmdline; } LegacyExtractor::LegacyExtractor(const LegacyExtractorSpec& spec) : m_spec(spec) { // User-defined "legacy" extractors take precedence over standard extractors // to allow customization of the behavior: SetPriority(Priority::High); m_id = "legacy_"; for (auto c: spec.Name) { if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) m_id << c; else m_id << '_'; } wxStringTokenizer tkn(spec.Extensions, ";, \t", wxTOKEN_STRTOK); while (tkn.HasMoreTokens()) { RegisterWildcard(tkn.GetNextToken()); } } ExtractionOutput LegacyExtractor::Extract(TempDirectory& tmpdir, const SourceCodeSpec& sourceSpec, const std::vector& files) const { // cmdline's length is limited by OS/shell, this is maximal number // of files we'll pass to the parser at one run: const int BATCH_SIZE = 16; std::vector partials; size_t i, last = 0; while (last < files.size()) { std::vector batchfiles; for (i = last; i < last + BATCH_SIZE && i < files.size(); i++) batchfiles.push_back(files[i]); last = i; wxString tempfile = tmpdir.CreateFileName(GetId() + "_extracted.pot"); GettextRunner runner; runner.set_cwd(sourceSpec.BasePath); auto cmdline = m_spec.BuildCommand(batchfiles, sourceSpec.Keywords, tempfile, sourceSpec.Charset); auto output = runner.run_command_sync(cmdline); auto err = runner.parse_stderr(output); if (output.failed()) { err.log_all(); BOOST_THROW_EXCEPTION(ExtractionException(ExtractionError::Unspecified)); } partials.push_back({tempfile, err}); } return ConcatPartials(tmpdir, partials); } void Extractor::CreateAllLegacyExtractors(Extractor::ExtractorsList& into, const SourceCodeSpec& /*sources*/) { // Extractors must be created anew to pick up any changes in definitions // FIXME: Make this MT-safe LegacyExtractorsDB db; db.Read(wxConfig::Get()); for (auto& ex: db.Data) { if (ex.Enabled) into.push_back(std::make_shared(ex)); } } poedit-3.6.3/src/extractors/extractor_gettext.cpp0000644000175100001660000001716015011674230015745 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2017-2025 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 "extractor.h" #include "gexecute.h" #include namespace { // This list is synced with EXTENSIONS_* macros in deps/gettext/gettext-tools/src/x-*.h files: const char * const GETTEXT_EXTENSIONS[] = { "appdata.xml", // appdata - ITS "awk", "gawk", "twjr", // awk "c", "h", // C "C", "c++", "cc", "cxx", "cpp", "hh", "hxx", "hpp", // C++ "m", // ObjectiveC // FIXME: handling of .h files as C++? (req. separate pass) // FIXME: .mm files for Objective-C++ (add gettext-tools support first) "cs", // C# "desktop", // Desktop "el", // EmacsLisp "glade", "glade2", "ui", // glade - ITS "gschema.xml", // GSettings - ITS "java", // Java "js", // JavaScript "jl", // librep "lisp", // Lisp "lua", // Lua "pl", "PL", "pm", "perl", /*"cgi" - too generic,*/ // perl "php", "php3", "php4", // PHP "py", // Python // "rst", // RST // NOTE: conflicts with restructured text, dangerous "scm", // Scheme // "sh", "bash", // Shell // NOTE: disabled in Poedit, rarely if ever used "st", // Smalltalk "tcl", // Tcl "vala", // Vala "ycp", // YCP nullptr }; } // anonymous namespace /// Extractor implementation for standard GNU gettext class GettextExtractorBase : public Extractor { public: ExtractionOutput Extract(TempDirectory& tmpdir, const SourceCodeSpec& sourceSpec, const std::vector& files) const override { using subprocess::quote_arg; auto basepath = sourceSpec.BasePath; #ifdef __WXMSW__ basepath = CliSafeFileName(basepath); basepath.Replace("\\", "/"); #endif wxTextFile filelist; filelist.Create(tmpdir.CreateFileName("gettext_filelist.txt")); for (auto fn: files) { #ifdef __WXMSW__ // Gettext tools can't handle Unicode filenames well (due to using // char* arguments), so work around this by using the short names. if (!fn.IsAscii()) { fn = CliSafeFileName(fn); fn.Replace("\\", "/"); } #endif filelist.AddLine(fn); } filelist.Write(wxTextFileType_Unix, wxConvFile); auto outfile = tmpdir.CreateFileName("gettext.pot"); wxString cmdline; cmdline.Printf ( "xgettext --force-po -o %s --directory=%s --files-from=%s --from-code=%s", quote_arg(outfile), quote_arg(basepath), quote_arg(filelist.GetName()), quote_arg(!sourceSpec.Charset.empty() ? sourceSpec.Charset : "UTF-8") ); auto additional = GetAdditionalFlags(); if (!additional.empty()) cmdline += " " + additional; for (auto& kw: sourceSpec.Keywords) { cmdline += wxString::Format(" -k%s", quote_arg(kw)); } wxString extraFlags; try { extraFlags = sourceSpec.XHeaders.at("X-Poedit-Flags-xgettext"); } catch (std::out_of_range&) {} if (!extraFlags.Contains("--add-comments")) cmdline += " --add-comments=TRANSLATORS:"; if (!extraFlags.empty()) cmdline += " " + extraFlags; GettextRunner runner; auto output = runner.run_command_sync(cmdline); auto err = runner.parse_stderr(output); if (output.failed()) { err.log_all(); BOOST_THROW_EXCEPTION(ExtractionException(ExtractionError::Unspecified)); } return {outfile, err}; } protected: virtual wxString GetAdditionalFlags() const = 0; }; /// Extractor implementation for standard GNU gettext class GettextExtractor : public GettextExtractorBase { public: GettextExtractor() { for (const char * const *e = GETTEXT_EXTENSIONS; *e != nullptr; e++) RegisterExtension(*e); } wxString GetId() const override { return "gettext"; } protected: wxString GetAdditionalFlags() const override { return ""; } }; /// Dedicated extractor for non-standard PHP extensions (*.phtml etc.) class CustomGettextExtractor : public GettextExtractorBase { public: CustomGettextExtractor(const wxString& language) : m_language(language) {} wxString GetId() const override { return "gettext-" + m_language; } protected: wxString GetAdditionalFlags() const override { return "-L " + m_language; } wxString m_language; }; /// Dedicated extractor for non-standard PHP extensions (*.phtml etc.) class NonstandardPHPGettextExtractor : public CustomGettextExtractor { public: NonstandardPHPGettextExtractor() : CustomGettextExtractor("php") { RegisterExtension("phtml"); // Zend Framework RegisterExtension("ctp"); // CakePHP } }; void Extractor::CreateGettextExtractors(Extractor::ExtractorsList& into, const SourceCodeSpec& sources) { into.push_back(std::make_shared()); into.push_back(std::make_shared()); for (auto& m : sources.TypeMapping) { if (m.second.starts_with("gettext:")) // e.g. gettext:php { auto e = std::make_shared(m.second.AfterFirst(':')); if (wxIsWild(m.first)) e->RegisterWildcard(m.first); else e->RegisterExtension(m.first); e->SetPriority(Priority::CustomExtension); into.push_back(e); } } } poedit-3.6.3/src/extractors/extractor.h0000644000175100001660000001374415011674230013652 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2017-2025 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_extractor_h #define Poedit_extractor_h #include #include #include #include #include #include #include "gexecute.h" #include "utility.h" /// Specification of the source code to search. struct SourceCodeSpec { wxString BasePath; wxArrayString SearchPaths; wxArrayString ExcludedPaths; wxArrayString Keywords; wxString Charset; std::vector> TypeMapping; // additional keys from the headers std::map XHeaders; }; enum class ExtractionError { Unspecified, NoSourcesFound, PermissionDenied }; class ExtractionException : public std::runtime_error { public: ExtractionException(ExtractionError error_, const wxString& file_ = wxString()) : std::runtime_error("extraction error"), error(error_), file(file_) {} ExtractionError error; wxString file; }; /// Complete result of running an extraction task. struct ExtractionOutput { /// POT file containing extracted strings. wxString pot_file; /// Errors/warnings that occurred during extraction. ParsedGettextErrors errors; explicit operator bool() const { return !pot_file.empty(); } }; /** Base class for extractors -- implementations of extracting translations from source code. */ class Extractor { public: typedef std::vector> ExtractorsList; typedef std::vector FilesList; // Static helper methods: /** Returns all available extractor implementations. Extractors are listed in their priority and should be used in this order, i.e. subsequent extractors should only be used to process files not yet handled by previous extractors. */ static ExtractorsList CreateAllExtractors(const SourceCodeSpec& sources); /** Collects all files from source code, possibly including files that don't contain translations. The returned list is guaranteed to be sorted by operator< May throw ExtractionException. */ static FilesList CollectAllFiles(const SourceCodeSpec& sources); /** Extracts translations from given source files using all available extractors. */ static ExtractionOutput ExtractWithAll(TempDirectory& tmpdir, const SourceCodeSpec& sourceSpec, const std::vector& files); // Extractor helpers: /// Returns only those files from @a files that are supported by this extractor. FilesList FilterFiles(const FilesList& files) const; // Extractor API for derived classes: /// Returns extractor's symbolic name virtual wxString GetId() const = 0; /// Priority value for GetPriority() enum class Priority { Highest = 1, CustomExtension = 2, // customization should be highest High = 10, DefaultSpecializedExtension = 95, // for use with e.g. .blade.php extentions Default = 100 }; /// Returns priority of the extractor Priority GetPriority() const { return m_priority; } /// Sets extractor's priority void SetPriority(Priority p) { m_priority = p; } /** Returns whether the file is recognized. Default implementation uses extension and wildcard matching, see RegisterExtension() and RegisterWildcard(). */ virtual bool IsFileSupported(const wxString& file) const; /// Add a known extension or wildcard to be used by default IsFileSupported /// (called from ctors) void RegisterExtension(const wxString& ext); void RegisterWildcard(const wxString& wildcard); /** Extracts translations from given source files using all available extractors. */ virtual ExtractionOutput Extract(TempDirectory& tmpdir, const SourceCodeSpec& sourceSpec, const std::vector& files) const = 0; protected: Extractor() : m_priority(Priority::Default) {} virtual ~Extractor() {} /// Check if file is supported based on its extension bool HasKnownExtension(const wxString& file) const; /// Concatenates partial outputs using msgcat static ExtractionOutput ConcatPartials(TempDirectory& tmpdir, const std::vector& partials); private: Priority m_priority; std::set m_extensions; std::vector m_wildcards; protected: // private factories: static void CreateAllLegacyExtractors(ExtractorsList& into, const SourceCodeSpec& sources); static void CreateGettextExtractors(ExtractorsList& into, const SourceCodeSpec& sources); }; #endif // Poedit_extractor_h poedit-3.6.3/src/extractors/extractor.cpp0000644000175100001660000002533415011674230014203 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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 "extractor.h" #include "extractor_legacy.h" #include "gexecute.h" #include #include #include #include namespace { // Path matching with support for wildcards struct PathToMatch { wxString path; bool isWildcard; bool MatchesFile(const wxString& fn) const { if (isWildcard) return wxMatchWild(path, fn); else return fn == path || fn.starts_with(path + "/"); } }; class PathsToMatch { public: PathsToMatch() {} explicit PathsToMatch(const wxArrayString& a) { paths.reserve(a.size()); for (auto& p: a) paths.push_back({p, wxIsWild(p)}); } bool MatchesFile(const wxString& fn) const { for (auto& p: paths) { if (p.MatchesFile(fn)) return true; } return false; } private: std::vector paths; }; inline void CheckReadPermissions(const wxString& basepath, const wxString& path) { if (!wxIsReadable(basepath + path)) { BOOST_THROW_EXCEPTION(ExtractionException(ExtractionError::PermissionDenied)); } } inline bool IsVCSDir(const wxString& d) { return d == ".git" || d == ".svn" || d == ".hg" || d == ".bzr" || d == "CVS"; } int FindInDir(const wxString& basepath, const wxString& dirname, const PathsToMatch& excludedPaths, Extractor::FilesList& output) { if (dirname.empty()) return 0; wxDir dir(basepath + dirname); CheckReadPermissions(basepath, dirname); if (!dir.IsOpened()) return 0; bool cont; wxString iter; int found = 0; cont = dir.GetFirst(&iter, wxEmptyString, wxDIR_FILES); while (cont) { const wxString filename = iter; const wxString fullpath = (dirname == ".") ? filename : dirname + "/" + filename; cont = dir.GetNext(&iter); if (excludedPaths.MatchesFile(fullpath)) continue; // Normally, a file enumerated by wxDir exists, but in one special case, it may // not: if it is a broken symlink. FileExists() follows the symlink to check. if (!wxFileName::FileExists(basepath + fullpath)) continue; CheckReadPermissions(basepath, fullpath); wxLogTrace("poedit.extractor", " - %s", fullpath); output.push_back(fullpath); found++; } cont = dir.GetFirst(&iter, wxEmptyString, wxDIR_DIRS); while (cont) { const wxString filename = iter; const wxString fullpath = (dirname == ".") ? filename : dirname + "/" + filename; cont = dir.GetNext(&iter); if (IsVCSDir(filename)) continue; if (excludedPaths.MatchesFile(fullpath)) continue; CheckReadPermissions(basepath, fullpath); found += FindInDir(basepath, fullpath, excludedPaths, output); } return found; } } // anonymous namespace Extractor::FilesList Extractor::CollectAllFiles(const SourceCodeSpec& sources) { // TODO: Only collect files with recognized extensions wxLogTrace("poedit.extractor", "collecting files:"); const auto basepath = sources.BasePath; const auto excludedPaths = PathsToMatch(sources.ExcludedPaths); FilesList output; for (auto& path: sources.SearchPaths) { if (wxFileName::FileExists(basepath + path)) { if (excludedPaths.MatchesFile(path)) { wxLogTrace("poedit.extractor", "no files found in '%s'", path); continue; } CheckReadPermissions(basepath, path); wxLogTrace("poedit.extractor", " - %s", path); output.push_back(path); } else if (wxFileName::DirExists(basepath + path)) { if (!FindInDir(basepath, path, excludedPaths, output)) { wxLogTrace("poedit.extractor", "no files found in '%s'", path); } } else { BOOST_THROW_EXCEPTION(ExtractionException(ExtractionError::NoSourcesFound, path)); } } // Sort the filenames in some well-defined order. This is because directory // traversal has, generally speaking, undefined order, and the order differs // between filesystems. Finally, the order is reflected in the created PO // files and it is much better for diffs if it remains consistent. std::sort(output.begin(), output.end()); wxLogTrace("poedit.extractor", "finished collecting %d files", (int)output.size()); return output; } ExtractionOutput Extractor::ExtractWithAll(TempDirectory& tmpdir, const SourceCodeSpec& sourceSpec, const std::vector& files_) { auto files = files_; wxLogTrace("poedit.extractor", "extracting from %d files", (int)files.size()); std::vector partials; for (auto ex: CreateAllExtractors(sourceSpec)) { const auto ex_files = ex->FilterFiles(files); if (ex_files.empty()) continue; wxLogTrace("poedit.extractor", " .. using extractor '%s' for %d files", ex->GetId(), (int)ex_files.size()); auto sub = ex->Extract(tmpdir, sourceSpec, ex_files); if (sub) partials.push_back(sub); if (files.size() > ex_files.size()) { FilesList remaining; remaining.reserve(files.size() - ex_files.size()); // Note that this only works because the lists are sorted: std::set_difference(files.begin(), files.end(), ex_files.begin(), ex_files.end(), std::inserter(remaining, remaining.begin())); std::swap(files, remaining); } else { files.clear(); break; // no more work to do } } wxLogTrace("poedit.extractor", "extraction finished with %d unrecognized files and %d sub-POTs", (int)files.size(), (int)partials.size()); if (partials.empty()) { BOOST_THROW_EXCEPTION(ExtractionException(ExtractionError::NoSourcesFound)); } else if (partials.size() == 1) { return partials.front(); } else { wxLogTrace("poedit.extractor", "merging %d subPOTs", (int)partials.size()); return ConcatPartials(tmpdir, partials); } } Extractor::FilesList Extractor::FilterFiles(const FilesList& files) const { FilesList out; for (auto& f: files) { if (IsFileSupported(f)) out.push_back(f); } return out; } bool Extractor::IsFileSupported(const wxString& file) const { #ifdef __WXMSW__ auto f = file.Lower(); #else auto& f = file; #endif auto ext = f.AfterLast('.'); if (ext != f && m_extensions.find(ext) != m_extensions.end()) return true; for (auto& w: m_wildcards) { if (f.Matches(w)) return true; } return false; } void Extractor::RegisterExtension(const wxString& ext) { if (ext.Contains(".")) { RegisterWildcard("*." + ext); return; } #ifdef __WXMSW__ m_extensions.insert(ext.Lower()); #else m_extensions.insert(ext); #endif wxLogTrace("poedit.extractor", "%s handles extension %s", GetId(), ext); } void Extractor::RegisterWildcard(const wxString& wildcard) { #ifdef __WXMSW__ m_wildcards.push_back(wildcard.Lower()); #else m_wildcards.push_back(wildcard); #endif wxLogTrace("poedit.extractor", "%s handles %s", GetId(), wildcard); } ExtractionOutput Extractor::ConcatPartials(TempDirectory& tmpdir, const std::vector& partials) { if (partials.empty()) { return {}; } else if (partials.size() == 1) { return partials.front(); } ExtractionOutput result; result.pot_file = tmpdir.CreateFileName("concatenated.pot"); wxTextFile filelist; filelist.Create(tmpdir.CreateFileName("gettext_filelist.txt")); for (auto& p: partials) { auto fn = p.pot_file; #ifdef __WXMSW__ // Gettext tools can't handle Unicode filenames well (due to using // char* arguments), so work around this by using the short names. if (!fn.IsAscii()) { fn = CliSafeFileName(fn); fn.Replace("\\", "/"); } #endif filelist.AddLine(fn); result.errors += p.errors; } filelist.Write(wxTextFileType_Unix, wxConvFile); GettextRunner gt; auto output = gt.run_sync("msgcat", "--force-po", // avoid corrupted content of duplicate "" headers // FIXME: merge headers intelligently, e.g. pick latest POT-Creation-Date "--use-first", "-o", result.pot_file, "--files-from", filelist.GetName()); if (output.failed()) { wxLogError("msgcat: %s", output.std_err); wxLogError(_("Failed to merge gettext catalogs.")); BOOST_THROW_EXCEPTION(ExtractionException(ExtractionError::Unspecified)); } return result; } Extractor::ExtractorsList Extractor::CreateAllExtractors(const SourceCodeSpec& sources) { ExtractorsList all; // User-defined "legacy" extractors customizing the behavior: CreateAllLegacyExtractors(all, sources); // Standard builtin extractors follow CreateGettextExtractors(all, sources); std::stable_sort(all.begin(), all.end(), [](const auto& a, const auto& b) { return a->GetPriority() < b->GetPriority(); }); return all; } poedit-3.6.3/src/sidebar.cpp0000644000175100001660000010147215011674230011401 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2025 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 "sidebar.h" #include "catalog.h" #include "customcontrols.h" #include "colorscheme.h" #include "commentdlg.h" #include "concurrency.h" #include "configuration.h" #include "errors.h" #include "hidpi.h" #include "static_ids.h" #include "utility.h" #include "unicode_helpers.h" #include "tm/suggestions.h" #include "tm/transmem.h" #include #include #include #include #include #include #include #include #include #include #include class SidebarSeparator : public wxWindow { public: SidebarSeparator(wxWindow *parent) : wxWindow(parent, wxID_ANY) { Bind(wxEVT_PAINT, &SidebarSeparator::OnPaint, this); } wxSize DoGetBestSize() const override { return wxSize(-1, PX(1)); } bool AcceptsFocus() const override { return false; } private: void OnPaint(wxPaintEvent&) { wxPaintDC dc(this); auto clr = ColorScheme::Get(Color::SidebarBlockSeparator); dc.SetBrush(clr); dc.SetPen(clr); dc.DrawRectangle(PX(2), 0, dc.GetSize().x - PX(4), PX(1) + 1); } }; SidebarBlock::SidebarBlock(Sidebar *parent, const wxString& label, int flags) { m_parent = parent; m_sizer = new wxBoxSizer(wxVERTICAL); if (!(flags & NoUpperMargin)) m_sizer->AddSpacer(PX(15)); if (!label.empty()) { if (!(flags & NoUpperMargin)) { m_sizer->Add(new SidebarSeparator(parent), wxSizerFlags().Expand().Border(wxBOTTOM|wxLEFT|wxRIGHT, PX(5))); } m_headerSizer = new wxBoxSizer(wxHORIZONTAL); m_headerSizer->Add(new HeadingLabel(parent, label), wxSizerFlags().Center()); m_sizer->Add(m_headerSizer, wxSizerFlags().Expand().Border(wxLEFT|wxRIGHT, SIDEBAR_PADDING)); } m_innerSizer = new wxBoxSizer(wxVERTICAL); auto innerFlags = wxSizerFlags(1).Expand(); if (!(flags & NoSideMargins)) innerFlags.Border(wxLEFT|wxRIGHT, SIDEBAR_PADDING); m_sizer->Add(m_innerSizer, innerFlags); } void SidebarBlock::Show(bool show) { m_sizer->ShowItems(show); } void SidebarBlock::SetItem(const CatalogItemPtr& item) { if (!item) { Show(false); return; } bool use = ShouldShowForItem(item); if (use) Update(item); Show(use); } class OldMsgidSidebarBlock : public SidebarBlock { public: OldMsgidSidebarBlock(Sidebar *parent) /// TRANSLATORS: "Previous" as in used in the past, now replaced with newer. : SidebarBlock(parent, _("Previous source text")) { m_innerSizer->AddSpacer(PX(2)); m_innerSizer->Add(new ExplanationLabel(parent, _("The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.")), wxSizerFlags().Expand()); m_innerSizer->AddSpacer(PX(5)); m_text = new SelectableAutoWrappingText(parent, WinID::PreviousSourceText, ""); m_innerSizer->Add(m_text, wxSizerFlags().Expand()); } bool ShouldShowForItem(const CatalogItemPtr& item) const override { return item->HasOldMsgid(); } void Update(const CatalogItemPtr& item) override { m_text->SetAndWrapLabel(item->GetOldMsgid()); } private: SelectableAutoWrappingText *m_text; }; class ExtractedCommentSidebarBlock : public SidebarBlock { public: ExtractedCommentSidebarBlock(Sidebar *parent) : SidebarBlock(parent, _("Notes for translators")) { m_innerSizer->AddSpacer(PX(5)); m_comment = new SelectableAutoWrappingText(parent, WinID::NotesForTranslator, ""); m_innerSizer->Add(m_comment, wxSizerFlags().Expand()); } bool ShouldShowForItem(const CatalogItemPtr& item) const override { return item->HasExtractedComments(); } void Update(const CatalogItemPtr& item) override { auto comment = wxJoin(item->GetExtractedComments(), '\n', '\0'); if (comment.starts_with("TRANSLATORS:") || comment.starts_with("translators:")) { comment.Remove(0, 12); if (!comment.empty() && comment[0] == ' ') comment.Remove(0, 1); } m_comment->SetAndWrapLabel(comment); } private: SelectableAutoWrappingText *m_comment; }; class CommentSidebarBlock : public SidebarBlock { public: CommentSidebarBlock(Sidebar *parent) : SidebarBlock(parent, _("Comment")) { m_innerSizer->AddSpacer(PX(5)); m_comment = new SelectableAutoWrappingText(parent, WinID::TranslatorComment, ""); m_innerSizer->Add(m_comment, wxSizerFlags().Expand()); } bool ShouldShowForItem(const CatalogItemPtr& item) const override { return item->HasComment(); } void Update(const CatalogItemPtr& item) override { auto text = CommentDialog::RemoveStartHash(item->GetComment()); text.Trim(); m_comment->SetAndWrapLabel(text); } private: SelectableAutoWrappingText *m_comment; }; class AddCommentSidebarBlock : public SidebarBlock { public: AddCommentSidebarBlock(Sidebar *parent) : SidebarBlock(parent, "") { #ifdef __WXMSW__ auto label = _("Add comment"); #else auto label = _("Add Comment"); #endif m_btn = new wxButton(parent, XRCID("menu_comment"), _("Add Comment")); m_innerSizer->AddStretchSpacer(); m_innerSizer->Add(m_btn, wxSizerFlags().Right()); } bool IsGrowable() const override { return true; } bool ShouldShowForItem(const CatalogItemPtr&) const override { return m_parent->FileHasCapability(Catalog::Cap::UserComments); } void Update(const CatalogItemPtr& item) override { #ifdef __WXMSW__ auto add = _("Add comment"); auto edit = _("Edit comment"); #else auto add = _("Add Comment"); auto edit = _("Edit Comment"); #endif m_btn->SetLabel(item->HasComment() ? edit : add); } private: wxButton *m_btn; }; wxDEFINE_EVENT(EVT_SUGGESTION_SELECTED, wxCommandEvent); class SuggestionWidget : public wxWindow { public: SuggestionWidget(Sidebar *sidebar, wxWindow *parent, SuggestionsSidebarBlock *block, bool isFirst) : wxWindow(parent, wxID_ANY) { m_sidebar = sidebar; m_parentBlock = block; m_isHighlighted = false; m_icon = new StaticBitmap(this, "SuggestionTMTemplate"); m_text = new AutoWrappingText(this, wxID_ANY, "TEXT"); m_info = new InfoStaticText(this); m_moreActions = new ImageButton(this, "DownvoteTemplate"); m_isPerfect = isFirst ? new wxStaticBitmap(this, wxID_ANY, wxArtProvider::GetBitmap("SuggestionPerfectMatch")) : nullptr; // Calculate the correct DPI-dependent offset of m_icon vs m_text - we want the icon centered // on the first line of text. const int textPadding = PX(6); #if defined(__WXOSX__) const int iconPadding = PX(7); #elif defined(__WXMSW__) int iconPadding = 0; const auto hidpiFactor = HiDPIScalingFactor(); if (hidpiFactor < 1.25) iconPadding = PX(7); else if (hidpiFactor < 1.5) iconPadding = PX(9)+1; else if (hidpiFactor < 1.75) iconPadding = PX(8)+1; else if (hidpiFactor < 2.0) iconPadding = PX(10); else iconPadding = PX(8)+1; #else const int iconPadding = PX(7); #endif auto top = new wxBoxSizer(wxHORIZONTAL); auto right = new wxBoxSizer(wxVERTICAL); top->AddSpacer(PX(6)); top->Add(m_icon, wxSizerFlags().Top().Border(wxTOP, iconPadding)); top->Add(right, wxSizerFlags(1).Expand().Border(wxLEFT, PX(8))); right->Add(m_text, wxSizerFlags().Expand().Border(wxTOP, textPadding)); auto infoSizer = new wxBoxSizer(wxHORIZONTAL); infoSizer->Add(m_info, wxSizerFlags().Center()); if (m_isPerfect) infoSizer->Add(m_isPerfect, wxSizerFlags().Center().Border(wxLEFT, PX(2))); right->Add(infoSizer, wxSizerFlags().Expand().Border(wxTOP|wxBOTTOM, PX(2))); infoSizer->AddStretchSpacer(); infoSizer->Add(m_moreActions, wxSizerFlags().ReserveSpaceEvenIfHidden().CenterVertical().Border(wxRIGHT, MSW_OR_OTHER(PX(4), PX(2)))); m_moreActions->Hide(); SetSizerAndFit(top); ColorScheme::SetupWindowColors(this, [=] { // setup mouse hover highlighting: auto bg = parent->GetBackgroundColour(); SetBackgroundColour(bg); #ifndef __WXOSX__ m_bg = bg; m_bgHighlight = ColorScheme::GetWindowMode(parent) == ColorScheme::Dark ? m_bg.ChangeLightness(110) : m_bg.ChangeLightness(95); for (auto c: GetChildren()) c->SetBackgroundColour(m_isHighlighted ? m_bgHighlight : m_bg); #endif }); wxWindow* parts [] = { this, m_icon, m_text, m_info, m_moreActions }; for (auto w : parts) { w->Bind(wxEVT_MOTION, &SuggestionWidget::OnMouseMove, this); w->Bind(wxEVT_LEAVE_WINDOW, &SuggestionWidget::OnMouseMove, this); if (w != m_moreActions) w->Bind(wxEVT_LEFT_UP, &SuggestionWidget::OnMouseClick, this); w->Bind(wxEVT_CONTEXT_MENU, &SuggestionWidget::OnMoreActions, this); } m_moreActions->Bind(wxEVT_BUTTON, &SuggestionWidget::OnMoreActions, this); Bind(wxEVT_PAINT, &SuggestionWidget::OnPaint, this); } void SetValue(int index, const Suggestion& s, Language lang, const wxString& icon, const wxString& tooltip) { m_value = s; int percent = int(100 * s.score); auto percentStr = wxString::Format("%d%%", percent); index++; if (index < 10) { #ifdef __WXOSX__ auto shortcut = wxString::Format(L"⌘%d", index); #else // TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently auto shortcut = wxString::Format("%s%d", wxGETTEXT_IN_CONTEXT("keyboard key", "Ctrl+"), index); #endif m_info->SetLabel(wxString::Format(L"%s • %s", shortcut, percentStr)); } else { m_info->SetLabel(percentStr); } m_icon->SetBitmapName(icon); if (m_isPerfect) m_isPerfect->GetContainingSizer()->Show(m_isPerfect, percent == 100); auto text = bidi::mark_direction(s.text, lang); m_text->SetLanguage(lang); m_text->SetAndWrapLabel(text); #ifndef __WXOSX__ // FIXME: Causes weird issues on macOS: tooltips appearing on the main list control, // over toolbar, where the mouse just was etc. m_icon->SetToolTip(tooltip); m_text->SetToolTip(tooltip); #endif (void)tooltip; #ifndef __WXOSX__ SetBackgroundColour(m_bg); #endif Layout(); InvalidateBestSize(); SetMinSize(wxDefaultSize); SetMinSize(GetBestSize()); } bool AcceptsFocus() const override { return false; } private: class InfoStaticText : public wxStaticText { public: InfoStaticText(wxWindow *parent) : wxStaticText(parent, wxID_ANY, "100%") { #ifdef __WXMSW__ SetFont(SmallerFont(GetFont())); #else SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif ColorScheme::SetupWindowColors(this, [=] { SetForegroundColour(ExplanationLabel::GetTextColor()); }); } void DoEnable(bool) override {} // wxOSX's disabling would break color }; void OnPaint(wxPaintEvent&) { wxPaintDC dc(this); if (m_isHighlighted) { #ifdef __WXOSX__ auto winbg = GetBackgroundColour(); NSColor *bg = winbg.OSXGetNSColor(); NSColor *osHighlight = [bg colorWithSystemEffect:NSColorSystemEffectRollover]; // use only lighter version of the highlight by blending with the background auto highlight = wxColour([bg blendedColorWithFraction:0.2 ofColor:osHighlight]); #else auto highlight = m_bgHighlight; #endif std::unique_ptr gc(wxGraphicsContext::Create(dc)); gc->SetBrush(highlight); gc->SetPen(*wxTRANSPARENT_PEN); auto rect = GetClientRect(); if (!rect.IsEmpty()) { #if defined(__WXOSX__) gc->DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, PX(5)); #else gc->DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, PX(2)); #endif } } } void OnMouseMove(wxMouseEvent& e) { auto rectWin = GetClientRect(); rectWin.Deflate(1); // work around off-by-one issue on macOS auto evtWin = static_cast(e.GetEventObject()); auto mpos = e.GetPosition(); if (evtWin != this) mpos += evtWin->GetPosition(); Highlight(rectWin.Contains(mpos)); } void OnMouseClick(wxMouseEvent&) { wxCommandEvent event(EVT_SUGGESTION_SELECTED); event.SetEventObject(this); event.SetString(m_value.text); ProcessWindowEvent(event); } void OnMoreActions(wxCommandEvent& e) { if (!ShouldShowActions()) { e.Skip(); return; } auto sidebar = m_sidebar; auto suggestion = m_value; static wxWindowIDRef idDelete = NewControlId(); wxMenu menu; #ifdef __WXOSX__ [menu.GetHMenu() setFont:[NSFont systemFontOfSize:13]]; #endif menu.Append(idDelete, MSW_OR_OTHER(_("Delete from translation memory"), _("Delete From Translation Memory"))); menu.Bind(wxEVT_MENU, [sidebar,suggestion](wxCommandEvent&) { SuggestionsProvider::Delete(suggestion); sidebar->RefreshContent(); }, idDelete); PopupMenu(&menu); } void Highlight(bool highlight) { m_isHighlighted = highlight; #ifndef __WXOSX__ for (auto c: GetChildren()) c->SetBackgroundColour(highlight ? m_bgHighlight : m_bg); #endif m_moreActions->Show(highlight && ShouldShowActions()); Refresh(); if (highlight) { for (auto widget: m_parentBlock->m_suggestionsWidgets) { if (widget != this) widget->Highlight(false); } } } bool ShouldShowActions() const { return m_isHighlighted && !m_value.id.empty(); } Sidebar *m_sidebar; SuggestionsSidebarBlock *m_parentBlock; Suggestion m_value; bool m_isHighlighted; StaticBitmap *m_icon; AutoWrappingText *m_text; wxStaticText *m_info; wxStaticBitmap *m_isPerfect; ImageButton *m_moreActions; #ifndef __WXOSX__ wxColour m_bg, m_bgHighlight; #endif }; SuggestionsSidebarBlock::SuggestionsSidebarBlock(Sidebar *parent, wxMenu *menu) : SidebarBlock(parent, // TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short _("Suggestions"), #if 0 _("Translation suggestions"), #endif NoUpperMargin | NoSideMargins), m_suggestionsMenu(menu), m_msgPresent(false), m_suggestionsSeparator(nullptr), m_pendingQueries(0), m_latestQueryId(0), m_lastUpdateTime(0) { m_provider.reset(new SuggestionsProvider); } void SuggestionsSidebarBlock::InitMainPanel() { m_suggestionsPanel = new wxPanel(m_parent, wxID_ANY); m_panelSizer = new wxBoxSizer(wxVERTICAL); m_suggestionsPanel->SetSizer(m_panelSizer); m_innerSizer->Add(m_suggestionsPanel, wxSizerFlags(1).Expand().Border(wxLEFT|wxRIGHT, SIDEBAR_PADDING)); } void SuggestionsSidebarBlock::InitControls() { InitMainPanel(); m_msgSizer = new wxBoxSizer(wxHORIZONTAL); m_msgIcon = new StaticBitmap(m_suggestionsPanel, wxString()); m_msgText = new ExplanationLabel(m_suggestionsPanel, ""); m_msgSizer->Add(m_msgIcon, wxSizerFlags().Center().PXBorderAll()); m_msgSizer->Add(m_msgText, wxSizerFlags(1).Center().PXBorder(wxTOP|wxBOTTOM)); m_panelSizer->Add(m_msgSizer, wxSizerFlags().Expand().Border(wxBOTTOM, PX(10))); m_suggestionsSizer = new wxBoxSizer(wxVERTICAL); m_extrasSizer = new wxBoxSizer(wxVERTICAL); m_panelSizer->Add(m_suggestionsSizer, wxSizerFlags().Expand()); m_panelSizer->Add(m_extrasSizer, wxSizerFlags().Expand()); m_iGotNothing = new wxStaticText(m_suggestionsPanel, wxID_ANY, #ifdef __WXMSW__ // TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). _("No matches found") #else // TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). _("No Matches Found") #endif ); m_iGotNothing->SetWindowVariant(wxWINDOW_VARIANT_NORMAL); #ifdef __WXMSW__ m_iGotNothing->SetFont(m_iGotNothing->GetFont().Larger()); #endif ColorScheme::SetupWindowColors(m_iGotNothing, [=] { m_suggestionsPanel->SetBackgroundColour(m_parent->GetBackgroundColour()); m_iGotNothing->SetForegroundColour(ExplanationLabel::GetTextColor().ChangeLightness(150)); }); m_panelSizer->Add(m_iGotNothing, wxSizerFlags().Center().Border(wxTOP|wxBOTTOM, PX(100))); BuildSuggestionsMenu(); m_suggestionsTimer.SetOwner(m_parent); m_parent->Bind(wxEVT_TIMER, &SuggestionsSidebarBlock::OnDelayedShowSuggestionsForItem, this, m_suggestionsTimer.GetId()); } SuggestionsSidebarBlock::~SuggestionsSidebarBlock() { if (m_suggestionsMenu) { ClearSuggestionsMenu(); for (auto i : m_suggestionsMenuItems) delete i; } // else: m_suggestionsMenuItems are already deleted } wxString SuggestionsSidebarBlock::GetIconForSuggestion(const Suggestion&) const { return "SuggestionTMTemplate"; } wxString SuggestionsSidebarBlock::GetTooltipForSuggestion(const Suggestion&) const { return _(L"This string was found in Poedit’s translation memory."); } void SuggestionsSidebarBlock::ClearMessage() { m_msgPresent = false; m_msgText->SetAndWrapLabel(""); UpdateVisibility(); m_suggestionsPanel->Layout(); m_panelSizer->Layout(); } void SuggestionsSidebarBlock::SetMessage(const wxString& icon, const wxString& text) { m_msgPresent = true; m_msgIcon->SetBitmapName(icon); m_msgText->SetAndWrapLabel(text); UpdateVisibility(); m_suggestionsPanel->Layout(); m_panelSizer->Layout(); } void SuggestionsSidebarBlock::ReportError(SuggestionsBackend*, dispatch::exception_ptr e) { SetMessage("SuggestionErrorTemplate", DescribeException(e)); } void SuggestionsSidebarBlock::ClearSuggestions() { m_suggestions.clear(); UpdateSuggestionsMenu(); UpdateVisibility(); } void SuggestionsSidebarBlock::UpdateSuggestions(const SuggestionsList& hits) { wxWindowUpdateLocker lock(m_suggestionsPanel); for (auto& h: hits) { // empty entries screw up menus (treated as stock items), don't use them: if (!h.text.empty()) m_suggestions.push_back(h); } std::stable_sort(m_suggestions.begin(), m_suggestions.end()); // create any necessary controls: while (m_suggestions.size() > m_suggestionsWidgets.size()) { auto w = new SuggestionWidget(m_parent, m_suggestionsPanel, this, /*isFirst=*/m_suggestionsWidgets.empty()); m_suggestionsSizer->Add(w, wxSizerFlags().Expand()); m_suggestionsWidgets.push_back(w); } m_panelSizer->Layout(); // update shown suggestions: if (m_suggestionsSeparator) { m_suggestionsSeparator->Hide(); m_suggestionsSizer->Detach(m_suggestionsSeparator); } auto lang = m_parent->GetCurrentLanguage(); int perfectMatches = 0; for (size_t i = 0; i < m_suggestions.size(); ++i) { auto s = m_suggestions[i]; m_suggestionsWidgets[i]->SetValue((int)i, s, lang, GetIconForSuggestion(s), GetTooltipForSuggestion(s)); if (s.IsExactMatch()) { perfectMatches++; } else { if (perfectMatches > 1) { if (!m_suggestionsSeparator) m_suggestionsSeparator = new SidebarSeparator(m_suggestionsPanel); m_suggestionsSeparator->Show(); m_suggestionsSizer->Insert(i, m_suggestionsSeparator, wxSizerFlags().Expand().Border(wxTOP|wxBOTTOM, MSW_OR_OTHER(PX(2), PX(4)))); } perfectMatches = 0; } } m_panelSizer->Layout(); UpdateVisibility(); m_suggestionsPanel->Layout(); UpdateSuggestionsMenu(); } void SuggestionsSidebarBlock::BuildSuggestionsMenu(int count) { m_suggestionsMenuItems.reserve(SUGGESTIONS_MENU_ENTRIES); auto menu = m_suggestionsMenu; if (!menu) return; for (int i = 0; i < count; i++) { auto text = wxString::Format("(empty)\t%s%d", wxGETTEXT_IN_CONTEXT("keyboard key", "Ctrl+"), i+1); auto item = new wxMenuItem(menu, wxID_ANY, text); item->SetBitmap(wxArtProvider::GetBitmap("SuggestionTMTemplate")); m_suggestionsMenuItems.push_back(item); menu->Append(item); m_suggestionsMenu->Bind(wxEVT_MENU, [this,i,menu](wxCommandEvent&){ if (i >= (int)m_suggestions.size()) return; wxCommandEvent event(EVT_SUGGESTION_SELECTED); event.SetEventObject(menu); event.SetString(m_suggestions[i].text); menu->GetWindow()->ProcessWindowEvent(event); }, item->GetId()); } } void SuggestionsSidebarBlock::UpdateSuggestionsMenu() { ClearSuggestionsMenu(); bool isRTL = m_parent->GetCurrentLanguage().IsRTL(); wxString formatMask; if (isRTL) formatMask = L"\u202b%s\u202c\t" + wxGETTEXT_IN_CONTEXT("keyboard key", "Ctrl+") + "%d"; else formatMask = L"\u202a%s\u202c\t" + wxGETTEXT_IN_CONTEXT("keyboard key", "Ctrl+") + "%d"; int index = 0; for (auto s: m_suggestions) { if (index >= SUGGESTIONS_MENU_ENTRIES) break; wxString text = s.text; text.Replace("\t", " "); text.Replace("\n", " "); if (text.length() > 100) text = text.substr(0, 100) + L"…"; auto item = m_suggestionsMenuItems[index]; m_suggestionsMenu->Append(item); auto label = wxControl::EscapeMnemonics(wxString::Format(formatMask, text, index+1)); item->SetItemLabel(label); item->SetBitmap(wxArtProvider::GetBitmap(GetIconForSuggestion(s))); index++; } } void SuggestionsSidebarBlock::ClearSuggestionsMenu() { auto m = m_suggestionsMenu; if (!m) return; auto menuItems = m->GetMenuItems(); for (auto i: menuItems) { if (std::find(m_suggestionsMenuItems.begin(), m_suggestionsMenuItems.end(), i) != m_suggestionsMenuItems.end()) m->Remove(i); } } void SuggestionsSidebarBlock::OnQueriesFinished() { if (m_suggestions.empty()) { m_panelSizer->Show(m_iGotNothing); m_suggestionsPanel->Layout(); } } void SuggestionsSidebarBlock::UpdateVisibility() { m_msgSizer->ShowItems(m_msgPresent); m_panelSizer->Show(m_iGotNothing, m_suggestions.empty() && !m_pendingQueries); int heightRemaining = m_panelSizer->GetSize().y; size_t w = 0; for (w = 0; w < m_suggestions.size(); w++) { heightRemaining -= m_suggestionsWidgets[w]->GetSize().y; // don't show suggestions that don't fit in the space, but always try to show at least 2 if (heightRemaining < 20 && w > 2) break; m_suggestionsSizer->Show(m_suggestionsWidgets[w]); } for (; w < m_suggestionsWidgets.size(); w++) m_suggestionsSizer->Hide(m_suggestionsWidgets[w]); } void SuggestionsSidebarBlock::Show(bool show) { SidebarBlock::Show(show); if (show) { UpdateVisibility(); } else { ClearSuggestionsMenu(); } } bool SuggestionsSidebarBlock::ShouldShowForItem(const CatalogItemPtr&) const { return m_parent->FileHasCapability(Catalog::Cap::Translations) && Config::UseTM(); } void SuggestionsSidebarBlock::Update(const CatalogItemPtr& item) { ClearMessage(); ClearSuggestions(); UpdateSuggestionsForItem(item); } void SuggestionsSidebarBlock::UpdateSuggestionsForItem(CatalogItemPtr item) { if (!item) return; long long now = wxGetUTCTimeMillis().GetValue(); long long delta = now - m_lastUpdateTime; m_lastUpdateTime = now; if (delta < 100) { // User is probably holding arrow down and going through the list as crazy // and not really caring for the suggestions. Throttle them a bit and call // this code after a small delay. Notice that this may repeat itself several // times, only continuing through to show suggestions after the dust settled // and the user didn't change the selection for a few milliseconds. if (!m_suggestionsTimer.IsRunning()) m_suggestionsTimer.StartOnce(110); return; } m_pendingQueries = 0; // FIXME: Get catalog info from `item` once present there if (m_parent->GetCatalog()->UsesSymbolicIDsForSource()) { SetMessage("SuggestionErrorTemplate", _(L"Translation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.")); return; } else if (!m_parent->GetCatalog()->GetSourceLanguage().IsValid()) { SetMessage("SuggestionErrorTemplate", _(L"Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.")); return; } auto srclang = m_parent->GetCurrentSourceLanguage(); auto lang = m_parent->GetCurrentLanguage(); if (!srclang.IsValid() || !lang.IsValid() || srclang == lang) { OnQueriesFinished(); return; } QueryAllProviders(item); } void SuggestionsSidebarBlock::OnDelayedShowSuggestionsForItem(wxTimerEvent&) { UpdateSuggestionsForItem(m_parent->GetSelectedItem()); } void SuggestionsSidebarBlock::QueryAllProviders(const CatalogItemPtr& item) { auto thisQueryId = ++m_latestQueryId; // At this point, we know we're not interested in any older results, but some might have // arrived asynchronously in between ClearSuggestions() call and now. So make sure there // are no old suggestions present right after increasing the query ID: m_suggestions.clear(); QueryProvider(TranslationMemory::Get(), item, thisQueryId); } 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: auto backendPtr = &backend; std::weak_ptr weakSelf = std::dynamic_pointer_cast(shared_from_this()); SuggestionQuery query { m_parent->GetCurrentSourceLanguage(), m_parent->GetCurrentLanguage(), item->GetString().ToStdWstring() }; m_provider->SuggestTranslation(backend, std::move(query)) .then_on_main([weakSelf,queryId](SuggestionsList hits) { auto self = weakSelf.lock(); // maybe this call is already out of date: if (!self || self->m_latestQueryId != queryId) return; self->UpdateSuggestions(hits); if (--self->m_pendingQueries == 0) self->OnQueriesFinished(); }) .catch_all([weakSelf,queryId,backendPtr](dispatch::exception_ptr e) { auto self = weakSelf.lock(); // maybe this call is already out of date: if (!self || self->m_latestQueryId != queryId) return; self->ReportError(backendPtr, e); if (--self->m_pendingQueries == 0) self->OnQueriesFinished(); }); } Sidebar::Sidebar(wxWindow *parent, wxMenu *suggestionsMenu) : wxWindow(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxNO_BORDER | wxFULL_REPAINT_ON_RESIZE), m_catalog(nullptr), m_selectedItem(nullptr) { ColorScheme::SetupWindowColors(this, [=] { SetBackgroundColour(ColorScheme::Get(Color::SidebarBackground)); }); #ifdef __WXMSW__ SetDoubleBuffered(true); #endif Bind(wxEVT_PAINT, &Sidebar::OnPaint, this); #ifdef __WXOSX__ SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif auto *topSizer = new wxBoxSizer(wxVERTICAL); topSizer->SetMinSize(wxSize(PX(300), -1)); m_blocksSizer = new wxBoxSizer(wxVERTICAL); topSizer->Add(m_blocksSizer, wxSizerFlags(1).Expand()); topSizer->AddSpacer(SIDEBAR_PADDING); m_topBlocksSizer = new wxBoxSizer(wxVERTICAL); m_bottomBlocksSizer = new wxBoxSizer(wxVERTICAL); m_blocksSizer->Add(m_topBlocksSizer, wxSizerFlags(1).Expand().ReserveSpaceEvenIfHidden()); m_blocksSizer->Add(m_bottomBlocksSizer, wxSizerFlags().Expand()); m_topBlocksSizer->AddSpacer(PXDefaultBorder); AddBlock(SuggestionsSidebarBlock::Create(this, suggestionsMenu), Top); AddBlock(new OldMsgidSidebarBlock(this), Bottom); AddBlock(new ExtractedCommentSidebarBlock(this), Bottom); AddBlock(new CommentSidebarBlock(this), Bottom); AddBlock(new AddCommentSidebarBlock(this), Bottom); SetSizerAndFit(topSizer); SetSelectedItem(nullptr, nullptr); } void Sidebar::AddBlock(SidebarBlock *block, BlockPos pos) { m_blocks.emplace_back(block); auto sizer = (pos == Top) ? m_topBlocksSizer : m_bottomBlocksSizer; auto grow = (block->IsGrowable()) ? 1 : 0; sizer->Add(block->GetSizer(), wxSizerFlags(grow).Expand()); } Sidebar::~Sidebar() { } void Sidebar::SetSelectedItem(const CatalogPtr& catalog, const CatalogItemPtr& item) { m_catalog = catalog; m_selectedItem = item; RefreshContent(); } void Sidebar::SetMultipleSelection() { SetSelectedItem(nullptr, nullptr); } Language Sidebar::GetCurrentLanguage() const { if (!m_catalog) return Language(); 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()) return; auto item = m_selectedItem; if (!IsThisEnabled()) item = nullptr; wxWindowUpdateLocker lock(this); for (auto& b: m_blocks) b->SetItem(item); Layout(); } void Sidebar::SetUpperHeight(int size) { wxWindowUpdateLocker lock(this); int pos = GetSize().y - size; if (size < PX(400) || pos > size) { // Too little space for suggestions (either absolute size small or // bottom area larger than top). If that happens, align the top/bottom // separator with the Translation: field in editing area instead of // with its top. pos = pos / 2 - PX(1); } pos -= SIDEBAR_PADDING; pos += PX(15) ; // SidebarSeparator spacing m_bottomBlocksSizer->SetMinSize(wxSize(-1, pos)); Layout(); } void Sidebar::DoEnable(bool) { RefreshContent(); } void Sidebar::OnPaint(wxPaintEvent&) { wxPaintDC dc(this); #ifdef __WXOSX__ dc.SetPen(ColorScheme::Get(Color::ToolbarSeparator)); dc.DrawLine(0, 0, dc.GetSize().x - 1, 0); #endif } poedit-3.6.3/src/keychain/0000755000175100001660000000000015011674362011140 5poedit-3.6.3/src/keychain/keytar_posix.cc0000644000175100001660000000626415011674230014112 /* * Copyright (c) 2013 GitHub Inc. * Copyright (c) 2015-2025 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 #include #include namespace keytar { namespace { #ifdef __GNUC__ #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #endif const SecretSchema kSchema = { "net.poedit.Credentials", SECRET_SCHEMA_NONE, { { "service", SECRET_SCHEMA_ATTRIBUTE_STRING }, { "user", SECRET_SCHEMA_ATTRIBUTE_STRING }, { NULL, SecretSchemaAttributeType(0) }, } }; } // namespace bool AddPassword(const std::string& service, const std::string& user, const std::string& password) { std::string label = "Poedit: " + service; if (!user.empty()) label += " (" + user + ")"; GError *error = NULL; gboolean result = secret_password_store_sync( &kSchema, SECRET_COLLECTION_DEFAULT, label.c_str(), password.c_str(), NULL, // not cancellable &error, "service", service.c_str(), "user", user.c_str(), NULL); if (error != NULL) { fprintf(stderr, "%s\n", error->message); g_error_free(error); } return result; } bool GetPassword(const std::string& service, const std::string& user, std::string* password) { GError *error = NULL; gchar* raw_passwords; raw_passwords = secret_password_lookup_sync( &kSchema, NULL, // not cancellable &error, "service", service.c_str(), "user", user.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& service, const std::string& user) { GError *error = NULL; gboolean result = secret_password_clear_sync( &kSchema, NULL, // not cancellable &error, "service", service.c_str(), "user", user.c_str(), NULL); if (error != NULL) { fprintf(stderr, "%s\n", error->message); g_error_free(error); } return result; } } // namespace keytar poedit-3.6.3/src/keychain/keytar.h0000644000175100001660000000304015011674230012517 /* * Copyright (c) 2013 GitHub Inc. * Copyright (c) 2015-2025 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 namespace keytar { bool AddPassword(const std::string& service, const std::string& user, const std::string& password); bool GetPassword(const std::string& service, const std::string& user, std::string* password); bool DeletePassword(const std::string& service, const std::string& user); } // namespace keytar #endif // SRC_KEYTAR_H_ poedit-3.6.3/src/catalog_xcloc.cpp0000644000175100001660000000773215011674230012576 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2025 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 "catalog_xcloc.h" #include #include #include bool XCLOCCatalog::CanLoadFile(const wxString& extension) { return extension == "xcloc"; } bool XCLOCCatalog::HasCapability(Cap cap) const { // We don't support changing the language yet, as it is more complicated: the .xcloc bundle has // other files in there and multiple places where it would need to be modified. Poedit takes the // position that it is an editor for only the l10n part of it. if (cap == Cap::LanguageSetting) return false; return XLIFF1Catalog::HasCapability(cap); } void XCLOCCatalog::SetLanguage(Language) { wxASSERT_MSG(false, "Setting XCLOC language not supported."); } std::shared_ptr XCLOCCatalog::Open(const wxString& filename) { struct Creator : public InstanceCreatorImpl { Creator(const wxString& filename_) : filename(filename_) {} std::shared_ptr CreateFromDoc(pugi::xml_document&& doc, const std::string& xliff_version) override { // Apple .xcloc uses XLIFF 1.2 only: if (xliff_version != "1.2") return nullptr; auto c = std::make_shared(std::move(doc), /*subversion=*/2); c->m_originalFilename = filename; c->m_embeddedXLIFFFilename = embedded_xliff; return c; } wxString filename; wxString embedded_xliff; }; Creator c(filename); // XCLOC bundles contain additional metadata and other localizable resources (images, text files), // but we only care about l18n content. Find the embedded XLIFF file and open that: wxDir dir(filename + "/Localized Contents"); if (!dir.IsOpened()) BOOST_THROW_EXCEPTION(Exception(_("Unexpectedly missing content in the XCLOC file."))); if (!dir.GetFirst(&c.embedded_xliff, "*.xliff", wxDIR_FILES)) BOOST_THROW_EXCEPTION(Exception(_("Unexpectedly missing content in the XCLOC file."))); return OpenImpl(dir.GetNameWithSep() + c.embedded_xliff, c); } bool XCLOCCatalog::Save(const wxString& filename, bool save_mo, ValidationResults& validation_results, CompilationStatus& mo_compilation_status) { if (filename != m_originalFilename) BOOST_THROW_EXCEPTION(Exception(_("Saving in a different location is not supported for XCLOC files."))); // update mtime for the directory to indicate that the file was modified; without this, it wouldn't // be apparent as we're actually writing a file inside a subdirectory in the bundle: wxFileName(filename).Touch(); wxString xliff_fn = filename + "/Localized Contents/" + m_embeddedXLIFFFilename; return XLIFF1Catalog::Save(xliff_fn, save_mo, validation_results, mo_compilation_status); } poedit-3.6.3/src/str_helpers.h0000644000175100001660000002520215011674230011763 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2025 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 #include #include #ifdef __OBJC__ #include #endif #ifdef __cplusplus #include #include #include #include #endif // __cplusplus /** Defines conversions between various string types. Supported string classes are std::wstring, std::string (UTF-8 encoded), wxString and ICU UChar* strings. Usage: - to_wx(...) - to_icu(...) - to_wstring(...) - to_utf8(...) - to_NSString() */ namespace str { inline std::string to_utf8(const std::wstring& str) { return boost::locale::conv::utf_to_utf(str); } inline std::string to_utf8(const wchar_t *str) { return boost::locale::conv::utf_to_utf(str); } inline std::string to_utf8(const unsigned char *str) { return std::string(reinterpret_cast(str)); } inline std::wstring to_wstring(const std::string& utf8str) { return boost::locale::conv::utf_to_utf(utf8str); } inline std::wstring to_wstring(const char *utf8str) { return boost::locale::conv::utf_to_utf(utf8str); } inline std::wstring to_wstring(const unsigned char *utf8str) { return boost::locale::conv::utf_to_utf(utf8str); } inline std::string to_utf8(const wxString& str) { return str.utf8_string(); } #if wxUSE_STD_STRING && wxUSE_UNICODE_WCHAR && wxUSE_STL_BASED_WXSTRING typedef const std::wstring& wstring_conv_t; #else typedef std::wstring wstring_conv_t; #endif inline wstring_conv_t to_wstring(const wxString& str) { return str.ToStdWstring(); } inline wxString to_wx(const char *utf8) { return wxString::FromUTF8(utf8); } inline wxString to_wx(const unsigned char *utf8) { return wxString::FromUTF8((const char*)utf8); } inline wxString to_wx(const std::string& utf8) { return wxString::FromUTF8(utf8.c_str()); } inline wxString to_wx(const std::wstring& str) { return wxString(str); } #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 NSString *to_NS(const char *utf8str) { return [NSString stringWithUTF8String:utf8str]; } inline NSString *to_NS(const unsigned char *utf8str) { return [NSString stringWithUTF8String:(const char*)utf8str]; } 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) { return boost::locale::conv::utf_to_utf([str UTF8String]); } #endif // Objective-C++ // ICU conversions: /// Buffer holding, possibly non-owned, UChar* NULL-terminated string class UCharBuffer { public: UCharBuffer(UCharBuffer&& other) noexcept : m_owned(std::exchange(other.m_owned, false)), m_data(std::exchange(other.m_data, nullptr)), m_capacity(std::exchange(other.m_capacity, 0)) {} UCharBuffer(const UCharBuffer&) = delete; UCharBuffer& operator=(const UCharBuffer&) = delete; static UCharBuffer owned(int32_t length) { return UCharBuffer(true, new UChar[length + 1], length + 1); } static UCharBuffer non_owned(const UChar *data) { return UCharBuffer(false, data, -1); } static UCharBuffer null() { static UChar empty[1] = {0}; return UCharBuffer(false, empty, 0); } ~UCharBuffer() { if (m_owned) delete[] m_data; } operator const UChar*() const { return m_data; } UChar* data() { return const_cast(m_data); } /// Available buffer size, only for owned versions, returns 0 for read-only non-owned int32_t capacity() { return m_capacity; } /// Ensure the buffer has a deep copy of the data, if it's not already owned UCharBuffer& ensure_owned() { if (m_owned) return *this; if (m_capacity == -1) m_capacity = u_strlen(m_data) + 1; auto copy = new UChar[m_capacity]; memcpy(copy, m_data, m_capacity * sizeof(UChar)); m_data = copy; m_owned = true; return *this; } private: UCharBuffer(bool owned, const UChar *data, int32_t capacity) : m_owned(owned), m_data(data), m_capacity(capacity) {} bool m_owned; const UChar *m_data; int32_t m_capacity; }; // Simple check for empty buffer / C string: template inline bool empty(const T *str) { return !str || *str == 0; } inline UCharBuffer to_icu(const char *str) { int32_t destLen = 0; UErrorCode err = U_ZERO_ERROR; u_strFromUTF8Lenient(nullptr, 0, &destLen, str, -1, &err); if (!destLen) return UCharBuffer::null(); auto buf = UCharBuffer::owned(destLen); err = U_ZERO_ERROR; u_strFromUTF8Lenient(buf.data(), buf.capacity(), nullptr, str, -1, &err); if (U_FAILURE(err)) return UCharBuffer::null(); return buf; } inline UCharBuffer to_icu(const wchar_t *str) { static_assert(SIZEOF_WCHAR_T == 2 || SIZEOF_WCHAR_T == 4, "unexpected wchar_t size"); static_assert(U_SIZEOF_UCHAR == 2, "unexpected UChar size"); #if SIZEOF_WCHAR_T == 2 // read-only aliasing ctor, doesn't copy data return UCharBuffer::non_owned(reinterpret_cast(str)); #else int32_t destLen = 0; UErrorCode err = U_ZERO_ERROR; u_strFromUTF32(nullptr, 0, &destLen, reinterpret_cast(str), -1, &err); if (!destLen) return UCharBuffer::null(); auto buf = UCharBuffer::owned(destLen); err = U_ZERO_ERROR; u_strFromUTF32(buf.data(), buf.capacity(), nullptr, reinterpret_cast(str), -1, &err); if (U_FAILURE(err)) return UCharBuffer::null(); return buf; #endif } /** Create buffer with raw UChar* string. Notice that the resulting string is only valid for the input's lifetime. */ inline UCharBuffer to_icu(const wxString& str) { return to_icu(str.wx_str()); } inline UCharBuffer to_icu(const wxString&& str) { return std::move(to_icu(str.wx_str()).ensure_owned()); } inline UCharBuffer to_icu(const std::wstring& str) { return to_icu(str.c_str()); } inline UCharBuffer to_icu(const std::wstring&& str) { return std::move(to_icu(str.c_str()).ensure_owned()); } inline UCharBuffer to_icu(const std::string& str) { return to_icu(str.c_str()); } inline const UChar* to_icu(const UChar *str) { return str; } inline UCharBuffer to_icu(const UCharBuffer& str) = delete; #if SIZEOF_WCHAR_T == 2 inline wxString to_wx(const UChar *str) { static_assert(sizeof(wchar_t) == sizeof(UChar)); return wxString(reinterpret_cast(str)); } inline wxString to_wx(const UChar *str, size_t count) { static_assert(sizeof(wchar_t) == sizeof(UChar)); return wxString(reinterpret_cast(str), count); } inline std::wstring to_wstring(const UChar *str) { static_assert(sizeof(wchar_t) == sizeof(UChar)); return std::wstring(reinterpret_cast(str)); } #else // SIZEOF_WCHAR_T == 4 inline wxString to_wx(const UChar *str) { return wxString(reinterpret_cast(str), wxMBConvUTF16(), u_strlen(str) * 2); } inline wxString to_wx(const UChar *str, size_t count) { return wxString(reinterpret_cast(str), wxMBConvUTF16(), count * 2); } inline std::wstring to_wstring(const UChar *str) { static_assert(sizeof(wchar_t) == 4); int32_t destLen = 0; UErrorCode err = U_ZERO_ERROR; u_strToUTF32(nullptr, 0, &destLen, str, -1, &err); if (!destLen) return std::wstring(); std::wstring out(destLen, '\0'); err = U_ZERO_ERROR; u_strToUTF32(reinterpret_cast(out.data()), (int32_t)out.length() + 1, nullptr, str, -1, &err); if (U_FAILURE(err)) return std::wstring(); return out; } #endif // SIZEOF_WHCAR_T inline std::string to_utf8(const UChar *str) { int32_t destLen = 0; UErrorCode err = U_ZERO_ERROR; u_strToUTF8(nullptr, 0, &destLen, str, -1, &err); if (!destLen) return std::string(); std::string out(destLen, '\0'); err = U_ZERO_ERROR; u_strToUTF8(out.data(), (int32_t)out.length() + 1, nullptr, str, -1, &err); if (U_FAILURE(err)) return std::string(); return out; } // Template-friendly API: namespace detail { template struct converter { }; template<> struct converter { template static auto convert(const TIn& s) { return str::to_wx(s); } }; template<> struct converter { template static auto convert(const TIn& s) { return str::to_wstring(s); } }; template<> struct converter { template static auto convert(const TIn& s) { return str::to_utf8(s); } }; template<> struct converter { template static auto convert(const TIn& s) { return str::to_icu(s); } static auto convert(str::UCharBuffer&& s) { return std::move(s); } }; } // namespace detail template inline auto to(const TIn& s) { return detail::converter::convert(s); } template inline auto to(TIn&& s) { return detail::converter::convert(std::move(s)); } } // namespace str #endif // Poedit_str_helpers_h poedit-3.6.3/src/progress.cpp0000644000175100001660000001302015011674230011623 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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 "progress.h" #include #include #include class Progress::impl { public: static constexpr double MIN_REPORTED_STEP = 0.01; impl(const impl&) = delete; impl(int totalCount, std::weak_ptr parent, int parentCountTaken) : m_parent(parent), m_observer(nullptr), m_totalCount(totalCount), m_parentCountTaken(parentCountTaken), m_completedCount(0), m_dirty(true), m_completedFraction(0), m_lastReportedFraction(-1) { } ~impl() { } void set_observer(ProgressObserver *observer) { m_observer = observer; } void message(const wxString& text) { if (m_observer) m_observer->update_message(text); if (auto p = parent()) p->message(text); } void increment(int count) { m_completedCount += count; notify_changed(); } void set(int count) { m_completedCount = count; notify_changed(); } void add_child(std::shared_ptr c) { std::lock_guard lock(m_mutex); m_children.insert(c); } void remove_child(std::shared_ptr c) { { std::lock_guard lock(m_mutex); m_children.erase(c); m_completedCount += c->m_parentCountTaken; } notify_changed(); } std::shared_ptr parent() const { return m_parent.lock(); } protected: void notify_changed() { m_dirty = true; if (auto p = parent()) p->notify_changed(); if (m_observer) { const double completed = completed_fraction(); std::lock_guard lock(m_mutex); if (completed == 1.0 || completed - m_lastReportedFraction >= MIN_REPORTED_STEP) { m_lastReportedFraction = completed; m_observer->update_progress(completed); } } } double completed_fraction() { // Note that the completed fraction may be inaccurate by the time the // calculation ends if an update happens in parallels. We're assuming // that's rare and just recalculate then in a loop. while (m_dirty) { m_dirty = false; std::lock_guard lock(m_mutex); double completed = m_completedCount; for (auto c: m_children) completed += c->m_parentCountTaken * c->completed_fraction(); m_completedFraction = std::min(completed / m_totalCount, 1.0); } return m_completedFraction; } private: std::weak_ptr m_parent; std::set> m_children; ProgressObserver *m_observer; int m_totalCount, m_parentCountTaken; std::atomic_int m_completedCount; std::atomic_bool m_dirty; std::atomic m_completedFraction; double m_lastReportedFraction; std::mutex m_mutex; }; thread_local std::weak_ptr Progress::ms_threadImplicitParent; Progress::Progress(int totalCount) { init(new impl(totalCount, ms_threadImplicitParent, 1)); } Progress::Progress(int totalCount, Progress& parent, int parentCountTaken) { init(new impl(totalCount, parent.m_impl, parentCountTaken)); } void Progress::init(impl *implObj) { m_impl.reset(implObj); if (auto p = m_impl->parent()) p->add_child(m_impl); m_previousImplicitParent = ms_threadImplicitParent; ms_threadImplicitParent = m_impl; } Progress::~Progress() { ms_threadImplicitParent = m_previousImplicitParent; if (auto p = m_impl->parent()) p->remove_child(m_impl); // If any observer was set through this object, remove it because it is not reference counted: m_impl->set_observer(nullptr); } void Progress::message(const wxString& text) { m_impl->message(text); } void Progress::increment(int count) { m_impl->increment(count); } void Progress::set(int count) { m_impl->set(count); } void ProgressObserver::attach(Progress& observedProgress) { m_observedProgress = observedProgress.weak_from_this(); observedProgress.m_impl->set_observer(this); } void ProgressObserver::detach() { if (auto observed = m_observedProgress.lock()) { observed->m_impl->set_observer(nullptr); } m_observedProgress.reset(); } ProgressObserver::~ProgressObserver() { detach(); } poedit-3.6.3/src/language.cpp0000644000175100001660000005511315011674230011553 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2025 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 "language.h" #include "str_helpers.h" #include "unicode_helpers.h" #include #include #include #include #include #include #include #include #include #include #include "pluralforms/pl_evaluate.h" #ifdef HAVE_CLD2 #ifdef HAVE_CLD2_PUBLIC_COMPACT_LANG_DET_H #include #include #else #include "public/compact_lang_det.h" #include "public/encodings.h" #endif #endif namespace { // see http://www.gnu.org/software/gettext/manual/html_node/Header-Entry.html // for description of permitted formats const std::wregex RE_LANG_CODE(L"([a-z]){2,3}(_([A-Z]{2}|[0-9]{3}))?(@[a-z]+)?"); // a more permissive variant of the same that TryNormalize() would fix const std::wregex RE_LANG_CODE_PERMISSIVE(L"([a-zA-Z]){2,3}([_-]([a-zA-Z]{2}|[0-9]{3}))?(@[a-zA-Z]+)?"); // try some normalizations: s/-/_/, case adjustments void TryNormalize(std::wstring& s) { auto begin = s.begin(); auto end = s.end(); size_t pos = s.rfind('@'); if (pos != std::wstring::npos) { for (auto x = begin + pos; x != end; ++x) *x = std::tolower(*x); end = begin + pos; } bool upper = false; for (auto x = begin; x != end; ++x) { if (*x == '-') *x = '_'; if (*x == '_') upper = true; else if (std::isupper(*x) && !upper) *x = std::tolower(*x); else if (std::islower(*x) && upper) *x = std::toupper(*x); } } bool IsISOLanguage(const std::string& s) { const char *test = s.c_str(); for (const char * const* i = uloc_getISOLanguages(); *i != nullptr; ++i) { if (strcmp(test, *i) == 0) return true; } return false; } bool IsISOCountry(const std::string& s) { const char *test = s.c_str(); for (const char * const* i = uloc_getISOCountries(); *i != nullptr; ++i) { if (strcmp(test, *i) == 0) return true; } return false; } // Get locale display name or at least language template auto GetDisplayNameOrLanguage(const char *locale, const char *displayLocale) { UErrorCode err = U_ZERO_ERROR; UChar buf[512] = {0}; uloc_getDisplayName(locale, displayLocale, buf, std::size(buf), &err); if (U_FAILURE(err) || str::empty(buf)) { err = U_ZERO_ERROR; uloc_getDisplayLanguage(locale, displayLocale, buf, std::size(buf), &err); } return str::to(buf); } // Mapping of names to their respective ISO codes. struct DisplayNamesData { typedef std::unordered_map Map; Map names, namesEng; std::vector sortedNames; }; std::once_flag of_namesList; const DisplayNamesData& GetDisplayNamesData() { static DisplayNamesData data; std::call_once(of_namesList, [=]{ std::set foundCodes; int32_t count = uloc_countAvailable(); data.sortedNames.reserve(count); char language[ULOC_LANG_CAPACITY] = {0}; char script[ULOC_SCRIPT_CAPACITY] = {0}; char country[ULOC_COUNTRY_CAPACITY] = {0}; char variant[128] = {0}; for (int i = 0; i < count; i++) { const char *locale = uloc_getAvailable(i); UErrorCode err = U_ZERO_ERROR; uloc_getLanguage(locale, language, std::size(language), &err); uloc_getScript(locale, script, std::size(script), &err); uloc_getCountry(locale, country, std::size(country), &err); uloc_getVariant(locale, variant, std::size(variant), &err); // TODO: for now, ignore variants here and in FormatForRoundtrip(), // because translating them between gettext and ICU is nontrivial if (!str::empty(variant)) continue; UChar buf[512] = {0}; err = U_ZERO_ERROR; uloc_getDisplayName(locale, nullptr, buf, std::size(buf), &err); data.sortedNames.emplace_back(str::to_wstring(buf)); auto foldedName = unicode::fold_case_to_type(buf); if (strcmp(language, "zh") == 0 && *country == '\0') { if (strcmp(script, "Hans") == 0) strncpy(country, "CN", std::size(country)); else if (strcmp(script, "Hant") == 0) strncpy(country, "TW", std::size(country)); } std::string code(language); if (*country != '\0') { code += '_'; code += country; } if (*script != '\0') { if (strcmp(script, "Latn") == 0) { code += "@latin"; } else if (strcmp(script, "Cyrl") == 0) { // add @cyrillic only if it's not the default already if (strcmp(language, "sr") != 0) code += "@cyrillic"; } } foundCodes.insert(code); data.names[foldedName] = code; err = U_ZERO_ERROR; uloc_getDisplayName(locale, ULOC_ENGLISH, buf, std::size(buf), &err); auto foldedEngName = unicode::fold_case_to_type(buf); data.namesEng[foldedEngName] = code; } // add languages that are not listed as locales in ICU: for (const char * const* i = uloc_getISOLanguages(); *i != nullptr; ++i) { const char *code = *i; if (foundCodes.find(code) != foundCodes.end()) continue; UErrorCode err = U_ZERO_ERROR; uloc_getLanguage(code, language, std::size(language), &err); if (U_FAILURE(err) || strcmp(code, language) != 0) continue; // e.g. 'und' for undetermined language auto isoName = GetDisplayNameOrLanguage(code, nullptr); if (isoName.empty()) continue; data.sortedNames.push_back(isoName); data.names[unicode::fold_case_to_type(isoName)] = code; auto isoEngName = GetDisplayNameOrLanguage(code, ULOC_ENGLISH); if (!isoEngName.empty()) data.namesEng[unicode::fold_case_to_type(isoEngName)] = code; } // sort the names alphabetically for data.sortedNames: unicode::Collator coll(unicode::Collator::case_insensitive); std::sort(data.sortedNames.begin(), data.sortedNames.end(), std::ref(coll)); }); return data; } std::string DoGetLanguageTag(const Language& lang) { if (lang.Code() == "zh_CN") return "zh-Hans"; else if (lang.Code() == "zh_TW") return "zh-Hant"; auto l = lang.Lang(); auto c = lang.Country(); auto v = lang.Variant(); std::string tag = l; if (v == "latin") { tag += "-Latn"; v.clear(); } else if (v == "cyrillic") { tag += "-Cyrl"; v.clear(); } if (!c.empty()) tag += "-" + c; if (!v.empty()) { // Encode variant that wasn't special-handled as a private use subtag, see // https://tools.ietf.org/html/rfc5646#section-2.2.7 (e.g. "de-DE-x-formal") tag += "-x-" + v; } return tag; } inline bool DoIsRTL(const Language& lang) { auto locale = lang.IcuLocaleName(); return uloc_isRightToLeft(locale.c_str()); } } // anonymous namespace void Language::Init(const std::string& code) { m_code = code; if (IsValid()) { m_tag = DoGetLanguageTag(*this); m_icuLocale = m_tag; char locale[512]; UErrorCode status = U_ZERO_ERROR; uloc_forLanguageTag(m_tag.c_str(), locale, 512, NULL, &status); if (U_SUCCESS(status)) m_icuLocale = locale; m_direction = DoIsRTL(*this) ? TextDirection::RTL : TextDirection::LTR; } else { m_tag.clear(); m_icuLocale.clear(); m_direction = TextDirection::LTR; } } bool Language::IsValidCode(const std::wstring& s) { return std::regex_match(s, RE_LANG_CODE); } std::string Language::Lang() const { return m_code.substr(0, m_code.find_first_of("_@")); } std::string Language::Country() const { const size_t pos = m_code.find('_'); if (pos == std::string::npos) return std::string(); const size_t endpos = m_code.rfind('@'); if (endpos == std::string::npos) return m_code.substr(pos+1); else return m_code.substr(pos+1, endpos - (pos+1)); } std::string Language::LangAndCountry() const { return m_code.substr(0, m_code.rfind('@')); } std::string Language::Variant() const { const size_t pos = m_code.rfind('@'); if (pos == std::string::npos) return std::string(); else return m_code.substr(pos + 1); } Language Language::MinimizeSubtags() const { if (m_icuLocale.empty()) return *this; char minimized[512]; UErrorCode status = U_ZERO_ERROR; uloc_minimizeSubtags(m_icuLocale.c_str(), minimized, 512, &status); if (U_FAILURE(status)) return *this; char tag[512]; uloc_toLanguageTag(minimized, tag, 512, /*strict=*/1, &status); if (U_FAILURE(status)) return *this; if (strcmp(tag, "zh") == 0) return Language::FromLanguageTag("zh-Hans"); return Language::FromLanguageTag(tag); } Language Language::TryParse(const std::wstring& s) { if (s.empty()) return Language(); // invalid if (IsValidCode(s)) return Language(s); if (s == L"zh-Hans") return Language("zh_CN"); else if (s == L"zh-Hant") return Language("zh_TW"); // Is it a standard language code? if (std::regex_match(s, RE_LANG_CODE_PERMISSIVE)) { std::wstring s2(s); TryNormalize(s2); if (IsValidCode(s2)) return Language(s2); } // If not, perhaps it's a human-readable name (perhaps coming from the language control)? auto names = GetDisplayNamesData(); auto folded = unicode::fold_case_to_type(s); auto i = names.names.find(folded); if (i != names.names.end()) return Language(i->second); // Maybe it was in English? i = names.namesEng.find(folded); if (i != names.namesEng.end()) return Language(i->second); // Maybe it was a BCP 47 language tag? auto fromTag = FromLanguageTag(str::to_utf8(s)); if (fromTag.IsValid()) return fromTag; return Language(); // invalid } Language Language::TryParseWithValidation(const std::wstring& s) { Language lang = Language::TryParse(s); if (!lang.IsValid()) return Language(); // invalid if (!IsISOLanguage(lang.Lang())) return Language(); // invalid auto country = lang.Country(); if (!country.empty() && !IsISOCountry(country)) return Language(); // invalid return lang; } Language Language::FromLanguageTag(const std::string& tag) { if (tag.empty()) return Language(); // invalid char locale[ULOC_FULLNAME_CAPACITY]; UErrorCode status = U_ZERO_ERROR; auto len = uloc_forLanguageTag(tag.c_str(), locale, 512, NULL, &status); if (U_FAILURE(status) || !len) return Language(); Language lang; lang.m_tag = tag; lang.m_icuLocale = locale; status = U_ZERO_ERROR; char b_lang[ULOC_LANG_CAPACITY]; if (uloc_getLanguage(locale, b_lang, std::size(b_lang), &status)) lang.m_code = b_lang; status = U_ZERO_ERROR; char b_country[ULOC_COUNTRY_CAPACITY]; if (uloc_getCountry(locale, b_country, std::size(b_country), &status)) lang.m_code += "_" + std::string(b_country); std::string variant; status = U_ZERO_ERROR; char b_script[ULOC_SCRIPT_CAPACITY]; if (uloc_getScript(locale, b_script, std::size(b_script), &status)) { if (*b_script && strcmp(b_lang, "zh") == 0) { if (strcmp(b_script, "Hans") == 0) lang.m_code = "zh_CN"; else if (strcmp(b_script, "Hant") == 0) lang.m_code = "zh_TW"; } else if (strcmp(b_script, "Latn") == 0) { variant = "latin"; } else if (strcmp(b_script, "Cyrl") == 0) { // add @cyrillic only if it's not the default already if (strcmp(b_lang, "sr") != 0) variant = "cyrillic"; } } // ICU converts private use subtag into 'x' keyword, e.g. de-DE-x-formal => de_DE@x=formal static const std::regex re_private_subtag("@x=([^@]+)$"); std::cmatch m; if (std::regex_search(locale, m, re_private_subtag)) variant = m.str(1); if (!variant.empty()) lang.m_code += "@" + variant; lang.m_direction = DoIsRTL(lang) ? TextDirection::RTL : TextDirection::LTR; return lang; } Language Language::FromLegacyNames(const std::string& lang, const std::string& country) { if (lang.empty()) return Language(); // invalid #include "language_impl_legacy.h" std::string code; auto i = isoLanguages.find(lang); if ( i != isoLanguages.end() ) code = i->second; else return Language(); // invalid if (!country.empty()) { auto iC = isoCountries.find(country); if ( iC != isoCountries.end() ) code += "_" + iC->second; } return Language(code); } PluralFormsExpr Language::DefaultPluralFormsExpr() const { if (!IsValid()) return PluralFormsExpr(); static const std::unordered_map forms = { #include "language_impl_plurals.h" }; auto i = forms.find(m_code); if ( i != forms.end() ) return i->second; i = forms.find(LangAndCountry()); if ( i != forms.end() ) return i->second; i = forms.find(Lang()); if ( i != forms.end() ) return i->second; // fall back to English-like singular+plural return PluralFormsExpr::English(); } int Language::nplurals() const { return DefaultPluralFormsExpr().nplurals(); } wxString Language::DisplayName() const { return GetDisplayNameOrLanguage(m_icuLocale.c_str(), nullptr); } wxString Language::LanguageDisplayName() const { UErrorCode err = U_ZERO_ERROR; UChar buf[512] = {0}; uloc_getDisplayLanguage(m_icuLocale.c_str(), nullptr, buf, std::size(buf), &err); return str::to_wx(buf); } wxString Language::DisplayNameInItself() const { auto name = GetDisplayNameOrLanguage(m_icuLocale.c_str(), m_icuLocale.c_str()); if (!name.empty()) return name; // fall back to current locale's name, better than nothing return DisplayName(); } wxString Language::FormatForRoundtrip() const { // Can't show all variants nicely, but some common one can be auto v = Variant(); if (!v.empty() && v != "latin" && v != "cyrillic") return m_code; wxString disp = DisplayName(); // ICU isn't 100% reliable, some of the display names it produces // (e.g. "Chinese (China)" aren't in the list of known locale names // (here because zh-Trans is preferred to zh_CN). So make sure it can // be parsed back first. if (TryParse(disp.ToStdWstring()).IsValid()) return disp; else return m_code; } const std::vector& Language::AllFormattedNames() { return GetDisplayNamesData().sortedNames; } Language Language::TryGuessFromFilename(const wxString& filename, wxString *wildcard) { if (wildcard) wildcard->clear(); wxFileName fn(filename); fn.MakeAbsolute(); // Try matching the filename first: // - entire name // - suffix (foo.cs_CZ.po, wordpressTheme-cs_CZ.po) // - directory name (cs_CZ, cs.lproj, cs/LC_MESSAGES) std::wstring name = fn.GetName().ToStdWstring(); Language lang = Language::TryParseWithValidation(name); if (lang.IsValid()) { if (wildcard) { fn.SetName("*"); *wildcard = fn.GetFullPath(); } return lang; } size_t pos = name.find_first_of(L".-_"); while (pos != wxString::npos) { auto part = name.substr(pos+1); lang = Language::TryParseWithValidation(part); if (lang.IsValid()) { if (wildcard) { name.replace(pos+1, std::wstring::npos, L"*"); fn.SetName(name); *wildcard = fn.GetFullPath(); } return lang; } pos = name.find_first_of(L".-_", pos+1); } auto dirs = fn.GetDirs(); if (!dirs.empty()) { size_t i = dirs.size() - 1; if (dirs[i].IsSameAs("LC_MESSAGES", /*caseSensitive=*/false)) { if (i == 0) return Language(); // failed to match --i; } wxString rest, wmatch; if (dirs[i].EndsWith(".lproj", &rest)) { lang = Language::TryParseWithValidation(rest.ToStdWstring()); wmatch = "*.lproj"; } else { lang = Language::TryParseWithValidation(dirs[i].ToStdWstring()); wmatch = "*"; } if (lang.IsValid()) { if (wildcard) { fn.RemoveDir(i); fn.InsertDir(i, wmatch); *wildcard = fn.GetFullPath(); } return lang; } } 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.LanguageTag().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, &hints, /*flags=*/0, language3, percent3, normalized_score3, /*resultchunkvector=*/nullptr, &text_bytes, &is_reliable); if (!is_reliable && language3[0] == lang && language3[1] == UNKNOWN_LANGUAGE && language3[2] == UNKNOWN_LANGUAGE && percent3[1] == 0 && percent3[2] == 0) { // supposedly unreliable, but no other alternatives detected, so use it is_reliable = true; } if (lang == UNKNOWN_LANGUAGE || !is_reliable) return Language(); // CLD2 penalizes English in bilingual content in some cases as "boilerplate" // because it is tailored for the web. So e.g. 66% English, 33% Italian is // tagged as Italian. // // Poedit's bias is the opposite: English is almost always the correct answer // for PO source language. Fix this up manually. if (lang != language3[0] && language3[0] == CLD2::ENGLISH && language3[1] == lang) lang = language3[0]; return Language::TryParse(LanguageCode(lang)); #else (void)buffer; (void)len; return probableLanguage; #endif } PluralFormsExpr::PluralFormsExpr() : m_calcCreated(true) { } PluralFormsExpr::PluralFormsExpr(const std::string& expr, int nplurals) : m_expr(expr), m_nplurals(nplurals), m_calcCreated(false) { } PluralFormsExpr::~PluralFormsExpr() { } int PluralFormsExpr::nplurals() const { if (m_nplurals != -1) return m_nplurals; if (m_calc) return m_calc->nplurals(); const std::regex re("^nplurals=([0-9]+)"); std::smatch m; if (std::regex_match(m_expr, m, re)) return std::stoi(m.str(1)); else return -1; } std::shared_ptr PluralFormsExpr::calc() const { auto self = const_cast(this); if (m_calcCreated) return m_calc; if (!m_expr.empty()) self->m_calc = PluralFormsCalculator::make(m_expr.c_str()); self->m_calcCreated = true; return m_calc; } bool PluralFormsExpr::operator==(const PluralFormsExpr& other) const { if (m_expr == other.m_expr) return true; // do some normalization to avoid unnecessary complains when the only // differences are in whitespace for example: auto expr1 = boost::erase_all_copy(m_expr, " \t"); auto expr2 = boost::erase_all_copy(other.m_expr, " \t"); if (expr1 == expr2) return true; // failing that, compare the expressions semantically: auto calc1 = calc(); auto calc2 = other.calc(); if (!calc1 || !calc2) return false; // at least one is invalid _and_ the strings are different due to code above if (calc1->nplurals() != calc2->nplurals()) return false; for (int i = 0; i < MAX_EXAMPLES_COUNT; i++) { if (calc1->evaluate(i) != calc2->evaluate(i)) return false; } // both expressions are identical on all tested integers return true; } int PluralFormsExpr::evaluate_for_n(int n) const { auto c = calc(); return c ? c->evaluate(n) : 0; } PluralFormsExpr PluralFormsExpr::English() { return PluralFormsExpr("nplurals=2; plural=(n != 1);", 2); } poedit-3.6.3/src/prefsdlg.cpp0000644000175100001660000013475415011674230011607 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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 "prefsdlg.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "app_updates.h" #include "edapp.h" #include "edframe.h" #include "catalog.h" #include "cloud_accounts_ui.h" #include "colorscheme.h" #include "configuration.h" #include "crowdin_gui.h" #include "hidpi.h" #include "tm/transmem.h" #include "tm/tmx_io.h" #include "uilang.h" #include "errors.h" #include "extractors/extractor_legacy.h" #include "progress_ui.h" #include "spellchecking.h" #include "str_helpers.h" #include "utility.h" #include "customcontrols.h" #include "unicode_helpers.h" // Handling of different page icons #ifdef __WXOSX__ inline wxBitmap MacPageIcon(const char *macos10, const char *macos11) { (void)macos11; if (@available(macOS 11.0, *)) return wxBitmap([NSImage imageWithSystemSymbolName:str::to_NS(macos11) accessibilityDescription:nil]); else return wxArtProvider::GetBitmap(macos10); } #else inline wxBitmap MacPageIcon(const char*, const char*) { return wxNullBitmap; } #endif namespace { class PrefsPanel : public WindowWith2DSizingConstraints { public: PrefsPanel(wxWindow *parent) : WindowWith2DSizingConstraints(parent), m_suppressDataTransfer(0) { #ifdef __WXOSX__ // Refresh the content of prefs panels when re-opening it. // TODO: Use proper config settings notifications or user defaults bindings instead parent->Bind(wxEVT_ACTIVATE, [=](wxActivateEvent& e){ e.Skip(); if (e.GetActive()) TransferDataToWindow(); }); Bind(wxEVT_SHOW, [=](wxShowEvent& e){ e.Skip(); if (e.IsShown()) TransferDataToWindow(); }); #endif // __WXOSX__ } bool TransferDataToWindow() override { if (m_suppressDataTransfer) return false; m_suppressDataTransfer++; InitValues(*wxConfig::Get()); 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 transferred // into the window affected its size. And, currently more importantly, to reflect // ExplanationLabel instances' rewrapping. Fit(); #ifndef __WXOSX__ GetParent()->GetParent()->Fit(); #endif return true; } bool TransferDataFromWindow() override { if (m_suppressDataTransfer) return false; m_suppressDataTransfer++; SaveValues(*wxConfig::Get()); m_suppressDataTransfer--; return true; } protected: void TransferDataFromWindowAndUpdateUI(wxCommandEvent&) { TransferDataFromWindow(); PoeditFrame::UpdateAllAfterPreferencesChange(); } virtual void InitValues(const wxConfigBase& cfg) = 0; virtual void SaveValues(wxConfigBase& cfg) = 0; int m_suppressDataTransfer; }; class GeneralPageWindow : public PrefsPanel { public: GeneralPageWindow(wxWindow *parent) : PrefsPanel(parent) { wxSizer *topsizer = new wxBoxSizer(wxVERTICAL); topsizer->SetMinSize(PX(400), -1); wxSizer *sizer = new wxBoxSizer(wxVERTICAL); topsizer->Add(sizer, wxSizerFlags(1).Expand().PXDoubleBorderAll()); SetSizer(topsizer); sizer->Add(new HeadingLabel(this, _("Information about the translator"))); sizer->AddSpacer(PX(10)); auto translator = new wxFlexGridSizer(2, wxSize(5,6)); translator->AddGrowableCol(1); sizer->Add(translator, wxSizerFlags().Expand()); auto nameLabel = new wxStaticText(this, wxID_ANY, _("Name:")); translator->Add(nameLabel, wxSizerFlags().CenterVertical().Right().BORDER_MACOS(wxTOP, 1)); m_userName = new wxTextCtrl(this, wxID_ANY); m_userName->SetHint(_("Your Name")); translator->Add(m_userName, wxSizerFlags(1).Expand().CenterVertical()); auto emailLabel = new wxStaticText(this, wxID_ANY, _("Email:")); translator->Add(emailLabel, wxSizerFlags().CenterVertical().Right().BORDER_MACOS(wxTOP, 1)); m_userEmail = new wxTextCtrl(this, wxID_ANY); m_userEmail->SetHint(_("you@example.com")); translator->Add(m_userEmail, wxSizerFlags(1).Expand().CenterVertical()); translator->AddSpacer(PX(1)); translator->Add(new ExplanationLabel(this, _("Your name and email address are only used to set the Last-Translator header of GNU gettext files.")), wxSizerFlags(1).Expand().PXBorder(wxRIGHT)); #ifdef __WXOSX__ nameLabel->SetWindowVariant(wxWINDOW_VARIANT_SMALL); emailLabel->SetWindowVariant(wxWINDOW_VARIANT_SMALL); m_userName->SetWindowVariant(wxWINDOW_VARIANT_SMALL); m_userEmail->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif sizer->AddSpacer(PX(10)); sizer->Add(new HeadingLabel(this, _("Editing"))); sizer->AddSpacer(PX(10)); m_compileMo = new wxCheckBox(this, wxID_ANY, _("Automatically compile MO file when saving")); sizer->Add(m_compileMo); sizer->AddSpacer(PX(10)); m_spellchecking = new wxCheckBox(this, wxID_ANY, _("Check spelling")); sizer->Add(m_spellchecking, wxSizerFlags().PXBorder(wxTOP)); m_focusToText = new wxCheckBox(this, wxID_ANY, _("Always change focus to text input field")); sizer->Add(m_focusToText, wxSizerFlags().PXBorder(wxTOP)); wxString explainFocus(_("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.")); #ifdef __WXOSX__ explainFocus.Replace("Ctrl", "Cmd"); #endif sizer->AddSpacer(PX(5)); sizer->Add(new ExplanationLabel(this, explainFocus), wxSizerFlags().Expand().Border(wxLEFT, PX(ExplanationLabel::CHECKBOX_INDENT))); sizer->AddSpacer(PX(10)); sizer->Add(new HeadingLabel(this, _("Appearance"))); sizer->AddSpacer(PX(4)); auto appearance = new wxFlexGridSizer(2, wxSize(5,1)); appearance->AddGrowableCol(1); sizer->Add(appearance, wxSizerFlags().Expand()); m_useFontList = new wxCheckBox(this, wxID_ANY, _("Use custom list font:")); m_fontList = new wxFontPickerCtrl(this, wxID_ANY); m_fontList->SetMinSize(wxSize(PX(120), -1)); m_useFontText = new wxCheckBox(this, wxID_ANY, _("Use custom text fields font:")); m_fontText = new wxFontPickerCtrl(this, wxID_ANY); m_fontText->SetMinSize(wxSize(PX(120), -1)); appearance->Add(m_useFontList, wxSizerFlags().CenterVertical().Left()); appearance->Add(m_fontList, wxSizerFlags().CenterVertical().Expand()); appearance->Add(m_useFontText, wxSizerFlags().CenterVertical().Left()); appearance->Add(m_fontText, wxSizerFlags().CenterVertical().Expand()); #if NEED_CHOOSELANG_UI m_uiLanguage = new wxButton(this, wxID_ANY, _("Change UI language")); sizer->Add(m_uiLanguage, wxSizerFlags().PXBorder(wxTOP)); #endif #ifdef __WXMSW__ if (!IsSpellcheckingAvailable()) { m_spellchecking->Disable(); m_spellchecking->SetValue(false); // TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions m_spellchecking->SetLabel(m_spellchecking->GetLabel() + " " + _("(requires Windows 8 or newer)")); } #endif Fit(); if (wxPreferencesEditor::ShouldApplyChangesImmediately()) { Bind(wxEVT_CHECKBOX, [=](wxCommandEvent&){ TransferDataFromWindow(); }); Bind(wxEVT_TEXT, [=](wxCommandEvent&){ TransferDataFromWindow(); }); // Some settings directly affect the UI, so need a more expensive handler: m_useFontList->Bind(wxEVT_CHECKBOX, &GeneralPageWindow::TransferDataFromWindowAndUpdateUI, this); m_useFontText->Bind(wxEVT_CHECKBOX, &GeneralPageWindow::TransferDataFromWindowAndUpdateUI, this); Bind(wxEVT_FONTPICKER_CHANGED, &GeneralPageWindow::TransferDataFromWindowAndUpdateUI, this); m_focusToText->Bind(wxEVT_CHECKBOX, &GeneralPageWindow::TransferDataFromWindowAndUpdateUI, this); m_spellchecking->Bind(wxEVT_CHECKBOX, &GeneralPageWindow::TransferDataFromWindowAndUpdateUI, this); } // handle UI updates: m_fontList->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){ e.Enable(m_useFontList->GetValue()); }); m_fontText->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){ e.Enable(m_useFontText->GetValue()); }); #if NEED_CHOOSELANG_UI m_uiLanguage->Bind(wxEVT_BUTTON, [=](wxCommandEvent&){ ChangeUILanguage(); }); #endif } void InitValues(const wxConfigBase& cfg) override { m_userName->SetValue(cfg.Read("translator_name", wxEmptyString)); m_userEmail->SetValue(cfg.Read("translator_email", wxEmptyString)); m_compileMo->SetValue(cfg.ReadBool("compile_mo", true)); m_focusToText->SetValue(cfg.ReadBool("focus_to_text", false)); if (IsSpellcheckingAvailable()) { m_spellchecking->SetValue(cfg.ReadBool("enable_spellchecking", true)); } m_useFontList->SetValue(cfg.ReadBool("custom_font_list_use", false)); m_useFontText->SetValue(cfg.ReadBool("custom_font_text_use", false)); #if defined(__WXOSX__) #define DEFAULT_FONT "Helvetica Neue" #elif defined(__WXMSW__) #define DEFAULT_FONT "Arial" #elif defined(__WXGTK__) #define DEFAULT_FONT "sans serif" #endif auto listFont = wxFont(cfg.Read("custom_font_list_name", "")); if (!listFont.IsOk()) listFont = wxFont(11, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, DEFAULT_FONT); auto textFont = wxFont(cfg.Read("custom_font_text_name", "")); if (!textFont.IsOk()) textFont = wxFont(11, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, DEFAULT_FONT); m_fontList->SetSelectedFont(listFont); m_fontText->SetSelectedFont(textFont); } void SaveValues(wxConfigBase& cfg) override { cfg.Write("translator_name", m_userName->GetValue()); cfg.Write("translator_email", m_userEmail->GetValue()); cfg.Write("compile_mo", m_compileMo->GetValue()); cfg.Write("focus_to_text", m_focusToText->GetValue()); if (IsSpellcheckingAvailable()) { cfg.Write("enable_spellchecking", m_spellchecking->GetValue()); } wxFont listFont = m_fontList->GetSelectedFont(); wxFont textFont = m_fontText->GetSelectedFont(); cfg.Write("custom_font_list_use", m_useFontList->GetValue()); cfg.Write("custom_font_text_use", m_useFontText->GetValue()); if ( listFont.IsOk() ) cfg.Write("custom_font_list_name", listFont.GetNativeFontInfoDesc()); if ( textFont.IsOk() ) cfg.Write("custom_font_text_name", textFont.GetNativeFontInfoDesc()); // On Windows, we must update the UI here; on other platforms, it was done // via TransferDataFromWindowAndUpdateUI immediately: if (!wxPreferencesEditor::ShouldApplyChangesImmediately()) { PoeditFrame::UpdateAllAfterPreferencesChange(); } } private: wxTextCtrl *m_userName, *m_userEmail; wxCheckBox *m_compileMo, *m_focusToText, *m_spellchecking; wxCheckBox *m_useFontList, *m_useFontText; wxFontPickerCtrl *m_fontList, *m_fontText; #if NEED_CHOOSELANG_UI wxButton *m_uiLanguage; #endif }; class GeneralPage : public wxPreferencesPage { public: wxString GetName() const override { return _("General"); } wxBitmap GetLargeIcon() const override { return MacPageIcon("Prefs-General", "gearshape"); } wxWindow *CreateWindow(wxWindow *parent) override { return new GeneralPageWindow(parent); } }; class TMPageWindow : public PrefsPanel { public: TMPageWindow(wxWindow *parent) : PrefsPanel(parent) { wxSizer *topsizer = new wxBoxSizer(wxVERTICAL); #ifdef __WXOSX__ topsizer->SetMinSize(PX(430), -1); // for macOS look #endif wxSizer *sizer = new wxBoxSizer(wxVERTICAL); topsizer->Add(sizer, wxSizerFlags(1).Expand().PXDoubleBorderAll()); SetSizer(topsizer); sizer->AddSpacer(PX(5)); m_useTM = new wxCheckBox(this, wxID_ANY, _("Use translation memory")); sizer->Add(m_useTM, wxSizerFlags().Expand()); m_stats = new wxStaticText(this, wxID_ANY, "--\n--", wxDefaultPosition, wxDefaultSize, wxST_NO_AUTORESIZE); sizer->AddSpacer(PX(10)); sizer->Add(m_stats, wxSizerFlags().Expand().Border(wxLEFT|wxRIGHT, PX(30))); sizer->AddSpacer(PX(10)); auto buttonsSizer = new wxBoxSizer(wxHORIZONTAL); auto manage = new wxButton(this, wxID_ANY, _(L"Manage…")); buttonsSizer->Add(manage, wxSizerFlags()); sizer->Add(buttonsSizer, wxSizerFlags().Expand().Border(wxLEFT|wxRIGHT, PX(30))); sizer->AddSpacer(PX(10)); // TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" m_mergeUse = new wxCheckBox(this, wxID_ANY, _("When updating from sources")); wxString mergeValues[] = { // TRANSLATORS: Preceded by "When updating from sources" _("fuzzy match within the file"), // TRANSLATORS: Preceded by "When updating from sources" _("pre-translate from TM") }; m_mergeBehavior = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, WXSIZEOF(mergeValues), mergeValues); auto mergeSizer = new wxBoxSizer(wxHORIZONTAL); mergeSizer->Add(m_mergeUse, wxSizerFlags().Center()); mergeSizer->AddSpacer(PX(5)); mergeSizer->Add(m_mergeBehavior, wxSizerFlags().Center() #ifdef __WXOSX__ // BORDER_WIN would reset this padding otherwise .Border(wxTOP, AboveChoicePadding()) #else .BORDER_WIN(wxBOTTOM, 1) #endif ); sizer->Add(mergeSizer, wxSizerFlags().PXBorder(wxTOP|wxBOTTOM)); auto explainTxt = _(L"Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it."); auto explain = new ExplanationLabel(this, explainTxt); sizer->Add(explain, wxSizerFlags().Expand().Border(wxLEFT, PX(ExplanationLabel::CHECKBOX_INDENT))); auto learnMore = new LearnMoreLink(this, "https://poedit.net/trac/wiki/Doc/TranslationMemory"); sizer->AddSpacer(PX(3)); sizer->Add(learnMore, wxSizerFlags().Border(wxLEFT, PX(ExplanationLabel::CHECKBOX_INDENT))); sizer->AddSpacer(PX(10)); #ifdef __WXOSX__ m_stats->SetWindowVariant(wxWINDOW_VARIANT_SMALL); manage->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif m_mergeBehavior->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){ e.Enable(m_mergeUse->GetValue() == true); }); m_stats->Bind(wxEVT_UPDATE_UI, &TMPageWindow::OnUpdateUI, this); manage->Bind(wxEVT_UPDATE_UI, &TMPageWindow::OnUpdateUI, this); manage->Bind(wxEVT_BUTTON, &TMPageWindow::OnManageTM, this); UpdateStats(); if (wxPreferencesEditor::ShouldApplyChangesImmediately()) { m_mergeUse->Bind(wxEVT_CHECKBOX, [=](wxCommandEvent&){ TransferDataFromWindow(); }); m_mergeBehavior->Bind(wxEVT_CHOICE, [=](wxCommandEvent&){ TransferDataFromWindow(); }); // Some settings directly affect the UI, so need a more expensive handler: m_useTM->Bind(wxEVT_CHECKBOX, &TMPageWindow::TransferDataFromWindowAndUpdateUI, this); } } void InitValues(const wxConfigBase&) override { m_useTM->SetValue(Config::UseTM()); auto merge = Config::MergeBehavior(); m_mergeUse->SetValue(merge != Merge_None); m_mergeBehavior->SetSelection(merge == Merge_UseTM ? 1 : 0); } void SaveValues(wxConfigBase&) override { Config::UseTM(m_useTM->GetValue()); if (m_mergeUse->GetValue() == true) { Config::MergeBehavior(m_mergeBehavior->GetSelection() == 1 ? Merge_UseTM : Merge_FuzzyMatch); } else { Config::MergeBehavior(Merge_None); } } private: void UpdateStats() { wxString sDocs("--"); wxString sFileSize("--"); if (Config::UseTM()) { try { long docs, fileSize; TranslationMemory::Get().GetStats(docs, fileSize); sDocs.Printf("%s", wxNumberFormatter::ToString(docs)); sFileSize.Printf("%s", wxFileName::GetHumanReadableSize(fileSize, "--", 1, wxSIZE_CONV_SI)); } catch (Exception&) { // ignore Lucene errors -- if the index doesn't exist yet, just show -- } } m_stats->SetLabelMarkup(wxString::Format( "%s %s\n%s %s", _("Stored translations:"), sDocs, _("Database size on disk:"), sFileSize )); } void OnManageTM(wxCommandEvent& e) { static wxWindowIDRef idLearn = NewControlId(); static wxWindowIDRef idImportTMX = NewControlId(); static wxWindowIDRef idExportTMX = NewControlId(); static wxWindowIDRef idReset = NewControlId(); wxMenu menu; #ifdef __WXOSX__ [menu.GetHMenu() setFont:[NSFont systemFontOfSize:13]]; #endif menu.Append(idLearn, MSW_OR_OTHER(_(L"Import translation files…"), _(L"Import Translation Files…"))); menu.AppendSeparator(); menu.Append(idImportTMX, MSW_OR_OTHER(_(L"Import from TMX…"), _(L"Import From TMX…"))); menu.Append(idExportTMX, MSW_OR_OTHER(_(L"Export to TMX…"), _(L"Export To TMX…"))); menu.AppendSeparator(); // TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). menu.Append(idReset, _("Reset")); menu.Bind(wxEVT_MENU, &TMPageWindow::OnImportIntoTM, this, idLearn); menu.Bind(wxEVT_MENU, &TMPageWindow::OnImportTMX, this, idImportTMX); menu.Bind(wxEVT_MENU, &TMPageWindow::OnExportTMX, this, idExportTMX); menu.Bind(wxEVT_MENU, &TMPageWindow::OnResetTM, this, idReset); auto win = dynamic_cast(e.GetEventObject()); #ifdef __WXOSX__ win->PopupMenu(&menu, 5, 26); #else win->PopupMenu(&menu, 0, win->GetSize().y); #endif } void OnImportIntoTM(wxCommandEvent&) { wxWindowPtr dlg(new wxFileDialog( this, _("Select translation files to import"), wxEmptyString, wxEmptyString, Catalog::GetAllTypesFileMask(), wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE)); // dlg->ShowWindowModalThenDo([=](int retcode){ int retcode = dlg->ShowModal(); { if (retcode != wxID_OK) return; wxArrayString paths; dlg->GetPaths(paths); auto tm = TranslationMemory::Get().GetWriter(); DoImportIntoTM(paths, [=](const wxString& p) { Progress subprogress(1); auto cat = Catalog::Create(p); tm->Insert(cat); tm->Commit(); return cat->GetCount(); }); } } void OnImportTMX(wxCommandEvent&) { wxWindowPtr dlg(new wxFileDialog ( this, MACOS_OR_OTHER("", _("Select TMX files to import")), "", "", MaskForType("*.tmx", _("TMX Files")), wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE) ); // dlg->ShowWindowModalThenDo([=](int retcode){ int retcode = dlg->ShowModal(); { if (retcode != wxID_OK) return; wxArrayString paths; dlg->GetPaths(paths); DoImportIntoTM(paths, [=](const wxString& p) { std::ifstream f; f.open(p.fn_str()); int count = TMX::ImportFromFile(f, TranslationMemory::Get()); f.close(); return count; }); } } template void DoImportIntoTM(const wxArrayString& paths, T&& doImportFile) { auto cancellation = std::make_shared(); wxWindowPtr progress(new ProgressWindow(this, _(L"Importing translations…"), cancellation)); progress->SetErrorMessage(_("Importing translation memory failed.")); progress->RunTaskModal([=]() -> BackgroundTaskResult { Progress progress(paths.size()); int count = 0; for (auto p: paths) { if (cancellation->is_cancelled()) break; auto pname = wxFileName(p).GetFullName(); Progress subprogress(1); subprogress.message(wxString::Format(_(L"Importing from “%sâ€â€¦"), pname)); try { count += doImportFile(p); } catch (...) { wxLogError(("%s: %s"), pname, DescribeCurrentException()); } } if (count == 0) return {}; return wxString::Format ( // TRANSLATORS: %s is a (formatted) number here wxPLURAL("%s translation was imported.", "%s translations were imported.", count), wxNumberFormatter::ToString((long)count) ); }); UpdateStats(); } void OnExportTMX(wxCommandEvent&) { wxWindowPtr dlg(new wxFileDialog ( this, MACOS_OR_OTHER("", _(L"Export as…")), "", "", MaskForType("*.tmx", _("TMX Files")), wxFD_SAVE | wxFD_OVERWRITE_PROMPT) ); // dlg->ShowWindowModalThenDo([=](int retcode){ int retcode = dlg->ShowModal(); { if (retcode != wxID_OK) return; auto p = dlg->GetPath(); wxWindowPtr progress(new ProgressWindow(this, _(L"Exporting translations…"))); progress->SetErrorMessage(wxString::Format(_(L"Exporting translation memory to “%s†failed."), wxFileName(p).GetFullName())); progress->RunTaskModal([=]() { TempOutputFileFor tempfile(p); std::ofstream f; f.open(tempfile.FileName().fn_str()); TMX::ExportToFile(TranslationMemory::Get(), f); f.close(); if ( !tempfile.Commit() ) BOOST_THROW_EXCEPTION(Exception(wxString::Format(_(L"Couldn’t save file %s."), wxFileName(p).GetFullName()))); }); } } void OnResetTM(wxCommandEvent&) { auto title = _("Reset translation memory"); auto main = _("Are you sure you want to reset the translation memory?"); auto details = _(L"Resetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation."); wxWindowPtr dlg(new wxMessageDialog(this, main, title, wxYES_NO | wxNO_DEFAULT | wxICON_WARNING)); dlg->SetExtendedMessage(details); dlg->SetYesNoLabels(_("Reset"), _("Cancel")); dlg->ShowWindowModalThenDo([this,dlg](int retcode){ if (retcode == wxID_YES) { wxBusyCursor bcur; TranslationMemory::Get().DeleteAllAndReset(); UpdateStats(); } }); } void OnUpdateUI(wxUpdateUIEvent& e) { e.Enable(m_useTM->GetValue()); } wxCheckBox *m_useTM; wxCheckBox *m_mergeUse; wxChoice *m_mergeBehavior; wxStaticText *m_stats; }; class TMPage : public wxPreferencesPage { public: wxString GetName() const override { #if defined(__WXOSX__) || defined(__WXGTK__) // TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. // Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal // length there. return _("TM"); #else return _("Translation Memory"); #endif } wxBitmap GetLargeIcon() const override { return MacPageIcon("Prefs-TM", "internaldrive"); } wxWindow *CreateWindow(wxWindow *parent) override { return new TMPageWindow(parent); } }; class ExtractorsPageWindow : public PrefsPanel { public: ExtractorsPageWindow(wxWindow *parent) : PrefsPanel(parent) { wxSizer *topsizer = new wxBoxSizer(wxVERTICAL); wxSizer *sizer = new wxBoxSizer(wxVERTICAL); topsizer->Add(sizer, wxSizerFlags(1).Expand().PXDoubleBorderAll()); SetSizer(topsizer); sizer->Add(new ExplanationLabel(this, _("Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.")), wxSizerFlags().Expand().PXDoubleBorder(wxBOTTOM)); // FIXME: Neither wxBORDER_ flag produces correct results on macOS or Windows, would need to paint manually auto listPanel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | MSW_OR_OTHER(wxBORDER_SIMPLE, wxBORDER_SUNKEN)); auto listSizer = new wxBoxSizer(wxVERTICAL); listPanel->SetSizer(listSizer); CreateBuiltinExtractorsUI(listPanel, listSizer); auto customExLabel = new wxStaticText(listPanel, wxID_ANY, MSW_OR_OTHER(_("Custom extractors:"), _("Custom Extractors:"))); #ifdef __WXOSX__ customExLabel->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif customExLabel->SetFont(customExLabel->GetFont().Bold()); listSizer->AddSpacer(PX(5)); listSizer->Add(customExLabel, wxSizerFlags().ReserveSpaceEvenIfHidden().Border(wxLEFT|wxRIGHT, PX(5))); listSizer->AddSpacer(PX(5)); m_list = new wxCheckListBox(listPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, nullptr, wxBORDER_NONE); m_list->SetMinSize(wxSize(PX(400),PX(200))); #ifdef __WXOSX__ m_list->SetWindowVariant(wxWINDOW_VARIANT_SMALL); if (@available(macOS 11.0, *)) ((NSTableView*)[((NSScrollView*)m_list->GetHandle()) documentView]).style = NSTableViewStyleFullWidth; #endif listSizer->Add(m_list, wxSizerFlags(1).Expand().Border(wxLEFT|wxRIGHT, PX(5))); sizer->Add(listPanel, wxSizerFlags(1).Expand().BORDER_WIN(wxLEFT, 1)); #if defined(__WXOSX__) m_new = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("NSAddTemplate"), wxDefaultPosition, wxSize(18, 18), wxBORDER_SIMPLE); m_delete = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("NSRemoveTemplate"), wxDefaultPosition, wxSize(18,18), wxBORDER_SIMPLE); int editButtonStyle = wxBU_EXACTFIT | wxBORDER_SIMPLE; #elif defined(__WXMSW__) m_new = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("list-add"), wxDefaultPosition, wxSize(PX(19),PX(19))); m_delete = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("list-remove"), wxDefaultPosition, wxSize(PX(19),PX(19))); int editButtonStyle = wxBU_EXACTFIT; #elif defined(__WXGTK__) m_new = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("list-add@symbolic"), wxDefaultPosition, wxDefaultSize, wxNO_BORDER); m_delete = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("list-remove@symbolic"), wxDefaultPosition, wxDefaultSize, wxNO_BORDER); int editButtonStyle = wxBU_EXACTFIT | wxBORDER_NONE; #endif m_edit = new wxButton(this, wxID_ANY, _(L"Edit…"), wxDefaultPosition, wxSize(-1, MSW_OR_OTHER(PX(19), -1)), editButtonStyle); #ifndef __WXGTK__ m_edit->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif auto buttonSizer = new wxBoxSizer(wxHORIZONTAL); buttonSizer->Add(m_new); #ifdef __WXOSX__ buttonSizer->AddSpacer(PX(1)); #endif buttonSizer->Add(m_delete); #ifdef __WXOSX__ buttonSizer->AddSpacer(PX(1)); #endif buttonSizer->Add(m_edit); sizer->AddSpacer(PX(1)); sizer->Add(buttonSizer, wxSizerFlags().BORDER_MACOS(wxLEFT, PX(1))); ColorScheme::SetupWindowColors(this, [=] { customExLabel->SetForegroundColour(ExplanationLabel::GetTextColor()); auto listBg = ColorScheme::Get(Color::ListControlBg); listPanel->SetBackgroundColour(listBg); #ifdef __WXOSX__ // FIXME: In dark mode, listbox color is special and requires NSBox to // be rendered correctly, so we just use normal background for now, incl. for the list m_list->SetBackgroundColour(listBg); #endif }); m_new->Bind(wxEVT_BUTTON, &ExtractorsPageWindow::OnNewExtractor, this); m_edit->Bind(wxEVT_BUTTON, &ExtractorsPageWindow::OnEditExtractor, this); m_delete->Bind(wxEVT_BUTTON, &ExtractorsPageWindow::OnDeleteExtractor, this); m_list->Bind(wxEVT_CHECKLISTBOX, &ExtractorsPageWindow::OnEnableExtractor, this); m_list->Bind(wxEVT_LISTBOX_DCLICK, &ExtractorsPageWindow::OnEditExtractor, this); m_edit->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e) { e.Enable(m_list->GetSelection() != wxNOT_FOUND); }); m_delete->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e) { e.Enable(m_list->GetSelection() != wxNOT_FOUND); }); customExLabel->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e) { e.Show(m_list->GetCount() > 0); }); } void CreateBuiltinExtractorsUI(wxWindow *panel, wxSizer *topsizer) { auto sizer = new wxBoxSizer(wxHORIZONTAL); topsizer->Add(sizer, wxSizerFlags().Expand().Border(wxALL, PX(5))); sizer->Add(new wxStaticBitmap(panel, wxID_ANY, wxArtProvider::GetBitmap("ExtractorsGNUgettext")), wxSizerFlags().Top().Border(wxRIGHT, PX(5))); auto textSizer = new wxBoxSizer(wxVERTICAL); sizer->Add(textSizer, wxSizerFlags(1).Top()); auto heading = new wxStaticText(panel, wxID_ANY, _("GNU gettext")); #ifdef __WXOSX__ heading->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif heading->SetFont(heading->GetFont().Bold()); textSizer->Add(heading, wxSizerFlags().Border(wxBOTTOM, PX(2))); auto desc = new ExplanationLabel(panel, _("Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).")); textSizer->Add(desc, wxSizerFlags(1).Expand()); textSizer->Layout(); } void InitValues(const wxConfigBase& cfg) override { m_extractors.Read(const_cast(&cfg)); m_list->Clear(); for (const auto& item: m_extractors.Data) { auto index = m_list->Append(bidi::platform_mark_direction(item.Name)); m_list->Check(index, item.Enabled); } if (!m_extractors.Data.empty()) { m_list->SetSelection(0); m_list->EnsureVisible(0); } } void SaveValues(wxConfigBase& cfg) override { m_extractors.Write(&cfg); } private: /// Called to launch dialog for editing parser properties. template void EditExtractor(int num, TFunctor completionHandler) { wxWindowPtr dlg(wxXmlResource::Get()->LoadDialog(this, "edit_extractor")); dlg->Centre(); auto extractor_language = XRCCTRL(*dlg, "extractor_language", wxTextCtrl); auto extractor_extensions = XRCCTRL(*dlg, "extractor_extensions", wxTextCtrl); auto extractor_command = XRCCTRL(*dlg, "extractor_command", wxTextCtrl); auto extractor_keywords = XRCCTRL(*dlg, "extractor_keywords", wxTextCtrl); auto extractor_files = XRCCTRL(*dlg, "extractor_files", wxTextCtrl); auto extractor_charset = XRCCTRL(*dlg, "extractor_charset", wxTextCtrl); { const LegacyExtractorSpec& nfo = m_extractors.Data[num]; extractor_language->SetValue(bidi::platform_mark_direction(nfo.Name)); extractor_extensions->SetValue(bidi::mark_direction(nfo.Extensions, TextDirection::LTR)); extractor_command->SetValue(bidi::mark_direction(nfo.Command, TextDirection::LTR)); extractor_keywords->SetValue(bidi::mark_direction(nfo.KeywordItem, TextDirection::LTR)); extractor_files->SetValue(bidi::mark_direction(nfo.FileItem, TextDirection::LTR)); extractor_charset->SetValue(bidi::mark_direction(nfo.CharsetItem, TextDirection::LTR)); } dlg->Bind ( wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){ e.Enable(!extractor_language->IsEmpty() && !extractor_extensions->IsEmpty() && !extractor_command->IsEmpty() && !extractor_files->IsEmpty()); // charset, keywords could in theory be empty if unsupported by the parser tool }, wxID_OK ); m_suppressDataTransfer++; dlg->ShowWindowModalThenDo([=](int retcode){ m_suppressDataTransfer--; (void)dlg; // force use if (retcode == wxID_OK) { LegacyExtractorSpec& nfo = m_extractors.Data[num]; nfo.Name = bidi::strip_control_chars(extractor_language->GetValue().Strip(wxString::both)); nfo.Extensions = bidi::strip_control_chars(extractor_extensions->GetValue().Strip(wxString::both)); nfo.Command = bidi::strip_control_chars(extractor_command->GetValue().Strip(wxString::both)); nfo.KeywordItem = bidi::strip_control_chars(extractor_keywords->GetValue().Strip(wxString::both)); nfo.FileItem = bidi::strip_control_chars(extractor_files->GetValue().Strip(wxString::both)); nfo.CharsetItem = bidi::strip_control_chars(extractor_charset->GetValue().Strip(wxString::both)); m_list->SetString(num, nfo.Name); } completionHandler(retcode == wxID_OK); }); } void OnNewExtractor(wxCommandEvent&) { m_suppressDataTransfer++; LegacyExtractorSpec info; m_extractors.Data.push_back(info); auto index = m_list->Append(wxEmptyString); m_list->Check(index); EditExtractor(index, [=](bool added){ if (added) { m_edit->Enable(true); m_delete->Enable(true); } else { m_list->Delete(index); m_extractors.Data.erase(m_extractors.Data.begin() + index); } m_suppressDataTransfer--; if (wxPreferencesEditor::ShouldApplyChangesImmediately()) TransferDataFromWindow(); }); } void OnEditExtractor(wxCommandEvent&) { EditExtractor(m_list->GetSelection(), [=](bool changed){ if (changed && wxPreferencesEditor::ShouldApplyChangesImmediately()) TransferDataFromWindow(); }); } void OnDeleteExtractor(wxCommandEvent&) { int index = m_list->GetSelection(); auto title = MSW_OR_OTHER(_("Delete extractor"), ""); auto main = wxString::Format(_(L"Are you sure you want to delete the “%s†extractor?"), m_extractors.Data[index].Name); wxWindowPtr 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) { int index = e.GetInt(); m_extractors.Data[index].Enabled = m_list->IsChecked(index); if (wxPreferencesEditor::ShouldApplyChangesImmediately()) TransferDataFromWindow(); } LegacyExtractorsDB m_extractors; wxCheckListBox *m_list; wxButton *m_new, *m_edit, *m_delete; }; class ExtractorsPage : public wxPreferencesPage { public: wxString GetName() const override { return _("Extractors"); } wxBitmap GetLargeIcon() const override { return MacPageIcon("Prefs-Extractors", "doc.text.viewfinder"); } wxWindow *CreateWindow(wxWindow *parent) override { return new ExtractorsPageWindow(parent); } }; #ifdef HAVE_HTTP_CLIENT class AccountsPageWindow : public PrefsPanel { public: AccountsPageWindow(wxWindow *parent) : PrefsPanel(parent) { wxSizer *sizer = new wxBoxSizer(wxVERTICAL); SetSizer(sizer); m_accounts = new AccountsPanel(this); sizer->Add(m_accounts, wxSizerFlags(1).Expand().PXDoubleBorderAll()); #ifdef __WXOSX__ // This window was possibly created on demand (pre-macOS 11), possibly // hidden. Initialize as soon as it is shown: Bind(wxEVT_SHOW, [=](wxShowEvent& e){ if (e.IsShown()) CallAfter([=]{ m_accounts->InitializeAfterShown(); }); }); #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(parent); if (notebook) { notebook->Bind(wxEVT_NOTEBOOK_PAGE_CHANGED, [=](wxBookCtrlEvent& e){ e.Skip(); if (notebook->GetPage(e.GetSelection()) == this) CallAfter([=]{ m_accounts->InitializeAfterShown(); }); }); } #endif } void InitValues(const wxConfigBase&) override { } void SaveValues(wxConfigBase&) override { } private: AccountsPanel *m_accounts; }; class AccountsPage : public wxPreferencesPage { public: wxString GetName() const override { return _("Accounts"); } wxBitmap GetLargeIcon() const override { return MacPageIcon("Prefs-Accounts", "at"); } wxWindow *CreateWindow(wxWindow *parent) override { return new AccountsPageWindow(parent); } }; #endif // HAVE_HTTP_CLIENT #ifdef HAS_UPDATES_CHECK class UpdatesPageWindow : public PrefsPanel { public: UpdatesPageWindow(wxWindow *parent) : PrefsPanel(parent) { wxSizer *topsizer = new wxBoxSizer(wxVERTICAL); topsizer->SetMinSize(PX(400), -1); // for macOS look, wouldn't fit the toolbar otherwise wxSizer *sizer = new wxBoxSizer(wxVERTICAL); topsizer->Add(sizer, wxSizerFlags().Expand().PXDoubleBorderAll()); SetSizer(topsizer); m_updates = new wxCheckBox(this, wxID_ANY, _("Automatically check for updates")); sizer->Add(m_updates, wxSizerFlags().Expand().PXBorder(wxTOP|wxBOTTOM)); m_beta = new wxCheckBox(this, wxID_ANY, _("Include beta versions")); sizer->Add(m_beta, wxSizerFlags().Expand().PXBorder(wxBOTTOM)); sizer->Add(new ExplanationLabel(this, _("Beta versions contain the latest new features and improvements, but may be a bit less stable.")), wxSizerFlags().Expand().Border(wxLEFT, PX(ExplanationLabel::CHECKBOX_INDENT))); sizer->AddSpacer(PX(5)); if (wxPreferencesEditor::ShouldApplyChangesImmediately()) Bind(wxEVT_CHECKBOX, [=](wxCommandEvent&){ TransferDataFromWindow(); }); } void InitValues(const wxConfigBase&) override { m_updates->SetValue(AppUpdates::Get().AutomaticChecksEnabled()); m_beta->SetValue(Config::CheckForBetaUpdates()); } void SaveValues(wxConfigBase&) override { // NB: Must be done first, before calling AppUpdates methods! Config::CheckForBetaUpdates(m_beta->GetValue()); AppUpdates::Get().EnableAutomaticChecks(m_beta->GetValue()); } private: wxCheckBox *m_updates, *m_beta; }; class UpdatesPage : public wxPreferencesPage { public: wxString GetName() const override { return _("Updates"); } wxBitmap GetLargeIcon() const override { return MacPageIcon("Prefs-Updates", "arrow.down.circle"); } wxWindow *CreateWindow(wxWindow *parent) override { return new UpdatesPageWindow(parent); } }; #endif // HAS_UPDATES_CHECK class AdvancedPageWindow : public PrefsPanel { public: AdvancedPageWindow(wxWindow *parent) : PrefsPanel(parent) { wxSizer *topsizer = new wxBoxSizer(wxVERTICAL); wxSizer *sizer = new wxBoxSizer(wxVERTICAL); topsizer->Add(sizer, wxSizerFlags(1).Expand().PXDoubleBorderAll()); SetSizer(topsizer); sizer->Add(new ExplanationLabel(this, _("These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.")), wxSizerFlags().Expand().PXBorder(wxBOTTOM)); auto crlfbox = new wxBoxSizer(wxHORIZONTAL); sizer->Add(crlfbox, wxSizerFlags().Expand().PXBorder(wxTOP)); crlfbox->Add(new wxStaticText(this, wxID_ANY, _("Line endings:")), wxSizerFlags().Center().BORDER_WIN(wxTOP, PX(1))); crlfbox->AddSpacer(PX(5)); m_crlf = new wxChoice(this, wxID_ANY); m_crlf->Append(_("Unix (recommended)")); m_crlf->Append(_("Windows")); crlfbox->Add(m_crlf, wxSizerFlags(1).Center().Border(wxTOP, AboveChoicePadding())); /// TRANSLATORS: Followed by text control for entering number; wraps text at given width m_wrap = new wxCheckBox(this, wxID_ANY, _("Wrap at:")); crlfbox->AddSpacer(PX(10)); crlfbox->Add(m_wrap, wxSizerFlags().Center().BORDER_WIN(wxTOP, PX(1))); #ifdef __WXGTK3__ m_wrapWidth = new wxSpinCtrl(this, wxID_ANY, "", wxDefaultPosition, wxSize(PX(110),-1)); #else m_wrapWidth = new wxSpinCtrl(this, wxID_ANY, "", wxDefaultPosition, wxSize(PX(50),-1)); #endif m_wrapWidth->SetRange(10, 999); crlfbox->Add(m_wrapWidth, wxSizerFlags().Center().BORDER_MACOS(wxLEFT, PX(3))); m_keepFmt = new wxCheckBox(this, wxID_ANY, _("Preserve formatting of existing files")); sizer->Add(m_keepFmt, wxSizerFlags().PXBorder(wxTOP)); Fit(); if (wxPreferencesEditor::ShouldApplyChangesImmediately()) { Bind(wxEVT_CHECKBOX, [=](wxCommandEvent&){ TransferDataFromWindow(); }); Bind(wxEVT_CHOICE, [=](wxCommandEvent&){ TransferDataFromWindow(); }); Bind(wxEVT_TEXT, [=](wxCommandEvent&){ TransferDataFromWindow(); }); } // handle UI updates: m_wrapWidth->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){ e.Enable(m_wrap->GetValue()); }); } void InitValues(const wxConfigBase& cfg) override { m_keepFmt->SetValue(cfg.ReadBool("keep_crlf", true)); wxString format = cfg.Read("crlf_format", "unix"); int sel; if (format == "win") sel = 1; else /* "unix" or obsolete settings */ sel = 0; m_crlf->SetSelection(sel); m_wrap->SetValue(cfg.ReadBool("wrap_po_files", true)); m_wrapWidth->SetValue((int)cfg.ReadLong("wrap_po_files_width", 79)); } void SaveValues(wxConfigBase& cfg) override { cfg.Write("keep_crlf", m_keepFmt->GetValue()); static const char *formats[] = { "unix", "win" }; cfg.Write("crlf_format", formats[m_crlf->GetSelection()]); cfg.Write("wrap_po_files", m_wrap->GetValue()); cfg.Write("wrap_po_files_width", m_wrapWidth->GetValue()); } private: wxChoice *m_crlf; wxCheckBox *m_wrap; wxSpinCtrl *m_wrapWidth; wxCheckBox *m_keepFmt; }; class AdvancedPage : public wxStockPreferencesPage { public: AdvancedPage() : wxStockPreferencesPage(Kind_Advanced) {} wxString GetName() const override { return _("Advanced"); } wxBitmap GetLargeIcon() const override { return MacPageIcon("Prefs-Advanced", "gearshape.2"); } wxWindow *CreateWindow(wxWindow *parent) override { return new AdvancedPageWindow(parent); } }; } // anonymous namespace std::unique_ptr PoeditPreferencesEditor::Create() { std::unique_ptr p(new PoeditPreferencesEditor); 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 p->AddPage(new AdvancedPage); return p; } PoeditPreferencesEditor::PoeditPreferencesEditor() #if defined(__WXMSW__) || defined(__WXOSX__) : wxPreferencesEditor(_("Settings")) #endif { } poedit-3.6.3/src/language_impl_legacy.h0000644000175100001660000002616515011674230013572 // Legacy language names used by old versions of Poedit static const std::unordered_map isoLanguages = { { "Abkhazian", "ab" }, { "(Afan) Oromo", "om" }, { "Afar", "aa" }, { "Afrikaans", "af" }, { "Albanian", "sq" }, { "Amharic", "am" }, { "Arabic", "ar" }, { "Armenian", "hy" }, { "Assamese", "as" }, { "Avestan", "ae" }, { "Aymara", "ay" }, { "Azerbaijani", "az" }, { "Bashkir", "ba" }, { "Basque", "eu" }, { "Belarusian", "be" }, { "Bengali", "bn" }, { "Bihari", "bh" }, { "Bislama", "bi" }, { "Bosnian", "bs" }, { "Breton", "br" }, { "Bulgarian", "bg" }, { "Burmese", "my" }, { "Catalan", "ca" }, { "Chamorro", "ch" }, { "Chechen", "ce" }, { "Chichewa; Nyanja", "ny" }, { "Chinese", "zh" }, { "Church Slavic", "cu" }, { "Chuvash", "cv" }, { "Cornish", "kw" }, { "Corsican", "co" }, { "Croatian", "hr" }, { "Czech", "cs" }, { "Danish", "da" }, { "Dutch", "nl" }, { "Dzongkha", "dz" }, { "English", "en" }, { "Esperanto", "eo" }, { "Estonian", "et" }, { "Faroese", "fo" }, { "Fijian", "fj" }, { "Finnish", "fi" }, { "French", "fr" }, { "Frisian", "fy" }, { "Friulian", "fur" }, { "Gaelic", "gd" }, { "Galician", "gl" }, { "Georgian", "ka" }, { "German", "de" }, { "Greek", "el" }, { "Guarani", "gn" }, { "Gujarati", "gu" }, { "Hausa", "ha" }, { "Hebrew", "he" }, { "Herero", "hz" }, { "Hindi", "hi" }, { "Hiri Motu", "ho" }, { "Hungarian", "hu" }, { "Icelandic", "is" }, { "Indonesian", "id" }, { "Interlingua", "ia" }, { "Interlingue", "ie" }, { "Inuktitut", "iu" }, { "Inupiaq", "ik" }, { "Irish", "ga" }, { "Italian", "it" }, { "Japanese", "ja" }, { "Javanese", "jv" }, { "Kalaallisut", "kl" }, { "Kannada", "kn" }, { "Kashmiri", "ks" }, { "Kazakh", "kk" }, { "Khmer", "km" }, { "Kikuyu", "ki" }, { "Kinyarwanda", "rw" }, { "Komi", "kv" }, { "Korean", "ko" }, { "Kuanyama", "kj" }, { "Kurdish", "ku" }, { "Kyrgyz", "ky" }, { "Lao", "lo" }, { "Latin", "la" }, { "Latvian", "lv" }, { "Letzeburgesch", "lb" }, { "Lingala", "ln" }, { "Lithuanian", "lt" }, { "Macedonian", "mk" }, { "Malagasy", "mg" }, { "Malay", "ms" }, { "Malayalam", "ml" }, { "Maltese", "mt" }, { "Maori", "mi" }, { "Marathi", "mr" }, { "Marshall", "mh" }, { "Moldavian", "mo" }, { "Mongolian", "mn" }, { "Nauru", "na" }, { "Navajo", "nv" }, { "Ndebele, South", "nr" }, { "Ndonga", "ng" }, { "Nepali", "ne" }, { "Northern Sami", "se" }, { "Norwegian Bokmal", "nb" }, { "Norwegian Nynorsk", "nn" }, { "Occitan", "oc" }, { "Oriya", "or" }, { "Ossetian; Ossetic", "os" }, { "Pali", "pi" }, { "Panjabi", "pa" }, { "Pashto, Pushto", "ps" }, { "Persian", "fa" }, { "Polish", "pl" }, { "Portuguese", "pt" }, { "Quechua", "qu" }, { "Rhaeto-Romance", "rm" }, { "Romanian", "ro" }, { "Rundi", "rn" }, { "Russian", "ru" }, { "Samoan", "sm" }, { "Sangro", "sg" }, { "Sanskrit", "sa" }, { "Sardinian", "sc" }, { "Serbian", "sr" }, { "Serbian (Latin)", "sr_RS@latin" }, { "Serbo-Croatian", "sh" }, { "Sesotho", "st" }, { "Setswana", "tn" }, { "Shona", "sn" }, { "Sindhi", "sd" }, { "Sinhalese", "si" }, { "Siswati", "ss" }, { "Slovak", "sk" }, { "Slovenian", "sl" }, { "Somali", "so" }, { "Spanish", "es" }, { "Sundanese", "su" }, { "Swahili", "sw" }, { "Swedish", "sv" }, { "Tagalog", "tl" }, { "Tahitian", "ty" }, { "Tajik", "tg" }, { "Tamil", "ta" }, { "Tatar", "tt" }, { "Telugu", "te" }, { "Thai", "th" }, { "Tibetan", "bo" }, { "Tigrinya", "ti" }, { "Tonga", "to" }, { "Tsonga", "ts" }, { "Turkish", "tr" }, { "Turkmen", "tk" }, { "Twi", "tw" }, { "Ukrainian", "uk" }, { "Urdu", "ur" }, { "Uyghur", "ug" }, { "Uzbek", "uz" }, { "Vietnamese", "vi" }, { "Volapuk", "vo" }, { "Walloon", "wa" }, { "Welsh", "cy" }, { "Wolof", "wo" }, { "Xhosa", "xh" }, { "Yiddish", "yi" }, { "Yoruba", "yo" }, { "Zhuang", "za" }, { "Zulu", "zu" } }; static const std::unordered_map isoCountries = { { "AFGHANISTAN", "AF" }, { "ALBANIA", "AL" }, { "ALGERIA", "DZ" }, { "AMERICAN SAMOA", "AS" }, { "ANDORRA", "AD" }, { "ANGOLA", "AO" }, { "ANGUILLA", "AI" }, { "ANTARCTICA", "AQ" }, { "ANTIGUA AND BARBUDA", "AG" }, { "ARGENTINA", "AR" }, { "ARMENIA", "AM" }, { "ARUBA", "AW" }, { "AUSTRALIA", "AU" }, { "AUSTRIA", "AT" }, { "AZERBAIJAN", "AZ" }, { "BAHAMAS", "BS" }, { "BAHRAIN", "BH" }, { "BANGLADESH", "BD" }, { "BARBADOS", "BB" }, { "BELARUS", "BY" }, { "BELGIUM", "BE" }, { "BELIZE", "BZ" }, { "BENIN", "BJ" }, { "BERMUDA", "BM" }, { "BHUTAN", "BT" }, { "BOLIVIA", "BO" }, { "BOSNIA AND HERZEGOVINA", "BA" }, { "BOTSWANA", "BW" }, { "BOUVET ISLAND", "BV" }, { "BRAZIL", "BR" }, { "BRITISH INDIAN OCEAN TERRITORY", "IO" }, { "BRUNEI DARUSSALAM", "BN" }, { "BULGARIA", "BG" }, { "BURKINA FASO", "BF" }, { "BURUNDI", "BI" }, { "CAMBODIA", "KH" }, { "CAMEROON", "CM" }, { "CANADA", "CA" }, { "CAPE VERDE", "CV" }, { "CAYMAN ISLANDS", "KY" }, { "CENTRAL AFRICAN REPUBLIC", "CF" }, { "CHAD", "TD" }, { "CHILE", "CL" }, { "CHINA", "CN" }, { "CHRISTMAS ISLAND", "CX" }, { "COCOS (KEELING) ISLANDS", "CC" }, { "COLOMBIA", "CO" }, { "COMOROS", "KM" }, { "CONGO", "CG" }, { "CONGO, THE DEMOCRATIC REPUBLIC OF THE", "CD" }, { "COOK ISLANDS", "CK" }, { "COSTA RICA", "CR" }, { "COTE D'IVOIRE", "CI" }, { "CROATIA", "HR" }, { "CUBA", "CU" }, { "CYPRUS", "CY" }, { "CZECH REPUBLIC", "CZ" }, { "DENMARK", "DK" }, { "DJIBOUTI", "DJ" }, { "DOMINICA", "DM" }, { "DOMINICAN REPUBLIC", "DO" }, { "ECUADOR", "EC" }, { "EGYPT", "EG" }, { "EL SALVADOR", "SV" }, { "EQUATORIAL GUINEA", "GQ" }, { "ERITREA", "ER" }, { "ESTONIA", "EE" }, { "ETHIOPIA", "ET" }, { "FALKLAND ISLANDS (MALVINAS)", "FK" }, { "FAROE ISLANDS", "FO" }, { "FIJI", "FJ" }, { "FINLAND", "FI" }, { "FRANCE", "FR" }, { "FRENCH GUIANA", "GF" }, { "FRENCH POLYNESIA", "PF" }, { "FRENCH SOUTHERN TERRITORIES", "TF" }, { "GABON", "GA" }, { "GAMBIA", "GM" }, { "GEORGIA", "GE" }, { "GERMANY", "DE" }, { "GHANA", "GH" }, { "GIBRALTAR", "GI" }, { "GREECE", "GR" }, { "GREENLAND", "GL" }, { "GRENADA", "GD" }, { "GUADELOUPE", "GP" }, { "GUAM", "GU" }, { "GUATEMALA", "GT" }, { "GUINEA", "GN" }, { "GUINEA-BISSAU", "GW" }, { "GUYANA", "GY" }, { "HAITI", "HT" }, { "HEARD ISLAND AND MCDONALD ISLANDS", "HM" }, { "HOLY SEE (VATICAN CITY STATE)", "VA" }, { "HONDURAS", "HN" }, { "HONG KONG", "HK" }, { "HUNGARY", "HU" }, { "ICELAND", "IS" }, { "INDIA", "IN" }, { "INDONESIA", "ID" }, { "IRAN, ISLAMIC REPUBLIC OF", "IR" }, { "IRAQ", "IQ" }, { "IRELAND", "IE" }, { "ISRAEL", "IL" }, { "ITALY", "IT" }, { "JAMAICA", "JM" }, { "JAPAN", "JP" }, { "JORDAN", "JO" }, { "KAZAKHSTAN", "KZ" }, { "KENYA", "KE" }, { "KIRIBATI", "KI" }, { "KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF", "KP" }, { "KOREA, REPUBLIC OF", "KR" }, { "KUWAIT", "KW" }, { "KYRGYZSTAN", "KG" }, { "LAO PEOPLE'S DEMOCRATIC REPUBLIC", "LA" }, { "LATVIA", "LV" }, { "LEBANON", "LB" }, { "LESOTHO", "LS" }, { "LIBERIA", "LR" }, { "LIBYAN ARAB JAMAHIRIYA", "LY" }, { "LIECHTENSTEIN", "LI" }, { "LITHUANIA", "LT" }, { "LUXEMBOURG", "LU" }, { "MACAO", "MO" }, { "MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF", "MK" }, { "MADAGASCAR", "MG" }, { "MALAWI", "MW" }, { "MALAYSIA", "MY" }, { "MALDIVES", "MV" }, { "MALI", "ML" }, { "MALTA", "MT" }, { "MARSHALL ISLANDS", "MH" }, { "MARTINIQUE", "MQ" }, { "MAURITANIA", "MR" }, { "MAURITIUS", "MU" }, { "MAYOTTE", "YT" }, { "MEXICO", "MX" }, { "MICRONESIA, FEDERATED STATES OF", "FM" }, { "MOLDOVA, REPUBLIC OF", "MD" }, { "MONACO", "MC" }, { "MONGOLIA", "MN" }, { "MONTSERRAT", "MS" }, { "MOROCCO", "MA" }, { "MOZAMBIQUE", "MZ" }, { "MYANMAR", "MM" }, { "NAMIBIA", "NA" }, { "NAURU", "NR" }, { "NEPAL", "NP" }, { "NETHERLANDS", "NL" }, { "NETHERLANDS ANTILLES", "AN" }, { "NEW CALEDONIA", "NC" }, { "NEW ZEALAND", "NZ" }, { "NICARAGUA", "NI" }, { "NIGER", "NE" }, { "NIGERIA", "NG" }, { "NIUE", "NU" }, { "NORFOLK ISLAND", "NF" }, { "NORTHERN MARIANA ISLANDS", "MP" }, { "NORWAY", "NO" }, { "OMAN", "OM" }, { "PAKISTAN", "PK" }, { "PALAU", "PW" }, { "PALESTINIAN TERRITORY, OCCUPIED", "PS" }, { "PANAMA", "PA" }, { "PAPUA NEW GUINEA", "PG" }, { "PARAGUAY", "PY" }, { "PERU", "PE" }, { "PHILIPPINES", "PH" }, { "PITCAIRN", "PN" }, { "POLAND", "PL" }, { "PORTUGAL", "PT" }, { "PUERTO RICO", "PR" }, { "QATAR", "QA" }, { "REUNION", "RE" }, { "ROMANIA", "RO" }, { "RUSSIAN FEDERATION", "RU" }, { "RWANDA", "RW" }, { "SAINT HELENA", "SH" }, { "SAINT KITTS AND NEVIS", "KN" }, { "SAINT LUCIA", "LC" }, { "SAINT PIERRE AND MIQUELON", "PM" }, { "SAINT VINCENT AND THE GRENADINES", "VC" }, { "SAMOA", "WS" }, { "SAN MARINO", "SM" }, { "SAO TOME AND PRINCIPE", "ST" }, { "SAUDI ARABIA", "SA" }, { "SENEGAL", "SN" }, { "SEYCHELLES", "SC" }, { "SIERRA LEONE", "SL" }, { "SINGAPORE", "SG" }, { "SLOVAKIA", "SK" }, { "SLOVENIA", "SI" }, { "SOLOMON ISLANDS", "SB" }, { "SOMALIA", "SO" }, { "SOUTH AFRICA", "ZA" }, { "SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS", "GS" }, { "SPAIN", "ES" }, { "SRI LANKA", "LK" }, { "SUDAN", "SD" }, { "SURINAME", "SR" }, { "SVALBARD AND JAN MAYEN", "SJ" }, { "SWAZILAND", "SZ" }, { "SWEDEN", "SE" }, { "SWITZERLAND", "CH" }, { "SYRIAN ARAB REPUBLIC", "SY" }, { "TAIWAN", "TW" }, { "TAJIKISTAN", "TJ" }, { "TANZANIA, UNITED REPUBLIC OF", "TZ" }, { "THAILAND", "TH" }, { "TIMOR-LESTE", "TL" }, { "TOGO", "TG" }, { "TOKELAU", "TK" }, { "TONGA", "TO" }, { "TRINIDAD AND TOBAGO", "TT" }, { "TUNISIA", "TN" }, { "TURKEY", "TR" }, { "TURKMENISTAN", "TM" }, { "TURKS AND CAICOS ISLANDS", "TC" }, { "TUVALU", "TV" }, { "UGANDA", "UG" }, { "UKRAINE", "UA" }, { "UNITED ARAB EMIRATES", "AE" }, { "UNITED KINGDOM", "GB" }, { "UNITED STATES", "US" }, { "UNITED STATES MINOR OUTLYING ISLANDS", "UM" }, { "URUGUAY", "UY" }, { "UZBEKISTAN", "UZ" }, { "VANUATU", "VU" }, { "VENEZUELA", "VE" }, { "VIET NAM", "VN" }, { "VIRGIN ISLANDS, BRITISH", "VG" }, { "VIRGIN ISLANDS, U.S.", "VI" }, { "WALLIS AND FUTUNA", "WF" }, { "WESTERN SAHARA", "EH" }, { "YEMEN", "YE" }, { "YUGOSLAVIA", "YU" }, { "ZAMBIA", "ZM" }, { "ZIMBABWE", "ZW" } }; poedit-3.6.3/src/fileviewer.h0000644000175100001660000000531715011674230011577 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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 _FILEVIEWER_H_ #define _FILEVIEWER_H_ #include "catalog.h" #include #include class WXDLLIMPEXP_FWD_CORE wxButton; class WXDLLIMPEXP_FWD_CORE wxChoice; class WXDLLIMPEXP_FWD_CORE wxStaticText; class WXDLLIMPEXP_FWD_CORE wxFileName; class WXDLLIMPEXP_FWD_CORE wxWebView; class WXDLLIMPEXP_FWD_CORE wxSizer; /** This class implements frame that shows part of file surrounding specified line (40 lines in both directions). */ class FileViewer : public wxFrame { protected: FileViewer(wxWindow *parent); ~FileViewer(); public: static FileViewer *GetAndActivate(); static FileViewer *GetIfExists() { return ms_instance; } /// Shows given reference, i.e. loads the file void ShowReferences(CatalogPtr catalog, CatalogItemPtr item, int defaultReference = 0); private: wxFileName GetFilename(wxString ref) const; void SelectReference(const wxString& ref); void ShowHTMLContent(const wxString& markup); void ShowError(const char *icon, const wxString& msg, const wxString& description = "", const wxString& references = ""); private: wxString m_basePath; wxArrayString m_references; wxChoice *m_file; wxStaticText *m_description; wxButton *m_openInEditor; wxWebView *m_content; wxSizer *m_topBarSizer; void OnChoice(wxCommandEvent &event); void OnEditFile(wxCommandEvent &event); static FileViewer *ms_instance; #ifdef __WXMSW__ struct TempFile; std::shared_ptr m_tmpFile; bool m_usesMSIE; #endif }; #endif // _FILEVIEWER_H_ poedit-3.6.3/src/logcapture.h0000644000175100001660000000501415011674230011575 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2025 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_logcapture_h #define Poedit_logcapture_h #include #include #include // Capture all wx log output into a text buffer and suppress normal output: class LogCapture : public wxLog { public: LogCapture(wxLogLevel level = wxLOG_Info) { m_active = true; m_oldLevel = wxLog::GetLogLevel(); m_verbose = wxLog::GetVerbose(); if (wxThread::IsMain()) m_oldLogger = wxLog::SetActiveTarget(this); else m_oldLogger = wxLog::SetThreadActiveTarget(this); wxLog::SetLogLevel(level); wxLog::SetVerbose(); } ~LogCapture() { Stop(); } void Stop() { if (!m_active) return; m_active = false; if (wxThread::IsMain()) wxLog::SetActiveTarget(m_oldLogger); else wxLog::SetThreadActiveTarget(m_oldLogger); wxLog::SetLogLevel(m_oldLevel); wxLog::SetVerbose(m_verbose); } void DoLogTextAtLevel(wxLogLevel, const wxString& msg) override { if (m_active) Append(msg); } void Append(const wxString& msg) { text << msg << "\n"; } wxString text; private: bool m_active; wxLog *m_oldLogger; wxLogLevel m_oldLevel; bool m_verbose; }; #endif // Poedit_logcapture_h poedit-3.6.3/src/crowdin_client.h0000644000175100001660000001156415011674230012442 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2025 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 #include "cloud_accounts.h" #include "language.h" /** Client to the Crowdin platform. */ class CrowdinClient : public CloudAccountClient { public: /// Return singleton instance of the client. static CrowdinClient& Get(); /// Destroys the singleton, must be called (only) on app shutdown. static void CleanUp(); static constexpr const char* SERVICE_NAME = "Crowdin"; const char *GetServiceName() const override { return SERVICE_NAME; } /// Is the user currently signed into Crowdin? bool IsSignedIn() const override; /// Wrap relative Crowdin URL to absolute URL with attribution static std::string AttributeLink(std::string page); /** 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. */ dispatch::future Authenticate(); void HandleOAuthCallback(const std::string& uri); static bool IsOAuthCallback(const std::string& uri); /// Sign out of Crowdin, forget the token void SignOut() override; /// Retrieve information about the current user asynchronously dispatch::future GetUserInfo() override; /// Retrieve listing of projects accessible to the user dispatch::future> GetUserProjects() override; /// Retrieve details about given project dispatch::future GetProjectDetails(const ProjectInfo& project) override; /// Create filename on local filesystem suitable for the remote file std::wstring CreateLocalFilename(const ProjectInfo& project, const ProjectFile& file, const Language& lang) const override; static std::shared_ptr DoExtractSyncMetadata(Catalog& catalog); std::shared_ptr ExtractSyncMetadata(Catalog& catalog) override { return DoExtractSyncMetadata(catalog); } /// Asynchronously download specific Crowdin file into @a output_file. dispatch::future DownloadFile(const std::wstring& output_file, const ProjectInfo& project, const ProjectFile& file, const Language& lang) override; /// Asynchronously download specific Crowdin file into @a output_file. dispatch::future DownloadFile(const std::wstring& output_file, std::shared_ptr meta) override; /// Asynchronously upload specific Crowdin file data. dispatch::future UploadFile(const std::string& file_buffer, std::shared_ptr meta) override; private: class crowdin_http_client; class crowdin_token; struct FileInternal : public ProjectFile::Internal { std::string fileName, dirName; std::string fullPath; int id, dirId, branchId; }; struct CrowdinSyncMetadata : public FileSyncMetadata { Language lang; int projectId, fileId; std::string xliffRemoteFilename; std::string extension; }; CrowdinClient(); ~CrowdinClient(); // Initialize m_api for use with given authorization; must be called before use bool InitWithAuthToken(const crowdin_token& token); void SignInIfAuthorized(); void SaveAndSetToken(const std::string& token); crowdin_token GetValidToken() const; mutable std::unique_ptr m_cachedAuthToken; std::unique_ptr m_api; std::shared_ptr> m_authCallback; std::string m_authCallbackExpectedState; static CrowdinClient *ms_instance; }; #endif // HAVE_HTTP_CLIENT #endif // Poedit_crowdin_client_h poedit-3.6.3/src/configuration.cpp0000644000175100001660000002001715011674230012632 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2025 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 "configuration.h" #include "str_helpers.h" #include #include #include // This class ensures that wxConfig is only accessed MT-safely class MTSafeConfig : public wxConfig { public: typedef wxConfig Base; MTSafeConfig(const std::wstring& configFile) : wxConfig("", "", configFile, "", wxCONFIG_USE_GLOBAL_FILE | wxCONFIG_USE_LOCAL_FILE) { } struct Lock { Lock(const MTSafeConfig *self_) : self(self_) { self->m_cs.Enter(); } ~Lock() { self->m_cs.Leave(); } const MTSafeConfig *self; }; const wxString& GetPath() const override { Lock l(this); return Base::GetPath(); } bool GetFirstGroup(wxString& str, long& index) const override { Lock l(this); return Base::GetFirstGroup(str, index); } bool GetNextGroup(wxString& str, long& index) const override { Lock l(this); return Base::GetNextGroup(str, index); } bool GetFirstEntry(wxString& str, long& index) const override { Lock l(this); return Base::GetFirstEntry(str, index); } bool GetNextEntry(wxString& str, long& index) const override { Lock l(this); return Base::GetNextEntry(str, index); } size_t GetNumberOfEntries(bool recursive = false) const override { Lock l(this); return Base::GetNumberOfEntries(recursive); } size_t GetNumberOfGroups(bool recursive = false) const override { Lock l(this); return Base::GetNumberOfGroups(recursive); } bool HasGroup(const wxString& name) const override { Lock l(this); return Base::HasGroup(name); } bool HasEntry(const wxString& name) const override { Lock l(this); return Base::HasEntry(name); } bool Flush(bool currentOnly = false) override { Lock l(this); return Base::Flush(currentOnly); } bool RenameEntry(const wxString& oldName, const wxString& newName) override { Lock l(this); return Base::RenameEntry(oldName, newName); } bool RenameGroup(const wxString& oldName, const wxString& newName) override { Lock l(this); return Base::RenameGroup(oldName, newName); } bool DeleteEntry(const wxString& key, bool bDeleteGroupIfEmpty = true) override { Lock l(this); return Base::DeleteEntry(key, bDeleteGroupIfEmpty); } bool DeleteGroup(const wxString& key) override { Lock l(this); return Base::DeleteGroup(key); } bool DeleteAll() override { Lock l(this); return Base::DeleteAll(); } bool DoReadString(const wxString& key, wxString *pStr) const override { Lock l(this); return Base::DoReadString(key, pStr); } bool DoReadLong(const wxString& key, long *pl) const override { Lock l(this); return Base::DoReadLong(key, pl); } #if wxUSE_BASE64 bool DoReadBinary(const wxString& key, wxMemoryBuffer* buf) const override { Lock l(this); return Base::DoReadBinary(key, buf); } #endif // wxUSE_BASE64 bool DoWriteString(const wxString& key, const wxString& value) override { Lock l(this); return Base::DoWriteString(key, value); } bool DoWriteLong(const wxString& key, long value) override { Lock l(this); return Base::DoWriteLong(key, value); } #if wxUSE_BASE64 bool DoWriteBinary(const wxString& key, const wxMemoryBuffer& buf) override { Lock l(this); return Base::DoWriteBinary(key, buf); } #endif // wxUSE_BASE64 private: wxConfigBase *m_real; mutable wxCriticalSection m_cs; }; namespace { // wxConfig isn't thread safe because it's implemented using SetPath. // Make sure it's only accessed from a single location at a time. std::mutex g_configAccess; struct CfgLock { CfgLock() : m_guard(g_configAccess), m_wxLock(dynamic_cast(wxConfigBase::Get())) {} std::lock_guard m_guard; MTSafeConfig::Lock m_wxLock; }; } // anonymous namespace void Config::Initialize(const std::wstring& configFile) { // Because wxConfig is accessed directly elsewhere, both in Poedit (still) // and in wx itself, we must use a n MT-safe implementation. wxConfigBase::Set(new MTSafeConfig(configFile)); wxConfigBase::Get()->SetExpandEnvVars(false); } bool Config::Read(const std::string& key, std::string *out) { CfgLock lock; wxString s; if (!wxConfig::Get()->Read(key, &s)) return false; *out = str::to_utf8(s); return true; } void Config::Write(const std::string& key, const std::string& value) { CfgLock lock; wxConfig::Get()->Write(key, str::to_wx(value)); } bool Config::Read(const std::string& key, std::wstring *out) { CfgLock lock; wxString s; if (!wxConfig::Get()->Read(key, &s)) return false; *out = str::to_wstring(s); return true; } void Config::Write(const std::string& key, const std::wstring& value) { CfgLock lock; wxConfig::Get()->Write(key, str::to_wx(value)); } bool Config::Read(const std::string& key, bool *out) { CfgLock lock; return wxConfig::Get()->Read(key, out); } void Config::Write(const std::string& key, bool value) { CfgLock lock; wxConfig::Get()->Write(key, value); } bool Config::Read(const std::string& key, long *out) { CfgLock lock; return wxConfig::Get()->Read(key, out); } void Config::Write(const std::string& key, long value) { CfgLock lock; wxConfig::Get()->Write(key, value); } ::PretranslateSettings Config::PretranslateSettings() { ::PretranslateSettings s; s.onlyExact = Read("/pretranslate/only_exact", false); s.exactNotFuzzy = Read("/pretranslate/exact_not_fuzzy", true); return s; } void Config::PretranslateSettings(::PretranslateSettings s) { Write("/pretranslate/only_exact", s.onlyExact); Write("/pretranslate/exact_not_fuzzy", s.exactNotFuzzy); } MergeBehavior Config::MergeBehavior() { ::MergeBehavior value = Merge_FuzzyMatch; std::string stored; if (Read("/merge_behavior", &stored)) { if (stored == "fuzzy_match") value = Merge_FuzzyMatch; else if (stored == "use_tm") value = Merge_UseTM; else value = Merge_None; } else { bool use_tm; if (Read("/use_tm_when_updating", &use_tm)) value = use_tm ? Merge_UseTM : Merge_None; } return value; } void Config::MergeBehavior(::MergeBehavior b) { std::string value; switch (b) { case Merge_None: value = "none"; break; case Merge_FuzzyMatch: value = "fuzzy_match"; break; case Merge_UseTM: value = "use_tm"; break; } Write("/merge_behavior", value); } poedit-3.6.3/src/manager.cpp0000644000175100001660000004777015011674230011414 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2001-2025 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 "manager.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "catalog.h" #include "cat_update.h" #include "edapp.h" #include "edframe.h" #include "hidpi.h" #include "menus.h" #include "progress_ui.h" #include "utility.h" namespace { class PseudoToolbarButton : public wxButton { public: PseudoToolbarButton(wxWindow *parent, wxString bitmap, const wxString& label) { #ifdef __WXGTK3__ bitmap += "-symbolic"; #endif wxButton::Create(parent, wxID_ANY, label, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); SetBitmap(wxArtProvider::GetBitmap(bitmap, wxART_TOOLBAR)); } }; } // anonymous namespace ManagerFrame *ManagerFrame::ms_instance = NULL; /*static*/ ManagerFrame *ManagerFrame::Create() { if (!ms_instance) { ms_instance = new ManagerFrame; ms_instance->Show(true); } return ms_instance; } ManagerFrame::ManagerFrame() : ManagerFrameBase(NULL, -1, _("Poedit - Catalogs manager"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE, "manager") { #ifdef __WXMSW__ SetIcons(wxIconBundle(wxStandardPaths::Get().GetResourcesDir() + "\\Resources\\Poedit.ico")); #endif #ifndef __WXOSX__ SetMenuBar(wxGetApp().CreateMenu(Menu::WelcomeWindow)); #endif ms_instance = this; auto panel = new wxPanel(this, wxID_ANY); auto supertopsizer = new wxBoxSizer(wxHORIZONTAL); supertopsizer->Add(panel, wxSizerFlags(1).Expand()); SetSizer(supertopsizer); auto topsizer = new wxBoxSizer(wxHORIZONTAL); panel->SetSizer(topsizer); auto sidebarSizer = new wxBoxSizer(wxVERTICAL); topsizer->Add(sidebarSizer, wxSizerFlags().Expand().Border(wxALL, PX(10))); m_listPrj = new wxListBox(panel, wxID_ANY, wxDefaultPosition, wxSize(PX(200), -1), 0, nullptr, MSW_OR_OTHER(wxBORDER_SIMPLE, wxBORDER_SUNKEN)); #ifdef __WXOSX__ if (@available(macOS 11.0, *)) ((NSTableView*)[((NSScrollView*)m_listPrj->GetHandle()) documentView]).style = NSTableViewStyleFullWidth; #endif sidebarSizer->Add(m_listPrj, wxSizerFlags(1).Expand()); #if defined(__WXOSX__) auto btn_new = new wxBitmapButton(panel, wxID_ANY, wxArtProvider::GetBitmap("NSAddTemplate"), wxDefaultPosition, wxSize(18, 18), wxBORDER_SIMPLE); auto btn_delete = new wxBitmapButton(panel, wxID_ANY, wxArtProvider::GetBitmap("NSRemoveTemplate"), wxDefaultPosition, wxSize(18,18), wxBORDER_SIMPLE); int editButtonStyle = wxBU_EXACTFIT | wxBORDER_SIMPLE; #elif defined(__WXMSW__) auto btn_new = new wxBitmapButton(panel, wxID_ANY, wxArtProvider::GetBitmap("list-add"), wxDefaultPosition, wxSize(PX(19),PX(19))); auto btn_delete = new wxBitmapButton(panel, wxID_ANY, wxArtProvider::GetBitmap("list-remove"), wxDefaultPosition, wxSize(PX(19),PX(19))); int editButtonStyle = wxBU_EXACTFIT; #elif defined(__WXGTK__) auto btn_new = new wxBitmapButton(panel, wxID_ANY, wxArtProvider::GetBitmap("list-add@symbolic"), wxDefaultPosition, wxDefaultSize, wxNO_BORDER); auto btn_delete = new wxBitmapButton(panel, wxID_ANY, wxArtProvider::GetBitmap("list-remove@symbolic"), wxDefaultPosition, wxDefaultSize, wxNO_BORDER); int editButtonStyle = wxBU_EXACTFIT | wxBORDER_NONE; #endif auto btn_edit = new wxButton(panel, wxID_ANY, _(L"Edit…"), wxDefaultPosition, wxSize(-1, MSW_OR_OTHER(PX(19), -1)), editButtonStyle); #ifndef __WXGTK__ btn_edit->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif btn_new->SetToolTip(_("Create new translations project")); btn_delete->SetToolTip(_("Delete the project")); btn_edit->SetToolTip(_("Edit the project")); auto buttonSizer = new wxBoxSizer(wxHORIZONTAL); buttonSizer->Add(btn_new); #ifdef __WXOSX__ buttonSizer->AddSpacer(PX(1)); #endif buttonSizer->Add(btn_delete); #ifdef __WXOSX__ buttonSizer->AddSpacer(PX(1)); #endif buttonSizer->Add(btn_edit); sidebarSizer->AddSpacer(PX(1)); sidebarSizer->Add(buttonSizer, wxSizerFlags().Expand().BORDER_MACOS(wxLEFT, PX(1))); m_details = new wxPanel(panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, MSW_OR_OTHER(wxBORDER_SIMPLE, wxBORDER_SUNKEN)); topsizer->Add(m_details, wxSizerFlags(1).ReserveSpaceEvenIfHidden().Expand().Border(wxTOP|wxBOTTOM|wxRIGHT, PX(10))); auto detailsSizer = new wxBoxSizer(wxVERTICAL); m_details->SetSizer(detailsSizer); auto topbar = new wxBoxSizer(wxHORIZONTAL); detailsSizer->AddSpacer(PX(5)); detailsSizer->Add(topbar, wxSizerFlags().Expand().Border(wxALL, PX(5))); detailsSizer->AddSpacer(PX(5)); m_projectName = new wxStaticText(m_details, wxID_ANY, ""); m_projectName->SetFont(m_projectName->GetFont().Larger().Bold()); topbar->Add(m_projectName, wxSizerFlags().Center().Border(wxRIGHT, PX(10))); topbar->AddStretchSpacer(); auto btn_update = new PseudoToolbarButton(m_details, "poedit-update", _("Update all")); btn_update->SetToolTip(_("Update all catalogs in the project")); topbar->Add(btn_update, wxSizerFlags().Border(wxLEFT, PX(5))); m_listCat = new wxListCtrl(m_details, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE | wxLC_REPORT | wxLC_SINGLE_SEL); #ifdef __WXOSX__ m_listCat->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif detailsSizer->Add(m_listCat, wxSizerFlags(1).Expand()); auto bmp_no = wxArtProvider::GetBitmap("poedit-status-cat-no"); wxImageList *list = new wxImageList(bmp_no.GetScaledWidth(), bmp_no.GetScaledHeight()); list->Add(bmp_no); list->Add(wxArtProvider::GetBitmap("poedit-status-cat-mid")); list->Add(wxArtProvider::GetBitmap("poedit-status-cat-ok")); m_listCat->AssignImageList(list, wxIMAGE_LIST_SMALL); ColorScheme::SetupWindowColors(this, [=] { wxColour col; if (ColorScheme::GetWindowMode(this) == ColorScheme::Light) col = *wxWHITE; else col = GetDefaultAttributes().colBg; m_details->SetBackgroundColour(col); #ifdef __WXMSW__ SetBackgroundColour(col); btn_update->SetBackgroundColour(col); #endif }); m_details->Hide(); m_curPrj = -1; int last = (int)wxConfig::Get()->Read("manager_last_selected", (long)0); // FIXME: do this in background (here and elsewhere) UpdateListPrj(last); if (m_listPrj->GetCount() > 0) UpdateListCat(last); RestoreWindowState(this, wxSize(PX(900), PX(600))); m_listPrj->Bind(wxEVT_LISTBOX, &ManagerFrame::OnSelectProject, this); m_listCat->Bind(wxEVT_LIST_ITEM_ACTIVATED, &ManagerFrame::OnOpenCatalog, this); btn_new->Bind(wxEVT_BUTTON, &ManagerFrame::OnNewProject, this); btn_delete->Bind(wxEVT_BUTTON, &ManagerFrame::OnDeleteProject, this); btn_delete->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e) { e.Enable(m_listPrj->GetSelection() != wxNOT_FOUND); }); btn_edit->Bind(wxEVT_BUTTON, &ManagerFrame::OnEditProject, this); btn_update->Bind(wxEVT_BUTTON, &ManagerFrame::OnUpdateProject, this); } ManagerFrame::~ManagerFrame() { SaveWindowState(this); wxConfigBase *cfg = wxConfig::Get(); int sel = m_listPrj->GetSelection(); if (sel != -1) { cfg->Write("manager_last_selected", (long)(wxIntPtr)m_listPrj->GetClientData(sel)); } ms_instance = NULL; } void ManagerFrame::UpdateListPrj(int select) { wxConfigBase *cfg = wxConfig::Get(); long max = cfg->Read("Manager/max_project_num", (long)0) + 1; wxString key, name; m_listPrj->Clear(); int item = 0; for (int i = 0; i <= max; i++) { key.Printf("Manager/project_%i/Name", i); name = cfg->Read(key, wxEmptyString); if (!name.empty()) { m_listPrj->Append(name, (void*)(wxIntPtr)i); if (i == select) { m_listPrj->SetSelection(item); m_curPrj = select; UpdateListCat(m_curPrj); select = -1; } item++; } } } static void AddCatalogToList(wxListCtrl *list, int i, int id, const wxString& file) { wxConfigBase *cfg = wxConfig::Get(); int all = 0, fuzzy = 0, untranslated = 0, badtokens = 0; wxString lastmodified; time_t modtime; wxString key; wxString file2(file); file2.Replace("/", "_"); file2.Replace("\\", "_"); // FIXME: move cache to cache file and out of *config* file! key.Printf("Manager/project_%i/FilesCache/%s/", id, file2.c_str()); modtime = cfg->Read(key + "timestamp", (long)0); if (modtime == wxFileModificationTime(file)) { all = (int)cfg->Read(key + "all", (long)0); fuzzy = (int)cfg->Read(key + "fuzzy", (long)0); badtokens = (int)cfg->Read(key + "badtokens", (long)0); untranslated = (int)cfg->Read(key + "untranslated", (long)0); lastmodified = cfg->Read(key + "lastmodified", "?"); } else { // suppress error messages, we don't care about specifics of the error // FIXME: *do* indicate error somehow wxLogNull nullLog; // FIXME: don't re-load the catalog if it's already loaded in the // editor, reuse loaded instance try { auto cat = Catalog::Create(file); if (cat) { cat->GetStatistics(&all, &fuzzy, &badtokens, &untranslated, NULL); modtime = wxFileModificationTime(file); lastmodified = cat->Header().RevisionDate; cfg->Write(key + "timestamp", (long)modtime); cfg->Write(key + "all", (long)all); cfg->Write(key + "fuzzy", (long)fuzzy); cfg->Write(key + "badtokens", (long)badtokens); cfg->Write(key + "untranslated", (long)untranslated); cfg->Write(key + "lastmodified", lastmodified); } } catch (...) { // FIXME: Nicer way of showing errors, this is hacky lastmodified = L"âš ï¸ " + DescribeCurrentException(); badtokens = 1; } } int icon; if (fuzzy+untranslated+badtokens == 0) icon = 2; else if ((double)all / (fuzzy+untranslated+badtokens) <= 3) icon = 0; else icon = 1; wxString tmp; // FIXME: don't put full filename there, remove common prefix (of all // directories in project's settings) list->InsertItem(i, file, icon); tmp.Printf("%i", all); list->SetItem(i, 1, tmp); tmp.Printf("%i", untranslated); list->SetItem(i, 2, tmp); tmp.Printf("%i", fuzzy); list->SetItem(i, 3, tmp); tmp.Printf("%i", badtokens); list->SetItem(i, 4, tmp); list->SetItem(i, 5, lastmodified); } void ManagerFrame::UpdateListCat(int id) { wxBusyCursor bcur; if (id == -1) id = m_curPrj; m_details->Show(); m_projectName->SetLabel(m_listPrj->GetStringSelection()); m_details->Layout(); wxConfigBase *cfg = wxConfig::Get(); wxString key; key.Printf("Manager/project_%i/", id); wxString dirs = cfg->Read(key + "Dirs", wxEmptyString); wxStringTokenizer tkn(dirs, wxPATH_SEP); m_catalogs.Clear(); while (tkn.HasMoreTokens()) wxDir::GetAllFiles(tkn.GetNextToken(), &m_catalogs, "*.po", wxDIR_FILES | wxDIR_DIRS); m_catalogs.Sort(); m_listCat->Freeze(); m_listCat->ClearAll(); m_listCat->InsertColumn(0, _("File")); m_listCat->InsertColumn(1, _("Total")); m_listCat->InsertColumn(2, _("Untrans")); m_listCat->InsertColumn(3, wxGETTEXT_IN_CONTEXT("column/row header", "Needs Work")); m_listCat->InsertColumn(4, _("Errors")); m_listCat->InsertColumn(5, _("Last modified")); // FIXME: this is time-consuming, it should be done in parallel on // multi-core/SMP systems for (int i = 0; i < (int)m_catalogs.GetCount(); i++) AddCatalogToList(m_listCat, i, id, m_catalogs[i]); m_listCat->SetColumnWidth(0, wxLIST_AUTOSIZE); m_listCat->SetColumnWidth(1, wxLIST_AUTOSIZE_USEHEADER); m_listCat->SetColumnWidth(2, wxLIST_AUTOSIZE_USEHEADER); m_listCat->SetColumnWidth(3, wxLIST_AUTOSIZE_USEHEADER); m_listCat->SetColumnWidth(4, wxLIST_AUTOSIZE_USEHEADER); m_listCat->SetColumnWidth(5, wxLIST_AUTOSIZE); m_listCat->Thaw(); } class ProjectDlg : public wxDialog { protected: DECLARE_EVENT_TABLE() void OnBrowse(wxCommandEvent& event); }; BEGIN_EVENT_TABLE(ProjectDlg, wxDialog) EVT_BUTTON(XRCID("adddir"), ProjectDlg::OnBrowse) END_EVENT_TABLE() void ProjectDlg::OnBrowse(wxCommandEvent&) { wxDirDialog dlg(this, _("Select directory")); if (dlg.ShowModal() == wxID_OK) { wxArrayString a; wxEditableListBox *l = XRCCTRL(*this, "prj_dirs", wxEditableListBox); l->GetStrings(a); a.Add(dlg.GetPath()); l->SetStrings(a); } } template void ManagerFrame::EditProject(int id, TFunctor completionHandler) { wxConfigBase *cfg = wxConfig::Get(); wxString key; key.Printf("Manager/project_%i/", id); wxWindowPtr dlg(new ProjectDlg); wxXmlResource::Get()->LoadDialog(dlg.get(), this, "manager_prj_dlg"); wxEditableListBox *prj_dirs = new wxEditableListBox(dlg.get(), XRCID("prj_dirs"), _("Directories:")); wxXmlResource::Get()->AttachUnknownControl("prj_dirs", prj_dirs); XRCCTRL(*dlg, "prj_name", wxTextCtrl)->SetValue(cfg->Read(key + "Name")); { wxString dirs = cfg->Read(key + "Dirs"); wxArrayString adirs; wxStringTokenizer tkn(dirs, wxPATH_SEP); while (tkn.HasMoreTokens()) adirs.Add(tkn.GetNextToken()); prj_dirs->SetStrings(adirs); } dlg->ShowWindowModalThenDo([=](int retcode){ if (retcode == wxID_OK) { wxString dirs; wxArrayString adirs; cfg->Write(key + "Name", XRCCTRL(*dlg, "prj_name", wxTextCtrl)->GetValue()); prj_dirs->GetStrings(adirs); if (adirs.GetCount() > 0) dirs = adirs[0]; for (size_t i = 1; i < adirs.GetCount(); i++) dirs << wxPATH_SEP << adirs[i]; cfg->Write(key + "Dirs", dirs); UpdateListPrj(id); UpdateListCat(id); } completionHandler(retcode == wxID_OK); }); } void ManagerFrame::DeleteProject(int id) { wxString key; key.Printf("Manager/project_%i", id); wxConfig::Get()->DeleteGroup(key); UpdateListPrj(); if (id == m_curPrj) { m_listCat->ClearAll(); m_curPrj = -1; } } void ManagerFrame::NotifyFileChanged(const wxString& /*catalog*/) { // VS: We must do full update even if the file 'catalog' is not in // m_catalogs. The reason is simple: the user might use SaveAs // function and save new file in one of directories that // this project matches... UpdateListCat(); } void ManagerFrame::OnNewProject(wxCommandEvent&) { wxConfigBase *cfg = wxConfig::Get(); long max = cfg->Read("Manager/max_project_num", (long)0) + 1; wxString key; for (int i = 0; i <= max; i++) { key.Printf("Manager/project_%i/Name", i); if (cfg->Read(key, wxEmptyString).empty()) { m_listPrj->Append(_(""), (void*)(wxIntPtr)i); m_curPrj = i; EditProject(i, [=](bool added){ if (added) { if (i == max) cfg->Write("Manager/max_project_num", (long)max); } else { DeleteProject(i); } }); return; } } } void ManagerFrame::OnEditProject(wxCommandEvent&) { int sel = m_listPrj->GetSelection(); if (sel == -1) return; EditProject((int)(wxIntPtr)m_listPrj->GetClientData(sel), [](bool){}); } void ManagerFrame::OnDeleteProject(wxCommandEvent&) { int sel = m_listPrj->GetSelection(); if (sel == -1) return; auto prjname = m_listPrj->GetStringSelection(); wxWindowPtr dlg(new wxMessageDialog ( this, wxString::Format(_(L"Do you want to delete project “%sâ€?"), prjname), MSW_OR_OTHER(_("Delete project"), ""), wxYES_NO | wxNO_DEFAULT | wxICON_WARNING )); dlg->SetExtendedMessage(_("Deleting the project will not delete any translation files.")); dlg->ShowWindowModalThenDo([this,dlg,sel](int retval) { if (retval == wxID_YES) DeleteProject((int)(wxIntPtr)m_listPrj->GetClientData(sel)); }); } void ManagerFrame::OnSelectProject(wxCommandEvent&) { int sel = m_listPrj->GetSelection(); if (sel == -1) { m_details->Hide(); return; } m_curPrj = (int)(wxIntPtr)m_listPrj->GetClientData(sel); UpdateListCat(m_curPrj); } void ManagerFrame::OnUpdateProject(wxCommandEvent&) { int sel = m_listPrj->GetSelection(); if (sel == -1) return; wxWindowPtr dlg(new wxMessageDialog(this, _("Update all catalogs in this project?"), MSW_OR_OTHER(_("Confirmation"), ""), wxYES_NO | wxICON_QUESTION)); dlg->SetExtendedMessage(_("Performs update from source code on all files in the project.")); dlg->ShowWindowModalThenDo([this,dlg,sel](int retval) { if (retval != wxID_YES) return; auto cancellation = std::make_shared(); wxWindowPtr progress(new ProgressWindow(this, _("Updating project catalogs"), cancellation)); progress->RunTaskThenDo([=]() { Progress progress((int)m_catalogs.GetCount()); for (size_t i = 0; i < m_catalogs.GetCount(); i++) { if (cancellation->is_cancelled()) return; wxString f = m_catalogs[i]; Progress subtask(1, progress, 1); auto cat = POCatalog::Create(f); if (auto merged = PerformUpdateFromSourcesSimple(cat)) { Catalog::ValidationResults validation_results; Catalog::CompilationStatus mo_status; merged.updated_catalog->Save(f, false, validation_results, mo_status); } } }, [=]() { UpdateListCat(); }); }); } void ManagerFrame::OnOpenCatalog(wxListEvent& event) { PoeditFrame *f = PoeditFrame::Create(m_catalogs[event.GetIndex()]); if (f) f->Raise(); } poedit-3.6.3/src/custom_buttons.h0000644000175100001660000000755115011674230012530 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2025 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_custom_buttons_h #define Poedit_custom_buttons_h #include #include #ifdef __WXOSX__ #include #endif #ifdef __WXMSW__ #include #endif #include #if defined(__WXOSX__) typedef wxNativeWindow ActionButtonBase; #elif defined(__WXGTK__) typedef wxButton ActionButtonBase; #elif defined(__WXMSW__) typedef wxCommandLinkButton ActionButtonBase; #endif /// Larger button generating wxEVT_MENU, e.g. for welcome screen class ActionButton : public ActionButtonBase { public: ActionButton(wxWindow *parent, wxWindowID winid, const wxString& symbolicName, const wxString& label, const wxString& note); private: #ifndef __WXOSX__ void OnPressed(wxCommandEvent& e); #endif #ifdef __WXMSW__ bool MSWOnDraw(WXDRAWITEMSTRUCT* wxdis) override; wxString m_title, m_note; wxFont m_titleFont; #endif }; #ifdef __WXOSX__ /** iOS/Windows10/GtkSwitch style button. Mimics wxToggleButton with API and sent events. */ class SwitchButton : public wxNativeWindow { public: SwitchButton(wxWindow *parent, wxWindowID winid, const wxString& label); ~SwitchButton(); void SetColors(const wxColour& on, const wxColour& offLabel); void SetValue(bool value); bool GetValue() const; void SendToggleEvent(); private: class impl; std::unique_ptr m_impl; }; /** A partially transparent button. */ class TranslucentButton : public wxNativeWindow { public: TranslucentButton(wxWindow *parent, wxWindowID winid, const wxString& label); }; #else // !__WXOSX__ class SwitchButton : public wxToggleButton { public: SwitchButton(wxWindow *parent, wxWindowID winid, const wxString& label); void SetColors(const wxColour& on, const wxColour& offLabel); #ifdef __WXMSW__ #if wxUSE_ACCESSIBILITY wxAccessible* CreateAccessible() override; #endif // wxUSE_ACCESSIBILITY bool ShouldInheritColours() const override { return true; } void OnMouseClick(wxMouseEvent& e); bool MSWOnDraw(WXDRAWITEMSTRUCT *wxdis) override; wxSize DoGetBestSize() const override; private: #if wxUSE_ACCESSIBILITY class accessible : public wxAccessible { public: accessible(SwitchButton* win) : wxAccessible(wxDynamicCast(win, wxWindow)) {} wxAccStatus GetRole(int childId, wxAccRole* role) override; wxAccStatus GetState(int childId, long* state) override; }; #endif // wxUSE_ACCESSIBILITY wxColour m_clrOn, m_clrOffLabel; #endif // __WXMSW__ }; class TranslucentButton : public wxButton { public: TranslucentButton(wxWindow *parent, wxWindowID winid, const wxString& label); }; #endif // !__WXOSX__ #endif // Poedit_custom_buttons_h poedit-3.6.3/src/catalog.cpp0000644000175100001660000007615315011674230011411 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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 "catalog.h" #include "catalog_po.h" #include "catalog_xliff.h" #include "catalog_json.h" #include "catalog_xcloc.h" #include "configuration.h" #include "errors.h" #include "extractors/extractor.h" #include "gexecute.h" #include "qa_checks.h" #include "str_helpers.h" #include "utility.h" #include "version.h" #include "language.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // ---------------------------------------------------------------------- // Textfile processing utilities: // ---------------------------------------------------------------------- namespace { // Mostly correct regex for removing HTML markup const std::wregex RE_APPROXIMATE_MARKUP(L"<[^>]*>"); // Fixup some common issues with filepaths in PO files, due to old Poedit versions, // user misunderstanding or Poedit bugs: wxString FixBrokenSearchPathValue(wxString p) { if (p.empty()) return p; // no DOS paths please: p.Replace("\\", "/"); if (p.Last() == '/') p.RemoveLast(); return p; } // Detect whether source strings are just IDs instead of actual text bool DetectUseOfSymbolicIDs(Catalog& cat) { // Employ a simple heuristic: IDs won't contain whitespace. // This is not enough as is, because some (notably Asian) languages don't use // whitespace, so also check for use of ASCII characters only. Typical non-symbolic // files will fail at least one of the tests in most of their strings. // for (auto& i: cat.items()) { for (auto c: i->GetRawString()) { if (c == ' ' || c >= 0x80) return false; } } wxLogTrace("poedit", "detected use of symbolic IDs for source language"); return true; } } // anonymous namespace // ---------------------------------------------------------------------- // Catalog::HeaderData // ---------------------------------------------------------------------- void Catalog::HeaderData::FromString(const wxString& str) { wxStringTokenizer tkn(str, "\n"); wxString ln; m_entries.clear(); while (tkn.HasMoreTokens()) { ln = tkn.GetNextToken(); size_t pos = ln.find(_T(':')); if (pos == wxString::npos) { wxLogError(_(L"Malformed header: “%sâ€"), ln.c_str()); } else { Entry en; en.Key = wxString(ln.substr(0, pos)).Strip(wxString::both); en.Value = wxString(ln.substr(pos + 1)).Strip(wxString::both); m_entries.push_back(en); wxLogTrace("poedit.header", "%s='%s'", en.Key.c_str(), en.Value.c_str()); } } ParseDict(); } wxString Catalog::HeaderData::ToString(const wxString& line_delim) { UpdateDict(); wxString hdr; for (auto& e: m_entries) { hdr << EscapeCString(e.Key) << ": " << EscapeCString(e.Value) << "\\n" << line_delim; } return hdr; } void Catalog::HeaderData::NormalizeHeaderOrder() { // This is the order of header lines in a POT file // generated by GNU Gettext's xgettext utility, or // rearranged by the msgmerge utility. const wxString canonicalOrder[] = { "Project-Id-Version", "Report-Msgid-Bugs-To", "POT-Creation-Date", "PO-Revision-Date", "Last-Translator", "Language-Team", "Language", "MIME-Version", "Content-Type", "Content-Transfer-Encoding", "Plural-Forms" }; const wxArrayString orderArr(sizeof(canonicalOrder) / sizeof(*canonicalOrder), canonicalOrder); // Sort standard header lines to the beginning of the header, in their // canonical order, and the rest after them, in their original order. std::stable_sort(m_entries.begin(), m_entries.end(), [&orderArr](const Entry& a, const Entry& b) { auto coalesce = [&orderArr](int x) -> int { if (x == wxNOT_FOUND) return 1 + static_cast(orderArr.GetCount()); else return x; }; return coalesce(orderArr.Index(a.Key)) < coalesce(orderArr.Index(b.Key)); }); } void Catalog::HeaderData::UpdateDict() { SetHeader("Project-Id-Version", Project); SetHeader("POT-Creation-Date", CreationDate); SetHeader("PO-Revision-Date", RevisionDate); if (TranslatorEmail.empty()) { if (!Translator.empty() || !HasHeader("Last-Translator")) SetHeader("Last-Translator", Translator); // else: don't modify the header, leave as-is } else { if (Translator.empty()) SetHeader("Last-Translator", TranslatorEmail); else SetHeader("Last-Translator", Translator + " <" + TranslatorEmail + ">"); } SetHeader("Language-Team", LanguageTeam); SetHeader("MIME-Version", "1.0"); SetHeader("Content-Type", "text/plain; charset=" + Charset); SetHeader("Content-Transfer-Encoding", "8bit"); SetHeaderNotEmpty("Language", Lang.Code()); SetHeader("X-Generator", wxString::FromAscii("Poedit " POEDIT_VERSION_SHORT)); // Set extended information: SetHeaderNotEmpty("X-Poedit-SourceCharset", SourceCodeCharset); if (!Keywords.empty()) { wxString kw; for (size_t i = 0; i < Keywords.GetCount(); i++) kw += Keywords[i] + _T(';'); kw.RemoveLast(); SetHeader("X-Poedit-KeywordsList", kw); } SetHeaderNotEmpty("X-Poedit-Basepath", BasePath); unsigned i = 0; while (true) { wxString path; path.Printf("X-Poedit-SearchPath-%i", i); if (!HasHeader(path)) break; DeleteHeader(path); i++; } i = 0; while (true) { wxString path; path.Printf("X-Poedit-SearchPathExcluded-%i", i); if (!HasHeader(path)) break; DeleteHeader(path); i++; } for (i = 0; i < SearchPaths.size(); i++) { wxString path; path.Printf("X-Poedit-SearchPath-%i", i); SetHeader(path, SearchPaths[i]); } for (i = 0; i < SearchPathsExcluded.size(); i++) { wxString path; path.Printf("X-Poedit-SearchPathExcluded-%i", i); SetHeader(path, SearchPathsExcluded[i]); } NormalizeHeaderOrder(); } void Catalog::HeaderData::ParseDict() { wxString dummy; Project = GetHeader("Project-Id-Version"); CreationDate = GetHeader("POT-Creation-Date"); RevisionDate = GetHeader("PO-Revision-Date"); dummy = GetHeader("Last-Translator"); if (!dummy.empty()) { wxStringTokenizer tkn(dummy, "<>"); if (tkn.CountTokens() != 2) { Translator = dummy; TranslatorEmail = wxEmptyString; } else { Translator = tkn.GetNextToken().Strip(wxString::trailing); TranslatorEmail = tkn.GetNextToken(); } } LanguageTeam = GetHeader("Language-Team"); wxString ctype = GetHeader("Content-Type"); int charsetPos = ctype.Find("; charset="); if (charsetPos != -1) { Charset = ctype.Mid(charsetPos + strlen("; charset=")).Strip(wxString::both); } else { Charset = "UTF-8"; } // Parse language information, with backwards compatibility with X-Poedit-*: Lang = Language(); wxString languageCode = GetHeader("Language"); if (!languageCode.empty()) { Lang = Language::TryParse(languageCode.ToStdWstring()); } if (!Lang.IsValid()) { // try looking for non-standard Qt extension languageCode = GetHeader("X-Language"); if (!languageCode.empty()) Lang = Language::TryParse(languageCode.ToStdWstring()); } if (!Lang.IsValid()) { wxString X_Language = GetHeader("X-Poedit-Language"); wxString X_Country = GetHeader("X-Poedit-Country"); if ( !X_Language.empty() ) Lang = Language::FromLegacyNames(X_Language.utf8_string(), X_Country.utf8_string()); } DeleteHeader("X-Poedit-Language"); DeleteHeader("X-Poedit-Country"); // Parse extended information: SourceCodeCharset = GetHeader("X-Poedit-SourceCharset"); BasePath = FixBrokenSearchPathValue(GetHeader("X-Poedit-Basepath")); Keywords.Clear(); wxString kwlist = GetHeader("X-Poedit-KeywordsList"); if (!kwlist.empty()) { wxStringTokenizer tkn(kwlist, ";"); while (tkn.HasMoreTokens()) Keywords.Add(tkn.GetNextToken()); } else { // try backward-compatibility version X-Poedit-Keywords. The difference // is the separator used, see // http://sourceforge.net/tracker/index.php?func=detail&aid=1206579&group_id=27043&atid=389153 wxString kw = GetHeader("X-Poedit-Keywords"); if (!kw.empty()) { wxStringTokenizer tkn(kw, ","); while (tkn.HasMoreTokens()) Keywords.Add(tkn.GetNextToken()); // and remove it, it's not for newer versions: DeleteHeader("X-Poedit-Keywords"); } } SearchPaths.clear(); int i = 0; while (true) { wxString path; path.Printf("X-Poedit-SearchPath-%i", i); if (!HasHeader(path)) break; wxString p = FixBrokenSearchPathValue(GetHeader(path)); if (!p.empty()) SearchPaths.push_back(p); i++; } SearchPathsExcluded.clear(); i = 0; while (true) { wxString path; path.Printf("X-Poedit-SearchPathExcluded-%i", i); if (!HasHeader(path)) break; wxString p = FixBrokenSearchPathValue(GetHeader(path)); if (!p.empty()) SearchPathsExcluded.push_back(p); i++; } } wxString Catalog::HeaderData::GetHeader(const wxString& key) const { const Entry *e = Find(key); if (e) return e->Value; else return wxEmptyString; } bool Catalog::HeaderData::HasHeader(const wxString& key) const { return Find(key) != NULL; } void Catalog::HeaderData::SetHeader(const wxString& key, const wxString& value) { Entry *e = (Entry*) Find(key); if (e) { e->Value = value; } else { Entry en; en.Key = key; en.Value = value; m_entries.push_back(en); } } void Catalog::HeaderData::SetHeaderNotEmpty(const wxString& key, const wxString& value) { if (value.empty()) DeleteHeader(key); else SetHeader(key, value); } void Catalog::HeaderData::DeleteHeader(const wxString& key) { if (HasHeader(key)) { Entries enew; for (Entries::const_iterator i = m_entries.begin(); i != m_entries.end(); i++) { if (i->Key != key) enew.push_back(*i); } m_entries = enew; } } const Catalog::HeaderData::Entry * Catalog::HeaderData::Find(const wxString& key) const { size_t size = m_entries.size(); for (size_t i = 0; i < size; i++) { if (m_entries[i].Key == key) return &(m_entries[i]); } return NULL; } // ---------------------------------------------------------------------- // Catalog class // ---------------------------------------------------------------------- Catalog::Catalog(Type type) { m_fileType = type; m_header.BasePath = wxEmptyString; } static inline wxString GetCurrentTimeString() { return wxDateTime::Now().Format("%Y-%m-%d %H:%M%z"); } void Catalog::CreateNewHeader() { HeaderData &dt = Header(); dt.CreationDate = GetCurrentTimeString(); dt.RevisionDate = dt.CreationDate; dt.Lang = Language(); if (m_fileType == Type::POT) dt.SetHeader("Plural-Forms", "nplurals=INTEGER; plural=EXPRESSION;"); // default invalid value dt.Project = wxEmptyString; dt.LanguageTeam = wxEmptyString; dt.Charset = "UTF-8"; dt.Translator = wxConfig::Get()->Read("translator_name", wxEmptyString); dt.TranslatorEmail = wxConfig::Get()->Read("translator_email", wxEmptyString); dt.SourceCodeCharset = wxEmptyString; dt.BasePath = "."; dt.UpdateDict(); } void Catalog::CreateNewHeader(const Catalog::HeaderData& pot_header) { HeaderData &dt = Header(); dt = pot_header; if ( !dt.RevisionDate.empty() ) dt.RevisionDate = GetCurrentTimeString(); // UTF-8 should be used by default no matter what the POT uses dt.Charset = "UTF-8"; // clear the fields that are translation-specific: dt.Lang = Language(); if (dt.LanguageTeam == "LANGUAGE ") dt.LanguageTeam.clear(); if (dt.Project == "PROJECT VERSION") dt.Project.clear(); if (dt.GetHeader("Plural-Forms") == "nplurals=INTEGER; plural=EXPRESSION;") dt.DeleteHeader("Plural-Forms"); // translator should be pre-filled & not the default "FULL NAME " dt.DeleteHeader("Last-Translator"); dt.Translator = wxConfig::Get()->Read("translator_name", wxEmptyString); dt.TranslatorEmail = wxConfig::Get()->Read("translator_email", wxEmptyString); dt.UpdateDict(); } CatalogItemPtr Catalog::FindItemByLine(int lineno) { int i = FindItemIndexByLine(lineno); return i == -1 ? CatalogItemPtr() : m_items[i]; } int Catalog::FindItemIndexByLine(int lineno) { int last = -1; for (auto& i: m_items) { if (i->GetLineNumber() > lineno) return last; last++; } return last; } bool Catalog::RemoveSameAsSourceTranslations() { bool changed = false; for (auto& i: m_items) { if (i ->GetString() == i->GetTranslation()) { if (i->HasPlural()) { // we can only easily do this operation for languages that have singular+plural, skip everything else: if (GetPluralFormsCount() != 2 || i->GetPluralString() != i->GetTranslation(1)) continue; } i->ClearTranslation(); changed = true; } } return changed; } namespace { 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")); case Catalog::Type::XLIFF: return MaskForType("*.xlf;*.xliff", _("XLIFF Translation Files")); case Catalog::Type::XCLOC: return MaskForType("*.xcloc", _("Xcode Localization Catalog")); case Catalog::Type::JSON: return MaskForType("*.json", _("JSON Translation Files")); case Catalog::Type::JSON_FLUTTER: // TRANSLATORS: "Flutter" is proper noun, name of a developer tool return MaskForType("*.arb", _("Flutter Translation Files")); } return ""; // silence stupid warning } } // anonymous namespace wxString Catalog::GetAllTypesFileMask() { return MaskForType("*.po;*.pot;*.xlf;*.xliff;*.xcloc;*.json;*.arb", _("All Translation Files"), /*showExt=*/false) + "|" + GetTypesFileMask({ Type::PO, Type::POT, Type::XLIFF, Type::JSON, Type::JSON_FLUTTER, Type::XCLOC }); } wxString Catalog::GetTypesFileMask(std::initializer_list 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; } void Catalog::SetFileName(const wxString& fn) { wxFileName f(fn); f.MakeAbsolute(); m_fileName = f.GetFullPath(); } namespace { enum class SourcesPath { Base, Root }; 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)) { 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.MakeAbsolute(); if (kind == SourcesPath::Root) { // Deal with misconfigured catalogs where the basepath isn't the root. for (auto& p : header.SearchPaths) { wxString path = (p == ".") ? basepath : basepath + wxFILE_SEP_PATH + p; root = CommonDirectory(root, MakeFileName(path)); } } 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) { auto fullp = wxIsAbsolutePath(p) ? p : basepath + p; if (!wxFileName::Exists(fullp)) 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.ends_with(wxString(wxFILE_SEP_PATH) + "Desktop" + wxFILE_SEP_PATH)) { return false; } } return true; } std::shared_ptr Catalog::GetSourceCodeSpec() const { auto path = GetSourcesBasePath(); if (!path.empty()) { if (!wxFileName::DirExists(path)) return nullptr; } auto spec = std::make_shared(); spec->BasePath = !path.empty() ? path : "."; spec->SearchPaths = m_header.SearchPaths; spec->ExcludedPaths = m_header.SearchPathsExcluded; spec->Charset = m_header.SourceCodeCharset; spec->Keywords = m_header.Keywords; for (auto& kv: m_header.GetAllHeaders()) spec->XHeaders[kv.Key] = kv.Value; // parse file type mapping (e.g. "h=gettext:c++") wxStringTokenizer mapping(m_header.GetHeader("X-Poedit-Mapping"), ";"); while (mapping.HasMoreTokens()) { auto m = mapping.GetNextToken(); spec->TypeMapping.emplace_back(m.BeforeFirst('='), m.AfterFirst('=')); } return spec; } unsigned Catalog::GetPluralFormsCount() const { unsigned count = 0; for (auto& i: m_items) { count = std::max(count, i->GetPluralFormsCount()); } return count; } void Catalog::SetLanguage(Language lang) { // FIXME: move m_header to POCatalog too m_header.Lang = lang; } void Catalog::GetStatistics(int *all, int *fuzzy, int *badtokens, int *untranslated, int *unfinished) { if (all) *all = 0; if (fuzzy) *fuzzy = 0; if (badtokens) *badtokens = 0; if (untranslated) *untranslated = 0; if (unfinished) *unfinished = 0; for (auto& i: m_items) { bool ok = true; if (all) (*all)++; if (i->IsFuzzy()) { if (fuzzy) (*fuzzy)++; ok = false; } if (i->HasError()) { if (badtokens) (*badtokens)++; ok = false; } if (!i->IsTranslated()) { if (untranslated) (*untranslated)++; ok = false; } if ( !ok && unfinished ) (*unfinished)++; } } void CatalogItem::SetFlags(const wxString& flags) { static const wxString flag_fuzzy(wxS(", fuzzy")); m_moreFlags = flags; if (flags.find(flag_fuzzy) != wxString::npos) { m_isFuzzy = true; m_moreFlags.Replace(flag_fuzzy, wxString()); } else { m_isFuzzy = false; } } wxString CatalogItem::GetFlags() const { if (m_isFuzzy) { static const wxString flag_fuzzy(wxS(", fuzzy")); if (m_moreFlags.empty()) return flag_fuzzy; else return flag_fuzzy + m_moreFlags; } else { return m_moreFlags; } } std::string CatalogItem::GetFormatFlag() const { if (m_moreFlags.empty()) return std::string(); auto pos = m_moreFlags.find(wxS("-format")); if (pos == wxString::npos) return std::string(); auto space = m_moreFlags.find_last_of(" \t", pos); auto format = (space == wxString::npos) ? m_moreFlags.substr(0, pos) : m_moreFlags.substr(space+1, pos-space-1); if (format.starts_with("no-")) return std::string(); return std::string(format.begin(), format.end()); } void CatalogItem::SetFuzzy(bool fuzzy) { if (fuzzy == m_isFuzzy) return; if (!fuzzy && m_isFuzzy) m_oldMsgid.clear(); m_isFuzzy = fuzzy; UpdateInternalRepresentation(); } void CatalogItem::SetComment(const wxString& c) { if (c == m_comment) return; m_comment = c; UpdateInternalRepresentation(); } wxString CatalogItem::GetTranslation(unsigned idx) const { if (idx >= GetNumberOfTranslations()) return wxString(); else return m_translations[idx]; } void CatalogItem::SetTranslation(const wxString &t, unsigned idx) { while (idx >= m_translations.GetCount()) m_translations.Add(wxEmptyString); m_translations[idx] = t; ClearIssue(); m_isTranslated = true; for (size_t i = 0; i < m_translations.GetCount(); i++) { if (m_translations[i].empty()) { m_isTranslated = false; break; } } UpdateInternalRepresentation(); } void CatalogItem::SetTranslations(const wxArrayString &t) { m_translations = t; ClearIssue(); m_isTranslated = true; for (size_t i = 0; i < m_translations.GetCount(); i++) { if (m_translations[i].empty()) { m_isTranslated = false; break; } } UpdateInternalRepresentation(); } void CatalogItem::SetTranslationFromSource() { ClearIssue(); m_isFuzzy = false; m_isPreTranslated = false; m_isTranslated = true; auto iter = m_translations.begin(); if (*iter != m_string) { *iter = m_string; m_isModified = true; } if (m_hasPlural) { ++iter; for ( ; iter != m_translations.end(); ++iter ) { if (*iter != m_plural) { *iter = m_plural; m_isModified = true; } } } UpdateInternalRepresentation(); } void CatalogItem::ClearTranslation() { bool modified = m_isFuzzy != false; m_isFuzzy = false; m_isPreTranslated = false; m_isTranslated = false; for (auto& t: m_translations) { if (!t.empty()) modified = true; t.clear(); } m_isModified = modified; if (modified) UpdateInternalRepresentation(); } unsigned CatalogItem::GetPluralFormsCount() const { unsigned trans = GetNumberOfTranslations(); if ( !HasPlural() || !trans ) return 0; return trans - 1; } wxString CatalogItem::GetOldMsgid() const { wxString s; for (auto line: m_oldMsgid) { if (line.length() < 2) continue; if (line.Last() == '"') line.RemoveLast(); if (line[0] == '"') line.Remove(0, 1); if (line.starts_with("msgid \"")) line.Remove(0, 7); else if (line.starts_with("msgid_plural \"")) line.replace(0, 14, "\n"); s += UnescapeCString(line); } return s; } Catalog::ValidationResults Catalog::Validate(const wxString& /*fileWithSameContent*/) { ValidationResults res; for (auto& i: m_items) i->ClearIssue(); res.errors = 0; if (!HasCapability(Catalog::Cap::Translations)) return res; // no errors in POT files #if wxUSE_GUI if (Config::ShowWarnings()) { // TODO: _some_ checks (e.g. plurals) do make sense even with symbolic IDs if (!UsesSymbolicIDsForSource()) res.warnings = QAChecker::GetFor(*this)->Check(*this); } #endif return res; } void Catalog::PostCreation() { if (!m_sourceLanguage.IsValid()) { if (!m_sourceIsSymbolicID) m_sourceIsSymbolicID = DetectUseOfSymbolicIDs(*this); if (!m_sourceIsSymbolicID) { // detect source language from the text (ignoring plurals for simplicity, // as we don't need 100% of the text): std::wstring allText; for (auto& i: items()) { auto withoutMarkup = std::regex_replace(i->GetRawString().ToStdWstring(), RE_APPROXIMATE_MARKUP, L" "); allText.append(withoutMarkup); allText += L' '; } if (!allText.empty()) { m_sourceLanguage = Language::TryDetectFromText(str::to_utf8(allText)); wxLogTrace("poedit", "detected source language is '%s'", m_sourceLanguage.Code()); } } } // All the following fixups are for files that contain translations (i.e. not POTs) if (!HasCapability(Cap::Translations)) return; if (!GetLanguage().IsValid()) { Language lang; if (!m_fileName.empty()) { lang = Language::TryGuessFromFilename(m_fileName); wxLogTrace("poedit", "guessed translation language from filename '%s' is '%s'", m_fileName, lang.Code()); } if (!lang.IsValid()) { // If all else fails, try to detect the language from content wxString allText; for (auto& i: items()) { if (!i->IsTranslated()) continue; allText.append(i->GetTranslation()); allText.append('\n'); } if (!allText.empty()) { lang = Language::TryDetectFromText(str::to_utf8(allText)); wxLogTrace("poedit", "detected translation language is '%s'", GetLanguage().Code()); } } if (lang.IsValid()) SetLanguage(lang); } } // Catalog file creation factories: CatalogPtr Catalog::Create(Type type) { switch (type) { case Type::PO: case Type::POT: return CatalogPtr(new POCatalog(type)); case Type::XLIFF: case Type::XCLOC: case Type::JSON: case Type::JSON_FLUTTER: wxFAIL_MSG("empty XLIFF/JSON creation not implemented"); return CatalogPtr(); } return CatalogPtr(); // silence VC++ warning } CatalogPtr Catalog::Create(const wxString& filename, int flags) { wxString ext; wxFileName::SplitPath(filename, nullptr, nullptr, nullptr, &ext); ext.MakeLower(); CatalogPtr cat; if (POCatalog::CanLoadFile(ext)) { cat.reset(new POCatalog(filename, flags)); flags = 0; // don't do the stuff below that is already handled by POCatalog's parser } else if (XLIFFCatalog::CanLoadFile(ext)) { cat = XLIFFCatalog::Open(filename); } else if (JSONCatalog::CanLoadFile(ext)) { cat = JSONCatalog::Open(filename); } else if (XCLOCCatalog::CanLoadFile(ext)) { cat = XCLOCCatalog::Open(filename); } if (!cat) BOOST_THROW_EXCEPTION(Exception(_("The file is in a format not recognized by Poedit."))); if (flags & CreationFlag_IgnoreTranslations) { for (auto item: cat->m_items) item->ClearTranslation(); } cat->SetFileName(filename); cat->PostCreation(); return cat; } bool Catalog::CanLoadFile(const wxString& extension_) { auto extension = extension_.Lower(); return POCatalog::CanLoadFile(extension) || XLIFFCatalog::CanLoadFile(extension) || JSONCatalog::CanLoadFile(extension); } void Catalog::SideloadSourceDataFromReferenceFile(CatalogPtr ref) { std::map refItems; for (auto iref: ref->items()) refItems[iref->GetRawString()] = iref; for (auto i: this->items()) { auto ri = refItems.find(i->GetRawString()); if (ri == refItems.end()) continue; auto& rdata = *ri->second; if (rdata.GetTranslation().empty()) continue; auto d = std::make_shared(); d->source_string = rdata.GetTranslation(); if (rdata.HasPlural()) d->source_plural_string = rdata.GetTranslation(1); if (rdata.HasExtractedComments()) d->extracted_comments = rdata.GetExtractedComments(); i->AttachSideloadedData(d); } m_sideloaded = std::make_shared(); m_sideloaded->reference_file = ref; m_sideloaded->source_language = ref->GetLanguage(); } void Catalog::ClearSideloadedSourceData() { m_sideloaded.reset(); for (auto i: this->items()) i->ClearSideloadedData(); } poedit-3.6.3/src/utility.h0000644000175100001660000002053315011674230011136 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2010-2025 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_utility_h #define Poedit_utility_h #include #include #include #include #if wxUSE_GUI #include #endif // ---------------------------------------------------------------------- // Misc platform differences // ---------------------------------------------------------------------- #ifdef __WXMSW__ #define MSW_OR_OTHER(msw, other) msw #else #define MSW_OR_OTHER(msw, other) other #endif #ifdef __WXOSX__ #define MACOS_OR_OTHER(mac, other) mac #else #define MACOS_OR_OTHER(mac, other) other #endif #ifdef __WXOSX__ #define BORDER_WIN(dir, n) Border(dir, 0) #define BORDER_MACOS(dir, n) Border(dir, n) #else #define BORDER_WIN(dir, n) Border(dir, n) #define BORDER_MACOS(dir, n) Border(dir, 0) #endif #ifdef __WXOSX__ inline int AboveChoicePadding() { if (__builtin_available(macOS 11.0, *)) return 2; else return 0; } #else #define AboveChoicePadding() 0 #endif // ---------------------------------------------------------------------- // Misc helpers // ---------------------------------------------------------------------- wxString EscapeMarkup(const wxString& str); // Encoding and decoding a string with C escape sequences: template inline void EscapeCStringInplace(T& str) { for (typename T::iterator i = str.begin(); i != str.end(); ++i) { switch ((wchar_t)*i) { case '"' : i = ++str.insert(i, '\\'); break; case '\a': *i = 'a'; i = ++str.insert(i, '\\'); break; case '\b': *i = 'b'; i = ++str.insert(i, '\\'); break; case '\f': *i = 'f'; i = ++str.insert(i, '\\'); break; case '\n': *i = 'n'; i = ++str.insert(i, '\\'); break; case '\r': *i = 'r'; i = ++str.insert(i, '\\'); break; case '\t': *i = 't'; i = ++str.insert(i, '\\'); break; case '\v': *i = 'v'; i = ++str.insert(i, '\\'); break; case '\\': i = ++str.insert(i, '\\'); break; default: break; } } } template inline T EscapeCString(const T& str) { T out(str); EscapeCStringInplace(out); return out; } template inline T UnescapeCString(const T& str) { if (str.find('\\') == T::npos) return 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.MakeAbsolute(); return fn; } wxFileName CommonDirectory(const wxFileName& a, const wxFileName& b); template inline wxFileName CommonDirectory(const T& a) { wxFileName root; for (auto& i: a) root = CommonDirectory(root, MakeFileName(i)); return root; } inline 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); } #if wxUSE_GUI && defined(__WXMSW__) bool IsRunningUnderScreenReader(); #endif // ---------------------------------------------------------------------- // TempDirectory // ---------------------------------------------------------------------- // Helper class for managing temporary directories. // Cleans the directory when destroyed. class TempDirectory { public: // creates randomly-named temp directory with "poedit" name prefix TempDirectory(); ~TempDirectory(); TempDirectory(const TempDirectory&) = delete; bool IsOk() const { return !m_dir.empty(); } const wxString& DirName() const { return m_dir; } // 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; } private: std::map m_counters; wxString m_dir; static bool ms_keepFiles; }; /// 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); explicit TempOutputFileFor(const wxFileName& filename) : TempOutputFileFor(filename.GetFullPath()) {} TempOutputFileFor(const TempOutputFileFor&) = delete; ~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(); /// Rename file to replace another *while preserving destination /// file's permissions*. /// Make this helper publicly accessible for code that can't /// use TempOutputFileFor directly. static bool ReplaceFile(const wxString& temp, const wxString& dest); #ifdef __WXOSX__ wxString m_tempDir; #endif wxString m_filenameTmp; wxString m_filenameFinal; }; #ifdef __WXMSW__ /// Return filename safe for passing to CLI tools (gettext). /// Uses 8.3 short names to avoid Unicode and codepage issues. wxString CliSafeFileName(const wxString& fn); #else inline wxString CliSafeFileName(const wxString& fn) { return fn; } #endif // ---------------------------------------------------------------------- // Helpers for persisting windows' state // ---------------------------------------------------------------------- #if wxUSE_GUI enum WinStateFlags { WinState_Pos = 1, WinState_Size = 2, WinState_All = WinState_Pos | WinState_Size }; void SaveWindowState(const wxTopLevelWindow *win, int flags = WinState_All); void RestoreWindowState(wxTopLevelWindow *win, const wxSize& defaultSize, int flags = WinState_All); inline wxString WindowStatePath(const wxWindow *win) { return wxString::Format("/windows/%s/", win->GetName().c_str()); } #endif // wxUSE_GUI #endif // Poedit_utility_h poedit-3.6.3/src/fileviewer.cpp0000644000175100001660000005677515011674230012150 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 Vaclav Slavik * Copyright (C) 2015 PrismJS (CSS parts) * Copyright (c) 2013-2017 Cole Bemis (Feather Icons) * * 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 "fileviewer.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __WXMSW__ #include #endif #include #include "customcontrols.h" #include "hidpi.h" #include "utility.h" #include "unicode_helpers.h" namespace { #ifdef __WXOSX__ const int FRAME_STYLE = wxDEFAULT_FRAME_STYLE | wxFRAME_TOOL_WINDOW; #else const int FRAME_STYLE = wxDEFAULT_FRAME_STYLE; #endif wxString FileToHTMLMarkup(const wxTextFile& file, const wxString& ext, size_t lineno); extern const char *HTML_POEDIT_CSS; extern const char *SVG_ICON; } // anonymous namespace #ifdef __WXMSW__ struct FileViewer::TempFile { TempFile() { file.Assign(dir.CreateFileName(".src.html")); } wxFileName file; TempDirectory dir; }; #endif FileViewer *FileViewer::ms_instance = nullptr; FileViewer *FileViewer::GetAndActivate() { if (!ms_instance) ms_instance = new FileViewer(nullptr); ms_instance->Show(); if (ms_instance->IsIconized()) ms_instance->Iconize(false); ms_instance->Raise(); return ms_instance; } FileViewer::FileViewer(wxWindow*) // TRANSLATORS: Meaning occurrences of the string in source code : wxFrame(nullptr, wxID_ANY, _("Code Occurrences"), wxDefaultPosition, wxDefaultSize, FRAME_STYLE) { SetName("fileviewer"); ColorScheme::SetupWindowColors(this, [=] { // match CSS background color: if (ColorScheme::GetWindowMode(this) == ColorScheme::Light) SetBackgroundColour(*wxWHITE); else SetBackgroundColour("#1d1f21"); }); wxPanel *panel = new wxPanel(this, -1); wxSizer *sizer = new wxBoxSizer(wxVERTICAL); panel->SetSizer(sizer); #ifdef __WXOSX__ panel->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif #ifdef __WXMSW__ SetIcons(wxIconBundle(wxStandardPaths::Get().GetResourcesDir() + "\\Resources\\Poedit.ico")); #endif m_topBarSizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(m_topBarSizer, wxSizerFlags().ReserveSpaceEvenIfHidden().Expand().Border(wxALL, PX(10))); m_file = new wxChoice(panel, wxID_ANY); m_topBarSizer->Add(m_file, wxSizerFlags(1).Center().ReserveSpaceEvenIfHidden()); m_description = new SecondaryLabel(panel, ""); m_topBarSizer->Add(m_description, wxSizerFlags(1).Center().PXBorder(wxLEFT|wxRIGHT)); m_openInEditor = new wxButton(panel, wxID_ANY, MSW_OR_OTHER(_("Open in editor"), _("Open in Editor"))); #ifdef __WXOSX__ static_cast(m_openInEditor->GetHandle()).bezelStyle = NSBezelStyleRoundRect; #endif m_topBarSizer->Add(m_openInEditor, wxSizerFlags().Center().ReserveSpaceEvenIfHidden().Border(wxLEFT, PX(10))); sizer->Add(new wxStaticLine(panel, wxID_ANY), wxSizerFlags().Expand().Border(wxLEFT|wxRIGHT, PX(5))); #ifdef __WXMSW__ if (wxWebView::IsBackendAvailable(wxWebViewBackendEdge)) { m_usesMSIE = false; m_content = wxWebView::New(panel, wxID_ANY); } else { m_usesMSIE = true; wxWebViewIE::MSWSetEmulationLevel(wxWEBVIEWIE_EMU_IE11); m_content = wxWebView::New(panel, wxID_ANY); } #else m_content = wxWebView::New(panel, wxID_ANY); #endif sizer->Add(m_content, 1, wxEXPAND); RestoreWindowState(this, wxSize(PX(600), PX(400))); wxSizer *topsizer = new wxBoxSizer(wxVERTICAL); topsizer->Add(panel, wxSizerFlags(1).Expand()); SetSizer(topsizer); // avoid flicker with these initial settings: sizer->Hide(m_content); Layout(); m_file->Bind(wxEVT_CHOICE, &FileViewer::OnChoice, this); m_openInEditor->Bind(wxEVT_BUTTON, &FileViewer::OnEditFile, this); #ifdef __WXOSX__ wxAcceleratorEntry entries[] = { { wxACCEL_CMD, 'W', wxID_CLOSE } }; wxAcceleratorTable accel(WXSIZEOF(entries), entries); SetAcceleratorTable(accel); Bind(wxEVT_MENU, [=](wxCommandEvent&){ Destroy(); }, wxID_CLOSE); #endif } FileViewer::~FileViewer() { ms_instance = nullptr; SaveWindowState(this); } wxFileName FileViewer::GetFilename(wxString ref) const { if ( ref.length() >= 3 && ref[1] == _T(':') && (ref[2] == _T('\\') || ref[2] == _T('/')) ) { // This is an absolute Windows path (c:\foo... or c:/foo...); fix // the latter case. ref.Replace("/", "\\"); } wxPathFormat pathfmt = ref.Contains(_T('\\')) ? wxPATH_WIN : wxPATH_UNIX; wxFileName filename(ref.BeforeLast(_T(':')), pathfmt); if ( filename.IsRelative() ) { wxFileName relative(filename); wxString basePath(m_basePath); // Sometimes, the path in source reference is not relative to the PO // file's location, but is relative to e.g. the root directory. See // https://code.djangoproject.com/ticket/13936 for exhaustive // discussion with plenty of examples. // // Deal with this by trying parent directories of m_basePath too. So if // a file named project/locales/cs/foo.po has a reference to src/main.c, // try not only project/locales/cs/src/main.c, but also // project/locales/src/main.c and project/src/main.c etc. while ( !basePath.empty() ) { filename = relative; filename.MakeAbsolute(basePath); if ( filename.FileExists() ) { return filename; // good, found the file } else { // remove the last path component size_t last = basePath.find_last_of("\\/"); if ( last == wxString::npos ) break; else basePath.erase(last); } } } return wxFileName(); // invalid } void FileViewer::ShowReferences(CatalogPtr catalog, CatalogItemPtr item, int defaultReference) { m_basePath = catalog->GetSourcesBasePath(); if (m_basePath.empty()) m_basePath = wxPathOnly(catalog->GetFileName()); if (item) m_references = item->GetReferences(); m_file->Clear(); m_topBarSizer->Show(!m_references.empty()); if (m_references.empty()) { m_description->SetLabel(""); ShowError(SVG_ICON, _("No usage information"), _(L"No information about this string’s occurrences in the source code is provided in the file.")); } else { m_description->SetLabel ( wxString::Format(wxPLURAL("%d code occurrence", "%d code occurrences", (int)m_references.size()), (int)m_references.size()) ); for (auto& r: m_references) m_file->Append(bidi::platform_mark_direction(r)); m_file->SetSelection(defaultReference); m_file->SetMinSize(wxDefaultSize); m_file->SetMinSize(m_file->GetBestSize()); m_topBarSizer->Layout(); SelectReference(m_references[defaultReference]); } } void FileViewer::SelectReference(const wxString& ref) { const wxFileName filename = GetFilename(ref); if (!filename.IsOk()) { ShowError(SVG_ICON, _("Source code not found"), _(L"Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file."), wxJoin(m_references, '\n') ); m_openInEditor->Disable(); return; } const wxString fullpath = filename.GetFullPath(); wxTextFile file; wxString data; if ( !filename.IsFileReadable() || !file.Open(fullpath) ) { ShowError(SVG_ICON, _("File cannot be opened"), wxString::Format(_(L"Poedit was unable to open the “%s†file."), fullpath)); m_openInEditor->Disable(); return; } m_openInEditor->Enable(); // support GNOME's xml2po's extension to references in the form of // filename:line(xml_node): wxString linenumStr = ref.AfterLast(_T(':')).BeforeFirst(_T('(')); long linenum; if (!linenumStr.ToLong(&linenum)) linenum = 0; auto markup = FileToHTMLMarkup(file, filename.GetExt(), (size_t)linenum); ShowHTMLContent(markup); } void FileViewer::ShowHTMLContent(const wxString& markup) { m_content->GetContainingSizer()->Show(m_content); Layout(); #ifdef __WXMSW__ // Streaming document content to MSIE it via SetPage() behaves // a bit differently from loading a file or HTTP document and in particular, // we're hit by two issues: // // 1. X-UA-Compatible is ignored; this could be fixed by an explicit call // to wxWebViewIE::MSWSetEmulationLevel(wxWEBVIEWIE_EMU_IE11) somewhere // 2. It then reports "unknown script code" instead of file URIs for // externally loaded JS files, which breaks PrismJS's autoloader // // So we instead put the content into a temporary file and load that. This // sidesteps both issues at a negligible performance cost. if (m_usesMSIE) { if (!m_tmpFile) m_tmpFile = std::make_shared(); wxFFile f_html(m_tmpFile->file.GetFullPath(), "wb"); f_html.Write(markup, wxConvUTF8); f_html.Close(); m_content->LoadURL(wxFileName::FileNameToURL(m_tmpFile->file)); } else #endif { m_content->SetPage(markup, "file:///"); } } void FileViewer::ShowError(const char *icon, const wxString& msg, const wxString& description, const wxString& references) { wxString html = wxString::Format ( R"(
%s

%s

)", HTML_POEDIT_CSS, icon, EscapeMarkup(msg) ); if (!references.empty()) html += "
" + EscapeMarkup(references) + "
"; if (!description.empty()) html += wxString::Format("
%s
", EscapeMarkup(description)); html += R"(
)"; ShowHTMLContent(html); } void FileViewer::OnChoice(wxCommandEvent &event) { SelectReference(m_references[event.GetSelection()]); } void FileViewer::OnEditFile(wxCommandEvent&) { wxFileName filename = GetFilename(bidi::strip_control_chars(m_file->GetStringSelection())); if (filename.IsOk()) wxLaunchDefaultApplication(filename.GetFullPath()); } namespace { inline std::string FilenameToLanguage(const std::string& ext) { static const std::unordered_map mapping = { #include "fileviewer.extensions.h" }; auto i = mapping.find(ext); if (i != mapping.end()) return i->second; return ext; } inline void OutputBlock(wxString& html, const wxTextFile& file, size_t lfrom, size_t lto) { for (size_t i = lfrom; i < lto; i++) { html += EscapeMarkup(file[i]); html += '\n'; } } wxString FileToHTMLMarkup(const wxTextFile& file, const wxString& ext, size_t lineno) { wxString html = wxString::Format( R"( )", HTML_POEDIT_CSS); html += wxString::Format("
"
                                 ""
                                     "",
                             FilenameToLanguage(ext.Lower().utf8_string()));

    const size_t count = file.GetLineCount();
    if (lineno && lineno <= count)
    {
        OutputBlock(html, file, 0, lineno-1);
        html += "";
        OutputBlock(html, file, lineno-1, lineno);
        html += "";
        OutputBlock(html, file, lineno, count);
    }
    else
    {
        OutputBlock(html, file, 0, count);
    }

    // add line numbers:
    html += ""
            "";
    for (size_t i = 0; i < count; i++)
    {
        if (i == lineno-1)
            html += "";
        else
            html += "";
    }

    html += "
"; if (lineno) { // Alternative implementation that doesn't need msie_anchor, but doesn't work on MSIE, is to do: // document.getElementById('mark').scrollIntoView({behavior: 'instant', block: 'center'}); // instead of // window.location.hash = "#msie_anchor"; html += R"()"; } // PrismJS is added after everything else so that basic rendering works even // when offline. html += R"( )"; return html; } const char *SVG_ICON = R"( )"; /* The MIT License (MIT) Copyright (c) 2015 PrismJS Copyright (c) 2020 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. Based on the following PrismJS themes: https://github.com/PrismJS/prism-themes/blob/master/themes/prism-ghcolors.css * GHColors theme by Avi Aryan (http://aviaryan.in) * Inspired by Github syntax coloring https://github.com/PrismJS/prism-themes/blob/master/themes/prism-atom-dark.css * atom-dark theme for `prism.js` * Based on Atom's `atom-dark` theme: https://github.com/atom/atom-dark-syntax * @author Joe Gibson (@gibsjose) */ const char *HTML_POEDIT_CSS = R"( :root { color-scheme: light dark; } body { font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif; font-size: 10pt; color: #393A34; background-color: white; } code, pre { font-family: "ui-monospace", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; font-size: 9pt; line-height: 1.2em; tab-size: 4; padding: 0; margin: 0; } .token.comment, .token.prolog, .token.doctype, .token.cdata { color: #999988; font-style: italic; } .token.namespace { opacity: .7; } .token.string, .token.attr-value { color: #e3116c; } .token.punctuation, .token.operator { color: #393A34; /* no highlight */ } .token.entity, .token.url, .token.symbol, .token.number, .token.boolean, .token.variable, .token.constant, .token.property, .token.regex, .token.inserted { color: #36acaa; } .token.atrule, .token.keyword, .token.attr-name, .language-autohotkey .token.selector { color: #00a4db; } .token.function, .token.deleted, .language-autohotkey .token.tag { color: #9a050f; } .token.tag, .token.selector, .language-autohotkey .token.keyword { color: #00009f; } .token.important, .token.bold { font-weight: bold; } .token.italic { font-style: italic; } @media (prefers-color-scheme: dark) { body { color: #c5c8c6; background-color: #1d1f21; } .token.comment, .token.prolog, .token.doctype, .token.cdata { color: #7C7C7C; } .token.punctuation { color: #c5c8c6; } .token.property, .token.keyword, .token.tag { color: #96CBFE; } .token.boolean, .token.constant { color: #99CC99; } .token.symbol, .token.deleted { color: #f92672; } .token.number { color: #FF73FD; } .token.selector, .token.attr-name, .token.string, .token.char, .token.builtin, .token.inserted { color: #A8FF60; } .token.variable { color: #C6C5FE; } .token.operator { color: #EDEDED; } .token.entity { color: #FFFFB6; } .token.url { color: #96CBFE; } .language-css .token.string, .style .token.string { color: #87C38A; } .token.atrule, .token.attr-value { color: #F9EE98; } .token.function { color: #DAD085; } .token.regex { color: #E9C062; } .token.important { color: #fd971f; } } /* Line numbers: */ pre.line-numbers { position: relative; padding-left: 3.8em; counter-reset: linenumber; } pre.line-numbers > code { position: relative; white-space: inherit; } .line-numbers-rows { position: absolute; pointer-events: none; top: 0; font-size: 100%; left: -3.8em; width: 3em; letter-spacing: -1px; border-right: 1px solid #999; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .line-numbers-rows > span { display: block; counter-increment: linenumber; } .line-numbers-rows > span:before { content: counter(linenumber); color: #999; display: block; padding-right: 0.8em; text-align: right; } /* Highlighting of selected line: */ .line-numbers-rows > #mark:before { background-color: rgb(253, 235, 176); } mark { background-color: rgb(253, 235, 176); } @media (prefers-color-scheme: dark) { .line-numbers-rows > #mark:before { background-color: rgb(198, 171, 113); color: #393A34; } mark { background-color: rgb(198, 171, 113); color: #393A34; } } #msie_anchor { display: block; visibility: hidden; height: 50vh; /* 50% viewport height */ margin-top: -50vh; } /* Error messages: */ .message-wrapper { height: 90vh; display: flex; align-items: center; justify-content: center; } .message { text-align: center; opacity: 0.8; padding-top: 1em; } .message h2 { margin-top: 0.2em; font-size: 125%; font-weight: 600; } .explanation { width: 80%; font-size: 90%; margin: 1em auto; opacity: 0.6; } .message pre { text-align: left; display: table; margin-left: auto; margin-right: auto; } )"; } // anonymous namespace poedit-3.6.3/src/commentdlg.cpp0000644000175100001660000000556315011674230012125 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2001-2025 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 #include #include #include #include "catalog.h" #include "commentdlg.h" CommentDialog::CommentDialog(wxWindow *parent, const wxString& comment) : wxDialog() { wxXmlResource::Get()->LoadDialog(this, parent, "comment_dlg"); #ifndef __WXOSX__ CenterOnParent(); #endif m_text = XRCCTRL(*this, "comment", wxTextCtrl); m_text->SetValue(RemoveStartHash(comment)); if (comment.empty()) { XRCCTRL(*this, "delete", wxWindow)->Disable(); FindWindow(wxID_OK)->SetLabel(_("Add")); } // else: button is labeled "Update" in XRC wxAcceleratorEntry entries[] = { { wxACCEL_CMD, WXK_RETURN, wxID_OK }, { wxACCEL_CMD, WXK_NUMPAD_ENTER, wxID_OK } }; wxAcceleratorTable accel(WXSIZEOF(entries), entries); SetAcceleratorTable(accel); } wxString CommentDialog::GetComment() const { // Put the start hash back return AddStartHash(m_text->GetValue()); } BEGIN_EVENT_TABLE(CommentDialog, wxDialog) EVT_BUTTON(XRCID("delete"), CommentDialog::OnDelete) END_EVENT_TABLE() void CommentDialog::OnDelete(wxCommandEvent&) { m_text->Clear(); EndModal(wxID_OK); } /*static*/ wxString CommentDialog::RemoveStartHash(const wxString& comment) { wxString tmpComment; wxStringTokenizer tkn(comment, "\n\r"); while (tkn.HasMoreTokens()) tmpComment << tkn.GetNextToken().Mid(2) << "\n"; return tmpComment; } /*static*/ wxString CommentDialog::AddStartHash(const wxString& comment) { wxString tmpComment; wxStringTokenizer tkn(comment, "\n\r"); while (tkn.HasMoreTokens()) tmpComment << "# " << tkn.GetNextToken() << "\n"; return tmpComment; } poedit-3.6.3/src/propertiesdlg.cpp0000644000175100001660000010103215011674230012643 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "propertiesdlg.h" #include "catalog_po.h" #include "colorscheme.h" #include "customcontrols.h" #include "hidpi.h" #include "language.h" #include "str_helpers.h" #include "unicode_helpers.h" #include "utility.h" namespace { inline wxString NormalizedPath(const wxString& fn, wxPathFormat format) { auto f = MakeFileName(fn); f.MakeAbsolute(); return f.GetFullPath(format); } inline wxString RelativePath(const wxString& fn, const wxString& to, wxPathFormat format) { if (fn == to || fn + wxFILE_SEP_PATH == to) return "."; auto f = MakeFileName(fn); if (!f.MakeRelativeTo(to)) { #ifdef __WXMSW__ if (format == wxPATH_UNIX) { // Paths on different volumes, which are ignored in UNIX path formatting. // The best we can do is to use Windows path with / instead of \ ... wxString dos = f.GetFullPath(wxPATH_DOS); dos.Replace("\\", "/"); return dos; } #endif } return f.GetFullPath(format); } inline wxString RelativePathForPO(const wxString& fn, const wxString& to) { auto rel = RelativePath(fn, to, wxPATH_UNIX); if (rel.Last() == '/') rel.RemoveLast(); return rel; } } // anonymous namespace struct PropertiesDialog::PathsData { PathsData() : Changed(false) {} std::function 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, wxPATH_NATIVE)); } for (auto& p: hdr.SearchPathsExcluded) { if (p.empty()) continue; if (wxIsWild(p)) excluded.push_back(p); else excluded.push_back(NormalizedPath(basepath + p, wxPATH_NATIVE)); } } void SetToCatalog(CatalogPtr cat) const { auto& hdr = cat->Header(); hdr.BasePath = RelativePathForPO(basepath, filedir); hdr.SearchPaths.clear(); hdr.SearchPathsExcluded.clear(); for (auto& p: paths) { auto rel = RelativePathForPO(p, basepath); hdr.SearchPaths.push_back(rel); } for (auto& p: excluded) { if (wxIsWild(p)) { hdr.SearchPathsExcluded.push_back(p); } else { auto rel = RelativePathForPO(p, basepath); hdr.SearchPathsExcluded.push_back(rel); } } } void UpdateBasePath() { if (!paths.empty()) basepath = CommonDirectory(paths).GetFullPath(); else basepath = filedir; } }; #ifdef __WXOSX__ @interface BasePathCtrlController : NSObject @end @implementation BasePathCtrlController - (void)pathClicked:(NSPathControl*)sender { NSPathComponentCell *cell = [[sender cell] clickedPathComponentCell]; if (cell) [[NSWorkspace sharedWorkspace] openURL:[cell URL]]; } @end class PropertiesDialog::BasePathCtrl : public wxNativeWindow { public: BasePathCtrl(wxWindow *parent) : wxNativeWindow() { m_path = [NSPathControl new]; m_ctrl = [BasePathCtrlController new]; Create(parent, wxID_ANY, m_path); SetWindowVariant(wxWINDOW_VARIANT_SMALL); // Do native configuration *after* Create() to undo some of what it did: if ([m_path respondsToSelector:@selector(setEditable:)]) [m_path setEditable:NO]; [m_path setTarget:m_ctrl]; [m_path setAction:@selector(pathClicked:)]; [m_path setDoubleAction:@selector(pathClicked:)]; } void SetPath(const wxString& path) { m_path.URL = [[NSURL alloc] initFileURLWithPath:str::to_NS(path)]; } private: NSPathControl *m_path; BasePathCtrlController *m_ctrl; }; #else // Win/GTK+ class PropertiesDialog::BasePathCtrl : public wxStaticText { public: BasePathCtrl(wxWindow *parent) : wxStaticText(parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_MIDDLE | wxST_NO_AUTORESIZE) { #ifdef __WXMSW__ SetForegroundColour(wxColour("#58595C")); #endif } void SetPath(const wxString& path) { SetLabel(bidi::platform_mark_direction(path)); } }; #endif class PropertiesDialog::PathsList : public wxPanel { public: PathsList(wxWindow *parent, const wxString& label, std::shared_ptr data) : wxPanel(parent, wxID_ANY), m_data(data) { #if defined(__WXOSX__) SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif auto sizer = new wxBoxSizer(wxVERTICAL); SetSizer(sizer); auto lbl = new wxStaticText(this, wxID_ANY, label); #ifdef __WXOSX__ sizer->Add(lbl, wxSizerFlags().Expand().Border(wxLEFT|wxBOTTOM, PX(2))); #else sizer->Add(lbl, wxSizerFlags().Expand()); #endif m_list = new wxListBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, nullptr, wxLB_EXTENDED); sizer->Add(m_list, wxSizerFlags(1).Expand().BORDER_WIN(wxLEFT, 1)); #if defined(__WXOSX__) if (@available(macOS 11.0, *)) ((NSTableView*)[((NSScrollView*)m_list->GetHandle()) documentView]).style = NSTableViewStyleFullWidth; auto add = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("NSAddTemplate"), wxDefaultPosition, wxSize(18, 18), wxBORDER_SIMPLE); auto remove = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("NSRemoveTemplate"), wxDefaultPosition, wxSize(18,18), wxBORDER_SIMPLE); #elif defined(__WXMSW__) auto add = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("list-add"), wxDefaultPosition, wxSize(PX(19),PX(19))); auto remove = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("list-remove"), wxDefaultPosition, wxSize(PX(19),PX(19))); #elif defined(__WXGTK__) auto add = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("list-add@symbolic"), wxDefaultPosition, wxDefaultSize, wxNO_BORDER); auto remove = new wxBitmapButton(this, wxID_ANY, wxArtProvider::GetBitmap("list-remove@symbolic"), wxDefaultPosition, wxDefaultSize, wxNO_BORDER); #endif auto buttonSizer = new wxBoxSizer(wxHORIZONTAL); buttonSizer->Add(add); #ifdef __WXOSX__ buttonSizer->AddSpacer(PX(1)); #endif buttonSizer->Add(remove); sizer->AddSpacer(PX(1)); sizer->Add(buttonSizer, wxSizerFlags().BORDER_MACOS(wxLEFT, PX(1))); 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); }); m_placeholder = new wxStaticText(this, wxID_ANY, MSW_OR_OTHER(_("Drag folders or files here"), _("Drag Folders or Files Here"))); m_placeholder->SetForegroundColour(ExplanationLabel::GetTextColor()); #ifdef __WXOSX__ m_placeholder->SetWindowVariant(wxWINDOW_VARIANT_NORMAL); #endif m_list->Bind(wxEVT_SIZE, &PathsList::OnListResized, this); m_list->Bind(wxEVT_CONTEXT_MENU, &PathsList::OnRightClick, this); #ifdef __WXMSW__ m_placeholder->SetBackgroundColour(m_list->GetBackgroundColour()); m_list->Bind(wxEVT_SET_FOCUS, [=](wxFocusEvent& e){ e.Skip(); m_placeholder->Lower(); // move to the top in Z-order, above the list (yeah, really) }); #endif } void UpdateFromData() { auto& array = Array(); m_list->Clear(); for (auto& p: array) { wxString s; if (wxIsWild(p)) s = p; else s = RelativePath(p, m_data->basepath, wxPATH_NATIVE); m_list->Append(bidi::platform_mark_direction(s)); } m_placeholder->Show(array.empty()); } 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, wxPATH_NATIVE)); } 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; }; void OnListResized(wxSizeEvent& e) { e.Skip(); wxSize size = m_list->GetSize(); size -= m_placeholder->GetSize(); m_placeholder->SetPosition(m_list->GetPosition() + size / 2); } void OnAddMenu(wxCommandEvent& e) { static wxWindowIDRef idFolder = NewControlId(); static wxWindowIDRef idFile = NewControlId(); static wxWindowIDRef idWild = NewControlId(); wxMenu *menu = new wxMenu(); #ifdef __WXOSX__ [menu->GetHMenu() setFont:[NSFont systemFontOfSize:13]]; #endif menu->Append(idFolder, MSW_OR_OTHER(_(L"Add folders…"), _(L"Add Folders…"))); menu->Append(idFile, MSW_OR_OTHER(_(L"Add files…"), _(L"Add Files…"))); if (AllowWildcards()) menu->Append(idWild, MSW_OR_OTHER(_(L"Add wildcard…"), _(L"Add Wildcard…"))); menu->Bind(wxEVT_MENU, [=](wxCommandEvent&){ wxDirDialog dlg(this, MACOS_OR_OTHER("", _("Select directory")), m_data->basepath, 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->basepath, "", 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(e.GetEventObject()); #ifdef __WXOSX__ if (@available(macOS 11.0, *)) win->PopupMenu(menu, -4, 24); else win->PopupMenu(menu, -1, 24); #else win->PopupMenu(menu, 0, win->GetSize().y); #endif } void OnRightClick(wxContextMenuEvent& event) { event.Skip(); auto pos = event.GetPosition(); if (!pos.IsFullySpecified()) pos = wxGetMousePosition(); auto item = m_list->HitTest(m_list->ScreenToClient(pos)); if (item == wxNOT_FOUND) return; m_list->DeselectAll(); m_list->Select(item); wxString file = Array()[item]; if (wxIsWild(file)) return; event.Skip(false); static wxWindowIDRef idShowInFolder = NewControlId(); wxMenu menu; auto menuItem = menu.Append(idShowInFolder, #if defined(__WXOSX__) // TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) _("Reveal in Finder") #elif defined(__WXMSW__) // TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" _("Show in Explorer") #else _("Show in Folder") #endif ); if (!wxFileExists(file) && !wxDirExists(file)) menuItem->Enable(false); menu.Bind(wxEVT_MENU, [=](wxCommandEvent&){ ShowInFolder(file); }, idShowInFolder); PopupMenu(&menu); } void ShowInFolder(const wxString& path) { #if defined(__WXOSX__) NSURL *url = [NSURL fileURLWithPath:str::to_NS(path)]; [[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:@[url]]; #elif defined(__WXMSW__) wxExecute(wxString::Format("explorer.exe /select,\"%s\"", path)); #else wxLaunchDefaultApplication(wxFileName(path).GetPath()); #endif } std::shared_ptr m_data; wxListBox *m_list; wxStaticText *m_placeholder; }; class PropertiesDialog::SourcePathsList : public PropertiesDialog::PathsList { public: SourcePathsList(wxWindow *parent, std::shared_ptr 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 data) : PathsList(parent, _("Excluded paths"), data) {} protected: wxArrayString& Array() override { return m_data->excluded; } bool AllowWildcards() const override { return true; } }; struct PropertiesDialog::GettextSettings { wxString CommentTag; wxString XgettextFlags; }; class PropertiesDialog::GettextSettingsDialog : public wxDialog { public: GettextSettingsDialog(wxWindow *parent) : wxDialog(parent, wxID_ANY, _("Advanced extraction settings")) { auto outer = new wxBoxSizer(wxVERTICAL); auto sizer = new wxBoxSizer(wxVERTICAL); outer->Add(sizer, wxSizerFlags(1).Expand().Border(wxALL, PX(15))); sizer->Add(new wxStaticText(this, wxID_ANY, _("Extract notes for translators from:"))); sizer->AddSpacer(PX(4)); m_commentsPrefixed = new wxRadioButton(this, wxID_ANY, _("Comments prefixed with:")); m_commentsPrefix = new wxTextCtrl(this, wxID_ANY, ""); m_commentsPrefix->SetHint("TRANSLATORS:"); auto prefixSizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(prefixSizer, wxSizerFlags().Expand().Border(wxLEFT, PX(10))); prefixSizer->Add(m_commentsPrefixed, wxSizerFlags().Center().BORDER_MACOS(wxTOP, PX(3)).BORDER_WIN(wxBOTTOM, PX(1))); prefixSizer->Add(m_commentsPrefix, wxSizerFlags(1).Center().Border(wxLEFT, PX(5))); sizer->AddSpacer(PX(2)); m_commentsAll = new wxRadioButton(this, wxID_ANY, _("All comments")); sizer->Add(m_commentsAll, wxSizerFlags().Border(wxLEFT, PX(10))); sizer->Add(new wxStaticText(this, wxID_ANY, _("Additional xgettext flags:")), wxSizerFlags().Border(wxTOP, PX(15))); m_flags = new wxTextCtrl(this, wxID_ANY, "", wxDefaultPosition, wxSize(PX(450), -1)); #ifdef __WXOSX__ m_flags->OSXDisableAllSmartSubstitutions(); #endif sizer->Add(m_flags, wxSizerFlags().Expand().Border(wxTOP, PX(5))); auto buttons = CreateButtonSizer(wxOK | wxCANCEL); #ifdef __WXOSX__ outer->Add(buttons, wxSizerFlags().Expand()); #else outer->Add(buttons, wxSizerFlags().Expand().PXDoubleBorder(wxLEFT|wxRIGHT|wxBOTTOM)); #endif m_commentsPrefix->Bind( wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){ e.Enable(m_commentsPrefixed->GetValue()); }); SetSizerAndFit(outer); CenterOnParent(); } void TransferTo(const PropertiesDialog::GettextSettings& data) { auto flags = data.XgettextFlags; auto pos = flags.Find("--add-comments"); if (pos != wxNOT_FOUND) { auto posStart = pos; pos += 14; if (pos < (int)flags.size() && flags[pos] == '=') { wxString prefix; pos++; char lookFor = (flags[pos] == '"') ? '"' : ' '; if (lookFor == '"') pos++; while (pos < (int)flags.size() && flags[pos] != lookFor) prefix += flags[pos++]; if (lookFor == '"') pos++; m_commentsPrefix->SetValue(prefix); m_commentsPrefixed->SetValue(true); } else { m_commentsAll->SetValue(true); } if (pos < (int)flags.size() && flags[pos] == ' ') pos++; flags = flags.replace(posStart, pos - posStart, ""); } else { m_commentsPrefixed->SetValue(true); m_commentsPrefix->SetValue("TRANSLATORS:"); } m_flags->SetValue(flags.Strip()); } void TransferFrom(PropertiesDialog::GettextSettings& data) const { wxString flags; if (m_commentsAll->GetValue()) { flags = "--add-comments"; } else { auto prefix = m_commentsPrefix->GetValue(); if (!prefix.empty() && prefix != "TRANSLATORS:") { if (prefix.Contains(" ") && prefix[0] != '"') prefix = '"' + prefix + '"'; flags.Printf("--add-comments=%s", prefix); } } if (!m_flags->GetValue().empty()) { if (!flags.empty()) flags += " "; flags += m_flags->GetValue(); } data.XgettextFlags = flags; } private: wxRadioButton *m_commentsAll, *m_commentsPrefixed; wxTextCtrl *m_commentsPrefix; wxTextCtrl *m_flags; }; PropertiesDialog::PropertiesDialog(wxWindow *parent, CatalogPtr cat, bool fileExistsOnDisk, int initialPage) : m_validatedPlural(-1), m_validatedLang(-1) { auto po = std::dynamic_pointer_cast(cat); wxASSERT(po); m_hasLang = cat->HasCapability(Catalog::Cap::LanguageSetting); m_hasPlurals = m_hasLang && (po->HasPluralItems() || po->Header().HasHeader("Plural-Forms")); wxXmlResource::Get()->LoadDialog(this, parent, "properties"); m_gettextSettings.reset(new GettextSettings); m_team = XRCCTRL(*this, "team", wxTextCtrl); m_project = XRCCTRL(*this, "prj_name", wxTextCtrl); m_language = XRCCTRL(*this, "language", LanguageCtrl); m_charset = XRCCTRL(*this, "charset", wxComboBox); m_sourceCodeCharset = XRCCTRL(*this, "source_code_charset", wxComboBox); m_pluralFormsDefault = XRCCTRL(*this, "plural_forms_default", wxRadioButton); m_pluralFormsCustom = XRCCTRL(*this, "plural_forms_custom", wxRadioButton); m_pluralFormsExpr = XRCCTRL(*this, "plural_forms_expr", wxTextCtrl); m_pluralFormsExpr->SetWindowVariant(wxWINDOW_VARIANT_SMALL); 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), XRCCTRL(*this, "plural_forms_help", wxWindow) }) { w->GetContainingSizer()->Hide(w); } } // my custom controls: 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_defaultKeywords = XRCCTRL(*this, "default_keywords", wxCheckBox); m_pathsData.reset(new PathsData); m_basePath = new BasePathCtrl(page_paths); m_paths = new SourcePathsList(page_paths, m_pathsData); m_excludedPaths = new ExcludedPathsList(page_paths, m_pathsData); m_pathsData->RefreshView = [=]{ m_basePath->SetPath(m_pathsData->basepath); m_paths->UpdateFromData(); m_excludedPaths->UpdateFromData(); }; m_paths->SetMinSize(wxSize(PX(450), PX(90))); m_excludedPaths->SetMinSize(wxSize(-1, PX(90))); #ifdef __WXOSX__ for (auto c: m_keywords->GetChildren()) { c->SetWindowVariant(wxWINDOW_VARIANT_SMALL); for (auto c2: c->GetChildren()) c2->SetWindowVariant(wxWINDOW_VARIANT_SMALL); } #endif // __WXOSX__ wxXmlResource::Get()->AttachUnknownControl("basepath", m_basePath); wxXmlResource::Get()->AttachUnknownControl("keywords", m_keywords); wxXmlResource::Get()->AttachUnknownControl("paths", m_paths); wxXmlResource::Get()->AttachUnknownControl("excluded_paths", m_excludedPaths); // Controls setup: m_project->SetHint(_("Name of the project the translation is for")); m_team->SetHint(_("Team name and email address or URL")); m_pluralFormsExpr->SetHint(_("e.g. nplurals=2; plural=(n > 1);")); Layout(); GetSizer()->SetSizeHints(this); if (!fileExistsOnDisk) DisableSourcesControls(); auto nb = XRCCTRL(*this, "properties_notebook", wxNotebook); nb->SetSelection(initialPage); m_language->Bind(wxEVT_TEXT, &PropertiesDialog::OnLanguageChanged, this); m_language->Bind(wxEVT_COMBOBOX, &PropertiesDialog::OnLanguageChanged, this); if (m_hasPlurals) { m_pluralFormsDefault->Bind(wxEVT_RADIOBUTTON, &PropertiesDialog::OnPluralFormsDefault, this); m_pluralFormsExpr->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){ e.Enable(m_pluralFormsCustom->GetValue()); }); m_pluralFormsExpr->Bind(wxEVT_TEXT, [=](wxCommandEvent& e){ m_validatedPlural = -1; e.Skip(); }); } else { m_pluralFormsDefault->SetValue(true); m_pluralFormsDefault->Disable(); m_pluralFormsCustom->Disable(); m_pluralFormsExpr->Disable(); } Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){ e.Enable(Validate()); }, wxID_OK); CallAfter([=]{ m_project->SetFocus(); }); auto openBasepath = XRCCTRL(*this, "open_basepath", wxBitmapButton); openBasepath->Bind(wxEVT_BUTTON, [=](wxCommandEvent&){ wxLaunchDefaultApplication(m_pathsData->basepath); }); XRCCTRL(*this, "gettext_settings", wxButton)->Bind(wxEVT_BUTTON, &PropertiesDialog::OnGettextSettings, this); } PropertiesDialog::~PropertiesDialog() { } namespace { #define UTF_8_CHARSET _("UTF-8 (recommended)") void SetCharsetToCombobox(wxComboBox *ctrl, const wxString& value) { static const wxString all_charsets[] = { UTF_8_CHARSET, // and legacy ones "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "ISO-8859-10", "ISO-8859-11", "ISO-8859-12", "ISO-8859-13", "ISO-8859-14", "ISO-8859-15", "KOI8-R", "CP1250", "CP1251", "CP1252", "CP1253", "CP1254", "CP1255", "CP1256", "CP1257" }; ctrl->Clear(); for ( int i = 0; i < (int)WXSIZEOF(all_charsets); i++ ) ctrl->Append(all_charsets[i]); const wxString low = value.Lower(); if ( low == "utf-8" || low == "utf8" ) ctrl->SetValue(UTF_8_CHARSET); else ctrl->SetValue(value); } wxString GetCharsetFromCombobox(wxComboBox *ctrl) { wxString c = ctrl->GetValue(); if ( c == UTF_8_CHARSET ) c = "UTF-8"; return c; } void GetKeywordsFromControl(wxEditableListBox *box, wxCheckBox *defaultKeywords, wxArrayString& output) { wxArrayString arr; box->GetStrings(arr); output.clear(); if (!defaultKeywords->GetValue()) output.push_back(""); for (auto x: arr) { if (x.empty()) continue; wxString rest; if (x.EndsWith(" ()", &rest) || x.EndsWith("()", &rest)) x = rest; output.push_back(x); } } } // anonymous namespace void PropertiesDialog::TransferTo(const CatalogPtr& cat) { SetCharsetToCombobox(m_charset, cat->Header().Charset); SetCharsetToCombobox(m_sourceCodeCharset, cat->Header().SourceCodeCharset); #define SET_VAL(what,what2) m_##what2->SetValue(cat->Header().what) SET_VAL(LanguageTeam, team); SET_VAL(Project, project); #undef SET_VAL if (m_hasLang) { m_language->SetLang(cat->Header().Lang); OnLanguageValueChanged(); if (m_hasPlurals) { PluralFormsExpr pf_def(cat->Header().Lang.DefaultPluralFormsExpr()); PluralFormsExpr pf_cat(cat->Header().GetHeader("Plural-Forms").utf8_string()); if (pf_cat.str() == "nplurals=INTEGER; plural=EXPRESSION;") pf_cat = pf_def; m_pluralFormsExpr->SetValue(bidi::mark_direction(pf_cat.str(), TextDirection::LTR)); if (pf_cat && pf_cat == pf_def) m_pluralFormsDefault->SetValue(true); else m_pluralFormsCustom->SetValue(true); } } auto kw = cat->Header().Keywords; auto empty_kw = kw.Index(""); m_defaultKeywords->SetValue(empty_kw == wxNOT_FOUND); if (empty_kw != wxNOT_FOUND) kw.RemoveAt(empty_kw); m_keywords->SetStrings(kw); m_pathsData->GetFromCatalog(cat); m_pathsData->RefreshView(); m_gettextSettings->XgettextFlags = cat->Header().GetHeader("X-Poedit-Flags-xgettext"); } void PropertiesDialog::TransferFrom(const CatalogPtr& cat) { cat->Header().Charset = GetCharsetFromCombobox(m_charset); cat->Header().SourceCodeCharset = GetCharsetFromCombobox(m_sourceCodeCharset); #define GET_VAL(what,what2) cat->Header().what = m_##what2->GetValue() GET_VAL(LanguageTeam, team); GET_VAL(Project, project); #undef GET_VAL if (m_hasLang) { bool langChanged = false; Language lang = m_language->GetLang(); if (lang.IsValid()) { langChanged = (lang != cat->Header().Lang); cat->Header().Lang = lang; } if (m_hasPlurals) { if (m_pluralFormsDefault->GetValue() && cat->Header().Lang.IsValid()) { // make sure we don't overwrite catalog's expression if the user didn't modify and // it differs only cosmetically from the default PluralFormsExpr pf_def(cat->Header().Lang.DefaultPluralFormsExpr()); PluralFormsExpr pf_cat(cat->Header().GetHeader("Plural-Forms").utf8_string()); if (langChanged || pf_def != pf_cat) cat->Header().SetHeaderNotEmpty("Plural-Forms", pf_def.str()); } else { auto pluralForms = bidi::strip_control_chars(m_pluralFormsExpr->GetValue().Strip(wxString::both)); if (!pluralForms.empty() && !pluralForms.ends_with(";")) pluralForms += ";"; cat->Header().SetHeaderNotEmpty("Plural-Forms", pluralForms); } } } GetKeywordsFromControl(m_keywords, m_defaultKeywords, cat->Header().Keywords); if (m_pathsData->Changed) m_pathsData->SetToCatalog(cat); cat->Header().SetHeaderNotEmpty("X-Poedit-Flags-xgettext", m_gettextSettings->XgettextFlags); } void PropertiesDialog::DisableSourcesControls() { m_basePath->Disable(); for (auto p: {m_paths, m_excludedPaths}) { p->Disable(); for (auto c: p->GetChildren()) c->Disable(); } auto label = XRCCTRL(*this, "sources_path_label", wxStaticText); label->SetLabel(_("Please save the file first. This section cannot be edited until then.")); label->SetForegroundColour(ColorScheme::Get(Color::ErrorText)); } void PropertiesDialog::OnLanguageChanged(wxCommandEvent& event) { m_validatedLang = -1; OnLanguageValueChanged(); event.Skip(); } void PropertiesDialog::OnLanguageValueChanged() { Language lang = m_language->GetLang(); if (lang == m_currentLanguageValue) return; m_currentLanguageValue = lang; if (m_hasPlurals) { auto pluralExpr = lang.DefaultPluralFormsExpr(); auto validPlurals = lang.IsValid() && pluralExpr; m_pluralFormsDefault->Enable(validPlurals); if (validPlurals) { m_pluralFormsDefault->SetValue(true); m_pluralFormsExpr->SetValue(bidi::mark_direction(pluralExpr.str(), TextDirection::LTR)); } else { m_pluralFormsCustom->SetValue(true); m_pluralFormsExpr->Clear(); } } } void PropertiesDialog::OnPluralFormsDefault(wxCommandEvent& event) { Language lang = m_language->GetLang(); if (lang.IsValid()) { auto defaultForm = lang.DefaultPluralFormsExpr(); if (defaultForm) m_pluralFormsExpr->SetValue(bidi::mark_direction(defaultForm.str(), TextDirection::LTR)); } event.Skip(); } void PropertiesDialog::OnGettextSettings(wxCommandEvent&) { wxWindowPtr dlg(new GettextSettingsDialog(this)); dlg->TransferTo(*m_gettextSettings); dlg->ShowWindowModalThenDo([this,dlg](int retval){ if (retval == wxID_OK) dlg->TransferFrom(*m_gettextSettings); }); } bool PropertiesDialog::Validate() { if (!m_hasLang) return true; if (m_validatedPlural == -1) { m_validatedPlural = 1; if (m_pluralFormsCustom->GetValue()) { auto form = bidi::strip_control_chars(m_pluralFormsExpr->GetValue()); if (!form.empty()) { PluralFormsExpr expr(form.utf8_string()); if (!expr) m_validatedPlural = 0; } } } if (m_validatedLang == -1) { m_validatedLang = m_language->IsValid() ? 1 : 0; } return m_validatedLang == 1 && m_validatedPlural == 1; } poedit-3.6.3/src/app_updates.cpp0000644000175100001660000001530115011674230012270 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2024-2025 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 "app_updates.h" #ifdef HAS_UPDATES_CHECK #include "edapp.h" #include "edframe.h" #include #ifdef __WXOSX__ #import #endif #ifdef __WXMSW__ #include #endif #ifdef __WXOSX__ @interface PoeditSparkleDelegate : NSObject @end @implementation PoeditSparkleDelegate - (NSArray *> *)feedParametersForUpdater:(SPUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; { #pragma unused(updater, sendingProfile) if (Config::CheckForBetaUpdates()) { return @[ @{ @"key": @"beta", @"value": @"1", @"displayKey": @"Beta Versions", @"displayValue": @"Yes" } ]; } else { return @[]; } } @end class AppUpdates::impl { public: impl() {} ~impl() { // Make sure that Sparkle's updates to plist preferences are saved: [[NSUserDefaults standardUserDefaults] synchronize]; } void InitAndStart() { // Poedit < 2.0 stored this in preferences, which was wrong - it overrode // changes to Info.plist. Undo the damage: [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"SUFeedURL"]; // For Preferences window, have default in sync with Info.plist: NSDictionary *sparkleDefaults = @{ @"SUEnableAutomaticChecks": @YES }; [[NSUserDefaults standardUserDefaults] registerDefaults:sparkleDefaults]; m_delegate = [PoeditSparkleDelegate new]; m_controller = [[SPUStandardUpdaterController alloc] initWithUpdaterDelegate:m_delegate userDriverDelegate:nil]; } void EnableAutomaticChecks(bool enable) { SetBoolValue("SUEnableAutomaticChecks", enable); } bool AutomaticChecksEnabled() const { return GetBoolValue("SUEnableAutomaticChecks"); } bool CanCheckForUpdates() const { return m_controller.updater.canCheckForUpdates; } void CheckForUpdatesWithUI() { [m_controller checkForUpdates:nil]; } private: bool GetBoolValue(const char *key) const { NSString *nskey = [NSString stringWithUTF8String: key]; return [[NSUserDefaults standardUserDefaults] boolForKey:nskey]; } void SetBoolValue(const char *key, int value) { NSString *nskey = [NSString stringWithUTF8String: key]; [[NSUserDefaults standardUserDefaults] setBool:value forKey:nskey]; [[NSUserDefaults standardUserDefaults] synchronize]; } private: SPUStandardUpdaterController *m_controller = nil; NSObject *m_delegate = nil; }; #endif // __WXOSX__ #ifdef __WXMSW__ class AppUpdates::impl { public: impl() {} ~impl() { win_sparkle_cleanup(); } void InitAndStart() { if (Config::CheckForBetaUpdates()) win_sparkle_set_appcast_url("https://poedit.net/updates_v2/win/appcast/beta"); else win_sparkle_set_appcast_url("https://poedit.net/updates_v2/win/appcast"); win_sparkle_set_can_shutdown_callback(&impl::WinSparkle_CanShutdown); win_sparkle_set_shutdown_request_callback(&impl::WinSparkle_Shutdown); auto buildnum = wxGetApp().GetAppBuildNumber(); if (!buildnum.empty()) win_sparkle_set_app_build_version(buildnum.wc_str()); win_sparkle_init(); } void SetLanguage(const std::string& lang) { win_sparkle_set_lang(lang.c_str()); } bool CanCheckForUpdates() const { return true; } void CheckForUpdatesWithUI() { win_sparkle_check_update_with_ui(); } void EnableAutomaticChecks(bool enable) { if (enable) SetupAppcastURL(); win_sparkle_set_automatic_check_for_updates(enable); } bool AutomaticChecksEnabled() const { return win_sparkle_get_automatic_check_for_updates(); } private: void SetupAppcastURL() { if (Config::CheckForBetaUpdates()) win_sparkle_set_appcast_url("https://poedit.net/updates_v2/win/appcast/beta"); else win_sparkle_set_appcast_url("https://poedit.net/updates_v2/win/appcast"); } // WinSparkle callbacks: static int WinSparkle_CanShutdown() { return !PoeditFrame::AnyWindowIsModified(); } static void WinSparkle_Shutdown() { wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, wxID_EXIT); wxGetApp().AddPendingEvent(evt); } }; #endif // __WXMSW__ // Boilerplate: namespace { static std::once_flag initializationFlag; AppUpdates* gs_instance = nullptr; } AppUpdates& AppUpdates::Get() { std::call_once(initializationFlag, []() { gs_instance = new AppUpdates; }); return *gs_instance; } void AppUpdates::CleanUp() { if (gs_instance) { delete gs_instance; gs_instance = nullptr; } } AppUpdates::AppUpdates() : m_impl(new impl) {} AppUpdates::~AppUpdates() {} void AppUpdates::InitAndStart() { m_impl->InitAndStart(); } void AppUpdates::EnableAutomaticChecks(bool enable) { m_impl->EnableAutomaticChecks(enable); } bool AppUpdates::AutomaticChecksEnabled() const { return m_impl->AutomaticChecksEnabled(); } bool AppUpdates::CanCheckForUpdates() const { return m_impl->CanCheckForUpdates(); } void AppUpdates::CheckForUpdatesWithUI() { m_impl->CheckForUpdatesWithUI(); } #ifdef __WXMSW__ void AppUpdates::SetLanguage(const std::string& lang) { m_impl->SetLanguage(lang); } #endif // __WXMSW__ #endif // HAS_UPDATES_CHECK poedit-3.6.3/src/edlistctrl.cpp0000644000175100001660000006276015011674230012147 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 Vaclav Slavik * Copyright (C) 2005 Olivier Sannier * * 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 "edlistctrl.h" #include "hidpi.h" #include "language.h" #include "cat_sorting.h" #include "colorscheme.h" #include "unicode_helpers.h" #include "utility.h" #include #include #include #include #include #include #ifdef __WXMSW__ #include #include #include #include #endif #ifdef __WXGTK__ #include #endif #include namespace { class SelectionPreserver { public: SelectionPreserver(PoeditListCtrl *list_) : list(list_), focus(-1) { if (!list) return; selection = list->GetSelectedCatalogItemIndexes(); focus = list->ListItemToCatalogIndex(list->GetCurrentItem()); } ~SelectionPreserver() { if (!list) return; if (!selection.empty()) list->SetSelectedCatalogItemIndexes(selection); if (focus != -1) { auto item = list->CatalogIndexToListItem(focus); list->EnsureVisible(item); list->SetCurrentItem(item); } } private: PoeditListCtrl *list; std::vector selection; int focus; }; class DataViewMarkupRenderer : public wxDataViewTextRenderer { public: DataViewMarkupRenderer() { EnableMarkup(); SetValueAdjuster(new Adjuster()); } void SetHighlightedBgColor(const wxColour& bgHighlight) { static_cast(m_valueAdjuster)->SetHighlightedBgColor(bgHighlight); } private: class Adjuster : public wxDataViewValueAdjuster { public: Adjuster() {} void SetHighlightedBgColor(const wxColour& bgHighlight) { m_bgHighlight = bgHighlight.GetAsString(wxC2S_HTML_SYNTAX); } wxVariant MakeHighlighted(const wxVariant& value) const override { auto s = value.GetString(); bool changed = false; auto pos = s.find(" bgcolor=\""); if (pos != wxString::npos) { pos += 10; auto pos2 = s.find('"', pos); s.replace(pos, pos2 - pos, m_bgHighlight); changed = true; } #ifdef __WXGTK__ pos = s.find(" color=\""); if (pos != wxString::npos) { auto pos2 = s.find('"', pos + 8); s.erase(pos, pos2 - pos + 1); changed = true; } #endif return changed ? wxVariant(s) : value; } private: wxString m_bgHighlight; }; }; /** * A wxDataViewColum whose GetWidth() prefers to return the fixed width over the actual width - they may differ, e.g. * for the last column which may automatically grow to take the available space on resize. */ class DataViewFixedColumn : public wxDataViewColumn { public: DataViewFixedColumn(const wxString &title, wxDataViewRenderer *renderer, unsigned int model_column, int width = wxDVC_DEFAULT_WIDTH, wxAlignment align = wxALIGN_CENTER) : wxDataViewColumn(title, renderer, model_column, width, align, 0) { fixed_width = width >= 0 ? width : wxCOL_WIDTH_DEFAULT; } /** * Returns the fixed width, if any, or the width returned by parent wxDataViewColumn. */ int GetWidth() const override { if ( fixed_width != wxCOL_WIDTH_DEFAULT ) return fixed_width; return wxDataViewColumn::GetWidth(); } /** * Either: * * - Fixes the width if given width is >= 0 * - Unsets the width if value is wxCOL_WIDTH_DEFAULT or wxCOL_WIDTH_AUTOSIZE; */ void SetWidth( int width ) override { if ( width >= 0 ) { fixed_width = width; } else if ( width == wxCOL_WIDTH_AUTOSIZE || width == wxCOL_WIDTH_DEFAULT ) { fixed_width = wxCOL_WIDTH_DEFAULT; } wxDataViewColumn::SetWidth(width); } private: // The fixed width, if any, or wxCOL_WIDTH_DEFAULT int fixed_width; }; #if !defined(__WXMSW__) && !defined(__WXOSX__) class DataViewIconsAdjuster : public wxDataViewValueAdjuster { public: DataViewIconsAdjuster() { m_comment = wxArtProvider::GetIcon("ItemCommentTemplate"); m_commentSel = wxArtProvider::GetIcon("ItemCommentTemplate@inverted"); } wxVariant MakeHighlighted(const wxVariant& value) const override { if (value.IsNull()) return value; wxIcon icon; icon << value; if (icon.IsSameAs(m_comment)) { wxVariant vout; vout << m_commentSel; return vout; } return value; } private: wxIcon m_comment, m_commentSel; }; #endif // !defined(__WXMSW__) && !defined(__WXOSX__) wxString TrimTextValue(const wxString& text, size_t maxChars) { wxString s(text.Strip(wxString::both)); // FIXME: use syntax highlighting or typographic marks s.Replace("\n", " "); if (maxChars && s.length() > maxChars) return s.substr(0, maxChars); else return s; } } // anonymous namespace PoeditListCtrl::Model::Model(TextDirection appTextDir) : m_frozen(false), m_maxVisibleWidth(0), m_sourceTextDir(TextDirection::LTR), m_transTextDir(TextDirection::LTR), m_appTextDir(appTextDir) { sortOrder = SortOrder::Default(); } void PoeditListCtrl::Model::SetVisualMode(ColorScheme::Mode visualMode) { m_clrID = ColorScheme::Get(Color::ItemID, visualMode); m_clrFuzzy = ColorScheme::Get(Color::ItemFuzzy, visualMode); m_clrInvalid = ColorScheme::Get(Color::ItemError, visualMode); m_clrContextFg = ColorScheme::Get(Color::ItemContextFg, visualMode).GetAsString(wxC2S_HTML_SYNTAX); m_clrContextBg = ColorScheme::Get(Color::ItemContextBg, visualMode).GetAsString(wxC2S_HTML_SYNTAX); m_iconComment = wxArtProvider::GetIcon("ItemCommentTemplate"); m_iconError = wxArtProvider::GetIcon("StatusError"); m_iconWarning = wxArtProvider::GetIcon("StatusWarning"); } void PoeditListCtrl::Model::SetCatalog(CatalogPtr catalog) { m_catalog = catalog; if (!catalog) { Reset(0); m_mapListToCatalog.clear(); m_mapCatalogToList.clear(); return; } auto srclang = catalog->GetSourceLanguage(); auto lang = catalog->GetLanguage(); m_sourceTextDir = srclang.Direction(); m_transTextDir = lang.Direction(); // sort catalog items, create indexes mapping CreateSortMap(); Reset(catalog->GetCount()); } void PoeditListCtrl::Model::UpdateSort() { if (!m_catalog) return; CreateSortMap(); Reset(m_catalog->GetCount()); } wxString PoeditListCtrl::Model::GetColumnType(unsigned int col) const { switch (col) { case Col_ID: return "string"; case Col_Icon: return "wxIcon"; case Col_Source: case Col_Translation: return "string"; default: return "null"; } } void PoeditListCtrl::Model::GetValueByRow(wxVariant& variant, unsigned row, unsigned col) const { #if defined(__WXGTK__) #define NULL_ICON(variant) variant << wxNullIcon #else #define NULL_ICON(variant) variant = wxNullVariant #endif if (!m_catalog || m_frozen) { #if defined(__WXGTK__) auto type = GetColumnType(col); if (type == "string") variant = ""; else if (type == "wxIcon") NULL_ICON(variant); else #else variant = wxNullVariant; #endif if (col == Col_ID) { // sequential ID better than nothing, but this is a hack to get sizing correctly variant = wxString::Format("%d", (int)row); } return; } auto d = Item(row); wxCHECK_RET(d, "invalid row"); switch (col) { case Col_ID: { variant = wxString::Format("%d", d->GetId()); break; } case Col_Icon: { if (d->HasIssue()) { switch (d->GetIssue()->severity) { case CatalogItem::Issue::Error: variant << m_iconError; break; case CatalogItem::Issue::Warning: variant << m_iconWarning; break; } break; } else if (d->HasComment()) variant << m_iconComment; else NULL_ICON(variant); break; } case Col_Source: { wxString orig; const auto orig_str = TrimTextValue(d->GetString(), m_maxVisibleWidth); #ifdef __WXMSW__ // Temporary workaround for https://github.com/vslavik/poedit/issues/343 and // https://github.com/vslavik/poedit/issues/481 -- fall back to old style rendering: if (m_appTextDir == TextDirection::RTL && m_sourceTextDir == TextDirection::LTR) { // non-markup rendering of source column: if (d->HasContext()) orig.Printf("[%s] %s", d->GetContext(), orig_str); else orig = orig_str; } else #endif { if (d->HasContext()) { // Work around a problem with GTK+'s coloring of markup that begins with colorizing : #ifdef __WXGTK__ #define MARKUP(x) L"\u200B" L##x #else #define MARKUP(x) x #endif orig.Printf(MARKUP(" %s %s"), m_clrContextBg, m_clrContextFg, EscapeMarkup(d->GetContext()), EscapeMarkup(orig_str)); } else { orig = EscapeMarkup(orig_str); } } // Add RTL Unicode mark to render bidi texts correctly if (m_appTextDir != m_sourceTextDir) variant = bidi::mark_direction(orig, m_sourceTextDir); else variant = orig; break; } case Col_Translation: { const auto trans = TrimTextValue(d->GetTranslation(), m_maxVisibleWidth); // Add RTL Unicode mark to render bidi texts correctly if (m_appTextDir != m_transTextDir) variant = bidi::mark_direction(trans, m_transTextDir); else variant = trans; break; } default: variant.Clear(); break; }; } bool PoeditListCtrl::Model::SetValueByRow(const wxVariant&, unsigned, unsigned) { wxFAIL_MSG("setting values in dataview not implemented"); return false; } bool PoeditListCtrl::Model::GetAttrByRow(unsigned row, unsigned col, wxDataViewItemAttr& attr) const { if (!m_catalog || m_frozen) return false; switch (col) { case Col_ID: { attr.SetColour(m_clrID); return true; } case Col_Source: case Col_Translation: { auto d = Item(row); if (d->HasError()) { attr.SetColour(m_clrInvalid); return true; } else if (d->IsFuzzy()) { attr.SetColour(m_clrFuzzy); return true; } else { return false; } } default: return false; } } void PoeditListCtrl::Model::CreateSortMap() { // FIXME: Use native wxDataViewCtrl sorting instead int count = (int)m_catalog->GetCount(); m_mapListToCatalog.resize(count); m_mapCatalogToList.resize(count); // First create identity mapping for the sort order. for ( int i = 0; i < count; i++ ) m_mapListToCatalog[i] = i; // m_mapListToCatalog will hold our desired sort order. Sort it in place // now, using the desired sort criteria. CatalogItemsComparator comparator(*m_catalog, sortOrder); std::sort ( m_mapListToCatalog.begin(), m_mapListToCatalog.end(), std::ref(comparator) ); // Finally, construct m_mapCatalogToList to be the inverse mapping to // m_mapListToCatalog. for ( int i = 0; i < count; i++ ) m_mapCatalogToList[m_mapListToCatalog[i]] = i; } PoeditListCtrl::PoeditListCtrl(wxWindow *parent, wxWindowID id, bool dispIDs) : wxDataViewCtrl(parent, id, wxDefaultPosition, wxDefaultSize, wxDV_MULTIPLE | wxDV_ROW_LINES | wxNO_BORDER, wxDefaultValidator, "translations list") { m_displayIDs = dispIDs; m_appTextDir = (wxTheApp->GetLayoutDirection() == wxLayout_RightToLeft) ? TextDirection::RTL : TextDirection::LTR; m_model.reset(new Model(m_appTextDir)); ColorScheme::SetupWindowColors(this, [=] { auto visualMode = ColorScheme::GetWindowMode(this); m_model->SetVisualMode(visualMode); #ifdef __WXMSW__ if (visualMode == ColorScheme::Dark) SetAlternateRowColour(GetBackgroundColour().ChangeLightness(108)); else SetAlternateRowColour(wxNullColour); #endif }); AssociateModel(m_model.get()); CreateColumns(); UpdateColumns(); UpdateHeaderAttrs(); #ifdef __WXMSW__ GetMainWindow()->Bind(wxEVT_MENU, [=](wxCommandEvent&) { SelectAll(); wxDataViewEvent le(wxEVT_DATAVIEW_SELECTION_CHANGED, this, GetSelection()); ProcessWindowEvent(le); }, wxID_SELECTALL); GetMainWindow()->Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e) { e.Enable(GetItemCount() > 0); }, wxID_SELECTALL); #endif Bind(wxEVT_SIZE, &PoeditListCtrl::OnSize, this); } PoeditListCtrl::~PoeditListCtrl() { sortOrder().Save(); } void PoeditListCtrl::UpdateHeaderAttrs() { #ifdef __WXMSW__ // Setup custom header font & color on Windows 10, where the default look is a bit odd if (wxUxThemeIsActive()) { // Use the same text color as Explorer's headers use wxUxThemeHandle hTheme(this->GetParent(), L"ItemsView::Header"); COLORREF clr; HRESULT hr = ::GetThemeColor(hTheme, HP_HEADERITEM, 0, TMT_TEXTCOLOR, &clr); if (SUCCEEDED(hr)) { wxItemAttr headerAttr; headerAttr.SetTextColour(wxRGBToColour(clr)); SetHeaderAttr(headerAttr); } } // Standard header has smaller height than Explorer's and it isn't // separated from the content well -- especially in HiDPI modes. // Match Explorer's header size too: int headerHeight = HiDPIScalingFactor() > 1.0 ? PX(26) : PX(25); GenericGetHeader()->SetMinSize(wxSize(-1, headerHeight)); #endif // __WXMSW__ } void PoeditListCtrl::SetCustomFont(wxFont font_) { wxFont font(font_); if ( !font.IsOk() ) font = GetDefaultAttributes().font; SetFont(font); #if defined(__WXOSX__) // Have to propagate font setting to native columns NSFont *nativeFont = font.OSXGetNSFont(); NSTableView *tableView = (NSTableView*)[((NSScrollView*)GetHandle()) documentView]; for (NSTableColumn *c in tableView.tableColumns) [c.dataCell setFont:nativeFont]; // Custom setup of NSLayoutManager is necessary to match NSTableView sizing. // See http://stackoverflow.com/questions/17095927/dynamically-changing-row-height-after-font-size-of-entire-nstableview-nsoutlin NSLayoutManager *lm = [[NSLayoutManager alloc] init]; [lm setTypesetterBehavior:NSTypesetterBehavior_10_2_WithCompatibility]; CGFloat height = [lm defaultLineHeightForFont:nativeFont]; SetRowHeight(int(height) + PX(4)); #elif defined(__WXMSW__) SetRowHeight(GetCharHeight() + PX(4)); #elif defined(__WXGTK__) // disable Ctrl+F in-control search: gtk_tree_view_set_search_column(GTK_TREE_VIEW(GtkGetTreeView()), -1); #endif UpdateHeaderAttrs(); UpdateColumns(); } void PoeditListCtrl::SetDisplayLines(bool dl) { m_displayIDs = dl; UpdateColumns(); } void PoeditListCtrl::CreateColumns() { wxASSERT( GetColumnCount() == 0 ); #ifdef __WXOSX__ NSTableView *tableView = (NSTableView*)[((NSScrollView*)GetHandle()) documentView]; [tableView setIntercellSpacing:NSMakeSize(3.0, 0.0)]; if (@available(macOS 11.0, *)) tableView.style = NSTableViewStyleFullWidth; #endif m_colID = m_colIcon = m_colSource = m_colTrans = nullptr; #if defined(__WXMSW__) int iconWidth = wxArtProvider::GetBitmap("StatusError").GetSize().x + 6 /*wxDVC internal padding*/; #else int iconWidth = PX(16); #endif m_colIcon = AppendBitmapColumn(L"∙", Model::Col_Icon, wxDATAVIEW_CELL_INERT, iconWidth, wxALIGN_CENTER, 0); auto sourceRenderer = new DataViewMarkupRenderer(); sourceRenderer->EnableEllipsize(wxELLIPSIZE_END); m_colSource = new wxDataViewColumn(_("Source text"), sourceRenderer, Model::Col_Source, wxCOL_WIDTH_DEFAULT, wxALIGN_LEFT, 0); AppendColumn(m_colSource); auto transRenderer = new wxDataViewTextRenderer(); transRenderer->EnableEllipsize(wxELLIPSIZE_END); m_colTrans = new wxDataViewColumn(_(L"Translation — %s"), transRenderer, Model::Col_Translation, wxCOL_WIDTH_DEFAULT, wxALIGN_LEFT, 0); AppendColumn(m_colTrans); auto idRenderer = new wxDataViewTextRenderer(); m_colID = new DataViewFixedColumn(_("ID"), idRenderer, Model::Col_ID, wxCOL_WIDTH_AUTOSIZE, wxALIGN_RIGHT); AppendColumn(m_colID); // wxDVC insists on having an expander column, but we really don't want one: auto fake = AppendTextColumn("", Model::Col_ID); fake->SetHidden(true); SetExpanderColumn(fake); #ifdef __WXMSW__ if (m_appTextDir == TextDirection::RTL) m_colSource->SetAlignment(wxALIGN_RIGHT); #endif ColorScheme::SetupWindowColors(this, [=] { #if !defined(__WXMSW__) && !defined(__WXOSX__) if (ColorScheme::GetWindowMode(this) == ColorScheme::Light) m_colIcon->GetRenderer()->SetValueAdjuster(new DataViewIconsAdjuster()); else m_colIcon->GetRenderer()->SetValueAdjuster(nullptr); #endif sourceRenderer->SetHighlightedBgColor(ColorScheme::Get(Color::ItemContextBgHighlighted, this)); }); } void PoeditListCtrl::UpdateColumns() { wxASSERT( GetColumnCount() > 0 ); if (!m_catalog) return; auto srclang = m_catalog->GetSourceLanguage(); auto lang = m_catalog->GetLanguage(); wxString sourceTitle; if (m_catalog->UsesSymbolicIDsForSource()) { // TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text sourceTitle = _("Source text ID"); } else { sourceTitle = srclang.IsValid() ? wxString::Format(_(L"Source text — %s"), srclang.DisplayName()) : _("Source text"); } if (m_catalog->HasSideloadedReferenceFile()) { wxFileName fn(m_catalog->GetSideloadedSourceData()->reference_file->GetFileName()); fn.MakeRelativeTo(wxFileName(m_catalog->GetFileName()).GetPath()); sourceTitle += wxString::Format(" [%s]", fn.GetFullPath()); } m_colSource->SetTitle(sourceTitle); #ifdef __WXMSW__ // Temporary workaround for https://github.com/vslavik/poedit/issues/343 and // https://github.com/vslavik/poedit/issues/481 -- fall back to markup-less rendering // (see also above in PoeditListCtrl::Model::GetValueByRow): dynamic_cast(m_colSource->GetRenderer())->EnableMarkup ( m_appTextDir == TextDirection::LTR || srclang.IsRTL() ); #endif if (m_model->m_catalog && m_model->m_catalog->HasCapability(Catalog::Cap::Translations)) { wxString langname = lang.IsValid() ? lang.DisplayName() : _("unknown language");; wxString transTitle = wxString::Format(_(L"Translation — %s"), langname); auto isRTL = lang.IsRTL(); #ifdef __WXMSW__ // a quirk of wx API: if the current locale is RTL, the meaning of L and R is reversed if (m_appTextDir == TextDirection::RTL) isRTL = !isRTL; #endif m_colTrans->SetHidden(false); m_colTrans->SetTitle(transTitle); m_colTrans->SetAlignment(isRTL ? wxALIGN_RIGHT : wxALIGN_LEFT); } else { m_colTrans->SetHidden(true); } m_colID->SetHidden(!m_displayIDs); // determine best fitting width only once, then set it as fixed, because IDs are immutable m_colID->SetWidth(wxCOL_WIDTH_AUTOSIZE); FixIdColumnSize(); SizeColumns(); #ifdef __WXGTK__ // wxGTK has delayed sizing computation, apparently CallAfter([=]{ FixIdColumnSize(); SizeColumns(); }); #endif } void PoeditListCtrl::FixIdColumnSize() { int computed_colID_width = m_colID->GetWidth(); // The returned width may be 0 if it is not computed yet or if column is hidden - don't fix it yet in this case if ( computed_colID_width > 0 ) m_colID->SetWidth(computed_colID_width); } void PoeditListCtrl::SizeColumns() { int w = GetClientSize().x; #if defined(__WXOSX__) { int visibleCols = 0; auto colCnt = GetColumnCount(); for (auto c = 0; c < colCnt; c++) { if (!GetColumn(c)->IsHidden()) visibleCols++; } w -= 3 * visibleCols; if (@available(macOS 11.0, *)) w -= 9; } #elif defined(__WXGTK__) w -= 2; #endif if (m_colIcon) w -= m_colIcon->GetWidth(); if (m_colID && m_colID->IsShown()) { w -= m_colID->GetWidth(); #ifdef __WXGTK__ w += 2; #endif } // Tell the model to not bother with strings larger than twice available space: m_model->SetMaxVisibleWidth(w / GetCharWidth()); if (m_colTrans && m_colTrans->IsShown()) { m_colSource->SetWidth(w / 2); m_colTrans->SetWidth(w - w / 2); } else { m_colSource->SetWidth(w); } } void PoeditListCtrl::CatalogChanged(const CatalogPtr& catalog) { if (!catalog) { m_catalog.reset(); m_model->SetCatalog(nullptr); return; } wxWindowUpdateLocker no_updates(this); const int oldCount = m_model->GetCount(); const int newCount = catalog ? catalog->GetCount() : 0; const bool isSameCatalog = (catalog == m_catalog); const bool sizeOrCatalogChanged = !isSameCatalog || (oldCount != newCount); SelectionPreserver preserve(!sizeOrCatalogChanged ? this : nullptr); // now read the new catalog: m_catalog = catalog; m_model->SetCatalog(catalog); UpdateColumns(); if (sizeOrCatalogChanged && GetItemCount() > 0) CallAfter([=]{ SelectAndFocus(0); }); } void PoeditListCtrl::RefreshAllItems() { // Can't use Cleared() here because it messes up selection and scroll position and // implementations across platforms are inconsistent. Doing notification for all items // is reasonably fast except on macOS, where it is *extremely* inefficient and where // Cleared() messes up position. Fortunately, native reloadData is fast and equivalent // to reloading individual rows, so we can do just that. #ifdef __WXOSX__ NSTableView *tableView = (NSTableView*)[((NSScrollView*)GetHandle()) documentView]; [tableView reloadData]; #else const int count = m_model->GetCount(); wxDataViewItemArray items; items.reserve(count); for (int i = 0; i < count; i++) items.push_back(m_model->GetItem(i)); m_model->ItemsChanged(items); #endif } void PoeditListCtrl::Sort() { if (!m_catalog) return; SelectionPreserver preserve(this); m_model->UpdateSort(); } void PoeditListCtrl::OnSize(wxSizeEvent& event) { wxWindowUpdateLocker lock(this); SizeColumns(); event.Skip(); } void PoeditListCtrl::DoFreeze() { // FIXME: This is gross, but necessary if DVC is redrawn just between // changing m_catalog and calling on-changed notification, particularly when // updating from sources. // // Proper fix would be to either a) make a copy in cat_update.cpp instead of // updating a catalog in a way that may change its size or b) have // notifications integrated properly in Catalog and call them immediately // after a (size) change. m_model->Freeze(); wxDataViewCtrl::DoFreeze(); } void PoeditListCtrl::DoThaw() { wxDataViewCtrl::DoThaw(); m_model->Thaw(); } poedit-3.6.3/src/qa_checks.cpp0000644000175100001660000004661315011674230011716 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2017-2025 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 "qa_checks.h" #include "syntaxhighlighter.h" #include #include #include #include // ------------------------------------------------------------- // QACheck implementations // ------------------------------------------------------------- namespace QA { #define QA_ENUM_ALL_CHECKS(m) \ m(QA::Placeholders); \ m(QA::NotAllPlurals); \ m(QA::CaseMismatch); \ m(QA::WhitespaceMismatch); \ m(QA::PunctuationMismatch); \ /* end */ #define QA_METADATA(symbolicName, description) \ static const char *GetId() { return symbolicName; } \ static wxString GetDescription() { return description; } \ const char *GetCheckId() const override { return GetId(); } std::wregex RE_POSITIONAL_FORMAT(LR"(^%[0-9]\$(.*))", std::regex_constants::ECMAScript | std::regex_constants::optimize); class Placeholders : public QACheck { public: QA_METADATA("placeholders", _("Placeholders correctness")) Placeholders(Language /*lang*/) {} bool CheckItem(CatalogItemPtr item) override { // this check is expensive, so make sure to run it on fully translated items only if (!item->IsTranslated()) return false; auto syntax = SyntaxHighlighter::ForItem(*item, SyntaxHighlighter::Placeholder, SyntaxHighlighter::EnforceFormatTag); if (!syntax) return false; PlaceholdersSet phSource; ExtractPlaceholders(phSource, syntax, item->GetString()); if (item->HasPlural()) { ExtractPlaceholders(phSource, syntax, item->GetPluralString()); int index = 0; for (auto& t: item->GetTranslations()) { if (CheckPlaceholders(phSource, syntax, item, t, index++)) return true; } return false; } else { return CheckPlaceholders(phSource, syntax, item, item->GetTranslation()); } return false; } private: // TODO: use std::string_view (C++17) typedef std::set PlaceholdersSet; bool CheckPlaceholders(const PlaceholdersSet& phSource, SyntaxHighlighterPtr syntax, CatalogItemPtr item, const wxString& str, int pluralIndex = -1) { PlaceholdersSet phTrans; ExtractPlaceholders(phTrans, syntax, str); // Check the all placeholders are used in translation: for (auto& ph: phSource) { if (phTrans.find(ph) == phTrans.end()) { // as a special case, allow errors in 1st plural form, because people tend to translate e.g. // "%d items" as "One item" for n=1 if (pluralIndex != 0) { item->SetIssue(CatalogItem::Issue::Warning, wxString::Format(_(L"Placeholder “%s†is missing from translation."), ph)); return true; } } } // And the other way around, that there are no superfluous ones: for (auto& ph: phTrans) { if (phSource.find(ph) == phSource.end()) { item->SetIssue(CatalogItem::Issue::Warning, wxString::Format(_(L"Superfluous placeholder “%s†that isn’t in source text."), ph)); return true; } } return false; } void ExtractPlaceholders(PlaceholdersSet& ph, SyntaxHighlighterPtr syntax, const wxString& str) { const std::wstring text(str.ToStdWstring()); syntax->Highlight(text, [&text, &ph, syntax](int a, int b, SyntaxHighlighter::TextKind kind){ if (kind != SyntaxHighlighter::Placeholder) return; auto x = text.substr(a, b - a); if (x == L"%%") return; // filter out reordering of positional arguments by tracking them as unordered; // e.g. %1$s is translated into %s std::wsmatch m; if (std::regex_match(x, m, RE_POSITIONAL_FORMAT)) { x = std::wstring(L"%") + std::wstring(m[1]); } ph.insert(x); }); } }; class NotAllPlurals : public QACheck { public: QA_METADATA("allplurals", _("Plural form translations")) NotAllPlurals(Language /*lang*/) {} bool CheckItem(CatalogItemPtr item) override { if (!item->HasPlural()) return false; bool foundTranslated = false; bool foundEmpty = false; for (auto& s: item->GetTranslations()) { if (s.empty()) foundEmpty = true; else foundTranslated = true; } if (foundEmpty && foundTranslated) { item->SetIssue(CatalogItem::Issue::Warning, _("Not all plural forms are translated.")); return true; } return false; } }; class CaseMismatch : public QACheck { public: QA_METADATA("case", _("Inconsistent upper/lower case")) CaseMismatch(Language lang) : m_lang(lang.Lang()) { m_shouldCheck = (m_lang != "zh" && m_lang != "ja" && m_lang != "ka"); } bool CheckString(CatalogItemPtr item, const wxString& source, const wxString& translation) override { if (!m_shouldCheck || source.length() < 2) return false; // Detect that the source string is a sentence: should have 1st letter uppercase and 2nd lowercase, // as checking just the 1st letter would lead to false positives (consider e.g. "MSP430 built-in"): if (u_isupper(source[0]) && u_islower(source[1]) && u_islower(translation[0])) { item->SetIssue(CatalogItem::Issue::Warning, _("The translation should start as a sentence.")); return true; } if (u_islower(source[0]) && u_isupper(translation[0])) { if (m_lang != "de") { item->SetIssue(CatalogItem::Issue::Warning, _("The translation should start with a lowercase character.")); return true; } // else: German nouns start uppercased, this would cause too many false positives } return false; } private: bool m_shouldCheck; std::string m_lang; }; class WhitespaceMismatch : public QACheck { public: QA_METADATA("whitespace", _("Inconsistent whitespace")) WhitespaceMismatch(Language lang) { auto l = lang.Lang(); // Space is used sparingly in these languages and e.g. not present after sentence-ending // period. Checking trailing/leading space is therefore often a false positive. m_checkSpaceInTranslation = (l != "zh" && l != "ja"); } bool CheckString(CatalogItemPtr item, const wxString& source, const wxString& translation) override { if (m_checkSpaceInTranslation && u_isspace(source[0]) && !u_isspace(translation[0])) { item->SetIssue(CatalogItem::Issue::Warning, _(L"The translation doesn’t start with a space.")); return true; } if (!u_isspace(source[0]) && u_isspace(translation[0])) { item->SetIssue(CatalogItem::Issue::Warning, _(L"The translation starts with a space, but the source text doesn’t.")); return true; } if (source.Last() == '\n' && translation.Last() != '\n') { item->SetIssue(CatalogItem::Issue::Warning, _(L"The translation is missing a newline at the end.")); return true; } if (source.Last() != '\n' && translation.Last() == '\n') { item->SetIssue(CatalogItem::Issue::Warning, _(L"The translation ends with a newline, but the source text doesn’t.")); return true; } if (m_checkSpaceInTranslation && u_isspace(source.Last()) && !u_isspace(translation.Last())) { item->SetIssue(CatalogItem::Issue::Warning, _(L"The translation is missing a space at the end.")); return true; } if (!u_isspace(source.Last()) && u_isspace(translation.Last())) { item->SetIssue(CatalogItem::Issue::Warning, _(L"The translation ends with a space, but the source text doesn’t.")); return true; } return false; } private: bool m_checkSpaceInTranslation; }; class PunctuationMismatch : public QACheck { public: QA_METADATA("punctuation", _("Punctuation checks")); PunctuationMismatch(Language lang) : m_lang(lang.Lang()) { } bool CheckString(CatalogItemPtr item, const wxString& source_, const wxString& translation) override { if (m_lang == "th" || m_lang == "lo" || m_lang == "km" || m_lang == "my") { // For Thai, Lao, Khmer and Burmese, // the punctuation rules are so different that these checks don't // apply at all (with the possible exception of quote marks - TODO). // It's better to skip them than to spam the user with bogus warnings // on _everything_. // See https://www.ccjk.com/punctuation-rule-for-bahasa-vietnamese-and-thai/ return false; } auto source(source_); if (m_lang == "zh" || m_lang == "ja") { // Space is used sparingly in these languages andd e.g. not present after sentence-ending // period, so strip it from the source if present and check punctuation w/o it. if (u_isspace(source.Last()) && !u_isspace(translation.Last())) source.Trim(/*fromRight:*/true); } const UChar32 s_last = source.Last(); const UChar32 t_last = translation.Last(); const bool s_punct = IsPunctuation(s_last); const bool t_punct = IsPunctuation(t_last); if (u_getIntPropertyValue(s_last, UCHAR_BIDI_PAIRED_BRACKET_TYPE) == U_BPT_CLOSE || u_getIntPropertyValue(t_last, UCHAR_BIDI_PAIRED_BRACKET_TYPE) == U_BPT_CLOSE) { // too many reordering related false positives for brackets // e.g. "your {site} account" -> "váš úÄet na {site}" if ((wchar_t)u_getBidiPairedBracket(s_last) != (wchar_t)source[0]) { return false; } else { // OTOH, it's desirable to check strings fully enclosed in brackets like "(unsaved)" if (source.find_first_of((wchar_t)s_last, 1) != source.size() - 1) { // it's more complicated, possibly something like "your {foo} on {bar}" return false; } } } if (u_hasBinaryProperty(s_last, UCHAR_QUOTATION_MARK) || (!s_punct && u_hasBinaryProperty(t_last, UCHAR_QUOTATION_MARK))) { // quoted fragments can move around, e.g., so ignore quotes in reporting: // >> Invalid value for ‘{fieldName}’​ field // >> Valor inválido para el campo ‘{fieldName}’ // TODO: count quote characters to check if used correctly in translation; don't check position return false; } if (s_punct && !t_punct) { item->SetIssue(CatalogItem::Issue::Warning, wxString::Format(_(L"The translation should end with “%sâ€."), wxString(wxUniChar(s_last)))); return true; } else if (!s_punct && t_punct) { if (t_last == '.' && (source.ends_with("st") || source.ends_with("nd") || source.ends_with("th"))) { // special-case English ordinals to languages that use [number]. } else { item->SetIssue(CatalogItem::Issue::Warning, wxString::Format(_(L"The translation should not end with “%sâ€."), wxString(wxUniChar(t_last)))); return true; } } else if (s_punct && t_punct && s_last != t_last) { if (IsEquivalent(L'…', t_last) && source.ends_with("...")) { // as a special case, allow translating ... (3 dots) as … (ellipsis) } else if (u_hasBinaryProperty(s_last, UCHAR_QUOTATION_MARK) && u_hasBinaryProperty(t_last, UCHAR_QUOTATION_MARK)) { // don't check for correct quotes for now, accept any quotations marks as equal } else if (IsEquivalent(s_last, t_last)) { // some characters are mostly equivalent and we shouldn't warn about them } else { item->SetIssue(CatalogItem::Issue::Warning, wxString::Format(_(L"The translation ends with “%sâ€, but the source text ends with “%sâ€."), wxString(wxUniChar(t_last)), wxString(wxUniChar(s_last)))); return true; } } return false; } private: bool IsPunctuation(UChar32 c) const { return u_hasBinaryProperty(c, UCHAR_TERMINAL_PUNCTUATION) || u_hasBinaryProperty(c, UCHAR_QUOTATION_MARK) || c == L'…' || // somehow U+2026 ellipsis is not terminal punctuation c == L'⋯'; // ...or Chinese U+22EF } bool IsEquivalent(UChar32 src, UChar32 trans) const { if (src == trans) return true; if (m_lang == "zh" || m_lang == "ja") { // Chinese uses full-width punctuation. // See https://en.wikipedia.org/wiki/Chinese_punctuation switch (src) { case '.': return trans == L'。'; case ',': return trans == L',' || trans == L'ã€'; case '!': return trans == L'ï¼'; case '?': return trans == L'?'; case ':': return trans == L':'; case ';': return trans == L'ï¼›'; case '(': return trans == L'('; case ')': return trans == L')'; case L'…': return trans == L'⋯'; default: break; } } else if (m_lang == "ar" || m_lang == "fa" || m_lang == "ug") { // In Arabic (but not other RTL languages), some punctuation is mirrored. switch (src) { case ';': return trans == L'Ø›'; case '?': return trans == L'ØŸ'; case ',': return trans == L'ØŒ'; default: break; } } else if (m_lang == "el") { // In Greek, questions end with ';' and not '?'. if (src == '?') return trans == ';'; } else if (m_lang == "hi") { // In Hindi, full stop is '|'. if (src == '.') return trans == L'।'; } else if (m_lang == "hy") { // In Armenian, full stop is 'Ö‰', which is often substituted with Latin ':'. if (src == '.') return trans == L'Ö‰' || trans == L':'; } else if (m_lang == "ti" || m_lang == "am") { // Handle Geʽez script script (used by Amharic, Tigrinya and more languages) punctuation: switch (trans) { case L'á¢': return src == '.'; case L'á£': return src == ','; case L'á¤': return src == ';'; case L'á¥': return src == ':'; case L'á§': return src == '?'; default: break; } } return false; } std::string m_lang; }; } // namespace QA // ------------------------------------------------------------- // QACheck support code // ------------------------------------------------------------- bool QACheck::CheckItem(CatalogItemPtr item) { if (!item->GetTranslation().empty() && CheckString(item, item->GetString(), item->GetTranslation())) return true; if (item->HasPlural()) { unsigned count = item->GetNumberOfTranslations(); for (unsigned i = 1; i < count; i++) { auto t = item->GetTranslation(i); if (!t.empty() && CheckString(item, item->GetPluralString(), t)) return true; } } return false; } bool QACheck::CheckString(CatalogItemPtr /*item*/, const wxString& /*source*/, const wxString& /*translation*/) { wxFAIL_MSG("not implemented - must override CheckString OR CheckItem"); return false; } // ------------------------------------------------------------- // QAChecker // ------------------------------------------------------------- QAChecker::QAChecker() { } QAChecker::~QAChecker() { } std::shared_ptr QAChecker::GetFor(Catalog& catalog) { auto lang = catalog.GetLanguage(); auto c = std::make_shared(); #define qa_instantiate(klass) c->AddCheck(lang); QA_ENUM_ALL_CHECKS(qa_instantiate); return c; } std::vector> QAChecker::GetMetadata() { std::vector> m; #define qa_metadata(klass) m.emplace_back(klass::GetId(), klass::GetDescription()) QA_ENUM_ALL_CHECKS(qa_metadata); return m; } int QAChecker::Check(Catalog& catalog) { int issues = 0; for (auto& i: catalog.items()) issues += Check(i); return issues; } int QAChecker::Check(CatalogItemPtr item) { int issues = 0; for (auto& c: m_checks) { if (item->GetString().empty() || (item->HasPlural() && item->GetPluralString().empty())) continue; if (c->CheckItem(item)) { issues++; // we only record single issue, so there's no point in continuing with other checks: break; } } return issues; } poedit-3.6.3/src/commentdlg.h0000644000175100001660000000444515011674230011570 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2001-2025 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 _COMMENTDLG_H_ #define _COMMENTDLG_H_ #include class WXDLLIMPEXP_FWD_CORE wxTextCtrl; /** CommentDialog is a very simple dialog that lets the user edit catalog comments. Comment consists of one or more lines that begin with the '#' character. The user is presented with more user friendly representation with '#' removed. */ class CommentDialog : public wxDialog { public: /// Returns the given comment without the leading "# " static wxString RemoveStartHash(const wxString& comment); /// Returns the given comment with the leading "# " added static wxString AddStartHash(const wxString& comment); /** Ctor. \param parent Parent frame, FindFrame will float on it \param comment Initial value of comment */ CommentDialog(wxWindow *parent, const wxString& comment); /// Returns the content of comment edit field. wxString GetComment() const; private: wxTextCtrl *m_text; void OnDelete(wxCommandEvent& event); DECLARE_EVENT_TABLE() }; #endif // _FINDFRAME_H_ poedit-3.6.3/src/progress_ui.h0000644000175100001660000002306015011674230011772 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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_progressui_h #define Poedit_progressui_h #include "concurrency.h" #include "errors.h" #include "progress.h" #include "titleless_window.h" #include #include #include #include #include class WXDLLIMPEXP_FWD_CORE wxBoxSizer; class WXDLLIMPEXP_FWD_CORE wxStaticBitmap; class WXDLLIMPEXP_FWD_CORE wxStaticText; class WXDLLIMPEXP_FWD_CORE wxGauge; class WXDLLIMPEXP_FWD_CORE wxMessageDialog; class ActivityIndicator; class SecondaryLabel; /// Structured result of a background task run under ProgressWindow struct BackgroundTaskResult { BackgroundTaskResult() {} BackgroundTaskResult(const wxString& summary_) : summary(summary_) {} explicit operator bool() const { return !summary.empty() || !details.empty() || user_data.has_value(); } /// Larger text summary shown after finishing the task wxString summary; /** Further details (e.g. stats) about the operation. Each pair is a label-value pair, shown in a table. If the value is empty, the label is shown as wrapped text, i.e. can be longer. */ std::vector> details; /// Additional user data for custom implementations of ProgressWindow::SetSummaryContent() std::any user_data; }; /** Exception thrown by background tasks to indicate an error with additional details. When used in a task run under ProgressWindow, the exception will be caught and displayed as wxMessageDialog with "message" being the main, more generic message, and "details" being the extended explanation of the error. */ class BackgroundTaskException : public Exception { public: BackgroundTaskException(const wxString& message, const wxString& details = wxString()) : Exception(message), m_details(details) {} const wxString& Details() const { return m_details; } private: wxString m_details; }; /** Window showing progress of a long-running task. Must be used in conjuction with the static RunTaskXXX functions. The task may return BgTaskResult value to show a summary/result of execution. This may require overriding ShowSummary(). The task may also throw an exception to indicate an error. This will be caught and shown to the user. If non-fatal errors happen during execution and are logged with wxLogError, they will be shown to the user as well (as part of summary, if shown, otherwise as separate window). The window may optionally be initialized with a cancellation token. If provided, the window will show a "Cancel" button and the RunTask* methods will return false if cancelled. Note that the background task may not be able to honor the cancellation request, e.g. when it is done too late in execution. To check if the job was cancelled, you should check RunTask* return value not @a cancellationToken state. If the task supports cancellation, it should indicate successful cancellation by either returning empty summary or throwing dispatch::cancellation_exception. */ class ProgressWindow : public TitlelessDialog, public ProgressObserver { public: /** Creates the progress window. @param parent Parent window, if any. @param title Title of the operation. @param cancellationToken Cancellation token to use for the task. If provided, the window will show a "Cancel" button and the task should check the token for cancellation requests. */ ProgressWindow(wxWindow *parent, const wxString& title, dispatch::cancellation_token_ptr cancellationToken = dispatch::cancellation_token_ptr()); /** Returns currently active window (or nullptr) for the current thread. Should only be used from within an active task. */ static ProgressWindow *GetActive() { return ms_activeWindow; } /** Runs the task modally, i.e. blocking any other execution in the app. Returns true on success (no fatal errors, no cancellation). */ template bool RunTaskModal(TBackgroundJob&& task) { bool retval = false; RunTaskTempl(std::move(task), [&](bool status){ retval = status; }, /*forceModal=*/true); return retval; } /** Runs the task window-modal (if given a parent) or app-modal (if not) @param completionHandler Lambda expression to call after the task completes. This can either take a bool argument (indicating success or failure-or-cancellation) or not, if you don't care about the result. */ template void RunTaskThenDo(TBackgroundJob&& task, TCompletion&& completionHandler) { RunTaskTempl(std::move(task), std::move(completionHandler)); } /** Sets custom error message to use as the "header" message in case of errors. Detailed errors are shown in the details. This message is only used if no summary window was shown. It is also overriden if a BackgroundTaskException is thrown. */ void SetErrorMessage(const wxString& message) { m_errorMessage = message; } protected: std::function WrapCompletionHandler(std::function&& f) { return f; } std::function WrapCompletionHandler(std::function&& f) { return [f = std::move(f)](bool){ f(); /*ignore return value*/ }; } template void RunTaskTempl(TBackgroundJob&& task, TCompletion&& completionHandler, bool forceModal = false) { DoRunTask ( [task = std::move(task)]{ if constexpr (std::is_same_v, void>) { task(); return BackgroundTaskResult(); } else { return task(); } }, WrapCompletionHandler(completionHandler), forceModal ); } void DoRunTask(std::function&& task, std::function&& completionHandler, bool forceModal); /** Shows summary of the task's run, as returned by the task function and puts the window into a state where the user can view it. By default, shows a string summary if present in @a data, otherwise shows nothing and closes the window right away. @return true if a summary was shown, false otherwise @see SetSummaryContent() */ bool ShowSummary(const BackgroundTaskResult& data, const wxArrayString& errors); /** Adds summary content to the UI. By default, shows content of @a data if present, otherwise shows nothing and closes the window right away. @return true if a summary was added, false otherwise */ virtual bool SetSummaryContent(const BackgroundTaskResult& data); // Helpers for creating summary UI: wxBoxSizer *GetDetailsSizer() { return m_detailsSizer; } wxBoxSizer *GetButtonSizer() { return m_buttonSizer; } void AddSummaryText(const wxString& text); wxBoxSizer *AddSummaryDetailLine(); wxBoxSizer *AddSummaryDetailLine(const wxString& label, const wxString& value); wxWindowPtr CreateErrorDialog(const wxArrayString& errors); // ProgressObserver overrides: void update_message(const wxString& text) override; void update_progress(double completedFraction) override; protected: const int PROGRESS_BAR_RANGE = 100; void OnCancel(wxCommandEvent&); private: std::shared_ptr m_progress; wxString m_errorMessage; wxStaticBitmap *m_image; wxStaticText *m_title; SecondaryLabel *m_progressMessage; wxGauge *m_gauge; wxBoxSizer *m_infoSizer = nullptr, *m_infoSummarySizer = nullptr, *m_errorsSizer = nullptr, *m_detailsSizer = nullptr, *m_buttonSizer = nullptr; wxButton *m_okButton = nullptr; wxButton *m_cancelButton = nullptr; ActivityIndicator *m_cancellationProgress = nullptr; dispatch::cancellation_token_ptr m_cancellationToken; static thread_local ProgressWindow *ms_activeWindow; }; #endif // Poedit_progressui_h poedit-3.6.3/src/utility.cpp0000644000175100001660000003402215011674230011467 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2010-2025 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 "utility.h" #include #include #include #include #if wxUSE_GUI #include #endif #ifdef __WXOSX__ #include #endif #ifdef __UNIX__ #include #include #include #endif #include "str_helpers.h" wxString EscapeMarkup(const wxString& str) { wxString s(str); size_t pos = 0; while (true) { pos = s.find_first_of(L"&<>", pos); if (pos == wxString::npos) break; std::string replacement; switch ((wchar_t)s[pos]) { case '&': s.replace(pos, 1, L"&"); pos += 5; break; case '<': s.replace(pos, 1, L"<"); pos += 4; break; case '>': s.replace(pos, 1, L">"); pos += 4; break; default: // can't happen break; } }; 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.MakeAbsolute(); return fn; } #if wxUSE_GUI && defined(__WXMSW__) bool IsRunningUnderScreenReader() { BOOL running; BOOL ret = SystemParametersInfo(SPI_GETSCREENREADER, 0, &running, 0); return ret && running; } #endif // ---------------------------------------------------------------------- // TempDirectory // ---------------------------------------------------------------------- bool TempDirectory::ms_keepFiles = false; TempDirectory::TempDirectory() { #ifdef __UNIX__ wxString path = wxFileName::GetTempDir(); path += "/poeditXXXXXX"; wxCharBuffer buf(path.fn_str()); if ( mkdtemp(buf.data()) == NULL ) { wxLogError(_("Cannot create temporary directory.")); return; } m_dir = wxConvFile.cMB2WX(buf.data()); #else for ( ;; ) { wxString name = wxFileName::CreateTempFileName("poedit"); if ( name.empty() ) { wxLogError(_("Cannot create temporary directory.")); return; } wxLogNull null; if ( wxRemoveFile(name) && wxMkdir(name, 0700) ) { #ifdef __WXMSW__ // prevent possible problems with Unicode filenames in launched // third party tools (e.g. gettext): m_dir = wxFileName(name).GetShortPath(); #else m_dir = name; #endif wxLogTrace("poedit.tmp", "created temp dir %s", name.c_str()); break; } // else: try again } #endif } TempDirectory::~TempDirectory() { Clear(); } void TempDirectory::Clear() { if ( m_dir.empty() ) return; if ( ms_keepFiles ) { wxLogTrace("poedit.tmp", "keeping temp files in %s", m_dir.c_str()); return; } wxLogTrace("poedit.tmp", "removing temp dir %s", m_dir.c_str()); wxFileName::Rmdir(m_dir, wxPATH_RMDIR_RECURSIVE); m_dir.clear(); } wxString TempDirectory::CreateFileName(const wxString& suffix) { wxASSERT( !m_dir.empty() ); int counter = m_counters[suffix]++; wxString s = wxString::Format("%s%c%s%s", m_dir.c_str(), wxFILE_SEP_PATH, counter > 0 ? wxString::Format("%d", counter) : wxString(), suffix.c_str()); wxLogTrace("poedit.tmp", "new temp file %s", s.c_str()); return s; } // ---------------------------------------------------------------------- // TempOutputFileFor // ---------------------------------------------------------------------- TempOutputFileFor::TempOutputFileFor(const wxString& filename) : m_filenameFinal(filename) { wxString path, name, ext; wxFileName::SplitPath(filename, &path, &name, &ext); if (path.empty()) path = "."; if (!ext.empty()) ext = "." + ext; #ifdef __WXOSX__ NSURL *fileUrl = [NSURL fileURLWithPath:str::to_NS(filename)]; NSURL *tempdirUrl = [[NSFileManager defaultManager] URLForDirectory:NSItemReplacementDirectory inDomain:NSUserDomainMask appropriateForURL:fileUrl create:YES error:nil]; if (tempdirUrl) m_tempDir = str::to_wx([tempdirUrl path]); #endif wxString random(wchar_t('a' + rand() % 26)); for (;;) { #ifdef __WXOSX__ if (!m_tempDir.empty()) { m_filenameTmp = m_tempDir + wxFILE_SEP_PATH + name + random + ext; } else #endif // __WXOSX__ { auto tempPath = path; #ifdef __WXMSW__ // On Windows, Dropbox clients opens files and prevents their deletion while syncing // is in progress; this causes problems for short-lived files like this. If detected, // use TMPDIR instead, resulting in slower performance, but no errors. if (tempPath.Contains("\\Dropbox\\")) tempPath = wxFileName::GetTempDir(); #endif // Temp filenames may be ugly, nobody cares. Make them safe for // Unicode-unfriendly uses on Windows, i.e. 8.3 without non-ASCII // characters: auto base = CliSafeFileName(tempPath) + wxFILE_SEP_PATH; #ifdef __WXMSW__ // this is OK, ToAscii() replaces non-ASCII with '_': base += name.substr(0,5).ToAscii(); #else base += name.substr(0, 5); #endif m_filenameTmp = base + "tmp" + random + ext; } if (!wxFileExists(m_filenameTmp)) break; // good! random += wchar_t('a' + rand() % 26); } } bool TempOutputFileFor::Commit() { return ReplaceFile(m_filenameTmp, m_filenameFinal); } bool TempOutputFileFor::ReplaceFile(const wxString& temp, const wxString& dest) { #ifdef __WXOSX__ NSURL *tempURL = [NSURL fileURLWithPath:str::to_NS(temp)]; NSURL *destURL = [NSURL fileURLWithPath:str::to_NS(dest)]; NSURL *resultingURL = nil; return [[NSFileManager defaultManager] replaceItemAtURL:destURL withItemAtURL:tempURL backupItemName:nil options:0 resultingItemURL:&resultingURL error:nil]; #else // !__WXOSX__ #ifdef __UNIX__ auto destPath = dest.fn_str(); bool overwrite = false; struct stat st; if ((overwrite = wxFileExists(dest)) == true) { if (stat(destPath, &st) != 0) overwrite = false; } #endif if (!wxRenameFile(temp, dest, /*overwrite=*/true)) return false; #ifdef __UNIX__ if (overwrite) { // Preserve permissions/ownership on best-effort basis, but don't make // it a failure if it can't be done. The stat() call above was already // handled that way. // E.g. in Snap chmod() call is blocked within the sandbox even when // it noop "changes" ownership to self. (void)chown(destPath, st.st_uid, st.st_gid); (void)chmod(destPath, st.st_mode); } #endif return true; #endif // !__WXOSX__ } TempOutputFileFor::~TempOutputFileFor() { #ifdef __WXOSX__ if (!m_tempDir.empty()) wxFileName::Rmdir(m_tempDir, wxPATH_RMDIR_RECURSIVE); #else if (wxFileExists(m_filenameTmp)) wxRemoveFile(m_filenameTmp); #endif } #ifdef __WXMSW__ wxString CliSafeFileName(const wxString& fn) { if (fn.IsAscii()) { return fn; } else if (wxFileExists(fn) || wxDirExists(fn)) { return wxFileName(fn).GetShortPath(); } else { wxString path, name, ext; wxFileName::SplitPath(fn, &path, &name, &ext); if (path.empty()) path = "."; if (wxDirExists(path)) { auto p = wxFileName(path).GetShortPath() + wxFILE_SEP_PATH + name; if (!ext.empty()) p += "." + ext; return p; } } return fn; } #endif // __WXMSW__ // ---------------------------------------------------------------------- // Helpers for persisting windows' state // ---------------------------------------------------------------------- #if wxUSE_GUI void SaveWindowState(const wxTopLevelWindow *win, int flags) { #ifdef __WXOSX__ // Don't remember dimensions of a fullscreen window: if ([[NSApplication sharedApplication] currentSystemPresentationOptions] & NSApplicationPresentationFullScreen) return; #endif wxConfigBase *cfg = wxConfig::Get(); const wxString path = WindowStatePath(win); if ( !win->IsIconized() ) { if ( !win->IsMaximized() ) { #if defined(__WXMSW__) || defined(__WXOSX__) if ( flags & WinState_Pos ) { const wxPoint pos = win->GetPosition(); cfg->Write(path + "x", (long)pos.x); cfg->Write(path + "y", (long)pos.y); } #endif // __WXMSW__/__WXOSX__ if ( flags & WinState_Size ) { const wxSize sz = win->GetClientSize(); cfg->Write(path + "w", (long)sz.x); cfg->Write(path + "h", (long)sz.y); } } if ( flags & WinState_Size ) cfg->Write(path + "maximized", (long)win->IsMaximized()); } } void RestoreWindowState(wxTopLevelWindow *win, const wxSize& defaultSize, int flags) { wxConfigBase *cfg = wxConfig::Get(); const wxString path = WindowStatePath(win); if ( flags & WinState_Size ) { int width = (int)cfg->Read(path + "w", defaultSize.x); int height = (int)cfg->Read(path + "h", defaultSize.y); if ( width != -1 || height != -1 ) { // filter out ridiculous sizes: if (width != -1 && width < 100) width = defaultSize.x; if (height != -1 && height < 100) height = defaultSize.y; win->SetClientSize(width, height); } } #if defined(__WXMSW__) || defined(__WXOSX__) if ( flags & WinState_Pos ) { wxPoint pos; pos.x = (int)cfg->Read(path + "x", -1); pos.y = (int)cfg->Read(path + "y", -1); if ( pos.x != -1 || pos.y != -1 ) { // NB: if this is the only Poedit frame opened, place it at remembered // position, but don't do that if there already are other frames, // because they would overlap and nobody could recognize that there are // many of them for (;;) { bool occupied = false; for (auto& w : wxTopLevelWindows) { if (w != win && w->GetPosition() == pos) { occupied = true; break; } } if (!occupied) break; pos += wxPoint(20,20); } win->Move(pos); } } // If the window is completely out of all screens (e.g. because // screens configuration changed), move it to primary screen: if ( wxDisplay::GetFromWindow(win) == wxNOT_FOUND ) win->Move(20, 40); #endif // __WXMSW__/__WXOSX__ // If the window is larger than current screen, resize it to fit: wxDisplay display(win); if (!display.IsOk()) return; wxRect screenRect = display.GetClientArea(); wxRect winRect = win->GetRect(); if ( winRect.GetPosition() == wxDefaultPosition ) winRect.SetPosition(screenRect.GetPosition()); // not placed yet, fake it if ( !screenRect.Contains(winRect) ) { // Don't crop the window immediately, because it could become too small // due to it. Try to move it to the center of the screen first, then crop. winRect = winRect.CenterIn(screenRect); winRect.Intersect(screenRect); win->SetSize(winRect); } // Maximize if it should be if ( cfg->Read(path + "maximized", long(0)) ) { win->Maximize(); } } #endif // wxUSE_GUI poedit-3.6.3/src/main_toolbar.h0000644000175100001660000000320215011674230012073 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2025 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_main_toolbar_h #define Poedit_main_toolbar_h #include #include /// Abstract interface to the app's main toolbar. class MainToolbar { public: virtual ~MainToolbar() {} virtual void EnableSyncWithCrowdin(bool on) = 0; static std::unique_ptr Create(wxFrame *parent); protected: static std::unique_ptr CreateWX(wxFrame *parent); MainToolbar() {} }; #endif // Poedit_main_toolbar_h poedit-3.6.3/src/crowdin_gui.h0000644000175100001660000000704615011674230011750 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2025 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 #include "catalog.h" #ifdef HAVE_HTTP_CLIENT #include "cloud_accounts_ui.h" #include "cloud_sync.h" #include "customcontrols.h" #include class WXDLLIMPEXP_FWD_CORE wxBoxSizer; class WXDLLIMPEXP_FWD_CORE wxButton; /** Panel used to sign in into Crowdin. */ class CrowdinLoginPanel : public AccountDetailPanel { public: /// Constructor flags enum Flags { /// Add wxID_CANCEL dialog button to the panel AddCancelButton = 1 }; CrowdinLoginPanel(wxWindow *parent, int flags = 0); wxString GetServiceName() const override { return "Crowdin"; } wxString GetServiceLogo() const override { return "CrowdinLogo"; } wxString GetServiceDescription() const override; wxString GetServiceLearnMoreURL() const override; void InitializeAfterShown() override; bool IsSignedIn() const override; wxString GetLoginName() const override { return m_userLogin; } void SignIn() override; 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&); void OnUserSignedIn(); State m_state; ActivityIndicator *m_activity; wxBoxSizer *m_loginInfo; wxButton *m_signIn, *m_signOut; wxString m_userName, m_userLogin; std::string m_userAvatar; }; /// Can given file by synced to Crowdin, i.e. does it come from Crowdin and does it have required metadata? bool CanSyncWithCrowdin(CatalogPtr cat); /** 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, std::function)> onDone); #else // !HAVE_HTTP_CLIENT // convenience stubs to avoid additional checks all over other code: inline bool CanSyncWithCrowdin(CatalogPtr) { return false; } inline bool ShouldSyncToCrowdinAutomatically(CatalogPtr) { return false; } #endif // !HAVE_HTTP_CLIENT #endif // Poedit_crowdin_gui_h poedit-3.6.3/src/fileviewer.extensions.h0000644000175100001660000002465515011674230014003 // Code generated with scripts/extract-fileviewer-mappings.py begins here { "_coffee", "coffeescript" }, { "_js", "javascript" }, { "_ls", "livescript" }, { "a51", "nasm" }, { "adb", "ada" }, { "adml", "xml" }, { "admx", "xml" }, { "ado", "stata" }, { "adoc", "asciidoc" }, { "adp", "tcl" }, { "ads", "ada" }, { "ahk", "autohotkey" }, { "ahkl", "autohotkey" }, { "al", "perl" }, { "ant", "xml" }, { "app.src", "erlang" }, { "as", "actionscript" }, { "asc", "asciidoc" }, { "asd", "lisp" }, { "asm", "nasm" }, { "au3", "autoit" }, { "auk", "awk" }, { "avsc", "json" }, { "aw", "php" }, { "axml", "xml" }, { "b", "brainfuck" }, { "bas", "vba" }, { "bash", "shell" }, { "bat", "batch" }, { "bats", "shell" }, { "bf", "brainfuck" }, { "bones", "javascript" }, { "boot", "clojure" }, { "brs", "brightscript" }, { "builder", "ruby" }, { "builds", "xml" }, { "c++", "cpp" }, { "cake", "coffeescript" }, { "cats", "c" }, { "cbl", "cobol" }, { "cc", "cpp" }, { "ccp", "cobol" }, { "ccproj", "xml" }, { "ccxml", "xml" }, { "cdf", "mathematica" }, { "cfg", "ini" }, { "cgi", "perl" }, { "cginc", "hlsl" }, { "cjs", "javascript" }, { "cjsx", "coffeescript" }, { "cl", "lisp" }, { "cl2", "clojure" }, { "clixml", "xml" }, { "clj", "clojure" }, { "cljc", "clojure" }, { "cljs", "clojure" }, { "cljs.hl", "clojure" }, { "cljscm", "clojure" }, { "cljx", "clojure" }, { "cls", "vba" }, { "cmake.in", "cmake" }, { "cmd", "batch" }, { "cob", "cobol" }, { "coffee", "coffeescript" }, { "command", "shell" }, { "cp", "cpp" }, { "cproject", "xml" }, { "cpy", "cobol" }, { "cr", "crystal" }, { "cs", "csharp" }, { "cscfg", "xml" }, { "csdef", "xml" }, { "csl", "xml" }, { "csproj", "xml" }, { "csx", "csharp" }, { "ct", "xml" }, { "ctp", "php" }, { "cxx", "cpp" }, { "d", "makefile" }, { "depproj", "xml" }, { "dfm", "pascal" }, { "di", "d" }, { "dita", "xml" }, { "ditamap", "xml" }, { "ditaval", "xml" }, { "dll.config", "xml" }, { "do", "stata" }, { "dof", "ini" }, { "doh", "stata" }, { "dotsettings", "xml" }, { "dpr", "pascal" }, { "dwl", "dataweave" }, { "dyalog", "apl" }, { "e", "eiffel" }, { "ect", "ejs" }, { "el", "elisp" }, { "eliom", "ocaml" }, { "eliomi", "ocaml" }, { "emacs", "elisp" }, { "emacs.desktop", "elisp" }, { "env", "shell" }, { "erb.deface", "erb" }, { "erl", "erlang" }, { "es", "javascript" }, { "es6", "javascript" }, { "escript", "erlang" }, { "ex", "elixir" }, { "exs", "elixir" }, { "eye", "ruby" }, { "f", "fortran" }, { "f77", "fortran" }, { "fcgi", "lua" }, { "feature", "gherkin" }, { "filters", "xml" }, { "for", "fortran" }, { "fpp", "fortran" }, { "frag", "javascript" }, { "frm", "vba" }, { "frx", "vba" }, { "fs", "fsharp" }, { "fsi", "fsharp" }, { "fsproj", "xml" }, { "fsx", "fsharp" }, { "fun", "sml" }, { "fx", "hlsl" }, { "fxh", "hlsl" }, { "fxml", "xml" }, { "g", "gap" }, { "gawk", "awk" }, { "gd", "gdscript" }, { "ged", "gedcom" }, { "gemspec", "ruby" }, { "geojson", "json" }, { "gi", "gap" }, { "gitignore", "ignore" }, { "glade", "xml" }, { "gltf", "json" }, { "gml", "xml" }, { "gmx", "xml" }, { "gni", "gn" }, { "god", "ruby" }, { "gql", "graphql" }, { "graphqls", "graphql" }, { "grt", "groovy" }, { "grxml", "xml" }, { "gs", "javascript" }, { "gst", "xml" }, { "gtpl", "groovy" }, { "gvy", "groovy" }, { "gyp", "python" }, { "gypi", "python" }, { "h", "cpp" }, { "h++", "cpp" }, { "haml.deface", "haml" }, { "har", "json" }, { "hbs", "handlebars" }, { "hh", "cpp" }, { "hic", "clojure" }, { "hlsli", "hlsl" }, { "hpp", "cpp" }, { "hqf", "sqf" }, { "hrl", "erlang" }, { "hs", "haskell" }, { "hs-boot", "haskell" }, { "hsc", "haskell" }, { "hta", "html" }, { "htm", "html" }, { "html.hl", "html" }, { "hx", "haxe" }, { "hxsl", "haxe" }, { "hxx", "cpp" }, { "i", "nasm" }, { "i7x", "inform7" }, { "ice", "json" }, { "iced", "coffeescript" }, { "idc", "c" }, { "idr", "idris" }, { "ihlp", "stata" }, { "ijs", "j" }, { "ily", "lilypond" }, { "iml", "xml" }, { "inc", "php" }, { "inl", "cpp" }, { "ino", "cpp" }, { "iol", "jolie" }, { "ipp", "cpp" }, { "ivy", "xml" }, { "j2", "django" }, { "jade", "pug" }, { "jake", "javascript" }, { "jav", "java" }, { "jbuilder", "ruby" }, { "jelly", "xml" }, { "jinja", "django" }, { "jinja2", "django" }, { "jl", "julia" }, { "js", "javascript" }, { "jsb", "javascript" }, { "jscad", "javascript" }, { "jsfl", "javascript" }, { "jsm", "javascript" }, { "json-tmlanguage", "json" }, { "jsonl", "json" }, { "jsproj", "xml" }, { "jss", "javascript" }, { "jst", "ejs" }, { "jsx", "javascript" }, { "kml", "xml" }, { "kojo", "scala" }, { "ksh", "shell" }, { "kt", "kotlin" }, { "ktm", "kotlin" }, { "kts", "kotlin" }, { "l", "lisp" }, { "launch", "xml" }, { "lektorproject", "ini" }, { "lidr", "idris" }, { "linq", "csharp" }, { "ll", "llvm" }, { "lmi", "python" }, { "lol", "lolcode" }, { "lpr", "pascal" }, { "ls", "livescript" }, { "lsp", "lisp" }, { "ly", "lilypond" }, { "m", "objectivec" }, { "ma", "mathematica" }, { "mak", "makefile" }, { "make", "makefile" }, { "mata", "stata" }, { "matah", "stata" }, { "mawk", "awk" }, { "mcmeta", "json" }, { "mcr", "maxscript" }, { "md", "markdown" }, { "mdown", "markdown" }, { "mdpolicy", "xml" }, { "mdwn", "markdown" }, { "mdx", "markdown" }, { "mediawiki", "wiki" }, { "mir", "yaml" }, { "mjml", "xml" }, { "mjs", "javascript" }, { "mk", "makefile" }, { "mkd", "markdown" }, { "mkdn", "markdown" }, { "mkdown", "markdown" }, { "mkfile", "makefile" }, { "ml4", "ocaml" }, { "mli", "ocaml" }, { "mll", "ocaml" }, { "mly", "ocaml" }, { "mm", "xml" }, { "mod", "xml" }, { "monkey2", "monkey" }, { "moon", "moonscript" }, { "ms", "maxscript" }, { "mspec", "ruby" }, { "mt", "mathematica" }, { "mumps", "m" }, { "mxml", "xml" }, { "natvis", "xml" }, { "nawk", "awk" }, { "nb", "mathematica" }, { "nbp", "mathematica" }, { "ncl", "xml" }, { "ndproj", "xml" }, { "ni", "inform7" }, { "nim.cfg", "nim" }, { "nimble", "nim" }, { "nimrod", "nim" }, { "nims", "nim" }, { "njs", "javascript" }, { "nomad", "hcl" }, { "nproj", "xml" }, { "nse", "lua" }, { "nsh", "nsis" }, { "nsi", "nsis" }, { "nuspec", "xml" }, { "nut", "squirrel" }, { "ny", "lisp" }, { "odd", "xml" }, { "ol", "jolie" }, { "osm", "xml" }, { "p8", "lua" }, { "pac", "javascript" }, { "pas", "pascal" }, { "patch", "diff" }, { "pb", "purebasic" }, { "pbi", "purebasic" }, { "pd_lua", "lua" }, { "pde", "processing" }, { "ph", "perl" }, { "php3", "php" }, { "php4", "php" }, { "php5", "php" }, { "phps", "php" }, { "phpt", "php" }, { "pkgproj", "xml" }, { "pl", "perl" }, { "plx", "perl" }, { "pm", "perl" }, { "podsl", "lisp" }, { "podspec", "ruby" }, { "pp", "pascal" }, { "prawn", "ruby" }, { "prefs", "ini" }, { "pro", "perl" }, { "proj", "xml" }, { "properties", "ini" }, { "props", "xml" }, { "proto", "protobuf" }, { "ps1", "powershell" }, { "ps1xml", "xml" }, { "psc1", "xml" }, { "psd1", "powershell" }, { "psgi", "perl" }, { "psm1", "powershell" }, { "pt", "xml" }, { "purs", "purescript" }, { "py", "python" }, { "py3", "python" }, { "pyde", "python" }, { "pyi", "python" }, { "pyp", "python" }, { "pyt", "python" }, { "pyw", "python" }, { "qasm", "openqasm" }, { "qbs", "qml" }, { "qs", "qsharp" }, { "rabl", "ruby" }, { "rake", "ruby" }, { "rb", "ruby" }, { "rbi", "ruby" }, { "rbuild", "ruby" }, { "rbw", "ruby" }, { "rbx", "ruby" }, { "rbxs", "lua" }, { "rd", "r" }, { "rdf", "xml" }, { "re", "cpp" }, { "reek", "yaml" }, { "regexp", "regex" }, { "res", "xml" }, { "resx", "xml" }, { "rhtml", "erb" }, { "rkt", "racket" }, { "rktd", "racket" }, { "rktl", "racket" }, { "robot", "robotframework" }, { "rockspec", "lua" }, { "ronn", "markdown" }, { "rpy", "python" }, { "rq", "sparql" }, { "rs", "xml" }, { "rs.in", "rust" }, { "rss", "xml" }, { "rsx", "r" }, { "ru", "ruby" }, { "rviz", "yaml" }, { "sbt", "scala" }, { "sc", "supercollider" }, { "scd", "supercollider" }, { "sch", "scheme" }, { "scm", "scheme" }, { "scpt", "applescript" }, { "scrbl", "racket" }, { "scxml", "xml" }, { "sexp", "lisp" }, { "sfproj", "xml" }, { "sh", "shell" }, { "sh-session", "shellsession" }, { "sh.in", "shell" }, { "shproj", "xml" }, { "sig", "sml" }, { "sjs", "javascript" }, { "sld", "scheme" }, { "sls", "scheme" }, { "smk", "python" }, { "sol", "solidity" }, { "sps", "scheme" }, { "srdf", "xml" }, { "ss", "scheme" }, { "ssjs", "javascript" }, { "st", "smalltalk" }, { "sthlp", "stata" }, { "story", "gherkin" }, { "storyboard", "xml" }, { "styl", "stylus" }, { "sublime-snippet", "xml" }, { "sublime-syntax", "yaml" }, { "syntax", "yaml" }, { "t", "perl" }, { "tac", "python" }, { "targets", "xml" }, { "tcc", "cpp" }, { "tcl.in", "tcl" }, { "tf", "hcl" }, { "tfstate", "json" }, { "tfstate.backup", "json" }, { "tfvars", "hcl" }, { "thor", "ruby" }, { "tm", "tcl" }, { "tml", "xml" }, { "tmux", "shell" }, { "tool", "shell" }, { "topojson", "json" }, { "tpl", "smarty" }, { "tpp", "cpp" }, { "ts", "typescript" }, { "tst", "gap" }, { "tsx", "xml" }, { "ttl", "turtle" }, { "uc", "unrealscript" }, { "ui", "xml" }, { "urdf", "xml" }, { "ux", "xml" }, { "v", "verilog" }, { "vapi", "vala" }, { "vb", "vbnet" }, { "vba", "vim" }, { "vbhtml", "vbnet" }, { "vbproj", "xml" }, { "vcxproj", "xml" }, { "veo", "verilog" }, { "vhd", "vhdl" }, { "vhf", "vhdl" }, { "vhi", "vhdl" }, { "vho", "vhdl" }, { "vhs", "vhdl" }, { "vht", "vhdl" }, { "vhw", "vhdl" }, { "vmb", "vim" }, { "vsixmanifest", "xml" }, { "vssettings", "xml" }, { "vstemplate", "xml" }, { "vxml", "xml" }, { "wast", "wasm" }, { "wat", "wasm" }, { "watchr", "ruby" }, { "webapp", "json" }, { "webmanifest", "json" }, { "wikitext", "wiki" }, { "wixproj", "xml" }, { "wl", "mathematica" }, { "wlt", "mathematica" }, { "wlua", "lua" }, { "workbook", "markdown" }, { "workflow", "xml" }, { "wsdl", "xml" }, { "wsf", "xml" }, { "wsgi", "python" }, { "wxi", "xml" }, { "wxl", "xml" }, { "wxs", "xml" }, { "x3d", "xml" }, { "xacro", "xml" }, { "xaml", "xml" }, { "xht", "html" }, { "xhtml", "html" }, { "xib", "xml" }, { "xlf", "xml" }, { "xliff", "xml" }, { "xmi", "xml" }, { "xml.dist", "xml" }, { "xmp", "xml" }, { "xojo_code", "xojo" }, { "xojo_menu", "xojo" }, { "xojo_report", "xojo" }, { "xojo_script", "xojo" }, { "xojo_toolbar", "xojo" }, { "xojo_window", "xojo" }, { "xproj", "xml" }, { "xpy", "python" }, { "xq", "xquery" }, { "xql", "xquery" }, { "xqm", "xquery" }, { "xqy", "xquery" }, { "xrl", "erlang" }, { "xsd", "xml" }, { "xsjs", "javascript" }, { "xsjslib", "javascript" }, { "xspec", "xml" }, { "xul", "xml" }, { "yaml-tmlanguage", "yaml" }, { "yaml.sed", "yaml" }, { "yap", "prolog" }, { "yml", "yaml" }, { "yml.mysql", "yaml" }, { "yrl", "erlang" }, { "yy", "json" }, { "yyp", "json" }, { "zcml", "xml" }, { "zeek", "bro" }, { "zsh", "shell" }, // Code generated with scripts/extract-fileviewer-mappings.py ends here poedit-3.6.3/src/wx/0000755000175100001660000000000015011674362010003 5poedit-3.6.3/src/wx/main_toolbar.cpp0000644000175100001660000001116515011674230013073 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2025 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 "main_toolbar.h" #include "hidpi.h" #include "utility.h" #include "unicode_helpers.h" #include #include #include #include #ifdef __WXMSW__ #include #endif #ifdef __WXGTK__ #include #endif class WXMainToolbar : public MainToolbar { public: WXMainToolbar(wxFrame *parent) { m_tb = wxXmlResource::Get()->LoadToolBar(parent, "toolbar"); m_idUpdate = XRCID("toolbar_update"); #ifdef __WXGTK3__ GtkToolbar *gtb = Toolbar(); gtk_toolbar_set_icon_size(gtb, GTK_ICON_SIZE_SMALL_TOOLBAR); gtk_style_context_add_class(gtk_widget_get_style_context(GTK_WIDGET(gtb)), GTK_STYLE_CLASS_PRIMARY_TOOLBAR); SetIcon(0 , "document-open-symbolic"); SetIcon(1 , "document-save-symbolic"); SetIcon(3 , "poedit-validate-symbolic"); SetIcon(4 , "poedit-update-symbolic"); SetIcon(6 , "sidebar-symbolic"); #endif #ifdef __WXMSW__ // De-uglify the toolbar a bit on Windows 10: if (wxUxThemeIsActive()) { wxUxThemeHandle hTheme(m_tb, L"ExplorerMenu::Toolbar"); m_tb->SetBackgroundColour(wxRGBToColour(::GetThemeSysColor(hTheme, COLOR_WINDOW))); } unsigned padding = PX(4); ::SendMessage((HWND) m_tb->GetHWND(), TB_SETPADDING, 0, MAKELPARAM(padding, padding)); m_tb->SetDoubleBuffered(true); #endif } void EnableSyncWithCrowdin(bool on) override { auto tool = m_tb->FindById(m_idUpdate); if (on) { tool->SetLabel(_("Sync")); m_tb->SetToolShortHelp(m_idUpdate, _("Synchronize the translation with Crowdin")); #ifdef __WXGTK3__ SetIcon(4 , "poedit-sync-symbolic"); #else m_tb->SetToolNormalBitmap(m_idUpdate, wxArtProvider::GetBitmap("poedit-sync", wxART_TOOLBAR)); #endif #ifdef __WXMSW__ m_tb->SetToolDisabledBitmap(m_idUpdate, wxArtProvider::GetBitmap("poedit-sync@disabled", wxART_TOOLBAR)); #endif } else { tool->SetLabel(MSW_OR_OTHER(_("Update from code"), _("Update from Code"))); m_tb->SetToolShortHelp(m_idUpdate, _("Update from source code")); #ifdef __WXGTK3__ SetIcon(4 , "poedit-update-symbolic"); #else m_tb->SetToolNormalBitmap(m_idUpdate, wxArtProvider::GetBitmap("poedit-update", wxART_TOOLBAR)); #endif #ifdef __WXMSW__ m_tb->SetToolDisabledBitmap(m_idUpdate, wxArtProvider::GetBitmap("poedit-update@disabled", wxART_TOOLBAR)); #endif } } #ifdef __WXGTK3__ private: GtkToolbar *Toolbar() { #ifdef __WXGTK4__ return GTK_TOOLBAR(m_tb->GetHandle()); #else return GTK_TOOLBAR(gtk_bin_get_child(GTK_BIN(m_tb->GetHandle()))); #endif } void SetIcon(int index, const char *name) { GtkToolItem *i = gtk_toolbar_get_nth_item(Toolbar(), index); gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(i), NULL); gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(i), name); } #endif private: wxToolBar *m_tb; int m_idUpdate; }; std::unique_ptr MainToolbar::CreateWX(wxFrame *parent) { return std::unique_ptr(new WXMainToolbar(parent)); } std::unique_ptr MainToolbar::Create(wxFrame *parent) { return CreateWX(parent); } poedit-3.6.3/src/spellchecking.cpp0000644000175100001660000001307015011674230012577 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2025 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 "spellchecking.h" #include "str_helpers.h" #ifdef __WXGTK__ #include extern "C" { #include } #endif #ifdef __WXMSW__ #include #include #ifndef IMF_SPELLCHECKING #define IMF_SPELLCHECKING 0x0800 #endif #endif #include "edapp.h" #ifdef __WXGTK__ // helper functions that finds GtkTextView of wxTextCtrl: static GtkTextView *GetTextView(wxTextCtrl *ctrl) { GtkWidget *parent = ctrl->m_widget; GList *child = gtk_container_get_children(GTK_CONTAINER(parent)); while (child) { if (GTK_IS_TEXT_VIEW(child->data)) { return GTK_TEXT_VIEW(child->data); } child = child->next; } wxFAIL_MSG( "couldn't find GtkTextView for text control" ); return NULL; } #if GTK_CHECK_VERSION(3,0,0) bool InitTextCtrlSpellchecker(wxTextCtrl *text, bool enable, const Language& lang) { GtkTextView *textview = GetTextView(text); wxASSERT_MSG( textview, "wxTextCtrl is supposed to use GtkTextView" ); GtkSpellChecker *spell = gtk_spell_checker_get_from_text_view(textview); if (enable) { if (!spell) { spell = gtk_spell_checker_new(); gtk_spell_checker_attach(spell, textview); } return gtk_spell_checker_set_language(spell, lang.Code().c_str(), nullptr); } else { if (spell) gtk_spell_checker_detach(spell); return true; } } #else // GTK+ 2.x bool InitTextCtrlSpellchecker(wxTextCtrl *text, bool enable, const Language& lang) { GtkTextView *textview = GetTextView(text); wxASSERT_MSG( textview, "wxTextCtrl is supposed to use GtkTextView" ); GtkSpell *spell = gtkspell_get_from_text_view(textview); GError *err = NULL; if (enable) { if (spell) gtkspell_set_language(spell, lang.Code().c_str(), &err); else gtkspell_new_attach(textview, lang.Code().c_str(), &err); } else // !enable { // GtkSpell when used with Zemberek Enchant module doesn't work // correctly if you repeatedly attach and detach a speller to text // view. See https://poedit.net/trac/ticket/276 for details. // // To work around this, we set the language to a non-existent one // instead of detaching GtkSpell -- this has the same effect as // detaching the speller as far as the UI is concerned. if (spell) gtkspell_set_language(spell, "unknown_language", &err); } if (err) g_error_free(err); return err == NULL; } #endif // GTK+ 2.x #endif // __WXGTK__ #ifdef __WXOSX__ bool SetSpellcheckerLang(const wxString& lang) { NSString *nslang = str::to_NS(lang); NSSpellChecker *sc = [NSSpellChecker sharedSpellChecker]; [sc setAutomaticallyIdentifiesLanguages:NO]; return [sc setLanguage: nslang]; } bool InitTextCtrlSpellchecker(wxTextCtrl *text, bool enable, const Language& /*lang*/) { NSScrollView *scroll = (NSScrollView*)text->GetHandle(); NSTextView *view = [scroll documentView]; [view setContinuousSpellCheckingEnabled:enable]; [view setGrammarCheckingEnabled:enable]; return true; } #endif // __WXOSX__ #ifdef __WXMSW__ void PrepareTextCtrlForSpellchecker(wxTextCtrl *text) { // Set spellchecking-friendly style on the text control. Enabling spellchecking // itself is done with EM_SETLANGOPTIONS in InitTextCtrlSpellchecker() HWND hwnd = (HWND)text->GetHWND(); auto editStyle = SES_USECTF | SES_CTFALLOWEMBED | SES_CTFALLOWSMARTTAG | SES_CTFALLOWPROOFING; ::SendMessage(hwnd, EM_SETEDITSTYLE, editStyle, editStyle); } bool InitTextCtrlSpellchecker(wxTextCtrl *text, bool enable, const Language& /*lang*/) { HWND hwnd = (HWND) text->GetHWND(); auto langOptions = ::SendMessage(hwnd, EM_GETLANGOPTIONS, 0, 0); if (enable) langOptions |= IMF_SPELLCHECKING; else langOptions &= ~IMF_SPELLCHECKING; ::SendMessage(hwnd, EM_SETLANGOPTIONS, 0, langOptions); return true; } #endif // __WXMSW__ #ifndef __WXMSW__ void ShowSpellcheckerHelp() { #if defined(__WXOSX__) #define SPELL_HELP_PAGE "SpellcheckerMac" #elif defined(__UNIX__) #define SPELL_HELP_PAGE "SpellcheckerLinux" #else #error "missing spellchecker instructions for platform" #endif wxGetApp().OpenPoeditWeb("/trac/wiki/Doc/" SPELL_HELP_PAGE); } #endif // !__WXMSW__ poedit-3.6.3/src/edframe.cpp0000644000175100001660000031467315011674230011404 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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 "edframe.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __WXOSX__ #import #endif #include #include #include #include #include "catalog.h" #include "catalog_po.h" #include "cat_update.h" #include "cloud_sync.h" #include "colorscheme.h" #include "concurrency.h" #include "configuration.h" #include "crowdin_gui.h" #include "customcontrols.h" #include "edapp.h" #include "editing_area.h" #include "hidpi.h" #include "propertiesdlg.h" #include "prefsdlg.h" #include "fileviewer.h" #include "findframe.h" #include "tm/transmem.h" #include "language.h" #include "progress_ui.h" #include "commentdlg.h" #include "main_toolbar.h" #include "manager.h" #include "pretranslate.h" #include "attentionbar.h" #include "utility.h" #include "languagectrl.h" #include "welcomescreen.h" #include "errors.h" #include "recent_files.h" #include "sidebar.h" #include "spellchecking.h" #include "static_ids.h" #include "str_helpers.h" namespace { /// Splitters with customized appearance to blend with EditingArea: class ThinSplitter : public wxSplitterWindow { public: ThinSplitter(wxWindow *parent, Color color, Color childBackground = Color::Max) : wxSplitterWindow(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_NOBORDER | wxSP_LIVE_UPDATE) { m_extraDraggableSpace = 0; ColorScheme::SetupWindowColors(this, [=] { #ifdef __WXOSX__ SetBackgroundColour(ColorScheme::Get(color)); (void)childBackground; #else m_color = ColorScheme::Get(color); if (childBackground != Color::Max) m_childBackgroundColor = ColorScheme::Get(childBackground); #endif }); } #ifndef __WXGTK__ /// Setup the 2nd child window to handle events used for dragging the sash, /// so that the draggable area is larger and more accessible. /// /// Getting this hack to work with wxGTK proved difficult even with the bundled version, /// let alone others, plus GTK+ sash is larger; therefore, this is for macOS and Windows only. void SetupDraggingMarginInChild(wxWindow *win, int extraDraggableSpace) { m_extraDraggableSpace = extraDraggableSpace; win->Bind(wxEVT_LEFT_DOWN, [=](wxMouseEvent& event) { event.Skip(); if (!this->IsWithinExtraDraggableSpace(event)) return; auto p = event.GetPosition(); event.SetPosition(p + win->GetPosition()); this->ProcessWindowEvent(event); event.SetPosition(p); }); auto motionHandler = [=](wxMouseEvent& event) { event.Skip(); if (!event.Leaving() && this->IsWithinExtraDraggableSpace(event)) { win->SetCursor(m_splitMode == wxSPLIT_VERTICAL ? m_sashCursorWE : m_sashCursorNS); } else { win->SetCursor(wxNullCursor); } }; win->Bind(wxEVT_MOTION, motionHandler); win->Bind(wxEVT_ENTER_WINDOW, motionHandler); win->Bind(wxEVT_LEAVE_WINDOW, motionHandler); } bool IsWithinExtraDraggableSpace(const wxMouseEvent& event) const { auto pos = event.GetPosition(); int z = m_splitMode == wxSPLIT_VERTICAL ? pos.x : pos.y; return z < m_extraDraggableSpace; } bool SashHitTest(int x, int y) override { if ( m_windowTwo == NULL || m_sashPosition == 0) return false; // No sash int z = m_splitMode == wxSPLIT_VERTICAL ? x : y; int hitMax = m_sashPosition + m_extraDraggableSpace; return z >= m_sashPosition && z < hitMax; } #endif // !__WXGTK__ #ifndef __WXOSX__ void DrawSash(wxDC& dc) override { if (m_sashPosition == 0 || !m_windowTwo || IsSashInvisible()) return; auto mode = GetSplitMode(); auto rect = (mode == wxSPLIT_HORIZONTAL) ? wxRect(0, m_sashPosition, GetClientSize().x, GetSashSize()) : wxRect(m_sashPosition, 0, GetSashSize(), GetClientSize().y); dc.SetPen(m_color); dc.SetBrush(m_color); if (mode == wxSPLIT_HORIZONTAL) dc.DrawRectangle(rect.x, rect.y, rect.width, PX(1)); else dc.DrawRectangle(rect.x, rect.y, PX(1), rect.height); if (GetSashSize() > PX(1)) { if (mode == wxSPLIT_HORIZONTAL) { rect.y += PX(1); rect.height -= PX(1); } else { rect.x += PX(1); rect.width -= PX(1); } auto bg = m_childBackgroundColor.IsOk() ? m_childBackgroundColor : GetWindow2()->GetBackgroundColour(); dc.SetPen(bg); dc.SetBrush(bg); dc.DrawRectangle(rect); } } private: wxColour m_color, m_childBackgroundColor; #endif // !__WXOSX__ private: int m_extraDraggableSpace; }; } // anonymous namespace PoeditFrame::PoeditFramesList PoeditFrame::ms_instances; #ifdef __VISUALC__ // Disabling the useless and annoying MSVC++'s // warning C4800: 'long' : forcing value to bool 'true' or 'false' // (performance warning): #pragma warning ( disable : 4800 ) #endif // I don't like this global flag, but all PoeditFrame instances must share it bool g_focusToText = false; /*static*/ PoeditFrame *PoeditFrame::Find(const wxString& filename) { wxFileName fn(filename); for (auto n: ms_instances) { if (wxFileName(n->GetFileName()) == fn) return n; } return NULL; } /*static*/ bool PoeditFrame::AnyWindowIsModified() { for (PoeditFramesList::const_iterator n = ms_instances.begin(); n != ms_instances.end(); ++n) { if ((*n)->IsModified()) return true; } return false; } /*static*/ PoeditFrame *PoeditFrame::Create(const wxString& filename, int lineno) { PoeditFrame *f = PoeditFrame::Find(filename); if (f) { f->Raise(); } else { auto cat = PreOpenFileWithErrorsUI(filename, nullptr); if (!cat) return nullptr; f = new PoeditFrame(); f->Show(true); f->ReadCatalog(cat); } f->Show(true); // HACK: make sure this is called *after* the delayed call in PoeditListCtrl::CatalogChanged if (f->m_list) f->m_list->CallAfter([=]{ f->PlaceInitialFocus(lineno); }); return f; } /*static*/ PoeditFrame *PoeditFrame::CreateEmpty() { PoeditFrame *f = new PoeditFrame; f->Show(true); return f; } BEGIN_EVENT_TABLE(PoeditFrame, wxFrame) EVT_MENU (XRCID("button_new_from_this_pot"),PoeditFrame::OnTranslationFromThisPot) #ifndef __WXOSX__ EVT_MENU (wxID_CLOSE, PoeditFrame::OnCloseCmd) #endif EVT_MENU (wxID_SAVE, PoeditFrame::OnSave) EVT_MENU (wxID_SAVEAS, PoeditFrame::OnSaveAs) EVT_MENU (XRCID("menu_compile_mo"), PoeditFrame::OnCompileMO) EVT_MENU (XRCID("menu_export_html"), PoeditFrame::OnExportToHTML) EVT_MENU (XRCID("menu_catproperties"), PoeditFrame::OnEditProperties) 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_remove_same_as_source"), PoeditFrame::OnRemoveSameAsSourceTranslations) EVT_MENU (XRCID("menu_purge_deleted"), PoeditFrame::OnPurgeDeleted) EVT_MENU (XRCID("menu_fuzzy"), PoeditFrame::OnFuzzyFlag) EVT_MENU (XRCID("menu_ids"), PoeditFrame::OnIDsFlag) EVT_MENU (XRCID("menu_warnings"), PoeditFrame::OnToggleWarnings) EVT_MENU (XRCID("sort_by_order"), PoeditFrame::OnSortByFileOrder) EVT_MENU (XRCID("sort_by_source"), PoeditFrame::OnSortBySource) 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_copy_from_singular"), PoeditFrame::OnCopyFromSingular) 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) EVT_BUTTON (XRCID("menu_comment"), PoeditFrame::OnEditComment) EVT_MENU (XRCID("go_done_and_next"), PoeditFrame::OnDoneAndNext) EVT_MENU (XRCID("go_previously_edited"), PoeditFrame::OnGoPreviouslyEdited) EVT_MENU (XRCID("go_prev"), PoeditFrame::OnPrev) EVT_MENU (XRCID("go_next"), PoeditFrame::OnNext) EVT_MENU (XRCID("go_prev_page"), PoeditFrame::OnPrevPage) EVT_MENU (XRCID("go_next_page"), PoeditFrame::OnNextPage) EVT_MENU (XRCID("go_prev_unfinished"), PoeditFrame::OnPrevUnfinished) EVT_MENU (XRCID("go_next_unfinished"), PoeditFrame::OnNextUnfinished) EVT_MENU (XRCID("go_prev_pluralform"), PoeditFrame::OnPrevPluralForm) EVT_MENU (XRCID("go_next_pluralform"), PoeditFrame::OnNextPluralForm) EVT_MENU_RANGE (WinID::ListContextReferencesStart, WinID::ListContextReferencesEnd, PoeditFrame::OnReference) EVT_COMMAND (wxID_ANY, EVT_SUGGESTION_SELECTED, PoeditFrame::OnSuggestion) EVT_MENU (XRCID("menu_pretranslate"), PoeditFrame::OnPreTranslateAll) EVT_CLOSE (PoeditFrame::OnCloseWindow) EVT_SIZE (PoeditFrame::OnSize) // handling of selection: EVT_UPDATE_UI(XRCID("menu_references"), PoeditFrame::OnReferencesMenuUpdate) EVT_UPDATE_UI(XRCID("go_done_and_next"), PoeditFrame::OnSingleSelectionUpdate) EVT_UPDATE_UI(XRCID("go_previously_edited"), PoeditFrame::OnGoPreviouslyEditedUpdate) EVT_UPDATE_UI(XRCID("go_prev"), PoeditFrame::OnSingleSelectionUpdate) EVT_UPDATE_UI(XRCID("go_next"), PoeditFrame::OnSingleSelectionUpdate) EVT_UPDATE_UI(XRCID("go_prev_page"), PoeditFrame::OnSingleSelectionUpdate) EVT_UPDATE_UI(XRCID("go_next_page"), PoeditFrame::OnSingleSelectionUpdate) EVT_UPDATE_UI(XRCID("go_prev_unfinished"), PoeditFrame::OnSingleSelectionUpdate) EVT_UPDATE_UI(XRCID("go_next_unfinished"), PoeditFrame::OnSingleSelectionUpdate) EVT_UPDATE_UI(XRCID("go_prev_pluralform"), PoeditFrame::OnSingleSelectionWithPluralsUpdate) EVT_UPDATE_UI(XRCID("go_next_pluralform"), PoeditFrame::OnSingleSelectionWithPluralsUpdate) EVT_UPDATE_UI(XRCID("menu_fuzzy"), PoeditFrame::OnFuzzyFlagUpdate) EVT_UPDATE_UI(XRCID("menu_clear"), PoeditFrame::OnSelectionUpdateEditable) EVT_UPDATE_UI(XRCID("menu_copy_from_src"), PoeditFrame::OnSelectionUpdateEditable) EVT_UPDATE_UI(XRCID("menu_copy_from_singular"), PoeditFrame::OnSingleSelectionWithPluralsUpdate) 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_pretranslate"), PoeditFrame::OnIsEditableUpdate) EVT_UPDATE_UI(XRCID("menu_validate"), PoeditFrame::OnIsEditableUpdate) 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) EVT_UPDATE_UI(XRCID("menu_catproperties"), PoeditFrame::OnUpdateEditProperties) // handling of find/replace: EVT_UPDATE_UI(XRCID("menu_find_next"), PoeditFrame::OnUpdateFind) EVT_UPDATE_UI(XRCID("menu_find_prev"), PoeditFrame::OnUpdateFind) #if defined(__WXMSW__) || defined(__WXGTK__) EVT_MENU(wxID_UNDO, PoeditFrame::OnTextEditingCommand) EVT_MENU(wxID_REDO, PoeditFrame::OnTextEditingCommand) EVT_MENU(wxID_CUT, PoeditFrame::OnTextEditingCommand) EVT_MENU(wxID_COPY, PoeditFrame::OnTextEditingCommand) EVT_MENU(wxID_PASTE, PoeditFrame::OnTextEditingCommand) EVT_MENU(wxID_DELETE, PoeditFrame::OnTextEditingCommand) EVT_MENU(wxID_SELECTALL, PoeditFrame::OnTextEditingCommand) EVT_UPDATE_UI(wxID_UNDO, PoeditFrame::OnTextEditingCommandUpdate) EVT_UPDATE_UI(wxID_REDO, PoeditFrame::OnTextEditingCommandUpdate) EVT_UPDATE_UI(wxID_CUT, PoeditFrame::OnTextEditingCommandUpdate) EVT_UPDATE_UI(wxID_COPY, PoeditFrame::OnTextEditingCommandUpdate) EVT_UPDATE_UI(wxID_PASTE, PoeditFrame::OnTextEditingCommandUpdate) EVT_UPDATE_UI(wxID_DELETE, PoeditFrame::OnTextEditingCommandUpdate) EVT_UPDATE_UI(wxID_SELECTALL, PoeditFrame::OnTextEditingCommandUpdate) #endif END_EVENT_TABLE() class PoeditDropTarget : public wxFileDropTarget { public: PoeditDropTarget(PoeditFrame *win) : m_win(win) {} virtual bool OnDropFiles(wxCoord /*x*/, wxCoord /*y*/, const wxArrayString& files) { if ( files.size() != 1 ) { wxLogError(_(L"You can’t drop more than one file on Poedit window.")); return false; } wxFileName f(files[0]); if (!Catalog::CanLoadFile(f.GetExt())) { wxLogError(_(L"File “%s†is not a translation file."), f.GetFullPath().c_str()); return false; } if ( !f.FileExists() ) { wxLogError(_(L"File “%s†doesn’t exist."), f.GetFullPath().c_str()); return false; } m_win->OpenFile(f.GetFullPath()); return true; } private: PoeditFrame *m_win; }; // Frame class: PoeditFrame::PoeditFrame() : PoeditFrameBase(NULL, -1, _("Poedit"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE, "mainwin"), m_contentType(Content::Invalid), m_contentView(nullptr), m_catalog(nullptr), m_fileMonitor(new FileMonitor), m_fileExistsOnDisk(false), m_list(nullptr), m_modified(false), m_hasObsoleteItems(false), m_setSashPositionsWhenMaximized(false) { m_list = nullptr; m_editingArea = nullptr; m_splitter = nullptr; m_sidebarSplitter = nullptr; m_sidebar = nullptr; wxConfigBase *cfg = wxConfig::Get(); m_displayIDs = (bool)cfg->Read("display_lines", (long)false); g_focusToText = (bool)cfg->Read("focus_to_text", (long)false); #ifdef __WXMSW__ SetIcons(wxIconBundle(wxStandardPaths::Get().GetResourcesDir() + "\\Resources\\Poedit.ico")); #endif wxMenuBar *MenuBar = wxGetApp().CreateMenu(Menu::Editor); if (MenuBar) { SetMenuBar(MenuBar); } else { wxLogError("Cannot load main menu from resource, something must have went terribly wrong."); wxLog::FlushActive(); return; } m_toolbar = MainToolbar::Create(this); GetMenuBar()->Check(XRCID("menu_ids"), m_displayIDs); GetMenuBar()->Check(XRCID("menu_warnings"), Config::ShowWarnings()); if (wxConfigBase::Get()->ReadBool("/statusbar_shown", true)) CreateStatusBar(1, wxST_SIZEGRIP); m_contentWrappingSizer = new wxBoxSizer(wxVERTICAL); SetSizer(m_contentWrappingSizer); #ifndef __WXOSX__ // render a separator between the toolbar and content SetBackgroundColour(ColorScheme::Get(Color::ToolbarSeparator)); m_contentWrappingSizer->AddSpacer(PX(1)); #endif // !__WXOSX__ m_attentionBar = new AttentionBar(this); m_contentWrappingSizer->Add(m_attentionBar, wxSizerFlags().Expand()); SetAccelerators(); auto defaultSize = wxGetDisplaySize(); defaultSize.x = std::max(defaultSize.x - PX(300), std::min(defaultSize.x, PX(900))); defaultSize.y = std::max(defaultSize.y - PX(300), std::min(defaultSize.y, PX(600))); if (defaultSize.x > PX(1400)) defaultSize.x = PX(1400); if (double(defaultSize.x) / double(defaultSize.y) > 1.6) defaultSize.x = defaultSize.y * 1.6; RestoreWindowState(this, defaultSize, WinState_Size | WinState_Pos); UpdateMenu(); ms_instances.insert(this); SetDropTarget(new PoeditDropTarget(this)); #ifdef __WXOSX__ NSWindow *wnd = (NSWindow*)GetWXWindow(); [wnd setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; #endif } void PoeditFrame::EnsureContentView(Content type) { if (m_contentType == type) return; #ifdef __WXMSW__ wxWindowUpdateLocker no_updates(this); #endif if (m_contentView) DestroyContentView(); switch (type) { case Content::Invalid: m_contentType = Content::Invalid; return; // nothing to do case Content::Empty_PO: m_contentView = CreateContentViewEmptyPO(); break; case Content::Translation: case Content::POT: m_contentView = CreateContentViewPO(type); break; } m_contentType = type; m_contentWrappingSizer->Add(m_contentView, wxSizerFlags(1).Expand()); Layout(); // force correct layout: m_contentView->Show(); Layout(); } void PoeditFrame::EnsureAppropriateContentView() { wxCHECK_RET( m_catalog, "must have catalog here" ); if (m_catalog->empty()) { EnsureContentView(Content::Empty_PO); } else { if (m_catalog->HasCapability(Catalog::Cap::Translations)) EnsureContentView(Content::Translation); else EnsureContentView(Content::POT); } } wxWindow* PoeditFrame::CreateContentViewPO(Content type) { auto main = new wxPanel(this, wxID_ANY); auto mainSizer = new wxBoxSizer(wxHORIZONTAL); main->SetSizer(mainSizer); #ifdef __WXMSW__ // don't create the window as shown, avoid flicker main->Hide(); #endif auto sidebarSplitter = new ThinSplitter(main, Color::SidebarSeparator); m_sidebarSplitter = sidebarSplitter; m_sidebarSplitter->Bind(wxEVT_SPLITTER_SASH_POS_CHANGING, &PoeditFrame::OnSidebarSplitterSashMoving, this); mainSizer->Add(m_sidebarSplitter, wxSizerFlags(1).Expand()); auto editingSplitter = new ThinSplitter(m_sidebarSplitter, Color::EditingSeparator, Color::EditingThickSeparator); m_splitter = editingSplitter; m_splitter->Bind(wxEVT_SPLITTER_SASH_POS_CHANGING, &PoeditFrame::OnSplitterSashMoving, this); // make only the upper part grow when resizing m_splitter->SetSashGravity(1.0); m_list = new PoeditListCtrl(m_splitter, wxID_ANY, m_displayIDs); m_editingArea = new EditingArea ( m_splitter, m_list, type == Content::POT ? EditingArea::POT : EditingArea::Editing ); m_editingArea->UpdateEditingUIForCatalog(m_catalog); m_editingArea->OnUpdatedFromTextCtrl = [=](CatalogItemPtr item, bool statsChanged){ OnUpdatedFromTextCtrl(item, statsChanged); }; SetCustomFonts(); m_splitter->SetMinimumPaneSize(PX(200)); m_sidebarSplitter->SetMinimumPaneSize(PX(200)); m_list->Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, &PoeditFrame::OnListSel, this); m_list->Bind(wxEVT_DATAVIEW_ITEM_CONTEXT_MENU, &PoeditFrame::OnListRightClick, this); #ifdef wxHAS_GENERIC_DATAVIEWCTRL m_list->GetChildren()[0]->Bind(wxEVT_SET_FOCUS, &PoeditFrame::OnListFocus, this); #else m_list->Bind(wxEVT_SET_FOCUS, &PoeditFrame::OnListFocus, this); #endif auto suggestionsMenu = GetMenuBar()->FindItem(XRCID("menu_suggestions"))->GetSubMenu(); m_sidebar = new Sidebar(m_sidebarSplitter, suggestionsMenu); m_sidebar->Bind(wxEVT_UPDATE_UI, &PoeditFrame::OnSingleSelectionUpdate, this); UpdateMenu(); switch ( m_list->sortOrder().by ) { case SortOrder::By_FileOrder: GetMenuBar()->Check(XRCID("sort_by_order"), true); break; case SortOrder::By_Source: GetMenuBar()->Check(XRCID("sort_by_source"), true); break; case SortOrder::By_Translation: GetMenuBar()->Check(XRCID("sort_by_translation"), true); break; } 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 laid out, otherwise // the sizes would get truncated immediately: CallAfter([=]{ // This is a hack -- windows are not maximized immediately and so we can't // set correct sash position in ctor (unmaximized window may be too small // for sash position when maximized -- see bug #2120600) if ( wxConfigBase::Get()->Read(WindowStatePath(this) + "maximized", long(0)) ) m_setSashPositionsWhenMaximized = true; if (wxConfigBase::Get()->ReadBool("/sidebar_shown", true)) { auto split = GetSize().x * wxConfigBase::Get()->ReadDouble("/sidebar_splitter", 0.75); m_sidebarSplitter->SplitVertically(m_splitter, m_sidebar, split); } else { m_sidebar->Hide(); m_sidebarSplitter->Initialize(m_splitter); Layout(); } m_splitter->SplitHorizontally(m_list, m_editingArea, (int)wxConfigBase::Get()->ReadLong("/splitter", -PX(320))); if (m_sidebar) m_sidebar->SetUpperHeight(m_splitter->GetSashPosition()); #ifndef __WXGTK__ // Setup extended draggable areas around splitters to make them easier to resize editingSplitter->SetupDraggingMarginInChild(m_editingArea, m_editingArea->GetTopRowHeight()); sidebarSplitter->SetupDraggingMarginInChild(m_sidebar, PX(8)); #endif }); return main; } wxWindow* PoeditFrame::CreateContentViewEmptyPO() { bool isGettext = m_catalog->GetFileType() == Catalog::Type::PO || m_catalog->GetFileType() == Catalog::Type::POT; return new EmptyPOScreenPanel(this, isGettext); } void PoeditFrame::DestroyContentView() { if (!m_contentView) return; NotifyCatalogChanged(nullptr); if (m_splitter) wxConfigBase::Get()->Write("/splitter", (long)m_splitter->GetSashPosition()); m_contentWrappingSizer->Detach(m_contentView); m_contentView->Destroy(); m_contentView = nullptr; m_list = nullptr; m_splitter = nullptr; m_sidebarSplitter = nullptr; m_sidebar = nullptr; m_editingArea = nullptr; if (m_findWindow) { m_findWindow->Destroy(); m_findWindow.Release(); } } PoeditFrame::~PoeditFrame() { ms_instances.erase(this); // don't leave file references window as the only one open: if (ms_instances.empty() && FileViewer::GetIfExists()) FileViewer::GetIfExists()->Close(); DestroyContentView(); wxConfigBase *cfg = wxConfig::Get(); cfg->SetPath("/"); cfg->Write("display_lines", m_displayIDs); SaveWindowState(this); // write all changes: cfg->Flush(); m_catalog.reset(); m_pendingHumanEditedItem.reset(); m_navigationHistory.clear(); } void PoeditFrame::PlaceInitialFocus(int lineno) { if (g_focusToText && m_editingArea) m_editingArea->SetTextFocus(); else if (m_list) m_list->SetFocus(); if (m_catalog && m_list && m_list->GetItemCount() > 0) { int item = 0; if (lineno > 0) { item = m_catalog->FindItemIndexByLine(lineno); item = (item == -1) ? 0 : m_list->CatalogIndexToList(item); } m_list->SelectAndFocus(item); } } void PoeditFrame::SetAccelerators() { wxAcceleratorEntry entries[] = { #ifdef __WXMSW__ { wxACCEL_CTRL, WXK_F3, XRCID("menu_find_next") }, { wxACCEL_CTRL | wxACCEL_SHIFT, WXK_F3, XRCID("menu_find_prev") }, #endif { wxACCEL_CTRL, WXK_PAGEUP, XRCID("go_prev_page") }, { wxACCEL_CTRL, WXK_NUMPAD_PAGEUP, XRCID("go_prev_page") }, { wxACCEL_CTRL, WXK_PAGEDOWN, XRCID("go_next_page") }, { wxACCEL_CTRL, WXK_NUMPAD_PAGEDOWN, XRCID("go_next_page") }, { wxACCEL_CTRL | wxACCEL_SHIFT, WXK_UP, XRCID("go_prev_unfinished") }, { wxACCEL_CTRL | wxACCEL_SHIFT, WXK_NUMPAD_UP, XRCID("go_prev_unfinished") }, { wxACCEL_CTRL | wxACCEL_SHIFT, WXK_DOWN, XRCID("go_next_unfinished") }, { wxACCEL_CTRL | wxACCEL_SHIFT, WXK_NUMPAD_DOWN, XRCID("go_next_unfinished") }, { wxACCEL_CTRL, WXK_UP, XRCID("go_prev") }, { wxACCEL_CTRL, WXK_NUMPAD_UP, XRCID("go_prev") }, { wxACCEL_CTRL, WXK_DOWN, XRCID("go_next") }, { wxACCEL_CTRL, WXK_NUMPAD_DOWN, XRCID("go_next") }, { wxACCEL_CTRL, WXK_RETURN, XRCID("go_done_and_next") }, { wxACCEL_CTRL, WXK_NUMPAD_ENTER, XRCID("go_done_and_next") } }; wxAcceleratorTable accel(WXSIZEOF(entries), entries); SetAcceleratorTable(accel); } void PoeditFrame::InitSpellchecker() { if (!IsSpellcheckingAvailable()) return; if (!m_catalog || !m_catalog->HasCapability(Catalog::Cap::Translations)) return; Language lang = m_catalog->GetLanguage(); bool report_problem = false; bool enabled = m_catalog && #ifndef __WXMSW__ // language choice is automatic, per-keyboard on Windows lang.IsValid() && #endif wxConfig::Get()->Read("enable_spellchecking", (long)true); const bool enabledInitially = enabled; #ifdef __WXOSX__ if (enabled) { if ( !SetSpellcheckerLang(lang.LangAndCountry()) ) { enabled = false; report_problem = true; } } #endif if (m_editingArea && !m_editingArea->InitSpellchecker(enabled, lang)) report_problem = true; #ifndef __WXMSW__ // language choice is automatic, per-keyboard on Windows, can't fail if ( enabledInitially && report_problem ) { // Some languages don't have a reasonable spellchecking method or hunspell support: const bool notCapable = lang.Lang() == "zh" || lang.Lang() == "ja"; if (!notCapable) { AttentionMessage msg ( "missing-spell-dict", AttentionMessage::Warning, wxString::Format ( // 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". _(L"Spellchecking is disabled, because the dictionary for %s isn’t installed."), lang.LanguageDisplayName() ) ); msg.AddAction(_("Install"), []{ ShowSpellcheckerHelp(); }); msg.AddDontShowAgain(); m_attentionBar->ShowMessage(msg); } } #endif // !__WXMSW__ } void PoeditFrame::UpdateTextLanguage() { if (!m_catalog) return; if (m_editingArea) { InitSpellchecker(); m_editingArea->SetLanguage(m_catalog->GetLanguage()); } if (m_sidebar) m_sidebar->RefreshContent(); } #ifndef __WXOSX__ void PoeditFrame::OnCloseCmd(wxCommandEvent&) { Close(); } #endif void PoeditFrame::OpenFile(const wxString& filename, int lineno) { DoIfCanDiscardCurrentDoc([=]{ auto cat = PreOpenFileWithErrorsUI(filename, this); if (cat) DoOpenFile(cat, lineno); }); } // FIXME: This is ugly API and exists only to support InvokingWindowProxy hacks in edapp.cpp; // Once that is cleaned up to always open in a new window even on Windows, remove all this CatalogPtr PoeditFrame::PreOpenFileWithErrorsUI(const wxString& filename, wxWindow *parent) { wxBusyCursor bcur; try { return Catalog::Create(filename); } catch (...) { wxMessageDialog dlg ( parent, wxString::Format(_(L"The file “%s†couldn’t be opened."), wxFileName(filename).GetFullName()), _("Invalid file"), wxOK | wxICON_ERROR ); dlg.SetExtendedMessage(DescribeCurrentException()); dlg.ShowModal(); return nullptr; } } void PoeditFrame::DoOpenFile(CatalogPtr cat, int lineno) { ReadCatalog(cat); // HACK: make sure this is called *after* the delayed call in PoeditListCtrl::CatalogChanged if (m_list) m_list->CallAfter([=]{ PlaceInitialFocus(lineno); }); } void PoeditFrame::ReloadFileIfChanged() { if (!m_fileExistsOnDisk || !m_fileMonitor || !m_catalog) return; if (m_fileMonitor->ShouldRespondToFileChange()) { if (NeedsToAskIfCanDiscardCurrentDoc()) { auto filename = wxFileName(m_catalog->GetFileName()).GetFullName(); wxWindowPtr dlg(new wxMessageDialog ( this, wxString::Format(_(L"The file “%s†has been changed by another application."), filename), _("Reload file"), wxYES_NO | wxNO_DEFAULT | wxICON_WARNING )); dlg->SetExtendedMessage(_(L"Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.")); dlg->SetYesNoLabels(MSW_OR_OTHER(_("Reload file"), _("Reload File")), _("Ignore")); dlg->ShowWindowModalThenDo([this,dlg](int retval) { if (retval == wxID_YES) { auto cat = PreOpenFileWithErrorsUI(m_catalog->GetFileName(), this); if (cat) ReadCatalog(cat); } m_fileMonitor->StopRespondingToEvent(); }); } else { // file not modified in Poedit yet, so just reload it from the disk // TODO: Don't display errors in this case and just silently ignore the file; load the file // above before the prompt on background thread. auto cat = PreOpenFileWithErrorsUI(m_catalog->GetFileName(), this); if (cat) ReadCatalog(cat); m_fileMonitor->StopRespondingToEvent(); } } } bool PoeditFrame::NeedsToAskIfCanDiscardCurrentDoc() const { return m_catalog && m_modified; } template void PoeditFrame::DoIfCanDiscardCurrentDoc(const TFunctor1& completionHandler, const TFunctor2 & failureHandler) { if ( !NeedsToAskIfCanDiscardCurrentDoc() ) { completionHandler(); return; } wxWindowPtr dlg = CreateAskAboutSavingDialog(); dlg->ShowWindowModalThenDo([this,dlg,completionHandler,failureHandler](int retval) { // hide the dialog asap, WriteCatalog() may show another modal sheet dlg->Hide(); #ifdef __WXOSX__ // Hide() alone is not sufficient on macOS (it is noop), we need to destroy dlg // shared_ptr and only then continue. Because this code is called // from event loop (and not this functions' caller) at an unspecified // time anyway, we can just as well defer it into the next idle time // iteration. FIXME - should be fixed in wx CallAfter([this,retval,completionHandler,failureHandler]() { #endif if (retval == wxID_YES) { auto doSaveFile = [=](const wxString& fn){ WriteCatalog(fn, [=](bool saved){ if (saved) completionHandler(); else failureHandler(); }); }; if (!m_fileExistsOnDisk || GetFileName().empty()) GetSaveAsFilenameThenDo(m_catalog, doSaveFile); else doSaveFile(GetFileName()); } else if (retval == wxID_NO) { // call completion without saving the document completionHandler(); } else if (retval == wxID_CANCEL) { // do not call -- not OK failureHandler(); } #ifdef __WXOSX__ }); #endif }); } #ifndef __WXOSX__ bool PoeditFrame::AskIfCanDiscardCurrentDoc() { // On non-Mac platforms, we can check synchronously, because all UI is modal, not window-modal int status = -1; DoIfCanDiscardCurrentDoc([&status]{ status = 1; }, [&status]{ status = 0; }); wxASSERT( status != -1 ); // i.e. was executed synchronously return status != 0; } #endif wxWindowPtr PoeditFrame::CreateAskAboutSavingDialog() { wxWindowPtr dlg(new wxMessageDialog ( this, _("The file has been modified. Do you want to save changes?"), _("Save changes"), wxYES_NO | wxCANCEL | wxICON_QUESTION )); dlg->SetExtendedMessage(_(L"Your changes will be lost if you don’t save them.")); dlg->SetYesNoLabels ( _("Save"), #ifdef __WXMSW__ _(L"Do&n’t save") #else _(L"Don’t Save") #endif ); return dlg; } void PoeditFrame::OnCloseWindow(wxCloseEvent& event) { if (event.CanVeto() && NeedsToAskIfCanDiscardCurrentDoc()) { #ifdef __WXOSX__ // Veto the event by default, then window-modally ask for permission. // If it turns out that the window can be closed, the completion handler // will do it: event.Veto(); DoIfCanDiscardCurrentDoc([=]{ Destroy(); }); #else // !__WXOSX__ // DoIfCanDiscardCurentDoc() doesn't have on-failure callback and // so we instead veto preemtively and then un-veto it. Note that this // only works because on non-OSX platforms the question dialog is // modal and the code below called immediately. event.Veto(); DoIfCanDiscardCurrentDoc([=, &event]{ event.Veto(false); Destroy(); }); #endif } else // can't veto { Destroy(); } } void PoeditFrame::OnSave(wxCommandEvent& event) { try { if (!m_fileExistsOnDisk || GetFileName().empty()) { OnSaveAs(event); } else { if (m_fileMonitor && m_fileMonitor->WasModifiedOnDisk()) { auto filename = wxFileName(m_catalog->GetFileName()).GetFullName(); wxWindowPtr dlg(new wxMessageDialog ( this, wxString::Format(_(L"The file “%s†has been changed by another application."), filename), _("Save"), wxYES_NO | wxYES_DEFAULT | wxICON_WARNING )); dlg->SetExtendedMessage(_("The changes made by the other application will be lost if you save.")); dlg->SetYesNoLabels(MSW_OR_OTHER(_("Save anyway"), _("Save Anyway")), _("Cancel")); dlg->ShowWindowModalThenDo([this,dlg](int retval) { if (retval == wxID_YES) WriteCatalog(GetFileName()); }); } else { WriteCatalog(GetFileName()); } } } catch (Exception& e) { wxLogError("%s", e.What()); } } static wxString SuggestFileName(const CatalogPtr& catalog, const wxString& extension = "") { wxString name; if (catalog) name = catalog->GetLanguage().Code(); if (name.empty()) name = "default"; name += '.'; if (extension.empty()) name += catalog->GetPreferredExtension(); else name += extension; return name; } template void PoeditFrame::GetSaveAsFilenameThenDo(const CatalogPtr& cat, F then) { auto current = cat->GetFileName(); wxString name(wxFileNameFromPath(current)); wxString path(wxPathOnly(current)); if (name.empty()) { path = wxConfig::Get()->Read("last_file_path", wxEmptyString); name = SuggestFileName(cat); } wxWindowPtr dlg( new wxFileDialog(this, MACOS_OR_OTHER("", _(L"Save as…")), path, name, m_catalog->GetFileMask(), 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(name)); then(fn); }); } void PoeditFrame::DoSaveAs(const wxString& filename) { if (filename.empty()) return; WriteCatalog(filename); } void PoeditFrame::OnSaveAs(wxCommandEvent&) { GetSaveAsFilenameThenDo(m_catalog, [=](const wxString& fn){ DoSaveAs(fn); }); } void PoeditFrame::OnCompileMO(wxCommandEvent&) { auto cat = std::dynamic_pointer_cast(m_catalog); if (!cat) return; auto fileName = GetFileName(); wxString name; wxFileName::SplitPath(fileName, nullptr, &name, nullptr); if (name.empty()) { name = SuggestFileName(cat, "mo"); } else name += ".mo"; wxWindowPtr dlg( new wxFileDialog(this, MACOS_OR_OTHER("", _(L"Compile to…")), wxPathOnly(fileName), name, wxString::Format("%s (*.mo)|*.mo", _("Compiled Translation Files")), wxFD_SAVE | wxFD_OVERWRITE_PROMPT)); dlg->ShowWindowModalThenDo([=](int retcode){ if (retcode != wxID_OK) return; wxBusyCursor bcur; auto fn = dlg->GetPath(); wxConfig::Get()->Write("last_file_path", wxPathOnly(fn)); Catalog::ValidationResults validation_results; Catalog::CompilationStatus compilation_status = Catalog::CompilationStatus::NotDone; cat->CompileToMO(fn, validation_results, compilation_status); if (validation_results.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. FIXME: should be fixed in wx CallAfter([=]{ ReportValidationErrors(validation_results, compilation_status, /*from_save=*/true, /*other_file_saved=*/false, []{}); }); } }); } void PoeditFrame::OnExportToHTML(wxCommandEvent&) { auto fileName = GetFileName(); wxString name; wxFileName::SplitPath(fileName, nullptr, &name, nullptr); if (name.empty()) { name = SuggestFileName(m_catalog, "html"); } else name += ".html"; wxWindowPtr dlg( new wxFileDialog(this, MACOS_OR_OTHER("", _(L"Export to HTML…")), wxPathOnly(fileName), name, MaskForType("*.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)); ExportCatalogToHTML(fn); }); } void PoeditFrame::ExportCatalogToHTML(const wxString& filename) { wxWindowPtr progress(new ProgressWindow(this, _("Exporting to HTML"))); progress->RunTaskThenDo([=]() { TempOutputFileFor tempfile(filename); std::ofstream f; f.open(tempfile.FileName().fn_str()); m_catalog->ExportToHTML(f); f.close(); if (!tempfile.Commit()) { BOOST_THROW_EXCEPTION(Exception(wxString::Format(_(L"Couldn’t save file %s."), filename))); } }, [progress](){}); } void PoeditFrame::OnTranslationFromThisPot(wxCommandEvent&) { DoIfCanDiscardCurrentDoc([=]{ wxWindowPtr dlg(new LanguageDialog(this)); dlg->ShowWindowModalThenDo([=](int retcode){ if (retcode != wxID_OK) return; auto cat = std::dynamic_pointer_cast(m_catalog); wxASSERT_MSG(cat, "unexpected file type / catalog class for POT"); NewFromPOT(cat, dlg->GetLang()); }); }); } void PoeditFrame::NewFromPOT(POCatalogPtr pot, Language language) { auto catalog = POCatalog::CreateFromPOT(pot); if (!catalog) return; m_catalog = catalog; m_pendingHumanEditedItem.reset(); m_navigationHistory.clear(); m_fileExistsOnDisk = false; m_modified = true; EnsureAppropriateContentView(); NotifyCatalogChanged(m_catalog); UpdateTitle(); UpdateMenu(); UpdateStatusBar(); UpdateTextLanguage(); auto setLanguageFunc = [=](Language lang) { if (lang.IsValid()) { 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 // work, e.g. WordPress plugins use different naming, so don't actually // save the file just yet and let the user confirm the location when saving. wxFileName pot_fn(pot->GetFileName()); pot_fn.SetFullName(lang.Code() + "." + catalog->GetPreferredExtension()); m_catalog->SetFileName(pot_fn.GetFullPath()); } else { // default to English style plural if (catalog->HasPluralItems()) catalog->Header().SetHeaderNotEmpty("Plural-Forms", "nplurals=2; plural=(n != 1);"); } UpdateEditingUIAfterChange(); UpdateTitle(); UpdateMenu(); UpdateStatusBar(); UpdateTextLanguage(); NotifyCatalogChanged(m_catalog); // refresh language column }; if (language.IsValid()) { setLanguageFunc(language); PlaceInitialFocus(); } else { // Choose the language: wxWindowPtr dlg(new LanguageDialog(this)); dlg->ShowWindowModalThenDo([=](int retcode){ if (retcode == wxID_OK) setLanguageFunc(dlg->GetLang()); else setLanguageFunc(Language()); PlaceInitialFocus(); }); } } void PoeditFrame::NewFromScratch() { auto catalog = POCatalog::Create(Catalog::Type::PO); catalog->CreateNewHeader(); m_catalog = catalog; m_pendingHumanEditedItem.reset(); m_navigationHistory.clear(); m_fileExistsOnDisk = false; m_modified = true; EnsureContentView(Content::Empty_PO); UpdateTitle(); UpdateMenu(); UpdateStatusBar(); // Choose the language: wxWindowPtr dlg(new LanguageDialog(this)); dlg->ShowWindowModalThenDo([=](int retcode){ if (retcode == wxID_OK) { catalog->SetLanguage(dlg->GetLang()); } }); } void PoeditFrame::OnEditProperties(wxCommandEvent&) { EditCatalogProperties(); } void PoeditFrame::OnUpdateEditProperties(wxUpdateUIEvent& event) { if (!m_catalog) { event.Enable(false); return; } switch (m_catalog->GetFileType()) { case Catalog::Type::PO: case Catalog::Type::POT: event.Enable(true); break; default: event.Enable(m_catalog->HasCapability(Catalog::Cap::LanguageSetting)); break; } } void PoeditFrame::EditCatalogProperties() { switch (m_catalog->GetFileType()) { case Catalog::Type::PO: case Catalog::Type::POT: { wxWindowPtr dlg(new PropertiesDialog(this, m_catalog, m_fileExistsOnDisk)); const Language prevLang = m_catalog->GetLanguage(); dlg->TransferTo(m_catalog); dlg->ShowWindowModalThenDo([=](int retcode){ if (retcode != wxID_OK) return; dlg->TransferFrom(m_catalog); m_modified = true; UpdateEditingUIAfterChange(); UpdateTitle(); UpdateMenu(); if (prevLang != m_catalog->GetLanguage()) { UpdateTextLanguage(); // trigger resorting and language header update: NotifyCatalogChanged(m_catalog); } }); break; } // Only language can be changed for other file types: case Catalog::Type::XLIFF: case Catalog::Type::XCLOC: case Catalog::Type::JSON: case Catalog::Type::JSON_FLUTTER: { wxWindowPtr dlg(new LanguageDialog(this)); dlg->SetLang(m_catalog->GetLanguage()); dlg->ShowWindowModalThenDo([=](int retcode){ if (retcode != wxID_OK) return; if (dlg->GetLang() != m_catalog->GetLanguage()) { m_catalog->SetLanguage(dlg->GetLang()); m_modified = true; UpdateEditingUIAfterChange(); UpdateTextLanguage(); // trigger resorting and language header update: NotifyCatalogChanged(m_catalog); } }); break; } } } void PoeditFrame::EditCatalogPropertiesAndUpdateFromSources() { // TODO: share code with EditCatalogProperties() wxWindowPtr dlg(new PropertiesDialog(this, m_catalog, m_fileExistsOnDisk, 1)); const Language prevLang = m_catalog->GetLanguage(); dlg->TransferTo(m_catalog); dlg->ShowWindowModalThenDo([=](int retcode){ if (retcode == wxID_OK) { dlg->TransferFrom(m_catalog); m_modified = true; if (m_list) UpdateEditingUIAfterChange(); UpdateTitle(); UpdateMenu(); if (prevLang != m_catalog->GetLanguage()) { UpdateTextLanguage(); // trigger resorting and language header update: NotifyCatalogChanged(m_catalog); } if (!m_catalog->Header().SearchPaths.empty()) { EnsureAppropriateContentView(); UpdateCatalog(); } } }); } void PoeditFrame::UpdateAfterPreferencesChange() { g_focusToText = (bool)wxConfig::Get()->Read("focus_to_text", (long)false); if (m_list) { SetCustomFonts(); m_list->Refresh(); // if font changed UpdateTextLanguage(); } } /*static*/ void PoeditFrame::UpdateAllAfterPreferencesChange() { for (PoeditFramesList::const_iterator n = ms_instances.begin(); n != ms_instances.end(); ++n) { (*n)->UpdateAfterPreferencesChange(); } } void PoeditFrame::UpdateCatalog(const wxString& pot_file) { // This ensures that the list control won't be redrawn during Update() // call when a dialog box is hidden; another alternative would be to call // m_list->CatalogChanged(NULL) here // *or* to make sure PerformUpdateFromXXX() always returns a new Catalog instance std::shared_ptr locker; if (m_list) locker.reset(new wxWindowUpdateLocker(m_list)); dispatch::future bg_work; if (pot_file.empty()) { auto cat = std::dynamic_pointer_cast(m_catalog); if (!cat) return; if (!cat->HasSourcesAvailable()) { wxWindowPtr dlg(new wxMessageDialog ( this, _("Source code not available."), MSW_OR_OTHER(_("Updating failed"), ""), wxOK | wxICON_ERROR )); wxString expl = _(L"Translations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties."); dlg->SetExtendedMessage(expl); dlg->ShowWindowModalThenDo([dlg](int){}); return; } bg_work = PerformUpdateFromSourcesWithUI(this, cat); } else { bg_work = PerformUpdateFromReferenceWithUI(this, m_catalog, pot_file); } bg_work.then_on_main([this,locker](CatalogPtr updated_catalog) { if (!updated_catalog) return; m_catalog = updated_catalog; m_modified = true; EnsureAppropriateContentView(); NotifyCatalogChanged(m_catalog); RefreshControls(); if (Config::UseTM() && Config::MergeBehavior() == Merge_UseTM) { PreTranslateCatalogAuto(this, m_catalog, PreTranslateOptions(PreTranslate_OnlyGoodQuality), [=] { RefreshControls(); }); } // locker gets released now and the list is redrawn }); } void PoeditFrame::OnUpdateFromSources(wxCommandEvent&) { DoIfCanDiscardCurrentDoc([=]{ UpdateCatalog(); }); } void PoeditFrame::OnUpdateFromSourcesUpdate(wxUpdateUIEvent& event) { event.Enable(m_catalog && m_catalog->HasSourcesConfigured() && !CanSyncWithCrowdin(m_catalog)); } void PoeditFrame::OnUpdateFromPOT(wxCommandEvent&) { DoIfCanDiscardCurrentDoc([=]{ wxString path = wxPathOnly(GetFileName()); if (path.empty()) path = wxConfig::Get()->Read("last_file_path", wxEmptyString); auto fileMask = (m_catalog->GetFileType() == Catalog::Type::PO) ? Catalog::GetTypesFileMask({Catalog::Type::POT, Catalog::Type::PO}) : m_catalog->GetFileMask(); wxWindowPtr dlg( new wxFileDialog(this, MACOS_OR_OTHER("", _("Open reference file")), path, wxEmptyString, fileMask, wxFD_OPEN | wxFD_FILE_MUST_EXIST)); // dlg->ShowWindowModalThenDo([=](int retcode){ int retcode = dlg->ShowModal(); { if (retcode != wxID_OK) return; auto pot_file = dlg->GetPath(); wxConfig::Get()->Write("last_file_path", wxPathOnly(pot_file)); UpdateCatalog(pot_file); } RefreshControls(); }); } void PoeditFrame::OnUpdateFromPOTUpdate(wxUpdateUIEvent& event) { OnHasCatalogUpdate(event); if (!m_catalog) return; switch (m_catalog->GetFileType()) { case Catalog::Type::POT: event.Enable(false); // fall through case Catalog::Type::PO: event.SetText(MSW_OR_OTHER(_(L"Update from &POT file…"), _(L"Update from &POT File…"))); break; default: event.Enable(false); break; }; } #ifdef HAVE_HTTP_CLIENT void PoeditFrame::OnUpdateFromCrowdin(wxCommandEvent&) { if (m_modified) { struct SupressCloudSync { SupressCloudSync(CatalogPtr c) : m_catalog(c) { m_supressed = m_catalog->GetCloudSync(); m_catalog->AttachCloudSync(nullptr); } ~SupressCloudSync() { m_catalog->AttachCloudSync(m_supressed); } CatalogPtr m_catalog; std::shared_ptr m_supressed; } supress(m_catalog); WriteCatalog(GetFileName()); } CrowdinSyncFile(this, m_catalog, [=](std::shared_ptr cat) { // preserve any syncing-on-save setup: auto cloudsync = m_catalog->GetCloudSync(); m_catalog = cat; EnsureAppropriateContentView(); NotifyCatalogChanged(m_catalog); RefreshControls(); WriteCatalog(GetFileName()); // make sure to attach it only _after_ WriteCatalog() call to avoid redundant immediate upload: m_catalog->AttachCloudSync(cloudsync); }); } void PoeditFrame::OnUpdateFromCrowdinUpdate(wxUpdateUIEvent& event) { event.Enable(m_catalog && m_catalog->HasCapability(Catalog::Cap::Translations) && CanSyncWithCrowdin(m_catalog)); } #endif void PoeditFrame::OnUpdateSmart(wxCommandEvent& event) { if (!m_catalog) return; #ifdef HAVE_HTTP_CLIENT if (CanSyncWithCrowdin(m_catalog)) OnUpdateFromCrowdin(event); else #endif OnUpdateFromSources(event); } void PoeditFrame::OnUpdateSmartUpdate(wxUpdateUIEvent& event) { event.Enable(false); if (m_catalog) { #ifdef HAVE_HTTP_CLIENT if (CanSyncWithCrowdin(m_catalog)) OnUpdateFromCrowdinUpdate(event); else #endif OnUpdateFromSourcesUpdate(event); } } void PoeditFrame::OnValidate(wxCommandEvent&) { try { wxBusyCursor bcur; auto results = m_catalog->Validate(); if (m_list && m_list->sortOrder().errorsFirst) m_list->Sort(); ReportValidationErrors(results, /*mo_compilation_failed=*/Catalog::CompilationStatus::NotDone, /*from_save=*/false, /*other_file_saved=*/false, []{}); } catch (Exception& e) { wxLogError("%s", e.What()); } } template void PoeditFrame::ReportValidationErrors(Catalog::ValidationResults validation, Catalog::CompilationStatus mo_compilation_status, bool from_save, bool other_file_saved, TFunctor completionHandler) { wxWindowPtr dlg; // Refresh the list even without errors, because there may be new warnings if (m_list && m_catalog->GetCount()) m_list->RefreshAllItems(); if ( validation.errors ) { RefreshControls(); dlg.reset(new wxMessageDialog ( this, wxString::Format ( wxPLURAL("%d issue with the translation found.", "%d issues with the translation found.", validation.errors), validation.errors ), _("Validation results"), wxOK | wxICON_ERROR )); wxString details = _("Entries with errors were marked in red in the list. Details of the error will be shown when you select such an entry."); if ( from_save ) { details += "\n\n"; if (other_file_saved) { switch ( mo_compilation_status ) { case Catalog::CompilationStatus::NotDone: details += _("The file was saved safely."); break; case Catalog::CompilationStatus::Success: details += _("The file was saved safely and compiled into the MO format, but it will probably not work correctly."); break; case Catalog::CompilationStatus::Error: details += _("The file was saved safely, but it cannot be compiled into the MO format and used."); break; } } else // saving only the MO file { switch ( mo_compilation_status ) { case Catalog::CompilationStatus::Success: details += _("The file was compiled into the MO format, but it will probably not work correctly."); break; case Catalog::CompilationStatus::NotDone: case Catalog::CompilationStatus::Error: details += _("The file cannot be compiled into the MO format and used."); break; } } } dlg->SetExtendedMessage(details); } else { wxASSERT( !from_save ); dlg.reset(new wxMessageDialog ( this, _("No problems with the translation found."), _("Validation results"), wxOK | wxICON_INFORMATION )); wxString details; int unfinished = 0; m_catalog->GetStatistics(nullptr, nullptr, nullptr, nullptr, &unfinished); if (unfinished) { details = wxString::Format(wxPLURAL("The translation is ready for use, but %d entry is not translated yet.", "The translation is ready for use, but %d entries are not translated yet.", unfinished), unfinished); } else { details = _("The translation is ready for use."); } dlg->SetExtendedMessage(details); } dlg->ShowWindowModalThenDo([dlg,completionHandler](int){ completionHandler(); }); } void PoeditFrame::OnListSel(wxDataViewEvent& event) { bool multipleSel = m_list && m_list->HasMultipleSelection(); bool hasTextFocus = m_editingArea->HasTextFocus(); event.Skip(); if (m_pendingHumanEditedItem) { OnNewTranslationEntered(m_pendingHumanEditedItem); m_pendingHumanEditedItem.reset(); } if (multipleSel) { m_editingArea->SetMultipleSelectionMode(); } else { m_editingArea->SetSingleSelectionMode(); UpdateToTextCtrl(EditingArea::ItemChanged); } if (m_sidebar) { if (multipleSel) m_sidebar->SetMultipleSelection(); else m_sidebar->SetSelectedItem(m_catalog, GetCurrentItem()); // may be nullptr } if (hasTextFocus) m_editingArea->SetTextFocus(); auto references = FileViewer::GetIfExists(); if (references) references->ShowReferences(m_catalog, GetCurrentItem(), 0); } void PoeditFrame::OnReferencesMenu(wxCommandEvent&) { auto entry = GetCurrentItem(); if ( !entry ) return; ShowReference(0); } void PoeditFrame::OnReferencesMenuUpdate(wxUpdateUIEvent& event) { OnSingleSelectionUpdate(event); if (event.GetEnabled()) { auto item = GetCurrentItem(); event.Enable(item && !item->GetReferences().empty()); } } void PoeditFrame::OnReference(wxCommandEvent& event) { ShowReference(event.GetId() - WinID::ListContextReferencesStart); } void PoeditFrame::ShowReference(int num) { auto entry = GetCurrentItem(); if (!entry) return; FileViewer::GetAndActivate()->ShowReferences(m_catalog, entry, num); } void PoeditFrame::OnFuzzyFlag(wxCommandEvent&) { bool setFuzzy = GetMenuBar()->IsChecked(XRCID("menu_fuzzy")); bool modified = false; m_list->ForSelectedCatalogItemsDo([=,&modified](CatalogItem& item){ if (item.IsFuzzy() != setFuzzy) { item.SetFuzzy(setFuzzy); item.SetModified(true); modified = true; } }); if (modified && !IsModified()) { m_modified = true; UpdateTitle(); } UpdateStatusBar(); UpdateToTextCtrl(EditingArea::UndoableEdit | EditingArea::DontTouchText); if (m_list->HasSingleSelection()) { // The user explicitly changed fuzzy status (e.g. to on). Normally, if the // user edits an entry, it's fuzzy flag is cleared, but if the user sets // fuzzy on to indicate the translation is problematic and then continues // editing the entry, we do not want to annoy him by changing fuzzy back on // every keystroke. m_editingArea->DontAutoclearFuzzyStatus(); } } void PoeditFrame::OnIDsFlag(wxCommandEvent&) { m_displayIDs = GetMenuBar()->IsChecked(XRCID("menu_ids")); m_list->SetDisplayLines(m_displayIDs); } void PoeditFrame::OnToggleWarnings(wxCommandEvent& e) { bool enable = (bool)e.GetInt(); Config::ShowWarnings(enable); // refresh display of items in the window: if (m_catalog) { m_catalog->Validate(); if (m_list && m_list->sortOrder().errorsFirst) m_list->Sort(); else m_list->RefreshAllItems(); } } void PoeditFrame::OnCopyFromSingular(wxCommandEvent&) { m_editingArea->CopyFromSingular(); } void PoeditFrame::OnCopyFromSource(wxCommandEvent&) { bool modified = false; m_list->ForSelectedCatalogItemsDo([&modified](CatalogItem& item){ item.SetTranslationFromSource(); if (item.IsModified()) modified = true; }); if (modified && !IsModified()) { m_modified = true; UpdateTitle(); } UpdateStatusBar(); UpdateToTextCtrl(EditingArea::UndoableEdit); } void PoeditFrame::OnClearTranslation(wxCommandEvent&) { bool modified = false; m_list->ForSelectedCatalogItemsDo([&modified](CatalogItem& item){ item.ClearTranslation(); if (item.IsModified()) modified = true; }); if (modified && !IsModified()) { m_modified = true; UpdateTitle(); } UpdateStatusBar(); UpdateToTextCtrl(EditingArea::UndoableEdit); } void PoeditFrame::OnFind(wxCommandEvent&) { if (!m_findWindow) m_findWindow = new FindFrame(this, m_list, m_editingArea, m_catalog); m_findWindow->ShowForFind(); } void PoeditFrame::OnFindAndReplace(wxCommandEvent&) { if (!m_findWindow) m_findWindow = new FindFrame(this, m_list, m_editingArea, m_catalog); m_findWindow->ShowForReplace(); } void PoeditFrame::OnFindNext(wxCommandEvent&) { if (m_findWindow) m_findWindow->FindNext(); } void PoeditFrame::OnFindPrev(wxCommandEvent&) { if (m_findWindow) m_findWindow->FindPrev(); } void PoeditFrame::OnUpdateFind(wxUpdateUIEvent& e) { e.Enable(m_catalog && !m_catalog->empty() && m_findWindow && m_findWindow->HasText()); } CatalogItemPtr PoeditFrame::GetCurrentItem() const { if ( !m_catalog || !m_list ) return nullptr; return m_list->GetCurrentCatalogItem(); } void PoeditFrame::OnUpdatedFromTextCtrl(CatalogItemPtr item, bool statsChanged) { GetMenuBar()->Check(XRCID("menu_fuzzy"), item->IsFuzzy()); m_pendingHumanEditedItem = item; RecordItemToNavigationHistory(item); if (statsChanged) { UpdateStatusBar(); } // else: no point in recomputing stats if (!IsModified()) { m_modified = true; UpdateTitle(); } } void PoeditFrame::RecordItemToNavigationHistory(const CatalogItemPtr& item) { if (m_navigationHistory.empty() || m_navigationHistory.back() != item) m_navigationHistory.push_back(item); } void PoeditFrame::OnNewTranslationEntered(const CatalogItemPtr& item) { if (item->IsFuzzy() || !item->IsTranslated()) return; if (Config::UseTM()) { auto srclang = m_catalog->GetSourceLanguage(); auto lang = m_catalog->GetLanguage(); dispatch::async([=](){ 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 further translations within the file, but per-item updates // remain inexpensive. } catch (const Exception&) { // ignore failures here, they'll become apparent when saving the file } }); } } void PoeditFrame::UpdateToTextCtrl(int flags) { auto item = GetCurrentItem(); if (!item) return; m_pendingHumanEditedItem.reset(); m_editingArea->UpdateToTextCtrl(item, flags); GetMenuBar()->Check(XRCID("menu_fuzzy"), item->IsFuzzy()); } void PoeditFrame::ReadCatalog(const CatalogPtr& cat) { wxASSERT( cat ); { #ifdef __WXMSW__ wxWindowUpdateLocker no_updates(this); #endif { wxLogNull null; // don't report non-item warnings // the file was just loaded, it is identical to in-memory content and we can pass `fileWithSameContent` cat->Validate(/*fileWithSameContent=*/cat->GetFileName()); } m_catalog = cat; m_fileMonitor->SetFile(m_catalog->GetFileName()); 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 // UpdateEditingUIAfterChange() just few lines below. NotifyCatalogChanged(m_catalog); m_fileExistsOnDisk = true; m_modified = false; UpdateEditingUIAfterChange(); RefreshControls(Refresh_NoCatalogChanged /*done right above*/); UpdateTitle(); UpdateTextLanguage(); NoteAsRecentFile(); if (cat->HasCapability(Catalog::Cap::Translations)) WarnAboutLanguageIssues(); if (cat->UsesSymbolicIDsForSource()) OfferSideloadingSourceText(); } // Can't do this with the window being frozen, because positioning the toolbar // in presence of mCtrl menubar would not size & repaint properly: #ifdef HAVE_HTTP_CLIENT if (!m_catalog->GetCloudSync()) { SetupCloudSyncIfShouldBeDoneAutomatically(m_catalog); } m_toolbar->EnableSyncWithCrowdin(CanSyncWithCrowdin(m_catalog)); #endif FixDuplicatesIfPresent(); } void PoeditFrame::FixDuplicatesIfPresent() { wxASSERT_MSG( IsShown(), "this method may show UI error, which requires the window to be visible" ); auto cat = std::dynamic_pointer_cast(m_catalog); if (!cat) return; // Poedit always produces good files, so don't bother with it. Older // versions would preserve bad files, though. wxString generator = cat->Header().GetHeader("X-Generator"); wxString gversion; if (generator.StartsWith("Poedit ", &gversion) && !gversion.starts_with("1.7") && !gversion.starts_with("1.6") && !gversion.starts_with("1.5")) return; if (!cat->HasDuplicateItems()) return; // good // Fix duplicates and explain the changes to the user: cat->FixDuplicateItems(); NotifyCatalogChanged(m_catalog); wxWindowPtr 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 needing work 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 ( "missing-language", AttentionMessage::Error, _(L"Language of the translation isn’t set.") ); 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); } // Check if the language is set wrongly. This is typically done in such a way that // both languages are English, so check explicitly for the common case of "translating" // from en to en_US too: if (lang.IsValid() && srclang.IsValid() && (lang == srclang || (srclang == Language::English() && lang.Code() == "en_US"))) { 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(); }); if (lang != srclang) msg.AddDontShowAgain(); // possible that Poedit misjudged the intent 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): auto po_cat = std::dynamic_pointer_cast(m_catalog); if ( po_cat && lang.IsValid() && po_cat->HasPluralItems() ) { wxString err; if ( po_cat->Header().GetHeader("Plural-Forms").empty() ) { err = _(L"This file has entries with plural forms, but doesn’t have Plural-Forms header configured."); } else if ( po_cat->HasWrongPluralFormsCount() ) { err = _(L"Entries in this file have different plural forms count from what the file’s Plural-Forms header says"); } // FIXME: make this part of global error checking PluralFormsExpr plForms(po_cat->Header().GetHeader("Plural-Forms").utf8_string()); if (!plForms) { if (plForms.str().empty()) { err = _("Required header Plural-Forms is missing."); } else { err = wxString::Format(_("Syntax error in Plural-Forms header (\"%s\")."), plForms.str()); } } if ( !err.empty() ) { AttentionMessage msg ( "malformed-plural-forms", AttentionMessage::Error, err ); msg.AddAction(MSW_OR_OTHER(_("Fix the header"), _("Fix the Header")), [=]{ EditCatalogProperties(); }); m_attentionBar->ShowMessage(msg); } else // no error, check for warning-worthy stuff { if (lang.IsValid() && plForms != lang.DefaultPluralFormsExpr() && !CanSyncWithCrowdin(m_catalog)) { AttentionMessage msg ( "unusual-plural-forms", AttentionMessage::Warning, wxString::Format ( // 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". _("Plural forms expression used by the file is unusual for %s."), lang.DisplayName() ) ); // TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" msg.AddAction(_("Review"), [=]{ EditCatalogProperties(); }); msg.AddDontShowAgain(); m_attentionBar->ShowMessage(msg); } } } } void PoeditFrame::OfferSideloadingSourceText() { if (!m_catalog->UsesSymbolicIDsForSource()) return; auto filename = m_catalog->GetFileName(); wxString wildcard; if (!Language::TryGuessFromFilename(filename, &wildcard).IsValid()) return; wxFileName fn(filename); wxFileName ref; for (auto candidate: {"en", "en.default", "default"}) { auto w(wildcard); w.Replace("*", candidate); wxFileName fnw(w); if (fnw.FileExists() && fnw != fn) { ref = fnw; break; } } if (!ref.IsOk()) return; wxFileName displayRef(ref); displayRef.MakeRelativeTo(fn.GetPath()); AttentionMessage msg ( "sideload-symbolic-id-source", AttentionMessage::Question, _("Would you like to use English for source text?") ); msg.SetExplanation(wxString::Format(_(L"This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you."), displayRef.GetFullPath())); // TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" msg.AddAction(_("Load English"),[=]{ SideloadSourceTextFromFile(ref); }); m_attentionBar->ShowMessage(msg); } void PoeditFrame::SideloadSourceTextFromFile(const wxFileName& fn) { try { auto refcat = Catalog::Create(fn.GetFullPath()); m_catalog->SideloadSourceDataFromReferenceFile(refcat); UpdateEditingUIAfterChange(); NotifyCatalogChanged(m_catalog); } catch (...) { wxMessageDialog dlg ( this, wxString::Format(_(L"The file “%s†couldn’t be opened."), fn.GetFullName()), _("Invalid file"), wxOK | wxICON_ERROR ); dlg.SetExtendedMessage(DescribeCurrentException()); dlg.ShowModal(); } } void PoeditFrame::NoteAsRecentFile() { auto filename = GetFileName(); if (!filename) return; RecentFiles::Get().NoteRecentFile(filename); } void PoeditFrame::MarkAsModified() { m_modified = true; UpdateTitle(); } void PoeditFrame::RefreshControls(int flags) { if (!m_catalog) return; m_hasObsoleteItems = false; wxBusyCursor bcur; UpdateMenu(); if (m_list) { // update catalog view, this may involve reordering the items... if (!(flags & Refresh_NoCatalogChanged)) m_list->CatalogChanged(m_catalog); if (m_findWindow) m_findWindow->Reset(m_catalog); } UpdateTitle(); UpdateStatusBar(); Refresh(); } void PoeditFrame::NotifyCatalogChanged(const CatalogPtr& cat) { m_pendingHumanEditedItem.reset(); m_navigationHistory.clear(); if (m_sidebar) m_sidebar->ResetCatalog(); if (m_list) m_list->CatalogChanged(cat); } void PoeditFrame::UpdateStatusBar() { auto bar = GetStatusBar(); if (m_catalog && bar) { int all, fuzzy, untranslated, errors, unfinished; m_catalog->GetStatistics(&all, &fuzzy, &errors, &untranslated, &unfinished); wxString text; if (m_catalog->HasCapability(Catalog::Cap::Translations)) { 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); } } else { text.Printf(wxPLURAL("%d entry", "%d entries", all), all); } bar->SetStatusText(text); } } void PoeditFrame::UpdateTitle() { #ifdef __WXOSX__ OSXSetModified(IsModified()); #endif m_fileNamePartOfTitle.clear(); auto fileName = GetFileName(); if (fileName.empty()) { SetTitle("Poedit"); return; } wxString fpath = wxFileName(fileName).GetFullName(); if (m_fileExistsOnDisk) SetRepresentedFilename(fileName); else fpath += _(" (unsaved)"); wxString title = fpath; wxString subtitle = m_catalog->Header().Project; if (subtitle == "PROJECT VERSION") subtitle.clear(); if (m_catalog->GetLanguage().IsValid()) { // add language to the subtitle, but only if not part of the filename already auto lang = m_catalog->GetLanguage().LanguageTag(); if (!boost::algorithm::icontains(fpath.utf8_string(), lang)) { boost::replace_all(lang, "-", "_"); if (!boost::algorithm::icontains(fpath.utf8_string(), lang)) { if (!subtitle.empty()) subtitle += L" • "; subtitle += m_catalog->GetLanguage().DisplayName(); } } } #ifdef __WXOSX__ if (@available(macOS 11.0, *)) { NSWindow *win = GetWXWindow(); win.subtitle = subtitle.empty() ? @"" : str::to_NS(subtitle); } else #endif // __WXOSX__ if (!subtitle.empty()) { title << MACOS_OR_OTHER(L" — ", L" • "); title << subtitle; } m_fileNamePartOfTitle = title; #ifndef __WXOSX__ if ( IsModified() ) title += _(" (modified)"); title += " - Poedit"; #endif SetTitle(title); } void PoeditFrame::UpdateMenu() { wxMenuBar *menubar = GetMenuBar(); const bool hasCatalog = m_catalog != nullptr; const bool nonEmpty = hasCatalog && !m_catalog->empty(); const bool editable = nonEmpty && m_catalog->HasCapability(Catalog::Cap::Translations); menubar->Enable(XRCID("menu_compile_mo"), hasCatalog && m_catalog->GetFileType() == Catalog::Type::PO); menubar->Enable(XRCID("menu_export_html"), hasCatalog); menubar->Enable(XRCID("menu_references"), nonEmpty); menubar->Enable(wxID_FIND, nonEmpty); menubar->Enable(wxID_REPLACE, nonEmpty); menubar->Enable(XRCID("menu_purge_deleted"), editable); menubar->Enable(XRCID("menu_validate"), editable); menubar->Enable(XRCID("menu_catproperties"), hasCatalog); menubar->Enable(XRCID("menu_ids"), nonEmpty); 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"), nonEmpty); menubar->Enable(XRCID("sort_untrans_first"), editable); menubar->Enable(XRCID("sort_errors_first"), editable); if (m_list) m_list->Enable(nonEmpty); menubar->Enable(XRCID("menu_remove_same_as_source"), editable); menubar->Enable(XRCID("menu_purge_deleted"), editable && m_catalog->HasDeletedItems()); } void PoeditFrame::WriteCatalog(const wxString& catalog) { WriteCatalog(catalog, [](bool){}); } template void PoeditFrame::WriteCatalog(const wxString& catalog, TFunctor completionHandler) { wxBusyCursor bcur; dispatch::future tmUpdateThread; if (Config::UseTM() && m_catalog->HasCapability(Catalog::Cap::Translations)) { tmUpdateThread = dispatch::async([=]{ try { // Commit pending writes made in OnNewTranslationEntered(): auto tm = TranslationMemory::Get().GetWriter(); tm->Commit(); } catch ( const Exception& e ) { wxLogWarning(_("Failed to update translation memory: %s"), e.What()); } catch ( ... ) { wxLogWarning(_("Failed to update translation memory: %s"), "unknown error"); } }); } 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); } FileMonitor::WritingGuard guard(*m_fileMonitor); Catalog::ValidationResults validation_results; Catalog::CompilationStatus mo_compilation_status = Catalog::CompilationStatus::NotDone; bool was_ok = false; try { was_ok = m_catalog->Save(catalog, true, validation_results, mo_compilation_status); } catch (...) { was_ok = false; wxMessageDialog dlg ( this, wxString::Format(_(L"The file “%s†couldn’t be saved."), wxFileName(catalog).GetFullName()), _("Error saving file"), wxOK | wxICON_ERROR ); dlg.SetExtendedMessage(DescribeCurrentException()); dlg.ShowModal(); } if (!was_ok) { if (tmUpdateThread.valid()) tmUpdateThread.wait(); completionHandler(false); return; } m_catalog->SetFileName(catalog); m_modified = false; m_fileExistsOnDisk = true; m_fileMonitor->SetFile(m_catalog->GetFileName()); UpdateTitle(); RefreshControls(); NoteAsRecentFile(); if (ManagerFrame::Get()) ManagerFrame::Get()->NotifyFileChanged(GetFileName()); if (m_catalog->GetCloudSync()) { CloudSyncProgressWindow::RunSync(this, m_catalog->GetCloudSync(), m_catalog); } if (tmUpdateThread.valid()) tmUpdateThread.wait(); if (m_list && m_list->sortOrder().errorsFirst) m_list->Sort(); if (validation_results.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_results, mo_compilation_status, /*from_save=*/true, /*other_file_saved=*/true, [=]{ completionHandler(true); }); }); } else { completionHandler(true); } } void PoeditFrame::OnEditComment(wxCommandEvent& event) { auto firstItem = GetCurrentItem(); wxCHECK_RET( firstItem, "no entry selected" ); (void)event; wxWindow *parent = this; #ifndef __WXOSX__ // Find suitable parent window for the comment dialog (e.g. the button): parent = dynamic_cast(event.GetEventObject()); if (parent && dynamic_cast(parent) != nullptr) parent = nullptr; if (!parent) parent = this; #endif wxWindowPtr dlg(new CommentDialog(parent, firstItem->GetComment())); dlg->ShowWindowModalThenDo([=](int retcode){ if (retcode == wxID_OK) { m_modified = true; UpdateTitle(); wxString comment = dlg->GetComment(); bool modified = false; m_list->ForSelectedCatalogItemsDo([&modified,comment](CatalogItem& item){ if (item.GetComment() != comment) { item.SetComment(comment); item.SetModified(true); modified = true; } }); if (modified && !IsModified()) { m_modified = true; UpdateTitle(); } // update comment window if (m_sidebar) m_sidebar->RefreshContent(); } }); } void PoeditFrame::OnRemoveSameAsSourceTranslations(wxCommandEvent&) { const wxString title = _("Remove same-as-source translations"); const wxString main = _("Do you want to remove all translations that are idential to the source text?"); const wxString details = _("This action will delete any translations that match the source text exactly. This cannot be undone."); wxWindowPtr dlg(new wxMessageDialog(this, main, title, wxYES_NO | wxICON_QUESTION)); dlg->SetExtendedMessage(details); dlg->SetYesNoLabels(_("Remove"), _("Keep")); dlg->ShowWindowModalThenDo([this,dlg](int retcode){ if (retcode == wxID_YES) { wxBusyCursor bcur; if (m_catalog->RemoveSameAsSourceTranslations()) { m_modified = true; RefreshControls(); } } }); } void PoeditFrame::OnPurgeDeleted(wxCommandEvent& WXUNUSED(event)) { const wxString title = _("Purge deleted translations"); const wxString main = _("Do you want to remove all translations that are no longer used?"); const wxString details = _("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."); wxWindowPtr dlg(new wxMessageDialog(this, main, title, wxYES_NO | wxICON_QUESTION)); dlg->SetExtendedMessage(details); dlg->SetYesNoLabels(_("Purge"), _("Keep")); dlg->ShowWindowModalThenDo([this,dlg](int retcode){ if (retcode == wxID_YES) { m_catalog->RemoveDeletedItems(); m_modified = true; UpdateTitle(); UpdateMenu(); } }); } void PoeditFrame::OnSuggestion(wxCommandEvent& event) { auto entry = GetCurrentItem(); if (!entry) return; entry->SetTranslation(event.GetString()); entry->SetFuzzy(false); entry->SetModified(true); // FIXME: instead of this mess, use notifications of catalog change m_modified = true; UpdateTitle(); UpdateStatusBar(); RecordItemToNavigationHistory(entry); UpdateToTextCtrl(EditingArea::UndoableEdit); m_list->RefreshItem(m_list->GetCurrentItem()); } void PoeditFrame::OnPreTranslateAll(wxCommandEvent&) { PreTranslateWithUI(this, m_list, m_catalog,[=]{ if (!m_modified) { m_modified = true; UpdateTitle(); } RefreshControls(); }); } wxMenu *PoeditFrame::CreatePopupMenu(int item) { if (!m_catalog) return NULL; if (item < 0 || item >= (int)m_list->GetItemCount()) return NULL; const wxArrayString& refs = (*m_catalog)[item]->GetReferences(); wxMenu *menu = new wxMenu; menu->Append(XRCID("menu_copy_from_src"), #ifdef __WXMSW__ wxString(_("Copy from source text")) #else wxString(_("Copy from Source Text")) #endif + "\t" + wxGETTEXT_IN_CONTEXT("keyboard key", "Ctrl+") + "B"); menu->Append(XRCID("menu_clear"), #ifdef __WXMSW__ wxString(_("Clear translation")) #else wxString(_("Clear Translation")) #endif + "\t" + wxGETTEXT_IN_CONTEXT("keyboard key", "Ctrl+") + "K"); menu->Append(XRCID("menu_comment"), #ifdef __WXMSW__ wxString(_("Edit comment")) #else wxString(_("Edit Comment")) #endif #ifndef __WXOSX__ + "\t" + wxGETTEXT_IN_CONTEXT("keyboard key", "Ctrl+") + "M" #endif ); if ( !refs.empty() ) { menu->AppendSeparator(); // TRANSLATORS: Meaning occurrences of the string in source code wxMenuItem *it1 = new wxMenuItem(menu, wxID_ANY, MSW_OR_OTHER(_("Code occurrences"), _("Code Occurrences"))); #ifdef __WXMSW__ it1->SetFont(it1->GetFont().Bold()); menu->Append(it1); #else menu->Append(it1); it1->Enable(false); #endif int count = std::min((int)refs.GetCount(), WinID::ListContextReferencesEnd - WinID::ListContextReferencesStart); for (int i = 0; i < count; i++) menu->Append(WinID::ListContextReferencesStart + i, " " + refs[i]); } return menu; } void PoeditFrame::SetCustomFonts() { if (!m_list) return; wxConfigBase *cfg = wxConfig::Get(); static bool prevUseFontText = false; bool useFontList = (bool)cfg->Read("custom_font_list_use", (long)false); bool useFontText = (bool)cfg->Read("custom_font_text_use", (long)false); if (useFontList) { wxString name = cfg->Read("custom_font_list_name", wxEmptyString); if (!name.empty()) { wxNativeFontInfo fi; fi.FromString(name); wxFont font; font.SetNativeFontInfo(fi); m_list->SetCustomFont(font); } } else { m_list->SetCustomFont(wxNullFont); } if (useFontText) { wxString name = cfg->Read("custom_font_text_name", wxEmptyString); if (!name.empty()) { wxNativeFontInfo fi; fi.FromString(name); wxFont font; font.SetNativeFontInfo(fi); m_editingArea->SetCustomFont(font); prevUseFontText = true; } } else if (prevUseFontText) { wxFont font(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)); m_editingArea->SetCustomFont(font); prevUseFontText = false; } } void PoeditFrame::OnSize(wxSizeEvent& event) { wxWindowUpdateLocker lock(this); event.Skip(); // see the comment in PoeditFrame ctor if ( m_setSashPositionsWhenMaximized && IsMaximized() ) { m_setSashPositionsWhenMaximized = false; // update sizes of child windows first: Layout(); // then set sash positions if (m_splitter) m_splitter->SetSashPosition((int)wxConfig::Get()->ReadLong("/splitter", PX(250))); } if (m_sidebarSplitter) { auto split = wxConfigBase::Get()->ReadDouble("/sidebar_splitter", 0.75); m_sidebarSplitter->SetSashPosition(split * event.GetSize().x); } if (m_sidebar && m_splitter) m_sidebar->SetUpperHeight(m_splitter->GetSashPosition()); } void PoeditFrame::UpdateEditingUIAfterChange() { if (!m_catalog || !m_editingArea) return; m_editingArea->UpdateEditingUIForCatalog(m_catalog); SetCustomFonts(); UpdateTextLanguage(); UpdateToTextCtrl(EditingArea::ItemChanged); } void PoeditFrame::OnListRightClick(wxDataViewEvent& event) { auto item = event.GetItem(); if (!item.IsOk()) { event.Skip(); return; } m_list->SelectAndFocus(item); std::shared_ptr menu(CreatePopupMenu(m_list->ListItemToCatalogIndex(item))); if (menu) { m_list->PopupMenu(menu.get()); } else { event.Skip(); } } void PoeditFrame::OnListFocus(wxFocusEvent& event) { if (g_focusToText && m_editingArea) m_editingArea->SetTextFocus(); else event.Skip(); } void PoeditFrame::OnSplitterSashMoving(wxSplitterEvent& event) { auto pos = event.GetSashPosition(); wxConfigBase::Get()->Write("/splitter", (long)pos); if (m_sidebar) m_sidebar->SetUpperHeight(pos); } void PoeditFrame::OnSidebarSplitterSashMoving(wxSplitterEvent& event) { auto split = (double)event.GetSashPosition() / (double)GetSize().x; wxConfigBase::Get()->Write("/sidebar_splitter", split); } void PoeditFrame::OnSortByFileOrder(wxCommandEvent&) { m_list->sortOrder().by = SortOrder::By_FileOrder; m_list->Sort(); } void PoeditFrame::OnSortBySource(wxCommandEvent&) { m_list->sortOrder().by = SortOrder::By_Source; m_list->Sort(); } void PoeditFrame::OnSortByTranslation(wxCommandEvent&) { m_list->sortOrder().by = SortOrder::By_Translation; m_list->Sort(); } void PoeditFrame::OnSortGroupByContext(wxCommandEvent& event) { m_list->sortOrder().groupByContext = event.IsChecked(); m_list->Sort(); } void PoeditFrame::OnSortUntranslatedFirst(wxCommandEvent& event) { m_list->sortOrder().untransFirst = event.IsChecked(); m_list->Sort(); } void PoeditFrame::OnSortErrorsFirst(wxCommandEvent& event) { m_list->sortOrder().errorsFirst = event.IsChecked(); m_list->Sort(); } void PoeditFrame::OnShowHideSidebar(wxCommandEvent&) { bool toShow = !m_sidebarSplitter->IsSplit(); if (toShow) { auto split = GetSize().x * wxConfigBase::Get()->ReadDouble("/sidebar_splitter", 0.75); m_sidebarSplitter->SplitVertically(m_splitter, m_sidebar, split); m_sidebar->RefreshContent(); } else { m_sidebarSplitter->Unsplit(m_sidebar); } wxConfigBase::Get()->Write("/sidebar_shown", toShow); } void PoeditFrame::OnUpdateShowHideSidebar(wxUpdateUIEvent& event) { event.Enable(m_sidebar != nullptr); if (!m_sidebar) return; bool shown = m_sidebarSplitter->IsSplit(); #ifdef __WXOSX__ auto shortcut = "\tCtrl+Alt+S"; if (shown) event.SetText(_("Hide Sidebar") + shortcut); else event.SetText(_("Show Sidebar") + shortcut); #else event.Check(shown); #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()); } void PoeditFrame::OnSingleSelectionWithPluralsUpdate(wxUpdateUIEvent& event) { // Enable only if a single item with plural forms is selected event.Enable(m_catalog && m_list && m_list->HasSingleSelection() && m_editingArea->IsShowingPlurals()); } void PoeditFrame::OnGoPreviouslyEditedUpdate(wxUpdateUIEvent& event) { event.Enable(!m_navigationHistory.empty()); } void PoeditFrame::OnHasCatalogUpdate(wxUpdateUIEvent& event) { event.Enable(m_catalog != nullptr); } void PoeditFrame::OnIsEditableUpdate(wxUpdateUIEvent& event) { event.Enable(m_catalog && !m_catalog->empty() && m_catalog->HasCapability(Catalog::Cap::Translations)); } void PoeditFrame::OnEditCommentUpdate(wxUpdateUIEvent& event) { event.Enable(m_catalog && m_list && m_list->HasSelection() && m_catalog->HasCapability(Catalog::Cap::UserComments)); } void PoeditFrame::OnFuzzyFlagUpdate(wxUpdateUIEvent& event) { event.Enable(m_catalog && m_list && m_list->HasSelection() && m_catalog->HasCapability(Catalog::Cap::FuzzyTranslations)); } #if defined(__WXMSW__) || defined(__WXGTK__) // Emulate something like macOS's first responder: pass text editing commands to // the focused text control. void PoeditFrame::OnTextEditingCommand(wxCommandEvent& event) { #ifdef __WXGTK__ wxEventBlocker block(this, wxEVT_MENU); #endif wxWindow *w = FindFocusNoMenu(); if (!w || w == this || !w->ProcessWindowEventLocally(event)) event.Skip(); } void PoeditFrame::OnTextEditingCommandUpdate(wxUpdateUIEvent& event) { #ifdef __WXGTK__ wxEventBlocker block(this, wxEVT_UPDATE_UI); #endif wxWindow *w = FindFocusNoMenu(); if (!w || w == this || !w->ProcessWindowEventLocally(event)) event.Enable(false); } #endif // __WXMSW__ || __WXGTK__ // ------------------------------------------------------------------ // catalog navigation // ------------------------------------------------------------------ namespace { bool Pred_AnyItem(const CatalogItemPtr&) { return true; } bool Pred_UnfinishedItem(const CatalogItemPtr& item) { return !item->IsTranslated() || item->IsFuzzy() || item->HasIssue(); } } // anonymous namespace int PoeditFrame::NavigateGetNextItem(const int start, int step, PoeditFrame::NavigatePredicate predicate, bool wrap, CatalogItemPtr *out_item) { const int count = m_list ? m_list->GetItemCount() : 0; if ( !count ) return -1; int i = start; for ( ;; ) { i += step; if ( i < 0 ) { if ( wrap ) i += count; else return -1; // nowhere to go } else if ( i >= count ) { if ( wrap ) i -= count; else return -1; // nowhere to go } if ( i == start ) return -1; // nowhere to go auto item = m_list->ListIndexToCatalogItem(i); if ( predicate(item) ) { if (out_item) *out_item = item; return i; } } } bool PoeditFrame::Navigate(int step, NavigatePredicate predicate, bool wrap) { if (!m_list) return false; auto i = NavigateGetNextItem(m_list->GetCurrentItemListIndex(), step, predicate, wrap, nullptr); if (i == -1) return false; m_list->SelectAndFocus(i); return true; } void PoeditFrame::OnPrev(wxCommandEvent&) { Navigate(-1, Pred_AnyItem, /*wrap=*/false); } void PoeditFrame::OnNext(wxCommandEvent&) { Navigate(+1, Pred_AnyItem, /*wrap=*/false); } void PoeditFrame::OnPrevUnfinished(wxCommandEvent&) { Navigate(-1, Pred_UnfinishedItem, /*wrap=*/false); } void PoeditFrame::OnNextUnfinished(wxCommandEvent&) { Navigate(+1, Pred_UnfinishedItem, /*wrap=*/false); } void PoeditFrame::OnDoneAndNext(wxCommandEvent&) { auto item = GetCurrentItem(); if (!item) return; // If the user is "done" with an item, it should be in its final approved state // (unless they _just_ marked it as fuzzy now): if (item->IsFuzzy() && !m_editingArea->ShouldNotAutoclearFuzzyStatus()) { item->SetFuzzy(false); item->SetPreTranslated(false); item->SetModified(true); if (!IsModified()) { m_modified = true; UpdateTitle(); UpdateStatusBar(); } // do additional processing of finished translations, such as adding it to the TM: m_pendingHumanEditedItem = item; RecordItemToNavigationHistory(item); } // like "next unfinished", but wraps if (!Navigate(+1, Pred_UnfinishedItem, /*wrap=*/true)) { // This was the last such item. Since the selection didn't change, we need to explicitly // redraw the list & editing area to reflect item changes made above: UpdateToTextCtrl(EditingArea::UndoableEdit | EditingArea::DontTouchText); m_list->RefreshItem(m_list->GetCurrentItem()); } } void PoeditFrame::OnGoPreviouslyEdited(wxCommandEvent&) { auto previous = m_navigationHistory.back(); m_list->SelectAndFocus(m_list->CatalogItemToListItem(previous)); m_navigationHistory.pop_back(); } void PoeditFrame::OnPrevPage(wxCommandEvent&) { if (!m_list) return; auto pos = std::max(m_list->GetCurrentItemListIndex()-10, 0); m_list->SelectAndFocus(pos); } void PoeditFrame::OnNextPage(wxCommandEvent&) { if (!m_list) return; auto pos = std::min(m_list->GetCurrentItemListIndex()+10, (int)m_list->GetItemCount()-1); m_list->SelectAndFocus(pos); } void PoeditFrame::OnPrevPluralForm(wxCommandEvent&) { m_editingArea->ChangeFocusedPluralTab(-1); } void PoeditFrame::OnNextPluralForm(wxCommandEvent&) { m_editingArea->ChangeFocusedPluralTab(+1); } poedit-3.6.3/src/syntaxhighlighter.cpp0000644000175100001660000003354215011674230013537 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2025 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 "syntaxhighlighter.h" #include "catalog.h" #include "str_helpers.h" #include #include namespace { class BasicSyntaxHighlighter : public SyntaxHighlighter { public: void Highlight(const std::wstring& s, const CallbackType& highlight) override { if (s.empty()) return; const int length = int(s.length()); // Leading whitespace: for (auto i = s.begin(); i != s.end(); ++i) { if (!u_isblank(*i)) { int wlen = int(i - s.begin()); if (wlen) highlight(0, wlen, LeadingWhitespace); break; } } // Trailing whitespace: for (auto i = s.rbegin(); i != s.rend(); ++i) { if (!u_isblank(*i)) { int wlen = int(i - s.rbegin()); if (wlen) highlight(length - wlen, length, LeadingWhitespace); break; } } int blank_block_pos = -1; for (auto i = s.begin(); i != s.end(); ++i) { // Some special whitespace characters should always be highlighted: if (*i == 0x00A0 /*non-breakable space*/) { int pos = int(i - s.begin()); highlight(pos, pos + 1, LeadingWhitespace); } // Duplicate whitespace (2+ spaces etc.): else if (u_isblank(*i)) { if (blank_block_pos == -1) blank_block_pos = int(i - s.begin()); } else if (blank_block_pos != -1) { int endpos = int(i - s.begin()); if (endpos - blank_block_pos >= 2) highlight(blank_block_pos, endpos, LeadingWhitespace); blank_block_pos = -1; } // Escape sequences: if (*i == '\\') { int pos = int(i - s.begin()); if (++i == s.end()) break; // Note: this must match AnyTranslatableTextCtrl::EscapePlainText() switch (*i) { case '0': case 'a': case 'b': case 'f': case 'n': case 'r': case 't': case 'v': case '\\': highlight(pos, pos + 2, Escape); break; default: break; } } } } }; /// Highlighter that runs multiple sub-highlighters class CompositeSyntaxHighlighter : public SyntaxHighlighter { public: void Add(std::shared_ptr h) { m_sub.push_back(h); } void Highlight(const std::wstring& s, const CallbackType& highlight) override { for (auto h : m_sub) h->Highlight(s, highlight); } private: std::vector> m_sub; }; /// Match regular expressions for highlighting class RegexSyntaxHighlighter : public SyntaxHighlighter { public: static const std::wregex::flag_type flags = std::regex_constants::ECMAScript | std::regex_constants::optimize; RegexSyntaxHighlighter(const wchar_t *regex, TextKind kind) : m_re(regex, flags), m_kind(kind) {} RegexSyntaxHighlighter(const std::wregex& regex, TextKind kind) : m_re(regex), m_kind(kind) {} void Highlight(const std::wstring& s, const CallbackType& highlight) override { try { std::wsregex_iterator next(s.begin(), s.end(), m_re); std::wsregex_iterator end; while (next != end) { auto match = *next++; if (match.empty()) continue; int pos = static_cast(match.position()); highlight(pos, pos + static_cast(match.length()), m_kind); } } catch (std::regex_error& e) { switch (e.code()) { case std::regex_constants::error_complexity: case std::regex_constants::error_stack: // MSVC version of std::regex in particular can fail to match // e.g. HTML regex with backreferences on insanely large strings; // in that case, don't highlight instead of failing outright. return; default: throw; } } } private: std::wregex m_re; TextKind m_kind; }; std::wregex REOBJ_HTML_MARKUP(LR"((<\/?[a-zA-Z0-9:-]+(\s+[-:\w]+(=([-:\w+]|"[^"]*"|'[^']*'))?)*\s*\/?>)|(&[^ ;]+;))", RegexSyntaxHighlighter::flags); // variables expansion for various template languages std::wregex REOBJ_COMMON_PLACEHOLDERS( // // | | LR"(%[\w.-]+%|%?\{[\w.-]+\}|\{\{[\w.-]+\}\})", // | | | | | // | | | // | | +----------------------- {{var}} // | | // | +--------------------------------------- %{var} (Ruby) and {var} // | // +--------------------------------------------------- %var% (Twig) // RegexSyntaxHighlighter::flags); const wchar_t* COMMON_PLACEHOLDERS_TRIGGER_CHARS = L"{%"; // WebExtension-like $foo$ placeholders std::wregex REOBJ_DOLLAR_PLACEHOLDERS(LR"(\$[A-Za-z0-9_]+\$)", RegexSyntaxHighlighter::flags); // php-format per http://php.net/manual/en/function.sprintf.php plus positionals const wchar_t* RE_PHP_FORMAT = LR"(%(\d+\$)?[-+]{0,2}([ 0]|'.)?-?\d*(\..?\d+)?[%bcdeEfFgGosuxX])"; // c-format per http://en.cppreference.com/w/cpp/io/c/fprintf, // http://pubs.opengroup.org/onlinepubs/9699919799/functions/fprintf.html #define RE_C_FORMAT_BASE LR"(%(\d+\$)?[-+ #0]{0,5}(\d+|\*)?(\.(\d+|\*))?((hh|ll|[hljztL])?[%csdioxXufFeEaAgGnp]|<[A-Za-z0-9]+>))" const wchar_t* RE_C_FORMAT = RE_C_FORMAT_BASE; const wchar_t* RE_OBJC_FORMAT = L"%@|" RE_C_FORMAT_BASE; const wchar_t* RE_CXX20_FORMAT = LR"((\{\{)|(\}\})|(\{[^}]*\}))"; // Python and Perl-libintl braces format (also covered by common placeholders above) #define RE_BRACES LR"(\{[\w.-:,]+\})" // python-format old style https://docs.python.org/2/library/stdtypes.html#string-formatting // new style https://docs.python.org/3/library/string.html#format-string-syntax const wchar_t* RE_PYTHON_FORMAT = LR"((%(\(\w+\))?[-+ #0]?(\d+|\*)?(\.(\d+|\*))?[hlL]?[diouxXeEfFgGcrs%]))" // old style "|" RE_BRACES; // new style // ruby-format per https://ruby-doc.org/core-2.7.1/Kernel.html#method-i-sprintf const wchar_t* RE_RUBY_FORMAT = LR"(%(\d+\$)?[-+ #0]{0,5}(\d+|\*)?(\.(\d+|\*))?(hh|ll|[hljztL])?[%csdioxXufFeEaAgGnp])"; // Qt and KDE formats const wchar_t* RE_QT_FORMAT = LR"(%L?(\d\d?|n))"; // Lua const wchar_t* RE_LUA_FORMAT = LR"(%[- 0]*\d*(\.\d+)?[sqdiouXxAaEefGgc])"; // Pascal per https://www.freepascal.org/docs-html/rtl/sysutils/format.html const wchar_t* RE_PASCAL_FORMAT = LR"(%(\*:|\d*:)?-?(\*|\d+)?(\.\*|\.\d+)?[dDuUxXeEfFgGnNmMsSpP])"; } // anonymous namespace SyntaxHighlighterPtr SyntaxHighlighter::ForItem(const CatalogItem& item, int kindsMask, int flags) { auto fmt = item.GetFormatFlag(); if (fmt.empty()) fmt = item.GetInternalFormatFlag(); bool needsHTML = (kindsMask & Markup); if (needsHTML) { needsHTML = false; str::wstring_conv_t str1 = str::to_wstring(item.GetString()); if (str1.find(L"<") != std::wstring::npos && std::regex_search(str1, REOBJ_HTML_MARKUP)) { needsHTML = true; } else if (item.HasPlural()) { str::wstring_conv_t strp = str::to_wstring(item.GetString()); if (strp.find(L"<") != std::wstring::npos && std::regex_search(strp, REOBJ_HTML_MARKUP)) { needsHTML = true; } } } bool needsGenericPlaceholders = (kindsMask & Placeholder); if (needsGenericPlaceholders) { if ((flags & EnforceFormatTag) && !fmt.empty()) { // only use generic placeholders if no explicit format was provided, see https://github.com/vslavik/poedit/issues/777 needsGenericPlaceholders = false; } else { needsGenericPlaceholders = false; str::wstring_conv_t str1 = str::to_wstring(item.GetString()); if (str1.find_first_of(COMMON_PLACEHOLDERS_TRIGGER_CHARS) != std::wstring::npos && std::regex_search(str1, REOBJ_COMMON_PLACEHOLDERS)) { needsGenericPlaceholders = true; } else if (item.HasPlural()) { str::wstring_conv_t strp = str::to_wstring(item.GetString()); if (strp.find_first_of(COMMON_PLACEHOLDERS_TRIGGER_CHARS) != std::wstring::npos && std::regex_search(strp, REOBJ_COMMON_PLACEHOLDERS)) { needsGenericPlaceholders = true; } } } } static auto basic = std::make_shared(); if (!needsHTML && !needsGenericPlaceholders && fmt.empty()) { if (kindsMask & (LeadingWhitespace | Escape)) return basic; else return nullptr; } auto all = std::make_shared(); // HTML goes first, has lowest priority than special-purpose stuff like format strings: if (needsHTML) { static auto html = std::make_shared(REOBJ_HTML_MARKUP, TextKind::Markup); all->Add(html); } if (needsGenericPlaceholders) { // If no format specified, heuristically apply highlighting of common variable markers static auto placeholders = std::make_shared(REOBJ_COMMON_PLACEHOLDERS, TextKind::Placeholder); all->Add(placeholders); } if (!fmt.empty() && (kindsMask & Placeholder)) { if (fmt == "php") { static auto php_format = std::make_shared(RE_PHP_FORMAT, TextKind::Placeholder); all->Add(php_format); } else if (fmt == "c") { static auto c_format = std::make_shared(RE_C_FORMAT, TextKind::Placeholder); all->Add(c_format); } else if (fmt == "c++") { static auto cxx_format = std::make_shared(RE_CXX20_FORMAT, TextKind::Placeholder); all->Add(cxx_format); } else if (fmt == "python") { static auto python_format = std::make_shared(RE_PYTHON_FORMAT, TextKind::Placeholder); all->Add(python_format); } else if (fmt == "ruby") { static auto ruby_format = std::make_shared(RE_RUBY_FORMAT, TextKind::Placeholder); all->Add(ruby_format); } else if (fmt == "objc") { static auto objc_format = std::make_shared(RE_OBJC_FORMAT, TextKind::Placeholder); all->Add(objc_format); } else if (fmt == "qt" || fmt == "qt-plural" || fmt == "kde" || fmt == "kde-kuit") { static auto qt_format = std::make_shared(RE_QT_FORMAT, TextKind::Placeholder); all->Add(qt_format); } else if (fmt == "lua") { static auto lua_format = std::make_shared(RE_LUA_FORMAT, TextKind::Placeholder); all->Add(lua_format); } else if (fmt == "csharp" || fmt == "perl-brace" || fmt == "python-brace") { static auto brace_format = std::make_shared(RE_BRACES, TextKind::Placeholder); all->Add(brace_format); } else if (fmt == "object-pascal") { static auto pascal_format = std::make_shared(RE_PASCAL_FORMAT, TextKind::Placeholder); all->Add(pascal_format); } else if (fmt == "ph-dollars") { static auto dollars_format = std::make_shared(REOBJ_DOLLAR_PLACEHOLDERS, TextKind::Placeholder); all->Add(dollars_format); } } // basic highlighting has highest priority, so should come last in the order: if (kindsMask & (LeadingWhitespace | Escape)) all->Add(basic); return all; } poedit-3.6.3/src/recent_files.cpp0000644000175100001660000004036215011674230012432 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2020-2025 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 "recent_files.h" #include "colorscheme.h" #include "edapp.h" #include "hidpi.h" #include "str_helpers.h" #include "unicode_helpers.h" #include "utility.h" #ifdef __WXOSX__ #import #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include wxDEFINE_EVENT(EVT_OPEN_RECENT_FILE, wxCommandEvent); namespace { // Track lifetime of menus, removes no longer existing menus automatically template class menus_tracker { public: void add(wxMenuItem *menuItem, Payload *payload) { cleanup_destroyed(); m_menus[menuItem->GetMenu()] = payload; } template Payload* find_if(Fn&& predicate) { cleanup_destroyed(); for (auto& m: m_menus) { if (predicate(m.first)) return m.second; } return nullptr; } template void for_all(Fn&& func) { cleanup_destroyed(); for (auto& m: m_menus) func(m.second); } virtual ~menus_tracker() {} protected: void cleanup_destroyed() { auto i = m_menus.begin(); while (i != m_menus.end()) { if (i->first) ++i; else i = m_menus.erase(i); } } std::map, Payload*> m_menus; }; #ifndef __WXOSX__ class file_icons { public: file_icons() { #ifdef __WXGTK__ // wxSYS_SMALLICON_X is not implemented by wxGTK: m_iconSize[icon_small] = PX(16); #else m_iconSize[icon_small] = wxSystemSettings::GetMetric(wxSYS_SMALLICON_X); #endif m_iconSize[icon_large] = wxSystemSettings::GetMetric(wxSYS_ICON_X); } wxBitmap get_small(const wxString& ext) { return do_get(ext, icon_small); } wxBitmap get_large(const wxString& ext) { return do_get(ext, icon_large); } private: enum icon_size { icon_small = 0, icon_large = 1, icon_max }; wxBitmap do_get(const wxString& ext, icon_size size) { if (ext.empty()) return wxNullBitmap; auto& cache = m_cache[size]; auto i = cache.find(ext); if (i != cache.end()) return i->second; std::unique_ptr ft(wxTheMimeTypesManager->GetFileTypeFromExtension(ext)); if (ft) { wxIconLocation icon; if (ft->GetIcon(&icon)) return cache.emplace(ext, create_bitmap(icon, size)).first->second; } cache.emplace(ext, wxNullBitmap); return wxNullBitmap; } wxBitmap create_bitmap(const wxIconLocation& loc, icon_size size) { wxString fullname = loc.GetFileName(); int desiredSize = m_iconSize[size]; #ifdef __WXMSW__ if (loc.GetIndex()) { // wxICOFileHandler accepts names in the format "filename;index" fullname << ';' << loc.GetIndex(); } #endif // suppress logging of icon loading errors beyond our control: wxLogNull nolog; wxIcon icon(fullname, wxBITMAP_TYPE_ICO, desiredSize, desiredSize); if (!icon.IsOk()) icon.LoadFile(fullname, wxBITMAP_TYPE_ICO); if (!icon.IsOk()) return wxNullBitmap; #ifndef __WXMSW__ // There is no guarantee that the desired size given at icon construction // has been taken into account - only wxMSW seems to use it if (icon.GetWidth() != desiredSize || icon.GetHeight() != desiredSize) { wxImage image = icon.ConvertToImage(); image.Rescale(desiredSize, desiredSize, wxIMAGE_QUALITY_HIGH); return wxBitmap(image); } #endif icon.SetScaleFactor(HiDPIScalingFactor()); return icon; } int m_iconSize[icon_max]; std::map m_cache[icon_max]; }; typedef std::shared_ptr file_icons_ptr; #endif // !__WXOSX__ wxString pretty_print_path(wxFileName f) { f.MakeAbsolute(); f.ReplaceHomeDir(); // shorten the path for visual use: auto path = f.GetPath(); auto cloud = wxFileName::DirName(PoeditApp::GetCacheDir("Cloud")); cloud.ReplaceHomeDir(); if (path.starts_with(cloud.GetFullPath())) path = _("Cloud") + L" → " + path.substr(cloud.GetFullPath().length()); #ifdef __WXMSW__ // ReplaceHomeDir() puts tilde at the beginning to replace $HOME, but this is uncommon on Windows, // so remove it and just use plain path: if (path.starts_with("~\\")) path = path.substr(2); #endif return path; } } // anonymous namespace #ifdef __WXOSX__ // Implementation for macOS uses native recent documents functionality with native UI. // Some gross hacks are however required to make it work with wx's menubar and mostly // with the way wx handles switching per-window menus on macOS where only one per-app // menu exists. class RecentFiles::impl { public: impl() {} void UseMenu(wxMenuItem *menuItem) { NSMenu *native = menuItem->GetMenu()->GetHMenu(); NSMenuItem *nativeItem = [native itemWithTitle:str::to_NS(menuItem->GetItemLabelText())]; wxCHECK_RET( nativeItem, "couldn't find NSMenuItem for a menu item" ); m_menus.add(menuItem, nativeItem); } void NoteRecentFile(wxFileName fn) { fn.MakeAbsolute(); NSURL *url = [NSURL fileURLWithPath:str::to_NS(fn.GetFullPath())]; [[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:url]; } std::vector GetRecentFiles() { std::vector f; NSArray *urls = [[NSDocumentController sharedDocumentController] recentDocumentURLs]; for (NSURL *url in urls) f.emplace_back(str::to_wx(url.path)); return f; } void MacCreateFakeOpenRecentMenu() { // Populate the menu with a hack that will be replaced. NSMenu *mainMenu = [NSApp mainMenu]; NSMenuItem *item = [mainMenu addItemWithTitle:@"File" action:NULL keyEquivalent:@""]; NSMenu *menu = [[NSMenu alloc] initWithTitle:NSLocalizedString(@"File", nil)]; item = [menu addItemWithTitle:NSLocalizedString(@"Open Recent", nil) action:NULL keyEquivalent:@""]; NSMenu *openRecentMenu = [[NSMenu alloc] initWithTitle:@"Open Recent"]; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundeclared-selector" [openRecentMenu performSelector:@selector(_setMenuName:) withObject:@"NSRecentDocumentsMenu"]; #pragma clang diagnostic pop [menu setSubmenu:openRecentMenu forItem:item]; m_recentMenuItem = item; m_recentMenu = openRecentMenu; item = [openRecentMenu addItemWithTitle:NSLocalizedString(@"Clear Menu", nil) action:@selector(clearRecentDocuments:) keyEquivalent:@""]; } void MacTransferMenuTo(wxMenuBar *bar) { if (m_recentMenuItem) [m_recentMenuItem setSubmenu:nil]; if (!bar) return; NSMenuItem *nativeItem = m_menus.find_if([=](wxMenu *menu){ return menu->GetMenuBar() == bar; }); if (nativeItem) { [nativeItem setSubmenu:m_recentMenu]; m_recentMenuItem = nativeItem; } } private: menus_tracker m_menus; NSMenu *m_recentMenu = nullptr; NSMenuItem *m_recentMenuItem = nullptr; }; #else // !__WXOSX__ // Generic implementation use wxFileHistory (mainly for Windows). Doesn't use // wxFileHistory's menus management, because it requires explicit RemoveMenu() // and because we want to add "Clear menu" items as well. class RecentFiles::impl { public: impl() : m_icons_cache(new file_icons), m_history(m_icons_cache) { wxConfigBase *cfg = wxConfig::Get(); cfg->SetPath("/"); m_history.Load(*cfg); } void UseMenu(wxMenuItem *menuItem) { auto menu = menuItem->GetSubMenu(); m_menus.add(menuItem, menu); RebuildMenu(menu); menu->Bind(wxEVT_MENU, [=](wxCommandEvent& e) { auto f = GetRecentFiles()[e.GetId() - wxID_FILE1].GetFullPath(); if (!wxFileExists(f)) { wxLogError(_(L"File “%s†doesn’t exist."), f.c_str()); return; } wxCommandEvent event(EVT_OPEN_RECENT_FILE); event.SetEventObject(menu); event.SetString(f); menu->GetWindow()->ProcessWindowEvent(event); }, wxID_FILE1, wxID_FILE9); menu->Bind(wxEVT_MENU, [=](wxCommandEvent&) { ClearHistory(); }, m_idClear); } void NoteRecentFile(wxFileName fn) { fn.MakeAbsolute(); m_history.AddFileToHistory(fn.GetFullPath()); UpdateAfterChange(); } std::vector GetRecentFiles() { return m_history.GetRecentFiles(); } void ClearHistory() { while (m_history.GetCount()) m_history.RemoveFileFromHistory(0); UpdateAfterChange(); } file_icons_ptr GetIconsCache() const { return m_icons_cache; } protected: void RebuildMenu(wxMenu *menu) { // clear the menu entirely: while (menu->GetMenuItemCount()) menu->Destroy(menu->FindItemByPosition(0)); // add wxFileHistory files: m_history.AddFilesToMenu(menu); // and an item for clearning the menu: const bool hasItems = menu->GetMenuItemCount() > 0; if (hasItems) menu->AppendSeparator(); auto clearItem = menu->Append(m_idClear, MSW_OR_OTHER(_("Clear menu"), _("Clear Menu"))); clearItem->Enable(hasItems); } void UpdateAfterChange() { // Update all menus with visible history: m_menus.for_all([=](wxMenu *menu){ RebuildMenu(menu); }); // Save the changes to persistent storage: wxConfigBase *cfg = wxConfig::Get(); cfg->SetPath("/"); m_history.Save(*cfg); } // customized implementation of storage that makes nicer menus class MyHistory : public wxFileHistory { public: MyHistory(file_icons_ptr icons_cache) : m_icons_cache(icons_cache) {} std::vector GetRecentFiles() { std::vector files; files.reserve(m_fileHistory.size()); for (auto& f : m_fileHistory) { if (wxFileName::FileExists(f)) files.emplace_back(f); } return files; } void AddFilesToMenu(wxMenu *menu) override { auto files = GetRecentFiles(); std::map nameUses; for (auto& f : files) { auto name = f.GetFullName(); nameUses[name] += 1; } for (size_t i = 0; i < files.size(); ++i) DoAddFile(menu, i, files[i], nameUses[files[i].GetFullName()] > 1); } protected: void DoAddFile(wxMenu* menu, int n, const wxFileName& fn, bool showFullPath) { auto menuEntry = bidi::platform_mark_direction( showFullPath ? wxString::Format(L"%s — %s", fn.GetFullName(), pretty_print_path(fn)) : fn.GetFullName()); // we need to quote '&' characters which are used for mnemonics menuEntry.Replace("&", "&&"); auto item = new wxMenuItem(menu, wxID_FILE1 + n, wxString::Format("&%d %s", n + 1, menuEntry)); item->SetHelp(fn.GetFullPath()); item->SetBitmap(m_icons_cache->get_small(fn.GetExt())); menu->Append(item); } file_icons_ptr m_icons_cache; }; private: wxWindowIDRef m_idClear = wxWindow::NewControlId(); file_icons_ptr m_icons_cache; MyHistory m_history; menus_tracker m_menus; }; #endif // !__WXOSX__ // Boilerplate: namespace { static std::once_flag initializationFlag; RecentFiles* gs_instance = nullptr; } RecentFiles& RecentFiles::Get() { std::call_once(initializationFlag, []() { gs_instance = new RecentFiles; }); return *gs_instance; } void RecentFiles::CleanUp() { if (gs_instance) { delete gs_instance; gs_instance = nullptr; } } RecentFiles::RecentFiles() : m_impl(new impl) {} RecentFiles::~RecentFiles() {} void RecentFiles::UseMenu(wxMenuItem *menu) { m_impl->UseMenu(menu); } void RecentFiles::NoteRecentFile(const wxFileName& fn) { m_impl->NoteRecentFile(fn); } std::vector RecentFiles::GetRecentFiles() { return m_impl->GetRecentFiles(); } #ifdef __WXOSX__ void RecentFiles::MacCreateFakeOpenRecentMenu() { m_impl->MacCreateFakeOpenRecentMenu(); } void RecentFiles::MacTransferMenuTo(wxMenuBar *bar) { m_impl->MacTransferMenuTo(bar); } #endif // __WXOSX__ struct RecentFilesCtrl::data { std::vector files; #ifndef __WXOSX__ file_icons_ptr icons_cache; #endif }; // TODO: merge with CloudFileList which is very similar and has lot of duplicated code RecentFilesCtrl::RecentFilesCtrl(wxWindow *parent) : IconAndSubtitleListCtrl(parent, _("File")), m_data(new data) { #ifdef __WXOSX__ NSScrollView *scrollView = (NSScrollView*)GetHandle(); NSTableView *tableView = (NSTableView*)[scrollView documentView]; scrollView.automaticallyAdjustsContentInsets = NO; tableView.selectionHighlightStyle = NSTableViewSelectionHighlightStyleSourceList; if (@available(macOS 11.0, *)) tableView.style = NSTableViewStyleSourceList; SetRowHeight(GetDefaultRowHeight()); #else // !__WXOSX__ ColorScheme::SetupWindowColors(this, [=] { SetBackgroundColour(ColorScheme::Get(Color::SidebarBackground)); }); m_data->icons_cache = RecentFiles::Get().m_impl->GetIconsCache(); #endif Bind(wxEVT_DATAVIEW_ITEM_ACTIVATED, &RecentFilesCtrl::OnActivate, this); wxGetTopLevelParent(parent)->Bind(wxEVT_SHOW, [=](wxShowEvent& e){ e.Skip(); RefreshContent(); }); } void RecentFilesCtrl::RefreshContent() { DeleteAllItems(); m_data->files = RecentFiles::Get().GetRecentFiles(); for (auto f : m_data->files) { #ifdef __WXOSX__ wxBitmap icon([[NSWorkspace sharedWorkspace] iconForFileType:str::to_NS(f.GetExt())]); #else wxBitmap icon(m_data->icons_cache->get_large(f.GetExt())); #endif AppendFormattedItem(icon, f.GetFullName(), pretty_print_path(f)); } } void RecentFilesCtrl::OnActivate(wxDataViewEvent& event) { auto index = ItemToRow(event.GetItem()); if (index == wxNOT_FOUND || index >= (int)m_data->files.size()) return; auto fn = m_data->files[index].GetFullPath(); wxCommandEvent cevent(EVT_OPEN_RECENT_FILE); cevent.SetEventObject(this); cevent.SetString(fn); ProcessWindowEvent(cevent); } poedit-3.6.3/src/pluralforms/0000755000175100001660000000000015011674362011713 5poedit-3.6.3/src/pluralforms/COPYING0000644000175100001660000000467215011674230012671 wxWindows Library Licence, Version 3 ==================================== Copyright (c) 1998 Julian Smart, Robert Roebling et al Everyone is permitted to copy and distribute verbatim copies of this licence document, but changing it is not allowed. WXWINDOWS LIBRARY LICENCE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public Licence as published by the Free Software Foundation; either version 2 of the Licence, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public Licence for more details. You should have received a copy of the GNU Library General Public Licence along with this software, usually in a file named COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. EXCEPTION NOTICE 1. As a special exception, the copyright holders of this library give permission for additional uses of the text contained in this release of the library as licenced under the wxWindows Library Licence, applying either version 3 of the Licence, or (at your option) any later version of the Licence as published by the copyright holders of version 3 of the Licence document. 2. The exception is that you may use, copy, link, modify and distribute under the user's own terms, binary object code versions of works based on the Library. 3. If you copy code from files distributed under the terms of the GNU General Public Licence or the GNU Library General Public Licence into a copy of this library, as this licence permits, the exception does not apply to the code that you add in this way. To avoid misleading anyone as to the status of such modified files, you must delete this exception notice from such code and/or adjust the licensing conditions notice accordingly. 4. If you write modifications of your own for this library, it is your choice whether to permit this exception to apply to your modifications. If you do not wish that, you must delete the exception notice from such code and/or adjust the licensing conditions notice accordingly. poedit-3.6.3/src/pluralforms/pl_evaluate.cpp0000644000175100001660000003502515011674230014637 ///////////////////////////////////////////////////////////////////////////// // Name: src/common/intl.cpp // Purpose: Internationalization and localisation for wxWidgets // Author: Vadim Zeitlin // Modified by: Michael N. Filippov // (2003/09/30 - PluralForms support) // Created: 29/01/98 // RCS-ID: $Id$ // Copyright: (c) 1998 Vadim Zeitlin // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #include #include "pl_evaluate.h" // ---------------------------------------------------------------------------- // Plural forms parser // ---------------------------------------------------------------------------- PluralFormsScanner::PluralFormsScanner(const char* s) : m_s(s) { nextToken(); } bool PluralFormsScanner::nextToken() { PluralFormsToken::Type type = PluralFormsToken::T_ERROR; while (isspace(*m_s)) { ++m_s; } if (*m_s == 0) { type = PluralFormsToken::T_EOF; } else if (isdigit(*m_s)) { PluralFormsToken::Number number = *m_s++ - '0'; while (isdigit(*m_s)) { number = number * 10 + (*m_s++ - '0'); } m_token.setNumber(number); type = PluralFormsToken::T_NUMBER; } else if (isalpha(*m_s)) { const char* begin = m_s++; while (isalnum(*m_s)) { ++m_s; } size_t size = m_s - begin; if (size == 1 && memcmp(begin, "n", size) == 0) { type = PluralFormsToken::T_N; } else if (size == 6 && memcmp(begin, "plural", size) == 0) { type = PluralFormsToken::T_PLURAL; } else if (size == 8 && memcmp(begin, "nplurals", size) == 0) { type = PluralFormsToken::T_NPLURALS; } } else if (*m_s == '=') { ++m_s; if (*m_s == '=') { ++m_s; type = PluralFormsToken::T_EQUAL; } else { type = PluralFormsToken::T_ASSIGN; } } else if (*m_s == '>') { ++m_s; if (*m_s == '=') { ++m_s; type = PluralFormsToken::T_GREATER_OR_EQUAL; } else { type = PluralFormsToken::T_GREATER; } } else if (*m_s == '<') { ++m_s; if (*m_s == '=') { ++m_s; type = PluralFormsToken::T_LESS_OR_EQUAL; } else { type = PluralFormsToken::T_LESS; } } else if (*m_s == '%') { ++m_s; type = PluralFormsToken::T_REMINDER; } else if (*m_s == '!' && m_s[1] == '=') { m_s += 2; type = PluralFormsToken::T_NOT_EQUAL; } else if (*m_s == '&' && m_s[1] == '&') { m_s += 2; type = PluralFormsToken::T_LOGICAL_AND; } else if (*m_s == '|' && m_s[1] == '|') { m_s += 2; type = PluralFormsToken::T_LOGICAL_OR; } else if (*m_s == '?') { ++m_s; type = PluralFormsToken::T_QUESTION; } else if (*m_s == ':') { ++m_s; type = PluralFormsToken::T_COLON; } else if (*m_s == ';') { ++m_s; type = PluralFormsToken::T_SEMICOLON; } else if (*m_s == '(') { ++m_s; type = PluralFormsToken::T_LEFT_BRACKET; } else if (*m_s == ')') { ++m_s; type = PluralFormsToken::T_RIGHT_BRACKET; } m_token.setType(type); return type != PluralFormsToken::T_ERROR; } PluralFormsNodePtr::~PluralFormsNodePtr() { delete m_p; } PluralFormsNode* PluralFormsNodePtr::release() { PluralFormsNode *p = m_p; m_p = NULL; return p; } void PluralFormsNodePtr::reset(PluralFormsNode *p) { if (p != m_p) { delete m_p; m_p = p; } } void PluralFormsNode::setNode(size_t i, PluralFormsNode* n) { m_nodes[i].reset(n); } PluralFormsNode* PluralFormsNode::releaseNode(size_t i) { return m_nodes[i].release(); } PluralFormsToken::Number PluralFormsNode::evaluate(PluralFormsToken::Number n) const { switch (token().type()) { // leaf case PluralFormsToken::T_NUMBER: return token().number(); case PluralFormsToken::T_N: return n; // 2 args case PluralFormsToken::T_EQUAL: return node(0)->evaluate(n) == node(1)->evaluate(n); case PluralFormsToken::T_NOT_EQUAL: return node(0)->evaluate(n) != node(1)->evaluate(n); case PluralFormsToken::T_GREATER: return node(0)->evaluate(n) > node(1)->evaluate(n); case PluralFormsToken::T_GREATER_OR_EQUAL: return node(0)->evaluate(n) >= node(1)->evaluate(n); case PluralFormsToken::T_LESS: return node(0)->evaluate(n) < node(1)->evaluate(n); case PluralFormsToken::T_LESS_OR_EQUAL: return node(0)->evaluate(n) <= node(1)->evaluate(n); case PluralFormsToken::T_REMINDER: { PluralFormsToken::Number number = node(1)->evaluate(n); if (number != 0) { return node(0)->evaluate(n) % number; } else { return 0; } } case PluralFormsToken::T_LOGICAL_AND: return node(0)->evaluate(n) && node(1)->evaluate(n); case PluralFormsToken::T_LOGICAL_OR: return node(0)->evaluate(n) || node(1)->evaluate(n); // 3 args case PluralFormsToken::T_QUESTION: return node(0)->evaluate(n) ? node(1)->evaluate(n) : node(2)->evaluate(n); default: return 0; } } void PluralFormsCalculator::init(PluralFormsToken::Number nplurals, PluralFormsNode* plural) { m_nplurals = nplurals; m_plural.reset(plural); } int PluralFormsCalculator::evaluate(int n) const { if (m_plural.get() == 0) { return 0; } PluralFormsToken::Number number = m_plural->evaluate(n); if (number < 0 || number > m_nplurals) { return 0; } return number; } class PluralFormsParser { public: PluralFormsParser(PluralFormsScanner& scanner) : m_scanner(scanner) {} bool parse(PluralFormsCalculator& rCalculator); private: PluralFormsNode* parsePlural(); // stops at T_SEMICOLON, returns 0 if error PluralFormsScanner& m_scanner; const PluralFormsToken& token() const; bool nextToken(); PluralFormsNode* expression(); PluralFormsNode* logicalOrExpression(); PluralFormsNode* logicalAndExpression(); PluralFormsNode* equalityExpression(); PluralFormsNode* multiplicativeExpression(); PluralFormsNode* relationalExpression(); PluralFormsNode* pmExpression(); }; bool PluralFormsParser::parse(PluralFormsCalculator& rCalculator) { if (token().type() != PluralFormsToken::T_NPLURALS) return false; if (!nextToken()) return false; if (token().type() != PluralFormsToken::T_ASSIGN) return false; if (!nextToken()) return false; if (token().type() != PluralFormsToken::T_NUMBER) return false; PluralFormsToken::Number nplurals = token().number(); if (!nextToken()) return false; if (token().type() != PluralFormsToken::T_SEMICOLON) return false; if (!nextToken()) return false; if (token().type() != PluralFormsToken::T_PLURAL) return false; if (!nextToken()) return false; if (token().type() != PluralFormsToken::T_ASSIGN) return false; if (!nextToken()) return false; PluralFormsNode* plural = parsePlural(); if (plural == 0) return false; if (token().type() != PluralFormsToken::T_SEMICOLON) return false; if (!nextToken()) return false; if (token().type() != PluralFormsToken::T_EOF) return false; rCalculator.init(nplurals, plural); return true; } PluralFormsNode* PluralFormsParser::parsePlural() { PluralFormsNode* p = expression(); if (p == NULL) { return NULL; } PluralFormsNodePtr n(p); if (token().type() != PluralFormsToken::T_SEMICOLON) { return NULL; } return n.release(); } const PluralFormsToken& PluralFormsParser::token() const { return m_scanner.token(); } bool PluralFormsParser::nextToken() { if (!m_scanner.nextToken()) return false; return true; } PluralFormsNode* PluralFormsParser::expression() { PluralFormsNode* p = logicalOrExpression(); if (p == NULL) return NULL; PluralFormsNodePtr n(p); if (token().type() == PluralFormsToken::T_QUESTION) { PluralFormsNodePtr qn(new PluralFormsNode(token())); if (!nextToken()) { return 0; } p = expression(); if (p == 0) { return 0; } qn->setNode(1, p); if (token().type() != PluralFormsToken::T_COLON) { return 0; } if (!nextToken()) { return 0; } p = expression(); if (p == 0) { return 0; } qn->setNode(2, p); qn->setNode(0, n.release()); return qn.release(); } return n.release(); } PluralFormsNode*PluralFormsParser::logicalOrExpression() { PluralFormsNode* p = logicalAndExpression(); if (p == NULL) return NULL; PluralFormsNodePtr ln(p); if (token().type() == PluralFormsToken::T_LOGICAL_OR) { PluralFormsNodePtr un(new PluralFormsNode(token())); if (!nextToken()) { return 0; } p = logicalOrExpression(); if (p == 0) { return 0; } PluralFormsNodePtr rn(p); // right if (rn->token().type() == PluralFormsToken::T_LOGICAL_OR) { // see logicalAndExpression comment un->setNode(0, ln.release()); un->setNode(1, rn->releaseNode(0)); rn->setNode(0, un.release()); return rn.release(); } un->setNode(0, ln.release()); un->setNode(1, rn.release()); return un.release(); } return ln.release(); } PluralFormsNode* PluralFormsParser::logicalAndExpression() { PluralFormsNode* p = equalityExpression(); if (p == NULL) return NULL; PluralFormsNodePtr ln(p); // left if (token().type() == PluralFormsToken::T_LOGICAL_AND) { PluralFormsNodePtr un(new PluralFormsNode(token())); // up if (!nextToken()) { return NULL; } p = logicalAndExpression(); if (p == 0) { return NULL; } PluralFormsNodePtr rn(p); // right if (rn->token().type() == PluralFormsToken::T_LOGICAL_AND) { // transform 1 && (2 && 3) -> (1 && 2) && 3 // u r // l r -> u 3 // 2 3 l 2 un->setNode(0, ln.release()); un->setNode(1, rn->releaseNode(0)); rn->setNode(0, un.release()); return rn.release(); } un->setNode(0, ln.release()); un->setNode(1, rn.release()); return un.release(); } return ln.release(); } PluralFormsNode* PluralFormsParser::equalityExpression() { PluralFormsNode* p = relationalExpression(); if (p == NULL) return NULL; PluralFormsNodePtr n(p); if (token().type() == PluralFormsToken::T_EQUAL || token().type() == PluralFormsToken::T_NOT_EQUAL) { PluralFormsNodePtr qn(new PluralFormsNode(token())); if (!nextToken()) { return NULL; } p = relationalExpression(); if (p == NULL) { return NULL; } qn->setNode(1, p); qn->setNode(0, n.release()); return qn.release(); } return n.release(); } PluralFormsNode* PluralFormsParser::relationalExpression() { PluralFormsNode* p = multiplicativeExpression(); if (p == NULL) return NULL; PluralFormsNodePtr n(p); if (token().type() == PluralFormsToken::T_GREATER || token().type() == PluralFormsToken::T_LESS || token().type() == PluralFormsToken::T_GREATER_OR_EQUAL || token().type() == PluralFormsToken::T_LESS_OR_EQUAL) { PluralFormsNodePtr qn(new PluralFormsNode(token())); if (!nextToken()) { return NULL; } p = multiplicativeExpression(); if (p == NULL) { return NULL; } qn->setNode(1, p); qn->setNode(0, n.release()); return qn.release(); } return n.release(); } PluralFormsNode* PluralFormsParser::multiplicativeExpression() { PluralFormsNode* p = pmExpression(); if (p == NULL) return NULL; PluralFormsNodePtr n(p); if (token().type() == PluralFormsToken::T_REMINDER) { PluralFormsNodePtr qn(new PluralFormsNode(token())); if (!nextToken()) { return NULL; } p = pmExpression(); if (p == NULL) { return NULL; } qn->setNode(1, p); qn->setNode(0, n.release()); return qn.release(); } return n.release(); } PluralFormsNode* PluralFormsParser::pmExpression() { PluralFormsNodePtr n; if (token().type() == PluralFormsToken::T_N || token().type() == PluralFormsToken::T_NUMBER) { n.reset(new PluralFormsNode(token())); if (!nextToken()) { return NULL; } } else if (token().type() == PluralFormsToken::T_LEFT_BRACKET) { if (!nextToken()) { return NULL; } PluralFormsNode* p = expression(); if (p == NULL) { return NULL; } n.reset(p); if (token().type() != PluralFormsToken::T_RIGHT_BRACKET) { return NULL; } if (!nextToken()) { return NULL; } } else { return NULL; } return n.release(); } std::shared_ptr PluralFormsCalculator::make(const char* s) { auto calculator = std::make_shared(); if (s != NULL) { PluralFormsScanner scanner(s); PluralFormsParser p(scanner); if (!p.parse(*calculator)) { return NULL; } } return calculator; } poedit-3.6.3/src/pluralforms/pl_evaluate.h0000644000175100001660000001032615011674230014301 ///////////////////////////////////////////////////////////////////////////// // Name: src/common/intl.cpp // Purpose: Internationalization and localisation for wxWidgets // Author: Vadim Zeitlin // Modified by: Michael N. Filippov // (2003/09/30 - PluralForms support) // Created: 29/01/98 // RCS-ID: $Id$ // Copyright: (c) 1998 Vadim Zeitlin // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #include #include // ---------------------------------------------------------------------------- // Plural forms parser // ---------------------------------------------------------------------------- /* Simplified Grammar Expression: LogicalOrExpression '?' Expression ':' Expression LogicalOrExpression LogicalOrExpression: LogicalAndExpression "||" LogicalOrExpression // to (a || b) || c LogicalAndExpression LogicalAndExpression: EqualityExpression "&&" LogicalAndExpression // to (a && b) && c EqualityExpression EqualityExpression: RelationalExpression "==" RelationalExperession RelationalExpression "!=" RelationalExperession RelationalExpression RelationalExpression: MultiplicativeExpression '>' MultiplicativeExpression MultiplicativeExpression '<' MultiplicativeExpression MultiplicativeExpression ">=" MultiplicativeExpression MultiplicativeExpression "<=" MultiplicativeExpression MultiplicativeExpression MultiplicativeExpression: PmExpression '%' PmExpression PmExpression PmExpression: N Number '(' Expression ')' */ class PluralFormsToken { public: enum Type { T_ERROR, T_EOF, T_NUMBER, T_N, T_PLURAL, T_NPLURALS, T_EQUAL, T_ASSIGN, T_GREATER, T_GREATER_OR_EQUAL, T_LESS, T_LESS_OR_EQUAL, T_REMINDER, T_NOT_EQUAL, T_LOGICAL_AND, T_LOGICAL_OR, T_QUESTION, T_COLON, T_SEMICOLON, T_LEFT_BRACKET, T_RIGHT_BRACKET }; Type type() const { return m_type; } void setType(Type type) { m_type = type; } // for T_NUMBER only typedef int Number; Number number() const { return m_number; } void setNumber(Number num) { m_number = num; } private: Type m_type; Number m_number; }; class PluralFormsScanner { public: PluralFormsScanner(const char* s); const PluralFormsToken& token() const { return m_token; } bool nextToken(); // returns false if error private: const char* m_s; PluralFormsToken m_token; }; class PluralFormsNode; // NB: Can't use wxDEFINE_SCOPED_PTR_TYPE because PluralFormsNode is not // fully defined yet: class PluralFormsNodePtr { public: PluralFormsNodePtr(PluralFormsNode *p = NULL) : m_p(p) {} ~PluralFormsNodePtr(); PluralFormsNode& operator*() const { return *m_p; } PluralFormsNode* operator->() const { return m_p; } PluralFormsNode* get() const { return m_p; } PluralFormsNode* release(); void reset(PluralFormsNode *p); private: PluralFormsNode *m_p; }; class PluralFormsNode { public: PluralFormsNode(const PluralFormsToken& token) : m_token(token) {} const PluralFormsToken& token() const { return m_token; } const PluralFormsNode* node(size_t i) const { return m_nodes[i].get(); } void setNode(size_t i, PluralFormsNode* n); PluralFormsNode* releaseNode(size_t i); PluralFormsToken::Number evaluate(PluralFormsToken::Number n) const; private: PluralFormsToken m_token; PluralFormsNodePtr m_nodes[3]; }; class PluralFormsCalculator { public: PluralFormsCalculator() : m_nplurals(0), m_plural(0) {} // input: number, returns msgstr index int evaluate(int n) const; int nplurals() const { return m_nplurals; } // input: text after "Plural-Forms:" (e.g. "nplurals=2; plural=(n != 1);"), // if s == 0, creates default handler // returns 0 if error static std::shared_ptr make(const char* s = 0); ~PluralFormsCalculator() {} void init(PluralFormsToken::Number nplurals, PluralFormsNode* plural); wxString getString() const; private: PluralFormsToken::Number m_nplurals; PluralFormsNodePtr m_plural; }; poedit-3.6.3/src/catalog.h0000644000175100001660000005434015011674230011050 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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_catalog_h #define Poedit_catalog_h #include "language.h" #include #include #include #include #include #include #include #include class CloudSyncDestination; struct SourceCodeSpec; class Catalog; class CatalogItem; typedef std::shared_ptr CatalogItemPtr; typedef std::shared_ptr CatalogPtr; /** Optional data attached to CatalogItem. Used primarily in connection wiht UsesSymbolicIDsForSource() to provide read source strings. */ struct SideloadedItemData { /// Source string replacement wxString source_string, source_plural_string; /// Extracted comments / description (used by wxArrayString extracted_comments; }; /** Optional data attached to Catalog. Used primarily in connection wiht UsesSymbolicIDsForSource() to provide read source strings. */ struct SideloadedCatalogData { CatalogPtr reference_file; Language source_language; }; /** This class holds information about one particular string. This includes source string and its occurrences in source code (so-called references), translation and translation's status (fuzzy, non translated, translated) and optional comment. This class is mostly internal, used by Catalog to store data. */ class CatalogItem { protected: /// Ctor. Initializes the object with source string and translation. CatalogItem() : m_id(0), m_hasPlural(false), m_hasContext(false), m_isFuzzy(false), m_isTranslated(false), m_isModified(false), m_isPreTranslated(false), m_lineNum(0) {} CatalogItem(const CatalogItem&) = delete; virtual ~CatalogItem() {} public: // ------------------------------------------------------------------- // Read-only access to values in the item: // ------------------------------------------------------------------- /// Gets numeric, 1-based ID int GetId() const { return m_id; } // Implementation for use in derived classes: virtual wxString GetRawSymbolicId() const { return wxString(); } const wxString& GetRawString() const { return m_string; } const wxString& GetRawPluralString() const { return m_plural; } /// Get item's symbolic ID if used by the file wxString GetSymbolicId() const { return m_sideloaded ? GetRawString() : GetRawSymbolicId(); } bool HasSymbolicId() const { return !GetSymbolicId().empty(); } /// Returns the source string. const wxString& GetString() const { return m_sideloaded ? m_sideloaded->source_string : GetRawString(); } /// Returns the plural string. const wxString& GetPluralString() const { return m_sideloaded ? m_sideloaded->source_plural_string : GetRawPluralString(); } /// Does this entry have a msgid_plural? bool HasPlural() const { return m_hasPlural; } /// Does this entry have a msgctxt? bool HasContext() const { return m_hasContext; } /// Returns context string (can only be called if HasContext() returns /// true and empty string is accepted value). const wxString& GetContext() const { return m_context; } /// How many translations (plural forms) do we have? unsigned GetNumberOfTranslations() const { return (unsigned)m_translations.size(); } /// Returns number of plural forms in this translation; note that this /// may be less than what the header says, because some may be /// still untranslated unsigned GetPluralFormsCount() const; /// Returns the nth-translation. wxString GetTranslation(unsigned n = 0) const; /// Returns all translations. const wxArrayString& GetTranslations() const { return m_translations; } /// Returns array of all occurrences of this string in source code, /// parsed into individual references virtual wxArrayString GetReferences() const = 0; /// Returns comment added by the translator to this entry const wxString& GetComment() const { return m_comment; } /// Returns array of all auto comments. const wxArrayString& GetExtractedComments() const { return m_sideloaded ? m_sideloaded->extracted_comments : m_extractedComments; } /// Convenience function: does this entry has a comment? bool HasComment() const { return !m_comment.empty(); } /// Convenience function: does this entry has auto comments? bool HasExtractedComments() const { return !GetExtractedComments().empty(); } /// Gets gettext flags. \see SetFlags wxString GetFlags() const; /// Returns format flag ("php" for "php-format" etc.) if there's any, // empty string otherwise std::string GetFormatFlag() const; /// Like GetFormatFlags(), but only for internal uses (e.g. fileformat-specific highlighting) virtual std::string GetInternalFormatFlag() const { return std::string(); } /// Gets value of fuzzy flag. bool IsFuzzy() const { return m_isFuzzy; } /// Gets value of translated flag. bool IsTranslated() const { return m_isTranslated; } /// Gets value of modified flag. bool IsModified() const { return m_isModified; } /// Gets value of pre-translated translation flag. bool IsPreTranslated() const { return m_isPreTranslated; } /// Get line number of this entry. int GetLineNumber() const { return m_lineNum; } const wxArrayString& GetOldMsgidRaw() const { return m_oldMsgid; } wxString GetOldMsgid() const; bool HasOldMsgid() const { return !m_oldMsgid.empty(); } // ------------------------------------------------------------------- // Setters for user-editable values: // ------------------------------------------------------------------- /** Sets the translation. Changes "translated" status to true if \a t is not empty. */ void SetTranslation(const wxString& t, unsigned index = 0); /// Sets all translations. void SetTranslations(const wxArrayString& t); /// Set translations to equal source text. void SetTranslationFromSource(); // Clears all translation content from the entry void ClearTranslation(); /// Sets fuzzy flag. void SetFuzzy(bool fuzzy); /// Sets translated flag. void SetTranslated(bool t) { m_isTranslated = t; } /// Sets modified flag. void SetModified(bool modified) { m_isModified = modified; } /// Sets pre-translated translation flag. void SetPreTranslated(bool pre) { m_isPreTranslated = pre; } /// Sets the comment. void SetComment(const wxString& c); // ------------------------------------------------------------------- // Auxiliary data attached to the item, such as QA issues. Setting those // is done in base class only, because they don't affect the saved output. // ------------------------------------------------------------------- struct Issue { enum Severity { Warning, Error }; Severity severity; wxString message; Issue(Severity s, const wxString& m) : severity(s), message(m) {} }; bool HasIssue() const { return m_issue != nullptr; } bool HasError() const { return m_issue && m_issue->severity == Issue::Error; } const std::shared_ptr& GetIssue() const { return m_issue; } void ClearIssue() { m_issue.reset(); } void SetIssue(std::shared_ptr issue) { m_issue = issue; } void SetIssue(const Issue& issue) { m_issue = std::make_shared(issue); } void SetIssue(Issue::Severity severity, const wxString& message) { m_issue = std::make_shared(severity, message); } void AttachSideloadedData(const std::shared_ptr& d) { m_sideloaded = d; } void ClearSideloadedData() { m_sideloaded.reset(); } protected: // API for subclasses: virtual void UpdateInternalRepresentation() = 0; protected: // ------------------------------------------------------------------- // Private data setters only for internal use: // ------------------------------------------------------------------- void SetId(int id) { m_id = id; } void SetString(const wxString& s) { m_string = s; ClearIssue(); } void SetPluralString(const wxString& p) { m_plural = p; m_hasPlural = true; } void SetContext(const wxString& context) { m_hasContext = true; m_context = context; } void SetLineNumber(int line) { m_lineNum = line; } void AddExtractedComments(const wxString& com) { m_extractedComments.Add(com); } void SetOldMsgid(const wxArrayString& data) { m_oldMsgid = data; } /** Sets gettext flags directly in string format. It may be either empty string or ", fuzzy", ", c-format", ", fuzzy, c-format" or others (not understood by Poedit), i.e. the leading # is not included, but ", " is. */ void SetFlags(const wxString& flags); protected: int m_id; wxString m_string, m_plural; bool m_hasPlural; bool m_hasContext; wxString m_context; wxArrayString m_translations; wxArrayString m_extractedComments; wxArrayString m_oldMsgid; bool m_isFuzzy, m_isTranslated, m_isModified, m_isPreTranslated; wxString m_moreFlags; wxString m_comment; int m_lineNum; std::shared_ptr m_issue; std::shared_ptr m_sideloaded; }; typedef std::vector CatalogItemArray; /** This class stores all translations, together with filelists, references and other additional information. It can read .po files and save both .mo and .po files. Furthermore, it provides facilities for updating the catalog from source files. */ class Catalog { public: /// Type of the file loaded enum class Type { PO, POT, XLIFF, XCLOC, JSON, JSON_FLUTTER }; /// 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? FuzzyTranslations // Can translations be marked as needing work? }; /// Is this file capable of doing these things virtual bool HasCapability(Cap cap) const = 0; /// PO file header information. class HeaderData { public: HeaderData() {} /** Initializes the headers from string that is in msgid "" format (i.e. list of key:value\n entries). */ void FromString(const wxString& str); /** Converts the header into string representation that can be directly written to .po file as msgid "". */ wxString ToString(const wxString& line_delim = wxEmptyString); /// Updates headers list from parsed values entries below void UpdateDict(); /// Reverse operation to UpdateDict void ParseDict(); /// Returns value of header or empty string if missing. wxString GetHeader(const wxString& key) const; /// Returns true if given key is present in the header. bool HasHeader(const wxString& key) const; /** Sets header to given value. Overwrites old value if present, appends to the end of header values otherwise. */ void SetHeader(const wxString& key, const wxString& value); /// Like SetHeader, but deletes the header if value is empty void SetHeaderNotEmpty(const wxString& key, const wxString& value); /// Removes given header entry void DeleteHeader(const wxString& key); struct Entry { wxString Key, Value; }; typedef std::vector Entries; const Entries& GetAllHeaders() const { return m_entries; } // Parsed values: wxString Project, CreationDate, RevisionDate, Translator, TranslatorEmail, LanguageTeam, Charset, SourceCodeCharset; Language Lang; wxArrayString SearchPaths, SearchPathsExcluded, Keywords; wxString BasePath; wxString Comment; protected: Entries m_entries; const Entry *Find(const wxString& key) const; void NormalizeHeaderOrder(); }; enum CreationFlags { CreationFlag_IgnoreHeader = 1, CreationFlag_IgnoreTranslations = 2 }; enum class CompilationStatus { NotDone, Success, Error }; struct ValidationResults { ValidationResults() : errors(0), warnings(0) {} int errors; int warnings; }; /// Default ctor. Creates empty catalog, you have to call Load. static CatalogPtr Create(Type type); /** Ctor that loads the catalog from \a po_file with Load. \a flags is CreationFlags combination. This function never returns nullptr. In throws on failure. */ static CatalogPtr Create(const wxString& filename, int flags = 0); static bool CanLoadFile(const wxString& extension); virtual wxString GetPreferredExtension() const = 0; virtual ~Catalog() {} /** Creates new, empty header. Sets Charset to something meaningful ("UTF-8", currently). */ void CreateNewHeader(); /** Creates new header initialized based on a POT file's header. */ void CreateNewHeader(const HeaderData& pot_header); /** Saves catalog to file. Creates both .po (text) and .mo (binary) version of the catalog (unless the latter was disabled in preferences). Calls external xmsgfmt program to generate the .mo file. Note that \a po_file refers to .po file, .mo file will have same name & location as .po file except for different extension. */ virtual bool Save(const wxString& po_file, bool save_mo, ValidationResults& validation_results, CompilationStatus& mo_compilation_status) = 0; /** "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. */ virtual std::string SaveToBuffer() = 0; /// 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 types); static wxString GetAllTypesFileMask(); /// Exports the catalog to HTML format void ExportToHTML(std::ostream& output); 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; std::shared_ptr GetSourceCodeSpec() const; /// 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(); } /** Returns number of all, fuzzy, badtokens and untranslated items. Any argument may be NULL if the caller is not interested in given statistic value. @note "untranslated" are entries without translation; "unfinished" are entries with any problems */ void GetStatistics(int *all, int *fuzzy, int *badtokens, int *untranslated, int *unfinished); /// Gets n-th item in the catalog (read-write access). CatalogItemPtr operator[](unsigned n) { return m_items[n]; } /// Gets n-th item in the catalog (read-only access). const CatalogItemPtr operator[](unsigned n) const { return m_items[n]; } /// Gets catalog header (read-write access). HeaderData& Header() { return m_header; } /// Returns plural forms count: taken from Plural-Forms header if /// present, 0 otherwise (unless there are existing plural forms /// translations in the file) virtual unsigned GetPluralFormsCount() const; /// Returns catalog's source language (may be invalid, but usually English). Language GetSourceLanguage() const { return m_sideloaded ? m_sideloaded->source_language : m_sourceLanguage; } /// Returns catalog's language (may be invalid). virtual Language GetLanguage() const { return m_header.Lang; } /// Change the catalog's language and update headers accordingly virtual void SetLanguage(Language lang); /// Whether source text is just symbolic identifier and not actual text bool UsesSymbolicIDsForSource() const { return m_sourceIsSymbolicID && !m_sideloaded; } /// Returns true if the catalog contains obsolete entries (~.*) virtual bool HasDeletedItems() const = 0; /// Removes all obsolete translations from the catalog virtual void RemoveDeletedItems() = 0; /// Removes translations identical to the source text, returns true if any changes were made bool RemoveSameAsSourceTranslations(); /// Finds item by line number CatalogItemPtr FindItemByLine(int lineno); /// Finds catalog index by line number int FindItemIndexByLine(int lineno); /// Validates correctness of the translation by running msgfmt /// Returns number of errors (i.e. 0 if no errors). virtual ValidationResults Validate(const wxString& fileWithSameContent = wxString()); void AttachCloudSync(std::shared_ptr c) { m_cloudSync = c; } std::shared_ptr GetCloudSync() const { return m_cloudSync; } /** Attach source text data from another file to this one. This is used to implement showing of actual source text when the in-file source is just symbolic IDs. After calling this function, Get(Plural)String() will no longer return the ID, but will instead return as source text the translation from @a ref (typically you'll want that file to be for English). Attaches data from the @a ref file to this one, */ void SideloadSourceDataFromReferenceFile(CatalogPtr ref); /// Undo the effect of SideloadSourceDataFromReferenceFile() void ClearSideloadedSourceData(); /// Whether the source text was replaced from another file bool HasSideloadedReferenceFile() const { return m_sideloaded != nullptr; } std::shared_ptr GetSideloadedSourceData() const { return m_sideloaded; } protected: Catalog(Type type); /// Perform post-creation processing to e.g. fixup issues, detect missing language etc. virtual void PostCreation(); protected: CatalogItemArray m_items; Type m_fileType; wxString m_fileName; HeaderData m_header; Language m_sourceLanguage; bool m_sourceIsSymbolicID = false; std::shared_ptr m_cloudSync; std::shared_ptr m_sideloaded; }; #endif // Poedit_catalog_h poedit-3.6.3/src/crowdin_client.cpp0000644000175100001660000006101115011674230012765 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2025 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 "catalog.h" #include "catalog_xliff.h" #include "errors.h" #include "http_client.h" #include "keychain/keytar.h" #include "str_helpers.h" #include #include #include #include #include #include #include #include #include #include #include #include #include // ---------------------------------------------------------------- // Implementation // ---------------------------------------------------------------- namespace { // see https://support.crowdin.com/enterprise/creating-oauth-app/ #define OAUTH_BASE_URL "https://accounts.crowdin.com/oauth/authorize" #define OAUTH_CLIENT_ID "6Xsr0OCnsRdALYSHQlvs" #define OAUTH_SCOPE "project" #define OAUTH_CALLBACK_URL_PREFIX "poedit://auth/crowdin/" std::string base64_decode_json_part(const std::string &in) { std::string out; std::vector t(256, -1); { static const char* b = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; for (int i = 0; i < 64; i ++) t[b[i]] = i; } int val = 0, valb = -8; for (uint8_t c : in) { if (t[c] == -1) break; val = (val << 6) + t[c]; valb += 6; if (valb >= 0) { out.push_back(char(val >> valb & 0xFF)); valb -= 8; } } return out; } } // anonymous namespace std::string CrowdinClient::AttributeLink(std::string page) { static const char *base_url = "https://crowdin.com"; static const char *utm = "utm_source=poedit.net&utm_medium=referral&utm_campaign=poedit"; if (!boost::starts_with(page, "http")) page = base_url + page; page += page.find('?') == std::string::npos ? '?' : '&'; page += utm; return page; } class CrowdinClient::crowdin_http_client : public http_client { public: crowdin_http_client(CrowdinClient& owner, const std::string& url_prefix) : http_client(url_prefix), m_owner(owner) {} protected: std::string parse_json_error(const json& response) const override { wxLogTrace("poedit.crowdin", "JSON error: %s", response.dump().c_str()); try { // Like e.g. on 400 here https://support.crowdin.com/api/v2/#operation/api.projects.getMany // where "key" is usually "error" as figured out while looking in responses with above code // on most API requests used here return response.at("errors").at(0).at("error").at("errors").at(0).at("message").get(); } catch (...) { try { // Like e.g. on 401 here https://support.crowdin.com/api/v2/#operation/api.user.get // as well as in most other requests on above error code return response.at("error").at("message").get(); } catch (...) { return _("Unknown Crowdin error.").utf8_string(); } } } 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_string(); } wxLogTrace("poedit.crowdin", "JSON error: %s", message.c_str()); } CrowdinClient& m_owner; }; class CrowdinClient::crowdin_token { public: explicit crowdin_token(const std::string& jwt_token) { try { if (jwt_token.empty()) return; auto token_json = json::parse(base64_decode_json_part(wxString(jwt_token).AfterFirst('.').BeforeFirst('.').utf8_string())); domain = get_value(token_json, "domain", ""); if (!domain.empty()) domain += '.'; time_t expiration = (time_t)get_value(token_json, "exp", 0.0); m_valid = (expiration > time(NULL)); if (m_valid) encoded = jwt_token; } catch (...) { wxLogTrace("poedit.crowdin", "Failed to decode token. Most probable invalid/corrupted or unknown/unsupported type", jwt_token.c_str()); } } bool is_valid() const { return m_valid; } std::string domain; std::string encoded; private: bool m_valid = false; }; CrowdinClient::CrowdinClient() { SignInIfAuthorized(); } CrowdinClient::~CrowdinClient() {} dispatch::future CrowdinClient::Authenticate() { m_authCallback.reset(new dispatch::promise); m_authCallbackExpectedState = boost::uuids::to_string(boost::uuids::random_generator()()); auto url = OAUTH_BASE_URL "?response_type=token" "&scope=" OAUTH_SCOPE "&client_id=" OAUTH_CLIENT_ID "&redirect_uri=" OAUTH_CALLBACK_URL_PREFIX "&state=" + m_authCallbackExpectedState; wxLaunchDefaultBrowser(AttributeLink(url)); return m_authCallback->get_future(); } void CrowdinClient::HandleOAuthCallback(const std::string& uri) { wxLogTrace("poedit.crowdin", "Callback URI %s", uri.c_str()); std::smatch m; if (!(std::regex_search(uri, m, std::regex("state=([^&]+)")) && m.size() > 1 && m.str(1) == m_authCallbackExpectedState)) return; if (!(std::regex_search(uri, m, std::regex("access_token=([^&]+)")) && m.size() > 1)) return; if (!m_authCallback) return; SaveAndSetToken(m.str(1)); m_authCallback->set_value(); m_authCallback.reset(); } bool CrowdinClient::IsOAuthCallback(const std::string& uri) { return boost::starts_with(uri, OAUTH_CALLBACK_URL_PREFIX); } //TODO: validate JSON schema in all API responses // and handle errors since now Poedit just crashes // in case of some of expected keys missing dispatch::future CrowdinClient::GetUserInfo() { return m_api->get("user") .then([](json r) { wxLogTrace("poedit.crowdin", "Got user info: %s", r.dump().c_str()); const json& d = r["data"]; UserInfo u; u.service = SERVICE_NAME; d.at("username").get_to(u.login); u.avatarUrl = d.value("avatarUrl", ""); std::string fullName; try { d.at("fullName").get_to(fullName); // if individual (not enterprise) account } catch (...) // or enterpise otherwise { try { d.at("firstName").get_to(fullName); } catch (...) {} try { auto lastName = d.at("lastName").get(); if (!lastName.empty()) { if (!fullName.empty()) fullName += " "; fullName += lastName; } } catch (...) {} } if (fullName.empty()) u.name = str::to_wstring(u.login); else u.name = str::to_wstring(fullName); return u; }); } dispatch::future> CrowdinClient::GetUserProjects() { // TODO: handle pagination if projects more than 500 // (what is quite rare case I guess) return m_api->get("projects?limit=500") .then([](json r) { wxLogTrace("poedit.crowdin", "Got projects: %s", r.dump().c_str()); std::vector all; for (const auto& d : r["data"]) { const json& i = d["data"]; all.push_back( { SERVICE_NAME, i.at("id").get(), i.at("name").get(), i.at("identifier").get(), std::string() // avatarUrl }); } return all; }); } dispatch::future CrowdinClient::GetProjectDetails(const CrowdinClient::ProjectInfo& project) { auto project_id = std::get(project.internalID); auto url = "projects/" + std::to_string(project_id); auto prj = std::make_shared(); static const int NO_ID = -1; return m_api->get(url) .then([this, url, prj](json r) { // Handle project info const json& d = r["data"]; if (get_value(d, "type", 0) != 0) { // TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) BOOST_THROW_EXCEPTION(Exception(_("String-based Crowdin projects are not supported."))); } if (get_value(d, "publicDownloads", false) == false) BOOST_THROW_EXCEPTION(Exception(_("Downloading translations is disabled in this project."))); for (const auto& langCode: d.at("targetLanguageIds")) prj->languages.push_back(Language::FromLanguageTag(std::string(langCode))); //TODO: get more until all files gotten (if more than 500) return m_api->get(url + "/files?limit=500"); }) .then([this, url, prj](json r) { // Handle project files for (auto& i : r["data"]) { const json& d = i["data"]; if (d["type"] != "assets") { ProjectFile f; auto internal = std::make_shared(); f.internal = internal; d.at("id").get_to(internal->id); internal->fullPath = '/' + d.at("name").get(); internal->dirId = get_value(d, "directoryId", NO_ID); internal->branchId = get_value(d, "branchId", NO_ID); d.at("name").get_to(internal->fileName); f.title = str::to_wstring(get_value(d, "title", internal->fileName)); prj->files.push_back(std::move(f)); } } //TODO: get more until all dirs gotten (if more than 500) return m_api->get(url + "/directories?limit=500"); }) .then([this, url, prj](json r) { // Handle directories struct dir_info { std::string name, title; int parentId; }; std::map dirs; for (const auto& i : r["data"]) { const json& d = i["data"]; const json& parent = d["directoryId"]; std::string name; d.at("name").get_to(name); dirs.insert( { d.at("id").get(), { name, get_value(d, "title", name), parent.is_null() ? NO_ID : parent.get() } }); } for (auto& i : prj->files) { auto internal = std::static_pointer_cast(i.internal); std::list path; int dirId = internal->dirId; while (dirId != NO_ID) { const auto& dir = dirs[dirId]; path.push_front(dir.title); internal->fullPath.insert(0, '/' + dir.name); dirId = dir.parentId; } internal->dirName = boost::join(path, "/"); } }) .then([this, url]() { //TODO: get more until all branches gotten (if more than 500) return m_api->get(url + "/branches?limit=500"); }) .then([this, url, prj](json r) { // Handle branches struct branch_info { std::string name, title; }; std::map branches; for (const auto& i : r.at("data")) { const json& d = i.at("data"); const auto name = d.at("name").get(); const std::string title = get_value(d, "title", name); branches.insert({d.at("id").get(), {name, title}}); } for (auto& i : prj->files) { auto internal = std::static_pointer_cast(i.internal); std::wstring branchName; if (internal->branchId != NO_ID) { branchName = str::to_wstring(branches[internal->branchId].title); internal->fullPath.insert(0, '/' + branches[internal->branchId].name); } if (!branchName.empty()) i.description += branchName + L" → "; i.description += str::to_wstring(internal->fullPath); } return std::move(*prj); }); } std::wstring CrowdinClient::CreateLocalFilename(const ProjectInfo& project, const ProjectFile& file, const Language& lang) const { auto internal = std::static_pointer_cast(file.internal); auto project_id = std::get(project.internalID); auto project_name = project.name; auto file_name = internal->fileName; // sanitize to be safe filenames: std::replace_if(project_name.begin(), project_name.end(), boost::is_any_of("\\/:\"<>|?*"), '_'); std::replace_if(file_name.begin(), file_name.end(), boost::is_any_of("\\/:\"<>|?*"), '_'); // NB: sync this with ExtractMetadata() const wxString dir = project_name + L" - " + lang.WCode(); wxFileName localFileName(dir + wxString::Format("/Crowdin.%d.%d.%s %s", project_id, internal->id, lang.LanguageTag(), file_name)); auto ext = localFileName.GetExt().Lower(); if (ext == "po") { // natively supported file format, will be opened as-is } else if (ext == "pot") { // POT files are natively supported, but need to be opened as PO to see translations localFileName.SetExt("po"); } else if (ext == "xliff" || ext == "xlf") { // Do nothing, we don't want to use double-extension like .xliff.xliff } else { // Everything else is exported as XLIFF and we do want, at least for now, to keep // the old extension for clarity, e.g. *.strings.xliff or *.rc.xliff localFileName.SetFullName(localFileName.GetFullName() + ".xliff"); } return str::to_wstring(localFileName.GetFullPath()); } static void PostprocessDownloadedXLIFF(const wxString& filename) { // Crowdin XLIFF files have translations pre-filled with the source text if // not yet translated. Undo this as it is undesirable to translators. try { auto cat = Catalog::Create(filename); bool modified = false; for (auto& item: cat->items()) { if (item->IsFuzzy() && !item->HasPlural() && item->GetString() == item->GetTranslation()) { item->ClearTranslation(); modified = true; } } if (modified) { Catalog::ValidationResults dummy1; Catalog::CompilationStatus dummy2; cat->Save(filename, false, dummy1, dummy2); } } catch (...) { return; } } std::shared_ptr CrowdinClient::DoExtractSyncMetadata(Catalog& catalog) { auto meta = std::make_shared(); meta->service = SERVICE_NAME; wxFileName fn(catalog.GetFileName()); meta->extension = fn.GetExt().utf8_string(); auto& hdr = catalog.Header(); bool crowdinSpecificLangUsed = false; if (hdr.HasHeader("X-Crowdin-Language")) { meta->lang = Language::FromLanguageTag(hdr.GetHeader("X-Crowdin-Language").utf8_string()); crowdinSpecificLangUsed = true; } else { meta->lang = catalog.GetLanguage(); } const auto xliff = dynamic_cast(&catalog); if (xliff) { if (xliff->GetXPathValue("file/header/tool//@tool-id") == "crowdin") { try { meta->projectId = std::stoi(xliff->GetXPathValue("file/@*[local-name()='project-id']")); meta->fileId = std::stoi(xliff->GetXPathValue("file/@*[local-name()='id']")); meta->xliffRemoteFilename = xliff->GetXPathValue("file/@*[local-name()='original']"); return meta; } catch(...) { wxLogTrace("poedit.crowdin", "Missing or malformatted Crowdin project and/or file ID"); } } } if (hdr.HasHeader("X-Crowdin-Project-ID") && hdr.HasHeader("X-Crowdin-File-ID")) { meta->projectId = std::stoi(hdr.GetHeader("X-Crowdin-Project-ID").utf8_string()); meta->fileId = std::stoi(hdr.GetHeader("X-Crowdin-File-ID").utf8_string()); return meta; } // NB: sync this with CreateLocalFilename() static const std::wregex RE_CROWDIN_FILE(L"^Crowdin\\.([0-9]+)\\.([0-9]+)(\\.([a-zA-Z-]+))? .*"); auto name = fn.GetName().ToStdWstring(); std::wsmatch m; if (std::regex_match(name, m, RE_CROWDIN_FILE)) { meta->projectId = std::stoi(m.str(1)); meta->fileId = std::stoi(m.str(2)); if (!crowdinSpecificLangUsed && m[4].matched) meta->lang = Language::FromLanguageTag(str::to_utf8(m[4].str())); return meta; } return nullptr; } dispatch::future CrowdinClient::DownloadFile(const std::wstring& output_file, std::shared_ptr meta_) { auto meta = std::dynamic_pointer_cast(meta_); auto const forceExportAsXliff = !meta->xliffRemoteFilename.empty(); wxLogTrace("poedit.crowdin", "DownloadFile(project_id=%d, lang=%s, file_id=%d, file_extension=%s, output_file=%S)", meta->projectId, meta->lang.LanguageTag(), meta->fileId, meta->extension.c_str(), output_file.c_str()); wxString ext(meta->extension); ext.MakeLower(); const bool isXLIFFNative = (ext == "xliff" || ext == "xlf") && !forceExportAsXliff; const bool isXLIFFConverted = (!isXLIFFNative && ext != "po" && ext != "pot") || forceExportAsXliff; json options({ { "targetLanguageId", meta->lang.LanguageTag() }, // for XLIFF and PO files should be exported "as is" so set to `false` { "exportAsXliff", isXLIFFConverted }, // ensure that XLIFF files contain not-yet-translated entries, see https://github.com/vslavik/poedit/pull/648 { "skipUntranslatedStrings", false } }); return m_api->post( "projects/" + std::to_string(meta->projectId) + "/translations/builds/files/" + std::to_string(meta->fileId), json_data(options) ) .then([](json r) { wxLogTrace("poedit.crowdin", "Got file URL: %s", r.dump().c_str()); auto url = r.at("data").at("url").get(); return http_client::download_from_anywhere(url); }) .then([=](downloaded_file file) { wxString outfile(output_file); file.move_to(outfile); if (isXLIFFNative || isXLIFFConverted) PostprocessDownloadedXLIFF(outfile); }); } dispatch::future CrowdinClient::DownloadFile(const std::wstring& output_file, const ProjectInfo& project, const ProjectFile& file, const Language& lang) { auto internal = std::static_pointer_cast(file.internal); auto meta = std::make_shared(); meta->lang = lang; meta->projectId = std::get(project.internalID); meta->fileId = internal->id; meta->extension = wxFileName(internal->fileName, wxPATH_UNIX).GetExt().utf8_string(); meta->xliffRemoteFilename.clear(); // -> forceExportAsXliff=false return DownloadFile(output_file, meta); } dispatch::future CrowdinClient::UploadFile(const std::string& file_buffer, std::shared_ptr meta_) { auto meta = std::dynamic_pointer_cast(meta_); wxLogTrace("poedit.crowdin", "UploadFile(project_id=%d, lang=%s, file_id=%d, file_extension=%s)", meta->projectId, meta->lang.LanguageTag().c_str(), meta->fileId, meta->extension.c_str()); return m_api->post( "storages", octet_stream_data(file_buffer), { { "Crowdin-API-FileName", "crowdin." + meta->extension } } ) .then([this, meta] (json r) { wxLogTrace("poedit.crowdin", "File uploaded to temporary storage: %s", r.dump().c_str()); const auto storageId = r["data"]["id"]; return m_api->post( "projects/" + std::to_string(meta->projectId) + "/translations/" + meta->lang.LanguageTag(), json_data({ { "storageId", storageId }, { "fileId", meta->fileId }, { "importEqSuggestions", true } })) .then([](json r) { wxLogTrace("poedit.crowdin", "File uploaded: %s", r.dump().c_str()); }); }); } bool CrowdinClient::InitWithAuthToken(const crowdin_token& token) { wxLogTrace("poedit.crowdin", "Authorization: %s", token.encoded.c_str()); if (!token.is_valid()) return false; m_api = std::make_unique(*this, "https://" + token.domain + "crowdin.com/api/v2/"); m_api->set_authorization("Bearer " + token.encoded); return true; } bool CrowdinClient::IsSignedIn() const { return m_api || GetValidToken().is_valid(); } void CrowdinClient::SignInIfAuthorized() { auto token = GetValidToken(); if (!token.is_valid()) return; if (InitWithAuthToken(token)) { wxLogTrace("poedit.crowdin", "Token: %s", token.encoded.c_str()); } else { wxLogTrace("poedit.crowdin", "Token was invalid/expired"); } } CrowdinClient::crowdin_token CrowdinClient::GetValidToken() const { if (m_cachedAuthToken) return *m_cachedAuthToken; // Our tokens stored in keychain have the form of :, so not // only do we have to check for token's existence but also that its version // is current: std::string token; if (keytar::GetPassword("Crowdin", "", &token) && token.substr(0, 2) == "2:") { token = token.substr(2); } else { // 'token' is empty or invalid, make sure it is empty token.clear(); } crowdin_token ct(token); m_cachedAuthToken = std::make_unique(ct); return ct; } void CrowdinClient::SaveAndSetToken(const std::string& token) { crowdin_token ct(token); if (!ct.is_valid()) return; m_cachedAuthToken = std::make_unique(ct); if (InitWithAuthToken(ct)) keytar::AddPassword("Crowdin", "", "2:" + ct.encoded); } void CrowdinClient::SignOut() { m_api.reset(); m_cachedAuthToken.reset(); 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; } } poedit-3.6.3/src/colorscheme.h0000644000175100001660000001160415011674230011735 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2025 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_colorscheme_h #define Poedit_colorscheme_h #include #include #include /// Symbolic color names enum class Color : size_t { Label, SecondaryLabel, ListControlBg, ErrorText, ItemID, ItemFuzzy, ItemError, ItemContextFg, ItemContextBg, ItemContextBgHighlighted, TagContextFg, TagContextBg, TagSecondaryFg, TagSecondaryBg, TagErrorLineFg, TagErrorLineBg, TagWarningLineFg, TagWarningLineBg, ToolbarSeparator, SidebarSeparator, SidebarBlockSeparator, EditingSeparator, EditingThickSeparator, SidebarBackground, EditingBackground, FuzzySwitch, FuzzySwitchInactive, SyntaxLeadingWhitespaceBg, SyntaxEscapeFg, SyntaxEscapeBg, SyntaxMarkup, SyntaxFormat, AttentionWarningBackground, AttentionQuestionBackground, AttentionErrorBackground, TranslucentButton, Max }; /** Defines colors for various non-standard UI elements in one place. Includes platform-specific customizations as appropriate. */ class ColorScheme { public: /// Mode of the scheme to use (not used a lot for now) enum Mode { Light, Dark }; static const wxColour& Get(Color color, Mode type = GetAppMode()) { if (!s_data) s_data = std::make_unique(); auto& c = s_data->colors[static_cast(color)][type]; if (c.IsOk()) return c; else return c = DoGet(color, type); } static const wxColour& Get(Color color, wxWindow *win) { return Get(color, GetWindowMode(win)); } static wxColour GetBlendedOn(Color color, wxWindow *win, Color bgColor = Color::Max); /** Setup window for updating when color scheme changes. Will execute @a update closure initially and then every time system color scheme changes. This allows putting all color-configuration code into the closure without duplication. Should be called during window creation from ctor or Create(). */ template static void SetupWindowColors(wxWindow *win, Func&& setup) { // Initial setup of the window: setup(); // React to system color scheme changes: win->Bind(wxEVT_SYS_COLOUR_CHANGED, [=](wxSysColourChangedEvent& e) { e.Skip(); // Do everything as deferred to the next event loop cycle so that // macOS has a chance to update its information about current // appearance that we rely on: win->CallAfter([=] { // Invalidate global cached data. This is efficient if called // repeatedly, so we can do it for every affected window without // worrying about performance impact: InvalidateCachesIfNeeded(); // Update and redraw the window: setup(); win->Refresh(); }); }); } /// Simpler version of SetupWindowColors() for when redrawing is enough /// (e.g. native control or all colors fetched in OnPaint) static void RefreshOnChange(wxWindow *win) { SetupWindowColors(win, []{}); } /// Returns app-wide mode (dark, light) static Mode GetAppMode(); static Mode GetWindowMode(wxWindow *win); static void CleanUp(); private: struct Data { wxColour colors[static_cast(Color::Max)][2]; }; static wxColour DoGet(Color color, Mode type); static void InvalidateCachesIfNeeded(); static std::unique_ptr s_data; static bool s_appModeDetermined; static Mode s_appMode; }; #endif // Poedit_colorscheme_h poedit-3.6.3/src/http_client.cpp0000644000175100001660000001331515011674230012303 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2025 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 "utility.h" #include "str_helpers.h" #include #include #include #include #include #include #include #include class downloaded_file::impl { public: impl(std::string filename, const std::string& etag) { // filter out invalid characters in filenames std::replace_if(filename.begin(), filename.end(), boost::is_any_of("\\/:\"<>|?*"), '_'); m_fn = m_tmpdir.CreateFileName(!filename.empty() ? str::to_wx(filename) : "data"); m_etag = etag; } wxFileName filename() const { return m_fn; } std::string etag() const { return m_etag; } void move_to(const wxFileName& target) { TempOutputFileFor::ReplaceFile(m_fn.GetFullPath(), target.GetFullPath()); } private: TempDirectory m_tmpdir; wxFileName m_fn; std::string m_etag; }; downloaded_file::downloaded_file(const std::string& filename, const std::string& etag) : m_impl(new impl(filename, etag)) {} wxFileName downloaded_file::filename() const { return m_impl->filename(); } std::string downloaded_file::etag() const { return m_impl->etag(); } void downloaded_file::move_to(const wxFileName& target) { return m_impl->move_to(target); } downloaded_file::~downloaded_file() {} 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"; } void urlencoded_data::add_value(const std::string& name, const std::string& value) { if (!m_body.empty()) m_body += '&'; m_body += name; m_body += '='; m_body += http_client::url_encode(value); } json_data::json_data(const json& data) { m_body = data.dump(); } dispatch::future http_client::download_from_anywhere(const std::string& url, const headers& hdrs) { // http_client requires that all requests are relative to the provided prefix // (this is a C++REST SDK limitation enforced on some platforms), so we need // to determine the URL's prefix, create a transient http_client for it and // use it to perform the request. wxURI uri(url); const std::string prefix = str::to_utf8(uri.GetScheme() + "://" + uri.GetServer()); auto transient = std::make_shared(prefix); return transient->download(url, hdrs) .then([transient](downloaded_file file) { // The entire purpose of this otherwise-useless closure is to // capture the `transient` http_client instance and ensure it won't // be destroyed too early. // // It will only be released at this point. return file; }); } std::string http_client::url_encode(const std::string& s, int flags) { 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 if (c == ' ' && !(flags & encode_no_plus)) { escaped << '+'; } else if (c == '/' && (flags & encode_keep_slash)) { escaped << '/'; } else { escaped << '%' << std::setw(2) << int((unsigned char)c); } } return escaped.str(); } std::string http_client::url_encode(const std::wstring& s, int flags) { return url_encode(str::to_utf8(s), flags); } poedit-3.6.3/src/cloud_accounts.cpp0000644000175100001660000000421715011674230012774 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2025 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 "cloud_accounts.h" #ifdef HAVE_HTTP_CLIENT #include "crowdin_client.h" #include "localazy_client.h" CloudAccountClient& CloudAccountClient::Get(const std::string& service_name) { if (service_name == CrowdinClient::SERVICE_NAME) return CrowdinClient::Get(); if (service_name == LocalazyClient::SERVICE_NAME) return LocalazyClient::Get(); BOOST_THROW_EXCEPTION(std::logic_error("invalid cloud service name")); } void CloudAccountClient::CleanUp() { CrowdinClient::CleanUp(); LocalazyClient::CleanUp(); } std::shared_ptr CloudAccountClient::ExtractSyncMetadataIfAny(Catalog& catalog) { std::shared_ptr meta; meta = CrowdinClient::Get().ExtractSyncMetadata(catalog); if (meta) return meta; meta = LocalazyClient::Get().ExtractSyncMetadata(catalog); if (meta) return meta; return nullptr; } #endif // #ifdef HAVE_HTTP_CLIENT poedit-3.6.3/src/progress.h0000644000175100001660000000512315011674230011275 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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_progress_h #define Poedit_progress_h #include #include /** Accurate progress tracking for both simple and composed operations. Modelled after https://developer.apple.com/documentation/foundation/nsprogress */ class Progress : public std::enable_shared_from_this { public: Progress(int totalCount); Progress(int totalCount, Progress& parent, int parentCountTaken); Progress(size_t totalCount) : Progress(int(totalCount)) {} Progress(long totalCount) : Progress(int(totalCount)) {} Progress(const Progress&) = delete; ~Progress(); void message(const wxString& text); void increment(int count = 1); void set(int count); private: class impl; std::shared_ptr m_impl; static thread_local std::weak_ptr ms_threadImplicitParent; std::weak_ptr m_previousImplicitParent; void init(impl *implObj); friend class ProgressObserver; }; /** Base class for UI objects (window, progress bar) observing progress of some operation. */ class ProgressObserver { public: ProgressObserver() {} virtual ~ProgressObserver(); void attach(Progress& observedProgress); void detach(); virtual void update_message(const wxString& text) = 0; virtual void update_progress(double completedFraction) = 0; private: std::weak_ptr m_observedProgress; }; #endif // Poedit_progress_h poedit-3.6.3/src/propertiesdlg.h0000644000175100001660000000621515011674230012317 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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 _PROPERTIESDLG_H_ #define _PROPERTIESDLG_H_ #include #include #include #include "catalog.h" #include "languagectrl.h" class WXDLLIMPEXP_FWD_ADV wxEditableListBox; class WXDLLIMPEXP_FWD_CORE wxTextCtrl; class WXDLLIMPEXP_FWD_CORE wxRadioButton; class WXDLLIMPEXP_FWD_CORE wxCheckBox; class WXDLLIMPEXP_FWD_CORE wxComboBox; /// Dialog setting various catalog parameters. class PropertiesDialog : public wxDialog { public: PropertiesDialog(wxWindow *parent, CatalogPtr cat, bool fileExistsOnDisk, int initialPage = 0); ~PropertiesDialog(); /// Reads data from the catalog and fill dialog's controls. void TransferTo(const CatalogPtr& cat); /// Saves data from the dialog to the catalog. void TransferFrom(const CatalogPtr& cat); virtual bool Validate(); private: void DisableSourcesControls(); void OnLanguageChanged(wxCommandEvent& event); void OnLanguageValueChanged(); void OnPluralFormsDefault(wxCommandEvent& event); void OnGettextSettings(wxCommandEvent& event); struct PathsData; class BasePathCtrl; class PathsList; class SourcePathsList; class ExcludedPathsList; struct GettextSettings; class GettextSettingsDialog; wxTextCtrl *m_team, *m_project; LanguageCtrl *m_language; wxComboBox *m_charset, *m_sourceCodeCharset; wxRadioButton *m_pluralFormsDefault, *m_pluralFormsCustom; wxTextCtrl *m_pluralFormsExpr; BasePathCtrl *m_basePath; std::shared_ptr m_pathsData; PathsList *m_paths, *m_excludedPaths; wxEditableListBox *m_keywords; wxCheckBox *m_defaultKeywords; Language m_currentLanguageValue; std::shared_ptr m_gettextSettings; bool m_hasLang, m_hasPlurals; int m_validatedPlural, m_validatedLang; }; #endif // _PROPERTIESDLG_H_ poedit-3.6.3/src/attentionbar.h0000644000175100001660000001170415011674230012125 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2008-2025 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 _ATTENTIONBAR_H_ #define _ATTENTIONBAR_H_ #include #include #include #include class WXDLLIMPEXP_FWD_CORE wxCheckBox; class WXDLLIMPEXP_FWD_CORE wxStaticText; class WXDLLIMPEXP_FWD_CORE wxStaticBitmap; class WXDLLIMPEXP_FWD_CORE wxSizer; class AutoWrappingText; /// Message to be displayed in AttentionBar class AttentionMessage { public: /// Kind of the message enum Kind { Warning, Question, Error }; /// Information passed to the action callback struct ActionInfo { /// State of the (optional) checkbox bool checkbox; }; /** Ctor. @param id ID of the message. This ID must be globally unique within the application. It is used to record this message's status, i.e. if the user marked it as "don't show again" etc. @param kind Kind of the message. @param text Text of the message; this should be kept reasonably short. @see AddToBlacklist */ AttentionMessage(const wxString& id, Kind kind, const wxString& text) : m_id(id), m_kind(kind), m_text(text), m_explanation("") {} typedef std::function Callback; typedef std::function CallbackNoArgs; /** Adds an action button to the bar. By default, a close button is shown, this makes it possible to add custom buttons. @param label Short label for the action. @param callback Function to call when the button is clicked. */ void AddAction(const wxString& label, CallbackNoArgs callback) { AddActionWithInfo(label, [=](ActionInfo){ callback(); }); } /// Similarly to AddAction(), but uses callback that is passed ActionInfo void AddActionWithInfo(const wxString& label, Callback callback) { m_actions.push_back(std::make_pair(label, callback)); } /// Adds "Don't show again" action. void AddDontShowAgain(); /// Set additional explanatory text void SetExplanation(const wxString& txt) { m_explanation = txt; } /// Add checkbox to the message void AddCheckbox(const wxString& label) { m_checkbox = label; } wxString m_id; Kind m_kind; wxString m_text; wxString m_explanation; wxString m_checkbox; typedef std::pair Action; typedef std::vector Actions; Actions m_actions; /** Adds message with given ID to blacklist, i.e. it won't be shown ever again. */ static void AddToBlacklist(const wxString& id); /// Returns true if @a id is on the blacklist static bool IsBlacklisted(const wxString& id); /// Returns true if this message is on the blacklist bool IsBlacklisted() const { return IsBlacklisted(m_id); } }; /** Attention bar is a tooltip-colored bar displayed on top of the main window (a la Firefox or other browsers). */ class AttentionBar : public wxPanel { public: AttentionBar(wxWindow *parent); /** Shows the message (unless the user disallowed showing this particular message. */ void ShowMessage(const AttentionMessage& msg); /// Hides currently shown message void HideMessage(); private: void UpdateBgColor(); void OnClose(wxCommandEvent& event); void OnAction(wxCommandEvent& event); void OnPaint(wxPaintEvent& event); private: AttentionMessage::Kind m_currentKind = AttentionMessage::Question; #ifdef __WXMSW__ wxStaticBitmap *m_icon; #endif AutoWrappingText *m_label; AutoWrappingText *m_explanation; wxCheckBox *m_checkbox; wxSizer *m_buttons; typedef std::map ActionsMap; ActionsMap m_actions; DECLARE_EVENT_TABLE() }; #endif // _ATTENTIONBAR_H_ poedit-3.6.3/src/cloud_accounts_ui.cpp0000644000175100001660000006111415011674230013470 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2025 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 "cloud_accounts_ui.h" #ifdef HAVE_HTTP_CLIENT #include "configuration.h" #include "customcontrols.h" #include "edapp.h" #include "http_client.h" #include "languagectrl.h" #include "str_helpers.h" #include "unicode_helpers.h" #include "utility.h" #include "cloud_sync.h" #include "crowdin_client.h" #include "crowdin_gui.h" #include "localazy_client.h" #include "localazy_gui.h" #include #include #include #include #include #ifdef __WXMSW__ #include #endif namespace { inline std::vector GetSignedInAccounts() { std::vector all; if (CrowdinClient::Get().IsSignedIn()) all.push_back(&CrowdinClient::Get()); if (LocalazyClient::Get().IsSignedIn()) all.push_back(&LocalazyClient::Get()); return all; } } // anonymous namespace AccountsPanel::AccountsPanel(wxWindow *parent, int flags) : wxPanel(parent, wxID_ANY) { wxBoxSizer *wrappingSizer = new wxBoxSizer(wxVERTICAL); SetSizer(wrappingSizer); wxSizer *topsizer = new wxBoxSizer(wxVERTICAL); wrappingSizer->Add(topsizer, wxSizerFlags(1).Expand().Border(wxALL, PX(1))); topsizer->Add(new ExplanationLabel(this, _("Connect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.")), wxSizerFlags().Expand().Border(wxBOTTOM, PX(2))); auto learn = new LearnMoreLink(this, "https://poedit.net/cloud-sync", _("How does cloud sync work?")); topsizer->Add(learn, wxSizerFlags().Left()); topsizer->AddSpacer(2 * PXDefaultBorder); wxSizer *sizer = new wxBoxSizer(wxHORIZONTAL); topsizer->Add(sizer, wxSizerFlags(1).Expand()); m_list = new IconAndSubtitleListCtrl(this, _("Account"), MSW_OR_OTHER(wxBORDER_SIMPLE, wxBORDER_SUNKEN)); sizer->Add(m_list, wxSizerFlags().Expand().Border(wxRIGHT, PX(10))); m_panelsBook = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | MSW_OR_OTHER(wxBORDER_SIMPLE, wxBORDER_SUNKEN)); ColorScheme::SetupWindowColors(m_panelsBook, [=] { m_panelsBook->SetBackgroundColour(ColorScheme::Get(Color::ListControlBg)); }); sizer->Add(m_panelsBook, wxSizerFlags(1).Expand()); AddAccount("Crowdin", "AccountCrowdin", new CrowdinLoginPanel(m_panelsBook)); AddAccount("Localazy", "AccountLocalazy", new LocalazyLoginPanel(m_panelsBook)); m_list->SetMinSize(wxSize(PX(180), -1)); m_panelsBook->SetMinSize(wxSize(PX(320), -1)); if (flags & AddCancelButton) { auto cancel = new wxButton(this, wxID_CANCEL); topsizer->Add(cancel, wxSizerFlags().Right().Border(wxTOP, PX(16))); topsizer->AddSpacer(PX(2)); } SetMinSize(GetBestSize()); m_list->Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, &AccountsPanel::OnSelectAccount, this); } void AccountsPanel::InitializeAfterShown() { // NB: IsDescendant() is used to cover generic wxDataViewMainWindow, which doesn't correctly // implement HasFocus() in older wx versions. const bool hasFocus = this->IsDescendant(wxWindow::FindFocus()); // select 1st available signed-in service if we can and hide the intro panel: if (m_list->GetSelectedRow() == wxNOT_FOUND) { unsigned toSelect = 0; for (unsigned i = 0; i < m_panels.size(); i++) { if (m_panels[i]->IsSignedIn()) { toSelect = i; break; } } SelectAccount(toSelect); } // perform first-show initialization: for (auto& p: m_panels) p->InitializeAfterShown(); if (hasFocus) m_list->SetFocus(); } void AccountsPanel::AddAccount(const wxString& name, const wxString& iconId, AccountDetailPanel *panel) { auto pos = (unsigned)m_panels.size(); m_panels.push_back(panel); m_panelsBook->AddPage(panel, ""); m_list->AppendFormattedItem(wxArtProvider::GetBitmap(iconId), name, " ... "); panel->NotifyContentChanged = [=]{ wxString desc = panel->IsSignedIn() ? panel->GetLoginName() : _("(not signed in)"); m_list->UpdateFormattedItem(pos, name, desc); // select 1st available signed-in service if we can and hide the intro panel: if (m_list->GetSelectedRow() == wxNOT_FOUND && panel->IsSignedIn()) SelectAccount(pos); if (NotifyContentChanged) NotifyContentChanged(); }; panel->NotifyShouldBeRaised = [=]{ if (!m_list->IsShown()) { m_list->GetContainingSizer()->Show(m_list); Layout(); } SelectAccount(pos); if (NotifyShouldBeRaised) NotifyShouldBeRaised(); }; } bool AccountsPanel::IsSignedIn() const { for (auto& p: m_panels) { if (p->IsSignedIn()) return true; } return false; } void AccountsPanel::OnSelectAccount(wxDataViewEvent& event) { auto index = m_list->ItemToRow(event.GetItem()); if (index == wxNOT_FOUND || index >= (int)m_panels.size()) { m_panelsBook->SetSelection(0); return; } // NB: IsDescendant() is used to cover generic wxDataViewMainWindow, which doesn't correctly // implement HasFocus() in older wx versions. const bool listHasFocus = m_list->HasFocus() || m_list->IsDescendant(wxWindow::FindFocus()); SelectAccount(index); if (listHasFocus && wxWindow::FindFocus() != m_list) { m_list->SetFocus(); } } void AccountsPanel::SelectAccount(unsigned index) { m_list->SelectRow(index); m_panelsBook->ChangeSelection(index); } namespace { template void SortAlphabetically(std::vector& items, Key func) { unicode::Collator coll(unicode::Collator::case_insensitive); std::sort ( items.begin(), items.end(), [&coll,&func](const T& a, const T& b){ return coll(func(a), func(b)); } ); } inline wxString GetCacheDir() { return PoeditApp::GetCacheDir("Cloud"); } class CloudFileList : public wxDataViewListCtrl { public: using FileInfo = CloudAccountClient::ProjectFile; CloudFileList(wxWindow *parent) : wxDataViewListCtrl(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxDV_NO_HEADER | MSW_OR_OTHER(wxBORDER_SIMPLE, wxBORDER_SUNKEN)) { SetRowHeight(PX(36)); SetMinSize(wxSize(PX(500), PX(200))); #ifdef __WXOSX__ if (@available(macOS 11.0, *)) { NSScrollView *scrollView = (NSScrollView*)GetHandle(); NSTableView *tableView = (NSTableView*)[scrollView documentView]; tableView.style = NSTableViewStyleFullWidth; } #endif auto renderer = new MultilineTextRenderer(); auto column = new wxDataViewColumn(_("File"), renderer, 0, -1, wxALIGN_NOT, wxDATAVIEW_COL_RESIZABLE); AppendColumn(column, "string"); ColorScheme::SetupWindowColors(this, [=]{ RefreshFileList(); }); } void ClearFiles() { m_files.clear(); DeleteAllItems(); } void SetFiles(std::vector& files) { m_files = files; RefreshFileList(); } private: void RefreshFileList() { #ifdef __WXGTK__ auto secondaryFormatting = "alpha='50%'"; #else auto secondaryFormatting = wxString::Format("foreground='%s'", ColorScheme::Get(Color::SecondaryLabel).GetAsString(wxC2S_HTML_SYNTAX)); #endif DeleteAllItems(); for (auto& f : m_files) { wxString text = wxString::Format ( "%s\n%s", EscapeMarkup(f.title), secondaryFormatting, EscapeMarkup(f.description) ); wxVector data; data.push_back({text}); AppendItem(data); } } class MultilineTextRenderer : public wxDataViewTextRenderer { public: MultilineTextRenderer() : wxDataViewTextRenderer() { EnableMarkup(); } #ifdef __WXMSW__ bool Render(wxRect rect, wxDC *dc, int state) { int flags = 0; if ( state & wxDATAVIEW_CELL_SELECTED ) flags |= wxCONTROL_SELECTED; rect.height /= 2; for (auto& line: wxSplit(m_text, '\n')) { wxItemMarkupText markup(line); markup.Render(GetView(), *dc, rect, flags, GetEllipsizeMode()); rect.y += rect.height; } return true; } wxSize GetSize() const { if (m_text.empty()) return wxSize(wxDVC_DEFAULT_RENDERER_SIZE,wxDVC_DEFAULT_RENDERER_SIZE); auto size = wxDataViewTextRenderer::GetSize(); size.y *= 2; // approximation enough for our needs return size; } #endif // __WXMSW__ }; private: std::vector m_files; }; class CloudOpenDialog : public wxDialog { public: CloudOpenDialog(wxWindow *parent) : wxDialog(parent, wxID_ANY, _("Open cloud translation"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { auto topsizer = new wxBoxSizer(wxVERTICAL); topsizer->SetMinSize(PX(400), -1); auto loginSizer = new wxBoxSizer(wxHORIZONTAL); topsizer->AddSpacer(PX(8)); topsizer->Add(loginSizer, wxSizerFlags().Right().PXDoubleBorder(wxLEFT|wxRIGHT)); m_loginImage = new AvatarIcon(this, wxSize(PX(24), PX(24))); m_loginText = new SecondaryLabel(this, ""); loginSizer->Add(m_loginImage, wxSizerFlags().ReserveSpaceEvenIfHidden().Center()); loginSizer->Add(m_loginText, wxSizerFlags().ReserveSpaceEvenIfHidden().Center().Border(wxLEFT, PX(2))); auto manageLink = new LearnMoreLink(this, "", _("Manage accounts")); loginSizer->Add(manageLink, wxSizerFlags().Center()); m_loginText->Hide(); m_loginImage->Hide(); 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().CenterVertical().Right()); m_project = new wxChoice(this, wxID_ANY); pickers->Add(m_project, wxSizerFlags().Expand().CenterVertical()); pickers->Add(new wxStaticText(this, wxID_ANY, _("Language:")), wxSizerFlags().CenterVertical().Right()); m_language = new wxChoice(this, wxID_ANY); pickers->Add(m_language, wxSizerFlags().Expand().CenterVertical()); m_files = new CloudFileList(this); topsizer->Add(m_files, wxSizerFlags(1).Expand().PXDoubleBorderAll()); m_activity = new ActivityIndicator(this); topsizer->Add(m_activity, wxSizerFlags().Expand().PXDoubleBorder(wxLEFT|wxRIGHT)); topsizer->AddSpacer(MSW_OR_OTHER(PX(4), PX(2))); auto buttons = CreateButtonSizer(wxOK | wxCANCEL); auto ok = static_cast(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); m_project->Bind(wxEVT_CHOICE, [=](wxCommandEvent&){ OnProjectSelected(); }); ok->Bind(wxEVT_UPDATE_UI, &CloudOpenDialog::OnUpdateOK, this); ok->Bind(wxEVT_BUTTON, &CloudOpenDialog::OnOK, this); manageLink->Bind(wxEVT_HYPERLINK, &CloudOpenDialog::OnManageAccounts, this); ok->Disable(); EnableAllChoices(false); } // Load data. If project is not null, only show that project void LoadFromCloud(std::shared_ptr project) { if (project) { m_accounts = {&CloudAccountClient::GetFor(*project)}; m_projects = {*project}; InitializeProjects(); FetchLoginInfo(m_accounts[0]); } else { m_accounts = GetSignedInAccounts(); FetchProjects(); if (m_accounts.size() == 1) FetchLoginInfo(m_accounts[0]); } } // Show account management UI for logging in template void ManageAccounts(TFunc thenDo) { wxWindowPtr login(new TLoginDialog(this, MSW_OR_OTHER(_("Sign in to cloud account"), _("Sign in to Cloud Account")))); login->ShowWindowModalThenDo([login,thenDo](int retval) { thenDo(retval == wxID_OK); }); } wxString OutLocalFilename; private: void FetchLoginInfo(CloudAccountClient *account) { if (account == m_loginAccountShown) return; m_loginAccountShown = account; account->GetUserInfo() .then_on_window(this, [=](CloudAccountClient::UserInfo u) { if (account != m_loginAccountShown) return; // user changed selection since invocation, there's another pending async call wxString text = u.name; if (m_accounts.size() > 1) text += wxString::Format(" (%s)", account->GetServiceName()); text += L" • "; m_loginText->SetLabel(text); m_loginImage->SetUserName(u.name); if (u.avatarUrl.empty()) { m_loginImage->Show(); } else { http_client::download_from_anywhere(u.avatarUrl) .then_on_window(this, [=](downloaded_file f) { m_loginImage->LoadIcon(f.filename()); m_loginImage->Show(); }); } Layout(); m_loginText->Show(); }) .catch_all(m_activity->HandleError); } void EnableAllChoices(bool enable = true) { m_project->Enable(enable); m_language->Enable(enable); m_files->Enable(enable); } void FetchProjects() { m_activity->Start(); m_projects.clear(); m_projectsPendingLoad = m_accounts.size(); for (auto acc : m_accounts) { acc->GetUserProjects() .then_on_window(this, &CloudOpenDialog::OnFetchedProjects) .catch_all(m_activity->HandleError); } } void OnFetchedProjects(std::vector prjs) { m_projects.insert(m_projects.end(), prjs.begin(), prjs.end()); if (--m_projectsPendingLoad > 0) return; // wait for other loads to finish InitializeProjects(); } void InitializeProjects() { SortAlphabetically(m_projects, [](const auto& p){ return p.name; }); m_project->Clear(); m_project->Append(""); for (auto& p: m_projects) m_project->Append(p.name); m_project->Enable(!m_projects.empty()); if (m_projects.empty()) { m_activity->StopWithError(_("No translation projects listed in your account.")); return; } else { m_activity->Stop(); } if (m_projects.size() == 1) { m_project->SetSelection(1); OnProjectSelected(); } else { auto last = Config::CloudLastProject(); auto lasti = last.empty()? m_projects.end() : std::find_if(m_projects.begin(), m_projects.end(), [=](const auto& p){ return p.slug == last; }); if (lasti != m_projects.end()) { m_project->SetSelection(1 + int(lasti - m_projects.begin())); OnProjectSelected(); } } } void OnProjectSelected() { auto sel = m_project->GetSelection(); if (sel > 0) { m_currentProject = m_projects[sel-1]; auto account = AccountFor(m_currentProject); Config::CloudLastProject(m_currentProject.slug); m_activity->Start(); EnableAllChoices(false); m_files->ClearFiles(); account->GetProjectDetails(m_currentProject) .then_on_window(this, [=](CloudAccountClient::ProjectDetails prj){ this->OnFetchedProjectInfo(prj); }) .catch_all([=](dispatch::exception_ptr e){ m_activity->HandleError(e); EnableAllChoices(true); }); FetchLoginInfo(account); } } void OnFetchedProjectInfo(CloudAccountClient::ProjectDetails prj) { auto previouslySelectedLanguage = m_language->GetStringSelection(); // may be empty m_info = prj; SortAlphabetically(m_info.languages, [](const auto& l){ return l.DisplayName(); }); m_language->Clear(); m_language->Append(""); for (auto& i: m_info.languages) m_language->Append(i.DisplayName()); m_files->SetFiles(m_info.files); EnableAllChoices(); m_activity->Stop(); if (m_info.languages.size() == 1) { m_language->SetSelection(1); } else { if (previouslySelectedLanguage.empty() || !m_language->SetStringSelection(previouslySelectedLanguage)) { auto preferred = LanguageDialog::GetLastChosen(); if (preferred.IsValid()) { for (size_t i = 0; i < m_info.languages.size(); i++) { if (m_info.languages[i] == preferred) { m_language->SetSelection(1 + int(i)); break; } } } } } if (m_info.files.size() == 1) m_files->SelectRow(0); } void OnUpdateOK(wxUpdateUIEvent& e) { e.Enable(!m_activity->IsRunning() && m_project->GetSelection() > 0 && m_language->GetSelection() > 0 && m_files->GetSelectedRow() != wxNOT_FOUND); } void OnOK(wxCommandEvent&) { auto cloudFile = m_info.files[m_files->GetSelectedRow()]; auto cloudLang = m_info.languages[m_language->GetSelection() - 1]; LanguageDialog::SetLastChosen(cloudLang); OutLocalFilename = CreateLocalFilename(m_currentProject, cloudFile, cloudLang); m_activity->Start(_(L"Downloading latest translations…")); auto outfile = std::make_shared(OutLocalFilename); AccountFor(m_currentProject)->DownloadFile(str::to_wstring(outfile->FileName()), m_currentProject, cloudFile, cloudLang) .then_on_window(this, [=]{ outfile->Commit(); AcceptAndClose(); }) .catch_all(m_activity->HandleError); } void OnManageAccounts(wxHyperlinkEvent&) { ManageAccounts>([=](bool /*ok*/) { LoadFromCloud(nullptr); }); } wxString CreateLocalFilename(const CloudAccountClient::ProjectInfo& project, const CloudAccountClient::ProjectFile& file, const Language& lang) { auto account = AccountFor(project); auto filename = account->CreateLocalFilename(project, file, lang); wxFileName localFileName(wxString::Format("%s/%s/%s", GetCacheDir(), account->GetServiceName(), filename)); if (!wxFileName::DirExists(localFileName.GetPath())) wxFileName::Mkdir(localFileName.GetPath(), wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL); return localFileName.GetFullPath(); } // Find account based on x.service tag: template CloudAccountClient *AccountFor(const T& x) const { for (auto acc : m_accounts) { if (acc->GetServiceName() == x.service) return acc; } wxFAIL_MSG("logic error - no matching account"); return nullptr; } private: SecondaryLabel *m_loginText; AvatarIcon *m_loginImage; CloudAccountClient *m_loginAccountShown = nullptr; wxButton *m_ok; wxChoice *m_project, *m_language; CloudFileList *m_files; ActivityIndicator *m_activity; std::vector m_accounts; std::vector m_projects; size_t m_projectsPendingLoad = 0; CloudAccountClient::ProjectDetails m_info; CloudAccountClient::ProjectInfo m_currentProject; }; class CloudAccountSyncDestinationBase : public CloudSyncDestination { public: CloudAccountSyncDestinationBase(std::shared_ptr meta) : m_meta(meta), m_account(CloudAccountClient::GetFor(*meta)) { } wxString GetName() const override { return m_account.GetServiceName(); } dispatch::future Upload(CatalogPtr file) override { return m_account.UploadFile(file->SaveToBuffer(), m_meta); } protected: std::shared_ptr m_meta; CloudAccountClient& m_account; }; template class CloudAccountSyncDestination : public CloudAccountSyncDestinationBase { public: typedef CloudLoginDialog LoginDialog; using CloudAccountSyncDestinationBase::CloudAccountSyncDestinationBase; bool AuthIfNeeded(wxWindow* parent) override { if (m_account.IsSignedIn()) return true; // TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" LoginDialog dlg(parent, wxString::Format(_("Sign in to %s"), GetName())); return dlg.ShowModal() == wxID_OK; } }; } // anonymous namespace void CloudOpenFile(wxWindow *parent, std::shared_ptr project, std::function onDone) { wxWindowPtr dlg(new CloudOpenDialog(parent)); if (GetSignedInAccounts().empty()) { // FIXME: use some kind of wizard UI with going to next page instead? // We need to show this window-modal after the ShowModal() call below is // executed. Use CallAfter() to delay: dlg->CallAfter([=] { dlg->ManageAccounts>([dlg,project](bool ok) { if (ok) dlg->LoadFromCloud(project); else dlg->EndModal(wxID_CANCEL); }); }); } else { dlg->LoadFromCloud(project); } auto retval = dlg->ShowModal(); // FIXME: Use global modal-less dialog onDone(retval, dlg->OutLocalFilename); } bool ShouldSyncToCloudAutomatically(CatalogPtr catalog) { auto root = wxFileName::DirName(GetCacheDir()); root.MakeAbsolute(); wxFileName f(catalog->GetFileName()); f.MakeAbsolute(); return f.GetFullPath().starts_with(root.GetFullPath()); } void SetupCloudSyncIfShouldBeDoneAutomatically(CatalogPtr catalog) { if (!ShouldSyncToCloudAutomatically(catalog)) return; auto meta = CloudAccountClient::ExtractSyncMetadataIfAny(*catalog); if (!meta) return; if (meta->service == CrowdinClient::SERVICE_NAME) catalog->AttachCloudSync(std::make_shared>(meta)); else if (meta->service == LocalazyClient::SERVICE_NAME) catalog->AttachCloudSync(std::make_shared>(meta)); } #endif // #ifdef HAVE_HTTP_CLIENT poedit-3.6.3/src/text_control.cpp0000644000175100001660000006730415011674230012521 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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 "text_control.h" #include #include #ifdef __WXOSX__ #import #import #endif #ifdef __WXMSW__ #include #include #ifndef BOE_UNICODEBIDI #define BOE_UNICODEBIDI 0x0080 #endif #ifndef BOM_UNICODEBIDI #define BOM_UNICODEBIDI 0x0080 #endif #include #include _COM_SMARTPTR_TYPEDEF(ITextDocument, __uuidof(ITextDocument)); _COM_SMARTPTR_TYPEDEF(ITextRange, __uuidof(ITextRange)); _COM_SMARTPTR_TYPEDEF(ITextFont, __uuidof(ITextFont)); #endif #include "colorscheme.h" #include "spellchecking.h" #include "str_helpers.h" #include "unicode_helpers.h" namespace { #ifdef __WXOSX__ inline NSTextView *TextView(const wxTextCtrl *ctrl) { NSScrollView *scroll = (NSScrollView*)ctrl->GetHandle(); return [scroll documentView]; } class DisableAutomaticSubstitutions { public: DisableAutomaticSubstitutions(wxTextCtrl *ctrl) : m_view(TextView(ctrl)) { m_dash = m_view.automaticDashSubstitutionEnabled; m_quote = m_view.automaticQuoteSubstitutionEnabled; m_text = m_view.automaticTextReplacementEnabled; m_spelling = m_view.automaticSpellingCorrectionEnabled; m_view.automaticDashSubstitutionEnabled = NO; m_view.automaticQuoteSubstitutionEnabled = NO; m_view.automaticTextReplacementEnabled = NO; m_view.automaticSpellingCorrectionEnabled = NO; } ~DisableAutomaticSubstitutions() { m_view.automaticDashSubstitutionEnabled = m_dash; m_view.automaticQuoteSubstitutionEnabled = m_quote; m_view.automaticTextReplacementEnabled = m_text; m_view.automaticSpellingCorrectionEnabled = m_spelling; } private: NSTextView *m_view; BOOL m_quote, m_dash, m_text, m_spelling; }; #endif // __WXOSX__ #ifdef __WXMSW__ inline ITextDocumentPtr TextDocument(wxTextCtrl *ctrl) { IUnknown *ole_raw; ::SendMessage((HWND) ctrl->GetHWND(), EM_GETOLEINTERFACE, 0, (LPARAM) &ole_raw); IUnknownPtr ole(ole_raw, /*addRef=*/false); ITextDocumentPtr doc; if (ole) ole->QueryInterface(&doc); return doc; } // Use temporary styles (used e.g. by spellchecker too) for syntax highlighting. // See this nice summary of resources: // https://stackoverflow.com/questions/55366383/how-to-clear-temporary-tomapplytmp-formatting-from-a-richedit inline void SetTOMTmpStyle(const ITextDocumentPtr& doc, int from, int to, const wxTextAttr& attr) { ITextRangePtr range; doc->Range(from, to, &range); if (!range) return; ITextFontPtr font; range->GetFont(&font); if (!font) return; font->Reset(tomApplyTmp); auto fg = attr.GetTextColour(); auto bg = attr.GetBackgroundColour(); if (fg.IsOk()) font->SetForeColor(fg.GetPixel()); if (bg.IsOk()) font->SetBackColor(bg.GetPixel()); font->Reset(tomApplyNow); } // 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 UndoSuppressor { public: UndoSuppressor(CustomizedTextCtrl *ctrl) : m_doc(TextDocument(ctrl)) { if (m_doc) m_doc->Undo(tomSuspend, NULL); } ~UndoSuppressor() { if (m_doc) m_doc->Undo(tomResume, NULL); } private: ITextDocumentPtr m_doc; }; #endif #if defined(__WXOSX__) // Group undo operations into a single group class UndoGroup { public: UndoGroup(TranslationTextCtrl *ctrl) { m_undo = [TextView(ctrl) undoManager]; [m_undo beginUndoGrouping]; } ~UndoGroup() { [m_undo endUndoGrouping]; } private: NSUndoManager *m_undo; }; #elif defined(__WXMSW__) class UndoGroup { public: UndoGroup(TranslationTextCtrl *ctrl) : m_doc(TextDocument(ctrl)) { if (m_doc) m_doc->BeginEditCollection(); } ~UndoGroup() { if (m_doc) m_doc->EndEditCollection(); } private: ITextDocumentPtr m_doc; }; #elif defined(__WXGTK__) class UndoGroup { public: UndoGroup(TranslationTextCtrl *ctrl) : m_ctrl(ctrl) { m_ctrl->BeginUndoGrouping(); } ~UndoGroup() { m_ctrl->EndUndoGrouping(); } private: TranslationTextCtrl *m_ctrl; }; #endif } // anonymous namespace #ifdef __WXOSX__ // wxTextCtrl implementation on macOS uses insertText:, which is intended for // user input and performs some user input processing, such as autocorrections. // We need to avoid this, because Poedit's text control is filled with data // when moving in the list control: https://github.com/vslavik/poedit/issues/81 // Solve this by using a customized control with overridden DoSetValue(). CustomizedTextCtrl::CustomizedTextCtrl(wxWindow *parent, wxWindowID winid, long style) : wxTextCtrl(parent, winid, "", wxDefaultPosition, wxDefaultSize, style | ALWAYS_USED_STYLE) { auto text = TextView(this); [text setTextContainerInset:NSMakeSize(0,3)]; [text setRichText:NO]; 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:str::to_NS(value)]; SendTextUpdatedEventIfAllowed(); } wxString CustomizedTextCtrl::DoGetValueForRange(long from, long to) const { // wx's implementation is not sufficient and neither is [NSTextView string] // (which wx uses): they ignore formatting, which would be desirable, but // they also ignore embedded Unicode marks such as U+202A (Left-to-Right Embedding) // or U+202C (Pop Directional Format) that are essential for correct // handling of BiDi text. // // Instead, export the internal storage into plain-text, UTF-8 data and // load that into wxString. That shouldn't be too inefficient (wx does // UTF-8 roundtrip anyway) and preserves the marks; it is what TextEdit.app // does when saving text files. auto ctrl = TextView(this); NSTextStorage *text = [ctrl textStorage]; NSDictionary *attrs = @{ NSDocumentTypeDocumentAttribute: NSPlainTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding) }; const long length = (to == -1) ? [text length] : (to - from); NSData *data = [text dataFromRange:NSMakeRange(from, length) documentAttributes:attrs error:nil]; if (data && [data length] > 0) return wxString::FromUTF8((const char*)[data bytes], [data length]); else return wxString(); } wxString CustomizedTextCtrl::DoGetValue() const { auto s = DoGetValueForRange(0, -1); if (s.empty()) return wxTextCtrl::DoGetValue(); return s; } wxString CustomizedTextCtrl::GetRange(long from, long to) const { auto s = DoGetValueForRange(from, to); if (s.empty()) return wxTextCtrl::GetRange(from, to); return s; } #else // !__WXOSX__ CustomizedTextCtrl::CustomizedTextCtrl(wxWindow *parent, wxWindowID winid, long style) { wxTextCtrl::Create(parent, winid, "", wxDefaultPosition, wxDefaultSize, style | ALWAYS_USED_STYLE); wxTextAttr padding; padding.SetLeftIndent(9); padding.SetRightIndent(9); SetDefaultStyle(padding); Bind(wxEVT_TEXT_COPY, &CustomizedTextCtrl::OnCopy, this); Bind(wxEVT_TEXT_CUT, &CustomizedTextCtrl::OnCut, this); Bind(wxEVT_TEXT_PASTE, &CustomizedTextCtrl::OnPaste, this); #ifdef __WXGTK__ m_historyLocks = 0; if (!(style & wxTE_READONLY)) Bind(wxEVT_TEXT, &CustomizedTextCtrl::OnText, this); #endif } #endif // !__WXOSX__ #ifdef __WXMSW__ bool CustomizedTextCtrl::SetFont(const wxFont &font) { if (!wxTextCtrl::SetFont(font)) return false; auto style = GetDefaultStyle(); style.SetFont(font); SetDefaultStyle(style); return true; } WXDWORD CustomizedTextCtrl::MSWGetStyle(long style, WXDWORD *exstyle) const { auto msStyle = wxTextCtrl::MSWGetStyle(style, exstyle); // Disable always-shown scrollbars. The reason wx does this doesn't seem to // affect Poedit, so it should be safe: msStyle &= ~ES_DISABLENOSCROLL; return msStyle; } #endif // __WXMSW__ // 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 // override copy/cut/paste commands. Plus, the richedit control // (or wx's use of it) has a bug in it that causes it to copy wrong // data when copying from the same text control to itself after its // content was programmatically 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; GetSelection(&from, &to); if ( from == to ) return false; wxClipboardLocker lock; wxCHECK_MSG( !!lock, false, "failed to lock clipboard" ); auto text = DoCopyText(from, to); wxClipboard::Get()->SetData(new wxTextDataObject(text)); return true; } void CustomizedTextCtrl::OnCopy(wxClipboardTextEvent&) { if (!CanCopy()) return; DoCopy(); } void CustomizedTextCtrl::OnCut(wxClipboardTextEvent&) { if (!CanCut()) return; if (!DoCopy()) return; long from, to; GetSelection(&from, &to); Remove(from, to); } void CustomizedTextCtrl::OnPaste(wxClipboardTextEvent&) { if (!CanPaste()) return; wxClipboardLocker lock; wxCHECK_RET( !!lock, "failed to lock clipboard" ); wxTextDataObject d; wxClipboard::Get()->GetData(d); long from, to; GetSelection(&from, &to); 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) { #ifdef __WXOSX__ DisableAutomaticSubstitutions disableAuto(this); #endif Replace(from, to, s); } #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 } class AnyTranslatableTextCtrl::Attributes { public: #ifdef __WXOSX__ NSDictionary *m_attrSpace, *m_attrEscape, *m_attrMarkup, *m_attrPlaceholder; typedef NSDictionary* AttrType; Attributes(wxTextCtrl*) { m_attrSpace = @{NSBackgroundColorAttributeName: ColorScheme::Get(Color::SyntaxLeadingWhitespaceBg).OSXGetNSColor()}; m_attrEscape = @{NSBackgroundColorAttributeName: ColorScheme::Get(Color::SyntaxEscapeBg).OSXGetNSColor(), NSForegroundColorAttributeName: ColorScheme::Get(Color::SyntaxEscapeFg).OSXGetNSColor()}; m_attrMarkup = @{NSForegroundColorAttributeName: ColorScheme::Get(Color::SyntaxMarkup).OSXGetNSColor()}; m_attrPlaceholder = @{NSForegroundColorAttributeName: ColorScheme::Get(Color::SyntaxFormat).OSXGetNSColor()}; } #else // !__WXOSX__ wxTextAttr m_attrDefault, m_attrSpace, m_attrEscape, m_attrMarkup, m_attrPlaceholder; typedef wxTextAttr AttrType; Attributes(wxTextCtrl *ctrl) { m_attrDefault.SetBackgroundColour(ctrl->GetBackgroundColour()); m_attrDefault.SetTextColour(ctrl->GetForegroundColour()); m_attrSpace.SetBackgroundColour(ColorScheme::Get(Color::SyntaxLeadingWhitespaceBg)); m_attrEscape.SetBackgroundColour(ColorScheme::Get(Color::SyntaxEscapeBg)); m_attrEscape.SetTextColour(ColorScheme::Get(Color::SyntaxEscapeFg)); m_attrMarkup.SetTextColour(ColorScheme::Get(Color::SyntaxMarkup)); m_attrPlaceholder.SetTextColour(ColorScheme::Get(Color::SyntaxFormat)); } const AttrType& Default() const { return m_attrDefault; } #endif const AttrType& For(SyntaxHighlighter::TextKind kind) const { switch (kind) { case SyntaxHighlighter::LeadingWhitespace: return m_attrSpace; case SyntaxHighlighter::Escape: return m_attrEscape; case SyntaxHighlighter::Markup: return m_attrMarkup; case SyntaxHighlighter::Placeholder: return m_attrPlaceholder; } return m_attrSpace; // silence bogus warning } }; AnyTranslatableTextCtrl::AnyTranslatableTextCtrl(wxWindow *parent, wxWindowID winid, int style) : CustomizedTextCtrl(parent, winid, style) { ColorScheme::SetupWindowColors(this, [=] { m_attrs.reset(new Attributes(this)); HighlightText(); }); Bind(wxEVT_TEXT, [=](wxCommandEvent& e){ e.Skip(); HighlightText(); }); m_language = Language::English(); } AnyTranslatableTextCtrl::~AnyTranslatableTextCtrl() { } void AnyTranslatableTextCtrl::SetLanguage(const Language& lang) { m_language = lang; wxEventBlocker block(this, wxEVT_TEXT); #ifdef __WXOSX__ NSTextView *text = TextView(this); if (lang.IsRTL()) { [text setBaseWritingDirection:NSWritingDirectionRightToLeft]; if ([NSApp userInterfaceLayoutDirection] == NSUserInterfaceLayoutDirectionLeftToRight) { // extra nudge to make typing behave as expected: [text makeTextWritingDirectionRightToLeft:nil]; } } else { [text setBaseWritingDirection:NSWritingDirectionLeftToRight]; } #endif #ifdef __WXMSW__ BIDIOPTIONS bidi; ::ZeroMemory(&bidi, sizeof(bidi)); bidi.cbSize = sizeof(bidi); bidi.wMask = BOM_UNICODEBIDI; bidi.wEffects = lang.IsRTL() ? BOE_UNICODEBIDI : 0; ::SendMessage((HWND)GetHWND(), EM_SETBIDIOPTIONS, 0, (LPARAM) &bidi); ::SendMessage((HWND)GetHWND(), EM_SETEDITSTYLE, lang.IsRTL() ? SES_BIDI : 0, SES_BIDI); CHARFORMAT2 cf; ::ZeroMemory(&cf, sizeof(cf)); cf.cbSize = sizeof(cf); cf.dwMask = CFM_LCID; cf.lcid = LocaleNameToLCID(str::to_wstring(m_language.LanguageTag()).c_str(), 0); if (cf.lcid == 0) cf.lcid = LOCALE_USER_DEFAULT; ::SendMessage((HWND)GetHWND(), EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf); UpdateRTLStyle(); #endif } void AnyTranslatableTextCtrl::SetPlainText(const wxString& s) { SetValue(EscapePlainText(s)); } wxString AnyTranslatableTextCtrl::GetPlainText() const { return UnescapePlainText(bidi::strip_pointless_control_chars(GetValue(), m_language.Direction())); } wxString AnyTranslatableTextCtrl::EscapePlainText(const wxString& s) { // Note: the escapes used here should match with // BasicSyntaxHighlighter::Highlight() ones wxString s2; s2.reserve(s.length()); for (auto i = s.begin(); i != s.end(); ++i) { wchar_t c = *i; switch (c) { case '\0': s2 += "\\0"; break; case '\a': s2 += "\\a"; break; case '\b': s2 += "\\b"; break; case '\f': s2 += "\\f"; break; case '\n': s2 += "\\n\n"; break; case '\r': s2 += "\\r"; break; case '\t': s2 += "\\t"; break; case '\v': s2 += "\\v"; break; case '\\': { s2 += c; auto peek = i + 1; if ( peek != s.end() ) { switch ((wchar_t)*peek) { case '0': case '\0': case 'a': case '\a': case 'b': case '\b': case 'f': case '\f': case 'n': case '\n': case 'r': case '\r': case 't': case '\t': case 'v': case '\v': 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 '0': s2 += '\0'; break; case 'a': s2 += '\a'; break; case 'b': s2 += '\b'; break; case 'f': s2 += '\f'; 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 'r': s2 += '\r'; break; case 't': s2 += '\t'; break; case 'v': s2 += '\v'; break; case '\\': s2 += '\\'; break; default: s2 += '\\'; s2 += c; break; } } else { s2 += c0; } } return s2; } wxString AnyTranslatableTextCtrl::DoCopyText(long from, long to) { return UnescapePlainText(GetRange(from, to)); } void AnyTranslatableTextCtrl::DoPasteText(long from, long to, const wxString& s) { #ifdef __WXOSX__ DisableAutomaticSubstitutions disableAuto(this); #endif Replace(from, to, EscapePlainText(bidi::strip_pointless_control_chars(s, m_language.Direction()))); } void AnyTranslatableTextCtrl::DoSetValue(const wxString& value, int flags) { #ifdef __WXMSW__ wxWindowUpdateLocker dis(this); #endif CustomizedTextCtrl::DoSetValue(value, flags); #ifdef __WXMSW__ UpdateRTLStyle(); #endif HighlightText(); } #ifdef __WXMSW__ void AnyTranslatableTextCtrl::UpdateRTLStyle() { wxEventBlocker block(this, wxEVT_TEXT); UndoSuppressor blockUndo(this); PARAFORMAT2 pf; ::ZeroMemory(&pf, sizeof(pf)); pf.cbSize = sizeof(pf); pf.dwMask |= PFM_RTLPARA; if (m_language.IsRTL()) pf.wEffects |= PFE_RTLPARA; long start, end; GetSelection(&start, &end); SetSelection(-1, -1); ::SendMessage((HWND) GetHWND(), EM_SETPARAFORMAT, 0, (LPARAM) &pf); SetSelection(start, end); } #endif // !__WXMSW__ void AnyTranslatableTextCtrl::HighlightText() { #ifdef __WXOSX__ // See the comment in DoGetValueForRange() for why GetValue() returns subtly // different thing in RTL. // For highlighting, where we index into the string, we need to operate on the // exact same string addTemporaryAttributes:forCharacterRange: is expecting. auto traw = [TextView(this) string]; auto text = str::to_wstring(traw); if (text.length() != [traw length] ) { // Internally, NSString uses UTF-16 and all indexes including via NSLayoutManager // are in it. std::wstring is 32bit and uses UCS4/UTF-32, so simply using wstring // with syntax highlighter would break on any string with characters outside of BMP // (e.g. Emoji, see https://github.com/vslavik/poedit/issues/731). // // To fix this, we need to guarantee same indices in NSString/UTF-16 and wstring, // and a simple way to do it is to put UTF-16 data into wstring. That of course yields // incorrectly encoded string, but that doesn't matter ofr the purpose of syntax // highlighting, which is safely within BMP. // // Only do this in the rare non-BMP case for efficiency. std::u16string utf16 = boost::locale::conv::utf_to_utf([traw UTF8String]); text = std::wstring(utf16.begin(), utf16.end()); } NSRange fullRange = NSMakeRange(0, text.length()); NSLayoutManager *layout = [TextView(this) layoutManager]; [layout removeTemporaryAttribute:NSForegroundColorAttributeName forCharacterRange:fullRange]; [layout removeTemporaryAttribute:NSBackgroundColorAttributeName forCharacterRange:fullRange]; if (m_syntax) { m_syntax->Highlight(text, [=](int a, int b, SyntaxHighlighter::TextKind kind){ [layout addTemporaryAttributes:m_attrs->For(kind) forCharacterRange:NSMakeRange(a, b-a)]; }); } #else // !__WXOSX__ auto text = GetValue().ToStdWstring(); wxEventBlocker block(this, wxEVT_TEXT); auto deflt = m_attrs->Default(); deflt.SetFont(GetFont()); #ifdef __WXMSW__ UndoSuppressor blockUndo(this); auto doc = TextDocument(this); if (IsEditable() && doc) { // If possible, use TOM interface to apply temporary styles, which is much // more efficient. Unfortunately, it's not possible to do with read-only controls. SetTOMTmpStyle(doc, 0, text.length(), deflt); if (m_syntax) { m_syntax->Highlight(text, [=](int a, int b, SyntaxHighlighter::TextKind kind){ SetTOMTmpStyle(doc, a, b, m_attrs->For(kind)); }); } } else #endif // __WXMSW___ { SetStyle(0, text.length(), deflt); if (m_syntax) { m_syntax->Highlight(text, [=](int a, int b, SyntaxHighlighter::TextKind kind){ SetStyle(a, b, m_attrs->For(kind)); }); } } #endif // __WXOSX__/!__WXOSX__ } SourceTextCtrl::SourceTextCtrl(wxWindow *parent, wxWindowID winid) : AnyTranslatableTextCtrl(parent, winid, wxTE_READONLY | wxNO_BORDER) { SetLanguage(Language::English()); } TranslationTextCtrl::TranslationTextCtrl(wxWindow *parent, wxWindowID winid) : AnyTranslatableTextCtrl(parent, winid, wxNO_BORDER), m_lastKeyWasReturn(false) { #ifdef __WXMSW__ PrepareTextCtrlForSpellchecker(this); #endif #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.empty() || (range.Last() == '\n' && range != "\\n\n")) { #ifdef __WXGTK__ // GTK+ doesn't like modifying the content in the "changed" signal: CallAfter([=]{ Replace(pos - 1, pos, "\\n\n"); HighlightText(); }); #else Replace(pos - 1, pos, "\\n\n"); #endif } } e.Skip(); } #ifdef __WXOSX__ void TranslationTextCtrl::DoSetValue(const wxString& value, int flags) { AnyTranslatableTextCtrl::DoSetValue(value, flags); NSUndoManager *undo = [TextView(this) undoManager]; [undo removeAllActions]; } #endif #ifdef __WXMSW__ void TranslationTextCtrl::DoEnable(bool enable) { wxEventBlocker block(this, wxEVT_TEXT); AnyTranslatableTextCtrl::DoEnable(enable); } #endif void TranslationTextCtrl::SetPlainTextUserWritten(const wxString& value) { UndoGroup undo(this); #ifdef __WXOSX__ DisableAutomaticSubstitutions disableAuto(this); #endif SelectAll(); WriteText(EscapePlainText(value)); SetInsertionPointEnd(); HighlightText(); } poedit-3.6.3/src/catalog_po.h0000644000175100001660000002727015011674230011550 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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_catalog_po_h #define Poedit_catalog_po_h #include "catalog.h" class POCatalogItem; class POCatalog; typedef std::shared_ptr POCatalogItemPtr; typedef std::shared_ptr POCatalogPtr; class POCatalogItem : public CatalogItem { public: POCatalogItem() {} POCatalogItem(const CatalogItem&) = delete; wxArrayString GetReferences() const override; protected: const wxArrayString& GetRawReferences() const { return m_references; } void SetRawReferences(const wxArrayString& ref) { m_references = ref; } void UpdateInternalRepresentation() override {} friend class POLoadParser; friend class POCatalog; protected: wxArrayString m_references; }; /** 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). This class is mostly internal, used by Catalog to store data. */ class POCatalogDeletedData { public: /// Ctor. POCatalogDeletedData() : m_lineNum(0) {} POCatalogDeletedData(const wxArrayString& deletedLines) : m_deletedLines(deletedLines), m_lineNum(0) {} POCatalogDeletedData(const POCatalogDeletedData& dt) : m_deletedLines(dt.m_deletedLines), m_references(dt.m_references), m_extractedComments(dt.m_extractedComments), m_flags(dt.m_flags), m_comment(dt.m_comment), m_lineNum(dt.m_lineNum) {} /// Returns the deleted lines. const wxArrayString& GetDeletedLines() const { return m_deletedLines; } /// Returns references (#:) lines for the entry const wxArrayString& GetRawReferences() const { return m_references; } /// Returns comment added by the translator to this entry const wxString& GetComment() const { return m_comment; } /// Returns array of all auto comments. const wxArrayString& GetExtractedComments() const { return m_extractedComments; } /// Convenience function: does this entry has a comment? bool HasComment() const { return !m_comment.empty(); } /// Adds new reference to the entry (used by SourceDigger). void AddReference(const wxString& ref) { if (m_references.Index(ref) == wxNOT_FOUND) m_references.Add(ref); } /// Sets the string. void SetDeletedLines(const wxArrayString& a) { m_deletedLines = a; } /// Sets the comment. void SetComment(const wxString& c) { m_comment = c; } /** Sets gettext flags directly in string format. It may be either empty string or "#, fuzzy", "#, c-format", "#, fuzzy, c-format" or others (not understood by Poedit). */ void SetFlags(const wxString& flags) {m_flags = flags;}; /// Gets gettext flags. \see SetFlags wxString GetFlags() const {return m_flags;}; /// Sets the number of the line this entry occurs on. void SetLineNumber(int line) { m_lineNum = line; } /// Get line number of this entry. int GetLineNumber() const { return m_lineNum; } /// Adds new extracted comments (#. ) void AddExtractedComments(const wxString& com) { m_extractedComments.Add(com); } private: wxArrayString m_deletedLines; wxArrayString m_references, m_extractedComments; wxString m_flags; wxString m_comment; int m_lineNum; }; typedef std::vector POCatalogDeletedDataArray; class POCatalog : public Catalog { protected: /// Default ctor. Creates empty catalog, you have to call Load. explicit POCatalog(Type type); /// Ctor that loads the catalog from \a po_file with Load. /// \a flags is CreationFlags combination. explicit POCatalog(const wxString& po_file, int flags = 0); void PostCreation() override; public: // Common wrapping values static const int NO_WRAPPING = -1; static const int DEFAULT_WRAPPING = -2; static POCatalogPtr Create(Type type) { return std::dynamic_pointer_cast(Catalog::Create(type)); } static POCatalogPtr Create(const wxString& filename, int flags = 0) { return std::dynamic_pointer_cast(Catalog::Create(filename, flags)); } ~POCatalog() {} bool HasCapability(Cap cap) const override; static bool CanLoadFile(const wxString& extension); wxString GetPreferredExtension() const override; unsigned GetPluralFormsCount() const override; void SetLanguage(Language lang) override; bool Save(const wxString& po_file, bool save_mo, ValidationResults& validation_results, CompilationStatus& mo_compilation_status) override; std::string SaveToBuffer() override; ValidationResults Validate(const wxString& fileWithSameContent) override; /// Compiles the catalog into binary MO file. bool CompileToMO(const wxString& mo_file, ValidationResults& validation_results, CompilationStatus& mo_compilation_status); /// Returns true if Plural-Forms header doesn't match plural forms /// usage in catalog items bool HasWrongPluralFormsCount() const; /// Does this catalog have any items with plural forms? bool HasPluralItems() const { return m_hasPluralItems; } /// Detect a particular common breakage of catalogs. bool HasDuplicateItems() const; /// Fixes a common invalid kind of entries, when msgids aren't unique. bool FixDuplicateItems(); bool HasDeletedItems() const override { return !m_deletedItems.empty(); } void RemoveDeletedItems() override { m_deletedItems.clear(); } /// Updates the catalog from POT file. bool UpdateFromPOT(const wxString& pot_file, bool replace_header = false); bool UpdateFromPOT(POCatalogPtr pot, bool replace_header = false); static POCatalogPtr CreateFromPOT(POCatalogPtr pot); protected: /** Loads catalog from .po file. If file named po_file ".poedit" (e.g. "cs.po.poedit") exists, this function loads additional information from it. .po.poedit file contains parts of catalog header data that are not part of standard .po format, namely SearchPaths, Keywords, BasePath and Language. @param flags CreationFlags combination. */ void Load(const wxString& po_file, int flags = 0); void Clear(); /// Adds entry to the catalog (the catalog will take ownership of /// the object). void AddItem(const POCatalogItemPtr& data) { m_items.push_back(data); } /// Adds entry to the catalog (the catalog will take ownership of /// the object). void AddDeletedItem(const POCatalogDeletedData& data) { m_deletedItems.push_back(data); } protected: /// Fix commonly encountered fixable problems with loaded files void FixupCommonIssues(); void ValidateWithMsgfmt(ValidationResults& res, const wxString& po_file); bool DoSaveOnly(const wxString& po_file, 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 translations, \a refcat is reference catalog created by Update().) \return true if the merge was successful, false otherwise. Note that if it returns false, the catalog was \em not modified! */ bool Merge(const POCatalogPtr& refcat); protected: POCatalogDeletedDataArray m_deletedItems; wxTextFileType m_fileCRLF; int m_fileWrappingWidth; bool m_hasPluralItems = false; friend class POLoadParser; friend class Catalog; }; /// Internal class - used for parsing of po files. class POCatalogParser { public: POCatalogParser(wxTextFile *f) : m_textFile(f), m_detectedLineWidth(0), m_detectedWrappedLines(false), m_lastLineHardWrapped(true), m_previousLineHardWrapped(true), m_ignoreHeader(false), m_ignoreTranslations(false) {} virtual ~POCatalogParser() {} /// Tell the parser to ignore header entries when processing void IgnoreHeader(bool ignore) { m_ignoreHeader = ignore; } /// Tell the parser to treat input as POT and ignore translations void IgnoreTranslations(bool ignore) { m_ignoreTranslations = ignore; } /** Parses the entire file, calls OnEntry each time new msgid/msgstr pair is found. @return false if parsing failed, true otherwise */ bool Parse(); int GetWrappingWidth() const; protected: // Read one line from file, remove all \r and \n characters, ignore empty lines: wxString ReadTextLine(); void PossibleWrappedLine() { if (!m_previousLineHardWrapped) m_detectedWrappedLines = true; } /** Called when new entry was parsed. Parsing continues if returned value is true and is cancelled if it is false. */ virtual bool OnEntry(const wxString& msgid, const wxString& msgid_plural, bool has_plural, bool has_context, const wxString& context, const wxArrayString& mtranslations, const wxString& flags, const wxArrayString& references, const wxString& comment, const wxArrayString& extractedComments, const wxArrayString& msgid_old, unsigned lineNumber) = 0; /** Called when new deleted entry was parsed. Parsing continues if returned value is true and is cancelled if it is false. Defaults to an empty implementation. */ virtual bool OnDeletedEntry(const wxArrayString& /*deletedLines*/, const wxString& /*flags*/, const wxArrayString& /*references*/, const wxString& /*comment*/, const wxArrayString& /*extractedComments*/, unsigned /*lineNumber*/) { return true; } virtual void OnIgnoredEntry() {} /// Textfile being parsed. wxTextFile *m_textFile; int m_detectedLineWidth; bool m_detectedWrappedLines; bool m_lastLineHardWrapped, m_previousLineHardWrapped; /// Whether the header should be parsed or not bool m_ignoreHeader; /// Whether the translations should be ignored (as if it was a POT) bool m_ignoreTranslations; }; #endif // Poedit_catalog_po_h poedit-3.6.3/src/titleless_window.h0000644000175100001660000000703315011674230013032 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2020-2025 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_titleless_window_h #define Poedit_titleless_window_h #include #include class WXDLLIMPEXP_FWD_CORE wxButton; /** Window without a titlebar. Used for windows with redundant titlebar (welcome, progress etc.). On Windows, only shown on modern versions (Windows 10) and when no accessibility reader is present, to avoid degrading usability. */ template class TitlelessWindowBase : public T { public: TitlelessWindowBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style, const wxString& name); #ifdef __WXMSW__ bool SetBackgroundColour(const wxColour& clr) override; #endif protected: /// Returns close button if it is presnet; may be null wxButton* GetCloseButton() const { return m_closeButton; } bool Layout() override; #ifdef __WXMSW__ wxPoint GetClientAreaOrigin() const override; void DoGetClientSize(int *width, int *height) const override; WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) override; void OnPaintBackground(wxPaintEvent& event); private: static bool ShouldRemoveChrome(); bool m_isTitleless = false; #endif // __WXMSW__ private: wxButton* m_closeButton = nullptr; typedef T BaseClass; }; class TitlelessWindow : public TitlelessWindowBase { public: TitlelessWindow(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr) : TitlelessWindowBase(parent, id, title, pos, size, style, name) {} }; class TitlelessDialog : public TitlelessWindowBase { public: TitlelessDialog(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxDialogNameStr) : TitlelessWindowBase(parent, id, title, pos, size, style, name) {} }; #endif // Poedit_titleless_window_h poedit-3.6.3/src/languagectrl.cpp0000644000175100001660000002001215011674230012426 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2025 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 "languagectrl.h" #include "str_helpers.h" #include "hidpi.h" #include #include #include #ifdef __WXOSX__ @interface LanguagesDataSource : NSObject @property const wxArrayString *data; @property NSArray* items; @end @implementation LanguagesDataSource - (id)initWithItems:(const wxArrayString*)items { self = [super init]; if (self) { self.data = items; NSMutableArray *a = [NSMutableArray arrayWithCapacity:items->size()]; for (auto i: *items) [a addObject:str::to_NS(i)]; self.items = a; } return self; } - (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox; { #pragma unused(aComboBox) return [self.items count]; } - (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index; { #pragma unused(aComboBox) if (index >=0 && index < self.data->size()) return [self.items objectAtIndex:index]; else return @""; } - (NSUInteger)comboBox:(NSComboBox *)aComboBox indexOfItemWithStringValue:(NSString *)string; { #pragma unused(aComboBox) auto found = self.data->Index(str::to_wx(string), false/*case sensitive*/); return (found != wxNOT_FOUND) ? found : NSNotFound; } - (NSString *)comboBox:(NSComboBox *)aComboBox completedString:(NSString *)string; { #pragma unused(aComboBox) for (NSString *item in self.items) { if ([item compare:string options:NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch range:NSMakeRange(0, std::min([item length], [string length])) locale:[NSLocale currentLocale]] == NSOrderedSame) { return item; } } return nil; } @end struct LanguageCtrl::impl { impl(const wxArrayString& items_) { items = &items_; dataSource = [[LanguagesDataSource alloc] initWithItems:items]; } const wxArrayString *items; LanguagesDataSource *dataSource; }; int LanguageCtrl::FindString(const wxString& s, bool bCase) const { return m_impl->items->Index(s, bCase); } wxString LanguageCtrl::GetString(unsigned int n) const { return m_impl->items->Item(n); } #endif // __WXOSX__ IMPLEMENT_DYNAMIC_CLASS(LanguageCtrl, wxComboBox) LanguageCtrl::LanguageCtrl() : m_inited(false) { } LanguageCtrl::LanguageCtrl(wxWindow *parent, wxWindowID winid, Language lang) : wxComboBox(parent, winid, "", wxDefaultPosition, wxSize(PX(220), -1)) { Init(lang); } void LanguageCtrl::Init(Language lang) { // TRANSLATORS: placeholder/hint in language controls SetHint(_("Language name or code")); // wxGTK must have the value set before autocompletion (but also after it // below) to avoid annoying popups in some (hard to determine) cases. #ifdef __WXGTK__ if (lang.IsValid()) SetValue(lang.FormatForRoundtrip()); #endif static wxArrayString choices; if (choices.empty()) { for (auto x: Language::AllFormattedNames()) choices.push_back(x); } #ifdef __WXOSX__ m_impl.reset(new impl(choices)); NSComboBox *cb = (NSComboBox*) GetHandle(); cb.completes = YES; cb.usesDataSource = YES; cb.dataSource = m_impl->dataSource; #else Set(choices); AutoComplete(choices); #endif m_inited = true; if (lang.IsValid()) SetValue(lang.FormatForRoundtrip()); Bind(wxEVT_KILL_FOCUS, [=](wxFocusEvent&){ NormalizeValue(); }); } void LanguageCtrl::SetLang(const Language& lang) { if (!m_inited) Init(lang); else SetValue(lang.FormatForRoundtrip()); SetToolTip(lang.DisplayName() + "\n" + lang.LanguageTag()); } Language LanguageCtrl::GetLang() const { return Language::TryParse(GetValue().Strip(wxString::both).ToStdWstring()); } void LanguageCtrl::NormalizeValue() { auto lang = GetLang(); if (lang.IsValid()) SetLang(lang); } #ifdef __WXMSW__ wxSize LanguageCtrl::DoGetBestSize() const { // wxComboBox's implementation is insanely slow, at least on MSW. // Hardcode a value instead, it doesn't matter for Poedit's use anyway, // this control's best size is not the determining factor. return GetSizeFromTextSize(100); } #endif LanguageDialog::LanguageDialog(wxWindow *parent) : wxDialog(parent, wxID_ANY, _("Translation Language")), m_validatedLang(-1) { auto lang = GetLastChosen(); auto sizer = new wxBoxSizer(wxVERTICAL); auto label = new wxStaticText(this, wxID_ANY, _("Language of the translation:")); m_language = new LanguageCtrl(this, wxID_ANY, lang); m_language->SetMinSize(wxSize(PX(300),-1)); auto buttons = CreateButtonSizer(wxOK | wxCANCEL); #ifdef __WXOSX__ sizer->AddSpacer(PX(10)); sizer->Add(label, wxSizerFlags().PXBorderAll()); sizer->Add(m_language, wxSizerFlags().Expand().PXDoubleBorder(wxLEFT|wxRIGHT)); sizer->Add(buttons, wxSizerFlags().Expand()); #else sizer->AddSpacer(PX(10)); sizer->Add(label, wxSizerFlags().PXDoubleBorder(wxLEFT|wxRIGHT)); sizer->Add(m_language, wxSizerFlags().Expand().PXDoubleBorder(wxLEFT|wxRIGHT)); sizer->Add(buttons, wxSizerFlags().Expand().PXBorderAll()); #endif m_language->Bind(wxEVT_TEXT, [=](wxCommandEvent& e){ m_validatedLang = -1; e.Skip(); }); m_language->Bind(wxEVT_COMBOBOX, [=](wxCommandEvent& e){ m_validatedLang = -1; e.Skip(); }); Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){ e.Enable(Validate()); }, wxID_OK); SetSizerAndFit(sizer); CenterOnParent(); m_language->SetFocus(); #ifdef __WXOSX__ // Workaround wx bug: http://trac.wxwidgets.org/ticket/9521 m_language->SelectAll(); // Workaround broken Enter handling: Bind(wxEVT_CHAR_HOOK, [=](wxKeyEvent& e){ if (e.GetKeyCode() == WXK_RETURN) { auto button = GetDefaultItem(); wxCommandEvent event(wxEVT_BUTTON, button->GetId()); event.SetEventObject(button); button->ProcessWindowEvent(event); } else { e.Skip(); } }); #endif // __WXOSX__ } bool LanguageDialog::Validate() { if (m_validatedLang == -1) { m_validatedLang = m_language->IsValid() ? 1 : 0; } return m_validatedLang == 1; } void LanguageDialog::EndModal(int retval) { if (retval == wxID_OK) { SetLastChosen(GetLang()); } wxDialog::EndModal(retval); } void LanguageDialog::SetLang(const Language& lang) { m_validatedLang = -1; m_language->SetLang(lang); } Language LanguageDialog::GetLastChosen() { wxString langcode = wxConfigBase::Get()->Read("/last_translation_lang", ""); Language lang; if (!langcode.empty()) lang = Language::TryParse(langcode.ToStdWstring()); return lang; } void LanguageDialog::SetLastChosen(Language lang) { wxConfigBase::Get()->Write("/last_translation_lang", lang.Code().c_str()); } poedit-3.6.3/src/customcontrols.cpp0000644000175100001660000005043115011674230013064 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2025 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 "customcontrols.h" #include "concurrency.h" #include "errors.h" #include "hidpi.h" #include "utility.h" #include "str_helpers.h" #include "unicode_helpers.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __WXMSW__ #include #endif #ifdef __WXGTK__ #include #endif #include #include namespace { wxString WrapTextAtWidth(const wxString& text_, int width, Language lang, wxWindow *wnd) { if (text_.empty()) return text_; #ifdef BIDI_NEEDS_DIRECTION_ON_EACH_LINE wchar_t directionMark = 0; if (bidi::is_direction_mark(*text_.begin())) directionMark = *text_.begin(); #endif auto text = str::to_icu(text_); static std::map> lang_iters; std::shared_ptr iter; auto lang_name = lang.IcuLocaleName(); auto li = lang_iters.find(lang_name); if (li == lang_iters.end()) { iter.reset(new unicode::BreakIterator(UBRK_LINE, lang)); lang_iters[lang_name] = iter; } else { iter = li->second; } iter->set_text(text); wxString out; out.reserve(text_.length() + 10); int32_t lineStart = 0; wxString previousSubstr; for (int32_t pos = iter->begin(); pos != iter->end(); pos = iter->next()) { if (pos == lineStart) continue; auto substr = str::to_wx(text + lineStart, pos - lineStart); substr.Trim(); if (wnd->GetTextExtent(substr).x > width) { auto previousPos = iter->previous(); if (previousPos == lineStart || previousPos == iter->end()) { // line is too large but we can't break it, so have no choice but not to wrap out += substr; lineStart = pos; } else { // need to wrap at previous linebreak position out += previousSubstr; lineStart = previousPos; } out += '\n'; #ifdef BIDI_NEEDS_DIRECTION_ON_EACH_LINE if (directionMark) out += directionMark; #endif previousSubstr.clear(); } else if (pos > 0 && text[pos-1] == '\n') // forced line feed { out += substr; out += '\n'; #ifdef BIDI_NEEDS_DIRECTION_ON_EACH_LINE if (directionMark) out += directionMark; #endif lineStart = pos; previousSubstr.clear(); } else { previousSubstr = substr; } } if (!previousSubstr.empty()) { out += previousSubstr; } out.Trim(); return out; } } // anonymous namespace HeadingLabel::HeadingLabel(wxWindow *parent, const wxString& label) : wxStaticText(parent, wxID_ANY, label) { #ifdef __WXGTK3__ // This is needed to avoid missizing text with bold font. See // https://github.com/vslavik/poedit/pull/411 and https://trac.wxwidgets.org/ticket/16088 SetLabelMarkup("" + EscapeMarkup(label) + ""); #else SetFont(GetFont().Bold()); #endif } AutoWrappingText::AutoWrappingText(wxWindow *parent, wxWindowID winid, const wxString& label) : wxStaticText(parent, winid, "", wxDefaultPosition, wxDefaultSize, wxST_NO_AUTORESIZE), m_text(label), m_wrapWidth(-1) { SetMinSize(wxDefaultSize); Bind(wxEVT_SIZE, &AutoWrappingText::OnSize, this); } void AutoWrappingText::SetLabel(const wxString& label) { wxString escapedLabel(label); // Escape '&' to avoid wxStaticText treating it // as if to mark an accelerator key (Windows), // or not showing it at all (Mac). escapedLabel.Replace("&", "&&"); wxStaticText::SetLabel(escapedLabel); } void AutoWrappingText::SetLanguage(Language lang) { m_language = lang; SetAlignment(m_language.Direction()); } void AutoWrappingText::SetAlignment(TextDirection dir) { // a quirk of wx API: if the current locale is RTL, the meaning of L and R is reversed // for alignments bool isRTL = (dir == TextDirection::RTL); if (GetLayoutDirection() == wxLayout_RightToLeft) isRTL = !isRTL; const int align = isRTL ? wxALIGN_RIGHT : wxALIGN_LEFT; if (HasFlag(align)) return; SetWindowStyleFlag(wxST_NO_AUTORESIZE | align); } void AutoWrappingText::SetAndWrapLabel(const wxString& label) { m_text = bidi::platform_mark_direction(label); if (!m_language.IsValid()) SetAlignment(bidi::get_base_direction(m_text)); m_wrapWidth = -1; // force rewrap RewrapForWidth(GetSize().x); } bool AutoWrappingText::InformFirstDirection(int direction, int size, int /*availableOtherDir*/) { if (size > 0 && direction == wxHORIZONTAL) return RewrapForWidth(size); return false; } #ifdef __WXOSX__ wxSize AutoWrappingText::DoGetBestSize() const { auto sz = wxStaticText::DoGetBestSize(); // AppKit's intristicContentSize calculation is sometimes subtly wrong in our use case, // hiding the last line of wrapped text. It seems to be off-by-two error only: if (sz.y > 0) sz.y += 2; return sz; } #endif void AutoWrappingText::OnSize(wxSizeEvent& e) { e.Skip(); RewrapForWidth(e.GetSize().x); } bool AutoWrappingText::RewrapForWidth(int width) { if (width == m_wrapWidth) return false; // refuse to participate in crazy-small sizes sizing (will be undone anyway): if (width < 50) return false; m_wrapWidth = width; const int wrapAt = wxMax(0, width - PX(4)); wxWindowUpdateLocker lock(this); SetLabel(WrapTextAtWidth(m_text, wrapAt, m_language, this)); InvalidateBestSize(); return true; } SelectableAutoWrappingText::SelectableAutoWrappingText(wxWindow *parent, wxWindowID winid, const wxString& label) : AutoWrappingText(parent, winid, label) { #if defined(__WXOSX__) NSTextField *view = (NSTextField*)GetHandle(); [view setSelectable:YES]; #elif defined(__WXGTK__) GtkLabel *view = GTK_LABEL(GetHandle()); gtk_label_set_selectable(view, TRUE); #else // at least allow copying static wxWindowIDRef idCopy = NewControlId(); Bind(wxEVT_CONTEXT_MENU, [=](wxContextMenuEvent&){ wxMenu menu; menu.Append(idCopy, _("&Copy")); PopupMenu(&menu); }); Bind(wxEVT_MENU, [=](wxCommandEvent&){ wxClipboardLocker lock; wxClipboard::Get()->SetData(new wxTextDataObject(m_text)); }, idCopy); #endif } ExplanationLabel::ExplanationLabel(wxWindow *parent, const wxString& label) : AutoWrappingText(parent, wxID_ANY, label) { #if defined(__WXOSX__) || defined(__WXGTK__) SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif #ifndef __WXGTK__ ColorScheme::SetupWindowColors(this, [=] { SetForegroundColour(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__ ColorScheme::SetupWindowColors(this, [=] { SetForegroundColour(GetTextColor()); }); #endif } LearnMoreLink::LearnMoreLink(wxWindow *parent, const wxString& url, wxString label, wxWindowID winid) { if (label.empty()) label = _("Learn more"); wxHyperlinkCtrl::Create(parent, winid, label, url); ColorScheme::SetupWindowColors(this, [=] { #ifdef __WXOSX__ wxColour normal, hover; NSView *view = GetHandle(); if (@available(macOS 11.0, *)) { // FIXME: This is workaround for wx always overriding appearance to the app-wide system one when // accessing wxColour components or creating CGColor -- as happens in generic rendering code // (see wxOSXEffectiveAppearanceSetter) [view.effectiveAppearance performAsCurrentDrawingAppearance: [&]{ normal = wxColour(wxCFRetain([NSColor.linkColor CGColor])); hover = wxColour(wxCFRetain([[NSColor.linkColor colorWithSystemEffect:NSColorSystemEffectRollover] CGColor])); }]; } else { normal = wxColour(NSColor.linkColor); hover = wxColour([NSColor.linkColor colorWithSystemEffect:NSColorSystemEffectRollover]); } SetNormalColour(normal); SetVisitedColour(normal); SetHoverColour(hover); #else SetNormalColour("#2F79BE"); SetVisitedColour("#2F79BE"); SetHoverColour("#3D8DD5"); #endif }); #ifdef __WXOSX__ SetWindowVariant(wxWINDOW_VARIANT_SMALL); SetFont(GetFont().Underlined()); #endif } wxObject *LearnMoreLinkXmlHandler::DoCreateResource() { auto w = new LearnMoreLink(m_parentAsWindow, GetText("url"), GetText("label"), GetID()); w->SetName(GetName()); SetupWindow(w); return w; } bool LearnMoreLinkXmlHandler::CanHandle(wxXmlNode *node) { return IsOfClass(node, "LearnMoreLink"); } ActivityIndicator::ActivityIndicator(wxWindow *parent, int flags) : wxWindow(parent, wxID_ANY), m_running(false) { auto sizer = new wxBoxSizer(wxHORIZONTAL); SetSizer(sizer); m_spinner = new wxActivityIndicator(this, wxID_ANY); m_spinner->Hide(); m_spinner->SetWindowVariant(wxWINDOW_VARIANT_SMALL); m_label = new wxStaticText(this, wxID_ANY, ""); #ifdef __WXOSX__ SetWindowVariant(wxWINDOW_VARIANT_SMALL); m_label->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif if (flags & Centered) sizer->AddStretchSpacer(); sizer->Add(m_spinner, wxSizerFlags().Center().Border(wxRIGHT, PX(4))); sizer->Add(m_label, wxSizerFlags().Center()); if (flags & Centered) sizer->AddStretchSpacer(); wxWeakRef self(this); HandleError = [self](dispatch::exception_ptr e){ dispatch::on_main([self,e]{ if (self) self->StopWithError(DescribeException(e)); }); }; } void ActivityIndicator::UpdateLayoutAfterTextChange() { m_label->Wrap(GetSize().x); Layout(); if (GetSizer()->IsShown(m_label)) { InvalidateBestSize(); SetMinSize(wxDefaultSize); SetMinSize(GetBestSize()); GetParent()->Layout(); } } 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()); UpdateLayoutAfterTextChange(); 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); UpdateLayoutAfterTextChange(); } void ActivityIndicator::StopWithError(const wxString& msg) { m_running = false; m_spinner->Stop(); m_label->SetForegroundColour(ColorScheme::Get(Color::ErrorText)); m_label->SetLabel(msg); m_label->SetToolTip(msg); auto sizer = GetSizer(); sizer->Hide(m_spinner); sizer->Show(m_label); UpdateLayoutAfterTextChange(); } ImageButton::ImageButton(wxWindow *parent, const wxString& bitmapName) : wxBitmapButton(parent, wxID_ANY, bitmapName.empty() ? wxNullBitmap : wxArtProvider::GetBitmap(bitmapName), wxDefaultPosition, wxDefaultSize, wxBORDER_NONE | wxBU_EXACTFIT), m_bitmapName(bitmapName) { #ifdef __WXOSX__ // don't light up the background when clicked: NSButton *view = (NSButton*)GetHandle(); view.buttonType = NSButtonTypeMomentaryChange; #else // refresh template icons on theme change (macOS handles automatically): if (bitmapName.ends_with("Template")) { ColorScheme::SetupWindowColors(this, [=] { SetBitmap(wxArtProvider::GetBitmap(m_bitmapName)); }); } #endif } StaticBitmap::StaticBitmap(wxWindow *parent, const wxString& bitmapName) : wxStaticBitmap(parent, wxID_ANY, bitmapName.empty() ? wxNullBitmap : wxArtProvider::GetBitmap(bitmapName)), m_bitmapName(bitmapName) { #ifndef __WXOSX__ // refresh template icons on theme change (macOS handles automatically): if (bitmapName.ends_with("Template")) { ColorScheme::SetupWindowColors(this, [=] { SetBitmap(wxArtProvider::GetBitmap(m_bitmapName)); }); } #endif } void StaticBitmap::SetBitmapName(const wxString& bitmapName) { m_bitmapName = bitmapName; SetBitmap(wxArtProvider::GetBitmap(m_bitmapName)); } AvatarIcon::AvatarIcon(wxWindow *parent, const wxSize& size) : wxWindow(parent, wxID_ANY, wxDefaultPosition, size) { InitForSize(); ColorScheme::RefreshOnChange(this); Bind(wxEVT_PAINT, &AvatarIcon::OnPaint, this); } void AvatarIcon::SetUserName(const wxString& name) { m_placeholder.clear(); for (auto& s: wxSplit(name, ' ')) { if (!s.empty()) m_placeholder += s[0]; } Refresh(); } void AvatarIcon::LoadIcon(const wxFileName& f) { #ifdef __WXOSX__ NSString *path = str::to_NS(f.GetFullPath()); NSImage *img = [[NSImage alloc] initWithContentsOfFile:path]; if (img != nil) m_bitmap = wxBitmap(img); #else wxLogNull null; wxImage img(f.GetFullPath()); if (img.IsOk()) m_bitmap = wxBitmap(img); #endif Refresh(); } void AvatarIcon::InitForSize() { auto size = GetSize(); wxBitmap bmp(size); wxMemoryDC dc; dc.SelectObject(bmp); dc.SetBackground(*wxWHITE_BRUSH); dc.Clear(); dc.SetBrush(*wxBLACK_BRUSH); dc.SetPen(*wxBLACK_PEN); wxRect r(wxPoint(0,0), size); r.Deflate(PX(3)); dc.DrawEllipse(r); dc.SelectObject(wxNullBitmap); m_clipping = wxRegion(bmp, *wxWHITE); wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); font.SetWeight(wxFONTWEIGHT_BOLD); font.SetPixelSize(wxSize(0, size.y / 4)); SetFont(font); } void AvatarIcon::OnPaint(wxPaintEvent&) { auto r = GetClientRect(); r.Deflate(PX(2)); wxPaintDC dc(this); std::unique_ptr gc(wxGraphicsContext::Create(dc)); gc->SetAntialiasMode(wxANTIALIAS_DEFAULT); gc->SetInterpolationQuality(wxINTERPOLATION_BEST); gc->Clip(m_clipping); if (m_bitmap.IsOk()) { gc->DrawBitmap(m_bitmap, r.x, r.y, r.width, r.height); } else { gc->SetBrush(wxColour(128,128,128,50)); gc->SetPen(wxNullPen); gc->SetFont(GetFont(), ColorScheme::Get(Color::SecondaryLabel)); gc->DrawEllipse(r.x, r.y, r.width, r.height); wxDouble tw, th; gc->GetTextExtent(m_placeholder, &tw, &th); gc->DrawText(m_placeholder, r.x + (r.width - tw) / 2, r.y + (r.height - th) / 2); } gc->ResetClip(); // mark out jagged, pixelated clipping due to low-resolution wxRegion: auto outline = GetBackgroundColour(); outline = outline.ChangeLightness(ColorScheme::GetAppMode() == ColorScheme::Light ? 98 : 110); gc->SetPen(wxPen(outline, PX(2))); gc->DrawEllipse(r.x + 0.5, r.y + 0.5, r.width, r.height); } class IconAndSubtitleListCtrl::MultilineTextRenderer : public wxDataViewTextRenderer { public: MultilineTextRenderer() : wxDataViewTextRenderer() { EnableMarkup(); } #ifdef __WXMSW__ bool Render(wxRect rect, wxDC *dc, int state) { int flags = 0; if ( state & wxDATAVIEW_CELL_SELECTED ) flags |= wxCONTROL_SELECTED; rect.height /= 2; for (auto& line: wxSplit(m_text, '\n')) { wxItemMarkupText markup(line); markup.Render(GetView(), *dc, rect, flags, GetEllipsizeMode()); rect.y += rect.height; } return true; } wxSize GetSize() const { if (m_text.empty()) return wxSize(wxDVC_DEFAULT_RENDERER_SIZE,wxDVC_DEFAULT_RENDERER_SIZE); auto size = wxDataViewTextRenderer::GetSize(); size.y *= 2; // approximation enough for our needs return size; } #endif // __WXMSW__ }; // TODO: merge with CloudFileList which is very similar and has lot of duplicated code IconAndSubtitleListCtrl::IconAndSubtitleListCtrl(wxWindow *parent, const wxString& columnTitle, long style) : wxDataViewListCtrl(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxDV_NO_HEADER | style) { #ifdef __WXOSX__ NSScrollView *scrollView = (NSScrollView*)GetHandle(); NSTableView *tableView = (NSTableView*)[scrollView documentView]; [tableView setIntercellSpacing:NSMakeSize(0.0, 0.0)]; if (@available(macOS 11.0, *)) tableView.style = NSTableViewStyleFullWidth; const int icon_column_width = PX(32 + 12); #else // !__WXOSX__ const int icon_column_width = wxSystemSettings::GetMetric(wxSYS_ICON_X) + PX(12); #endif SetRowHeight(GetDefaultRowHeight()); AppendBitmapColumn("", 0, wxDATAVIEW_CELL_INERT, icon_column_width); auto renderer = new MultilineTextRenderer(); auto column = new wxDataViewColumn(columnTitle, renderer, 1, -1, wxALIGN_NOT, wxDATAVIEW_COL_RESIZABLE); AppendColumn(column, "string"); #ifndef __WXGTK__ ColorScheme::SetupWindowColors(this, [=]{ OnColorChange(); }); #endif } int IconAndSubtitleListCtrl::GetDefaultRowHeight() const { return PX(46); } wxString IconAndSubtitleListCtrl::FormatItemText(const wxString& title, const wxString& description) { #ifdef __WXGTK__ auto secondaryFormatting = "alpha='50%'"; #else auto secondaryFormatting = GetSecondaryFormatting(); #endif return wxString::Format ( "%s\n%s", EscapeMarkup(title), secondaryFormatting, EscapeMarkup(description) ); } #ifndef __WXGTK__ wxString IconAndSubtitleListCtrl::GetSecondaryFormatting() { auto secondaryFormatting = wxString::Format("foreground='%s'", ColorScheme::Get(Color::SecondaryLabel).GetAsString(wxC2S_HTML_SYNTAX)); m_secondaryFormatting[ColorScheme::GetAppMode()] = secondaryFormatting; return secondaryFormatting; } void IconAndSubtitleListCtrl::OnColorChange() { auto otherMode = (ColorScheme::GetAppMode() == ColorScheme::Light) ? ColorScheme::Dark : ColorScheme::Light; auto repl_from = m_secondaryFormatting[otherMode]; auto repl_to = GetSecondaryFormatting(); if (repl_from.empty() || repl_to.empty()) return; for (auto row = 0; row < GetItemCount(); row++) { auto text = GetTextValue(row, 1); text.Replace(repl_from, repl_to); SetTextValue(text, row, 1); } } #endif // !__WXGTK__ void IconAndSubtitleListCtrl::AppendFormattedItem(const wxBitmap& icon, const wxString& title, const wxString& description) { wxVector data; data.push_back(wxVariant(icon)); data.push_back(FormatItemText(title, description)); AppendItem(data); } void IconAndSubtitleListCtrl::UpdateFormattedItem(unsigned row, const wxString& title, const wxString& description) { SetTextValue(FormatItemText(title, description), row, 1); } poedit-3.6.3/src/cloud_accounts.h0000644000175100001660000001360115011674230012436 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2025 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_cloud_accounts_h #define Poedit_cloud_accounts_h #ifdef HAVE_HTTP_CLIENT #include "concurrency.h" #include "language.h" #include #include #include class Catalog; /** Base class for a cloud account client (e.g. Crowdin). */ class CloudAccountClient { public: /// Return singleton instance of specific client. static CloudAccountClient& Get(const std::string& service_name); /// Get singleton instance for given metadata object. template static CloudAccountClient& GetFor(const T& obj) { return Get(obj.service); } /// Destroys all singletons, must be called (only) on app shutdown. static void CleanUp(); virtual ~CloudAccountClient() {} /// Returns identifier of the account's service virtual const char *GetServiceName() const = 0; // { return SERVICE_NAME; } // Informal protocol: should be present in every derived class // static constexpr const char* SERVICE_NAME = "Something"; /// Is the user logged into this account? virtual bool IsSignedIn() const = 0; /// Sign out of the account, forget any stored credentials virtual void SignOut() = 0; /// Information about logged-in user struct UserInfo { /// Service (Crowdin etc.) the account is for std::string service; /// Human-readable name of the user std::wstring name; /// User's login name std::string login; /// URL of the user's avatar image (optional) std::string avatarUrl; }; /// Retrieve information about the current user asynchronously virtual dispatch::future GetUserInfo() = 0; /// Project listing info struct ProjectInfo { /// Service (Crowdin etc.) the account is for std::string service; /// Service's internal ID of the project, if used std::variant internalID; /// Human-readable name of the service std::wstring name; /// Slug, i.e. symbolic name of the project; typically included in URLs std::string slug; /// URL of the projects's avatar/logo image (optional) std::string avatarUrl; }; /// Retrieve listing of projects accessible to the user virtual dispatch::future> GetUserProjects() = 0; /// Information about a specific file within a project. struct ProjectFile { std::wstring title; std::wstring description; /// Implementation-specific internal data struct Internal { virtual ~Internal() {} }; std::shared_ptr internal; }; /// Project detailed information not included in ProjectInfo struct ProjectDetails { /// Languages supported by the project std::vector languages; /// All files in the project. std::vector files; }; /// Retrieve details about given project virtual dispatch::future GetProjectDetails(const ProjectInfo& project) = 0; /// Metadata needed for uploading/downloading files struct FileSyncMetadata { virtual ~FileSyncMetadata() {} /// Service (Crowdin etc.) the account is for std::string service; }; /// Create filename on local filesystem suitable for the remote file virtual std::wstring CreateLocalFilename(const ProjectInfo& project, const ProjectFile& file, const Language& lang) const = 0; /** Extract sync metadata from a file if present. Returns nullptr if @a catalog is not from this cloud account or is missing metadata. */ virtual std::shared_ptr ExtractSyncMetadata(Catalog& catalog) = 0; /// Extract sync metadata from a file if present, trying all cloud accounts. static std::shared_ptr ExtractSyncMetadataIfAny(Catalog& catalog); /// Asynchronously download specific file into @a output_file. virtual dispatch::future DownloadFile(const std::wstring& output_file, const ProjectInfo& project, const ProjectFile& file, const Language& lang) = 0; /// Asynchronously download specific file into @a output_file, using data from ExtractSyncMetadata(). virtual dispatch::future DownloadFile(const std::wstring& output_file, std::shared_ptr meta) = 0; /** Asynchronously upload a file. The file is stored in a memory buffer and the destination information is provided by ExtractSyncMetadata(). */ virtual dispatch::future UploadFile(const std::string& file_buffer, std::shared_ptr meta) = 0; protected: CloudAccountClient() {} }; #endif // !HAVE_HTTP_CLIENT #endif // Poedit_cloud_accounts_h poedit-3.6.3/src/pretranslate.cpp0000644000175100001660000003163615011674230012500 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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 "pretranslate.h" #include "configuration.h" #include "customcontrols.h" #include "hidpi.h" #include "progress_ui.h" #include "str_helpers.h" #include "tm/transmem.h" #include "utility.h" #include #include #include #include #include #include #include #include namespace { enum class ResType { None = 0, // no matches Rejected, // found matches, but rejected by settings Fuzzy, // approximate match Exact // exact match }; inline bool translated(ResType r) { return r >= ResType::Fuzzy; } struct Stats { int total = 0; int matched = 0; int exact = 0; int fuzzy = 0; explicit operator bool() const { return matched > 0; } void add(ResType r) { total++; if (translated(r)) matched++; if (r == ResType::Exact) exact++; else if (r == ResType::Fuzzy) fuzzy++; } }; template Stats PreTranslateCatalogImpl(CatalogPtr catalog, const T& range, PreTranslateOptions options, dispatch::cancellation_token_ptr cancellation_token) { if (range.empty()) return {}; if (!Config::UseTM()) return {}; TranslationMemory& tm = TranslationMemory::Get(); auto srclang = catalog->GetSourceLanguage(); auto lang = catalog->GetLanguage(); const auto flags = options.flags; Progress top_progress(1); top_progress.message(_(L"Preparing strings…")); // Function to apply fetched suggestions to a catalog item: auto process_results = [=](CatalogItemPtr dt, unsigned index, const SuggestionsList& results) -> ResType { if (results.empty()) return ResType::None; auto& res = results.front(); if ((flags & PreTranslate_OnlyExact) && !res.IsExactMatch()) return ResType::Rejected; if ((flags & PreTranslate_OnlyGoodQuality) && res.score < 0.80) return ResType::None; dt->SetTranslation(res.text, index); dt->SetPreTranslated(true); bool isFuzzy = true; if (res.IsExactMatch() && (flags & PreTranslate_ExactNotFuzzy)) { if (results.size() > 1 && results[1].IsExactMatch()) { // more than one exact match is ambiguous, so keep it flagged for review } else { isFuzzy = false; } } dt->SetFuzzy(isFuzzy); return res.IsExactMatch() ? ResType::Exact : ResType::Fuzzy; }; std::vector> operations; for (auto dt: range) { if (dt->IsTranslated() && !dt->IsFuzzy()) continue; operations.push_back(dispatch::async([=,&tm]() -> ResType { if (cancellation_token->is_cancelled()) return {}; auto results = tm.Search(srclang, lang, str::to_wstring(dt->GetString())); auto rt = process_results(dt, 0, results); if (translated(rt) && dt->HasPlural()) { switch (lang.nplurals()) { case 2: // "simple" English-like plurals { auto results_plural = tm.Search(srclang, lang, str::to_wstring(dt->GetPluralString())); process_results(dt, 1, results_plural); } case 1: // nothing else to do default: // not supported break; } } return rt; })); } Progress progress((int)operations.size()); progress.message(_(L"Pre-translating from translation memory…")); Stats stats; for (auto& op: operations) { if (cancellation_token->is_cancelled()) break; auto rt = op.get(); stats.add(rt); if (translated(rt)) progress.message(wxString::Format(wxPLURAL("Pre-translated %u string", "Pre-translated %u strings", stats.matched), stats.matched)); progress.increment(); } return stats; } template void PreTranslateCatalog(wxWindow *window, CatalogPtr catalog, const T& range, const PreTranslateOptions& options, TCompletion&& completionHandler) { auto changesMade = std::make_shared(false); auto cancellation = std::make_shared(); wxWindowPtr progress(new ProgressWindow(window, _(L"Pre-translating…"), cancellation)); progress->RunTaskThenDo([=]() { auto stats = PreTranslateCatalogImpl(catalog, range, options, cancellation); *changesMade = stats.matched > 0; BackgroundTaskResult bg; if (stats.matched) { bg.summary = wxString::Format(wxPLURAL("%d entry was pre-translated.", "%d entries were pre-translated.", stats.matched), stats.matched); if (stats.exact < stats.matched || !(options.flags & PreTranslate_ExactNotFuzzy)) { bg.details.emplace_back(_("The translations were marked as needing work, because they may be inaccurate. You should review them for correctness."), ""); } bg.details.emplace_back(_("Exact matches from TM"), wxNumberFormatter::ToString((long)stats.exact)); bg.details.emplace_back(_("Approximate matches from TM"), wxNumberFormatter::ToString((long)stats.fuzzy)); } else { bg.summary = _("No entries could be pre-translated."); bg.details.emplace_back(_(L"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."), ""); } return bg; }, [changesMade,progress,completionHandler=std::move(completionHandler)](bool success) { if (success && *changesMade) completionHandler(); }); } } // anonymous namespace void PreTranslateCatalogAuto(wxWindow *window, CatalogPtr catalog, const PreTranslateOptions& options, std::function onChangesMade) { PreTranslateCatalog(window, catalog, catalog->items(), options, std::move(onChangesMade)); } void PreTranslateWithUI(wxWindow *window, PoeditListCtrl *list, CatalogPtr catalog, std::function onChangesMade) { if (catalog->UsesSymbolicIDsForSource()) { wxWindowPtr resultsDlg( new wxMessageDialog ( window, _("Cannot pre-translate without source text."), _("Pre-translate"), wxOK | wxICON_ERROR ) ); resultsDlg->SetExtendedMessage(_(L"Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.")); resultsDlg->ShowWindowModalThenDo([resultsDlg](int){}); return; } else if (!catalog->GetSourceLanguage().IsValid()) { wxWindowPtr resultsDlg( new wxMessageDialog ( window, _("Cannot pre-translate from unknown language."), _("Pre-translate"), wxOK | wxICON_ERROR ) ); resultsDlg->SetExtendedMessage(_(L"Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.")); resultsDlg->ShowWindowModalThenDo([resultsDlg](int){}); return; } wxWindowPtr dlg(new wxDialog(window, wxID_ANY, _("Pre-translate"), wxDefaultPosition, wxSize(PX(440), -1))); auto topsizer = new wxBoxSizer(wxVERTICAL); auto sizer = new wxBoxSizer(wxVERTICAL); auto onlyExact = new wxCheckBox(dlg.get(), wxID_ANY, _("Only fill in exact matches")); auto onlyExactE = new ExplanationLabel(dlg.get(), _("By default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.")); auto noFuzzy = new wxCheckBox(dlg.get(), wxID_ANY, _(L"Don’t mark exact matches as needing work")); auto noFuzzyE = new ExplanationLabel(dlg.get(), _("Only enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.")); #ifdef __WXOSX__ sizer->Add(new HeadingLabel(dlg.get(), _("Pre-translate")), wxSizerFlags().Expand().PXBorder(wxBOTTOM)); #endif auto pretransE = new ExplanationLabel(dlg.get(), _("Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.")); sizer->Add(pretransE, wxSizerFlags().Expand().Border(wxBOTTOM, PX(15))); sizer->Add(onlyExact, wxSizerFlags().PXBorder(wxTOP)); sizer->AddSpacer(PX(1)); sizer->Add(onlyExactE, wxSizerFlags().Expand().Border(wxLEFT, PX(ExplanationLabel::CHECKBOX_INDENT))); sizer->Add(noFuzzy, wxSizerFlags().PXDoubleBorder(wxTOP)); sizer->AddSpacer(PX(1)); sizer->Add(noFuzzyE, wxSizerFlags().Expand().Border(wxLEFT, PX(ExplanationLabel::CHECKBOX_INDENT))); topsizer->Add(sizer, wxSizerFlags(1).Expand().Border(wxALL, MACOS_OR_OTHER(PX(20), PX(10)))); auto buttons = dlg->CreateButtonSizer(wxOK | wxCANCEL); auto ok = static_cast(dlg->FindWindow(wxID_OK)); // TRANSLATORS: This is a somewhat common term describing the action where // you apply the translation memory and/or machine translation to all of the // strings you're translating as the first step, followed by correcting, // improving etc., i.e. actually translating the strings. This may be tricky // to express in other languages as simply as in English, but please try to // keep it similarly concise. Please try to avoid, if possible, describing it // as "auto-translation" and similar, because such terminology would mislead // some users into thinking it's all that needs to be done (spoken from // experience). "Pre-translate" nicely expresses that it's only the step done // *before* actual translation. ok->SetLabel(_("Pre-translate")); ok->SetDefault(); #ifdef __WXOSX__ topsizer->Add(buttons, wxSizerFlags().Expand().Border(wxLEFT|wxRIGHT|wxBOTTOM, PX(10))); #else topsizer->AddSpacer(PX(5)); topsizer->Add(buttons, wxSizerFlags().Expand().Border(wxRIGHT, PX(12))); topsizer->AddSpacer(PX(12)); #endif dlg->SetSizer(topsizer); dlg->Layout(); topsizer->SetSizeHints(dlg.get()); dlg->CenterOnParent(); { PretranslateSettings settings = Config::PretranslateSettings(); onlyExact->SetValue(settings.onlyExact); noFuzzy->SetValue(settings.exactNotFuzzy); } dlg->ShowWindowModalThenDo([catalog,window,list,onlyExact,noFuzzy,onChangesMade,dlg](int retcode) { if (retcode != wxID_OK) return; PretranslateSettings settings; settings.onlyExact = onlyExact->GetValue(); settings.exactNotFuzzy = noFuzzy->GetValue(); Config::PretranslateSettings(settings); PreTranslateOptions options; if (settings.onlyExact) options.flags |= PreTranslate_OnlyExact; if (settings.exactNotFuzzy) options.flags |= PreTranslate_ExactNotFuzzy; if (list->HasMultipleSelection()) { PreTranslateCatalog(window, catalog, list->GetSelectedCatalogItems(), options, std::move(onChangesMade)); } else { PreTranslateCatalog(window, catalog, catalog->items(), options, std::move(onChangesMade)); } }); } poedit-3.6.3/src/pugixml.h0000644000175100001660000000270415011674230011120 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2018-2025 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_pugixml_h #define Poedit_pugixml_h #include "str_helpers.h" #ifdef HAVE_PUGIXML #include #else // #define PUGIXML_COMPACT ? #define PUGIXML_HEADER_ONLY #include "../deps/pugixml/src/pugixml.hpp" #endif #endif // Poedit_pugixml_h poedit-3.6.3/src/tm/0000755000175100001660000000000015011674362007765 5poedit-3.6.3/src/tm/tmx_io.h0000644000175100001660000000274115011674230011353 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2018-2025 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_tmx_io_h #define Poedit_tmx_io_h #include "language.h" #include "transmem.h" #include namespace TMX { int ImportFromFile(std::istream& file, TranslationMemory& tm); void ExportToFile(TranslationMemory& tm, std::ostream& file); } // namespace TMX #endif // Poedit_tmx_io_h poedit-3.6.3/src/tm/suggestions.h0000644000175100001660000001242615011674230012427 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2025 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_suggestions_h #define Poedit_suggestions_h #include #include #include #include #include #include "concurrency.h" #include "language.h" class SuggestionsBackend; class SuggestionsProviderImpl; /// A query for suggestions struct SuggestionQuery { /// Language of the source text. Language srclang; /// Language of the desired translation. Language lang; /// Source text. std::wstring source; }; /// A single translation suggestion struct Suggestion { /// Possible types of suggestion sources enum class Source { LocalTM }; /// Ctor Suggestion() : score(0.), localScore(0), source(Source::LocalTM) {} Suggestion(const std::wstring& text_, double score_, int localScore_ = 0, Source source_ = Source::LocalTM) : text(text_), score(score_), localScore(localScore_), source(source_) {} /// Text of the suggested translation std::wstring text; /// Quality score (1.0 = exact match, 0 = no score assigned) double score; /// Time when the suggestion was stored int localScore; /// Source of the suggestion Source source; /// Optional ID of the suggestion, for use with up/downvoting std::string id; bool HasScore() const { return score != 0.0; } bool IsExactMatch() const { return score == 1.0; } }; inline bool operator<(const Suggestion& a, const Suggestion& b) { if (std::fabs(a.score - b.score) <= std::numeric_limits::epsilon()) return a.localScore > b.localScore; else return a.score > b.score; } typedef std::vector SuggestionsList; /** Provides suggestions for translations. Under the hood, the translation memory is used, but the API is more generic and allows for other implementations. This is a relatively lightweight object and shouldn't be shared between users (e.g. opened documents/windows) -- create one instance per user. */ class SuggestionsProvider { public: /// Initializes the provider. SuggestionsProvider(); ~SuggestionsProvider(); /** Query for suggested translations. This function asynchronously calls either @a onSuccess or @a onError callback, exactly once, from a worked thread. If no suggestions are found, @a onSuccess is called with an empty list as its argument. @param backend Suggestions backend to use, e.g. TranslationMemory::Get(). @param q Source text and its metadata. */ dispatch::future SuggestTranslation(SuggestionsBackend& backend, const SuggestionQuery&& q); /// Mark a suggestion as good. Called when a suggestion is used. static void Delete(const Suggestion& s); private: std::unique_ptr m_impl; }; /** Implements a source of suggestions for SuggestionsProvider. This class is abstraction that doesn't depend on a specific source (such as the translation memory DB). @note Implementations must be thread-safe! */ class SuggestionsBackend { public: virtual ~SuggestionsBackend() {} /** Query for suggested translations. This function asynchronously calls either @a onSuccess or @a onError callback, exactly once. @note No guarantees are made about the thread the callbacks are called from; they may be called immediately before SuggestTranslation() returns (even on the same thread) or at a later time. This is a difference from SuggestionsProvider, which guarantees that the callback is called asynchronously from another thread. If no suggestions are found, @a onSuccess is called with an empty list as its argument. @param q Source text and its metadata. */ virtual dispatch::future SuggestTranslation(const SuggestionQuery&& q) = 0; /// Delete suggestion with given ID from the database virtual void Delete(const std::string& id) = 0; }; #endif // Poedit_suggestions_h poedit-3.6.3/src/tm/transmem.h0000644000175100001660000001427215011674230011704 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2025 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 _TRANSMEM_H_ #define _TRANSMEM_H_ #include #include #include #include #include #include "catalog.h" #include "suggestions.h" class TranslationMemoryImpl; /** Lucene-based translation memory. All methods may throw Exception. */ class TranslationMemory : public SuggestionsBackend { public: /// Return singleton instance of the TM. static TranslationMemory& Get(); /// Destroys the singleton, must be called (only) on app shutdown. static void CleanUp(); /** 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& srclang, const Language& lang, const std::wstring& source); /// SuggestionsBackend API implementation: dispatch::future SuggestTranslation(const SuggestionQuery&& q) override; void Delete(const std::string& id) override; /// Abstract interface to processing TM entries class IOInterface { public: virtual ~IOInterface() {} virtual void Insert(const Language& srclang, const Language& lang, const std::wstring& source, const std::wstring& trans, time_t creationTime) = 0; }; /** Exports all database entries by pushing them to the provided output interface. May throw on error. */ void ExportData(IOInterface& destination); /** Imports data provided by the function into the database. The function must use the interface passed to it to write data. May throw on error. */ void ImportData(std::function source); void SearchSubstring(IOInterface& destination, const Language& srclang, const Language& lang, const std::wstring& sourcePhrase); /** Performs updates to the translation memory. 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 : public IOInterface { public: virtual ~Writer() {} void Insert(const Language& srclang, const Language& lang, const std::wstring& source, const std::wstring& trans, time_t creationTime) override = 0; /** Insert translation into the TM. @param srclang Source text language. @param lang Translation language. @param source Source text. @param trans Translation text. */ 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 CatalogPtr& cat) = 0; /// Delete a single document identifed by its UUID virtual void Delete(const std::string& uuid) = 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; }; /// Returns the shared writer instance std::shared_ptr GetWriter(); /// Resets the database to pristine state, removing all data void DeleteAllAndReset(); /// Returns statistics about the TM void GetStats(long& numDocs, long& fileSize); private: TranslationMemory(); ~TranslationMemory(); TranslationMemoryImpl *m_impl; std::exception_ptr m_error; static TranslationMemory *ms_instance; }; #endif // _TRANSMEM_H_ poedit-3.6.3/src/tm/tmx_io.cpp0000644000175100001660000001643215011674230011710 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2018-2025 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 "tmx_io.h" #include #include #ifdef _WIN32 #define timegm _mkgmtime #endif #include #include "errors.h" #include "progress.h" #include "pugixml.h" #include "version.h" using namespace pugi; namespace { std::string extract_date(xml_node node, const std::string& fallback = std::string()) { std::string d = node.attribute("changedate").value(); if (d.empty()) d = node.attribute("creationdate").value(); return d.empty() ? fallback : d; } const char *extract_lang(xml_node node) { const char *l = node.attribute("xml:lang").as_string(nullptr); if (!l) l = node.attribute("lang").as_string(nullptr); // TMX 1.1 return l ? l : ""; } std::wstring extract_seg(xml_node node) { // Of the markings within , only (placeholder) would make sense // to extract and substitute with e.g. %s -- but because that's not used // in TM search anyway, it's OK to ignore it, at least for now. std::string text; for (auto child: node.child("seg").children()) { if (child.type() == pugi::node_pcdata) text += child.value(); } return pugi::as_wide(text); } } // anonymous namespace int TMX::ImportFromFile(std::istream& file, TranslationMemory& tm) { xml_document doc; auto result = doc.load(file); if (!result) BOOST_THROW_EXCEPTION(std::runtime_error(result.description())); auto root = doc.child("tmx"); if (!root) BOOST_THROW_EXCEPTION(Exception(_("The TMX file is malformed."))); std::string defaultSrclang; std::string defaultDate; auto header = root.child("header"); if (header) { defaultSrclang = header.attribute("srclang").value(); if (defaultSrclang == "*all*") defaultSrclang.clear(); defaultDate = extract_date(header); } int counter = 0; auto body = root.child("body"); if (!body) BOOST_THROW_EXCEPTION(Exception(_("The TMX file is malformed."))); tm.ImportData([=,&counter,&body](auto& writer) { auto tu_children = body.children("tu"); Progress progress((int)std::distance(tu_children.begin(), tu_children.end())); for (auto tu: tu_children) { progress.increment(); auto tuDate = extract_date(tu, defaultDate); std::string tuSrclang = tu.attribute("srclang").value(); if (tuSrclang.empty()) tuSrclang = defaultSrclang; std::wstring source; for (auto tuv: tu.children("tuv")) { if (extract_lang(tuv) == tuSrclang) { source = extract_seg(tuv); break; } } if (source.empty()) continue; for (auto tuv: tu.children("tuv")) { auto tuvLang = extract_lang(tuv); if (tuvLang == tuSrclang) continue; auto srclang = Language::TryParse(tuSrclang); auto lang = Language::TryParse(tuvLang); if (!srclang.IsValid() || !lang.IsValid()) continue; auto trans = extract_seg(tuv); if (trans.empty()) continue; time_t creationTime = 0; auto tuvDate = extract_date(tu, tuDate); if (!tuvDate.empty()) { struct tm t {}; std::istringstream s(tuvDate.c_str()); s >> std::get_time(&t, "%Y%m%dT%H%M%SZ"); // YYYYMMDDThhmmssZ if (!s.fail()) creationTime = timegm(&t); } writer.Insert(srclang, lang, source, trans, creationTime); counter++; } } }); return counter; } void TMX::ExportToFile(TranslationMemory& tm, std::ostream& file) { class Exporter : public TranslationMemory::IOInterface { public: Exporter() { auto root = m_doc.append_child("tmx"); root.append_attribute("version") = "1.4"; auto header = root.append_child("header"); header.append_attribute("creationtool") = "Poedit"; header.append_attribute("creationtoolversion") = POEDIT_VERSION; header.append_attribute("datatype") = "PlainText"; header.append_attribute("segtype") = "sentence"; header.append_attribute("adminlang") = "en"; header.append_attribute("srclang") = "en"; // reasonable default for gettext header.append_attribute("o-tmf") = "PoeditTM"; m_body = root.append_child("body"); } void Insert(const Language& srclang, const Language& lang, const std::wstring& source, const std::wstring& trans, time_t creationTime) override { auto tu = m_body.append_child("tu"); auto srctag = srclang.LanguageTag(); if (srctag != "en") tu.append_attribute("srclang") = srctag.c_str(); if (creationTime > 0) { struct tm t; wxGmtime_r(&creationTime, &t); std::ostringstream s; s << std::put_time(&t, "%Y%m%dT%H%M%SZ"); // YYYYMMDDThhmmssZ tu.append_attribute("creationdate") = s.str().c_str(); } { auto tuv = tu.append_child("tuv"); tuv.append_attribute("xml:lang") = srctag.c_str(); tuv.append_child("seg").text() = pugi::as_utf8(source).c_str(); } { auto tuv = tu.append_child("tuv"); tuv.append_attribute("xml:lang") = lang.LanguageTag().c_str(); tuv.append_child("seg").text() = pugi::as_utf8(trans).c_str(); } } void Save(std::ostream& f) { m_doc.save(f); } private: xml_document m_doc; xml_node m_body; }; Exporter e; tm.ExportData(e); e.Save(file); } poedit-3.6.3/src/tm/transmem.cpp0000644000175100001660000007313315011674230012240 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2025 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 "transmem.h" #include "catalog.h" #include "errors.h" #include "progress.h" #include "str_helpers.h" #include "utility.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Lucene; namespace { #define CATCH_AND_RETHROW_EXCEPTION \ catch (LuceneException& e) \ { \ switch (e.getType()) \ { \ case LuceneException::CorruptIndex: \ case LuceneException::FileNotFound: \ case LuceneException::NoSuchDirectory: \ BOOST_THROW_EXCEPTION(Exception(wxString::Format(_("Translation memory database is corrupted: %s (%d)."), \ e.getError(), (int)e.getType()))); \ default: \ BOOST_THROW_EXCEPTION(Exception(wxString::Format(_("Translation memory error: %s (%d)."), \ e.getError(), (int)e.getType()))); \ } \ } \ catch (std::exception& e) \ { \ BOOST_THROW_EXCEPTION(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(m_reader); } ~SearcherManager() { m_searcher.reset(); m_reader->decRef(); } // Safe, properly ref-counting (in Lucene way, not just shared_ptr) holder. template class SafeRef { public: typedef boost::shared_ptr 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) {} SearcherManager& m_mng; boost::shared_ptr m_ptr; }; SafeRef Reader() { std::lock_guard guard(m_mutex); ReloadReaderIfNeeded(); m_reader->incRef(); return SafeRef(*this, m_reader); } SafeRef Searcher() { std::lock_guard guard(m_mutex); ReloadReaderIfNeeded(); m_searcher->getIndexReader()->incRef(); return SafeRef(*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(newReader); m_reader->decRef(); m_reader = newReader; m_searcher = newSearcher; } void DecRef(IndexReaderPtr& r) { std::lock_guard guard(m_mutex); r->decRef(); } void DecRef(IndexSearcherPtr& s) { std::lock_guard guard(m_mutex); s->getIndexReader()->decRef(); } IndexReaderPtr m_reader; IndexSearcherPtr m_searcher; std::mutex m_mutex; }; struct SearchArguments { QueryPtr srclang, lang; QueryPtr query; std::wstring exactSourceText; void set_lang(const Language& srclang_, const Language& lang_) { // TODO: query by srclang too! this->srclang = newLucene(newLucene(L"srclang", srclang_.WCode())); const Lucene::String fullLang = lang_.WCode(); const Lucene::String shortLang = StringUtils::toUnicode(lang_.Lang()); QueryPtr langPrimary = newLucene(newLucene(L"lang", fullLang)); QueryPtr langSecondary; if (fullLang == shortLang) { // for e.g. 'cs', search also 'cs_*' (e.g. 'cs_CZ') langSecondary = newLucene(newLucene(L"lang", shortLang + L"_")); } else { // search short variants of the language too langSecondary = newLucene(newLucene(L"lang", shortLang)); } langSecondary->setBoost(0.85); auto langQ = newLucene(); langQ->add(langPrimary, BooleanClause::SHOULD); langQ->add(langSecondary, BooleanClause::SHOULD); this->lang = langQ; } }; } // anonymous namespace // ---------------------------------------------------------------- // TranslationMemoryImpl // ---------------------------------------------------------------- class TranslationMemoryImpl { public: #ifdef __WXMSW__ typedef SimpleFSDirectory DirectoryType; #else typedef MMapDirectory DirectoryType; #endif TranslationMemoryImpl() { Init(); } ~TranslationMemoryImpl() { m_mng.reset(); m_writer->close(); } SuggestionsList Search(const Language& srclang, const Language& lang, const std::wstring& source); void ExportData(TranslationMemory::IOInterface& destination); void ImportData(std::function source); void SearchSubstring(TranslationMemory::IOInterface& destination, const Language& srclang, const Language& lang, const std::wstring& sourcePhrase); std::shared_ptr GetWriter() { return m_writerAPI; } void GetStats(long& numDocs, long& fileSize); static std::wstring GetDatabaseDir(); private: void Init(); private: AnalyzerPtr m_analyzer; IndexWriterPtr m_writer; std::shared_ptr m_mng; std::shared_ptr m_writerAPI; }; std::wstring TranslationMemoryImpl::GetDatabaseDir() { wxString data; #if defined(__UNIX__) && !defined(__WXOSX__) if ( !wxGetEnv("XDG_DATA_HOME", &data) ) data = wxGetHomeDir() + "/.local/share"; data += "/poedit"; #else data = wxStandardPaths::Get().GetUserDataDir(); #endif // ensure the parent directory exists: wxFileName::Mkdir(data, wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL); data += wxFILE_SEP_PATH; data += "TranslationMemory"; return data.ToStdWstring(); } namespace { // Max. number of hits returned from this API static const int MAX_RESULTS = 10; // Max. number of documents Lucene is queried for. This needs to be more than // MAX_RESULTS because we perform additional re-scoring, e.g. because Lucene // will happily return much longer documents for a short query. // It should be OK to have this fairy large, because most queries will return just // a few hits regardless. static const int LUCENE_QUERY_MAX_DOCS = 500; // Normalized score that must be met for a suggestion to be shown. This is // an empirical guess of what constitutes good matches. static const double QUALITY_THRESHOLD = 0.6; // Maximum allowed difference in phrase length, in #terms. static const int MAX_ALLOWED_LENGTH_DIFFERENCE = 3; void AddOrUpdateResult(SuggestionsList& all, Suggestion&& r) { // Sometimes multiple hits may have the same translation, but different score // because the source text may differ while the translation doesn't. E.g. // "Open File" (Mac) -> "Otevřít soubor" // "Open file" (Win) -> "Otevřít soubor" // So we can't keep the first score, but need to update it if a better match // with the same translation is found during the search. auto found = std::find_if(all.begin(), all.end(), [&r](const Suggestion& x){ return x.text == r.text; }); if (found == all.end()) { all.push_back(std::move(r)); } else { if (r.score > found->score) *found = r; } } // 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; } void postprocess_results(SuggestionsList& results) { std::stable_sort(results.begin(), results.end()); if (results.size() > MAX_RESULTS) results.resize(MAX_RESULTS); } template void PerformSearchWithBlock(IndexSearcherPtr searcher, const SearchArguments& sa, double scoreThreshold, double scoreScaling, T callback) { auto fullQuery = newLucene(); fullQuery->add(sa.srclang, BooleanClause::MUST); fullQuery->add(sa.lang, BooleanClause::MUST); fullQuery->add(sa.query, BooleanClause::MUST); auto hits = searcher->search(fullQuery, LUCENE_QUERY_MAX_DOCS); for (int i = 0; i < hits->scoreDocs.size(); i++) { const auto& scoreDoc = hits->scoreDocs[i]; auto score = scoreDoc->score / hits->maxScore; if (score < scoreThreshold) continue; auto doc = searcher->doc(scoreDoc->doc); auto src = get_text_field(doc, L"source"); if (src == sa.exactSourceText) { score = 1.0; } else { if (score == 1.0) { score = 0.95; // can't score non-exact thing as 100%: // Check against too small queries having perfect hit in a large stored text. // Do this by penalizing too large difference in lengths of the source strings. double len1 = sa.exactSourceText.size(); double len2 = src.size(); score *= 1.0 - 0.4 * (std::abs(len1 - len2) / std::max(len1, len2)); } score *= scoreScaling; } callback(doc, score); } } void PerformSearch(IndexSearcherPtr searcher, const SearchArguments& sa, SuggestionsList& results, double scoreThreshold, double scoreScaling) { PerformSearchWithBlock ( searcher, sa, scoreThreshold, scoreScaling, [&results](DocumentPtr doc, double score) { auto t = get_text_field(doc, L"trans"); time_t ts = DateField::stringToTime(doc->get(L"created")); Suggestion r {t, score, int(ts)}; r.id = StringUtils::toUTF8(doc->get(L"uuid")); AddOrUpdateResult(results, std::move(r)); } ); postprocess_results(results); } } // anonymous namespace SuggestionsList TranslationMemoryImpl::Search(const Language& srclang, const Language& lang, const std::wstring& source) { try { SuggestionsList results; const Lucene::String sourceField(L"source"); auto boolQ = newLucene(); auto phraseQ = newLucene(); auto stream = m_analyzer->tokenStream(sourceField, newLucene(source)); int sourceTokensCount = 0; int sourceTokenPosition = -1; while (stream->incrementToken()) { sourceTokensCount++; auto word = stream->getAttribute()->term(); sourceTokenPosition += stream->getAttribute()->getPositionIncrement(); auto term = newLucene(sourceField, word); boolQ->add(newLucene(term), BooleanClause::SHOULD); phraseQ->add(term, sourceTokenPosition); } SearchArguments sa; sa.set_lang(srclang, lang); sa.exactSourceText = source; sa.query = phraseQ; auto searcher = m_mng->Searcher(); // Try exact phrase first: PerformSearch(searcher.ptr(), sa, 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); sa.query = phraseQ; PerformSearch(searcher.ptr(), sa, results, QUALITY_THRESHOLD, /*scoreScaling=*/0.9); if (!results.empty()) return results; // As the last resort, try terms search. This will almost certainly // produce low-quality results, but hopefully better than nothing. boolQ->setMinimumNumberShouldMatch(std::max(1, boolQ->getClauses().size() - MAX_ALLOWED_LENGTH_DIFFERENCE)); sa.query = boolQ; PerformSearchWithBlock ( searcher.ptr(), sa, QUALITY_THRESHOLD, /*scoreScaling=*/0.8, [=,&results](DocumentPtr doc, double score) { auto s = get_text_field(doc, sourceField); auto t = get_text_field(doc, L"trans"); auto stream2 = m_analyzer->tokenStream(sourceField, newLucene(s)); int tokensCount2 = 0; while (stream2->incrementToken()) tokensCount2++; if (std::abs(tokensCount2 - sourceTokensCount) <= MAX_ALLOWED_LENGTH_DIFFERENCE) { time_t ts = DateField::stringToTime(doc->get(L"created")); Suggestion r {t, score, int(ts)}; r.id = StringUtils::toUTF8(doc->get(L"uuid")); AddOrUpdateResult(results, std::move(r)); } } ); postprocess_results(results); return results; } catch (LuceneException&) { return SuggestionsList(); } } void TranslationMemoryImpl::SearchSubstring(TranslationMemory::IOInterface& destination, const Language& srclang, const Language& lang, const std::wstring& sourcePhrase) { try { const Lucene::String sourceField(L"source"); auto phraseQ = newLucene(); auto stream = m_analyzer->tokenStream(sourceField, newLucene(sourcePhrase)); int sourceTokenPosition = -1; while (stream->incrementToken()) { auto word = stream->getAttribute()->term(); sourceTokenPosition += stream->getAttribute()->getPositionIncrement(); auto term = newLucene(sourceField, word); phraseQ->add(term, sourceTokenPosition); } SearchArguments sa; sa.set_lang(srclang, lang); sa.exactSourceText = sourcePhrase; sa.query = phraseQ; auto searcher = m_mng->Searcher(); PerformSearchWithBlock ( searcher.ptr(), sa, /*qualityThreshold=*/0.0, /*scoreScaling=*/1.0, [&](DocumentPtr doc, double /*score*/) { auto sourceText = get_text_field(doc, sourceField); if (boost::algorithm::ifind_first(sourceText, sourcePhrase)) { destination.Insert ( srclang, lang, sourceText, get_text_field(doc, L"trans"), DateField::stringToTime(doc->get(L"created")) ); } } ); } CATCH_AND_RETHROW_EXCEPTION } void TranslationMemoryImpl::ExportData(TranslationMemory::IOInterface& destination) { try { auto reader = m_mng->Reader(); int32_t numDocs = reader->maxDoc(); Progress progress(numDocs); for (int32_t i = 0; i < numDocs; i++) { progress.increment(); if (reader->isDeleted(i)) continue; auto doc = reader->document(i); destination.Insert ( Language::TryParse(doc->get(L"srclang")), Language::TryParse(doc->get(L"lang")), get_text_field(doc, L"source"), get_text_field(doc, L"trans"), DateField::stringToTime(doc->get(L"created")) ); } } CATCH_AND_RETHROW_EXCEPTION } void TranslationMemoryImpl::ImportData(std::function source) { auto writer = TranslationMemory::Get().GetWriter(); source(*writer); writer->Commit(); } void TranslationMemoryImpl::GetStats(long& numDocs, long& fileSize) { try { auto reader = m_mng->Reader(); numDocs = reader->numDocs(); fileSize = wxDir::GetTotalSize(GetDatabaseDir()).GetValue(); } CATCH_AND_RETHROW_EXCEPTION } // ---------------------------------------------------------------- // TranslationMemoryWriterImpl // ---------------------------------------------------------------- class TranslationMemoryWriterImpl : public TranslationMemory::Writer { public: TranslationMemoryWriterImpl(IndexWriterPtr writer) : m_writer(writer) {} ~TranslationMemoryWriterImpl() {} void Commit() override { try { m_writer->commit(); } CATCH_AND_RETHROW_EXCEPTION } void Rollback() override { try { m_writer->rollback(); } CATCH_AND_RETHROW_EXCEPTION } void Insert(const Language& srclang, const Language& lang, const std::wstring& source, const std::wstring& trans, time_t creationTime) override { if (!lang.IsValid() || !srclang.IsValid() || lang == srclang) return; if (creationTime == 0) creationTime = time(NULL); // Compute unique ID for the translation: static const boost::uuids::uuid s_namespace = boost::uuids::string_generator()("6e3f73c5-333f-4171-9d43-954c372a8a02"); boost::uuids::name_generator gen(s_namespace); std::wstring itemId(srclang.WCode()); itemId += lang.WCode(); itemId += source; itemId += trans; const std::wstring itemUUID = boost::uuids::to_wstring(gen(itemId)); try { // Then add a new document: auto doc = newLucene(); doc->add(newLucene(L"uuid", itemUUID, Field::STORE_YES, Field::INDEX_NOT_ANALYZED)); doc->add(newLucene(L"v", L"1", Field::STORE_YES, Field::INDEX_NO)); doc->add(newLucene(L"created", DateField::timeToString(creationTime), Field::STORE_YES, Field::INDEX_NO)); doc->add(newLucene(L"srclang", srclang.WCode(), Field::STORE_YES, Field::INDEX_NOT_ANALYZED)); doc->add(newLucene(L"lang", lang.WCode(), Field::STORE_YES, Field::INDEX_NOT_ANALYZED)); doc->add(newLucene(L"source", source, Field::STORE_YES, Field::INDEX_ANALYZED)); doc->add(newLucene(L"trans", trans, Field::STORE_YES, Field::INDEX_NOT_ANALYZED)); m_writer->updateDocument(newLucene(L"uuid", itemUUID), doc); } CATCH_AND_RETHROW_EXCEPTION } void Insert(const Language& srclang, const Language& lang, const std::wstring& source, const std::wstring& trans) override { Insert(srclang, lang, source, trans, 0); } void Insert(const Language& srclang, const Language& lang, const CatalogItemPtr& item) override { if (!lang.IsValid() || !srclang.IsValid()) return; // ignore translations with errors in them if (item->HasError()) return; // ignore untranslated, pre-translated and non-revised or unfinished translations if (item->IsFuzzy() || item->IsPreTranslated() || !item->IsTranslated()) return; // always store at least the singular translation Insert(srclang, lang, str::to_wstring(item->GetString()), str::to_wstring(item->GetTranslation())); // for plurals, try to support at least the simpler cases, with nplurals <= 2 if (item->HasPlural()) { switch (lang.nplurals()) { case 1: // e.g. Chinese, Japanese; store translation for both singular and plural Insert(srclang, lang, str::to_wstring(item->GetPluralString()), str::to_wstring(item->GetTranslation())); break; case 2: // e.g. Germanic or Romanic languages, same 2 forms as English Insert(srclang, lang, str::to_wstring(item->GetPluralString()), str::to_wstring(item->GetTranslation(1))); break; default: // not supported, only singular stored above break; } } } void Insert(const CatalogPtr& cat) override { Progress progress(cat->items().size()); 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(srclang, lang, item); progress.increment(); } } void Delete(const std::string& uuid) override { try { m_writer->deleteDocuments(newLucene(L"uuid", StringUtils::toUnicode(uuid))); } CATCH_AND_RETHROW_EXCEPTION } void DeleteAll() override { try { m_writer->deleteAll(); } CATCH_AND_RETHROW_EXCEPTION } private: IndexWriterPtr m_writer; }; void TranslationMemoryImpl::Init() { try { auto dir = newLucene(GetDatabaseDir()); m_analyzer = newLucene(LuceneVersion::LUCENE_CURRENT); m_writer = newLucene(dir, m_analyzer, IndexWriter::MaxFieldLengthLIMITED); m_writer->setMergeScheduler(newLucene()); // get the associated realtime reader & searcher: m_mng.reset(new SearcherManager(m_writer)); m_writerAPI = std::make_shared(m_writer); } CATCH_AND_RETHROW_EXCEPTION } // ---------------------------------------------------------------- // Singleton management // ---------------------------------------------------------------- static std::once_flag initializationFlag; TranslationMemory *TranslationMemory::ms_instance = nullptr; TranslationMemory& TranslationMemory::Get() { std::call_once(initializationFlag, []() { ms_instance = new TranslationMemory; }); return *ms_instance; } void TranslationMemory::CleanUp() { if (ms_instance) { delete ms_instance; ms_instance = nullptr; } } TranslationMemory::TranslationMemory() : m_impl(nullptr) { try { m_impl = new TranslationMemoryImpl; } catch (...) { m_error = std::current_exception(); } } TranslationMemory::~TranslationMemory() { delete m_impl; } // ---------------------------------------------------------------- // public API // ---------------------------------------------------------------- SuggestionsList TranslationMemory::Search(const Language& srclang, const Language& lang, const std::wstring& source) { if (!m_impl) std::rethrow_exception(m_error); return m_impl->Search(srclang, lang, source); } dispatch::future TranslationMemory::SuggestTranslation(const SuggestionQuery&& q) { try { return dispatch::make_ready_future(Search(q.srclang, q.lang, q.source)); } catch (...) { return dispatch::make_exceptional_future_from_current(); } } void TranslationMemory::Delete(const std::string& id) { auto tm = TranslationMemory::Get().GetWriter(); tm->Delete(id); tm->Commit(); } void TranslationMemory::ExportData(IOInterface& destination) { if (!m_impl) std::rethrow_exception(m_error); return m_impl->ExportData(destination); } void TranslationMemory::ImportData(std::function source) { if (!m_impl) std::rethrow_exception(m_error); return m_impl->ImportData(source); } std::shared_ptr TranslationMemory::GetWriter() { if (!m_impl) std::rethrow_exception(m_error); return m_impl->GetWriter(); } void TranslationMemory::DeleteAllAndReset() { try { auto tm = TranslationMemory::Get().GetWriter(); tm->DeleteAll(); tm->Commit(); } catch (...) { // Lucene database is corrupted, best we can do is delete it completely wxFileName::Rmdir(TranslationMemoryImpl::GetDatabaseDir(), wxPATH_RMDIR_RECURSIVE); // recreate implementation object TranslationMemoryImpl *impl = new TranslationMemoryImpl; std::swap(m_impl, impl); delete impl; m_error = nullptr; } } void TranslationMemory::GetStats(long& numDocs, long& fileSize) { if (!m_impl) std::rethrow_exception(m_error); m_impl->GetStats(numDocs, fileSize); } void TranslationMemory::SearchSubstring(IOInterface& destination, const Language& srclang, const Language& lang, const std::wstring& sourcePhrase) { if (!m_impl) std::rethrow_exception(m_error); m_impl->SearchSubstring(destination, srclang, lang, sourcePhrase); } poedit-3.6.3/src/tm/suggestions.cpp0000644000175100001660000000471515011674230012764 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2025 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 "suggestions.h" #include "concurrency.h" #include "transmem.h" class SuggestionsProviderImpl { public: SuggestionsProviderImpl() {} dispatch::future SuggestTranslation(SuggestionsBackend& backend, const SuggestionQuery&& q) { auto bck = &backend; return dispatch::async([=]{ // don't bother asking the backend if the language or query is invalid: if (!q.srclang.IsValid() || !q.lang.IsValid() || q.srclang == q.lang || q.source.empty()) { return dispatch::make_ready_future(SuggestionsList()); } // query the backend: return bck->SuggestTranslation(std::move(q)); }); } }; SuggestionsProvider::SuggestionsProvider() : m_impl(new SuggestionsProviderImpl) { } SuggestionsProvider::~SuggestionsProvider() { } dispatch::future SuggestionsProvider::SuggestTranslation(SuggestionsBackend& backend, const SuggestionQuery&& q) { return m_impl->SuggestTranslation(backend, std::move(q)); } void SuggestionsProvider::Delete(const Suggestion& s) { if (s.id.empty()) return; switch (s.source) { case Suggestion::Source::LocalTM: TranslationMemory::Get().Delete(s.id); break; } } poedit-3.6.3/src/manager.h0000644000175100001660000000670615011674230011053 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2001-2025 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_manager_h #define Poedit_manager_h #include #include #include #include class WXDLLIMPEXP_FWD_CORE wxListBox; class Catalog; #ifdef __WXMSW__ #include "windows/win10_menubar.h" typedef WithWindows10Menubar ManagerFrameBase; #else typedef wxFrame ManagerFrameBase; #endif /** ManagerFrame provides a convenient way to manage PO catalogs. The frame contains two lists: a list of projects and list of catalogs in active project, together with their statistics. */ class ManagerFrame : public ManagerFrameBase { public: /// Creates instance of manager or returns pointer to existing one. static ManagerFrame* Create(); /** Returns pointer to existing instance or NULL if there's no one. (I.e. unlike Create, this one doesn't create a new instance.) */ static ManagerFrame* Get() { return ms_instance; } /** Used to notify the manager that one of files changed and it has to update the list control. */ void NotifyFileChanged(const wxString& catalog); private: ManagerFrame(); ~ManagerFrame(); /** Pops up project settings dialog for project #id. \return false if user pressed Cancel, true otherwise */ template void EditProject(int id, TFunctor completionHandler); /// Deletes project void DeleteProject(int id); /** Updates projects list \param select id of project to be selected */ void UpdateListPrj(int select = 0); /// Updates catalogs list for given project void UpdateListCat(int id = -1); void OnNewProject(wxCommandEvent& event); void OnEditProject(wxCommandEvent& event); void OnDeleteProject(wxCommandEvent& event); void OnUpdateProject(wxCommandEvent& event); void OnSelectProject(wxCommandEvent& event); void OnOpenCatalog(wxListEvent& event); wxWindow *m_details; wxListCtrl *m_listCat; wxListBox *m_listPrj; wxStaticText *m_projectName; wxArrayString m_catalogs; int m_curPrj; static ManagerFrame *ms_instance; }; #endif // Poedit_manager_h poedit-3.6.3/src/filemonitor.cpp0000644000175100001660000001431515011674230012316 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2021-2025 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 "filemonitor.h" #include "edframe.h" #include "str_helpers.h" #include #include #include #include #ifdef __WXOSX__ // We can't use wxFileSystemWatcher, because it monitors the directory, not the file, and that // triggers scary warnings on macOS if the directory is ~/Desktop, ~/Downloads etc. // So instead, use a minimal sufficient NSFilePresenter for the monitoring #include @interface POFilePresenter : NSObject @property(readwrite, copy) NSURL* presentedItemURL; @property(readwrite, assign) NSOperationQueue* presentedItemOperationQueue; @property FileMonitor::Impl* owner; -(instancetype)initWithOwner:(FileMonitor::Impl*)owner URL:(NSURL*)url; @end class FileMonitor::Impl { public: Impl(const wxFileName& fn) { m_path = fn.GetFullPath(); NSURL *url = [NSURL fileURLWithPath:str::to_NS(m_path)]; m_presenter = [[POFilePresenter alloc] initWithOwner:this URL:url]; [NSFileCoordinator addFilePresenter:m_presenter]; } ~Impl() { m_presenter.owner = nullptr; [NSFileCoordinator removeFilePresenter:m_presenter]; m_presenter = nil; } void OnChanged() { FileMonitor::NotifyFileChanged(m_path); } private: wxString m_path; POFilePresenter *m_presenter; }; @implementation POFilePresenter -(instancetype)initWithOwner:(FileMonitor::Impl*)owner URL:(NSURL*)url { self = [super init]; if (self) { self.owner = owner; self.presentedItemURL = url; self.presentedItemOperationQueue = NSOperationQueue.mainQueue; } return self; } - (void)presentedItemDidChange { if (self.owner) self.owner->OnChanged(); } @end #else // !__WXOSX__ namespace { const int MONITORING_FLASG = wxFSW_EVENT_CREATE | wxFSW_EVENT_RENAME | wxFSW_EVENT_MODIFY; class FSWatcher { public: static auto Get() { static bool s_initialized = false; if (!ms_instance) { wxCHECK_MSG(!s_initialized, ms_instance, "using FSWatcher after cleanup"); ms_instance.reset(new FSWatcher); s_initialized = true; } return ms_instance; } void Add(const wxFileName& dir) { if (m_watcher) { m_watcher->Add(dir, MONITORING_FLASG); } else { m_pending.push_back(dir); return; } } void Remove(const wxFileName& dir) { if (m_watcher) { m_watcher->Remove(dir); } else { m_pending.erase(std::remove(m_pending.begin(), m_pending.end(), dir), m_pending.end()); } } void EventLoopStarted() { if (m_watcher) return; // already initiated m_watcher.reset(new wxFileSystemWatcher()); m_watcher->Bind(wxEVT_FSWATCHER, [=](wxFileSystemWatcherEvent& event) { event.Skip(); auto fn = event.GetNewPath(); if (!fn.IsOk()) return; FileMonitor::NotifyFileChanged(fn.GetFullPath()); }); for (auto& dir : m_pending) Add(dir); m_pending.clear(); } static void CleanUp() { ms_instance.reset(); } private: FSWatcher() {} std::vector m_pending; std::unique_ptr m_watcher; static std::shared_ptr ms_instance; }; std::shared_ptr FSWatcher::ms_instance; } // anonymous namespace class FileMonitor::Impl { public: Impl(const wxFileName& fn) { m_dir = wxFileName::DirName(fn.GetPath()); auto watcher = FSWatcher::Get(); if (watcher) watcher->Add(m_dir); m_watcher = watcher; } ~Impl() { // we may be being destroyed after FSWatcher::CleanUp was called, in which // case nothing needs to be done if (auto watcher = m_watcher.lock()) watcher->Remove(m_dir); } private: wxFileName m_dir; std::weak_ptr m_watcher; }; #endif // !__WXOSX__ void FileMonitor::EventLoopStarted() { #ifndef __WXOSX__ auto watcher = FSWatcher::Get(); if (watcher) watcher->EventLoopStarted(); #endif } void FileMonitor::CleanUp() { #ifndef __WXOSX__ FSWatcher::CleanUp(); #endif } FileMonitor::FileMonitor() : m_isRespondingGuard(false) { } FileMonitor::~FileMonitor() { Reset(); } void FileMonitor::SetFile(wxFileName file) { // unmonitor first (needed even if the filename didn't change) if (file == m_file) { m_loadTime = m_file.GetModificationTime(); return; } Reset(); m_file = file; if (!m_file.IsOk()) return; m_impl = std::make_unique(m_file); m_loadTime = m_file.GetModificationTime(); } void FileMonitor::Reset() { m_impl.reset(); m_file.Clear(); } void FileMonitor::NotifyFileChanged(const wxString& path) { auto window = PoeditFrame::Find(path); if (window) window->ReloadFileIfChanged(); } poedit-3.6.3/src/configuration.h0000644000175100001660000000751715011674230012311 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2025 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_configuration_h #define Poedit_configuration_h #include // What to do during msgmerge enum MergeBehavior { Merge_None, Merge_FuzzyMatch, Merge_UseTM }; // Pre-translation settings struct PretranslateSettings { bool onlyExact; bool exactNotFuzzy; }; /** High-level interface to configuration storage. Unlike wxConfig, this is thread-safe. */ class Config { public: static void Initialize(const std::wstring& configFile); static bool UseTM() { return Read("/use_tm", true); } static void UseTM(bool use) { Write("/use_tm", use); } static bool CheckForBetaUpdates() { return Read("/check_for_beta_updates", false); } static void CheckForBetaUpdates(bool use) { Write("/check_for_beta_updates", use); } static ::PretranslateSettings PretranslateSettings(); static void PretranslateSettings(::PretranslateSettings s); // What to do during merge static ::MergeBehavior MergeBehavior(); static void MergeBehavior(::MergeBehavior b); static bool ShowWarnings() { return Read("/show_warnings", true); } static void ShowWarnings(bool show) { Write("/show_warnings", show); } static std::string CloudLastProject() { return Read("/cloud_last_project", std::string()); } static void CloudLastProject(const std::string& prj) { return Write("/cloud_last_project", prj); } static std::string LocalazyMetadata() { return Read("/accounts/localazy/metadata", std::string()); } static void LocalazyMetadata(const std::string& prj) { return Write("/accounts/localazy/metadata", prj); } static time_t OTATranslationLastCheck() { return Read("/ota/last_check", (long)0); } static void OTATranslationLastCheck(time_t when) { Write("/ota/last_check", (long)when); } static std::string OTATranslationEtag() { return Read("/ota/etag", std::string()); } static void OTATranslationEtag(const std::string& etag) { Write("/ota/etag", etag); } private: template static T Read(const std::string& key, T defval) { T val = T(); if (Read(key, &val)) return val; else return defval; } static bool Read(const std::string& key, std::string *out); static bool Read(const std::string& key, std::wstring *out); static bool Read(const std::string& key, bool *out); static bool Read(const std::string& key, long *out); static void Write(const std::string& key, const std::string& value); static void Write(const std::string& key, const std::wstring& value); static void Write(const std::string& key, bool value); static void Write(const std::string& key, long value); }; #endif // Poedit_configuration_h poedit-3.6.3/src/cat_operations.cpp0000644000175100001660000000761715011674230013010 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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 "cat_operations.h" #include "catalog_po.h" #include "concurrency.h" #include "progress.h" #include #include namespace { inline MergeStats::Key make_key_full(const CatalogItemPtr& i) { return {i->GetRawString(), i->GetRawPluralString(), i->GetContext(), i->GetRawSymbolicId()}; } template inline void build_item_keys(CatalogPtr cat, TFunc&& f) { for (auto& i: cat->items()) { f(MakeKey(i), i); } } template inline void build_item_map(T& map, CatalogPtr cat) { build_item_keys(cat, [&](auto&& key, CatalogItemPtr i){ map.emplace(key, i); }); } template inline void build_item_set(T& map, CatalogPtr cat) { build_item_keys(cat, [&](auto&& key, CatalogItemPtr){ map.insert(key); }); } } // anonymous namespace void ComputeMergeStats(MergeStats& r, CatalogPtr po, CatalogPtr refcat) { Progress progress(2); r.added.clear(); r.removed.clear(); // First collect all strings from both sides, then diff the sets. // Run the two sides in parallel for speed up on large files. std::set strsThis, strsRef; auto collect1 = dispatch::async([&]{ build_item_set(strsThis, po); }); auto collect2 = dispatch::async([&]{ build_item_set(strsRef, refcat); }); collect1.get(); collect2.get(); progress.increment(); auto add1 = dispatch::async([&] { for (auto& i: strsThis) { if (strsRef.find(i) == strsRef.end()) r.removed.push_back(i); } }); auto add2 = dispatch::async([&] { for (auto& i: strsRef) { if (strsThis.find(i) == strsThis.end()) r.added.push_back(i); } }); add1.get(); add2.get(); progress.increment(); } MergeResult MergeCatalogWithReferencePO(POCatalogPtr catalog, POCatalogPtr ref) { if (!catalog || !ref) return {}; if (!catalog->UpdateFromPOT(ref)) return {}; return {catalog}; } MergeResult MergeCatalogWithReferenceRaw(CatalogPtr catalog, CatalogPtr reference) { auto po_catalog = std::dynamic_pointer_cast(catalog); auto po_ref = std::dynamic_pointer_cast(reference); return MergeCatalogWithReferencePO(po_catalog, po_ref); } MergeResult MergeCatalogWithReference(CatalogPtr catalog, CatalogPtr reference) { auto sideloaded = catalog->GetSideloadedSourceData(); auto r = MergeCatalogWithReferenceRaw(catalog, reference); if (sideloaded && r.updated_catalog) { r.updated_catalog->SideloadSourceDataFromReferenceFile(sideloaded->reference_file); } return r; } poedit-3.6.3/src/catalog_xliff.cpp0000644000175100001660000006734215011674230012601 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2018-2025 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 "catalog_xliff.h" #include "configuration.h" #include "str_helpers.h" #include "utility.h" #include #include #include #include #include #include using namespace pugi; namespace { // Flags required for correct parsing of XML files with no loss of information // FIXME: This includes parse_eol, which is undesirable: it converts files to Unix // line endings on save. OTOH without it, we'd have to do the conversion // manually both ways when extracting _and_ editing text. constexpr auto PUGI_PARSE_FLAGS = parse_full | parse_ws_pcdata | parse_fragment; // Skip over a tag, starting at its '<' with forward iterator or '>' with reverse; // return iterator right after the tag or end if malformed template inline Iter skip_over_tag(Iter begin, Iter end) { const char closing = (*begin == '<') ? '>' : '<'; Iter i = begin; for (++i; i != end && *i != closing; ++i) { const char c = *i; if (c == '\'' || c == '"') { ++i; while (i != end && *i != c) ++i; if (i == end) return end; } } return (i == end) ? end : ++i; } // does the node have any as children? inline bool has_child_elements(xml_node node) { return node.find_child([](xml_node n){ return n.type() == node_element; }); } inline bool is_self_closing(xml_node node) { return node.type() == node_element && !node.first_child(); } inline std::string get_node_markup(xml_node node) { std::ostringstream s; node.print(s, "", format_raw); return s.str(); } std::string get_subtree_markup(xml_node node) { std::ostringstream s; for (auto c: node.children()) c.print(s, "", format_raw); return s.str(); } inline void remove_all_children(xml_node node) { while (auto last = node.last_child()) node.remove_child(last); } inline xml_attribute attribute(xml_node node, const char *name) { auto a = node.attribute(name); return a ? a : node.append_attribute(name); } inline bool has_multiple_text_children(xml_node node) { bool alreadyFoundOne = false; for (auto child = node.first_child(); child; child = child.next_sibling()) { if (child.type() == node_pcdata || child.type() == node_cdata) { if (alreadyFoundOne) return true; else alreadyFoundOne = true; } } return false; } inline std::string get_node_text(xml_node node) { // xml_node::text() returns the first text child, but that's not enough, // because some (weird) files in the wild mix text and CDATA content if (has_multiple_text_children(node)) { std::string s; for (auto child = node.first_child(); child; child = child.next_sibling()) if (child.type() == node_pcdata || child.type() == node_cdata) s.append(child.text().get()); return s; } else { return node.text().get(); } } inline void set_node_text(xml_node node, const std::string& text) { // see get_node_text() for explanation if (has_multiple_text_children(node)) remove_all_children(node); node.text() = text.c_str(); } inline std::string get_node_text_or_markup(xml_node node, bool isPlainText) { if (isPlainText) return get_node_text(node); else return get_subtree_markup(node); } inline void apply_placeholders(std::string& s, const XLIFFStringMetadata& metadata) { for (auto& ph: metadata.substitutions) boost::replace_all(s, ph.markup, ph.placeholder); } inline std::string get_node_text_with_metadata(xml_node node, const XLIFFStringMetadata& metadata) { auto s = get_node_text_or_markup(node, metadata.isPlainText); if (!metadata.isPlainText) apply_placeholders(s, metadata); return s; } bool set_node_text_with_metadata(xml_node node, std::string&& text, const XLIFFStringMetadata& metadata) { if (metadata.isPlainText) { set_node_text(node, text); return true; } else { std::string s(std::move(text)); for (auto& ph: metadata.substitutions) boost::replace_all(s, ph.placeholder, ph.markup); remove_all_children(node); auto result = node.append_buffer(s.c_str(), s.size(), PUGI_PARSE_FLAGS, encoding_utf8); switch (result.status) { case status_no_document_element: node.text() = s.c_str(); return true; case status_ok: return true; default: return false; } } } /// Check if a string contains only digit (e.g. "42") inline bool is_numeric_only(const std::string& s) { return std::all_of(s.begin(), s.end(), [](char c){ return c >= '0' && c <= '9'; }); } inline void xliff_prefix_id(std::string& id, xml_node node, const char *nameAttr) { std::string prefix; for (auto p = node.parent(); p; p = p.parent()) { if (strcmp(p.name(), "group") == 0) { auto gid = p.attribute(nameAttr); if (!gid) gid = p.attribute("id"); if (gid) { prefix.insert(0, " / "); prefix.insert(0, gid.value()); continue; // go to grandparent } } // stop at first non-group or unnamed parent: break; } if (!prefix.empty()) id.insert(0, prefix); } class MetadataExtractor : public pugi::xml_tree_walker { public: XLIFFStringMetadata metadata; std::string extractedText; bool begin(xml_node& node) override { const bool has_children = has_child_elements(node); metadata.isPlainText = !has_children; extractedText = get_node_text_or_markup(node, metadata.isPlainText); return has_children; } bool for_each(pugi::xml_node& node) override { if (node.type() == node_element) OnTag(node.name(), node); return true; } bool end(xml_node&) override { if (!metadata.isPlainText) FinalizeMetadata(); apply_placeholders(extractedText, metadata); return true; } protected: virtual void OnTag(const std::string& name, pugi::xml_node node) = 0; virtual std::string ExtractPlaceholderDisplay(pugi::xml_node node) = 0; enum PlaceholderKind { SINGLE, GROUP }; void AddPlaceholder(pugi::xml_node node, PlaceholderKind kind) { std::string id = node.attribute("id").value(); if (id.empty()) return; // malformed - no ID, can't do anything about it if (kind == GROUP && is_self_closing(node)) kind = SINGLE; auto markup = get_node_markup(node); if (m_foundMarkup.find(markup) != m_foundMarkup.end()) return; m_foundMarkup.insert(markup); PlaceholderInfo phi {kind, id}; std::string subst; switch (kind) { case SINGLE: { phi.markup = markup; subst = ExtractPlaceholderDisplay(node); if (subst.empty() || boost::all(subst, boost::is_space())) subst = id; subst = PrettifyPlaceholder(subst); break; } case GROUP: { subst = ""; // Locate closing tag. Since we know this is a well-formed XML node, // it ends with and searching for the last '<' gives us the position. auto opening_tag_end = skip_over_tag(markup.begin(), markup.end()); auto closing_tag_start = skip_over_tag(markup.rbegin(), markup.rend()); wxASSERT( closing_tag_start != markup.rend() ); wxASSERT( closing_tag_start.base() > opening_tag_end ); phi.markup.assign(markup.begin(), opening_tag_end); phi.markupClosing.assign(closing_tag_start.base(), markup.end()); break; } } auto iexisting = m_placeholders.find(subst); if (iexisting == m_placeholders.end()) { m_placeholders.emplace(subst, phi); } else { // conflict between duplicate placeholders; use ID instead of equiv-text auto existing = iexisting->second; m_placeholders.erase(iexisting); switch (kind) { case SINGLE: { m_placeholders.emplace(PrettifyPlaceholder(existing.id), existing); m_placeholders.emplace(PrettifyPlaceholder(id), phi); break; } case GROUP: { m_placeholders.emplace("", existing); m_placeholders.emplace("", phi); break; } } } } void FinalizeMetadata() { // Construct substitutions table for metadata. While doing so, verify // that no placeholder conflicts with plain text, to ensure roundtripping // is safe. std::string removedPlaceholderMarkup = extractedText; for (auto& ph: m_placeholders) { boost::erase_all(removedPlaceholderMarkup, ph.second.markup); if (!ph.second.markupClosing.empty()) boost::erase_all(removedPlaceholderMarkup, ph.second.markupClosing); } for (auto& ph: m_placeholders) { auto phtext = ph.first; switch (ph.second.kind) { case SINGLE: { while (removedPlaceholderMarkup.find(phtext) != std::string::npos) phtext = phtext.front() + phtext + phtext.back(); metadata.substitutions.push_back({phtext, ph.second.markup}); break; } case GROUP: { const bool hasClosingMarkup = !ph.second.markupClosing.empty(); std::string phclose({'<', '/', phtext[1], '>'}); while (removedPlaceholderMarkup.find(phtext) != std::string::npos || (hasClosingMarkup && removedPlaceholderMarkup.find(phclose) != std::string::npos)) { phtext.insert(1, 1, phtext[1]); if (hasClosingMarkup) phclose.insert(2, 1, phclose[2]); } metadata.substitutions.push_back({phtext, ph.second.markup}); if (hasClosingMarkup) metadata.substitutions.push_back({phclose, ph.second.markupClosing}); break; } } } } inline std::string PrettifyPlaceholder(const std::string& s) const { if (s.empty()) return "{}"; const char f = s.front(); const char b = s.back(); if ((f == '{' && b == '}') || (f == '%' && b == '%') || (f == '<' && b == '>')) return s; // {foo} {{foo}} %foo% else return '{' + s + '}'; } private: struct PlaceholderInfo { PlaceholderKind kind; std::string id; std::string markup, markupClosing; }; std::map m_placeholders; std::set m_foundMarkup; }; class XLIFF12MetadataExtractor : public MetadataExtractor { protected: void OnTag(const std::string& name, pugi::xml_node node) override { if (name == "x") AddPlaceholder(node, SINGLE); else if (name == "g") AddPlaceholder(node, GROUP); } std::string ExtractPlaceholderDisplay(pugi::xml_node node) override { return node.attribute("equiv-text").value(); } }; class XLIFF2MetadataExtractor : public MetadataExtractor { protected: void OnTag(const std::string& name, pugi::xml_node node) override { if (name == "ph") AddPlaceholder(node, SINGLE); else if (name == "pc") AddPlaceholder(node, GROUP); } std::string ExtractPlaceholderDisplay(pugi::xml_node node) override { auto disp = node.attribute("disp"); if (disp) return disp.value(); else return node.attribute("equiv").value(); } }; } // anonymous namespace XLIFFReadException::XLIFFReadException(const wxString& what) : XLIFFException(wxString::Format(_(L"Error while loading XLIFF file: %s"), what)) {} XLIFFCatalogItem::document_lock::document_lock(XLIFFCatalogItem *parent) : std::lock_guard(parent->m_owner.m_documentMutex) { } bool XLIFFCatalog::HasCapability(Catalog::Cap cap) const { switch (cap) { case Cap::Translations: return true; case Cap::LanguageSetting: return true; case Cap::UserComments: return false; // FIXME: for now case Cap::FuzzyTranslations: return true; } return false; // silence VC++ warning } bool XLIFFCatalog::CanLoadFile(const wxString& extension) { return extension == "xlf" || extension == "xliff"; } std::shared_ptr XLIFFCatalog::OpenImpl(const wxString& filename, InstanceCreatorImpl& creator) { xml_document doc; auto result = doc.load_file(filename.fn_str(), PUGI_PARSE_FLAGS); if (!result) BOOST_THROW_EXCEPTION(XLIFFReadException(result.description())); auto xliff_root = doc.child("xliff"); std::string xliff_version = xliff_root.attribute("version").value(); auto cat = creator.CreateFromDoc(std::move(doc), xliff_version); if (!cat) BOOST_THROW_EXCEPTION(XLIFFReadException(wxString::Format(_("unsupported version (%s)"), xliff_version))); cat->Parse(xliff_root); return cat; } std::shared_ptr XLIFFCatalog::Open(const wxString& filename) { struct Creator : public InstanceCreatorImpl { std::shared_ptr CreateFromDoc(pugi::xml_document&& doc, const std::string& xliff_version) override { if (xliff_version == "1.0") return std::make_shared(std::move(doc), 0); else if (xliff_version == "1.1") return std::make_shared(std::move(doc), 1); else if (xliff_version == "1.2") return std::make_shared(std::move(doc), 2); else if (xliff_version == "2.0" || xliff_version == "2.1") return std::make_shared(std::move(doc)); else return nullptr; } }; Creator c; return OpenImpl(filename, c); } bool XLIFFCatalog::Save(const wxString& filename, bool /*save_mo*/, ValidationResults& validation_results, CompilationStatus& /*mo_compilation_status*/) { if ( wxFileExists(filename) && !wxFile::Access(filename, wxFile::write) ) { wxLogError(_(L"File “%s†is read-only and cannot be saved.\nPlease save it under different name."), filename.c_str()); return false; } TempOutputFileFor tempfile(filename); m_doc.save_file(tempfile.FileName().fn_str(), "\t", format_raw); if ( !tempfile.Commit() ) { wxLogError(_(L"Couldn’t save file %s."), filename.c_str()); return false; } validation_results = Validate(); SetFileName(filename); return true; } std::string XLIFFCatalog::SaveToBuffer() { std::ostringstream s; m_doc.save(s, "\t", format_raw); return s.str(); } std::string XLIFFCatalog::GetXPathValue(const char* xpath) const { auto x = m_doc.child("xliff").select_node(xpath); auto v = x.attribute().value(); if (v) return v; v = x.node().value(); if (v) return v; return ""; } class XLIFF12CatalogItem : public XLIFFCatalogItem { public: XLIFF12CatalogItem(XLIFF1Catalog& owner, int itemId, xml_node node) : XLIFFCatalogItem(owner, itemId, node) { auto source = node.child("source"); XLIFF12MetadataExtractor extractor; source.traverse(extractor); m_metadata = std::move(extractor.metadata); m_string = str::to_wx(extractor.extractedText); std::string id = node.attribute("resname").value(); if (id.empty()) id = node.attribute("id").value(); // some tools (e.g. Xcode, tool-id="com.apple.dt.xcode") use ID same as text; numeric only is useless to translator too if (!id.empty() && id != m_string && !is_numeric_only(id)) { xliff_prefix_id(id, node, "resname"); m_symbolicId = str::to_wx(id); } auto target = node.child("target"); if (target) { auto trans_text = str::to_wx(get_node_text_with_metadata(target, m_metadata)); m_translations.push_back(trans_text); m_isTranslated = !trans_text.empty(); std::string state = target.attribute("state").value(); if (state == "needs-adaptation" || state == "needs-l10n") m_isFuzzy = true; else if (m_isTranslated && (state == "new" || state == "needs-translation" || state == "needs-review-translation" || state == "needs-review-l10n")) m_isFuzzy = true; } else { m_translations.push_back(""); } for (auto note: node.children("note")) { std::string noteText = note.text().get(); if (noteText == "No comment provided by engineer.") // Xcode does that continue; if (!m_extractedComments.empty()) m_extractedComments.push_back(""); m_extractedComments.push_back(str::to_wx(noteText)); } } void UpdateInternalRepresentation() override { wxASSERT( m_translations.size() == 1 ); // no plurals // modifications in the pugixml tree can affect other nodes, we must lock the entire document document_lock lock(this); auto target = m_node.child("target"); if (!target) { auto ws_after = m_node.first_child(); auto prev = m_node.child("seg-source"); if (!prev) prev = m_node.child("source"); target = m_node.insert_child_after("target", prev); // indent the tag in the same way is indented under its parent: if (ws_after.type() == node_pcdata) m_node.insert_child_after(node_pcdata, prev).text() = ws_after.text().get(); } auto trans = GetTranslation(); if (!trans.empty()) { if (!set_node_text_with_metadata(target, str::to_utf8(trans), m_metadata)) { // TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML SetIssue(Issue::Error, _("Broken markup in translation string.")); } } else // no translation { remove_all_children(target); // Ensure the node is shown as rather than . // The spec is unclear in this regard and the former is more expected. target.text() = ""; } Impl_UpdateTargetState(target, !trans.empty(), m_isFuzzy); } // overridable for XLIFF 1.x differences virtual void Impl_UpdateTargetState(pugi::xml_node& target, bool isTranslated, bool isFuzzy) { target.remove_attribute("state-qualifier"); if (isTranslated) attribute(target, "state") = isFuzzy ? "needs-l10n" : "translated"; else attribute(target, "state") = "needs-translation"; } wxArrayString GetReferences() const override { wxArrayString refs; for (auto loc: m_node.select_nodes(".//context-group[@purpose='location']")) { wxString file, line; for (auto ctxt: loc.node().children("context")) { auto type = ctxt.attribute("context-type").value(); if (strcmp(type, "sourcefile") == 0) file = str::to_wx(ctxt.text().get()); else if (strcmp(type, "linenumber") == 0) line = ":" + str::to_wx(ctxt.text().get()); } if (!file.empty()) refs.push_back(file + line); } return refs; } }; class XLIFF10CatalogItem : public XLIFF12CatalogItem { public: using XLIFF12CatalogItem::XLIFF12CatalogItem; void Impl_UpdateTargetState(pugi::xml_node& target, bool isTranslated, bool isFuzzy) override { if (isTranslated && !isFuzzy) target.remove_attribute("state"); else attribute(target, "state") = "needs-translation"; } }; void XLIFF1Catalog::Parse(pugi::xml_node root) { int id = 0; bool extractedLanguage = false; for (auto file: root.children("file")) { // In XLIFF, embedded sub-files may have different languages, although it is // unclear how common this is practice. Poedit doesn't support this yet, so // take the first file's language only. if (!extractedLanguage) { m_sourceLanguage = Language::FromLanguageTag(file.attribute("source-language").value()); m_language = Language::FromLanguageTag(file.attribute("target-language").value()); extractedLanguage = true; } for (auto unit: file.select_nodes(".//trans-unit")) { auto node = unit.node(); if (strcmp(node.attribute("translate").value(), "no") == 0) continue; if (m_subversion == 0) m_items.push_back(std::make_shared(*this, ++id, node)); else m_items.push_back(std::make_shared(*this, ++id, node)); } } } void XLIFF1Catalog::SetLanguage(Language lang) { XLIFFCatalog::SetLanguage(lang); for (auto file: GetXMLRoot().children("file")) { attribute(file, "target-language") = lang.LanguageTag().c_str(); } } class XLIFF2CatalogItem : public XLIFFCatalogItem { public: XLIFF2CatalogItem(XLIFF2Catalog& owner, int itemId, xml_node node) : XLIFFCatalogItem(owner, itemId, node) { auto source = node.child("source"); XLIFF2MetadataExtractor extractor; source.traverse(extractor); m_metadata = std::move(extractor.metadata); m_string = str::to_wx(extractor.extractedText); std::string id = unit().attribute("name").value(); if (id.empty()) id = unit().attribute("id").value(); // some tools (e.g. Xcode, tool-id="com.apple.dt.xcode") use ID same as text; numeric only is useless to translator too if (!id.empty() && id != m_string && !is_numeric_only(id)) { xliff_prefix_id(id, unit(), "name"); m_symbolicId = str::to_wx(id); } auto target = node.child("target"); if (target) { auto trans_text = str::to_wx(get_node_text_with_metadata(target, m_metadata)); m_translations.push_back(trans_text); m_isTranslated = !trans_text.empty(); } else { m_translations.push_back(""); } std::string state = node.attribute("state").value(); std::string substate = node.attribute("subState").value(); m_isFuzzy = (m_isTranslated && state == "initial") || (substate == "poedit:fuzzy"); for (auto note: unit().select_nodes(".//note[not(@category='location')]")) { std::string noteText = note.node().text().get(); if (!m_extractedComments.empty()) m_extractedComments.push_back(""); m_extractedComments.push_back(str::to_wx(noteText)); } } void UpdateInternalRepresentation() override { wxASSERT( m_translations.size() == 1 ); // no plurals // modifications in the pugixml tree can affect other nodes, we must lock the entire document document_lock lock(this); auto target = m_node.child("target"); if (!target) { auto ws_after = m_node.first_child(); auto source = m_node.child("source"); target = m_node.insert_child_after("target", source); // indent the tag in the same way is indented under its parent: if (ws_after.type() == node_pcdata) m_node.insert_child_after(node_pcdata, source).text() = ws_after.text().get(); } auto trans = GetTranslation(); if (!trans.empty()) { attribute(m_node, "state") = "translated"; if (m_isFuzzy) attribute(m_node, "subState") = "poedit:fuzzy"; else m_node.remove_attribute("subState"); if (!set_node_text_with_metadata(target, str::to_utf8(trans), m_metadata)) { // TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML SetIssue(Issue::Error, _("Broken markup in translation string.")); } } else // no translation { m_node.remove_attribute("state"); m_node.remove_attribute("subState"); remove_all_children(target); // Ensure the node is shown as rather than . // The spec is unclear in this regard and the former is more expected. target.text() = ""; } } wxArrayString GetReferences() const override { wxArrayString refs; for (auto note: unit().select_nodes(".//note[@category='location']")) { refs.push_back(str::to_wx(note.node().text().get())); } return refs; } protected: xml_node unit() const { return m_node.parent(); } }; void XLIFF2Catalog::Parse(pugi::xml_node root) { m_sourceLanguage = Language::FromLanguageTag(root.attribute("srcLang").value()); m_language = Language::FromLanguageTag(root.attribute("trgLang").value()); int id = 0; for (auto segment: root.select_nodes(".//segment")) { auto node = segment.node(); if (strcmp(node.parent().attribute("translate").value(), "no") == 0) continue; m_items.push_back(std::make_shared(*this, ++id, node)); } } void XLIFF2Catalog::SetLanguage(Language lang) { XLIFFCatalog::SetLanguage(lang); attribute(GetXMLRoot(), "trgLang") = lang.LanguageTag().c_str(); } poedit-3.6.3/src/concurrency.h0000644000175100001660000005021015011674230011760 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2010-2025 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 #if defined(__WXOSX__) && defined(__clang__) #define HAVE_DISPATCH #endif #if defined(_MSC_VER) && (_MSC_VER >= 1800) #define HAVE_PPL #define USE_PPL_DISPATCH #endif #ifndef BOOST_CHRONO_HEADER_ONLY #define BOOST_CHRONO_HEADER_ONLY #endif #ifndef BOOST_THREAD_VERSION #define BOOST_THREAD_VERSION 4 #define BOOST_THREAD_PROVIDES_EXECUTORS #endif #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wshadow" #pragma clang diagnostic ignored "-Wnon-virtual-dtor" #endif #include #include #ifdef __clang__ #pragma clang diagnostic pop #endif #include #include #if !defined(HAVE_DISPATCH) && !defined(USE_PPL_DISPATCH) #include #endif #if defined(HAVE_PPL) #if defined(_MSC_VER) #include #include namespace pplx = Concurrency; #else #include #endif #endif #include #include #include #include #include #include namespace dispatch { // forward declarations template class future; // implementation details namespace detail { class custom_executor : public boost::executors::executor { public: custom_executor() : m_closed(false) {} void close() override { m_closed.store(true, std::memory_order_release); } bool closed() override { return m_closed.load(std::memory_order_acquire); } bool try_executing_one() override { return false; } private: std::atomic m_closed; }; #if defined(HAVE_DISPATCH) extern void dispatch_async_cxx(boost::executors::work&& f); class background_queue_executor : public custom_executor { public: static background_queue_executor& get(); void submit(work&& closure) override { if (closed()) return; dispatch_async_cxx(std::forward(closure)); } }; #elif defined(USE_PPL_DISPATCH) class background_queue_executor : public custom_executor { public: static background_queue_executor& get(); void submit(work&& closure) { if (closed()) return; pplx::create_task([f{std::move(closure)}]() mutable { f(); }); } }; #else // !HAVE_DISPATCH && !USE_PPL_DISPATCH class background_queue_executor : public boost::basic_thread_pool { public: static background_queue_executor& get(); void submit(work&& closure) { if (closed()) return; boost::basic_thread_pool::submit(std::forward(closure)); } }; #endif // HAVE_DISPATCH etc. class main_thread_executor : public custom_executor { public: static main_thread_executor& get(); void submit(work&& closure) { if (closed()) return; #ifdef HAVE_DISPATCH // Note that we intentially don't use dispatch_async_cxx() and dispatch_get_main_queue() here, // but rather choose to channel everything through wxApp::CallAfter(). This is because // the main queue is serial and won't process further blocks if it is already executing another. // This leads to deadlocks when e.g. a modal dialog is shown, from .then_on_main() handler, and // it then needs to schedule something on the main thread again. // See e.g. https://www.thecave.com/2015/08/10/dispatch-async-to-main-queue-doesnt-work-with-modal-window-on-mac-os-x/ #endif if (wxTheApp) { wxTheApp->CallAfter(std::forward(closure)); } // else: deep in app shutdown, can't post to main thread's event loop anymore } }; // Helper exception for when then_on_window() isn't called because the wxWindow // was already dismissed by the user class window_dismissed : public std::exception { }; // Determines continuation's argument type // (with thanks to http://stackoverflow.com/a/21486468/237188) template struct argument_type : public argument_type { }; template struct argument_type { using arg0_type = void; }; template struct argument_type { using arg0_type = typename std::tuple_element<0, std::tuple>::type; }; // Helper for calling a continuation. Unpacks futures for continuations that // take the value as its argument and leaves it unmodified for those that take // a future argument. template struct continuation_calling_helper { static T unpack_arg(boost::future&& arg) { return arg.get(); } }; template struct continuation_calling_helper> { static boost::future unpack_arg(boost::future&& arg) { return std::move(arg); } }; template<> struct continuation_calling_helper { static void touch_arg(boost::future& arg) { arg.get(); } }; // Helper to unwrap dispatch::futures into boost::futures so that implicit // unwrapping of boost::future> into boost::future works template struct future_unwrapper { typedef T type; typedef T return_type; template static return_type call_and_unwrap(F&& f, Args&&... args) { return f(std::forward(args)...); } }; template<> struct future_unwrapper { typedef void type; typedef void return_type; template static void call_and_unwrap(F&& f, Args&&... args) { f(std::forward(args)...); } }; template struct future_unwrapper> { typedef T type; typedef boost::future return_type; template static return_type call_and_unwrap(F&& f, Args&&... args) { return f(std::forward(args)...).move_to_boost(); } }; template inline auto call_and_unwrap_if_future(F&& f, Args&&... args) -> typename future_unwrapper::type>::return_type { return future_unwrapper::type>::call_and_unwrap(std::forward(f), std::forward(args)...); } } // namespace detail // ---------------------------------------------------------------------- // Tasks (aka futures) // ---------------------------------------------------------------------- using boost::exception_ptr; using boost::future_status; template using promise = boost::promise; exception_ptr current_exception(); // Can't use std::current_exception with boost::promise, must use boost // version instead. This helper takes care of it. template void set_current_exception(boost::promise& pr) { pr.set_exception(current_exception()); } template void set_current_exception(std::shared_ptr> pr) { set_current_exception(*pr); } #define RETHROW_WITH_BOOST_EXCEPTION_PTR_SUPPORT() catch ( ... ) { boost::rethrow_exception(dispatch::current_exception()); } template class future_base { public: future_base() {} future_base(FutureType&& future) : f_(std::move(future.m_future)) {} future_base(boost::future&& future) : f_(std::move(future)) {} future_base(boost::future>&& future) : f_(future.unwrap()) {} FutureType& operator=(FutureType&& other) { f_ = std::move(other.f_); } FutureType& operator=(const FutureType& other) = delete; void wait() const { f_.wait(); } template future_status wait_for(const boost::chrono::duration& timeout_duration) const { return f_.wait_for(timeout_duration); } bool valid() const { return f_.valid(); } // Convenient async exception catching: template auto catch_ex(F&& continuation) -> future; template auto catch_all(F&& continuation) -> future; boost::future move_to_boost() { return std::move(f_); } protected: boost::future f_; }; /// More advanced wrapper around boost::future template class future : public future_base> { public: future() {} using future_base>::future_base; #ifdef HAVE_PPL future(pplx::task&& task) { auto pr = std::make_shared>(); this->f_ = pr->get_future(); task.then([pr](pplx::task x) { try { pr->set_value(x.get()); } catch (...) { set_current_exception(pr); } }); } #endif T get() { return this->f_.get(); } template auto then(F&& continuation) -> future::arg0_type>::type>::type> { typedef detail::continuation_calling_helper::type>::arg0_type> cch; return this->f_.then(detail::background_queue_executor::get(), [f{std::move(continuation)}](boost::future x){ try { return detail::call_and_unwrap_if_future(f, cch::unpack_arg(std::move(x))); } RETHROW_WITH_BOOST_EXCEPTION_PTR_SUPPORT(); }); } template auto then_on_main(F&& continuation) -> future::arg0_type>::type>::type> { typedef detail::continuation_calling_helper::type>::arg0_type> cch; return this->f_.then(detail::main_thread_executor::get(), [f{std::move(continuation)}](boost::future x) { try { return detail::call_and_unwrap_if_future(f, cch::unpack_arg(std::move(x))); } RETHROW_WITH_BOOST_EXCEPTION_PTR_SUPPORT(); }); } template auto then_on_window(Window *self, F&& continuation) -> future::type>::type> { typedef detail::continuation_calling_helper::type>::arg0_type> cch; wxWeakRef weak(self); return this->f_.then(detail::main_thread_executor::get(), [weak, f{std::move(continuation)}](boost::future x){ try { if (weak) return detail::call_and_unwrap_if_future(f, cch::unpack_arg(std::move(x))); else BOOST_THROW_EXCEPTION(detail::window_dismissed()); } RETHROW_WITH_BOOST_EXCEPTION_PTR_SUPPORT(); }); }; template auto then_on_window(Window *self, void (Window::*method)(T)) { return then_on_window(self, [self,method](T x) { ((*self).*method)(x); }); } }; template<> class future : public future_base> { public: future() {} using future_base>::future_base; #ifdef HAVE_PPL future(pplx::task&& task) { auto pr = std::make_shared>(); this->f_ = pr->get_future(); task.then([pr](pplx::task x) { try { x.get(); pr->set_value(); } catch (...) { set_current_exception(pr); } }); } #endif void get() { this->f_.get(); } template auto then(F&& continuation) -> future::type>::type> { typedef detail::continuation_calling_helper::type>::arg0_type> cch; return this->f_.then(detail::background_queue_executor::get(), [f{std::move(continuation)}](boost::future x){ try { cch::touch_arg(x); return detail::call_and_unwrap_if_future(f); } RETHROW_WITH_BOOST_EXCEPTION_PTR_SUPPORT(); }); } template auto then_on_main(F&& continuation) -> future::type>::type> { typedef detail::continuation_calling_helper::type>::arg0_type> cch; return this->f_.then(detail::main_thread_executor::get(), [f{std::move(continuation)}](boost::future x){ try { cch::touch_arg(x); detail::call_and_unwrap_if_future(f); } RETHROW_WITH_BOOST_EXCEPTION_PTR_SUPPORT(); }); } template auto then_on_window(Window *self, F&& continuation) -> future::type>::type> { typedef detail::continuation_calling_helper::type>::arg0_type> cch; wxWeakRef weak(self); return this->f_.then(detail::main_thread_executor::get(), [weak, f{std::move(continuation)}](boost::future x){ try { if (weak) { cch::touch_arg(x); detail::call_and_unwrap_if_future(f); } else BOOST_THROW_EXCEPTION(detail::window_dismissed()); } RETHROW_WITH_BOOST_EXCEPTION_PTR_SUPPORT(); }); }; template auto then_on_window(Window *self, void (Window::*method)()) { return then_on_window(self, [self,method]() { ((*self).*method)(); }); } private: boost::future m_future; }; template template auto future_base::catch_ex(F&& continuation) -> future { return f_.then(detail::main_thread_executor::get(), [f{std::forward(continuation)}](boost::future x) { try { x.get(); } catch (Ex& ex) { try { f(ex); } RETHROW_WITH_BOOST_EXCEPTION_PTR_SUPPORT(); } }); } template template auto future_base::catch_all(F&& continuation) -> future { return f_.then(detail::main_thread_executor::get(), [f{std::forward(continuation)}](boost::future x) { try { x.get(); } catch (detail::window_dismissed&) { // ignore this one, it's not an error } catch (...) { try { f(dispatch::current_exception()); } RETHROW_WITH_BOOST_EXCEPTION_PTR_SUPPORT(); } }); } /// Create ready future, i.e. with directly set value template auto make_ready_future(T&& value) -> future { return boost::make_ready_future(std::forward(value)); } inline future make_ready_future() { return boost::make_ready_future(); } template auto make_exceptional_future_from_current() -> future { promise p; set_current_exception(p); return p.get_future(); } template auto make_exceptional_future(exception_ptr ex) -> future { promise p; p.set_exception(ex); return p.get_future(); } /// Chaining of promises template void fulfill_promise_from_future(std::shared_ptr> p, future&& f) { f.then([p](future val) { try { p->set_value(val.get()); } catch (...) { set_current_exception(p); } }); } /// Enqueue an operation for background processing. template inline auto async(F&& f) -> future::type>::type> { return {boost::async(detail::background_queue_executor::get(), [f{std::forward(f)}]() { try { return detail::call_and_unwrap_if_future(f); } RETHROW_WITH_BOOST_EXCEPTION_PTR_SUPPORT(); })}; } /// Run an operation on the main thread. template inline auto on_main(F&& f) -> future::type>::type> { return {boost::async(detail::main_thread_executor::get(), [f{std::forward(f)}]() { try { return detail::call_and_unwrap_if_future(f); } RETHROW_WITH_BOOST_EXCEPTION_PTR_SUPPORT(); })}; } /// Helper exception for when the task was cancelled via cancellation_token class cancellation_exception : public std::exception { }; /// MT-safe token for cancelling long-running async operations. class cancellation_token { public: cancellation_token() : m_cancelled(false) {} /// Signal the operation to cancel when the return value is no longer wanted void cancel() { m_cancelled.store(true, std::memory_order_release); } /// Should the operation be cancelled? bool is_cancelled() const { return m_cancelled.load(std::memory_order_acquire); } /// Throw execution_cancelled if the operation should be cancelled void throw_if_cancelled() const { if (is_cancelled()) BOOST_THROW_EXCEPTION( cancellation_exception() ); } private: std::atomic m_cancelled; }; /// Pointer to cancellation_token typedef std::shared_ptr cancellation_token_ptr; /// @internal Call on shutdown to terminate queues and close executors extern void cleanup(); } // namespace dispatch #endif // Poedit_concurrency_h poedit-3.6.3/src/editing_area.h0000644000175100001660000001167215011674230012052 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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_editing_area_h #define Poedit_editing_area_h #include "catalog.h" #include #include #include class PoeditListCtrl; class SourceTextCtrl; class TranslationTextCtrl; class SwitchButton; class WXDLLIMPEXP_FWD_CORE wxBoxSizer; class WXDLLIMPEXP_FWD_CORE wxBookCtrlBase; class WXDLLIMPEXP_FWD_CORE wxStaticText; /** Bottom area of the main screen where editing takes place. */ class EditingArea : public wxPanel { public: /// Control's operation mode enum Mode { Editing, POT }; /// 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, /// Only update non-text information (auxiliary, fuzzy etc.) DontTouchText = 0x04 }; /// Constructor EditingArea(wxWindow *parent, PoeditListCtrl *associatedList, Mode mode); ~EditingArea(); // Hooked-up signals: /// Called from UpdateFromTextCtrl() after filling item with data std::function OnUpdatedFromTextCtrl; void SetCustomFont(const wxFont& font); bool InitSpellchecker(bool enabled, Language lang); void SetLanguage(Language lang); void UpdateEditingUIForCatalog(CatalogPtr catalog); void SetSingleSelectionMode(); void SetMultipleSelectionMode(); void SetTextFocus(); bool HasTextFocus(); bool HasTextFocusInPlurals(); bool IsShowingPlurals(); void CopyFromSingular(); /// Puts text from catalog & listctrl to textctrls. void UpdateToTextCtrl(CatalogItemPtr item, int flags); /// Puts text from textctrls to catalog & listctrl. void UpdateFromTextCtrl(); void DontAutoclearFuzzyStatus() { m_dontAutoclearFuzzyStatus = true; } bool ShouldNotAutoclearFuzzyStatus() { return m_dontAutoclearFuzzyStatus; } /// Move focused tab to prev(-1) or next(+1) void ChangeFocusedPluralTab(int offset); /// Returns height of the source line at the top with issues shown int GetTopRowHeight() const; // Semi-private use (TODO: get rid of them) SourceTextCtrl *Ctrl_Original() const { return m_textOrig; } SourceTextCtrl *Ctrl_OriginalPlural() const { return m_textOrigPlural; } TranslationTextCtrl *Ctrl_Translation() const { return m_textTrans; } wxBookCtrlBase *Ctrl_PluralNotebook() const { return m_pluralNotebook; } TranslationTextCtrl *Ctrl_PluralTranslation(size_t index) const { return m_textTransPlural[index]; } private: void RecreatePluralTextCtrls(CatalogPtr catalog); void UpdateAuxiliaryInfo(CatalogItemPtr item); void UpdateCharCounter(CatalogItemPtr item); void CreateEditControls(wxBoxSizer *sizer); void CreateTemplateControls(wxBoxSizer *sizer); void SetupTextCtrlSizes(); void ShowPluralFormUI(bool show); void ShowPart(wxWindow *part, bool show); void OnPaint(wxPaintEvent&); private: class TagLabel; class IssueLabel; class CharCounter; PoeditListCtrl *m_associatedList; bool m_isSingleSelection = true; bool m_fuzzyToggleNeeded = true; bool m_dontAutoclearFuzzyStatus; SourceTextCtrl *m_textOrig, *m_textOrigPlural; SwitchButton *m_fuzzy; TranslationTextCtrl *m_textTrans; std::vector m_textTransPlural; TranslationTextCtrl *m_textTransSingularForm; wxBookCtrlBase *m_pluralNotebook; wxStaticText *m_labelSingular, *m_labelPlural; wxStaticText *m_labelSource, *m_labelTrans; TagLabel *m_tagIdOrContext; TagLabel *m_tagFormat; TagLabel *m_tagPretranslated; IssueLabel *m_issueLine; CharCounter *m_charCounter; }; #endif // Poedit_editing_area_h poedit-3.6.3/src/custom_notebook.h0000644000175100001660000000641315011674230012646 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2021-2025 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_custom_notebook_h #define Poedit_custom_notebook_h #include #ifndef __WXOSX__ #include #endif #if defined(__WXOSX__) || defined(__WXMSW__) #define HAS_SEGMENTED_NOTEBOOK #endif /// Possible styles of SegmentedNotebook enum class SegmentStyle { /// Inlined (e.g. within editing area) small switcher SmallInline, /// Large, covering full width of the notebook LargeFullWidth, /// Xcode-like sidebar panels switching buttons SidebarPanels }; typedef wxBookCtrlBase SegmentedNotebookBase; class SegmentedNotebookFallback : public wxNotebook { public: SegmentedNotebookFallback(wxWindow* parent, SegmentStyle style); }; #ifdef HAS_SEGMENTED_NOTEBOOK /** wxNotebook with nicer tabs. Uses NSSegmentedControl on macOS and custom, modern-looking tabs on Windows. */ class SegmentedNotebook : public wxSimplebook { public: /// Creates a new SegmentedNotebook. May return an ordinary notebook e.g. in presence of screenreaders static SegmentedNotebookBase *Create(wxWindow *parent, SegmentStyle style); int ChangeSelection(size_t page) override; bool InsertPage(size_t n, wxWindow *page, const wxString& text, bool bSelect = false, int imageId = NO_IMAGE) override; bool DeleteAllPages() override; bool SetBackgroundColour(const wxColour& clr) override; /// Returns sizer in the tabs portions of the control where custom controls can be added or NULL wxSizer *GetTabsExtensibleArea() const; protected: SegmentedNotebook(wxWindow* parent, SegmentStyle style); wxWindow *DoRemovePage(size_t page) override; int DoSetSelection(size_t n, int flags) override; private: class TabsIface; class SegmentedControlTabs; class ButtonTabs; class TabButton; TabsIface *m_tabs; }; #else class SegmentedNotebook : public wxNotebook { public: static SegmentedNotebookBase *Create(wxWindow* parent, SegmentStyle style) { return new SegmentedNotebookFallback(parent, style); } wxSizer *GetTabsExtensibleArea() const { return nullptr; } }; #endif #endif // Poedit_custom_notebook_h poedit-3.6.3/src/prefsdlg.h0000644000175100001660000000273715011674230011247 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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_prefsdlg_h #define Poedit_prefsdlg_h #include #include class PoeditPreferencesEditor : public wxPreferencesEditor { public: static std::unique_ptr Create(); private: PoeditPreferencesEditor(); }; #endif // Poedit_prefsdlg_hpoedit-3.6.3/src/syntaxhighlighter.h0000644000175100001660000000554115011674230013202 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2025 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_syntaxhighlighter_h #define Poedit_syntaxhighlighter_h #include #include #include class CatalogItem; class SyntaxHighlighter; typedef std::shared_ptr SyntaxHighlighterPtr; /** Highlights parts of translation (or source) text that have special meaning. Highlighted parts include e.g. C-style escape sequences (\n etc.), leading/trailing whitespace or format string parts. */ class SyntaxHighlighter { public: virtual ~SyntaxHighlighter() {} // Kind of the element to highlight enum TextKind { LeadingWhitespace = 0x0001, Escape = 0x0002, Markup = 0x0004, Placeholder = 0x0008 }; // Flags for ForItem enum { EnforceFormatTag = 0x0001 }; typedef std::function CallbackType; /** Perform highlighting in given text. The @a highlight function is called once for every range that should be highlighted, with the range boundaries (start, end offsets) and highlight kind as its arguments. */ virtual void Highlight(const std::wstring& s, const CallbackType& highlight) = 0; /** Return highlighter suitable for given translation item. @param item Translation item to highlight @param kindsMask Optionally specify only a subset of highlighters as TextKind or-combination @param flags Optional flags modifying behavior, e.g. EnforceFormatTag */ static SyntaxHighlighterPtr ForItem(const CatalogItem& item, int kindsMask = 0xffff, int flags = 0); }; #endif // Poedit_syntaxhighlighter_h poedit-3.6.3/src/qa_checks.h0000644000175100001660000000610215011674230011350 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2017-2025 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_qa_checks_h #define Poedit_qa_checks_h #include "catalog.h" #include #include /// Interface for implementing quality checks class QACheck { public: virtual ~QACheck() {} // Informal protocol for metadata: // static const char *GetId(); // static wxString GetDescription(); virtual const char *GetCheckId() const = 0; // same as GetId() // Implementation has to implement one of the CheckXXX() methods, // it doesn't have to implement all of them. /** Checks given item for issues, possibly calling CatalogItem::SetIssue() to flag it as broken. Returns true if an issue was found, false otherwise. */ virtual bool CheckItem(CatalogItemPtr item); /// A more convenient API, checking only strings virtual bool CheckString(CatalogItemPtr item, const wxString& source, const wxString& translation); }; /// This class performs actual checking class QAChecker { public: /// Returns checker suitable for given file static std::shared_ptr GetFor(Catalog& catalog); /// Returns metadata for the available checkers, as (id,description) pairs static std::vector> GetMetadata(); /// Checks all items. Returns # of issues found. int Check(Catalog& catalog); /// Check a single item. Returns # of issues found. int Check(CatalogItemPtr item); // Low-level creation and setup: QAChecker(); ~QAChecker(); template void AddCheck(Args&&... args) { if (IsCheckEnabled()) AddCheck(std::make_shared(args...)); } void AddCheck(std::shared_ptr c) { m_checks.push_back(c); } private: template bool IsCheckEnabled() const { return true; } protected: std::vector> m_checks; }; #endif // Poedit_qa_checks_h poedit-3.6.3/src/gexecute.cpp0000644000175100001660000002335115011674230011600 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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 #include #include #include #include #include #include #include #include #include #include #include #include #include "concurrency.h" #include "gexecute.h" #include "errors.h" #include "str_helpers.h" #include "subprocess.h" namespace { #define GETTEXT_VERSION_NUM(x, y, z) ((x*1000*1000) + (y*1000) + (z)) // Determine gettext version, return it in the form of XXXYYYZZZ number for version x.y.z uint32_t gettext_version() { static uint32_t s_version = 0; if (!s_version) { // set old enough fallback version s_version = GETTEXT_VERSION_NUM(0, 18, 0); auto p = GettextRunner().run_sync("msgcat", "--version"); if (p.exit_code == 0 && !p.std_out.empty()) { std::smatch m; if (std::regex_search(p.std_out, m, std::regex(R"( (([0-9]+)\.([0-9]+)(\.([0-9]+))?)\s)"))) { const int x = std::stoi(m.str(2)); const int y = std::stoi(m.str(3)); const int z = m[5].matched ? std::stoi(m.str(5)) : 0; s_version = GETTEXT_VERSION_NUM(x, y, z); } } } return s_version; } /// Extracts error that are possibly multiline from the output template void process_error_output(const std::wstring& program, const subprocess::Output& output, Functor&& handle) { wxString prefix1, prefix2; if (!program.empty()) { prefix1 = wxString::Format("%s: ", program); prefix2 = wxString::Format("%s: ", GetGettextBinaryPath(program)); } wxString pending; for (auto ln: output.std_err_lines()) { if (!program.empty()) { if (ln.starts_with(prefix1)) ln = ln.substr(prefix1.length()); else if (ln.starts_with(prefix2)) ln = ln.substr(prefix2.length()); } // special handling of multiline errors if (ln[0] == ' ' || ln[0] == '\t') { pending += '\n'; pending += ln.Strip(wxString::both); } else { if (!pending.empty()) handle(pending); pending = ln; } } if (!pending.empty()) handle(pending); } template void log_errors_with_filter(const ParsedGettextErrors& errors, Functor&& filter) { for (const auto& e: errors.items) { if (!filter(e)) continue; wxString prefix; if (e.has_location()) prefix += wxString::Format("%s:%d: ", e.file, e.line); if (e.level == ParsedGettextErrors::Warning) prefix += _("warning: "); wxLogError("%s", e.pretty_print()); } } } // anonymous namespace wxString ParsedGettextErrors::Item::pretty_print() const { wxString prefix; if (has_location()) prefix = wxString::Format("%s:%d: ", file, line); if (level == ParsedGettextErrors::Warning) prefix += _("warning: "); return prefix + text; } void ParsedGettextErrors::log_errors() { log_errors_with_filter(*this, [](const auto& e){ return e.level == Error; }); } void ParsedGettextErrors::log_all() { log_errors_with_filter(*this, [](const auto&){ return true; }); } ParsedGettextErrors parse_gettext_stderr(const subprocess::Output& output, const std::wstring& program) { ParsedGettextErrors out; struct StdPrefixEater { StdPrefixEater() : m_prefixWarning(str::to_wstring(wxGetTranslation("warning: ", "gettext-tools"))), m_prefixError(str::to_wstring(wxGetTranslation("error: ", "gettext-tools"))) {} inline void eat_std_prefixes(std::wstring& err, ParsedGettextErrors::Item& rec) { if (boost::starts_with(err, m_prefixError)) { err = err.substr(m_prefixError.length()); // this is the default already, but let's be explicit: rec.level = ParsedGettextErrors::Error; } else if (boost::starts_with(err, m_prefixWarning)) { err = err.substr(m_prefixWarning.length()); rec.level = ParsedGettextErrors::Warning; } } std::wstring m_prefixWarning, m_prefixError; }; StdPrefixEater eater; process_error_output ( program, output, [&](const wxString& err_) { wxLogTrace("poedit.execute", " stderr: %s", err_); auto err = str::to_wstring(err_); ParsedGettextErrors::Item rec; // recognizing standard prefixes first simplifies differentiating between then and file:line locations: eater.eat_std_prefixes(err, rec); static const std::wregex RE_LOCATION(L"^([^\r\n]+):([0-9]+): ", std::regex_constants::ECMAScript | std::regex_constants::optimize); std::wsmatch match; if (std::regex_search(err, match, RE_LOCATION) && match.position() == 0) { rec.file = match.str(1); rec.line = std::stoi(match.str(2)); err = err.substr(match.length()); } // have to do again, as the standard format is e.g. "test.c:7: warning: text..." eater.eat_std_prefixes(err, rec); rec.text = err; wxLogTrace("poedit.execute", _T(" => parsed %s = \"%s\" at %s:%d"), rec.level == ParsedGettextErrors::Error ? _T("error") : _T("warning"), rec.text, rec.file, rec.line); if (!rec.has_location() && err.find(L'\n') != std::string::npos) { // Handle this special case: // // xgettext: warning: msgid '%d foo' is used without plural and with plural. // test.c:13: Here is the occurrence without plural. // test.c:12: Here is the occurrence with plural. // Workaround: If the msgid is a sentence, change the wording of the sentence; otherwise, use contexts for disambiguation. // // Pre-parsing already put all this into a single string, removed the xgettext: and warning: prefixes, // but didn't find any location. Let's try to extract the locations from the text. std::vector lines; boost::split(lines, err, [](auto& x){ return x == L'\n'; }); bool found = false; for (auto& line: lines) { if (std::regex_search(line, match, RE_LOCATION) && match.position() == 0) { found = true; rec.file = match.str(1); rec.line = std::stoi(match.str(2)); // keep the text as-is out.items.push_back(rec); } } if (found) return; // don't add the error again below } out.items.push_back(rec); } ); return out; } #if defined(__WXOSX__) || defined(__WXMSW__) wxString GetGettextPackagePath() { #if defined(__WXOSX__) auto plugin = wxStandardPaths::Get().GetPluginsDir() + "/GettextTools.bundle"; return plugin + "/Contents/MacOS"; #elif defined(__WXMSW__) return wxStandardPaths::Get().GetDataDir() + wxFILE_SEP_PATH + "GettextTools"; #endif } wxString GetGettextBinariesPath() { return GetGettextPackagePath() + "/bin"; } #endif // __WXOSX__ || __WXMSW__ GettextRunner::GettextRunner() { #if defined(__WXOSX__) || defined(__WXMSW__) set_primary_path(GetGettextBinariesPath()); #endif env("OUTPUT_CHARSET", "UTF-8"); wxString lang = wxTranslations::Get()->GetBestTranslation("gettext-tools"); if ( lang.starts_with("en@") ) lang = "en"; // don't want things like en@blockquot if ( !lang.empty() ) env("LANG", lang); } void GettextRunner::preprocess_args(subprocess::Arguments& args) const { m_program = args.program(); // gettext 0.22 started converting MO files to UTF-8 by default. Don't do that. // See https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commit;h=5412a4f79929004cb6db15d545e07dc953330e8d if (args.program() == L"msgfmt" && gettext_version() >= GETTEXT_VERSION_NUM(0, 22, 0)) { args.insert(1, L"--no-convert"); } Runner::preprocess_args(args); } poedit-3.6.3/src/editing_area.cpp0000644000175100001660000010503315011674230012400 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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 "editing_area.h" #include "colorscheme.h" #include "custom_buttons.h" #include "customcontrols.h" #include "custom_notebook.h" #include "edlistctrl.h" #include "hidpi.h" #include "spellchecking.h" #include "static_ids.h" #include "text_control.h" #include "utility.h" #include #include #include #include #include #include #include namespace { struct EventHandlerDisabler { EventHandlerDisabler(wxEvtHandler *h) : m_hnd(h) { m_hnd->SetEvtHandlerEnabled(false); } ~EventHandlerDisabler() { m_hnd->SetEvtHandlerEnabled(true); } wxEvtHandler *m_hnd; }; void SetTranslationValue(TranslationTextCtrl *txt, const wxString& value, int flags) { // disable EVT_TEXT forwarding -- the event is generated by // programmatic changes to text controls' content and we *don't* // want UpdateFromTextCtrl() to be called from here EventHandlerDisabler disabler(txt->GetEventHandler()); if (flags & EditingArea::UndoableEdit) txt->SetPlainTextUserWritten(value); else txt->SetPlainText(value); } 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. // Unfortunately the event seems to be used internally for sizing, // so we can't just filter it out completely. What we can do, however, // is to disable *our* handling of the event. EventHandlerDisabler disabler(win->GetEventHandler()); #endif win->SetFont(font); } // does some basic processing of user input, e.g. to remove trailing \n wxString PreprocessEnteredTextForItem(CatalogItemPtr item, wxString t) { auto& orig = item->GetString(); if (!t.empty() && !orig.empty()) { if (orig.Last() == '\n' && t.Last() != '\n') t.append(1, '\n'); else if (orig.Last() != '\n' && t.Last() == '\n') t.RemoveLast(); } return t; } /// Box sizer that allows one element to shrink below min size, class ShrinkableBoxSizer : public wxBoxSizer { public: ShrinkableBoxSizer(int orient) : wxBoxSizer(orient) {} void SetShrinkableWindow(wxWindow *win) { m_shrinkable = win ? GetItem(win) : nullptr; } void RepositionChildren(const wxSize& minSize) override { if (m_shrinkable) { const wxCoord totalSize = GetSizeInMajorDir(m_size); const wxCoord minMSize = GetSizeInMajorDir(minSize); // If there's not enough space, make shrinkable item proportional, // it will be resized under its minimal size then. m_shrinkable->SetProportion(totalSize > 20 && totalSize < minMSize ? 10000 : 0); } wxBoxSizer::RepositionChildren(minSize); } private: wxSizerItem *m_shrinkable; }; // Pretifies c-format etc. tags. Use canonical spelling for known languages, // fall back to upper-casing only the first letter. wxString PrettyPrintFormatTag(const wxString& fmt) { if (fmt.empty()) return fmt; else if (fmt == "php") return "PHP"; else if (fmt == "csharp") return "C#"; else if (fmt == "objc") return "Objective-C"; else if (fmt == "sh") return "Shell"; else if (fmt == "kde") return "KDE"; else if (fmt == "javascript") return "JavaScript"; else if (fmt == "qt" || fmt == "qt-plural") return "Qt"; else if (fmt == "kde" || fmt == "kde-kuit") return "KDE"; else if (fmt == "python-brace") return "Python"; else if (fmt == "perl-brace") return "Perl"; else if (fmt == "object-pascal") return "Pascal"; else return wxToupper(fmt[0]) + fmt.substr(1); } } // anonymous namespace /// Tag-like label, with background rounded rect class EditingArea::TagLabel : public wxPanel { public: enum Mode { Fixed, Ellipsize }; bool AcceptsFocus() const override { return wxPanel::AcceptsFocus(); } TagLabel(wxWindow *parent, Color fg, Color bg, wxWindowID labelChildID = wxID_ANY) : wxPanel(parent, wxID_ANY) { m_icon = nullptr; m_label = new wxStaticText(this, labelChildID, "", wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END); #ifdef __WXOSX__ m_label->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif auto sizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(m_label, wxSizerFlags(1).Center().Border(wxALL, PX(2))); #ifdef __WXMSW__ sizer->InsertSpacer(0, PX(2)); sizer->AddSpacer(PX(2)); #endif SetSizer(sizer); Bind(wxEVT_PAINT, &TagLabel::OnPaint, this); SetColor(fg, bg); ColorScheme::SetupWindowColors(this, [=] { #ifdef __WXMSW__ SetBackgroundColour(ColorScheme::Get(Color::EditingThickSeparator)); #endif UpdateColor(); }); m_container.DisableSelfFocus(); } void SetLabel(const wxString& text) override { m_label->SetLabel(text); InvalidateBestSize(); } void SetColor(Color fg, Color bg) { m_fgSym = fg; m_bgSym = bg; UpdateColor(); } void SetIcon(const wxBitmap& icon) { auto sizer = GetSizer(); if (icon.IsOk()) { if (!m_icon) { m_icon = new wxStaticBitmap(this, wxID_ANY, icon); #ifdef __WXMSW__ ColorScheme::SetupWindowColors(m_icon, [=]{ m_icon->SetBackgroundColour(m_bg); }); #endif sizer->Insert(0, m_icon, wxSizerFlags().Center().Border(wxLEFT, PX(2))); } m_icon->SetBitmap(icon); sizer->Show(m_icon); } else { if (m_icon) sizer->Hide(m_icon); } } protected: void UpdateColor() { m_fg = ColorScheme::GetBlendedOn(m_fgSym, this, m_bgSym); m_bg = ColorScheme::GetBlendedOn(m_bgSym, this); m_label->SetForegroundColour(m_fg); #ifdef __WXMSW__ for (auto c : GetChildren()) c->SetBackgroundColour(m_bg); #endif } void DoSetToolTipText(const wxString &tip) override { wxWindow::DoSetToolTipText(tip); m_label->SetToolTip(tip); } #ifdef __WXOSX__ wxSize DoGetBestSize() const override { auto size = wxWindow::DoGetBestSize(); size.y = std::max(20, size.y); return size; } #endif protected: void OnPaint(wxPaintEvent&) { wxPaintDC dc(this); std::unique_ptr gc(wxGraphicsContext::Create(dc)); gc->SetBrush(m_bg); gc->SetPen(*wxTRANSPARENT_PEN); auto rect = GetClientRect(); if (!rect.IsEmpty()) { gc->DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, PX(2)); } } Color m_fgSym, m_bgSym; wxColour m_fg, m_bg; wxStaticText *m_label; wxStaticBitmap *m_icon; }; class EditingArea::IssueLabel : public EditingArea::TagLabel { public: IssueLabel(wxWindow *parent) : TagLabel(parent, Color::TagErrorLineFg, Color::TagErrorLineBg, WinID::TranslationIssueText) { m_iconError = wxArtProvider::GetBitmap("StatusErrorBlack"); m_iconWarning = wxArtProvider::GetBitmap("StatusWarningBlack"); SetIcon(m_iconError); } std::shared_ptr GetIssue() const { return m_issue; } void SetIssue(const std::shared_ptr& issue) { m_issue = issue; switch (issue->severity) { case CatalogItem::Issue::Error: SetIcon(m_iconError); SetColor(Color::TagErrorLineFg, Color::TagErrorLineBg); break; case CatalogItem::Issue::Warning: SetIcon(m_iconWarning); SetColor(Color::TagWarningLineFg, Color::TagWarningLineBg); break; } SetLabel(issue->message); SetToolTip(issue->message); } protected: std::shared_ptr m_issue; wxBitmap m_iconError, m_iconWarning; }; class EditingArea::CharCounter : public SecondaryLabel { public: CharCounter(wxWindow *parent, Mode mode) : SecondaryLabel(parent, "MMMM | MMMM"), m_mode(mode) { SetWindowStyleFlag(wxALIGN_RIGHT | wxST_NO_AUTORESIZE); switch (mode) { case Editing: SetToolTip(_("String length in characters: translation | source")); break; case POT: SetToolTip(_("String length in characters")); break; } } void UpdateSourceLength(int i) { m_source = i; UpdateText(); } void UpdateTranslationLength(int i) { m_translation = i; UpdateText(); } private: void UpdateText() { if (m_mode == Editing) SetLabel(wxString::Format("%d | %d", m_translation, m_source)); else SetLabel(wxString::Format("%d", m_source)); } Mode m_mode; int m_source = 0, m_translation = 0; }; EditingArea::EditingArea(wxWindow *parent, PoeditListCtrl *associatedList, Mode mode) : m_associatedList(associatedList), m_dontAutoclearFuzzyStatus(false), m_textOrig(nullptr), m_textOrigPlural(nullptr), m_fuzzy(nullptr), m_textTrans(nullptr), m_pluralNotebook(nullptr), m_labelSingular(nullptr), m_labelPlural(nullptr), m_labelSource(nullptr), m_labelTrans(nullptr), m_tagIdOrContext(nullptr), m_tagFormat(nullptr), m_tagPretranslated(nullptr), m_issueLine(nullptr) { wxPanel::Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxNO_BORDER | wxFULL_REPAINT_ON_RESIZE); #ifdef __WXMSW__ SetDoubleBuffered(true); #endif Bind(wxEVT_PAINT, &EditingArea::OnPaint, this); m_labelSource = new wxStaticText(this, -1, _("Source text")); #ifdef __WXOSX__ m_labelSource->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif m_labelSource->SetFont(m_labelSource->GetFont().Bold()); m_tagIdOrContext = new TagLabel(this, Color::TagContextFg, Color::TagContextBg); m_tagFormat = new TagLabel(this, Color::TagSecondaryFg, Color::TagSecondaryBg); m_charCounter = new CharCounter(this, mode); auto sourceLineSizer = new ShrinkableBoxSizer(wxHORIZONTAL); sourceLineSizer->Add(m_labelSource, wxSizerFlags().Center()); sourceLineSizer->AddSpacer(PX(4)); sourceLineSizer->Add(m_tagIdOrContext, wxSizerFlags().Center().Border(wxRIGHT, PX(4))); sourceLineSizer->Add(m_tagFormat, wxSizerFlags().Center().Border(wxRIGHT, PX(4))); sourceLineSizer->AddStretchSpacer(1); sourceLineSizer->Add(m_charCounter, wxSizerFlags().Center()); sourceLineSizer->AddSpacer(PX(4)); sourceLineSizer->SetShrinkableWindow(m_tagIdOrContext); sourceLineSizer->SetMinSize(-1, m_tagIdOrContext->GetBestSize().y); m_labelSingular = new wxStaticText(this, -1, _("Singular")); m_labelSingular->SetWindowVariant(wxWINDOW_VARIANT_SMALL); m_labelSingular->SetFont(m_labelSingular->GetFont().Bold()); m_textOrig = new SourceTextCtrl(this, wxID_ANY); m_labelPlural = new wxStaticText(this, -1, _("Plural")); m_labelPlural->SetWindowVariant(wxWINDOW_VARIANT_SMALL); m_labelPlural->SetFont(m_labelPlural->GetFont().Bold()); m_textOrigPlural = new SourceTextCtrl(this, wxID_ANY); auto *sizer = new wxBoxSizer(wxVERTICAL); SetSizer(sizer); #if defined(__WXMSW__) sizer->AddSpacer(PX(4) - 4); // account for fixed 4px sash above #elif defined(__WXOSX__) sizer->AddSpacer(PX(2)); #endif sizer->Add(sourceLineSizer, wxSizerFlags().Expand().Border(wxLEFT, PX(5))); sizer->AddSpacer(PX(6)); auto origTextSizer = new wxBoxSizer(wxVERTICAL); origTextSizer->AddSpacer(PX(4)); origTextSizer->Add(m_labelSingular, wxSizerFlags().Border(wxLEFT, PX(5))); origTextSizer->Add(m_textOrig, wxSizerFlags(1).Expand()); origTextSizer->Add(m_labelPlural, wxSizerFlags().Border(wxLEFT, PX(5))); origTextSizer->Add(m_textOrigPlural, wxSizerFlags(1).Expand()); sizer->Add(origTextSizer, wxSizerFlags(1).Expand()); if (mode == POT) CreateTemplateControls(sizer); else CreateEditControls(sizer); SetupTextCtrlSizes(); ColorScheme::SetupWindowColors(this, [=] { SetBackgroundColour(ColorScheme::Get(Color::EditingBackground)); #ifdef __WXMSW__ m_labelSource->SetBackgroundColour(ColorScheme::Get(Color::EditingThickSeparator)); m_charCounter->SetBackgroundColour(ColorScheme::Get(Color::EditingThickSeparator)); #endif m_labelSingular->SetForegroundColour(ColorScheme::Get(Color::SecondaryLabel)); m_labelPlural->SetForegroundColour(ColorScheme::Get(Color::SecondaryLabel)); }); } void EditingArea::CreateEditControls(wxBoxSizer *sizer) { m_labelTrans = new wxStaticText(this, -1, _("Translation")); #ifdef __WXOSX__ m_labelTrans->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif m_labelTrans->SetFont(m_labelTrans->GetFont().Bold()); m_issueLine = new IssueLabel(this); m_tagPretranslated = new TagLabel(this, Color::TagSecondaryFg, Color::TagSecondaryBg); m_tagPretranslated->SetLabel(_("Pre-translated")); auto transLineSizer = new ShrinkableBoxSizer(wxHORIZONTAL); transLineSizer->Add(m_labelTrans, wxSizerFlags().Center()); transLineSizer->AddSpacer(PX(4)); transLineSizer->Add(m_issueLine, wxSizerFlags().Center().Border(wxRIGHT, PX(4))); transLineSizer->SetShrinkableWindow(m_issueLine); transLineSizer->AddStretchSpacer(1); transLineSizer->Add(m_tagPretranslated, wxSizerFlags().Center().Border(wxRIGHT, 3*PX(4))); #ifndef __WXOSX__ transLineSizer->SetMinSize(-1, m_issueLine->GetBestSize().y); #endif // TRANSLATORS: This indicates that the string's translation isn't final // and has known problems. For example, it might be machine translated or // fuzzy matched from an older string. The translation should be short and // convey this. If it's problematic to translate it, "Needs review" is // acceptable substitute, but note that the meaning is subtly different: // "needs review" implies that somebody else should review the string after // I am done with it (i.e. consider it good), while "needs work" implies I // need to return to it and finish the translation. m_fuzzy = new SwitchButton(this, WinID::NeedsWorkSwitch, MSW_OR_OTHER(_("Needs work"), _("Needs Work"))); #ifdef __WXOSX__ m_fuzzy->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif transLineSizer->Add(m_fuzzy, wxSizerFlags().Center().Border(wxTOP, MSW_OR_OTHER(IsHiDPI() ? PX(1) : 0, 0))); transLineSizer->AddSpacer(PX(4)); m_textTrans = new TranslationTextCtrl(this, wxID_ANY); // in case of plurals form, this is the control for n=1: m_textTransSingularForm = nullptr; m_pluralNotebook = SegmentedNotebook::Create(this, SegmentStyle::SmallInline); sizer->AddSpacer(PX(6)); sizer->Add(transLineSizer, wxSizerFlags().Expand().Border(wxLEFT, PX(5))); sizer->AddSpacer(PX(6)); sizer->Add(m_textTrans, wxSizerFlags(1).Expand()); sizer->Add(m_pluralNotebook, wxSizerFlags(1).Expand()); ShowPluralFormUI(false); ColorScheme::SetupWindowColors(this, [=] { m_fuzzy->SetColors(ColorScheme::Get(Color::FuzzySwitch), ColorScheme::Get(Color::FuzzySwitchInactive)); #ifdef __WXMSW__ m_pluralNotebook->SetBackgroundColour(ColorScheme::Get(Color::EditingBackground)); m_labelTrans->SetBackgroundColour(ColorScheme::Get(Color::EditingThickSeparator)); m_fuzzy->SetBackgroundColour(ColorScheme::Get(Color::EditingThickSeparator)); #endif }); m_textTrans->Bind(wxEVT_TEXT, [=](wxCommandEvent& e){ e.Skip(); UpdateFromTextCtrl(); }); m_fuzzy->Bind(wxEVT_TOGGLEBUTTON, [=](wxCommandEvent& e){ // The user explicitly changed fuzzy status (e.g. to on). Normally, if the // user edits an entry, it's fuzzy flag is cleared, but if the user sets // fuzzy on to indicate the translation is problematic and then continues // editing the entry, we do not want to annoy him by changing fuzzy back on // every keystroke. DontAutoclearFuzzyStatus(); UpdateFromTextCtrl(); e.Skip(); }); m_pluralNotebook->Bind(wxEVT_NOTEBOOK_PAGE_CHANGED, [=](wxBookCtrlEvent& e){ e.Skip(); UpdateCharCounter(m_associatedList->GetCurrentCatalogItem()); }); } void EditingArea::CreateTemplateControls(wxBoxSizer *panelSizer) { auto win = new wxPanel(this, wxID_ANY); auto sizer = new wxBoxSizer(wxHORIZONTAL); 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.")); #ifdef __WXOSX__ explain->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif auto button = new ActionButton( win, XRCID("button_new_from_this_pot"), "CreateTranslation", _("Create new translation"), _("Make a new translation from this POT file.")); sizer->Add(button, wxSizerFlags().CenterVertical().Border(wxLEFT, PX(30))); sizer->Add(explain, wxSizerFlags(1).CenterVertical().Border(wxLEFT|wxRIGHT, PX(20))); win->SetSizerAndFit(sizer); panelSizer->Add(win, 1, wxEXPAND); ColorScheme::SetupWindowColors(win, [=] { explain->SetForegroundColour(ColorScheme::Get(Color::SecondaryLabel)); }); win->Bind(wxEVT_PAINT, [win](wxPaintEvent&) { wxPaintDC dc(win); auto clr = ColorScheme::Get(Color::EditingSeparator); dc.SetPen(clr); dc.SetBrush(clr); dc.DrawRectangle(0, 1, win->GetClientSize().x, PX(1)); }); } void EditingArea::SetupTextCtrlSizes() { int minh = m_textOrig->GetCharHeight(); #ifdef __WXOSX__ minh += 2*3; // inset #endif m_textOrig->SetMinSize(wxSize(-1, minh)); m_textOrigPlural->SetMinSize(wxSize(-1, minh)); } EditingArea::~EditingArea() { // OnPaint may still be called as child windows are destroyed m_labelSource = m_labelTrans = nullptr; } void EditingArea::OnPaint(wxPaintEvent&) { wxPaintDC dc(this); auto width = dc.GetSize().x; #ifdef __WXOSX__ width += 1; // correct for half-pixel undrawn part on the right side #endif const int paddingTop = MACOS_OR_OTHER(dc.GetContentScaleFactor() > 1.0 ? PX(5) : PX(6), PX(6)); const int paddingBottom = PX(5); auto bg = ColorScheme::Get(Color::EditingThickSeparator); dc.SetPen(bg); dc.SetBrush(bg); if (m_labelSource) { dc.DrawRectangle(0, 0, width, m_labelSource->GetPosition().y + m_labelSource->GetSize().y + paddingBottom); } if (m_labelTrans) { dc.DrawRectangle(0, m_labelTrans->GetPosition().y - paddingTop, width, paddingTop + m_labelTrans->GetSize().y + paddingBottom); } if (m_labelTrans) { dc.DrawRectangle(0, m_labelTrans->GetPosition().y - paddingTop, width, PX(1)); dc.DrawRectangle(0, m_labelTrans->GetPosition().y + m_labelTrans->GetSize().y + paddingBottom, width, PX(1)); } auto clr = ColorScheme::Get(Color::EditingSeparator); dc.SetPen(clr); dc.SetBrush(clr); if (m_labelSource) { dc.DrawRectangle(0, m_labelSource->GetPosition().y + m_labelSource->GetSize().y + paddingBottom, width, PX(1)); } if (m_labelTrans) { dc.DrawRectangle(0, m_labelTrans->GetPosition().y - paddingTop, width, PX(1)); dc.DrawRectangle(0, m_labelTrans->GetPosition().y + m_labelTrans->GetSize().y + paddingBottom, width, PX(1)); } } void EditingArea::SetCustomFont(const wxFont& font) { SetCtrlFont(m_textOrig, font); SetCtrlFont(m_textOrigPlural, font); SetCtrlFont(m_textTrans, font); for (auto tp : m_textTransPlural) SetCtrlFont(tp, font); SetupTextCtrlSizes(); } bool EditingArea::InitSpellchecker(bool enabled, Language lang) { bool rv = true; if (m_textTrans) { if (!InitTextCtrlSpellchecker(m_textTrans, enabled, lang)) rv = false; } for (auto tp : m_textTransPlural) { if (tp && !InitTextCtrlSpellchecker(tp, enabled, lang)) rv = false; } return rv; } void EditingArea::SetLanguage(Language lang) { if (m_textTrans) m_textTrans->SetLanguage(lang); for (auto tp : m_textTransPlural) { if (tp) tp->SetLanguage(lang); } } void EditingArea::UpdateEditingUIForCatalog(CatalogPtr catalog) { // TODO: ideally we'd do all this at creation time if (catalog->UsesSymbolicIDsForSource()) m_labelSource->SetLabel(_("Source text ID")); else m_labelSource->SetLabel(_("Source text")); m_fuzzyToggleNeeded = m_fuzzy && catalog->HasCapability(Catalog::Cap::FuzzyTranslations); if (m_fuzzy) m_fuzzy->Show(m_fuzzyToggleNeeded); RecreatePluralTextCtrls(catalog); } void EditingArea::RecreatePluralTextCtrls(CatalogPtr catalog) { if (!m_pluralNotebook) return; m_textTransPlural.clear(); m_pluralNotebook->DeleteAllPages(); m_textTransSingularForm = NULL; auto plurals = PluralFormsExpr(catalog->Header().GetHeader("Plural-Forms").utf8_string()); int formsCount = catalog->GetPluralFormsCount(); for (int form = 0; form < formsCount; form++) { // find example number that would use this plural form: static const int maxExamplesCnt = 5; wxString examples; int firstExample = -1; int examplesCnt = 0; if (plurals && formsCount > 1) { for (int example = 0; example < PluralFormsExpr::MAX_EXAMPLES_COUNT; example++) { if (plurals.evaluate_for_n(example) == form) { if (++examplesCnt == 1) firstExample = example; if (examplesCnt == maxExamplesCnt) { examples += L'…'; break; } else if (examplesCnt == 1) examples += wxString::Format("%d", example); else examples += wxString::Format(", %d", example); } } } wxString desc; if (formsCount == 1) { desc = _("Everything"); } else if (examplesCnt == 0) { #if 0 // kept just in case, for translations desc.Printf(_("Form %i"), form); #endif desc.Printf(_("Form %i (unused)"), form); } else if (examplesCnt == 1) { if (formsCount == 2 && firstExample == 1) // English-like { desc = _("Singular"); } else { 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) { if (firstExample == 0 || firstExample == 2) desc = _("Plural"); else desc = _("Other"); } else desc.Printf(L"n → %s", examples); // create text control and notebook page for it: auto txt = new TranslationTextCtrl(m_pluralNotebook, wxID_ANY); #ifndef __WXOSX__ txt->SetFont(m_textTrans->GetFont()); #endif txt->Bind(wxEVT_TEXT, [=](wxCommandEvent& e){ e.Skip(); UpdateFromTextCtrl(); }); m_textTransPlural.push_back(txt); m_pluralNotebook->AddPage(txt, desc); if (examplesCnt == 1 && firstExample == 1) // == singular m_textTransSingularForm = txt; } // as a fallback, assume 1st form for plural entries is the singular // (like in English and most real-life uses): if (!m_textTransSingularForm && !m_textTransPlural.empty()) m_textTransSingularForm = m_textTransPlural[0]; } void EditingArea::ShowPluralFormUI(bool show) { wxSizer *origSizer = m_textOrig->GetContainingSizer(); origSizer->Show(m_labelSingular, show); origSizer->Show(m_labelPlural, show); origSizer->Show(m_textOrigPlural, show); origSizer->Layout(); if (m_textTrans && m_pluralNotebook) { wxSizer *textSizer = m_textTrans->GetContainingSizer(); textSizer->Show(m_textTrans, !show); textSizer->Show(m_pluralNotebook, show); textSizer->Layout(); } } void EditingArea::ShowPart(wxWindow *part, bool show) { if (part) part->GetContainingSizer()->Show(part, show); } void EditingArea::SetSingleSelectionMode() { if (m_isSingleSelection) return; m_isSingleSelection = true; if (m_fuzzy) m_fuzzy->Show(m_fuzzyToggleNeeded); m_charCounter->Show(); Enable(); } void EditingArea::SetMultipleSelectionMode() { if (!m_isSingleSelection) return; m_isSingleSelection = false; // TODO: Show better UI if (m_fuzzy) m_fuzzy->Hide(); m_charCounter->Hide(); ShowPluralFormUI(false); ShowPart(m_tagIdOrContext, false); ShowPart(m_tagFormat, false); ShowPart(m_tagPretranslated, false); ShowPart(m_issueLine, false); m_textOrig->Clear(); if (m_textTrans) m_textTrans->Clear(); Disable(); } void EditingArea::SetTextFocus() { if (m_textTrans && m_textTrans->IsShown()) m_textTrans->SetFocus(); else if (!m_textTransPlural.empty()) { if (m_pluralNotebook && m_pluralNotebook->GetPageCount()) m_pluralNotebook->SetSelection(0); m_textTransPlural[0]->SetFocus(); } } bool EditingArea::HasTextFocus() { wxWindow *focus = wxWindow::FindFocus(); return (focus == m_textTrans) || (focus && focus->GetParent() == m_pluralNotebook); } bool EditingArea::HasTextFocusInPlurals() { if (!m_pluralNotebook || !m_pluralNotebook->IsShown()) return false; auto focused = dynamic_cast(FindFocus()); if (!focused) return false; return std::find(m_textTransPlural.begin(), m_textTransPlural.end(), focused) != m_textTransPlural.end(); } bool EditingArea::IsShowingPlurals() { return m_pluralNotebook && m_pluralNotebook->IsShown(); } void EditingArea::CopyFromSingular() { auto current = dynamic_cast(wxWindow::FindFocus()); if (!current || !m_textTransSingularForm) return; current->SetPlainTextUserWritten(m_textTransSingularForm->GetPlainText()); } void EditingArea::UpdateToTextCtrl(CatalogItemPtr item, int flags) { if (!(flags & DontTouchText)) { auto syntax = SyntaxHighlighter::ForItem(*item); m_textOrig->SetSyntaxHighlighter(syntax); if (m_textTrans) m_textTrans->SetSyntaxHighlighter(syntax); if (item->HasPlural()) { m_textOrigPlural->SetSyntaxHighlighter(syntax); for (auto p : m_textTransPlural) p->SetSyntaxHighlighter(syntax); } m_textOrig->SetPlainText(item->GetString()); if (item->HasPlural()) { m_textOrigPlural->SetPlainText(item->GetPluralString()); unsigned formsCnt = (unsigned)m_textTransPlural.size(); for (unsigned j = 0; j < formsCnt; j++) SetTranslationValue(m_textTransPlural[j], wxEmptyString, flags); unsigned i = 0; for (i = 0; i < std::min(formsCnt, item->GetNumberOfTranslations()); i++) { SetTranslationValue(m_textTransPlural[i], item->GetTranslation(i), flags); } if ((flags & EditingArea::ItemChanged) && m_pluralNotebook && m_pluralNotebook->GetPageCount()) m_pluralNotebook->SetSelection(0); } else { if (m_textTrans) SetTranslationValue(m_textTrans, item->GetTranslation(), flags); } } // !DontTouchText ShowPart(m_tagIdOrContext, item->HasContext() || item->HasSymbolicId()); if (item->HasContext()) { m_tagIdOrContext->SetColor(Color::TagContextFg, Color::TagContextBg); m_tagIdOrContext->SetLabel(item->GetContext()); // TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text m_tagIdOrContext->SetToolTip(wxString::Format(_("String context: %s"), item->GetContext())); } else if (item->HasSymbolicId()) { m_tagIdOrContext->SetColor(Color::TagSecondaryFg, Color::TagSecondaryBg); m_tagIdOrContext->SetLabel(item->GetSymbolicId()); // TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID m_tagIdOrContext->SetToolTip(wxString::Format(_("String identifier: %s"), item->GetSymbolicId())); } auto format = item->GetFormatFlag(); ShowPart(m_tagFormat, !format.empty()); if (!format.empty()) { // TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." m_tagFormat->SetLabel(wxString::Format(MSW_OR_OTHER(_("%s format"), _("%s Format")), PrettyPrintFormatTag(format))); } if (m_fuzzy) m_fuzzy->SetValue(item->IsFuzzy()); UpdateAuxiliaryInfo(item); ShowPluralFormUI(item->HasPlural()); Layout(); Refresh(); // by default, editing fuzzy item unfuzzies it m_dontAutoclearFuzzyStatus = false; } void EditingArea::UpdateAuxiliaryInfo(CatalogItemPtr item) { if (m_tagPretranslated) ShowPart(m_tagPretranslated, item->IsPreTranslated()); if (m_issueLine) { if (item->HasIssue()) { m_issueLine->SetIssue(item->GetIssue()); ShowPart(m_issueLine, true); } else { ShowPart(m_issueLine, false); } Layout(); } UpdateCharCounter(item); } void EditingArea::UpdateCharCounter(CatalogItemPtr item) { if (!m_charCounter || !item) return; if (item->HasPlural() && m_pluralNotebook) { int index = m_pluralNotebook->GetSelection(); if (index == 0) m_charCounter->UpdateSourceLength((int)item->GetString().length()); else m_charCounter->UpdateSourceLength((int)item->GetPluralString().length()); m_charCounter->UpdateTranslationLength((int)item->GetTranslation(index).length()); } else { m_charCounter->UpdateSourceLength((int)item->GetString().length()); m_charCounter->UpdateTranslationLength((int)item->GetTranslation().length()); } } void EditingArea::UpdateFromTextCtrl() { if (!m_isSingleSelection) return; auto item = m_associatedList->GetCurrentCatalogItem(); if (!item) return; wxString key = item->GetString(); bool newfuzzy = m_fuzzy->GetValue(); const bool oldIsTranslated = item->IsTranslated(); bool allTranslated = true; // will be updated later bool anyTransChanged = false; // ditto if (item->HasPlural()) { wxArrayString str; for (unsigned i = 0; i < m_textTransPlural.size(); i++) { auto val = PreprocessEnteredTextForItem(item, m_textTransPlural[i]->GetPlainText()); str.Add(val); if ( val.empty() ) allTranslated = false; } if ( str != item->GetTranslations() ) { anyTransChanged = true; item->SetTranslations(str); } } else { auto newval = PreprocessEnteredTextForItem(item, m_textTrans->GetPlainText()); if ( newval.empty() ) allTranslated = false; if ( newval != item->GetTranslation() ) { anyTransChanged = true; item->SetTranslation(newval); } } if (item->IsFuzzy() == newfuzzy && !anyTransChanged) { return; // not even fuzzy status changed, so return } // did something affecting statistics change? bool statisticsChanged = false; if (newfuzzy == item->IsFuzzy() && !m_dontAutoclearFuzzyStatus) newfuzzy = false; if ( item->IsFuzzy() != newfuzzy ) { item->SetFuzzy(newfuzzy); m_fuzzy->SetValue(newfuzzy); statisticsChanged = true; } if ( oldIsTranslated != allTranslated ) { item->SetTranslated(allTranslated); statisticsChanged = true; } item->SetModified(true); item->SetPreTranslated(false); UpdateAuxiliaryInfo(item); m_associatedList->RefreshItem(m_associatedList->GetCurrentItem()); if (OnUpdatedFromTextCtrl) OnUpdatedFromTextCtrl(item, statisticsChanged); } void EditingArea::ChangeFocusedPluralTab(int offset) { wxCHECK_RET(offset == +1 || offset == -1, "invalid offset"); bool hasFocus = HasTextFocusInPlurals(); #ifdef __WXMSW__ wxWindow *prevFocus = hasFocus ? nullptr : FindFocus(); #endif m_pluralNotebook->AdvanceSelection(/*forward=*/offset == +1 ? true : false); if (hasFocus) m_textTransPlural[m_pluralNotebook->GetSelection()]->SetFocus(); #ifdef __WXMSW__ else if (prevFocus) prevFocus->SetFocus(); #endif } int EditingArea::GetTopRowHeight() const { return m_tagIdOrContext->GetContainingSizer()->GetSize().y; } poedit-3.6.3/src/app_updates.h0000644000175100001660000000420115011674230011732 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2024-2025 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_app_updates_h #define Poedit_app_updates_h #if defined(__WXMSW__) || defined(__WXOSX__) #define HAS_UPDATES_CHECK #endif #include class WXDLLIMPEXP_FWD_CORE wxMenu; #include #ifdef HAS_UPDATES_CHECK /// Management of app updates. class AppUpdates { public: /// Return singleton instance of the manager. static AppUpdates& Get(); // InitAndStart and start checking for updates (if allowed by the user). void InitAndStart(); /// Destroys the singleton, must be called (only) on app shutdown. static void CleanUp(); void EnableAutomaticChecks(bool enable); bool AutomaticChecksEnabled() const; bool CanCheckForUpdates() const; void CheckForUpdatesWithUI(); #ifdef __WXMSW__ void SetLanguage(const std::string& lang); #endif private: AppUpdates(); ~AppUpdates(); class impl; std::unique_ptr m_impl; }; #endif // HAS_UPDATES_CHECK #endif // Poedit_app_updates_h poedit-3.6.3/src/cat_operations.h0000644000175100001660000000733115011674230012446 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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_cat_operations_h #define Poedit_cat_operations_h #include "catalog.h" #include "gexecute.h" /// Summary data about the result of merging two catalogs. struct MergeStats { struct Key { wxString str, str_plural, context, sym_id; Key(const wxString& sym_id_) : sym_id(sym_id_) {} Key(const wxString& str_, const wxString& str_plural_, const wxString& context_) : str(str_), str_plural(str_plural_), context(context_) {} Key(const wxString& str_, const wxString& str_plural_, const wxString& context_, const wxString& sym_id_) : str(str_), str_plural(str_plural_), context(context_), sym_id(sym_id_) {} auto operator<(const Key& other) const { return std::tie(str, str_plural, context, sym_id) < std::tie(other.str, other.str_plural, other.context, other.sym_id); } wxString to_string() const { wxString s = str; if (!str_plural.empty()) s += " | " + str_plural; if (s.empty()) s = sym_id; if (!context.empty()) s += wxString::Format(" [%s]", context); return s; } }; // Added and removed strings (as their summary representation, not the full items) std::vector added; std::vector removed; int changes_count() const { return int(added.size() + removed.size()); } // Any errors/warnings that occurred during the merge ParsedGettextErrors errors; }; /// Resulting data from a merge operation. struct MergeResult { CatalogPtr updated_catalog; ParsedGettextErrors errors; explicit operator bool() const { return updated_catalog != nullptr; } }; /** Calculates difference between a catalog and a reference ("upstream") one w.r.t. merging operation, i.e. different in source strings. */ extern void ComputeMergeStats(MergeStats& r, CatalogPtr catalog, CatalogPtr reference); /** Merges catalog with a reference catalog, updating catalog with new strings present in @a reference and removing strings that are no longer present there. @note The returned updated_catalog may be the same as @a catalog, but it may also be a new object, possibly also @a reference. Don't make assumptions about it and always treat it as an entirely new object. @warning The @a reference object cannot be used after being passed to this function! */ extern MergeResult MergeCatalogWithReference(CatalogPtr catalog, CatalogPtr reference); #endif // Poedit_cat_operations_h poedit-3.6.3/src/findframe.cpp0000644000175100001660000005127015011674230011723 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2001-2025 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 #include #include #include #include #include #include #include #include #include #ifdef __WXOSX__ #include #endif #ifdef __WXGTK__ #include #include #endif #include #include "catalog.h" #include "text_control.h" #include "edframe.h" #include "editing_area.h" #include "edlistctrl.h" #include "findframe.h" #include "hidpi.h" #include "unicode_helpers.h" #include "utility.h" namespace { // The word separators used when doing a "Whole words only" search // FIXME-ICU: use ICU to separate words const wxString SEPARATORS = wxT(" \t\r\n\\/:;.,?!\"'_|-+=(){}[]<>&#@"); 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); } // anonymous namespace wxString FindFrame::ms_text; FindFrame::FindFrame(PoeditFrame *owner, PoeditListCtrl *list, EditingArea *editingArea, const CatalogPtr& c) : wxFrame(owner, wxID_ANY, _("Find"), wxDefaultPosition, wxDefaultSize, FRAME_STYLE), m_owner(owner), m_listCtrl(list), m_editingArea(editingArea), m_catalog(c), m_position(-1) { 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_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 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); if ( !ms_text.empty() ) { m_searchField->SetValue(ms_text); m_searchField->SelectAll(); } Reset(c); 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)); wxAcceleratorEntry entries[] = { #ifndef __WXGTK__ { wxACCEL_SHIFT, WXK_RETURN, m_btnPrev->GetId() }, #endif #ifdef __WXOSX__ { wxACCEL_NORMAL, WXK_RETURN, m_btnNext->GetId() }, { wxACCEL_CMD, 'W', wxID_CLOSE }, #endif { wxACCEL_NORMAL, WXK_ESCAPE, wxID_CLOSE } }; wxAcceleratorTable accel(WXSIZEOF(entries), entries); SetAcceleratorTable(accel); 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 *macPrev = (NSButton*)m_btnPrev->GetHandle(); Bind(wxEVT_MENU, [=](wxCommandEvent&){ [macPrev performClick:nil]; }, m_btnPrev->GetId()); NSButton *macNext = (NSButton*)m_btnNext->GetHandle(); Bind(wxEVT_MENU, [=](wxCommandEvent&){ [macNext performClick:nil]; }, m_btnNext->GetId()); #endif OnModeChanged(); m_mode->Bind(wxEVT_CHOICE, [=](wxCommandEvent&){ OnModeChanged(); }); 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()); }); // 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")); // Create hidden, will be shown after setting it up Show(false); } FindFrame::~FindFrame() { SaveWindowState(this, WinState_Pos); } void FindFrame::Reset(const CatalogPtr& c) { m_catalog = c; m_position = -1; m_lastItem.reset(); UpdateButtons(); } void FindFrame::UpdateButtons() { m_btnPrev->Enable(!ms_text.empty()); m_btnNext->Enable(!ms_text.empty()); } void FindFrame::ShowForFind() { DoShowFor(Mode_Find); } void FindFrame::ShowForReplace() { DoShowFor(Mode_Replace); } void FindFrame::DoShowFor(int mode) { m_position = m_listCtrl->GetCurrentItemListIndex(); m_mode->SetSelection(mode); OnModeChanged(); Show(true); Raise(); m_searchField->SetFocus(); m_searchField->SelectAll(); } void FindFrame::OnClose(wxCommandEvent&) { Destroy(); } void FindFrame::OnModeChanged() { bool isReplace = m_mode->GetSelection() == Mode_Replace; wxString title = isReplace ? _("Replace") : _("Find"); if (PoeditFrame::GetOpenWindowsCount() > 1) { auto filename = m_owner->GetFileNamePartOfTitle(); if (!filename.empty()) title += wxString::Format(L" — %s", filename); } SetTitle(title); 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(); UpdateButtons(); 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()); } void FindFrame::OnPrev(wxCommandEvent&) { FindPrev(); } void FindFrame::FindPrev() { if (!DoFind(-1)) m_btnPrev->Enable(false); else m_btnNext->Enable(true); } void FindFrame::OnNext(wxCommandEvent&) { FindNext(); } void FindFrame::FindNext() { if (!DoFind(+1)) m_btnNext->Enable(false); else m_btnPrev->Enable(true); } namespace { template bool FindTextInStringAndDo(S& str, const wxString& text, bool wholeWords, F&& handler) { 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) { 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]); if (!result) { start = index + textLen; continue; } } found = true; start = handler(str, index, textLen); } return found; } bool IsTextInString(wxString str, const wxString& text, bool ignoreCase, bool wholeWords, bool ignoreAmp, bool ignoreUnderscore) { if (str.empty()) return false; if (ignoreCase) str = unicode::fold_case(str); if (ignoreAmp && str.find(_T('&')) != wxString::npos) { static std::wregex re(L"&(\\w)"); str = std::regex_replace(str::to_wstring(str), re, L"$1"); } if (ignoreUnderscore && str.find(_T('_')) != wxString::npos) { static std::wregex re(L"_(\\w)"); str = std::regex_replace(str::to_wstring(str), re, L"$1"); } 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++) { 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_InOrigPlural, Found_InMetadata, 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 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(); size_t trans; FoundState found = Found_Not; CatalogItemPtr lastItem; wxString text(ignoreCase ? unicode::fold_case(ms_text) : ms_text); // 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 ignoreAmp = (mode == Mode_Find) && (text.Find(_T('&')) == wxNOT_FOUND); const bool ignoreUnderscore = (mode == Mode_Find) && (text.Find(_T('_')) == wxNOT_FOUND); const int posOrig = std::max(0, std::min(m_position, cnt-1)); m_position = posOrig + dir; for (int tested = 0; tested < cnt; ++tested, m_position += dir) { 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 (inTrans) { trans = IsTextInStrings(dt->GetTranslations(), text, ignoreCase, wholeWords, ignoreAmp, ignoreUnderscore); if (trans != (size_t)-1) { found = Found_InTrans; break; } } if (inSource) { if (IsTextInString(dt->GetString(), text, ignoreCase, wholeWords, ignoreAmp, ignoreUnderscore)) { found = Found_InOrig; break; } if (dt->HasPlural() && IsTextInString(dt->GetPluralString(), text, ignoreCase, wholeWords, ignoreAmp, ignoreUnderscore)) { found = Found_InOrigPlural; break; } if (IsTextInString(dt->GetContext(), text, ignoreCase, wholeWords, ignoreAmp, ignoreUnderscore)) { found = Found_InMetadata; break; } if (IsTextInString(dt->GetSymbolicId(), text, ignoreCase, wholeWords, ignoreAmp, ignoreUnderscore)) { found = Found_InMetadata; break; } } if (inComments) { 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; } } } if (found != Found_Not) { m_lastItem = lastItem; m_listCtrl->EnsureVisible(m_listCtrl->ListIndexToListItem(m_position)); m_listCtrl->SelectAndFocus(m_position); // find the text on the control and select it: CustomizedTextCtrl* txt = nullptr; switch (found) { case Found_InOrig: txt = m_editingArea->Ctrl_Original(); break; case Found_InOrigPlural: txt = m_editingArea->Ctrl_OriginalPlural(); break; case Found_InTrans: if (lastItem->GetNumberOfTranslations() == 1) { txt = m_editingArea->Ctrl_Translation(); } else { m_editingArea->Ctrl_PluralNotebook()->SetSelection(trans); txt = m_editingArea->Ctrl_PluralTranslation(trans); } break; case Found_InMetadata: case Found_InComments: case Found_InExtractedComments: case Found_Not: break; } if (txt) { auto textc = ignoreCase ? unicode::fold_case(txt->GetValue()) : txt->GetValue(); FindTextInStringAndDo ( textc, text, wholeWords, [=](const wxString&,size_t pos, size_t len) { txt->ShowFindIndicator((int)pos, (int)len); return wxString::npos; } ); } return true; } 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; auto translations = item->GetTranslations(); for (auto& t: translations) { if (ReplaceTextInString(t, search, wholeWords, replace)) replaced = true; } if (replaced) { item->SetTranslations(translations); item->SetModified(true); m_owner->MarkAsModified(); if (item == m_owner->GetCurrentItem()) m_owner->UpdateToTextCtrl(EditingArea::UndoableEdit); } return replaced; } void FindFrame::OnReplace(wxCommandEvent&) { if (!m_lastItem) return; if (DoReplaceInItem(m_lastItem)) { // FIXME: Only refresh affected items m_listCtrl->RefreshAllItems(); } } void FindFrame::OnReplaceAll(wxCommandEvent&) { bool replaced = false; for (auto& item: m_catalog->items()) { if (DoReplaceInItem(item)) replaced = true; } if (replaced) { // FIXME: Only refresh affected items m_listCtrl->RefreshAllItems(); } } poedit-3.6.3/src/crowdin_gui.cpp0000644000175100001660000002572515011674230012307 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2025 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 "cloud_sync.h" #include "colorscheme.h" #include "concurrency.h" #include "customcontrols.h" #include "errors.h" #include "hidpi.h" #include "http_client.h" #include "str_helpers.h" #include "utility.h" #include "catalog_xliff.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include CrowdinLoginPanel::CrowdinLoginPanel(wxWindow *parent, int flags) : AccountDetailPanel(parent, flags), m_state(State::Uninitialized), m_activity(nullptr) { wxBoxSizer *topsizer = new wxBoxSizer(wxVERTICAL); SetSizer(topsizer); wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); sizer->SetMinSize(PX(300), -1); topsizer->Add(sizer, wxSizerFlags(1).Expand().Border(wxALL, (flags & SlimBorders) ? PX(0) : PX(16))); auto logo = new StaticBitmap(this, GetServiceLogo()); logo->SetCursor(wxCURSOR_HAND); logo->Bind(wxEVT_LEFT_UP, [this](wxMouseEvent&){ wxLaunchDefaultBrowser(GetServiceLearnMoreURL()); }); sizer->Add(logo, wxSizerFlags().PXDoubleBorder(wxBOTTOM)); auto explain = new ExplanationLabel(this, GetServiceDescription()); 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(16))); sizer->AddStretchSpacer(); 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); #ifdef __WXMSW__ m_signIn->SetBackgroundColour(GetBackgroundColour()); m_signOut->SetBackgroundColour(GetBackgroundColour()); #endif auto learnMore = new LearnMoreLink(this, GetServiceLearnMoreURL(), _("Learn more about Crowdin")); auto buttons = new wxBoxSizer(wxHORIZONTAL); sizer->Add(buttons, wxSizerFlags().Expand().Border(wxBOTTOM, 1)); buttons->Add(learnMore, wxSizerFlags().Center()); buttons->AddSpacer(PX(60)); buttons->AddStretchSpacer(); buttons->Add(m_signIn, wxSizerFlags()); buttons->Add(m_signOut, wxSizerFlags()); if (flags & AddCancelButton) { auto cancel = new wxButton(this, wxID_CANCEL); #ifdef __WXMSW__ buttons->Add(cancel, wxSizerFlags().Border(wxLEFT, PX(3))); #else buttons->Insert(3, cancel, wxSizerFlags().Border(wxRIGHT, PX(6))); #endif m_signIn->SetDefault(); m_signIn->SetFocus(); } ChangeState(State::Uninitialized); } wxString CrowdinLoginPanel::GetServiceDescription() const { return _("Crowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it."); } wxString CrowdinLoginPanel::GetServiceLearnMoreURL() const { return CrowdinClient::AttributeLink("/"); } void CrowdinLoginPanel::InitializeAfterShown() { if (m_state != State::Uninitialized) return; if (IsSignedIn()) UpdateUserInfo(); else ChangeState(State::SignedOut); } bool CrowdinLoginPanel::IsSignedIn() const { return CrowdinClient::Get().IsSignedIn(); } 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); switch (state) { case State::SignedIn: case State::SignedOut: if (NotifyContentChanged) NotifyContentChanged(); break; case State::Authenticating: case State::UpdatingInfo: case State::Uninitialized: // not relevant for UI changes break; } } 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…"); m_activity = new ActivityIndicator(this, ActivityIndicator::Centered); sizer->Add(m_activity, wxSizerFlags().Expand()); m_activity->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 profile = new AvatarIcon(this, wxSize(PX(48), PX(48))); auto name = new wxStaticText(this, wxID_ANY, m_userName); auto username = new SecondaryLabel(this, m_userLogin); sizer->Add(profile, wxSizerFlags().Center()); sizer->AddSpacer(PX(6)); auto box = new wxBoxSizer(wxVERTICAL); box->Add(name, wxSizerFlags().Left()); box->Add(username, wxSizerFlags().Left()); sizer->Add(box, wxSizerFlags().Center()); sizer->AddSpacer(PX(6)); profile->SetUserName(m_userName); if (!m_userAvatar.empty()) { http_client::download_from_anywhere(m_userAvatar) .then_on_window(profile, [=](downloaded_file f) { profile->LoadIcon(f.filename()); }); } break; } } Layout(); } void CrowdinLoginPanel::UpdateUserInfo() { ChangeState(State::UpdatingInfo); CrowdinClient::Get().GetUserInfo() .then_on_window(this, [=](CrowdinClient::UserInfo u) { m_userName = u.name; m_userLogin = u.login; m_userAvatar = u.avatarUrl; ChangeState(State::SignedIn); }) .catch_all(m_activity->HandleError); } void CrowdinLoginPanel::SignIn() { ChangeState(State::Authenticating); CrowdinClient::Get().Authenticate() .then_on_window(this, &CrowdinLoginPanel::OnUserSignedIn); if (NotifyShouldBeRaised) NotifyShouldBeRaised(); } void CrowdinLoginPanel::OnSignIn(wxCommandEvent&) { SignIn(); } void CrowdinLoginPanel::OnUserSignedIn() { UpdateUserInfo(); Raise(); if (NotifyShouldBeRaised) NotifyShouldBeRaised(); } void CrowdinLoginPanel::OnSignOut(wxCommandEvent&) { CrowdinClient::Get().SignOut(); ChangeState(State::SignedOut); } namespace { typedef CloudLoginDialog CrowdinLoginDialog; } // anonymous namespace bool CanSyncWithCrowdin(CatalogPtr cat) { return (bool)CrowdinClient::DoExtractSyncMetadata(*cat); } void CrowdinSyncFile(wxWindow *parent, std::shared_ptr catalog, std::function)> onDone) { if (!CrowdinClient::Get().IsSignedIn()) { wxWindowPtr login(new CrowdinLoginDialog(parent, _("Sign in to Crowdin"))); login->ShowWindowModalThenDo([login,parent,catalog,onDone](int retval){ if (retval == wxID_OK) CrowdinSyncFile(parent, catalog, onDone); }); return; } wxLogTrace("poedit.crowdin", "Crowdin syncing file ..."); wxWindowPtr dlg(new CloudSyncProgressWindow(parent)); auto meta = CrowdinClient::Get().ExtractSyncMetadata(*catalog); auto handle_error = [=](dispatch::exception_ptr e){ dispatch::on_main([=]{ dlg->EndModal(wxID_CANCEL); wxWindowPtr 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(catalog->SaveToBuffer(), meta) .then([=] { auto tmpdir = std::make_shared(); auto outfile = tmpdir->CreateFileName("crowdin." + wxFileName(catalog->GetFileName()).GetExt()); dispatch::on_main([=]{ dlg->Activity->Start(_(L"Downloading latest translations…")); }); return CrowdinClient::Get().DownloadFile(outfile.ToStdWstring(), meta) .then_on_main([=] { auto newcat = Catalog::Create(outfile); newcat->SetFileName(catalog->GetFileName()); tmpdir->Clear(); dlg->EndModal(wxID_OK); onDone(newcat); }) .catch_all(handle_error); }) .catch_all(handle_error); }); dlg->ShowWindowModal(); } poedit-3.6.3/src/static_ids.h0000644000175100001660000000647615011674230011573 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2024-2025 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_static_ids_h #define Poedit_static_ids_h #include namespace WinID { /** IDs of all controls in the application that need them fixed. This is in small part for code convenience, but primarily to accomodate NVDA screen reader, which needs them to be able to lookup UI elements. See https://github.com/vslavik/poedit/issues/845 See https://github.com/nvaccess/nvda/blob/master/source/appModules/poedit.py for NVDA's Poedit-specific code. !!! DO NOT CHANGE NUMERIC VALUES !!! */ enum ID { // Not a real ID; this value is smaller than any actual ID in this list MIN = 10000, // Since version 3.5: // Menu items in the list's context menu, used for file reference entries ListContextReferencesStart = /*10000*/ MIN, ListContextReferencesEnd = /*10100*/ ListContextReferencesStart + 100, // The "Needs work" toggle in editing area at the bottom: NeedsWorkSwitch = 10101, // The error or warning line above translation field (hidden when there's // no issue; ID is of the static text child window with issue's text): TranslationIssueText = 10102, // Text of previous source text (msgid) for current item // (shown in sidebar, may be hidden, is static control with the text): PreviousSourceText = 10103, // Text of notes for translators (extracted from source code) for current item // (shown in sidebar, may be hidden, is static control with the text): NotesForTranslator = 10104, // Text of translator's comment for current item // (shown in sidebar, may be hidden, is static control with the text): TranslatorComment = 10105, // ...enter new IDs here... // Not a real ID; this value is larger than any actual ID in this list MAX }; static_assert((int)WinID::MIN > (int)wxID_HIGHEST, "static IDs conflict with wxWidgets"); static_assert((int)WinID::MIN > (int)wxID_AUTO_HIGHEST, "static IDs conflict with wxWidgets"); } // WinID #endif // Poedit_static_ids_h poedit-3.6.3/src/edapp.h0000644000175100001660000001207115011674230010522 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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_edapp_h #define Poedit_edapp_h #include "menus.h" #include #include #include #include #include "prefsdlg.h" class Language; class WXDLLIMPEXP_FWD_BASE wxConfigBase; class WXDLLIMPEXP_FWD_BASE wxSingleInstanceChecker; #if defined(HAVE_HTTP_CLIENT) && (defined(__WXMSW__) || defined(__WXOSX__) || defined(SNAPCRAFT)) #define SUPPORTS_OTA_UPDATES #endif /// wxApp for use with class PoeditApp : public wxApp, public MenusManager { public: PoeditApp(); ~PoeditApp(); /** wxWin initialization hook. Shows PoeditFrame and initializes configuration entries to default values if they were missing. */ bool OnInit() override; void OnEventLoopEnter(wxEventLoopBase *loop) override; int OnExit() override; wxLayoutDirection GetLayoutDirection() const override; static wxString GetCacheDir(const wxString& category); /// Returns Poedit version string. wxString GetAppVersion() const; // e.g. "3.4.2" wxString GetMajorAppVersion() const; // e.g. "3.4" wxString GetAppBuildNumber() const; // opens files in new frame, returns count of succesfully opened int OpenFiles(const wxArrayString& filenames, int lineno = 0); // opens empty frame or catalogs manager void OpenNewFile(); // opens cloud translation with optional project to pre-open template void OpenCloudTranslation(T preopen); #ifdef __WXOSX__ void MacOpenFiles(const wxArrayString& names) override; void MacNewFile() override { OpenNewFile(); } void MacOpenURL(const wxString &url) override { HandleCustomURI(url); } #endif void EditPreferences(); bool OnExceptionInMainLoop() override; // Open page on poedit.net in the browser void OpenPoeditWeb(const wxString& path); #ifdef __WXOSX__ void OnIdleFixupMenusForMac(wxIdleEvent& event); void OSXOnWillFinishLaunching() override; void OnCloseWindowCommand(wxCommandEvent& event); #endif protected: /** Sets default values to configuration items that don't have anything set. (This may happen after fresh installation or upgrade to new version.) */ void SetDefaultCfg(wxConfigBase *cfg); void OnInitCmdLine(wxCmdLineParser& parser) override; bool OnCmdLineParsed(wxCmdLineParser& parser) override; private: void HandleCustomURI(const wxString& uri); void SetupLanguage(); #ifdef SUPPORTS_OTA_UPDATES void SetupOTALanguageUpdate(wxTranslations *trans, const Language& lang); #endif // App-global menu commands: void OnNewFromScratch(wxCommandEvent& event); void OnNewFromPOT(wxCommandEvent& event); void OnOpen(wxCommandEvent& event); void OnOpenCloudTranslation(wxCommandEvent& event); void OnOpenHist(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); void OnWelcomeWindow(wxCommandEvent& event); void OnManager(wxCommandEvent& event); void OnPreferences(wxCommandEvent& event); void OnHelp(wxCommandEvent& event); void OnGettextManual(wxCommandEvent& event); void OnQuit(wxCommandEvent& event); void OnQueryEndSession(wxCloseEvent& event); #ifdef HAS_UPDATES_CHECK void OnCheckForUpdates(wxCommandEvent& event); void OnEnableCheckForUpdates(wxUpdateUIEvent& event); #endif DECLARE_EVENT_TABLE() std::unique_ptr m_preferences; std::unique_ptr m_locale; #ifndef __WXOSX__ class RemoteServer; class RemoteClient; std::unique_ptr m_remoteServer; std::unique_ptr m_instanceChecker; #endif }; DECLARE_APP(PoeditApp); #endif // Poedit_edapp_h poedit-3.6.3/src/catalog_json.cpp0000644000175100001660000003735315011674230012441 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2025 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 "catalog_json.h" #include "configuration.h" #include "str_helpers.h" #include "utility.h" #include #include #include #include #include #include #include namespace { // Try to determine JSON file's formatting, i.e. line endings and identation, by inspecting the // beginning of the file. void DetectFileFormatting(std::ifstream& f, int& indent, char& indent_char, bool& dos_line_endings) { // fallback defaults: compact representation with no indentation indent = -1; indent_char = ' '; dos_line_endings = false; for (int counter = 0; counter < 100; ++counter) { auto c = f.get(); if (c == '\r' && f.peek() == '\n') { dos_line_endings = true; } else if (c == '\n') { // first newline found, indent=0 means "use newlines" in json::dump() indent = 0; } else if (c == ' ' || c == '\t') { if (indent >= 0) { // we're past the newline, identifying whitespace leading to the first " indent++; indent_char = (char)c; // ignore weirdnesses like mixed whitespace } } else if (c == '"') { // reached first key-value content, which must be indented, so we're done break; } } } } // anonymous namespace class JSONUnrecognizedFileException : public JSONFileException { public: JSONUnrecognizedFileException() : JSONFileException(_(L"This JSON file isn’t a translations file and cannot be edited in Poedit.")) {} }; bool JSONCatalog::HasCapability(Catalog::Cap cap) const { switch (cap) { case Cap::Translations: return true; case Cap::LanguageSetting: return false; // for most variants it is detected from filename case Cap::UserComments: case Cap::FuzzyTranslations: return false; } return false; // silence VC++ warning } bool JSONCatalog::CanLoadFile(const wxString& extension) { return extension == "json" || extension == "arb"; } std::shared_ptr JSONCatalog::Open(const wxString& filename) { try { const auto ext = str::to_utf8(wxFileName(filename).GetExt().Lower()); std::ifstream f(filename.fn_str(), std::ios::binary); auto data = json_t::parse(f); auto cat = CreateForJSON(std::move(data), ext); if (!cat) BOOST_THROW_EXCEPTION(JSONUnrecognizedFileException()); f.clear(); f.seekg(0, std::ios::beg); DetectFileFormatting(f, cat->m_formatting.indent, cat->m_formatting.indent_char, cat->m_formatting.dos_line_endings); cat->Parse(); return cat; } catch (json::exception& e) { BOOST_THROW_EXCEPTION(JSONFileException(wxString::Format(_("Reading file content failed with the following error: %s"), e.what()))); } } bool JSONCatalog::Save(const wxString& filename, bool /*save_mo*/, ValidationResults& validation_results, CompilationStatus& /*mo_compilation_status*/) { if ( wxFileExists(filename) && !wxFile::Access(filename, wxFile::write) ) { wxLogError(_(L"File “%s†is read-only and cannot be saved.\nPlease save it under different name."), filename.c_str()); return false; } TempOutputFileFor tempfile(filename); { std::ofstream f(tempfile.FileName().fn_str(), std::ios::binary); f << SaveToBuffer(); } if ( !tempfile.Commit() ) { wxLogError(_(L"Couldn’t save file %s."), filename.c_str()); return false; } validation_results = Validate(); SetFileName(filename); return true; } std::string JSONCatalog::SaveToBuffer() { auto s = m_doc.dump(m_formatting.indent, m_formatting.indent_char, /*ensure_ascii=*/false); if (s.empty()) return s; // shouldn't be possible... // all POSIX text files must end in newline, but json::dump() doesn't produce it if (s.back() != '\n') s.push_back('\n'); if (m_formatting.dos_line_endings) { boost::replace_all(s, "\n", "\r\n"); } return s; } class GenericJSONItem : public JSONCatalogItem { public: GenericJSONItem(int id, const std::string& key, json_t& node) : JSONCatalogItem(id, node) { m_string = str::to_wx(key); if (node.is_null()) { m_translations.push_back(wxString()); m_isTranslated = false; } else { auto trans = str::to_wx(node.get()); m_translations.push_back(trans); m_isTranslated = !trans.empty(); } } void UpdateInternalRepresentation() override { m_node = str::to_utf8(GetTranslation()); } }; class GenericJSONCatalog : public JSONCatalog { public: using JSONCatalog::JSONCatalog; static bool SupportsFile(const json_t& doc) { // note that parsing may still fail, this is just pre-flight return doc.is_object(); } void Parse() override { int id = 0; ParseSubtree(id, m_doc, ""); if (m_items.empty()) BOOST_THROW_EXCEPTION(JSONUnrecognizedFileException()); } private: void ParseSubtree(int& id, json_t& node, const std::string& prefix) { for (auto& el : node.items()) { auto& val = el.value(); if (val.is_string() || val.is_null()) { m_items.push_back(std::make_shared(++id, prefix + el.key(), val)); } else if (val.is_object()) { ParseSubtree(id, val, prefix + el.key() + "."); } else { BOOST_THROW_EXCEPTION(JSONUnrecognizedFileException()); } } } }; // Support for Flutter ARB files: // https://github.com/google/app-resource-bundle/wiki/ApplicationResourceBundleSpecification class FlutterItem : public GenericJSONItem { public: FlutterItem(int id, const std::string& key, json_t& node, const json_t *metadata) : GenericJSONItem(id, key, node), m_metadata(metadata) { if (metadata) { if (metadata->contains("context")) { m_hasContext = true; m_context = str::to_wx(metadata->at("context").get()); } if (metadata->contains("description")) { m_extractedComments.push_back(str::to_wx(metadata->at("description").get())); } } } protected: const json_t *m_metadata; }; class FlutterCatalog : public JSONCatalog { public: using JSONCatalog::JSONCatalog; static bool SupportsFile(const json_t& doc, const std::string& extension) { return extension == "arb" || (doc.is_object() && doc.contains("@@locale")); } bool HasCapability(Catalog::Cap cap) const override { if (cap == Cap::LanguageSetting) return true; return JSONCatalog::HasCapability(cap); } void SetLanguage(Language lang) override { JSONCatalog::SetLanguage(lang); m_doc["@@locale"] = lang.Code(); } void Parse() override { m_language = Language::TryParse(m_doc.value("@@locale", "")); int id = 0; ParseSubtree(id, m_doc, ""); } private: void ParseSubtree(int& id, json_t& node, const std::string& prefix) { // find() is O(n) in ordered_json and so looking up @key metadata nodes in the // main loop would result in O(n^2) complexity. Split the iteration into two and // first find metadata, making the fuction O(n*log(n)). Using ordered_map would // yield O(n), but with possibly high constant, so don't do that for now. std::map metadata; for (auto& el : node.items()) { auto& key = el.key(); if (!key.empty() && key.front() == '@') metadata.emplace(key.substr(1), &el.value()); } for (auto& el : node.items()) { auto& key = el.key(); if (key.empty() || key.front() == '@') continue; auto& val = el.value(); if (val.is_string()) { auto mi = metadata.find(key); auto meta = (mi != metadata.end()) ? mi->second : nullptr; m_items.push_back(std::make_shared(++id, prefix + el.key(), val, meta)); } else if (val.is_object()) { ParseSubtree(id, val, prefix + el.key() + "."); } else { BOOST_THROW_EXCEPTION(JSONUnrecognizedFileException()); } } } }; // Support for WebExtension messages.json: // https://developer.chrome.com/docs/extensions/mv3/i18n-messages/ // https://developer.chrome.com/docs/extensions/reference/i18n/ // https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Internationalization // https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/i18n/Locale-Specific_Message_reference class WebExtensionCatalog : public JSONCatalog { public: using JSONCatalog::JSONCatalog; static bool SupportsFile(const json_t& doc) { if (!doc.is_object() || doc.empty()) return false; auto first = doc.begin().value(); return first.is_object() && first.contains("message"); } void Parse() override { int id = 0; for (auto& el : m_doc.items()) { auto& val = el.value(); if (!val.is_object()) BOOST_THROW_EXCEPTION(JSONUnrecognizedFileException()); m_items.push_back(std::make_shared(++id, el.key(), val)); } if (m_items.empty()) BOOST_THROW_EXCEPTION(JSONUnrecognizedFileException()); } protected: class Item : public JSONCatalogItem { public: Item(int id, const std::string& key, json_t& node) : JSONCatalogItem(id, node) { m_string = str::to_wx(key); auto trans = str::to_wx(node.value("message", "")); m_translations.push_back(trans); m_isTranslated = !trans.empty(); auto desc = node.value("description", ""); if (!desc.empty()) m_extractedComments.push_back(str::to_wx(desc)); } void UpdateInternalRepresentation() override { m_node["message"] = str::to_utf8(GetTranslation()); } std::string GetInternalFormatFlag() const override { return "ph-dollars"; } }; }; class LocalazyCatalog : public JSONCatalog { public: using JSONCatalog::JSONCatalog; static bool SupportsFile(const json_t& doc) { return doc.value("generator", "") == "Localazy"; } bool HasCapability(Catalog::Cap cap) const override { if (cap == Cap::LanguageSetting) return true; return JSONCatalog::HasCapability(cap); } void Parse() override { m_header.SetHeader("X-Generator", m_doc.value("generator", "")); m_header.SetHeader("X-Localazy-Project", m_doc.value("projectId", "")); m_language = Language::FromLanguageTag(m_doc.value("targetLocale", "")); int id = 0; for (auto& file : m_doc.at("files")) { auto filename = file.value("name", ""); for (auto& tr : file.at("translations")) { // FIXME: for now, skip plural forms and string lists if (!tr.at("source").is_string()) continue; m_items.push_back(std::make_shared(++id, filename, tr)); } } } void SetLanguage(Language lang) override { JSONCatalog::SetLanguage(lang); m_doc["targetLocale"] = lang.LanguageTag(); } protected: class Item : public JSONCatalogItem { public: Item(int id, const std::string& filename, json_t& node) : JSONCatalogItem(id, node), m_filename(filename) { m_string = str::to_wx(node.at("source").get()); auto trans = str::to_wx(node.value("value", "")); m_translations.push_back(trans); m_isTranslated = !trans.empty(); if (node.contains("meta")) { auto& meta = node["meta"]; m_moreFlags = str::to_wx(meta.value("placeholders", "")); if (meta.contains("key")) m_extractedComments.push_back("ID: " + str::to_wx(meta["key"].get())); } if (node.contains("context")) { auto& ctxt = node["context"]; auto desc = ctxt.value("description", ""); if (ctxt.contains("description")) m_extractedComments.push_back(str::to_wx(ctxt.at("description").get())); if (ctxt.contains("screenshots")) { if (!m_extractedComments.empty()) m_extractedComments.push_back(""); m_extractedComments.push_back(_("Screenshots:")); for (auto& link : ctxt.at("screenshots")) m_extractedComments.push_back(str::to_wx(link.get())); } } } void UpdateInternalRepresentation() override { m_node["value"] = str::to_utf8(GetTranslation()); } wxArrayString GetReferences() const override { wxArrayString refs; if (!m_filename.empty()) refs.push_back(str::to_wx(m_filename)); return refs; } private: std::string m_filename; }; }; std::shared_ptr JSONCatalog::CreateForJSON(json_t&& doc, const std::string& extension) { // try specialized implementations first: if (FlutterCatalog::SupportsFile(doc, extension)) return std::shared_ptr(new FlutterCatalog(std::move(doc))); if (WebExtensionCatalog::SupportsFile(doc)) return std::shared_ptr(new WebExtensionCatalog(std::move(doc))); if (LocalazyCatalog::SupportsFile(doc)) return std::shared_ptr(new LocalazyCatalog(std::move(doc))); // then fall back to generic: if (GenericJSONCatalog::SupportsFile(doc)) return std::shared_ptr(new GenericJSONCatalog(std::move(doc))); return nullptr; } poedit-3.6.3/src/cloud_accounts_ui.h0000644000175100001660000001547215011674230013143 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2015-2025 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_cloud_accounts_ui_h #define Poedit_cloud_accounts_ui_h #ifdef HAVE_HTTP_CLIENT #include "catalog.h" #include "cloud_accounts.h" #include "hidpi.h" #include #include #include #include #include #include class WXDLLIMPEXP_FWD_CORE wxBoxSizer; class WXDLLIMPEXP_FWD_CORE wxSimplebook; class WXDLLIMPEXP_FWD_CORE wxDataViewEvent; class IconAndSubtitleListCtrl; // Abstract base class with unified interface both for single-account panels and // the one for picking from multiple accounts class AnyAccountPanelBase { public: virtual ~AnyAccountPanelBase() {} /// Constructor flags enum Flags { /// Add wxID_CANCEL dialog button to the panel AddCancelButton = 1, SlimBorders = 2 }; /** Call to initalize logged-in accounts. This can be a little bit lengthy and may prompt the user for permission, so should be called lazily. */ virtual void InitializeAfterShown() = 0; /// Notification function called when content (e.g. login name, state) changes std::function NotifyContentChanged; /// Notification function called when content should be made visible to user (e.g. while signing in, after signing in finished) std::function NotifyShouldBeRaised; }; /// Base class for account login views (Crowdin etc.) class AccountDetailPanel : public wxPanel, public AnyAccountPanelBase { public: // flags is unused, it is there to force derived classes to implement it AccountDetailPanel(wxWindow *parent, int /*flags*/) : wxPanel(parent, wxID_ANY) {} // Get service name for UI (e.g. "Crowdin") and other metadata: virtual wxString GetServiceName() const = 0; virtual wxString GetServiceLogo() const = 0; virtual wxString GetServiceDescription() const = 0; virtual wxString GetServiceLearnMoreURL() const = 0; virtual bool IsSignedIn() const = 0; virtual wxString GetLoginName() const = 0; /// Perform signing-in action, including any UI changes; directly corresponds to pressing "Sign in" button virtual void SignIn() = 0; }; /// Window showing all supported accounts in a list-detail view class AccountsPanel : public wxPanel, public AnyAccountPanelBase { public: AccountsPanel(wxWindow *parent, int flags = 0); /** Call to initalize logged-in accounts. This can be a little bit lengthy and may prompt the user for permission, so should be called lazily. */ void InitializeAfterShown() override; /// Is at least one account signed in? bool IsSignedIn() const; protected: void AddAccount(const wxString& name, const wxString& iconId, AccountDetailPanel *panel); void OnSelectAccount(wxDataViewEvent& event); void SelectAccount(unsigned index); private: IconAndSubtitleListCtrl *m_list; wxSimplebook *m_panelsBook; std::vector m_panels; }; /// See CloudLoginDialog, except this one doesn't close automatically template class CloudEditLoginDialog : public wxDialog { public: typedef T LoginPanel; CloudEditLoginDialog(wxWindow *parent, const wxString& title) : wxDialog(parent, wxID_ANY, title) { auto topsizer = new wxBoxSizer(wxVERTICAL); #ifdef __WXOSX__ auto titleLabel = new wxStaticText(this, wxID_ANY, title); titleLabel->SetFont(titleLabel->GetFont().Bold()); topsizer->AddSpacer(PX(4)); topsizer->Add(titleLabel, wxSizerFlags().Border(wxTOP|wxLEFT|wxRIGHT, PX(16))); topsizer->AddSpacer(PX(10)); #else topsizer->AddSpacer(PX(16)); #endif m_panel = new LoginPanel(this, LoginPanel::AddCancelButton | LoginPanel::SlimBorders); m_panel->SetClientSize(m_panel->GetBestSize()); topsizer->Add(m_panel, wxSizerFlags(1).Expand().Border(wxBOTTOM|wxLEFT|wxRIGHT, PX(16))); SetSizerAndFit(topsizer); CenterOnParent(); m_panel->InitializeAfterShown(); m_panel->NotifyShouldBeRaised = [=]{ Raise(); }; } protected: LoginPanel *m_panel; }; /** A dialog for logging into cloud accounts. It can be used either for logging into any account (T=AccountsPanel, for initial setup) or just into a single provider (e.g. T=CrowdinLoginPanel) e.g. when syncing a file and credentials expired. Unlike CloudEditLoginDialog, closes automatically upon successful login. */ template class CloudLoginDialog : public CloudEditLoginDialog { public: CloudLoginDialog(wxWindow *parent, const wxString& title) : CloudEditLoginDialog(parent, title) { this->m_panel->NotifyContentChanged = [=]{ if (this->m_panel->IsSignedIn()) { this->Raise(); this->EndModal(wxID_OK); } }; } }; /** Let the user choose a remote cloud file, download it and open in Poedit. @param parent PoeditFrame the UI should be shown under. @param project Optional project to preselect, otherwise nullptr @param onDone Called with the dialog return value (wxID_OK/CANCEL) and name of loaded PO file. */ void CloudOpenFile(wxWindow *parent, std::shared_ptr project, std::function onDone); /// Was the file opened directly from a cloud account and should be synced when the user saves it? bool ShouldSyncToCloudAutomatically(CatalogPtr catalog); /// Configure file, if it was opened directly from a cloud account, to be sync when the user saves is. void SetupCloudSyncIfShouldBeDoneAutomatically(CatalogPtr catalog); #endif // !HAVE_HTTP_CLIENT #endif // Poedit_cloud_accounts_ui_h poedit-3.6.3/src/titleless_window.cpp0000644000175100001660000002163615011674230013372 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2025 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 "titleless_window.h" #include "hidpi.h" #include "utility.h" #include #ifdef __WXMSW__ #include #include #include #pragma comment(lib, "Dwmapi.lib") #endif namespace { #ifdef __WXMSW__ // See https://docs.microsoft.com/en-us/windows/uwp/design/style/segoe-ui-symbol-font wxFont CreateButtonFont() { return wxFont(wxSize(PX(10), PX(10)), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, "Segoe MDL2 Assets"); } const wchar_t* Symbol_ChromClose = L"\U0000E8BB"; wxBitmap RenderButton(const wxSize& size, const wxFont& font, const wxColour& bg, const wxColour& fg) { wxBitmap bmp(size); bmp.SetScaleFactor(HiDPIScalingFactor()); { wxMemoryDC dc(bmp); dc.SetBackground(bg); dc.SetFont(font); dc.SetTextForeground(fg); dc.Clear(); wxString text(Symbol_ChromClose); auto extent = dc.GetTextExtent(text); dc.DrawText(text, (size.x - extent.x) / 2, (size.y - extent.y) / 2); } return bmp; } class CloseButton : public wxBitmapButton { public: CloseButton(wxWindow* parent, wxWindowID id) { wxBitmapButton::Create(parent, id, wxNullBitmap, wxDefaultPosition, GetButtonSize(), wxBORDER_NONE); SetToolTip(_("Close")); CreateBitmaps(); wxGetTopLevelParent(parent)->Bind(wxEVT_ACTIVATE, [=](wxActivateEvent& e) { e.Skip(); if (!IsBeingDeleted()) CreateBitmaps(/*onlyBackgroundRelated:*/true, /*isActive:*/e.GetActive()); }); } private: wxSize GetButtonSize() const { return wxSize(PX(46), PX(28)); } void CreateBitmaps(bool onlyBackgroundRelated = false, bool isActive = true) { // Minic Windows 10's caption buttons auto size = GetButtonSize(); auto font = CreateButtonFont(); m_normal = RenderButton(size, font, GetBackgroundColour(), *wxBLACK); if (!onlyBackgroundRelated) m_hover = RenderButton(size, font, wxColour(232, 17, 35), *wxWHITE); m_inactive = RenderButton(size, font, GetBackgroundColour(), wxColour(153,153,153)); SetBitmap(isActive ? m_normal : m_inactive); SetBitmapHover(m_hover); } wxBitmap m_normal, m_hover, m_inactive; }; #endif // __WXMSW__ #ifdef __WXOSX__ class CloseButton : public wxBitmapButton { public: CloseButton(wxWindow* parent, wxWindowID id) { wxBitmap normal([NSImage imageNamed:@"CloseButtonTemplate"]); wxBitmap hover([NSImage imageNamed:@"CloseButtonHoverTemplate"]); wxBitmapButton::Create(parent, id, normal, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE); SetBitmapHover(hover); } }; #endif // __WXOSX__ } // anonymous namespace template TitlelessWindowBase::TitlelessWindowBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style, const wxString& name) : BaseClass(parent, id, title, pos, size, style, name) { #ifdef __WXOSX__ // Pretify the window: NSWindow* wnd = (NSWindow*)this->GetWXWindow(); wnd.styleMask |= NSWindowStyleMaskFullSizeContentView; wnd.titleVisibility = NSWindowTitleHidden; wnd.titlebarAppearsTransparent = YES; wnd.movableByWindowBackground = YES; [wnd standardWindowButton:NSWindowMiniaturizeButton].hidden = YES; [wnd standardWindowButton:NSWindowZoomButton].hidden = YES; [wnd standardWindowButton:NSWindowCloseButton].hidden = YES; if (style & wxCLOSE_BOX) m_closeButton = new CloseButton(this, wxID_CLOSE); #endif #ifdef __WXMSW__ m_isTitleless = ShouldRemoveChrome(); if (m_isTitleless) { auto handle = GetHwnd(); static MARGINS margins = { PX(1), PX(1), PX(1), PX(1) }; DwmExtendFrameIntoClientArea(handle, &margins); SetBackgroundStyle(wxBG_STYLE_PAINT); Bind(wxEVT_PAINT, &TitlelessWindowBase::OnPaintBackground, this); if (style & wxCLOSE_BOX) m_closeButton = new CloseButton(this, wxID_CLOSE); } #endif // __WXMSW__ #ifdef __WXGTK3__ // TODO: Under WXGTK, use GtkButton with icon "window-close-symbolic" with style class "titlebutton" // https://stackoverflow.com/questions/22069839/how-to-theme-the-header-bar-close-button-in-gtk3 #endif if (m_closeButton) m_closeButton->Bind(wxEVT_BUTTON, [=](wxCommandEvent&) { this->Close(); }); } #ifdef __WXMSW__ template bool TitlelessWindowBase::SetBackgroundColour(const wxColour& clr) { if (!BaseClass::SetBackgroundColour(clr)) return false; auto close = GetCloseButton(); if (close) close->SetBackgroundColour(clr); return true; } template bool TitlelessWindowBase::ShouldRemoveChrome() { if (!wxUxThemeIsActive()) return false; // Detect screen readers and use normal titlebars to not confuse them if (IsRunningUnderScreenReader()) return false; return true; } template wxPoint TitlelessWindowBase::GetClientAreaOrigin() const { if (m_isTitleless) return wxPoint(PX(1), PX(1)); else return BaseClass::GetClientAreaOrigin(); } template void TitlelessWindowBase::DoGetClientSize(int *width, int *height) const { if (m_isTitleless) { auto size = GetSize(); if (width) *width = size.x - 2 * PX(1); if (height) *height = size.y - 2 * PX(1); } else { return BaseClass::DoGetClientSize(width, height); } } template WXLRESULT TitlelessWindowBase::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { if (m_isTitleless) { switch (nMsg) { case WM_NCCALCSIZE: if (wParam == TRUE) { // ((LPNCCALCSIZE_PARAMS)lParam)->rgrc[0] is window size on input and // client size on output; by doing nothing here, we set NC area to zero. return 0; } break; case WM_NCHITTEST: // When we have no border or title bar, we need to perform our // own hit testing to allow moving etc. // See https://docs.microsoft.com/en-us/windows/win32/dwm/customframe return HTCAPTION; } } return BaseClass::MSWWindowProc(nMsg, wParam, lParam); } template void TitlelessWindowBase::OnPaintBackground(wxPaintEvent&) { wxPaintDC dc(this); // 1pt margins around the window must be black for DwmExtendFrameIntoClientArea() to work. // It would have been better to instead set 1pt non-client area in WM_NCCALCSIZE, but that // doesn't work for the top side, unfortunately, so here we are. dc.SetPen(*wxTRANSPARENT_PEN); wxRect rect(wxPoint(0, 0), GetSize()); dc.SetBrush(*wxBLACK); dc.DrawRectangle(rect); rect.Deflate(PX(1)); dc.SetBrush(GetBackgroundColour()); dc.DrawRectangle(rect); } #endif // __WXMSW__ template bool TitlelessWindowBase::Layout() { if (!BaseClass::Layout()) return false; if (m_closeButton) { #ifdef __WXOSX__ m_closeButton->Move(4, 4); #else auto size = this->GetClientSize(); m_closeButton->Move(size.x - m_closeButton->GetSize().x, 0); #endif } return true; } // We need to explicitly instantiate the template for all uses within Poedit because of all the code in .cpp file: template class TitlelessWindowBase; template class TitlelessWindowBase; poedit-3.6.3/src/version.h0000644000175100001660000000256615011674230011126 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2010-2025 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_version_h #define Poedit_version_h #define POEDIT_VERSION_SHORT "3.6" #define POEDIT_VERSION "3.6.3" #define POEDIT_VERSION_WIN 3,6,3 #endif // Poedit_version_h poedit-3.6.3/src/findframe.h0000644000175100001660000000722615011674230011372 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2001-2025 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 _FINDFRAME_H_ #define _FINDFRAME_H_ #include "edlistctrl.h" #include #include class WXDLLIMPEXP_FWD_CORE wxButton; class WXDLLIMPEXP_FWD_CORE wxCheckBox; class WXDLLIMPEXP_FWD_CORE wxChoice; class WXDLLIMPEXP_FWD_CORE wxTextCtrl; class Catalog; class EditingArea; class PoeditFrame; /** FindFrame is small dialog frame that contains controls for searching in content of EditorFrame's wxListCtrl object and associated Catalog instance. This class assumes that list control's user data contains index into the catalog. */ class FindFrame : public wxFrame { public: /** Ctor. \param owner Parent frame, FindFrame will float on it \param list List control to search in \param catalog Catalog to search in */ FindFrame(PoeditFrame *owner, PoeditListCtrl *list, EditingArea *editingArea, const CatalogPtr& c); ~FindFrame(); /** Resets the search to starting position and changes the catalog in use. Called by EditorFrame when the user reloads catalog. */ void Reset(const CatalogPtr& c); void FindPrev(); void FindNext(); void ShowForFind(); void ShowForReplace(); bool HasText() const { return !ms_text.empty(); } private: void UpdateButtons(); 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); bool DoReplaceInItem(CatalogItemPtr item); 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 m_listCtrl; wxWeakRef m_editingArea; CatalogPtr m_catalog; int m_position; CatalogItemPtr m_lastItem; wxButton *m_btnClose, *m_btnReplaceAll, *m_btnReplace, *m_btnPrev, *m_btnNext; // NB: this is static so that last search term is remembered static wxString ms_text; }; #endif // _FINDFRAME_H_ poedit-3.6.3/src/welcomescreen.cpp0000644000175100001660000002702615011674230012625 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2025 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 "welcomescreen.h" #include "colorscheme.h" #include "custom_buttons.h" #include "customcontrols.h" #include "edapp.h" #include "edframe.h" #include "hidpi.h" #include "icons.h" #include "menus.h" #include "recent_files.h" #include "str_helpers.h" #include "utility.h" #include #include #include #include #include #include #include #include #include #include #include #include #include namespace { class HeaderStaticText : public wxStaticText { public: HeaderStaticText(wxWindow *parent, wxWindowID id, const wxString& text) : wxStaticText(parent, id, "") { #ifdef __WXGTK__ // Workaround sizing bug of wxStaticText with custom font by using markup instead. // See http://trac.wxwidgets.org/ticket/14374 SetLabelMarkup("" + text + ""); #else SetLabel(text); #ifdef __WXOSX__ SetFont([NSFont systemFontOfSize:30 weight:NSFontWeightRegular]); #else auto guiface = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetFaceName(); wxFont f(wxFontInfo(22).FaceName(guiface).AntiAliased()); SetFont(f); #endif #endif } }; #ifdef __WXMSW__ class SidebarHeader : public wxWindow { public: SidebarHeader(wxWindow* parent, const wxString& title) : wxWindow(parent, wxID_ANY) { ColorScheme::SetupWindowColors(this, [=] { SetBackgroundColour(ColorScheme::Get(Color::SidebarBackground)); }); auto label = new SecondaryLabel(this, title); auto sizer = new wxBoxSizer(wxVERTICAL); sizer->AddStretchSpacer(); sizer->Add(label, wxSizerFlags().Left().Border(wxLEFT, PX(8))); sizer->AddStretchSpacer(); SetSizer(sizer); } }; #endif // __WXMSW__ } // anonymous namespace WelcomeScreenBase::WelcomeScreenBase(wxWindow *parent) : wxPanel(parent, wxID_ANY) { ColorScheme::SetupWindowColors(this, [=] { switch (ColorScheme::GetWindowMode(this)) { case ColorScheme::Light: SetBackgroundColour("#fdfdfd"); break; case ColorScheme::Dark: SetBackgroundColour(ColorScheme::Get(Color::SidebarBackground)); break; } }); // Translate all button events to wxEVT_MENU and send them to the frame. Bind(wxEVT_BUTTON, [=](wxCommandEvent& e){ wxCommandEvent event(wxEVT_MENU, e.GetId()); event.SetEventObject(this); GetParent()->GetEventHandler()->AddPendingEvent(event); }); } EmptyPOScreenPanel::EmptyPOScreenPanel(PoeditFrame *parent, bool isGettext) : WelcomeScreenBase(parent) { auto sizer = new wxBoxSizer(wxVERTICAL); auto uberSizer = new wxBoxSizer(wxHORIZONTAL); uberSizer->AddStretchSpacer(); uberSizer->Add(sizer, wxSizerFlags().Center().Border(wxALL, PX(100))); uberSizer->AddStretchSpacer(); SetSizer(uberSizer); auto header = new HeaderStaticText(this, wxID_ANY, _(L"There are no translations. That’s unusual.")); ColorScheme::SetupWindowColors(this, [=] { header->SetForegroundColour(ColorScheme::Get(Color::Label)); }); sizer->Add(header, wxSizerFlags().Center().PXBorderAll()); if (isGettext) { auto explain = new AutoWrappingText(this, wxID_ANY, _(L"Translatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.")); sizer->Add(explain, wxSizerFlags().Expand().Border(wxTOP, PX(10))); auto learnMore = new LearnMoreLink(this, "http://www.gnu.org/software/gettext/manual/html_node/", _("Learn more about GNU gettext")); sizer->Add(learnMore, wxSizerFlags().Border(wxBOTTOM|wxTOP, PX(4)).Align(wxALIGN_LEFT)); sizer->AddSpacer(PX(8)); auto explain2 = new wxStaticText(this, wxID_ANY, _("The simplest way to fill this file with translations is to update it from a POT:")); sizer->Add(explain2, wxSizerFlags().Expand().Border(wxTOP|wxBOTTOM, PX(10))); sizer->Add(new ActionButton( this, XRCID("menu_update_from_pot"), "UpdateFromPOT", _("Update from POT"), _("Take translatable strings from an existing POT template.")), wxSizerFlags().Expand()); sizer->AddSpacer(PX(20)); auto explain3 = new wxStaticText(this, wxID_ANY, _("You can also extract translatable strings directly from the source code:")); sizer->Add(explain3, wxSizerFlags().Expand().Border(wxTOP|wxBOTTOM, PX(10))); auto btnSources = new ActionButton( this, wxID_ANY, "ExtractFromSources", _("Extract from sources"), _("Configure source code extraction in Properties.")); sizer->Add(btnSources, wxSizerFlags().Expand()); sizer->AddSpacer(PX(20)); ColorScheme::SetupWindowColors(this, [=] { explain->SetForegroundColour(ColorScheme::Get(Color::SecondaryLabel)); explain2->SetForegroundColour(ColorScheme::Get(Color::SecondaryLabel)); explain3->SetForegroundColour(ColorScheme::Get(Color::SecondaryLabel)); }); btnSources->Bind(wxEVT_MENU, [=](wxCommandEvent&){ parent->EditCatalogPropertiesAndUpdateFromSources(); }); } Layout(); } WelcomeWindow *WelcomeWindow::ms_instance = nullptr; WelcomeWindow *WelcomeWindow::GetAndActivate() { if (!ms_instance) ms_instance = new WelcomeWindow(); ms_instance->Show(); if (ms_instance->IsIconized()) ms_instance->Iconize(false); ms_instance->Raise(); return ms_instance; } bool WelcomeWindow::HideActive() { bool retval = ms_instance && ms_instance->IsShown(); if (ms_instance) ms_instance->Hide(); return retval; } WelcomeWindow::~WelcomeWindow() { ms_instance = nullptr; } WelcomeWindow::WelcomeWindow() : WelcomeWindowBase(nullptr, wxID_ANY, _("Welcome to Poedit"), wxDefaultPosition, wxDefaultSize, wxSYSTEM_MENU | wxCLOSE_BOX | wxCAPTION | wxCLIP_CHILDREN) { ColorScheme::SetupWindowColors(this, [=] { if (ColorScheme::GetWindowMode(this) == ColorScheme::Light) SetBackgroundColour(*wxWHITE); else SetBackgroundColour(GetDefaultAttributes().colBg); }); #ifdef __WXOSX__ NSWindow *wnd = (NSWindow*)GetWXWindow(); wnd.excludedFromWindowsMenu = YES; #endif #ifdef __WXMSW__ SetIcons(wxIconBundle(wxStandardPaths::Get().GetResourcesDir() + "\\Resources\\Poedit.ico")); #endif #ifndef __WXOSX__ SetMenuBar(wxGetApp().CreateMenu(Menu::WelcomeWindow)); #endif auto topsizer = new wxBoxSizer(wxHORIZONTAL); auto leftoutersizer = new wxBoxSizer(wxVERTICAL); auto leftsizer = new wxBoxSizer(wxVERTICAL); #ifdef __WXMSW__ if (GetMenuWindow()) { leftoutersizer->Add(GetMenuWindow(), wxSizerFlags().Left().Border(wxALL, PX(4))); } #endif auto appicon = GetPoeditAppIcon(128); auto logoWindow = new wxStaticBitmap(this, wxID_ANY, appicon, wxDefaultPosition, wxSize(PX(128),PX(128))); leftsizer->Add(logoWindow, wxSizerFlags().Center().Border(wxALL, PX(5))); auto header = new HeaderStaticText(this, wxID_ANY, _("Welcome to Poedit")); leftsizer->Add(header, wxSizerFlags().Center()); auto version = new wxStaticText(this, wxID_ANY, wxString::Format(_("Version %s"), wxGetApp().GetAppVersion())); leftsizer->Add(version, wxSizerFlags().Center().Border(wxTOP, PX(5))); leftsizer->AddSpacer(PX(30)); leftsizer->Add(new ActionButton( this, XRCID("menu_new_from_pot"), "CreateTranslation", _("Create new"), _("Create new translation from POT template.")), wxSizerFlags().Border(wxTOP, PX(2)).Expand()); leftsizer->Add(new ActionButton( this, wxID_OPEN, "EditTranslation", _("Browse files"), _("Open and edit translation files.")), wxSizerFlags().Border(wxTOP, PX(2)).Expand()); #ifdef HAVE_HTTP_CLIENT leftsizer->Add(new ActionButton( this, XRCID("menu_open_cloud"), "Collaborate", _("Translate cloud project"), _("Collaborate with other people online.")), wxSizerFlags().Border(wxTOP, PX(2)).Expand()); auto learnCloud = new LearnMoreLink(this, "https://poedit.net/cloud-sync", _("How does cloud sync work?")); leftsizer->Add(learnCloud, wxSizerFlags().Left().Border(wxLEFT, MACOS_OR_OTHER(PX(18), PX(8)))); #endif // HAVE_HTTP_CLIENT leftoutersizer->Add(leftsizer, wxSizerFlags().Center().Border(wxALL, PX(50))); topsizer->Add(leftoutersizer, wxSizerFlags(1).Expand()); #ifndef __WXGTK__ auto rightsizer = new wxBoxSizer(wxVERTICAL); topsizer->Add(rightsizer, wxSizerFlags().Expand()); #ifdef __WXMSW__ // wx doesn't like close button overlapping the recents list (or any overlapping at all), // so add some space at the top of the list to improve the situation auto closeButton = GetCloseButton(); if (closeButton) { auto label = new SidebarHeader(this, _("Recent files")); label->SetMinSize(wxSize(-1, closeButton->GetSize().y)); rightsizer->Add(label, wxSizerFlags().Expand().Border(wxRIGHT, closeButton->GetSize().x)); } #endif // __WXMSW__ auto recentFiles = new RecentFilesCtrl(this); recentFiles->SetMinSize(wxSize(PX(320), -1)); rightsizer->Add(recentFiles, wxSizerFlags(1).Expand()); #endif SetSizerAndFit(topsizer); ColorScheme::SetupWindowColors(this, [=] { header->SetForegroundColour(ColorScheme::Get(Color::Label)); version->SetForegroundColour(ColorScheme::Get(Color::SecondaryLabel)); #ifdef __WXMSW__ if (GetCloseButton()) GetCloseButton()->SetBackgroundColour(ColorScheme::Get(Color::SidebarBackground)); for (auto& w : GetChildren()) { if (dynamic_cast(w)) w->SetBackgroundColour(GetBackgroundColour()); } #endif }); } poedit-3.6.3/src/colorscheme.cpp0000644000175100001660000002454415011674230012277 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2025 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 "colorscheme.h" #include #include #ifdef __WXGTK__ #include #if PANGO_VERSION_CHECK(1,38,0) #define SUPPORTS_BGALPHA #endif #else #define SUPPORTS_BGALPHA #endif namespace { #ifdef __WXOSX__ inline wxColour sRGB(int r, int g, int b, double a = 1.0) { return wxColour([NSColor colorWithSRGBRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]); } inline bool IsDarkAppearance(NSAppearance *appearance) { NSAppearanceName appearanceName = [appearance bestMatchFromAppearancesWithNames:@[NSAppearanceNameAqua, NSAppearanceNameDarkAqua]]; return [appearanceName isEqualToString:NSAppearanceNameDarkAqua]; } #else inline wxColour sRGB(int r, int g, int b, double a = 1.0) { return wxColour(r, g, b, int(a * wxALPHA_OPAQUE)); } #endif } // anonymous namespace std::unique_ptr ColorScheme::s_data; bool ColorScheme::s_appModeDetermined = false; ColorScheme::Mode ColorScheme::s_appMode = ColorScheme::Mode::Light; wxColour ColorScheme::DoGet(Color color, Mode mode) { switch (color) { // Labels: case Color::Label: #ifdef __WXOSX__ return wxColour([NSColor labelColor]); #else return wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); #endif case Color::SecondaryLabel: #ifdef __WXOSX__ return wxColour([NSColor secondaryLabelColor]); #elif defined(__WXGTK__) return wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); #else return wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT); #endif case Color::ListControlBg: #ifdef __WXOSX__ if (mode == Dark) { // FIXME: In dark mode, listbox color is special and requires NSBox to be rendered correctly; // this is just passable approximation return wxColour([NSColor underPageBackgroundColor]); } else #endif return wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOX); // List items: case Color::ItemID: #ifdef __WXOSX__ return wxColour([NSColor tertiaryLabelColor]); #else return mode == Light ? "#a1a1a1" : wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOXTEXT).ChangeLightness(50); #endif case Color::ItemFuzzy: return mode == Dark ? sRGB(253, 178, 72) : sRGB(230, 134, 0); case Color::ItemError: return sRGB(225, 77, 49); case Color::ErrorText: return *wxRED; case Color::ItemContextFg: return mode == Dark ? sRGB(180, 222, 254) : sRGB(70, 109, 137); case Color::ItemContextBg: if (mode == Dark) return sRGB(67, 94, 147, 0.6); else return sRGB(217, 232, 242); case Color::ItemContextBgHighlighted: #if defined(__WXMSW__) return sRGB(255, 255, 255, 0.50); #elif defined(SUPPORTS_BGALPHA) return sRGB(255, 255, 255, 0.35); #else return DoGet(Color::ItemContextBg, mode); #endif // Tags: case Color::TagContextFg: return DoGet(Color::ItemContextFg, mode); case Color::TagContextBg: return DoGet(Color::ItemContextBg, mode); case Color::TagSecondaryBg: return mode == Dark ? sRGB(255, 255, 255, 0.5) : sRGB(0, 0, 0, 0.10); case Color::TagErrorLineBg: return sRGB(241, 134, 135); case Color::TagWarningLineBg: return mode == Dark ? sRGB(198, 171, 113) : sRGB(253, 235, 176); case Color::TagErrorLineFg: return sRGB(0, 0, 0, 0.8); case Color::TagSecondaryFg: case Color::TagWarningLineFg: return sRGB(0, 0, 0, 0.9); // Separators: case Color::ToolbarSeparator: return mode == Dark ? "#505050" : "#cdcdcd"; case Color::SidebarSeparator: return mode == Dark ? *wxBLACK : "#cbcbcb"; case Color::EditingSeparator: return mode == Dark ? sRGB(80, 80, 80) : sRGB(204, 204, 204); case Color::SidebarBlockSeparator: return mode == Dark ? sRGB(80, 80, 80, 0.8) : sRGB(204, 204, 204, 0.8); case Color::EditingThickSeparator: return mode == Dark ? sRGB(46, 47, 50) : sRGB(240, 240, 240); // Backgrounds: case Color::SidebarBackground: #ifdef __WXOSX__ if (@available(macOS 11.0, *)) return mode == Dark ? sRGB(46, 47, 50) : sRGB(240, 240, 240); // same as EditingThickSeparator #endif return mode == Dark ? sRGB(45, 42, 41) : "#edf0f4"; case Color::EditingBackground: #ifdef __WXOSX__ return wxColour([NSColor textBackgroundColor]); #else return wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOX); #endif // Fuzzy toggle: case Color::FuzzySwitch: return mode == Dark ? sRGB(253, 178, 72) : sRGB(244, 143, 0); case Color::FuzzySwitchInactive: #ifdef __WXGTK__ return mode == Dark ? sRGB(163, 163, 163) : sRGB(87, 87, 87); #else return DoGet(Color::SecondaryLabel, mode); #endif // Syntax highlighting: case Color::SyntaxLeadingWhitespaceBg: return mode == Dark ? sRGB(75, 49, 111) : sRGB(234, 223, 247); case Color::SyntaxEscapeFg: return mode == Dark ? sRGB(234, 188, 244) : sRGB(162, 0, 20); case Color::SyntaxEscapeBg: return mode == Dark ? sRGB(90, 15, 167, 0.5) : sRGB(254, 234, 236); case Color::SyntaxMarkup: return mode == Dark ? sRGB(76, 156, 230) : sRGB(0, 121, 215); case Color::SyntaxFormat: return mode == Dark ? sRGB(250, 165, 251) : sRGB(178, 52, 197); // Attention bar: #ifdef __WXGTK__ // FIXME: use system colors case Color::AttentionWarningBackground: return sRGB(250, 173, 61); case Color::AttentionQuestionBackground: return sRGB(138, 173, 212); case Color::AttentionErrorBackground: return sRGB(237, 54, 54); #else case Color::AttentionWarningBackground: return mode == Dark ? sRGB(254, 224, 132) : sRGB(254, 228, 149); case Color::AttentionQuestionBackground: return sRGB(199, 244, 156); case Color::AttentionErrorBackground: return sRGB(241, 103, 104); #endif // Buttons: case Color::TranslucentButton: return sRGB(255, 255, 255, 0.5); case Color::Max: return wxColour(); } return wxColour(); // Visual C++ being silly } void ColorScheme::InvalidateCachesIfNeeded() { if (!s_appModeDetermined) return; // nothing to do yet // invalidate the mode and force re-checking: auto prevMode = s_appMode; s_appModeDetermined = false; if (prevMode == GetAppMode()) return; // mode didn't really check, nothing to invalidate #ifndef __WXOSX__ // Colors are cached for both variants, so don't need to be invalidated. // s_appMode was refreshed above in any case. // That leaves cached template icons in wxArtProvider on non-Mac platforms, // which we can purge by adding a dummy provider: auto dummy = new wxArtProvider(); wxArtProvider::Push(dummy); wxArtProvider::Delete(dummy); #endif } ColorScheme::Mode ColorScheme::GetAppMode() { if (!s_appModeDetermined) { #ifdef __WXOSX__ s_appMode = IsDarkAppearance(NSApp.effectiveAppearance) ? Dark : Light; #else auto colBg = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); auto colFg = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); s_appMode = (colFg.GetLuminance() - colBg.GetLuminance() > 0.2) ? Dark : Light; #endif s_appModeDetermined = true; } return s_appMode; } ColorScheme::Mode ColorScheme::GetWindowMode(wxWindow *win) { // TODO: Migrate to using wxSystemAppearance. That is only app-wide, not per-window, // but I don't think Poedit actually requires per-window handling. #ifdef __WXOSX__ NSView *view = win->GetHandle(); return IsDarkAppearance(view.effectiveAppearance) ? Dark : Light; #else // Use dark scheme for very dark backgrounds: auto colBg = win->GetDefaultAttributes().colBg; auto colFg = win->GetDefaultAttributes().colFg; return (colFg.GetLuminance() - colBg.GetLuminance() > 0.2) ? Dark : Light; #endif } wxColour ColorScheme::GetBlendedOn(Color color, wxWindow *win, Color bgColor) { auto bg = (bgColor != Color::Max) ? Get(bgColor, win) : win->GetBackgroundColour(); auto fg = Get(color, win); #ifndef __WXOSX__ if (fg.Alpha() != wxALPHA_OPAQUE) { double alpha = fg.Alpha() / 255.0; return wxColour(wxColour::AlphaBlend(fg.Red(), bg.Red(), alpha), wxColour::AlphaBlend(fg.Green(), bg.Green(), alpha), wxColour::AlphaBlend(fg.Blue(), bg.Blue(), alpha)); } #endif return fg; } void ColorScheme::CleanUp() { s_data.reset(); } poedit-3.6.3/src/cloud_sync.h0000644000175100001660000001312415011674230011573 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2017-2025 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_cloud_sync_h #define Poedit_cloud_sync_h #include "catalog.h" #include "concurrency.h" #include #if wxUSE_GUI #include "customcontrols.h" #include "errors.h" #include "hidpi.h" #include #include #include #include #include #endif #include /** Abstract interface to cloud sync location for a file being edited. If associated with a Catalog instance, upon saving changes, they are automatically synced using this class' specialization. */ class CloudSyncDestination { public: virtual ~CloudSyncDestination() {} /// Name of the destination (e.g. Crowdin or hostname) virtual wxString GetName() const = 0; /// Asynchronously uploads the file. Returned future throws on error. virtual dispatch::future Upload(CatalogPtr file) = 0; /// Ensures the user is authenticated with sync service, possibly showing /// login UI in the process. /// @return true if logged in, false if the user declined virtual bool AuthIfNeeded(wxWindow *parent) = 0; /// Convenicence for creating a destination from a lambda. template static std::shared_ptr Make(const wxString& name, F&& func) { class Dest : public CloudSyncDestination { public: Dest(const wxString& name_, F&& func_) : name(name_), func(func_) {} wxString GetName() const override { return name; } dispatch::future Upload(CatalogPtr file) override { return func(file); } wxString name; F func; }; return std::make_shared(name, std::move(func)); } }; #if wxUSE_GUI class CloudSyncProgressWindow : public wxDialog { public: CloudSyncProgressWindow(wxWindow *parent, const wxString& title = _("Syncing")) : wxDialog(parent, wxID_ANY, title, 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(40))); sizer->AddStretchSpacer(); SetSizerAndFit(sizer); CenterOnParent(); } CloudSyncProgressWindow(wxWindow *parent, std::shared_ptr dest) : CloudSyncProgressWindow(parent) { // TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. auto label = wxString::Format(_(L"Uploading translations to %s…"), dest->GetName()); auto sz = Activity->GetTextExtent(label); Activity->SetSize(wxSize(std::max(PX(300), PX(100) + sz.x), -1)); Activity->Start(label); GetSizer()->SetSizeHints(this); CenterOnParent(); } ActivityIndicator *Activity; /// Show the window while performing background sync action. Show error if static void RunSync(wxWindow *parent, std::shared_ptr dest, CatalogPtr file) { if (!dest->AuthIfNeeded(parent)) { return; } wxWindowPtr progress(new CloudSyncProgressWindow(parent, dest)); #ifdef __WXOSX__ progress->ShowWindowModal(); #else progress->Show(); #endif auto future = dispatch::async([=]{ return dest->Upload(file); }); for (;;) { if (future.wait_for(boost::chrono::milliseconds(10)) == dispatch::future_status::ready) break; // all is done wxYield(); } #ifdef __WXOSX__ progress->EndModal(wxID_OK); #else progress->Hide(); #endif try { future.get(); } catch (...) { wxWindowPtr err(new wxMessageDialog ( parent, // TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. wxString::Format(_("Uploading translations to %s failed."), dest->GetName()), _("Syncing error"), wxOK | wxICON_ERROR )); err->SetExtendedMessage(DescribeCurrentException()); err->ShowWindowModalThenDo([err](int){}); } } }; #endif // wxUSE_GUI #endif // Poedit_cloud_sync_h poedit-3.6.3/src/custom_buttons.cpp0000644000175100001660000004466415011674230013071 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2025 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 "custom_buttons.h" #include "colorscheme.h" #include "hidpi.h" #include "str_helpers.h" #include "utility.h" #include #ifdef __WXMSW__ #include #include #include #include #include #include #endif #ifdef __WXGTK3__ #include #endif #ifdef __WXOSX__ #import #import #include "StyleKit.h" // --------------------------------------------------------------------- // ActionButton // --------------------------------------------------------------------- @interface POActionButton : NSButton @property wxWindow *parent; @property NSString *heading; @property BOOL mouseHover; @end @implementation POActionButton - (id)initWithLabel:(NSString*)label heading:(NSString*)heading { self = [super init]; if (self) { self.title = label; self.heading = heading; self.buttonType = NSButtonTypeMomentaryPushIn; self.bezelStyle = NSBezelStyleTexturedRounded; self.showsBorderOnlyWhileMouseInside = YES; self.mouseHover = NO; } return self; } - (void)sizeToFit { [super sizeToFit]; NSSize size = self.frame.size; size.height = 48; if (self.image) size.width += 32; [self setFrameSize:size]; } - (void)drawRect:(NSRect)dirtyRect { #pragma unused(dirtyRect) NSColor *bg = self.window.backgroundColor; if (self.mouseHover) { NSColor *highlight = [bg colorWithSystemEffect:NSColorSystemEffectRollover]; // use only lighter version of the highlight by blending with the background bg = [bg blendedColorWithFraction:0.2 ofColor:highlight]; } [StyleKit drawActionButtonWithFrame:self.bounds buttonColor:bg hasIcon:self.image != nil label:self.heading description:self.title]; // unlike normal drawing methods, NSButtonCell's drawImage supports template images if (self.image) [self.cell drawImage:self.image withFrame:NSMakeRect(NSMinX(self.bounds) + 18, NSMinY(self.bounds) + 8, 32, 32) inView:self]; } - (void)mouseEntered:(NSEvent *)event { [super mouseEntered:event]; self.mouseHover = YES; [self setNeedsDisplay:YES]; } - (void)mouseExited:(NSEvent *)event { [super mouseExited:event]; self.mouseHover = NO; [self setNeedsDisplay:YES]; } - (void)controlAction:(id)sender { #pragma unused(sender) wxCommandEvent event(wxEVT_MENU, _parent->GetId()); event.SetEventObject(_parent); _parent->ProcessWindowEvent(event); } @end ActionButton::ActionButton(wxWindow *parent, wxWindowID winid, const wxString& symbolicName, const wxString& label, const wxString& note) { POActionButton *view = [[POActionButton alloc] initWithLabel:str::to_NS(note) heading:str::to_NS(label)]; if (!symbolicName.empty()) view.image = [NSImage imageNamed:str::to_NS("AB_" + symbolicName + "Template")]; view.parent = this; wxNativeWindow::Create(parent, winid, view); } // --------------------------------------------------------------------- // SwitchButton // --------------------------------------------------------------------- @interface POSwitchButton : NSButton @property NSColor* onColor; @property NSColor* labelOffColor; @property BOOL isDarkMode; @property SwitchButton *parent; @property (nonatomic) double animationPosition; @end @implementation POSwitchButton - (id)initWithLabel:(NSString*)label { self = [super init]; if (self) { self.title = label; self.bezelStyle = NSBezelStyleSmallSquare; self.buttonType = NSButtonTypeOnOff; self.font = [NSFont boldSystemFontOfSize:[NSFont smallSystemFontSize]]; self.animationPosition = 0.0; self.onColor = [NSColor colorWithCalibratedRed:0.302 green:0.847 blue:0.396 alpha:1.0]; self.labelOffColor = [NSColor colorWithCalibratedRed:0 green:0 blue:0 alpha:1.0]; } return self; } - (void)sizeToFit { [super sizeToFit]; NSSize size = self.frame.size; size.width += 40; size.height += 2; [self setFrameSize:size]; } - (void)drawRect:(NSRect)dirtyRect { #pragma unused(dirtyRect) [StyleKit drawSwitchButtonWithFrame:self.bounds onColor:self.onColor labelOffColor:self.labelOffColor label:self.title togglePosition:self.animationPosition isDarkMode:self.isDarkMode]; } - (void)setAnimationPosition:(double)animationPosition { _animationPosition = animationPosition; self.needsDisplay = YES; } + (id)defaultAnimationForKey:(NSString *)key { if ([key isEqualToString:@"animationPosition"]) return [CABasicAnimation animation]; return [super defaultAnimationForKey:key]; } - (void)setState:(NSInteger)state { if (state == self.state) return; [super setState:state]; self.animationPosition = (state == NSControlStateValueOn) ? 1.0 : 0.0; } - (void)controlAction:(id)sender { #pragma unused(sender) double target = (self.state == NSControlStateValueOn) ? 1.0 : 0.0; [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) { context.duration = 0.1; self.animator.animationPosition = target; }]; _parent->SendToggleEvent(); } @end class SwitchButton::impl { public: impl(SwitchButton *parent, const wxString& label) { m_view = [[POSwitchButton alloc] initWithLabel:str::to_NS(label)]; m_view.parent = parent; } NSView *View() const { return m_view; } void SetColors(const wxColour& on, const wxColour& offLabel, bool isDarkMode) { m_view.onColor = on.OSXGetNSColor(); m_view.labelOffColor = offLabel.OSXGetNSColor(); m_view.isDarkMode = isDarkMode; } void SetValue(bool value) { m_view.state = value ? NSControlStateValueOn : NSControlStateValueOff; } bool GetValue() const { return m_view.state == NSControlStateValueOn; } private: POSwitchButton *m_view; }; SwitchButton::SwitchButton(wxWindow *parent, wxWindowID winid, const wxString& label) { m_impl.reset(new impl(this, label)); wxNativeWindow::Create(parent, winid, m_impl->View()); } SwitchButton::~SwitchButton() { } void SwitchButton::SetColors(const wxColour& on, const wxColour& offLabel) { m_impl->SetColors(on, offLabel, ColorScheme::GetWindowMode(this) == ColorScheme::Dark); } void SwitchButton::SetValue(bool value) { m_impl->SetValue(value); } bool SwitchButton::GetValue() const { return m_impl->GetValue(); } void SwitchButton::SendToggleEvent() { wxCommandEvent event(wxEVT_TOGGLEBUTTON, m_windowId); event.SetInt(GetValue()); event.SetEventObject(this); ProcessWindowEvent(event); } #else // !__WXOSX__ #ifdef __WXGTK__ ActionButton::ActionButton(wxWindow *parent, wxWindowID winid, const wxString& /*symbolicName*/, const wxString& label, const wxString& note) : wxButton(parent, winid, label, wxDefaultPosition, wxSize(-1, 50), wxBU_LEFT) { SetLabelMarkup(wxString::Format("%s\n%s", label, note)); Bind(wxEVT_BUTTON, &ActionButton::OnPressed, this); } #endif // __WXGTK__ #ifdef __WXMSW__ ActionButton::ActionButton(wxWindow *parent, wxWindowID winid, const wxString& symbolicName, const wxString& label, const wxString& note) : wxCommandLinkButton(parent, winid, label, note, wxDefaultPosition, wxSize(-1, PX(48))) { m_title = label; m_note = note; m_titleFont = GetFont().MakeLarger(); MakeOwnerDrawn(); if (!symbolicName.empty()) { auto bmp = wxArtProvider::GetBitmap("AB_" + symbolicName + "Template@opaque"); SetBitmap(bmp); } Bind(wxEVT_BUTTON, &ActionButton::OnPressed, this); } bool ActionButton::MSWOnDraw(WXDRAWITEMSTRUCT* wxdis) { LPDRAWITEMSTRUCT lpDIS = (LPDRAWITEMSTRUCT)wxdis; HDC hdc = lpDIS->hDC; UINT state = lpDIS->itemState; const bool highlighted = IsMouseInWindow(); wxRect rect(lpDIS->rcItem.left, lpDIS->rcItem.top, lpDIS->rcItem.right - lpDIS->rcItem.left, lpDIS->rcItem.bottom - lpDIS->rcItem.top); wxRect textRect(rect); textRect.SetLeft(rect.GetLeft() + PX(8)); wxPaintDCEx dc(this, hdc); if (highlighted) { dc.SetPen(*wxTRANSPARENT_PEN); dc.SetBrush(GetBackgroundColour().ChangeLightness(95)); dc.DrawRectangle(rect); } auto bmp = GetBitmap(); if (bmp.IsOk()) { dc.DrawBitmap(bmp, PX(16), PX(8)); textRect.SetLeft(textRect.GetLeft() + PX(48)); textRect.SetRight(rect.GetRight()); }; dc.SetFont(m_titleFont); dc.SetTextForeground(ColorScheme::Get(::Color::Label, this)); int theight; dc.GetTextExtent(m_title, nullptr, &theight); dc.DrawText(m_title, textRect.x, PX(24) - theight); dc.SetFont(GetFont()); dc.SetTextForeground(ColorScheme::Get(::Color::SecondaryLabel, this)); dc.DrawText(m_note, textRect.x, PX(24)); // draw the focus rectangle if we need it if ((state & ODS_FOCUS) && !(state & ODS_NOFOCUSRECT)) { RECT r = { rect.x, rect.y, rect.width, rect.height }; DrawFocusRect(hdc, &r); } return true; } #endif // __WXMSW__ void ActionButton::OnPressed(wxCommandEvent&) { wxCommandEvent event(wxEVT_MENU, GetId()); event.SetEventObject(this); ProcessWindowEvent(event); } SwitchButton::SwitchButton(wxWindow *parent, wxWindowID winid, const wxString& label) { long style = wxBU_EXACTFIT; #ifdef __WXMSW__ style |= wxNO_BORDER; #endif wxToggleButton::Create(parent, winid, label, wxDefaultPosition, wxDefaultSize, style); #ifdef __WXMSW__ SetFont(GetFont().Bold()); SetBackgroundColour(parent->GetBackgroundColour()); MakeOwnerDrawn(); Bind(wxEVT_LEFT_DOWN, &SwitchButton::OnMouseClick, this); #if wxUSE_ACCESSIBILITY Bind(wxEVT_TOGGLEBUTTON, [=](wxCommandEvent& e) { wxAccessible::NotifyEvent(wxACC_EVENT_OBJECT_STATECHANGE, this, wxOBJID_CLIENT, wxACC_SELF); e.Skip(); }); #endif // wxUSE_ACCESSIBILITY #endif // __WXMSW__ } #ifdef __WXMSW__ #if wxUSE_ACCESSIBILITY wxAccessible* SwitchButton::CreateAccessible() { return new accessible(this); } #endif // wxUSE_ACCESSIBILITY #endif // __WXMSW__ void SwitchButton::SetColors(const wxColour& on, const wxColour& offLabel) { (void)on; (void)offLabel; #ifdef __WXMSW__ m_clrOn = on; m_clrOffLabel = offLabel; #endif #ifdef __WXGTK3__ static const char *css_style = R"( * { padding: 0; margin: 0; font-weight: bold; font-size: 80%; color: %s; } *:checked { color: %s; } )"; auto css_on = on.GetAsString(wxC2S_CSS_SYNTAX); auto css_off = offLabel.GetAsString(wxC2S_CSS_SYNTAX); GTKApplyCssStyle(wxString::Format(css_style, css_off, css_on).utf8_str()); #endif } #ifdef __WXMSW__ void SwitchButton::OnMouseClick(wxMouseEvent& e) { // normal click handling moves focus to the switch (which is a button // underneath), which we'd rather not do SetValue(!GetValue()); // we need to send the event, because SetValue() doesn't wxCommandEvent event(wxEVT_TOGGLEBUTTON, GetId()); event.SetInt(GetValue()); event.SetEventObject(this); ProcessCommand(event); } wxSize SwitchButton::DoGetBestSize() const { auto size = wxToggleButton::DoGetBestSize(); size.x += PX(44); size.y = PX(20); return size; } bool SwitchButton::MSWOnDraw(WXDRAWITEMSTRUCT *wxdis) { LPDRAWITEMSTRUCT lpDIS = (LPDRAWITEMSTRUCT) wxdis; HDC hdc = lpDIS->hDC; UINT state = lpDIS->itemState; if (GetNormalState() == State_Pressed) state |= ODS_SELECTED; const bool toggled = state & ODS_SELECTED; const bool isRtl = ::GetLayout(hdc) & LAYOUT_RTL; wxRect rect(lpDIS->rcItem.left, lpDIS->rcItem.top, lpDIS->rcItem.right - lpDIS->rcItem.left, lpDIS->rcItem.bottom - lpDIS->rcItem.top); wxScopedPtr gc(wxGraphicsContext::CreateFromNativeHDC(hdc)); gc->EnableOffset(false); if (isRtl) { gc->Translate(rect.width, 0); gc->Scale(-1.0, 1.0); } if (toggled) { gc->SetBrush(m_clrOn); gc->SetPen(wxPen(m_clrOn.ChangeLightness(95), PX(2))); } else { gc->SetBrush(GetBackgroundColour()); gc->SetPen(wxPen(m_clrOffLabel, PX(2))); } wxRect switchRect(rect.GetRight() - PX(44), 0, PX(44), wxMin(PX(20), rect.GetHeight())); switchRect.CenterIn(rect, wxVERTICAL); switchRect.Deflate(PX(2)); double radius = switchRect.height / 2.0; gc->DrawRoundedRectangle(switchRect.x, switchRect.y, switchRect.width, switchRect.height, radius); if (toggled) { gc->SetPen(GetBackgroundColour()); gc->SetBrush(GetBackgroundColour()); } else { gc->SetPen(wxPen(m_clrOffLabel, PX(1))); gc->SetBrush(m_clrOffLabel.ChangeLightness(105)); } double position = toggled ? 1.0 : 0.0; wxRect dotRect(switchRect); dotRect.Deflate(PX(4)); dotRect.SetLeft(dotRect.GetLeft() + position * (dotRect.GetWidth() - dotRect.GetHeight())); dotRect.SetWidth(dotRect.GetHeight()); gc->DrawEllipse(dotRect.x, dotRect.y, dotRect.width, dotRect.height); gc->SetFont(GetFont(), toggled ? m_clrOn : m_clrOffLabel); double textw, texth, descent; gc->GetTextExtent(GetLabel(), &textw, &texth, &descent); texth += descent; wxCoord textpos = switchRect.y + (switchRect.height - texth) / 2 + PX(0.5); gc->PushState(); if (isRtl) { gc->Translate(textw, 0); gc->Scale(-1.0, 1.0); } gc->DrawText(GetLabel(), rect.x, textpos); gc->PopState(); // draw the focus rectangle if we need it if ((state & ODS_FOCUS) && !(state & ODS_NOFOCUSRECT)) { RECT r = {rect.x, textpos, rect.x + (int)textw, textpos + (int)texth}; DrawFocusRect(hdc, &r); } return true; } #if wxUSE_ACCESSIBILITY wxAccStatus SwitchButton::accessible::GetRole(int childId, wxAccRole* role) { if (childId != wxACC_SELF) { return wxAccessible::GetRole(childId, role); } *role = wxROLE_SYSTEM_CHECKBUTTON; return wxACC_OK; } wxAccStatus SwitchButton::accessible::GetState(int childId, long* state) { if (childId != wxACC_SELF) { return wxAccessible::GetState(childId, state); } auto window = dynamic_cast(this->GetWindow()); if (window->IsFocusable()) { *state |= wxACC_STATE_SYSTEM_FOCUSABLE; } if (!window->IsShown()) { *state |= wxACC_STATE_SYSTEM_INVISIBLE; } if (window->GetValue()) { *state |= wxACC_STATE_SYSTEM_CHECKED; } if (!window->IsEnabled()) { *state |= wxACC_STATE_SYSTEM_UNAVAILABLE; } if (window->HasFocus()) { *state |= wxACC_STATE_SYSTEM_FOCUSED; } return wxACC_OK; } #endif // wxUSE_ACCESSIBILITY #endif // __WXMSW__ #endif // !__WXOSX__ // --------------------------------------------------------------------- // TranslucentButton // --------------------------------------------------------------------- #ifdef __WXOSX__ @interface POTranslucentButton : NSButton @property TranslucentButton *parent; @end @implementation POTranslucentButton - (id)initWithLabel:(NSString*)label { self = [super init]; if (self) { self.title = label; self.bezelStyle = NSBezelStyleRoundRect; self.buttonType = NSButtonTypeMomentaryPushIn; self.font = [NSFont systemFontOfSize:[NSFont smallSystemFontSize]]; } return self; } - (void)sizeToFit { NSSize size = self.attributedTitle.size; size.width += 28; size.height = 24; [self setFrameSize:size]; } - (void)drawRect:(NSRect)dirtyRect { #pragma unused(dirtyRect) [StyleKit drawTranslucentButtonWithFrame:self.bounds label:[self title] pressed:[self isHighlighted]]; } - (void)controlAction:(id)sender { #pragma unused(sender) wxCommandEvent event(wxEVT_BUTTON, _parent->GetId()); event.SetEventObject(_parent); _parent->ProcessWindowEvent(event); } @end TranslucentButton::TranslucentButton(wxWindow *parent, wxWindowID winid, const wxString& label) { POTranslucentButton *view = [[POTranslucentButton alloc] initWithLabel:str::to_NS(label)]; view.parent = this; wxNativeWindow::Create(parent, winid, view); } #else // !__WXOSX__ TranslucentButton::TranslucentButton(wxWindow *parent, wxWindowID winid, const wxString& label) { wxButton::Create(parent, winid, label); #ifdef __WXMSW__ ColorScheme::SetupWindowColors(this, [=] { if (ColorScheme::GetAppMode() == ColorScheme::Light) SetBackgroundColour(ColorScheme::GetBlendedOn(::Color::TranslucentButton, parent)); else SetBackgroundColour(GetDefaultAttributes().colBg); }); #endif #ifdef __WXGTK3__ GTKApplyCssStyle(R"( * { background-image: none; background-color: rgba(255,255,255,0.5); color: rgba(0,0,0,0.7); text-shadow: none; border-color: rgba(0,0,0,0.3); border-image: none; border-radius: 2; } *:hover { background-color: rgba(255,255,255,0.7); } )"); #endif } #endif // !__WXOSX__ poedit-3.6.3/src/menus.h0000644000175100001660000000405315011674230010561 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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_menus_h #define Poedit_menus_h #include "catalog.h" #include /// Kind of menu to load enum class Menu { Global, // app-global menu used on macOS Editor, // for PoeditFrame, editor window WelcomeWindow }; /** Management of various menus in Poedit. Centralizes platform-specific hacks and deals with menu variants in different windows. */ class MenusManager { public: MenusManager(); ~MenusManager(); wxMenuBar *CreateMenu(Menu purpose); #ifdef __WXOSX__ protected: void FixupMenusForMacIfNeeded(); private: // Make OSX-specific modifications to the menus, e.g. adding items into // the apple menu etc. Call on every newly created menubar void TweakOSXMenuBar(wxMenuBar *bar); class NativeMacData; std::unique_ptr m_nativeMacData; #endif // __WXOSX__ }; #endif // Poedit_menus_h poedit-3.6.3/src/menus.cpp0000644000175100001660000002560615011674230011123 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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 "menus.h" #include "app_updates.h" #include "recent_files.h" #include "str_helpers.h" #include #ifdef __WXOSX__ // TODO: move this to app delegate, once we have it (proxying to wx's one) @interface POMenuActions : NSObject @end @implementation POMenuActions - (void)showWelcomeWindow: (id)sender { #pragma unused(sender) wxCommandEvent event(wxEVT_MENU, XRCID("menu_welcome")); wxTheApp->ProcessEvent(event); } @end struct MenusManager::NativeMacData { NSMenu *windowMenu = nullptr; NSMenuItem *windowMenuItem = nullptr; wxMenuBar *menuBar = nullptr; POMenuActions *actions = nullptr; }; #endif MenusManager::MenusManager() { #ifdef __WXOSX__ m_nativeMacData.reset(new NativeMacData); m_nativeMacData->actions = [POMenuActions new]; wxMenuBar::SetAutoWindowMenu(false); #endif } MenusManager::~MenusManager() { } wxMenuBar *MenusManager::CreateMenu(Menu purpose) { wxMenuBar *bar = nullptr; switch (purpose) { case Menu::Global: #ifdef __WXOSX__ bar = wxXmlResource::Get()->LoadMenuBar("mainmenu_global"); #endif break; case Menu::WelcomeWindow: #ifndef __WXOSX__ bar = wxXmlResource::Get()->LoadMenuBar("mainmenu_global"); #endif break; case Menu::Editor: bar = wxXmlResource::Get()->LoadMenuBar("mainmenu"); break; } wxASSERT( bar ); RecentFiles::Get().UseMenu(bar->FindItem(XRCID("open_recent"))); #ifdef __WXOSX__ TweakOSXMenuBar(bar); if (purpose == Menu::Global) wxMenuBar::MacSetCommonMenuBar(bar); #endif #ifndef HAVE_HTTP_CLIENT wxMenu *menu; wxMenuItem *item; item = bar->FindItem(XRCID("menu_update_from_crowdin"), &menu); if (item) menu->Destroy(item); item = bar->FindItem(XRCID("menu_open_cloud"), &menu); if (item) menu->Destroy(item); #endif return bar; } #ifdef __WXOSX__ static NSMenuItem *AddNativeItem(NSMenu *menu, int pos, const wxString& text, SEL ac, NSString *key) { NSString *str = str::to_NS(text); if (pos == -1) return [menu addItemWithTitle:str action:ac keyEquivalent:key]; else return [menu insertItemWithTitle:str action:ac keyEquivalent:key atIndex:pos]; } void MenusManager::TweakOSXMenuBar(wxMenuBar *bar) { wxMenu *apple = bar->OSXGetAppleMenu(); if (apple) { apple->Insert(1, XRCID("menu_check_for_updates"), _(L"Check for Updates…")); apple->Insert(4, XRCID("menu_manager"), _("Catalogs Manager")); apple->InsertSeparator(4); } if (@available(macOS 13.0, *)) { // Correct label is already used } else { wxMenuItem *prefsItem = bar->FindItem(wxID_PREFERENCES); if (prefsItem) prefsItem->SetItemLabel(_(L"&Preferences…") + "\tCtrl+,"); } wxMenu *fileMenu = nullptr; wxMenuItem *fileCloseItem = bar->FindItem(wxID_CLOSE, &fileMenu); if (fileMenu && fileCloseItem) { NSMenuItem *nativeCloseItem = [fileMenu->GetHMenu() itemWithTitle:str::to_NS(fileCloseItem->GetItemLabelText())]; if (nativeCloseItem) { nativeCloseItem.target = nil; nativeCloseItem.action = @selector(performClose:); } } int editMenuPos = bar->FindMenu(_("&Edit")); if (editMenuPos == wxNOT_FOUND) editMenuPos = 1; wxMenu *edit = bar->GetMenu(editMenuPos); int pasteItem = -1; int findItem = -1; int pos = 0; for (auto& i : edit->GetMenuItems()) { if (i->GetId() == wxID_PASTE) pasteItem = pos; else if (i->GetId() == XRCID("menu_sub_find")) findItem = pos; pos++; } NSMenu *editNS = edit->GetHMenu(); #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundeclared-selector" AddNativeItem(editNS, 0, _("Undo"), @selector(undo:), @"z"); AddNativeItem(editNS, 1, _("Redo"), @selector(redo:), @"Z"); #pragma clang diagnostic pop [editNS insertItem:[NSMenuItem separatorItem] atIndex:2]; if (pasteItem != -1) pasteItem += 3; if (findItem != -1) findItem += 3; NSMenuItem *item; if (pasteItem != -1) { item = AddNativeItem(editNS, pasteItem+1, _("Paste and Match Style"), @selector(pasteAsPlainText:), @"V"); [item setKeyEquivalentModifierMask:NSEventModifierFlagCommand | NSEventModifierFlagOption]; item = AddNativeItem(editNS, pasteItem+2, _("Delete"), @selector(delete:), @""); [item setKeyEquivalentModifierMask:NSEventModifierFlagCommand]; if (findItem != -1) findItem += 2; } #define FIND_PLUS(ofset) ((findItem != -1) ? (findItem+ofset) : -1) if (findItem == -1) [editNS addItem:[NSMenuItem separatorItem]]; item = AddNativeItem(editNS, FIND_PLUS(1), _("Spelling and Grammar"), NULL, @""); NSMenu *spelling = [[NSMenu alloc] initWithTitle:@"Spelling and Grammar"]; AddNativeItem(spelling, -1, _("Show Spelling and Grammar"), @selector(showGuessPanel:), @":"); AddNativeItem(spelling, -1, _("Check Document Now"), @selector(checkSpelling:), @";"); [spelling addItem:[NSMenuItem separatorItem]]; AddNativeItem(spelling, -1, _("Check Spelling While Typing"), @selector(toggleContinuousSpellChecking:), @""); AddNativeItem(spelling, -1, _("Check Grammar With Spelling"), @selector(toggleGrammarChecking:), @""); AddNativeItem(spelling, -1, _("Correct Spelling Automatically"), @selector(toggleAutomaticSpellingCorrection:), @""); [editNS setSubmenu:spelling forItem:item]; item = AddNativeItem(editNS, FIND_PLUS(2), _("Substitutions"), NULL, @""); NSMenu *subst = [[NSMenu alloc] initWithTitle:@"Substitutions"]; AddNativeItem(subst, -1, _("Show Substitutions"), @selector(orderFrontSubstitutionsPanel:), @""); [subst addItem:[NSMenuItem separatorItem]]; AddNativeItem(subst, -1, _("Smart Copy/Paste"), @selector(toggleSmartInsertDelete:), @""); AddNativeItem(subst, -1, _("Smart Quotes"), @selector(toggleAutomaticQuoteSubstitution:), @""); AddNativeItem(subst, -1, _("Smart Dashes"), @selector(toggleAutomaticDashSubstitution:), @""); AddNativeItem(subst, -1, _("Smart Links"), @selector(toggleAutomaticLinkDetection:), @""); AddNativeItem(subst, -1, _("Text Replacement"), @selector(toggleAutomaticTextReplacement:), @""); [editNS setSubmenu:subst forItem:item]; item = AddNativeItem(editNS, FIND_PLUS(3), _("Transformations"), NULL, @""); NSMenu *trans = [[NSMenu alloc] initWithTitle:@"Transformations"]; AddNativeItem(trans, -1, _("Make Upper Case"), @selector(uppercaseWord:), @""); AddNativeItem(trans, -1, _("Make Lower Case"), @selector(lowercaseWord:), @""); AddNativeItem(trans, -1, _("Capitalize"), @selector(capitalizeWord:), @""); [editNS setSubmenu:trans forItem:item]; item = AddNativeItem(editNS, FIND_PLUS(4), _("Speech"), NULL, @""); NSMenu *speech = [[NSMenu alloc] initWithTitle:@"Speech"]; AddNativeItem(speech, -1, _("Start Speaking"), @selector(startSpeaking:), @""); AddNativeItem(speech, -1, _("Stop Speaking"), @selector(stopSpeaking:), @""); [editNS setSubmenu:speech forItem:item]; int viewMenuPos = bar->FindMenu(_("&View")); if (viewMenuPos != wxNOT_FOUND) { NSMenu *viewNS = bar->GetMenu(viewMenuPos)->GetHMenu(); [viewNS addItem:[NSMenuItem separatorItem]]; // TRANSLATORS: This must be the same as OS X's translation of this View menu item item = AddNativeItem(viewNS, -1, _("Show Toolbar"), @selector(toggleToolbarShown:), @"t"); [item setKeyEquivalentModifierMask:NSEventModifierFlagCommand | NSEventModifierFlagOption]; // TRANSLATORS: This must be the same as OS X's translation of this View menu item AddNativeItem(viewNS, -1, _(L"Customize Toolbar…"), @selector(runToolbarCustomizationPalette:), @""); [viewNS addItem:[NSMenuItem separatorItem]]; // TRANSLATORS: This must be the same as OS X's translation of this View menu item item = AddNativeItem(viewNS, -1, _("Enter Full Screen"), @selector(toggleFullScreen:), @"f"); [item setKeyEquivalentModifierMask:NSEventModifierFlagCommand | NSEventModifierFlagControl]; } if (!m_nativeMacData->windowMenu) { NSMenu *windowMenu = [[NSMenu alloc] initWithTitle:str::to_NS(_("Window"))]; AddNativeItem(windowMenu, -1, _("Minimize"), @selector(performMiniaturize:), @"m"); AddNativeItem(windowMenu, -1, _("Zoom"), @selector(performZoom:), @""); [windowMenu addItem:[NSMenuItem separatorItem]]; item = AddNativeItem(windowMenu, -1, _("Welcome to Poedit"), @selector(showWelcomeWindow:), @"1"); item.target = m_nativeMacData->actions; [item setKeyEquivalentModifierMask: NSEventModifierFlagShift | NSEventModifierFlagCommand]; [windowMenu addItem:[NSMenuItem separatorItem]]; AddNativeItem(windowMenu, -1, _("Bring All to Front"), @selector(arrangeInFront:), @""); [NSApp setWindowsMenu:windowMenu]; m_nativeMacData->windowMenu = windowMenu; } } void MenusManager::FixupMenusForMacIfNeeded() { auto installed = wxMenuBar::MacGetInstalledMenuBar(); if (m_nativeMacData->menuBar == installed) return; // nothing to do m_nativeMacData->menuBar = nullptr; RecentFiles::Get().MacTransferMenuTo(installed); if (m_nativeMacData->windowMenuItem) [m_nativeMacData->windowMenuItem setSubmenu:nil]; if (!installed) return; NSMenuItem *windowItem = [[NSApp mainMenu] itemWithTitle:str::to_NS(_("Window"))]; if (windowItem) { [windowItem setSubmenu:m_nativeMacData->windowMenu]; m_nativeMacData->windowMenuItem = windowItem; } m_nativeMacData->menuBar = installed; } #endif // __WXOSX__ poedit-3.6.3/src/localazy_gui.h0000644000175100001660000000547615011674230012126 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2025 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_localazy_gui_h #define Poedit_localazy_gui_h #include "catalog.h" #ifdef HAVE_HTTP_CLIENT #include "cloud_accounts_ui.h" #include "cloud_sync.h" #include "customcontrols.h" #include class WXDLLIMPEXP_FWD_CORE wxBoxSizer; class WXDLLIMPEXP_FWD_CORE wxButton; class WXDLLIMPEXP_FWD_CORE wxDataViewListCtrl; /** Panel used to sign in into Localazy. */ class LocalazyLoginPanel : public AccountDetailPanel { public: enum Flags { DialogButtons = 1 }; LocalazyLoginPanel(wxWindow *parent, int flags = 0); wxString GetServiceName() const override { return "Localazy"; } wxString GetServiceLogo() const override { return "LocalazyLogo"; } wxString GetServiceDescription() const override; wxString GetServiceLearnMoreURL() const override; void InitializeAfterShown() override; bool IsSignedIn() const override; wxString GetLoginName() const override { return m_userLogin; } void SignIn() override; protected: enum class State { Uninitialized, Authenticating, SignedIn, SignedOut, UpdatingInfo }; void ChangeState(State state); void CreateLoginInfoControls(State state); void UpdateUserInfo(); void OnSignIn(wxCommandEvent&); void OnAddProject(wxCommandEvent&); void OnSignOut(wxCommandEvent&); void OnUserSignedIn(); State m_state; ActivityIndicator *m_activity; wxBoxSizer *m_loginInfo; wxButton *m_signIn, *m_signOut; wxDataViewListCtrl *m_projects; wxString m_userName, m_userLogin; std::string m_userAvatar; }; #endif // HAVE_HTTP_CLIENT #endif // Poedit_localazy_gui_h poedit-3.6.3/src/spellchecking.h0000644000175100001660000000412215011674230012242 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2025 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_spellchecking_h #define Poedit_spellchecking_h #include #ifdef __WXMSW__ #include #endif #include #include "language.h" inline bool IsSpellcheckingAvailable() { #ifdef __WXMSW__ return wxPlatformInfo::Get().CheckOSVersion(6,2); #else return true; #endif } #ifdef __WXOSX__ // Set the global spellchecking language bool SetSpellcheckerLang(const wxString& lang); #endif // Does any initialization needed to be able to use spellchecker with the control later. #ifdef __WXMSW__ void PrepareTextCtrlForSpellchecker(wxTextCtrl *text); #endif // Init given text control to do (or not) spellchecking for given language bool InitTextCtrlSpellchecker(wxTextCtrl *text, bool enable, const Language& lang); #ifndef __WXMSW__ // Show help about how to add more dictionaries for spellchecking. void ShowSpellcheckerHelp(); #endif #endif // Poedit_spellchecking_h poedit-3.6.3/src/cat_update.h0000644000175100001660000000541415011674230011545 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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_cat_update_h #define Poedit_cat_update_h #include "catalog.h" #include "cat_operations.h" #include "concurrency.h" #include "progress_ui.h" #include class WXDLLIMPEXP_FWD_CORE wxWindow; /// Specialization of ProgressWindow that shows issues and allows viewing merge results. class MergeProgressWindow : public ProgressWindow { public: using ProgressWindow::ProgressWindow; protected: bool SetSummaryContent(const BackgroundTaskResult& data) override; void AddViewDetails(const MergeStats& r); }; /** Update catalog from source code w/o any UI or detailed error reporting. The returned catalog may be the same as @a catalog (which may be modified in place), or it may be a new instance. FIXME: Make this non-modifying in place */ MergeResult PerformUpdateFromSourcesSimple(CatalogPtr catalog); /** Update catalog from source code, if configured, and provide UI during the operation. The returned catalog may be the same as @a catalog (which may be modified in place), or it may be a new instance. FIXME: Make this non-modifying in place */ dispatch::future PerformUpdateFromSourcesWithUI(wxWindow *parent, CatalogPtr catalog); /** Similarly for updating from a reference file (i.e. POT). The returned catalog may be the same as @a catalog (which may be modified in place), or it may be a new instance. FIXME: Make this non-modifying in place */ dispatch::future PerformUpdateFromReferenceWithUI(wxWindow *parent, CatalogPtr catalog, const wxString& reference_file); #endif // Poedit_cat_update_h poedit-3.6.3/src/uilang.h0000644000175100001660000000474715011674230010723 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2003-2025 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_uilang_h #define Poedit_uilang_h #include "language.h" #include #include #include #ifdef __WXMSW__ #define NEED_CHOOSELANG_UI 1 #else #define NEED_CHOOSELANG_UI 0 #endif /** Customized loader for translations. The primary purpose of this class is to overcome wx bugs or shortcomings: - https://github.com/wxWidgets/wxWidgets/pull/24297 - https://github.com/wxWidgets/wxWidgets/pull/24804 Note that this relies on specific knowledge of Poedit's shipping data, it is _not_ a universal replacement! */ class PoeditTranslationsLoader : public wxFileTranslationsLoader { public: /** Use ICU to determine UI languages; replaces wxTranslations::GetBestTranslation(). Always returns a valid language (using English as fallback). */ Language DetermineBestUILanguage() const; // overrides to use language tags: wxArrayString GetAvailableTranslations(const wxString& domain) const override; wxMsgCatalog *LoadCatalog(const wxString& domain, const wxString& lang_) override; }; #if NEED_CHOOSELANG_UI /// Let the user change UI language void ChangeUILanguage(); /** Return currently chosen language. Calls ChooseLanguage if necessary. */ Language GetUILanguage(); #endif #endif // Poedit_uilang_h poedit-3.6.3/src/languagectrl.h0000644000175100001660000000504415011674230012103 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2025 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_languagectrl_h #define Poedit_languagectrl_h #include #include #include "language.h" /// Control for editing languages nicely class LanguageCtrl : public wxComboBox { public: LanguageCtrl(); LanguageCtrl(wxWindow *parent, wxWindowID winid = wxID_ANY, Language lang = Language()); void SetLang(const Language& lang); Language GetLang() const; bool IsValid() const { return GetLang().IsValid(); } #ifdef __WXOSX__ int FindString(const wxString& s, bool bCase) const override; wxString GetString(unsigned int n) const override; #endif #ifdef __WXMSW__ wxSize DoGetBestSize() const; #endif private: void Init(Language lang); void NormalizeValue(); bool m_inited; #ifdef __WXOSX__ struct impl; std::unique_ptr m_impl; #endif DECLARE_DYNAMIC_CLASS(LanguageCtrl) }; /// A dialog for choosing language for a (new) catalog. class LanguageDialog : public wxDialog { public: LanguageDialog(wxWindow *parent); void SetLang(const Language& lang); Language GetLang() const { return m_language->GetLang(); } virtual bool Validate(); virtual void EndModal(int retval); static Language GetLastChosen(); static void SetLastChosen(Language lang); private: LanguageCtrl *m_language; int m_validatedLang; }; #endif // Poedit_languagectrl_h poedit-3.6.3/src/text_control.h0000644000175100001660000001237615011674230012165 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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_text_control_h #define Poedit_text_control_h #include #include #include #include "language.h" #include "syntaxhighlighter.h" /** Text control with some Poedit-specific customizations: - Allow setting text programmatically, without user-input processing (macOS) - Disable user-usable rich text support - Stylistic tweaks (padding and such) - Generic undo/redo implementation for GTK - Search highlighting */ class CustomizedTextCtrl : public wxTextCtrl { public: static const int ALWAYS_USED_STYLE = wxTE_MULTILINE | wxTE_RICH2 | wxTE_NOHIDESEL; 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 #ifdef __WXMSW__ bool SetFont(const wxFont &font) override; WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const override; #endif protected: #ifdef __WXOSX__ void DoSetValue(const wxString& value, int flags) override; wxString DoGetValue() const override; wxString GetRange(long from, long to) const override; wxString DoGetValueForRange(long from, long to) const; #endif bool DoCopy(); void OnCopy(wxClipboardTextEvent& event); void OnCut(wxClipboardTextEvent& event); void OnPaste(wxClipboardTextEvent& event); virtual wxString DoCopyText(long from, long to); virtual void DoPasteText(long from, long to, const wxString& s); #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 m_history; size_t m_historyIndex; // where in the vector to insert the next snapshot int m_historyLocks; #endif // __WXGTK__ }; class AnyTranslatableTextCtrl : public CustomizedTextCtrl { public: AnyTranslatableTextCtrl(wxWindow *parent, wxWindowID winid, int style = 0); ~AnyTranslatableTextCtrl(); void SetLanguage(const Language& lang); void SetSyntaxHighlighter(SyntaxHighlighterPtr syntax) { m_syntax = syntax; } // 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); wxString GetPlainText() const; // Apply escaping as described in SetPlainText: static wxString EscapePlainText(const wxString& s); static wxString UnescapePlainText(const wxString& s); protected: wxString DoCopyText(long from, long to) override; void DoPasteText(long from, long to, const wxString& s) override; void DoSetValue(const wxString& value, int flags) override; #ifdef __WXMSW__ void UpdateRTLStyle(); #endif // __WXMSW__ protected: void HighlightText(); class Attributes; SyntaxHighlighterPtr m_syntax; std::unique_ptr m_attrs; Language m_language; }; class SourceTextCtrl : public AnyTranslatableTextCtrl { public: SourceTextCtrl(wxWindow *parent, wxWindowID winid); bool AcceptsFocus() const override { return false; } }; class TranslationTextCtrl : public AnyTranslatableTextCtrl { public: TranslationTextCtrl(wxWindow *parent, wxWindowID winid); /// Sets the value to something the user wrote 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 #ifdef __WXMSW__ void DoEnable(bool enable) override; #endif bool m_lastKeyWasReturn; }; #endif // Poedit_text_control_h poedit-3.6.3/src/subprocess.h0000644000175100001660000001754615011674230011635 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2025 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_subprocess_h #define Poedit_subprocess_h #include "concurrency.h" #include "str_helpers.h" #include #include #include namespace subprocess { /** Helper that returns full path to @a program if it exists in the @a primary_path directory or unmodified @a program value if it does not. Used to run external binaries from known locations. */ extern wxString try_find_program(const wxString& program, const wxString& primary_path); /** Quota @a s for safe passing to a command line in Runner.run_command_*() functions. It is recommended to use array- or pack-taking version of Runner.run_*() functions instead. */ inline wxString quote_arg(const wxString& s) { if (s.find_first_of(L" \t\\\"'") == std::string::npos) return s; // no quoting needed wxString s2(s); s2.Replace("\\", "\\\\"); s2.Replace("\"", "\\\""); return "\"" + s2 + "\""; } /// Collected result of running a command. struct Output { int exit_code = -1; std::string std_out; std::string std_err; std::vector std_out_lines() const { return extract_lines(std_out); } std::vector std_err_lines() const { return extract_lines(std_err); } bool failed() const { return exit_code != 0; } explicit operator bool() const { return exit_code == 0; } private: static std::vector extract_lines(const std::string& output); }; typedef std::shared_ptr environment_ptr; // Holder for execution command arguments class Arguments { public: Arguments(const Arguments&) = delete; Arguments(Arguments&&) = default; template Arguments(const T& list) : Arguments(list.begin(), list.end()) {} Arguments(std::initializer_list list) : Arguments(list.begin(), list.end()) {} template Arguments(Iter begin, Iter end) { m_args.reserve(end - begin); for (auto i = begin; i != end; ++i) m_args.push_back(str::to_wstring(*i)); } Arguments(const wxString& cmdline); const std::wstring& program() const { return m_args.front(); } const std::vector& args() const{ return m_args; } void replace(size_t index, const wxString& value) { if (m_args[index] != value) m_args[index] = str::to_wstring(value); } void insert(size_t index, const wxString& value) { m_args.insert(m_args.begin() + index, str::to_wstring(value)); } operator const wchar_t* const*() const { m_cargs.clear(); m_cargs.reserve(m_args.size() + 1); for (auto& arg: m_args) m_cargs.push_back(arg.c_str()); m_cargs.push_back(nullptr); return m_cargs.data(); } wxString pretty_print() const; private: std::vector m_args; mutable std::vector m_cargs; }; /** Interface for running a subprocess. This has both sync and async variants and is safe to call from non-main threads, unlike wxExecute. The instance can be safely destroyed after calling a run_xxx() function, even if async execution didn't finish yet. */ class Runner { public: Runner() = default; virtual ~Runner() {} /// Returns environment variables map used for execution wxEnvVariableHashMap& env() { return wxenv().env; } /// Add environment variable to the environment used for execution void env(const wxString& var, const wxString& value) { env()[var] = value; } /// Sets working directory of the child process void set_cwd(const wxString& cwd) { wxenv().cwd = cwd; } /// Sets the path where to look for programs. void set_primary_path(const wxString& path) { m_primaryPath = path; } /// Runs command asynchronously and returns a future for its output. dispatch::future run_async(const std::vector& argv) { return do_run_async(argv); } /// Runs command asynchronously and returns a future for its output. template dispatch::future run_async(const Args&... argv) { return do_run_async({argv...}); } /** Runs command asynchronously and returns a future for its output. The argument is parsed using UNIX quotation rules. It is recommend to use the argv variant instead. */ dispatch::future run_command_async(const wxString& cmdline) { return do_run_async(cmdline); } /// Runs command synchronously and returns its output. Output run_sync(const std::vector& argv) { return do_run_sync(argv); } /// Runs command synchronously and returns its output. template Output run_sync(const Args&... argv) { return do_run_sync({argv...}); } /** Runs command synchronously and returns its output. The argument is parsed using UNIX quotation rules. It is recommend to use the argv variant instead. */ Output run_command_sync(const wxString& cmdline) { return do_run_sync(cmdline); } protected: /** Preproceses arguments before execution. Can be overriden to e.g. add system-depending flags or change program name. Overriden version much call base class one, because it implements primary path lookup. */ virtual void preprocess_args(Arguments& args) const; // run_* implementation: dispatch::future do_run_async(Arguments&& argv); Output do_run_sync(Arguments&& argv); wxExecuteEnv& wxenv(); protected: std::shared_ptr m_env; wxString m_primaryPath; }; #ifdef MACOS_BUILD_WITHOUT_APPKIT // Stub implementations to reduce dependencies in Quicklook extensions on macOS. // // wxExecute() uses NSWorkspace, which is unavailable in extensions; it's the only AppKit // dependency in wxBase and we can avoid linking that in. inline wxString try_find_program(const wxString& program, const wxString&) { return program; } inline Arguments::Arguments(const wxString&) {} inline std::vector Output::extract_lines(const std::string&) { return {}; } inline void Runner::preprocess_args(Arguments&) const {} inline dispatch::future Runner::do_run_async(Arguments&&) { wxASSERT(false); BOOST_THROW_EXCEPTION(std::logic_error("not implemented")); } inline Output Runner::do_run_sync(Arguments&&) { wxASSERT(false); BOOST_THROW_EXCEPTION(std::logic_error("not implemented")); } inline wxExecuteEnv& Runner::wxenv() { wxASSERT(false); BOOST_THROW_EXCEPTION(std::logic_error("not implemented")); } #endif // MACOS_BUILD_WITHOUT_APPKIT } // namespace subprocess #endif // Poedit_subprocess_h poedit-3.6.3/src/export_html.cpp0000644000175100001660000002713115011674230012334 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2003 Christophe Hermier * Copyright (C) 2013-2025 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 "catalog.h" #include "utility.h" #include "str_helpers.h" #include namespace { inline std::string fmt_trans(const wxString& s) { wxString out = EscapeMarkup(s); out.Replace("\n", "\n
"); return str::to_utf8(out); } template inline void TableRow(std::ostream& f, const T1& col1, const T2& col2) { f << "" << "" << str::to_utf8(col1) << "" << "" << str::to_utf8(col2) << "" << "\n"; } extern const char *CSS_STYLE; } // anonymous namespace void Catalog::ExportToHTML(std::ostream& f) { const bool translated = HasCapability(Catalog::Cap::Translations); const auto lang = translated ? GetLanguage() : Language(); const auto srclang = GetSourceLanguage(); f << "\n" "\n" "\n" " " << str::to_utf8(m_header.Project) << "\n" " \n" " \n" "\n" "\n" "
\n"; // Metadata section: f << "\n"; if (!m_header.Project.empty()) TableRow(f, _("Project:"), m_header.Project); if (translated && lang.IsValid()) TableRow(f, _("Language:"), lang.DisplayName()); f << "\n"; // Statistics: if (translated) { 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 << "
\n" << "
\n"; if (all > unfinished) f << "
 
\n"; if (fuzzy > 0) f << "
 
\n"; if (untranslated > 0) f << "
 
\n"; f << "
\n" << "
"; 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 << "
\n" << "
\n"; } else { int all = (int)items().size(); f << "
\n" << "
\n" << "
 
\n" << "
\n" << "
" << str::to_utf8(wxString::Format(wxPLURAL("%d entry", "%d entries", all), all)) << "
\n" << "
\n"; } // Translations: std::string lang_src, lang_tra; if (srclang.IsValid()) lang_src = " lang='" + srclang.LanguageTag() + "'"; if (lang.IsValid()) { lang_tra = " lang='" + lang.LanguageTag() + "'"; if (lang.IsRTL()) lang_tra += " dir='rtl'"; } wxString thead_src; if (UsesSymbolicIDsForSource()) { thead_src = _("Source text ID"); } else { thead_src = srclang.IsValid() ? (wxString::Format(_(L"Source text — %s"), srclang.DisplayName())) : _("Source text"); } auto thead_tra = wxString::Format(_(L"Translation — %s"), lang.IsValid() ? lang.DisplayName() : _("unknown language")); f << "\n" " \n" " \n" " \n"; if (translated) { f << " \n"; } f << " \n" " \n" " \n"; 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 << "\n"; // Source string: f << "\n"; // Translation: if (translated) { f << "\n"; } // Notes, if present: if (hasComments) { f << "\n" << "\n" << " \n"; } f << "\n"; } f << "\n" "
" << str::to_utf8(thead_src) << "" << str::to_utf8(thead_tra) << "
\n"; if (item->HasSymbolicId()) f << "
" << fmt_trans(item->GetSymbolicId()) << "
"; if (item->HasContext()) f << " " << fmt_trans(item->GetContext()) << ""; if (item->HasPlural()) { f << "
    \n" << "
  1. " << fmt_trans(item->GetString()) << "
  2. \n" << "
  3. " << fmt_trans(item->GetPluralString()) << "
  4. \n" << "
\n"; } else { f << fmt_trans(item->GetString()); } f << "
\n"; if (item->HasPlural()) { if (item->IsTranslated()) { f << "
    \n"; for (auto t: item->GetTranslations()) f << "
  1. " << fmt_trans(t) << "
  2. \n"; f << "
\n"; } } else { f << fmt_trans(item->GetTranslation()); } f << "
"; if (item->HasExtractedComments()) { f << "

\n"; for (auto& n: item->GetExtractedComments()) f << fmt_trans(n) << "
\n"; f << "

\n"; } if (item->HasComment()) { f << "

\n" << fmt_trans(item->GetComment()) << "

\n"; } f << "
\n" "
\n" "\n" "\n"; } namespace { 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 { font: 14px/20px -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; } .container { position: relative; max-width: 90%; margin: 0 auto; } /* 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; } 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; } /* 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-top-left-radius: 3px; border-bottom-left-radius: 3px; } .graph div:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .legend { font-size: smaller; padding-top: 12px; text-align: center; } /* Translations */ table.translations { width: 100%; table-layout: fixed; } table.translations th, table.translations td { padding: 5px 10px; vertical-align: top; border-bottom: 1px solid #F1F1F1; } 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: left; max-width: 90%; font-size: smaller; } tr.comments div p:last-child { margin-bottom: 0; } tr.comments td { padding-top: 0; } .id { font-size: smaller; } .msgctxt { font-size: smaller; border-radius: 2px; padding: 2px 4px; margin-right: 4px; } /* Colors */ body { background-color: #fff; color: #333; } .percent-done { background-color: rgb(146, 236, 106); height: 10px; } .percent-fuzzy { background-color: rgb(255, 149, 0); height: 10px; } .percent-untrans { background-color: #F1F1F1; height: 10px; } .legend { color: #aaa; } .id { color: #aaa; } tr.comments div { color: #aaa; } .fuzzy .tra { color: rgb(230, 134, 0); } .msgctxt { color: rgb(70, 109, 137); background-color: rgb(217, 232, 242); } @media (prefers-color-scheme: dark) { body { background-color: rgb(45, 42, 41); color: #eee; } .percent-untrans { background-color: rgba(255, 255, 255, 0.3); } .legend { color: rgba(255, 255, 255, 0.6); } .id { color: rgba(255, 255, 255, 0.6); } tr.comments div { color: rgba(255, 255, 255, 0.6); } .fuzzy .tra { color: rgb(253, 178, 72); } .msgctxt { color: rgb(180, 222, 254); background-color: rgba(67, 94, 147, 0.6); } table.translations th, table.translations td { border-bottom: 1px solid #333; } } )"; } // anonymous namespace poedit-3.6.3/src/http_client_cpprestsdk.cpp0000644000175100001660000003222115011674230014542 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2014-2025 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 #include #include #include #include #include #include #include #include #include #include #include #include #ifdef _WIN32 #include #include #include #pragma comment(lib, "ole32.lib") // can't include both winhttp.h and wininet.h, so put a declaration here //#include EXTERN_C DECLSPEC_IMPORT BOOL STDAPICALLTYPE InternetGetConnectedState(__out LPDWORD lpdwFlags, __reserved DWORD dwReserved); #ifndef WINHTTP_OPTION_ENABLE_HTTP_PROTOCOL #define WINHTTP_OPTION_ENABLE_HTTP_PROTOCOL 133 #endif #ifndef WINHTTP_PROTOCOL_FLAG_HTTP2 #define WINHTTP_PROTOCOL_FLAG_HTTP2 0x1 #endif #endif namespace { using namespace web; using utility::string_t; using utility::conversions::to_string_t; #ifdef _UTF16_STRINGS inline string_t to_string_t(const wxString& s) { return s.ToStdWstring(); } #else inline string_t to_string_t(const wxString& s) { return str::to_utf8(s); } inline string_t to_string_t(const std::wstring& s) { return str::to_utf8(s); } #endif class gzip_compression_support : public http::http_pipeline_stage { public: pplx::task propagate(http::http_request request) override { request.headers().add(http::header_names::accept_encoding, _XPLATSTR("gzip")); return next_stage()->propagate(request).then([](http::http_response response) -> pplx::task { if (response.headers().content_type() == _XPLATSTR("application/octet-stream")) return pplx::task_from_result(response); // don't try to decompress binary data string_t encoding; if (response.headers().match(http::header_names::content_encoding, encoding) && encoding == _XPLATSTR("gzip")) { return response.extract_vector().then([response](std::vector compressed) mutable -> http::http_response { namespace io = boost::iostreams; io::array_source source(reinterpret_cast(compressed.data()), compressed.size()); io::filtering_istream in; in.push(io::gzip_decompressor()); in.push(source); std::vector decompressed; io::back_insert_device> sink(decompressed); io::copy(in, sink); response.set_body(concurrency::streams::bytestream::open_istream(std::move(decompressed)), decompressed.size()); return response; }); } else { return pplx::task_from_result(response); } }); } }; } // anonymous namespace 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), get_client_config()) { #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 NT " + windows_version() + L")" #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; std::shared_ptr gzip_stage = std::make_shared(); m_native.add_handler(gzip_stage); } static string_t ui_language; void set_authorization(const std::string& auth) { m_auth = std::wstring(auth.begin(), auth.end()); } dispatch::future<::json> get(const std::string& url, const headers& hdrs) { auto req = build_request(http::methods::GET, url, hdrs); return m_native.request(req) .then([=](http::http_response response) { handle_error(response); return ::json::parse(response.extract_utf8string().get()); }); } dispatch::future download(const std::string& url, const headers& hdrs) { using namespace concurrency::streams; auto req = build_request(http::methods::GET, url, hdrs); return m_native.request(req) .then([=](http::http_response response) { handle_error(response); std::string etag; auto i_etag = response.headers().find(http::header_names::etag); if (i_etag != response.headers().end()) etag = str::to_utf8(i_etag->second); downloaded_file file(extract_attachment_filename(req, response), etag); return fstream::open_ostream(to_string_t(file.filename().GetFullPath())) .then([=](ostream outFile) { return response.body().read_to_end(outFile.streambuf()) .then([=](size_t) { return outFile.close(); }); }) .then([file{std::move(file)}]() { return file; }); }); } dispatch::future<::json> post(const std::string& url, const http_body_data& data, const headers& hdrs) { auto req = build_request(http::methods::POST, url, hdrs); auto body = data.body(); req.set_body(body, data.content_type()); req.headers().set_content_length(body.size()); return m_native.request(req) .then([=](http::http_response response) { handle_error(response); return ::json::parse(response.extract_utf8string().get()); }); } private: http::http_request build_request(http::method method, const std::string& relative_url, const headers& hdrs) { http::http_request req(method); req.set_request_uri(to_string_t(relative_url)); req.headers().add(http::header_names::accept, _XPLATSTR("application/json")); req.headers().add(http::header_names::user_agent, m_userAgent); req.headers().add(http::header_names::accept_language, ui_language); if (!m_auth.empty()) req.headers().add(http::header_names::authorization, m_auth); for (const auto& h: hdrs) { req.headers().add(to_string_t(h.first), to_string_t(h.second)); } return req; } // handle non-OK responses: void handle_error(http::http_response r) { if (r.status_code() >= 200 && r.status_code() < 300) return; // not an error int status_code = r.status_code(); std::string msg; if (r.headers().content_type() == _XPLATSTR("application/json")) { try { auto json = ::json::parse(r.extract_utf8string().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); BOOST_THROW_EXCEPTION(http_response_error(status_code, msg)); } // convert to wstring static string_t sanitize_url(const std::string& url, int /*flags*/) { return to_string_t(url); } static std::string extract_attachment_filename(const http::http_request& request, const http::http_response& response) { // extract from Content-Disposition attachment filename: auto hdr = response.headers().find(http::header_names::content_disposition); if (hdr != response.headers().end()) { static const std::basic_regex RE_FILENAME(_XPLATSTR("attachment; *filename=\"(.*)\""), std::regex_constants::icase); std::match_results match; if (std::regex_search(hdr->second, match, RE_FILENAME)) return str::to_utf8(match.str(1)); } // failing that, use the URL: auto path = request.absolute_uri().path(); auto slash = path.find_last_of('/'); if (slash != string_t::npos) path = path.substr(slash + 1); return str::to_utf8(path); } static http::client::http_client_config get_client_config() { http::client::http_client_config c; #ifdef _WIN32 // prepare WinHttp configuration: c.set_nativesessionhandle_options([](http::client::native_handle handle){ DWORD dwOption = WINHTTP_PROTOCOL_FLAG_HTTP2; WinHttpSetOption(handle, WINHTTP_OPTION_ENABLE_HTTP_PROTOCOL, &dwOption, sizeof(dwOption)); }); #else // setup proxy on Unix platforms: const char *proxy = std::getenv("https_proxy"); if (!proxy) proxy = std::getenv("http_proxy"); if (proxy) c.set_proxy(web::uri(proxy)); #endif return c; } #ifdef _WIN32 static std::wstring windows_version() { OSVERSIONINFOEX info = { 0 }; info.dwOSVersionInfoSize = sizeof(info); NTSTATUS(WINAPI *fRtlGetVersion)(LPOSVERSIONINFOEXW); fRtlGetVersion = reinterpret_cast(GetProcAddress(GetModuleHandleA("ntdll"), "RtlGetVersion")); if (fRtlGetVersion) fRtlGetVersion(&info); return std::to_wstring(info.dwMajorVersion) + L"." + std::to_wstring(info.dwMinorVersion); } #endif http_client& m_owner; http::client::http_client m_native; std::wstring m_userAgent; std::wstring m_auth; }; string_t http_client::impl::ui_language; http_client::http_client(const std::string& url_prefix, int flags) : m_impl(new impl(*this, url_prefix, flags)) { } http_client::~http_client() { } void http_client::set_ui_language(const std::string& lang) { impl::ui_language = to_string_t(lang); } void http_client::set_authorization(const std::string& auth) { m_impl->set_authorization(auth); } dispatch::future<::json> http_client::get(const std::string& url, const headers& hdrs) { return m_impl->get(url, hdrs); } dispatch::future http_client::download(const std::string& url, const headers& hdrs) { return m_impl->download(url, hdrs); } dispatch::future<::json> http_client::post(const std::string& url, const http_body_data& data, const headers& hdrs) { return m_impl->post(url, data, hdrs); } #ifdef _WIN32 class http_reachability::impl { public: impl() { m_networkListManager = nullptr; CoCreateInstance(CLSID_NetworkListManager, NULL, CLSCTX_ALL, IID_INetworkListManager, (LPVOID *)&m_networkListManager); } ~impl() { if (m_networkListManager) m_networkListManager->Release(); } bool is_reachable() const { if (m_networkListManager) { NLM_CONNECTIVITY result; HRESULT hr = m_networkListManager->GetConnectivity(&result); if (SUCCEEDED(hr)) return result & (NLM_CONNECTIVITY_IPV4_INTERNET|NLM_CONNECTIVITY_IPV6_INTERNET); } // manager fallback (IPv6 ignorant): DWORD flags; return ::InternetGetConnectedState(&flags, 0); } private: INetworkListManager *m_networkListManager; }; #else // !WIN32 class http_reachability::impl { public: impl() {} bool is_reachable() const { return true; } // TODO }; #endif http_reachability::http_reachability(const std::string& /*url*/) : m_impl(new impl) { } http_reachability::~http_reachability() { } bool http_reachability::is_reachable() const { return m_impl->is_reachable(); } poedit-3.6.3/src/language.h0000644000175100001660000001745215011674230011224 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2025 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_language_h #define Poedit_language_h #include #include #include #include class PluralFormsCalculator; class PluralFormsExpr; /// Language's text writing direction enum class TextDirection { LTR, RTL }; /// Representation of translation's language. class Language { public: Language() : m_direction(TextDirection::LTR) {} bool IsValid() const { return !m_code.empty(); } explicit operator bool() const { return IsValid(); } const std::string& Code() const { return m_code; } std::wstring WCode() const { return std::wstring(m_code.begin(), m_code.end()); } /// Returns language part (cs) std::string Lang() const; /// Returns country part (CZ, may be empty) std::string Country() const; /// Returns language+country parts, without the variant std::string LangAndCountry() const; /// Returns optional variant (after @, e.g. 'latin', typically empty) std::string Variant() const; /// Return language tag for the language, per BCP 47, e.g. en-US or sr-Latn std::string LanguageTag() const { return m_tag; } /// Minimizes the subtags, e.g. returns cs for cs-CZ, but en-GB for en-GB Language MinimizeSubtags() const; /// Returns name of the locale suitable for ICU std::string IcuLocaleName() const { return m_icuLocale; } /// Returns name of this language suitable for display to the user in current UI language wxString DisplayName() const; /// Like DisplayName(), but shorted (no country/variant). wxString LanguageDisplayName() const; /// Returns name of this language in itself wxString DisplayNameInItself() const; /** Human-readable (if possible) form usable for round-tripping, i.e. understood by TryParse(). Typically "language (country)" in UI language. @see AllFormattedNames() */ wxString FormatForRoundtrip() const; /** Return all formatted language names known, in sorted order. @see FormatForRoundtrip() */ static const std::vector& AllFormattedNames(); /** Return appropriate plural form for this language. @return Plural form expression suitable for directly using in the gettext header or empty string if no record was found. */ PluralFormsExpr DefaultPluralFormsExpr() const; /// Count of plural forms for this language int nplurals() const; /// Returns language's text writing direction TextDirection Direction() const { return m_direction; } /// Returns true if the language is written right-to-left. bool IsRTL() const { return m_direction == TextDirection::RTL; } /** Tries to parse the string as language identification. Accepts various forms: - standard code (cs, cs_CZ, cs_CZ@latin, ...) - ditto with nonstandard capitalization - language name in English or current UI language - ditto for "language (country)" Returned language instance is either invalid if the value couldn't be parsed or a language with normalized language code. @note This function does *not* validate language codes: if @a s has standard form, the codes are assumed to be valid. Use TryParseWithValidation() 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 valid ISO 639/3166 codes. */ static Language TryParseWithValidation(const std::wstring& s); /** Returns language object corresponding to given BCP 47 tag. Returned language instance is invalid if @a tag is invalid. */ static Language FromLanguageTag(const std::string& tag); /** Tries to create the language from Poedit's legacy X-Poedit-Language and X-Poedit-Country headers. */ static Language FromLegacyNames(const std::string& lang, const std::string& country); /** Try to guess the language from filename, if the filename follows some commonly used naming pattern. If @a wildcard is provided, sets it to a wildcard matching different language files on success, or empty if language can't be guessed. */ static Language TryGuessFromFilename(const wxString& filename, wxString *wildcard = nullptr); /** 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()); static Language TryDetectFromText(const std::string& str, Language probableLanguage = Language()) { return TryDetectFromText(str.data(), str.length(), probableLanguage); } /// Returns object for English language static Language English() { return Language("en"); } /** Checks if @a s has the form of language code. */ static bool IsValidCode(const std::wstring& s); bool operator==(const Language& other) const { return m_code == other.m_code; } bool operator!=(const Language& other) const { return m_code != other.m_code; } bool operator<(const Language& other) const { return m_code < other.m_code; } private: Language(const std::string& code) { Init(code); } Language(const std::wstring& code) { Init(std::string(code.begin(), code.end())); } void Init(const std::string& code); private: std::string m_code; std::string m_tag; std::string m_icuLocale; TextDirection m_direction; }; /// Language's plural forms expression class PluralFormsExpr { public: /// What numbers to test or show examples for (0..1001) static const int MAX_EXAMPLES_COUNT = 1002; PluralFormsExpr(); PluralFormsExpr(const std::string& expr, int nplurals = -1); ~PluralFormsExpr(); static PluralFormsExpr English(); const std::string& str() const { return m_expr; } bool operator==(const PluralFormsExpr& other) const; bool operator!=(const PluralFormsExpr& other) const { return !(*this == other); } explicit operator bool() const { return !m_expr.empty() && calc() != nullptr; } int nplurals() const; int evaluate_for_n(int n) const; private: std::shared_ptr calc() const; std::string m_expr; int m_nplurals; bool m_calcCreated; std::shared_ptr m_calc; }; #endif // Poedit_language_h poedit-3.6.3/src/welcomescreen.h0000644000175100001660000000475615011674230012277 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2025 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_welcomescreen_h #define Poedit_welcomescreen_h #include "titleless_window.h" #include #include #ifdef __WXMSW__ #include "windows/win10_menubar.h" typedef WithWindows10Menubar WelcomeWindowBase; #else typedef TitlelessWindow WelcomeWindowBase; #endif class PoeditFrame; class WelcomeScreenBase : public wxPanel { protected: WelcomeScreenBase(wxWindow *parent); }; /// Content view for an empty file (File->New) class EmptyPOScreenPanel : public WelcomeScreenBase { public: EmptyPOScreenPanel(PoeditFrame *parent, bool isGettext); }; /// Window for initially opened Poedit, without a file class WelcomeWindow : public WelcomeWindowBase { public: static WelcomeWindow *GetAndActivate(); static WelcomeWindow *GetIfActive() { return ms_instance && ms_instance->IsShown() ? ms_instance : nullptr; } /// Hides the welcome window if it is active, and returns true iff it was previously visible static bool HideActive(); bool ShouldPreventAppExit() const override { return IsShownOnScreen(); } protected: WelcomeWindow(); ~WelcomeWindow(); #ifdef __WXMSW__ bool ShouldPlaceMenuInNCArea() const override { return false; } #endif private: static WelcomeWindow *ms_instance; }; #endif // Poedit_welcomescreen_h poedit-3.6.3/src/Makefile.am0000644000175100001660000001056515011674230011322 LUCENE_LIBS = @LUCENE_LIBS@ WX_LIBS = @WX_LIBS@ bin_PROGRAMS = poedit if HAVE_CPPREST ACCOUNTS_SUPPORT_SRC = \ http_client.h http_client.cpp http_client_cpprestsdk.cpp \ cloud_accounts.h cloud_accounts.cpp cloud_accounts_ui.h cloud_accounts_ui.cpp \ crowdin_client.h crowdin_client.cpp \ crowdin_gui.h crowdin_gui.cpp \ localazy_client.h localazy_client.cpp \ localazy_gui.h localazy_gui.cpp \ keychain/keytar_posix.cc keychain/keytar.h \ json.h ACCOUNTS_SUPPORT_LIBS = $(CPPREST_LIBS) $(LIBSECRET_LIBS) endif poedit_SOURCES = \ app_updates.cpp app_updates.h \ attentionbar.cpp attentionbar.h \ cat_operations.h cat_operations.cpp \ cat_update.h cat_update.cpp \ cat_sorting.cpp cat_sorting.h \ catalog.cpp catalog.h \ catalog_po.cpp catalog_po.h \ catalog_json.cpp catalog_json.h \ catalog_xcloc.cpp catalog_xcloc.h \ catalog_xliff.cpp catalog_xliff.h \ uilang.cpp uilang.h \ cloud_sync.h \ colorscheme.h colorscheme.cpp \ commentdlg.h commentdlg.cpp \ concurrency.cpp concurrency.h \ configuration.cpp configuration.h \ custom_buttons.cpp custom_buttons.h \ customcontrols.cpp customcontrols.h \ custom_notebook.cpp custom_notebook.h \ edapp.cpp edapp.h \ edframe.cpp edframe.h \ editing_area.cpp editing_area.h \ edlistctrl.cpp edlistctrl.h \ errors.cpp errors.h \ export_html.cpp \ extractors/extractor.cpp extractors/extractor.h \ extractors/extractor_gettext.cpp \ extractors/extractor_legacy.cpp extractors/extractor_legacy.h \ filemonitor.cpp filemonitor.h \ fileviewer.cpp fileviewer.extensions.h fileviewer.h \ findframe.cpp findframe.h \ gexecute.h gexecute.cpp \ hidpi.cpp hidpi.h \ icons.h icons.cpp \ language.cpp language.h \ language_impl_legacy.h language_impl_plurals.h \ languagectrl.cpp languagectrl.h \ logcapture.h \ main_toolbar.h wx/main_toolbar.cpp \ manager.h manager.cpp \ menus.h menus.cpp \ pluralforms/pl_evaluate.cpp pluralforms/pl_evaluate.h \ prefsdlg.cpp prefsdlg.h \ pretranslate.cpp pretranslate.h \ progress.h progress_ui.h progress.cpp progress_ui.cpp \ propertiesdlg.cpp propertiesdlg.h \ qa_checks.cpp qa_checks.h \ recent_files.cpp recent_files.h \ sidebar.cpp sidebar.h \ spellchecking.h spellchecking.cpp \ static_ids.h \ str_helpers.h \ subprocess.h subprocess.cpp \ syntaxhighlighter.cpp syntaxhighlighter.h \ text_control.h text_control.cpp \ titleless_window.h titleless_window.cpp \ tm/suggestions.cpp tm/suggestions.h \ tm/transmem.cpp tm/transmem.h \ tm/tmx_io.cpp tm/tmx_io.h \ unicode_helpers.h unicode_helpers.cpp \ utility.cpp utility.h \ version.h \ welcomescreen.cpp welcomescreen.h \ pugixml.h \ $(ACCOUNTS_SUPPORT_SRC) nodist_poedit_SOURCES = compiled_xrc.cpp poedit_LDADD = $(WX_LIBS) $(LUCENE_LIBS) $(CLD2_LIBS) $(PUGIXML_LIBS) $(ACCOUNTS_SUPPORT_LIBS) \ $(BOOST_LDFLAGS) $(BOOST_THREAD_LIB) $(BOOST_SYSTEM_LIB) XRC_RESOURCES = \ $(srcdir)/resources/comment.xrc \ $(srcdir)/resources/manager.xrc \ $(srcdir)/resources/menus.xrc \ $(srcdir)/resources/prefs.xrc \ $(srcdir)/resources/properties.xrc \ $(srcdir)/resources/toolbar.xrc compiled_xrc.cpp: $(XRC_RESOURCES) $(WXRC) -v -c -o $@ $(XRC_RESOURCES) DISTCLEANFILES = $(nodist_poedit_SOURCES) EXTRA_DIST = $(XRC_RESOURCES) pluralforms/COPYING poedit-3.6.3/src/edapp.cpp0000644000175100001660000011332615011674230011062 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 1999-2025 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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __WXOSX__ #import "PFMoveApplication.h" #endif #ifdef __WXMSW__ #include #include #endif #ifdef __WXGTK__ #include #include #endif #include #include #if !wxUSE_UNICODE #error "Unicode build of wxWidgets is required by Poedit" #endif #include "app_updates.h" #include "colorscheme.h" #include "concurrency.h" #include "configuration.h" #include "cloud_accounts_ui.h" #include "crowdin_client.h" #include "localazy_client.h" #include "edapp.h" #include "edframe.h" #include "extractors/extractor_legacy.h" #include "filemonitor.h" #include "manager.h" #include "prefsdlg.h" #include "uilang.h" #include "customcontrols.h" #include "gexecute.h" #include "hidpi.h" #include "http_client.h" #include "icons.h" #include "version.h" #include "progress_ui.h" #include "recent_files.h" #include "str_helpers.h" #include "tm/transmem.h" #include "utility.h" #include "prefsdlg.h" #include "errors.h" #include "language.h" #include "welcomescreen.h" #ifndef __WXOSX__ // IPC for ensuring that only one instance of Poedit runs at a time. This is // handled native on macOS 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") { dispatch::on_main([=] { m_app->OpenNewFile(); }); return true; } if (data.StartsWith("OpenURI:", &payload)) { dispatch::on_main([=] { m_app->HandleCustomURI(payload); }); return true; } if (data.StartsWith("OpenFile:", &payload)) { long lineno = 0; payload.BeforeFirst(':').ToLong(&lineno); wxArrayString a; a.push_back(payload.AfterFirst(':')); dispatch::on_main([=] { m_app->OpenFiles(a, lineno); }); 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, int lineno = 0) { wxFileName fn(filename); fn.MakeAbsolute(); Command(wxString::Format("OpenFile:%d:%s", lineno, fn.GetFullPath())); } private: void Command(const wxString cmd) { m_conn->Execute(cmd); } wxSingleInstanceChecker *m_instCheck; wxClient m_client; std::unique_ptr m_conn; }; #endif // __WXOSX__ IMPLEMENT_APP(PoeditApp); PoeditApp::PoeditApp() { } PoeditApp::~PoeditApp() { } wxString PoeditApp::GetAppVersion() const { return wxString::FromAscii(POEDIT_VERSION); } wxString PoeditApp::GetMajorAppVersion() const { auto v = wxSplit(GetAppVersion(), '.'); return wxString::Format("%s.%s", v[0], v[1]); } 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 } #ifndef __WXOSX__ static wxArrayString gs_filesToOpen; #endif static int gs_lineToOpen = 0; static wxString gs_uriToHandle; extern void InitXmlResource(); bool PoeditApp::OnInit() { #ifdef __WXMSW__ // remove the current directory from the default DLL search order SetDllDirectory(L""); #endif #ifdef __WXGTK__ gtk_window_set_default_icon_name("net.poedit.Poedit"); g_set_application_name("Poedit"); // Wayland compatibility, see https://wiki.gnome.org/Projects/GnomeShell/ApplicationBased g_set_prgname("net.poedit.Poedit"); #endif 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; #ifdef __WXOSX__ // macOS 10.15 Vista throws a fit and bombards the user with scary UAC prompt // if a subprocess, shell or gettext, is launched with CWD within a "protected" // folder like Downloads or Desktop. Avoid by changing CWD to something harmless. // Note that this has to be done after wxApp::OnInit() above, which parser the // command line, including possible relative filenames. wxSetWorkingDirectory(wxGetHomeDir()); #endif #ifndef __WXOSX__ m_remoteServer.reset(new RemoteServer(this)); #endif InitHiDPIHandling(); #ifdef __WXOSX__ PFMoveToApplicationsFolderIfNecessary(); wxSystemOptions::SetOption(wxMAC_TEXTCONTROL_USE_SPELL_CHECKER, 1); SetExitOnFrameDelete(false); #endif // timestamps on the logs are of not use for Poedit: wxLog::DisableTimestamp(); #if defined(__UNIX__) && !defined(__WXOSX__) wxString installPrefix = POEDIT_PREFIX; #ifdef __linux__ wxFileName::SplitPath(wxStandardPaths::Get().GetExecutablePath(), &installPrefix, nullptr, nullptr); wxFileName fn = wxFileName::DirName(installPrefix); fn.RemoveLastDir(); installPrefix = fn.GetFullPath(); #endif wxStandardPaths::Get().SetInstallPrefix(installPrefix); wxString xdgConfigHome; if (!wxGetEnv("XDG_CONFIG_HOME", &xdgConfigHome)) xdgConfigHome = wxGetHomeDir() + "/.config"; wxString configDir = xdgConfigHome + "/poedit"; if (!wxFileName::DirExists(configDir)) wxFileName::Mkdir(configDir, wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL); wxString configFile = configDir + "/config"; #endif // __UNIX__ #if defined(__WXOSX__) #define CFG_FILE (wxStandardPaths::Get().GetUserConfigDir() + "/net.poedit.Poedit.cfg") #elif defined(__UNIX__) #define CFG_FILE configFile #else #define CFG_FILE wxString() #endif #ifdef __WXOSX__ // Remove legacy Sparkle updates folder that used to accumulate broken download // files for some users and eat up disk space: auto oldsparkle = wxStandardPaths::Get().GetUserDataDir() + "/.Sparkle"; if (wxFileName::DirExists(oldsparkle)) wxFileName::Rmdir(oldsparkle, wxPATH_RMDIR_RECURSIVE); #endif Config::Initialize(CFG_FILE.ToStdWstring()); #ifndef __WXOSX__ wxImage::AddHandler(new wxPNGHandler); #endif #ifdef __WXMSW__ wxImage::AddHandler(new wxICOHandler); #endif wxXmlResource::Get()->InitAllHandlers(); wxXmlResource::Get()->AddHandler(new LearnMoreLinkXmlHandler); #if defined(__WXOSX__) wxXmlResource::Get()->LoadAllFiles(wxStandardPaths::Get().GetResourcesDir()); #elif defined(__WXMSW__) wxStandardPaths::Get().DontIgnoreAppSubDir(); wxXmlResource::Get()->LoadAllFiles(wxStandardPaths::Get().GetResourcesDir() + "\\Resources"); #else InitXmlResource(); #endif SetDefaultCfg(wxConfig::Get()); #ifndef __WXOSX__ wxArtProvider::Push(new PoeditArtProvider); #endif SetupLanguage(); #ifdef __WXOSX__ CreateMenu(Menu::Global); // so that help menu is correctly merged with system-provided menu // (see http://sourceforge.net/tracker/index.php?func=detail&aid=1600747&group_id=9863&atid=309863) s_macHelpMenuTitleName = _("&Help"); #endif #ifdef HAS_UPDATES_CHECK AppUpdates::Get().InitAndStart(); #endif #ifndef __WXOSX__ // NB: opening files or creating empty window is handled differently on // Macs, using MacOpenFiles() and MacNewFile(), so don't create empty // window if no files are given on command line; but still support // passing files on command line if (!gs_filesToOpen.empty()) { OpenFiles(gs_filesToOpen, gs_lineToOpen); gs_filesToOpen.clear(); gs_lineToOpen = 0; } else if (!gs_uriToHandle.empty()) { HandleCustomURI(gs_uriToHandle); gs_uriToHandle.clear(); // don't terminate event loop right away on Windows as HandleCustomURI() is async: return true; } else { OpenNewFile(); } #endif // !__WXOSX__ #ifndef __WXOSX__ // If we failed to open any window during startup (e.g. because the user // attempted to open MO files), shut the app down. Don't do this on macOS // where a) the initialization is finished after OnInit() and b) apps // without windows are OK. if (!PoeditFrame::HasAnyWindow() && !WelcomeWindow::GetIfActive()) return false; #endif return true; } void PoeditApp::OnEventLoopEnter(wxEventLoopBase *loop) { wxApp::OnEventLoopEnter(loop); if (loop->IsMain()) FileMonitor::EventLoopStarted(); } int PoeditApp::OnExit() { #ifndef __WXOSX__ m_instanceChecker.reset(); m_remoteServer.reset(); #endif #ifdef __WXMSW__ // Keep any clipboard data available on Windows after the app terminates: wxTheClipboard->Flush(); #endif // Make sure PoeditFrame instances schedules for deletion are deleted // early -- e.g. before wxConfig is destroyed, so they can save changes DeletePendingObjects(); FileMonitor::CleanUp(); ColorScheme::CleanUp(); RecentFiles::CleanUp(); TranslationMemory::CleanUp(); #ifdef HAS_UPDATES_CHECK AppUpdates::CleanUp(); #endif #ifdef HAVE_HTTP_CLIENT CloudAccountClient::CleanUp(); #endif dispatch::cleanup(); u_cleanup(); return wxApp::OnExit(); } static wxLayoutDirection g_layoutDirection = wxLayout_Default; void PoeditApp::SetupLanguage() { #if defined(__WXMSW__) wxFileTranslationsLoader::AddCatalogLookupPathPrefix(wxStandardPaths::Get().GetResourcesDir() + "\\Translations"); wxFileTranslationsLoader::AddCatalogLookupPathPrefix(GetGettextPackagePath() + "/share/locale"); #elif defined(__WXOSX__) wxFileTranslationsLoader::AddCatalogLookupPathPrefix(GetGettextPackagePath() + "/share/locale"); #else // UNIX wxFileTranslationsLoader::AddCatalogLookupPathPrefix(wxStandardPaths::Get().GetInstallPrefix() + "/share/locale"); #endif wxTranslations *trans = new wxTranslations(); wxTranslations::Set(trans); auto loader = new PoeditTranslationsLoader; trans->SetLoader(loader); int language = wxLANGUAGE_DEFAULT; Language uilang; #if NEED_CHOOSELANG_UI uilang = GetUILanguage(); if (uilang) { auto langinfo = wxLocale::FindLanguageInfo(uilang.Code()); if (langinfo) language = langinfo->Language; } else #endif { // this returns always valid language, possibly English uilang = loader->DetermineBestUILanguage(); } // 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: { // suppress 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(); } trans->SetLanguage(uilang.LanguageTag()); // gettext-tools is needed for parsing of a few strings, we add it with lowest priority trans->AddCatalog("gettext-tools"); // wx and Poedit's translations are added with higher priority: trans->AddStdCatalog(); trans->AddCatalog("poedit"); g_layoutDirection = uilang.IsRTL() ? wxLayout_RightToLeft : wxLayout_LeftToRight; UErrorCode err = U_ZERO_ERROR; uloc_setDefault(uilang.IcuLocaleName().c_str(), &err); #if defined(HAVE_HTTP_CLIENT) && !defined(__WXOSX__) http_client::set_ui_language(uilang.LanguageTag()); #endif char icuVerStr[U_MAX_VERSION_STRING_LENGTH] = {0}; UVersionInfo icuVer; u_getVersion(icuVer); u_versionToString(icuVer, icuVerStr); wxLogTrace("poedit", "ICU version %s, using UI language '%s'", icuVerStr, uilang.LanguageTag()); #ifdef __WXMSW__ AppUpdates::Get().SetLanguage(uilang.Code()); #endif #ifdef SUPPORTS_OTA_UPDATES SetupOTALanguageUpdate(trans, uilang); #endif } #ifdef SUPPORTS_OTA_UPDATES void PoeditApp::SetupOTALanguageUpdate(wxTranslations *trans, const Language& lang) { auto langMO = lang.Code(); if (langMO == "en" || langMO == "en_US") return; auto version = str::to_utf8(GetMajorAppVersion()); // use downloaded OTA translations: auto dir = GetCacheDir("Translations") + "/" + version; wxFileTranslationsLoader::AddCatalogLookupPathPrefix(dir); trans->AddCatalog("poedit-ota"); // ..and update them (but at most once a day): auto lastCheck = Config::OTATranslationLastCheck(); auto now = time(NULL); if (now < lastCheck + 24*60*60) return; Config::OTATranslationLastCheck(now); wxFileName mofile(dir + "/" + langMO + "/poedit-ota.mo"); wxFileName::Mkdir(mofile.GetPath(), wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL); http_client::headers hdrs; std::string etag; if (mofile.FileExists()) etag = Config::OTATranslationEtag(); if (!etag.empty()) hdrs.emplace_back("If-None-Match", etag); http_client::download_from_anywhere("https://ota.poedit.net/i18n/" + version + "/" + str::to_utf8(langMO) + "/poedit-ota.mo.gz", hdrs) .then_on_main([=](downloaded_file f) { TempOutputFileFor temp(mofile); std::ofstream output_file(temp.FileName().fn_str(), std::ios_base::binary); std::ifstream input_file(f.filename().GetFullPath().mb_str(), std::ios_base::binary); if (output_file.fail() || input_file.fail()) return; boost::iostreams::filtering_istream input; input.push(boost::iostreams::gzip_decompressor()); input.push(input_file); boost::iostreams::copy(input, output_file); input_file.close(); output_file.close(); temp.Commit(); Config::OTATranslationEtag(f.etag()); // re-add the catalog to force reloading updated file trans->AddCatalog("poedit-ota"); }) .catch_all([](dispatch::exception_ptr){}); } #endif // SUPPORTS_OTA_UPDATES wxLayoutDirection PoeditApp::GetLayoutDirection() const { return g_layoutDirection; } wxString PoeditApp::GetCacheDir(const wxString& category) { static wxString localBaseDir; if (localBaseDir.empty()) { localBaseDir = wxStandardPaths::Get().GetUserDir(wxStandardPaths::Dir_Cache); #if defined(__WXOSX__) localBaseDir += "/net.poedit.Poedit"; #elif defined(__WXMSW__) localBaseDir += "\\Poedit\\Cache"; #else localBaseDir += "/poedit"; #endif } return localBaseDir + wxFILE_SEP_PATH + category; } void PoeditApp::OpenNewFile() { #ifdef __WXOSX__ // this must be done here rather than in OnInit on macOS if (!gs_uriToHandle.empty()) { HandleCustomURI(gs_uriToHandle); gs_uriToHandle.clear(); return; } #endif WelcomeWindow::GetAndActivate(); } int PoeditApp::OpenFiles(const wxArrayString& names, int lineno) { int opened = 0; for ( auto name: names ) { // MO files cannot be opened directly in Poedit (yet), but they are // associated with it, so that the app can provide explanation to users // not familiar with the MO/PO distinction. auto n = name.Lower(); if (n.ends_with(".mo") || n.ends_with(".gmo")) { wxMessageDialog dlg(nullptr, _(L"MO files can’t be directly edited in Poedit."), _("Error opening file"), wxOK); dlg.SetExtendedMessage(_("Please open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.")); dlg.ShowModal(); continue; } if (PoeditFrame::Create(name, lineno)) { opened++; } } if (opened) WelcomeWindow::HideActive(); return opened; } void PoeditApp::SetDefaultCfg(wxConfigBase *cfg) { LegacyExtractorsDB::RemoveObsoleteExtractors(cfg); if (cfg->Read("version", wxEmptyString) == GetAppVersion()) return; // do version migrations here cfg->Write("version", GetAppVersion()); } namespace { const char *CL_KEEP_TEMP_FILES = "keep-temp-files"; const char *CL_HANDLE_POEDIT_URI = "handle-poedit-uri"; const char *CL_LINE = "line"; } void PoeditApp::OnInitCmdLine(wxCmdLineParser& parser) { wxApp::OnInitCmdLine(parser); parser.AddSwitch("", CL_KEEP_TEMP_FILES, _(L"don’t delete temporary files (for debugging)")); parser.AddLongOption(CL_HANDLE_POEDIT_URI, _("handle a poedit:// URI"), wxCMD_LINE_VAL_STRING); parser.AddLongOption(CL_LINE, _("go to item at given line number"), wxCMD_LINE_VAL_NUMBER); parser.AddParam("translation.po", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL | wxCMD_LINE_PARAM_MULTIPLE); } bool PoeditApp::OnCmdLineParsed(wxCmdLineParser& parser) { if (!wxApp::OnCmdLineParsed(parser)) return false; long lineno = 0; if (parser.Found(CL_LINE, &lineno)) gs_lineToOpen = (int)lineno; 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); } else if (parser.GetParamCount() == 0) { client.Activate(); } else { for (size_t i = 0; i < parser.GetParamCount(); i++) { auto fn = parser.GetParam(i); if (fn.starts_with("poedit://")) client.HandleCustomURI(fn); else client.OpenFile(fn, (int)lineno); } } return false; // terminate program } case RemoteClient::NoOtherInstance: // fall through and handle normally break; } #endif wxString poeditURI; if (parser.Found(CL_HANDLE_POEDIT_URI, &poeditURI)) { gs_uriToHandle = poeditURI; } #ifdef __WXOSX__ wxArrayString filesToOpen; #define gs_filesToOpen filesToOpen #endif for (size_t i = 0; i < parser.GetParamCount(); i++) { auto fn = parser.GetParam(i); if (fn.starts_with("poedit://")) { gs_uriToHandle = fn; } else { wxFileName fnFull(fn); fnFull.MakeAbsolute(); gs_filesToOpen.push_back(fnFull.GetFullPath()); } } #ifdef __WXOSX__ if (!filesToOpen.empty()) OSXStoreOpenFiles(filesToOpen); #endif return true; } void PoeditApp::HandleCustomURI(const wxString& uri) { if (!uri.starts_with("poedit://")) return; #ifdef HAVE_HTTP_CLIENT auto uri_utf8 = uri.utf8_string(); if (CrowdinClient::IsOAuthCallback(uri_utf8)) { CrowdinClient::Get().HandleOAuthCallback(uri_utf8); return; } if (LocalazyClient::IsAuthCallback(uri_utf8)) { LocalazyClient::Get().HandleAuthCallback(uri_utf8) .then_on_main([=](std::shared_ptr projectToOpen){ if (projectToOpen) { // this shows UI, so do it after OnInit() initialization: CallAfter([=]{ OpenCloudTranslation(projectToOpen); }); } }); return; } #endif } // --------------------------------------------------------------------------- // exceptions handling // --------------------------------------------------------------------------- bool PoeditApp::OnExceptionInMainLoop() { try { throw; } #ifdef __WXOSX__ catch ( NSException *e ) { wxLogError(_("Unhandled exception occurred: %s"), str::to_wx([e reason])); } #endif catch ( ... ) { wxLogError(_("Unhandled exception occurred: %s"), DescribeCurrentException()); } return true; } // --------------------------------------------------------------------------- // event handlers for app-global menu actions // --------------------------------------------------------------------------- BEGIN_EVENT_TABLE(PoeditApp, wxApp) EVT_MENU (wxID_NEW, PoeditApp::OnNewFromScratch) EVT_MENU (XRCID("menu_new_from_pot"),PoeditApp::OnNewFromPOT) EVT_MENU (wxID_OPEN, PoeditApp::OnOpen) #ifdef HAVE_HTTP_CLIENT EVT_MENU (XRCID("menu_open_cloud"),PoeditApp::OnOpenCloudTranslation) #endif EVT_COMMAND (wxID_ANY, EVT_OPEN_RECENT_FILE, PoeditApp::OnOpenHist) EVT_MENU (wxID_ABOUT, PoeditApp::OnAbout) EVT_MENU (XRCID("menu_welcome"), PoeditApp::OnWelcomeWindow) EVT_MENU (XRCID("menu_manager"), PoeditApp::OnManager) EVT_MENU (wxID_EXIT, PoeditApp::OnQuit) EVT_MENU (wxID_PREFERENCES, PoeditApp::OnPreferences) EVT_MENU (wxID_HELP, PoeditApp::OnHelp) EVT_MENU (XRCID("menu_gettext_manual"), PoeditApp::OnGettextManual) #ifdef HAS_UPDATES_CHECK EVT_MENU (XRCID("menu_check_for_updates"), PoeditApp::OnCheckForUpdates) EVT_UPDATE_UI (XRCID("menu_check_for_updates"), PoeditApp::OnEnableCheckForUpdates) #endif #ifdef __WXOSX__ EVT_MENU (wxID_CLOSE, PoeditApp::OnCloseWindowCommand) EVT_IDLE (PoeditApp::OnIdleFixupMenusForMac) #endif #ifdef __WXMSW__ EVT_QUERY_END_SESSION(PoeditApp::OnQueryEndSession) #endif END_EVENT_TABLE() namespace { /// Information about the window invoking an event. Handles the difference between /// Windows (where opening a new file is done in the same file as the existing one, /// and so the action must not destroy data) and elsewhere (where new window is created). struct InvokingWindowProxy { InvokingWindowProxy(const wxCommandEvent& e) : m_actionTarget(nullptr) { auto obj = e.GetEventObject(); wxWindow* win = nullptr; auto menu = dynamic_cast(obj); if (menu) win = menu->GetWindow(); else win = dynamic_cast(obj); if (win) win = wxGetTopLevelParent(win); m_shouldReactivateWelcomeWindow = false; m_isFromWelcomeWindow = dynamic_cast(win) != nullptr; #ifdef __WXOSX__ // we can't detect the window from global menu, so always assume welcome window must be hidden: if (!win && menu) m_isFromWelcomeWindow = true; #endif m_invokingWindow = win; #ifdef __WXMSW__ m_actionTarget = dynamic_cast(win); #endif m_exitAppOnFrameDelete = wxGetApp().GetExitOnFrameDelete(); wxGetApp().SetExitOnFrameDelete(false); } ~InvokingWindowProxy() { wxGetApp().SetExitOnFrameDelete(m_exitAppOnFrameDelete); } bool IsPerformingActionAllowed() { #ifdef __WXMSW__ if (m_actionTarget) return m_actionTarget->AskIfCanDiscardCurrentDoc(); else #endif return true; } void NotifyIsStarting() { if (m_isFromWelcomeWindow) m_shouldReactivateWelcomeWindow = WelcomeWindow::HideActive(); } void NotifyWasAborted() const { // restore welcome window if that's where the aborted action came from if (m_shouldReactivateWelcomeWindow) WelcomeWindow::GetAndActivate(); } /// Window to perform actions (e.g. open files) in, or nullptr for new one PoeditFrame *GetActionTarget() const { return m_actionTarget ? m_actionTarget : PoeditFrame::CreateEmpty(); } /// Gets PoeditFrame that the action was invoken from; useful for e.g. file open window's parent PoeditFrame *GetParentWindowIfAny() const { return m_actionTarget; } /// Gets any invoking window; useful e.g. for parent of Upgrade-to-Pro prompt wxWindow *GetInvokingWindow() const { return m_invokingWindow; } private: bool m_shouldReactivateWelcomeWindow; bool m_isFromWelcomeWindow; wxWindow *m_invokingWindow; PoeditFrame *m_actionTarget; bool m_exitAppOnFrameDelete; }; } // anonymous namespace void PoeditApp::OnNewFromScratch(wxCommandEvent& event) { InvokingWindowProxy win(event); if (!win.IsPerformingActionAllowed()) return; win.NotifyIsStarting(); win.GetActionTarget()->NewFromScratch(); } void PoeditApp::OnNewFromPOT(wxCommandEvent& event) { InvokingWindowProxy win(event); if (!win.IsPerformingActionAllowed()) return; win.NotifyIsStarting(); wxString path = wxConfig::Get()->Read("last_file_path", wxEmptyString); wxFileDialog dlg(win.GetParentWindowIfAny(), MACOS_OR_OTHER("", _("Select translation template")), path, wxEmptyString, Catalog::GetTypesFileMask({ Catalog::Type::POT, Catalog::Type::PO }), wxFD_OPEN | wxFD_FILE_MUST_EXIST); if (dlg.ShowModal() != wxID_OK) { win.NotifyWasAborted(); return; } wxConfig::Get()->Write("last_file_path", dlg.GetDirectory()); try { auto pot = POCatalog::Create(dlg.GetPath(), Catalog::CreationFlag_IgnoreTranslations); // Silently fix duplicates because they are common in WP world: if (pot->HasDuplicateItems()) pot->FixDuplicateItems(); win.GetActionTarget()->NewFromPOT(pot); } catch (...) { win.NotifyWasAborted(); wxMessageDialog errdlg ( win.GetParentWindowIfAny(), wxString::Format(_(L"The file “%s†couldn’t be opened."), wxFileName(dlg.GetPath()).GetFullName()), _("Invalid file"), wxOK | wxICON_ERROR ); errdlg.SetExtendedMessage(DescribeCurrentException()); errdlg.ShowModal(); } } void PoeditApp::OnOpen(wxCommandEvent& event) { InvokingWindowProxy win(event); if (!win.IsPerformingActionAllowed()) return; win.NotifyIsStarting(); wxString path = wxConfig::Get()->Read("last_file_path", wxEmptyString); wxFileDialog dlg(win.GetParentWindowIfAny(), MACOS_OR_OTHER("", _("Select translation file")), path, wxEmptyString, Catalog::GetAllTypesFileMask(), wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE); if (dlg.ShowModal() != wxID_OK) { win.NotifyWasAborted(); return; } wxConfig::Get()->Write("last_file_path", dlg.GetDirectory()); wxArrayString paths; dlg.GetPaths(paths); // This is special treatment for Windows' opening in existing window { auto cat = PoeditFrame::PreOpenFileWithErrorsUI(paths.front(), win.GetParentWindowIfAny()); if (cat) win.GetActionTarget()->DoOpenFile(cat); else if (paths.size() == 1) win.NotifyWasAborted(); } paths.erase(paths.begin()); if (!paths.empty()) { if (OpenFiles(paths) == 0) win.NotifyWasAborted(); } } #ifdef HAVE_HTTP_CLIENT template void PoeditApp::OpenCloudTranslation(T preopen) { CloudOpenFile(nullptr, preopen, [=](int retval, wxString filename) { if (retval != wxID_OK) return; auto cat = PoeditFrame::PreOpenFileWithErrorsUI(filename, nullptr); if (!cat) return; auto frame = PoeditFrame::CreateEmpty(); frame->DoOpenFile(cat); }); } void PoeditApp::OnOpenCloudTranslation(wxCommandEvent& event) { InvokingWindowProxy win(event); if (!win.IsPerformingActionAllowed()) return; win.NotifyIsStarting(); CloudOpenFile(win.GetParentWindowIfAny(), nullptr, [=](int retval, wxString filename) { if (retval != wxID_OK) { win.NotifyWasAborted(); return; } auto cat = PoeditFrame::PreOpenFileWithErrorsUI(filename, win.GetParentWindowIfAny()); if (cat) win.GetActionTarget()->DoOpenFile(cat); else win.NotifyWasAborted(); }); } #endif void PoeditApp::OnOpenHist(wxCommandEvent& event) { InvokingWindowProxy win(event); if (!win.IsPerformingActionAllowed()) return; auto cat = PoeditFrame::PreOpenFileWithErrorsUI(event.GetString(), win.GetParentWindowIfAny()); if (cat) { win.NotifyIsStarting(); win.GetActionTarget()->DoOpenFile(cat); } } void PoeditApp::OnAbout(wxCommandEvent&) { wxAboutDialogInfo about; #ifndef __WXOSX__ about.SetName("Poedit"); about.SetVersion(wxGetApp().GetAppVersion()); about.SetDescription(_("Poedit is an easy to use translation editor.")); #endif about.SetCopyright(L"Copyright \u00a9 1999-2025 Václav Slavík"); #ifdef __WXGTK__ // other ports would show non-native about dlg about.SetWebSite("https://poedit.net"); about.SetIcon(wxArtProvider::GetIcon("net.poedit.Poedit", wxART_FRAME_ICON, wxSize(128, 128))); #endif wxAboutBox(about); } void PoeditApp::OnWelcomeWindow(wxCommandEvent&) { WelcomeWindow::GetAndActivate(); } void PoeditApp::OnManager(wxCommandEvent&) { wxFrame *f = ManagerFrame::Create(); f->Raise(); } void PoeditApp::OnQuit(wxCommandEvent&) { #ifdef __WXOSX__ // Native apps don't quit if there's any modal window or a sheet open; wx // only refuses to quit if a app-modal window is open: for (NSWindow *w in [NSApp windows]) { if (w.sheet && w.visible && w.preventsApplicationTerminationWhenModal) return; } // The Close() calls below may not terminate immediately, they may ask for // confirmation window-modally on macOS. So change the behavior to terminate // the app when the last window is closed now, instead of calling // ExitMainLoop(). This will terminate the app automagically when all the // windows are closed. bool delayed = false; for ( auto& i : wxTopLevelWindows ) { if (!i->Close()) delayed = true; } if (delayed) SetExitOnFrameDelete(true); else ExitMainLoop(); #else // !__WXOSX__ for ( auto& i : wxTopLevelWindows ) { if (!i->Close()) return; } ExitMainLoop(); #endif } #ifdef __WXMSW__ void PoeditApp::OnQueryEndSession(wxCloseEvent& event) { // check if we weren't called in the last 5 seconds (WM_QUERYENDSESSION timeout) // to avoid querying the user multiple times: static time_t s_lastCallTime = 0; const time_t now = time(nullptr); wxON_BLOCK_EXIT_SET(s_lastCallTime, now); if (now - s_lastCallTime < 2) return; for (auto w : PoeditFrame::GetInstances()) { if (!w->AskIfCanDiscardCurrentDoc()) { event.Veto(); return; } } } #endif // __WXMSW__ void PoeditApp::EditPreferences() { if (!m_preferences) m_preferences = PoeditPreferencesEditor::Create(); m_preferences->Show(nullptr); } void PoeditApp::OnPreferences(wxCommandEvent&) { EditPreferences(); } void PoeditApp::OnHelp(wxCommandEvent&) { OpenPoeditWeb("/trac/wiki/Doc"); } void PoeditApp::OnGettextManual(wxCommandEvent&) { wxLaunchDefaultBrowser("http://www.gnu.org/software/gettext/manual/html_node/"); } void PoeditApp::OpenPoeditWeb(const wxString& path) { wxLaunchDefaultBrowser ( wxString::Format("https://poedit.net%s?fromVersion=%s", path, GetAppVersion()) ); } #ifdef __WXOSX__ void PoeditApp::MacOpenFiles(const wxArrayString& names) { OpenFiles(names, gs_lineToOpen); gs_lineToOpen = 0; } void PoeditApp::OnIdleFixupMenusForMac(wxIdleEvent& event) { event.Skip(); FixupMenusForMacIfNeeded(); } void PoeditApp::OSXOnWillFinishLaunching() { wxApp::OSXOnWillFinishLaunching(); // undo wxWidgets messing up system defaults: wxApp::OSXEnableAutomaticTabbing(true); RecentFiles::Get().MacCreateFakeOpenRecentMenu(); // We already create the menu item, this would cause duplicates "thanks" to the weird // way wx's menubar works on macOS: [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSFullScreenMenuItemEverywhere"]; } // Handle Cmd+W closure of windows globally here void PoeditApp::OnCloseWindowCommand(wxCommandEvent&) { for (auto w: wxTopLevelWindows) { auto tlw = dynamic_cast(w); if (tlw && tlw->IsActive()) { tlw->Close(); break; } } } #endif // __WXOSX__ #ifdef HAS_UPDATES_CHECK void PoeditApp::OnCheckForUpdates(wxCommandEvent&) { AppUpdates::Get().CheckForUpdatesWithUI(); } void PoeditApp::OnEnableCheckForUpdates(wxUpdateUIEvent& event) { event.Enable(AppUpdates::Get().CanCheckForUpdates()); } #endif // HAS_UPDATES_CHECK poedit-3.6.3/src/localazy_client.h0000644000175100001660000001200115011674230012576 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2023-2025 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_localazy_client_h #define Poedit_localazy_client_h #ifdef HAVE_HTTP_CLIENT #include #include #include #include "cloud_accounts.h" /** Client to the Localazy platform. */ class LocalazyClient : public CloudAccountClient { public: /// Return singleton instance of the client. static LocalazyClient& Get(); /// Destroys the singleton, must be called (only) on app shutdown. static void CleanUp(); static constexpr const char* SERVICE_NAME = "Localazy"; const char *GetServiceName() const override { return SERVICE_NAME; } /// Is the user currently signed into Localazy? bool IsSignedIn() const override; /// Wrap relative Localazy URL to absolute URL with attribution static std::string AttributeLink(std::string page); /** Authenticate with Localazy. This opens the browser to authenticate the app. The app must handle poedit:// URL and call HandleAuthCallback. @a callback will be called after receiving the auth token. */ dispatch::future Authenticate(); /** Handles auth callback, i.e. invocation of poedit://localazy/... URL. If the verb in the URL is "open", returns information about the project that should be immediately opened. Otherwise (auth only), returns nullptr. */ dispatch::future> HandleAuthCallback(const std::string& uri); static bool IsAuthCallback(const std::string& uri); /// Sign out of Localazy, forget the tokens void SignOut() override; /// Retrieve information about the current user asynchronously dispatch::future GetUserInfo() override; /// Retrieve listing of projects accessible to the user dispatch::future> GetUserProjects() override; /// Retrieve details about given project dispatch::future GetProjectDetails(const ProjectInfo& project) override; /// Create filename on local filesystem suitable for the remote file std::wstring CreateLocalFilename(const ProjectInfo& project, const ProjectFile& file, const Language& lang) const override; std::shared_ptr ExtractSyncMetadata(Catalog& catalog) override; /// Asynchronously download specific file into @a output_file. dispatch::future DownloadFile(const std::wstring& output_file, const ProjectInfo& project, const ProjectFile& file, const Language& lang) override; dispatch::future DownloadFile(const std::wstring& output_file, std::shared_ptr meta) override; dispatch::future UploadFile(const std::string& file_buffer, std::shared_ptr meta) override; private: /** Exchanges temporary token for per-project token. After exchange, updates stored tokens and project metadata and saves them. */ dispatch::future ExchangeTemporaryToken(const std::string& token); /// Get authorization header for given project std::string GetAuthorization(const std::string& project_id) const; struct LocalazySyncMetadata : public FileSyncMetadata { std::string lang; std::string projectId; }; private: class localazy_http_client; class project_tokens; class metadata; LocalazyClient(); ~LocalazyClient(); void InitMetadataAndTokens(); // can only be called if m_mutex is held: void SaveMetadataAndTokens(std::lock_guard& acquiredLock); std::unique_ptr m_tokens; std::unique_ptr m_metadata; mutable std::mutex m_mutex; // guards m_tokens and m_metadata std::unique_ptr m_api; std::shared_ptr> m_authCallback; static LocalazyClient *ms_instance; }; #endif // HAVE_HTTP_CLIENT #endif // Poedit_localazy_client_h poedit-3.6.3/src/gexecute.h0000644000175100001660000000632115011674230011243 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2000-2025 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_gexecute_h #define Poedit_gexecute_h #include "subprocess.h" #include #include /// Parsed gettext errors output. struct ParsedGettextErrors { enum Level { Warning, Error }; struct Item { wxString text; Level level = Error; wxString file; int line = -1; bool has_location() const { return line != -1; } wxString pretty_print() const; }; std::vector items; explicit operator bool() const { return !items.empty(); } /// Output errors only to wxLogError. void log_errors(); /// Output all issues to wxLogError. void log_all(); ParsedGettextErrors& operator+=(const ParsedGettextErrors& other) { items.insert(items.end(), other.items.begin(), other.items.end()); return *this; } }; #if defined(__WXOSX__) || defined(__WXMSW__) extern wxString GetGettextPackagePath(); extern wxString GetGettextBinariesPath(); inline wxString GetGettextBinaryPath(const wxString& program) { return subprocess::try_find_program(program, GetGettextBinariesPath()); } #else inline wxString GetGettextBinaryPath(const wxString& program) { return program; } #endif /** Extract gettext-formatted errors from stderr output. Providing @a program enables filtering out of gettext's message prefixes. @see GettextRunner::parse_stderr() for better API. */ extern ParsedGettextErrors parse_gettext_stderr(const subprocess::Output& output, const std::wstring& program = {}); // Specialized runner for executing gettext tools class GettextRunner : public subprocess::Runner { public: GettextRunner(); /// Extract gettext-formatted errors from stderr output. ParsedGettextErrors parse_stderr(const subprocess::Output& output) const { return parse_gettext_stderr(output, m_program); } protected: void preprocess_args(subprocess::Arguments& args) const override; // last program executed mutable std::wstring m_program; }; #endif // Poedit_gexecute_h poedit-3.6.3/src/resources/0000755000175100001660000000000015011674362011357 5poedit-3.6.3/src/resources/toolbar.xrc0000644000175100001660000000444415011674230013457 3,3d Open file Open file Save file Save file Check for errors in the translation Update from source code Show or hide the sidebar poedit-3.6.3/src/resources/menus.xrc0000644000175100001660000004467115011674230013152 Ctrl+N Ctrl+O Ctrl+Shift+1 Ctrl+W Ctrl+S Shift+Ctrl+S Shift+Ctrl+E Ctrl+, Ctrl+, Ctrl+A Ctrl+K Ctrl+B Ctrl+Shift+B Ctrl+U 1 Ctrl+M Ctrl+F Ctrl+H Ctrl+G Ctrl+Shift+G Ctrl+F Ctrl+Alt+F Ctrl+G Ctrl+Shift+G 1 1 1 1 1 1 1 1 1 Ctrl+Alt+S 1 Ctrl+/ Alt+Return Alt+Enter Alt+Ctrl+P Ctrl+Return Ctrl+Enter Ctrl+Shift+Return Ctrl+Shift+Enter Ctrl+Up Ctrl+Down Ctrl+Shift+Up Ctrl+Shift+Down Ctrl+Alt+Left Ctrl+Alt+Right F1 F1 Ctrl+? Ctrl+N Ctrl+O Ctrl+Shift+1 0 Ctrl+W Ctrl+, Ctrl+, Ctrl+A F1 F1 Ctrl+? poedit-3.6.3/src/resources/manager.xrc0000644000175100001660000000445715011674230013433 Edit project wxVERTICAL 5d wxLEFT|wxRIGHT|wxTOP -1,2d 1 wxEXPAND|wxLEFT|wxRIGHT 5d -1,8d wxEXPAND|wxLEFT|wxRIGHT 5d 200,100d -1,2d small Add directory to the list wxRIGHT|wxBOTTOM|wxALIGN_RIGHT 5d wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM 5d 1 5d wxLEFT|wxRIGHT|wxBOTTOM wxRIGHT|wxBOTTOM 5d wxALIGN_RIGHT poedit-3.6.3/src/resources/properties.xrc0000644000175100001660000003122115011674230014202 Translation Properties 1 wxVERTICAL 1 2 wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL 5d 100,-1d 1 5d wxEXPAND|wxRIGHT|wxTOP|wxBOTTOM wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL 5d 100,-1d 5d wxEXPAND|wxRIGHT|wxBOTTOM 8,8d 8,8d wxLEFT|wxRIGHT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL 5d 5d wxEXPAND|wxRIGHT wxLEFT|wxRIGHT|wxBOTTOM|wxTOP|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL 5d 5d wxEXPAND|wxRIGHT 5d wxEXPAND|wxRIGHT 3d wxEXPAND|wxRIGHT|wxTOP|wxBOTTOM 10,20 https://poedit.net/trac/wiki/Doc/PluralForms wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL 5d 8,8d 8,8d wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL 5d 5d wxEXPAND|wxRIGHT|wxBOTTOM wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL 5d 5d wxEXPAND|wxRIGHT|wxBOTTOM small wxALIGN_RIGHT|wxRIGHT|wxBOTTOM 13 5d 8,8d 8,8d wxVERTICAL wxLEFT|wxRIGHT|wxTOP 5d small 5d wxLEFT|wxTOP|wxALIGN_CENTER_VERTICAL wxLEFT|wxTOP|wxALIGN_CENTER_VERTICAL 5d 3,-1d small wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL 5d 1,1d wxEXPAND wxEXPAND|wxALL 5d wxEXPAND|wxALL 5d wxVERTICAL wxLEFT|wxRIGHT|wxTOP 5d wxLEFT|wxRIGHT|wxTOP|wxEXPAND 5d 0,4 wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND 5d https://poedit.net/trac/wiki/Doc/Keywords wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_LEFT 6d 5d 5d wxEXPAND|wxTOP|wxLEFT|wxRIGHT 5d normal 1 normal wxALIGN_RIGHT wxALIGN_RIGHT|wxALL wxALIGN_RIGHT|wxTOP|wxBOTTOM 5d poedit-3.6.3/src/resources/prefs.xrc0000644000175100001660000001454615011674230013140 Extractor setup small 300,-1d wxVERTICAL wxVERTICAL wxEXPAND|wxLEFT|wxRIGHT|wxTOP 5d wxEXPAND|wxLEFT|wxRIGHT 5d 5d wxLEFT|wxRIGHT|wxTOP wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM 5d 5d wxEXPAND|wxLEFT|wxRIGHT|wxTOP wxVERTICAL wxEXPAND|wxLEFT|wxRIGHT|wxTOP 5d xgettext -L PHP --add-comments=TRANSLATORS: --force-po -o %o %C %K %F wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM 5d small #777777 wxLEFT|wxRIGHT 5d 5d wxLEFT|wxRIGHT|wxTOP -k%k wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM 5d small #777777 wxLEFT|wxRIGHT 5d 5d wxLEFT|wxRIGHT|wxTOP %f wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM 5d small #777777 wxLEFT|wxRIGHT 5d 5d wxLEFT|wxRIGHT|wxTOP --from-code=%c wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM 5d small #777777 wxLEFT|wxRIGHT 5d 5d wxEXPAND|wxLEFT|wxRIGHT|wxTOP normal 1 normal wxALIGN_RIGHT wxALIGN_RIGHT|wxALL wxALIGN_RIGHT|wxTOP|wxBOTTOM 5d poedit-3.6.3/src/resources/comment.xrc0000644000175100001660000000370315011674230013454 Edit comment wxVERTICAL 5d wxLEFT|wxTOP|wxRIGHT 2d 100,-1d 1 wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM 5d 150,80d 1 5d wxLEFT|wxRIGHT|wxBOTTOM wxRIGHT|wxBOTTOM 5d Delete the comment wxRIGHT|wxBOTTOM 5d wxTOP|wxALIGN_RIGHT 5d poedit-3.6.3/src/errors.h0000644000175100001660000000600415011674230010744 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2013-2025 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_errors_h #define Poedit_errors_h #include #include #include #include #include /// Any exception error. /// Pretty much the same as std::runtime_error, except using Unicode strings. class Exception : public std::runtime_error { public: Exception(const wxString& what) : std::runtime_error(what.utf8_string()), m_what(what) {} const wxString& What() const { return m_what; } // prevent use of std::exception::what() on Exception-cast instances: private: #ifdef _MSC_VER const char* what() const override { return std::runtime_error::what(); } #else const char* what() const noexcept override { return std::runtime_error::what(); } #endif private: wxString m_what; }; namespace errors::detail { struct Rethrower { virtual void rethrow() = 0; virtual ~Rethrower() {} }; template struct RethrowerImpl : public Rethrower { RethrowerImpl(T&& func) : rethrow_exception(std::move(func)) {} void rethrow() override { rethrow_exception(); } T rethrow_exception; }; wxString DescribeExceptionImpl(Rethrower& rethrower); template inline wxString DescribeException(T&& rethrow_exception) { RethrowerImpl rethrower(std::move(rethrow_exception)); return DescribeExceptionImpl(rethrower); } } // namespace errors::detail /// Helper to convert an exception into a human-readable string inline wxString DescribeException(std::exception_ptr e) { return errors::detail::DescribeException([e]{ std::rethrow_exception(e); }); } inline wxString DescribeException(boost::exception_ptr e) { return errors::detail::DescribeException([e]{ boost::rethrow_exception(e); }); } inline wxString DescribeCurrentException() { return DescribeException(std::current_exception()); } #endif // Poedit_errors_h poedit-3.6.3/src/custom_notebook.cpp0000644000175100001660000003517415011674230013207 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2016-2025 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 "custom_notebook.h" #include "colorscheme.h" #include "hidpi.h" #include "str_helpers.h" #include "utility.h" #include #include #include #include #include #include #ifdef __WXOSX__ #include #endif #ifdef __WXMSW__ #include #endif #include #ifdef HAS_SEGMENTED_NOTEBOOK // Abstract interface to platform implementations of segmented tabbing class SegmentedNotebook::TabsIface { public: virtual ~TabsIface() {} virtual wxSizer *GetExtensibleArea() const = 0; virtual void InsertPage(size_t n, const wxString& label) = 0; virtual void RemovePage(size_t n) = 0; virtual void RemoveAllPages() = 0; virtual void ChangeSelection(size_t n) = 0; virtual void UpdateBackgroundColour() = 0; }; #ifdef __WXOSX__ @interface POSegmentedNotebookController : NSObject @property wxSimplebook *book; @end @implementation POSegmentedNotebookController - (void)tabSelected:(NSSegmentedControl*)sender { // SetSelection() generates events: self.book->SetSelection((int)sender.selectedSegment); } @end // NSSegmentedControl-based implementation class SegmentedNotebook::SegmentedControlTabs : public wxNativeWindow, public SegmentedNotebook::TabsIface { public: SegmentedControlTabs(wxSimplebook *parent, SegmentStyle style) : wxNativeWindow() { m_labels = [NSMutableArray new]; m_control = [NSSegmentedControl new]; Create(parent, wxID_ANY, m_control); m_controller = [POSegmentedNotebookController new]; m_controller.book = parent; [m_control setAction:@selector(tabSelected:)]; [m_control setTarget:m_controller]; switch (style) { case SegmentStyle::SmallInline: m_control.segmentStyle = NSSegmentStyleRoundRect; SetWindowVariant(wxWINDOW_VARIANT_SMALL); break; case SegmentStyle::LargeFullWidth: m_control.segmentStyle = NSSegmentStyleTexturedRounded; SetWindowVariant(wxWINDOW_VARIANT_LARGE); break; case SegmentStyle::SidebarPanels: wxFAIL_MSG("this style can't be used with NSSegmentedControl"); break; } } wxSizer *GetExtensibleArea() const override { return nullptr; } void InsertPage(size_t n, const wxString& label) override { [m_labels insertObject:str::to_NS(label) atIndex:n]; UpdateLabels(); } void RemovePage(size_t n) override { [m_labels removeObjectAtIndex:n]; UpdateLabels(); } void RemoveAllPages() override { [m_labels removeAllObjects]; m_control.segmentCount = 0; } void ChangeSelection(size_t n) override { m_control.selectedSegment = n; } void UpdateBackgroundColour() override { /* no action needed with native NSSegmentedControl */ } private: void UpdateLabels() { m_control.segmentCount = m_labels.count; [m_labels enumerateObjectsUsingBlock:^(NSString *label, NSUInteger i, BOOL *) { [m_control setLabel:label forSegment:i]; }]; } wxSimplebook *Book() { return (wxSimplebook*)GetParent(); } private: NSMutableArray *m_labels; NSSegmentedControl *m_control; POSegmentedNotebookController *m_controller; }; #endif // __WXOSX__ class SegmentedNotebook::TabButton : public wxToggleButton { public: TabButton(wxWindow *parent, const wxString& label) : wxToggleButton(parent, wxID_ANY, label, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT) { #if defined(__WXOSX__) auto native = static_cast(GetHandle()); native.bezelStyle = NSBezelStyleRecessed; native.showsBorderOnlyWhileMouseInside = YES; #elif defined(__WXMSW__) MakeOwnerDrawn(); SetFont(GetFont().Bold()); m_clrHighlight = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT); #endif } #ifdef __WXMSW__ bool ShouldInheritColours() const override { return true; } virtual bool HasTransparentBackground() wxOVERRIDE { return true; } wxSize DoGetBestSize() const override { auto size = GetTextExtent(GetLabel()); size.y += PX(6); return size; } bool MSWOnDraw(WXDRAWITEMSTRUCT* wxdis) override { LPDRAWITEMSTRUCT lpDIS = (LPDRAWITEMSTRUCT)wxdis; HDC hdc = lpDIS->hDC; UINT state = lpDIS->itemState; if (GetNormalState() == State_Pressed) state |= ODS_SELECTED; const bool highlighted = IsMouseInWindow(); auto label = GetLabel(); auto rect = wxRectFromRECT(lpDIS->rcItem); wxDCTemp dc((WXHDC)hdc); wxRect textRect(dc.GetTextExtent(label)); textRect = textRect.CenterIn(rect, wxHORIZONTAL); textRect.Offset(0, PX(1)); if (state & ODS_SELECTED) { dc.SetPen(*wxTRANSPARENT_PEN); dc.SetBrush(m_clrHighlight); dc.DrawRectangle(wxRect(textRect.x, rect.y + rect.height - PX(2), textRect.width, PX(2))); } dc.SetTextForeground(highlighted ? m_clrHighlight : GetForegroundColour()); dc.SetFont(GetFont()); dc.DrawText(label, textRect.x, textRect.y); // draw the focus rectangle if we need it if ((state & ODS_FOCUS) && !(state & ODS_NOFOCUSRECT)) { RECT r = { rect.x, rect.y, rect.width, rect.height }; DrawFocusRect(hdc, &r); } return true; } private: wxColour m_clrHighlight; #endif // __WXMSW__ }; class SegmentedNotebook::ButtonTabs : public wxPanel, public SegmentedNotebook::TabsIface { public: ButtonTabs(wxSimplebook *parent, SegmentStyle style) : wxPanel(parent, wxID_ANY) { m_book = parent; m_style = style; m_buttonsSizer = new wxBoxSizer(wxHORIZONTAL); m_wrappingSizer = new wxBoxSizer(wxHORIZONTAL); m_wrappingSizer->AddStretchSpacer(); m_wrappingSizer->Add(m_buttonsSizer, wxSizerFlags().Expand()); m_wrappingSizer->AddStretchSpacer(); auto topsizer = new wxBoxSizer(wxVERTICAL); topsizer->Add(m_wrappingSizer, wxSizerFlags(1).Expand().Border(wxLEFT | wxRIGHT, PX(2))); topsizer->AddSpacer(PX(5)); #ifdef __WXOSX__ if (@available(macOS 11.0, *)) { topsizer->InsertSpacer(0, PX(2)); topsizer->AddSpacer(PX(1)); } #endif SetSizer(topsizer); Bind(wxEVT_PAINT, &ButtonTabs::OnPaint, this); } wxSizer *GetExtensibleArea() const override { return m_wrappingSizer; } void OnPaint(wxPaintEvent&) { auto children = GetChildren(); wxPaintDC dc(this); auto clr = ColorScheme::Get(Color::SidebarBlockSeparator); dc.SetPen(*wxTRANSPARENT_PEN); dc.SetBrush(clr); switch (m_style) { case SegmentStyle::SmallInline: #ifdef __WXMSW__ for (size_t i = 1; i < children.size(); ++i) { auto r = children[i]->GetRect(); dc.DrawRectangle(r.x - PX(5) - PX(1), r.y, PX(1), r.height); } #endif // __WXMSW__ break; case SegmentStyle::LargeFullWidth: #ifdef __WXMSW__ if (!children.empty()) { auto c = children[0]->GetRect(); dc.DrawRectangle(0, c.y + c.height, GetClientSize().x, PX(1)); } #endif // __WXMSW__ break; case SegmentStyle::SidebarPanels: { #ifdef __WXOSX__ auto size = GetClientSize(); dc.DrawRectangle(0, size.y - PX(2), size.x, PX(1)); #endif } break; } } void InsertPage(size_t n, const wxString& label) override { auto button = new TabButton(this, label); wxSizerFlags flags; if (n > 0) flags.Border(wxLEFT, MSW_OR_OTHER(PX(5) + PX(1) + PX(5) /* != PX(11) in some zoom levels! */, PX(3))); switch (m_style) { case SegmentStyle::SmallInline: button->SetWindowVariant(wxWINDOW_VARIANT_SMALL); break; case SegmentStyle::LargeFullWidth: button->SetWindowVariant(wxWINDOW_VARIANT_LARGE); flags.Proportion(1); break; case SegmentStyle::SidebarPanels: #ifdef __WXOSX__ button->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif break; } m_buttonsSizer->Add(button, flags); button->Bind(wxEVT_TOGGLEBUTTON, [=](wxCommandEvent& e) { if (e.IsChecked()) { // SetSelection() generates events: m_book->SetSelection(n); } else { // don't un-toggle already toggled button / selection button->SetValue(true); } }); } void RemovePage(size_t n) override { auto window = m_buttonsSizer->GetItem(n)->GetWindow(); m_buttonsSizer->Remove((int)n); window->Destroy(); } void RemoveAllPages() override { m_buttonsSizer->Clear(/*delete_windows=*/true); } void ChangeSelection(size_t n) override { for (size_t i = 0; i < m_buttonsSizer->GetItemCount(); ++i) { auto btn = static_cast(m_buttonsSizer->GetItem(i)->GetWindow()); btn->SetValue(i == n); } } void UpdateBackgroundColour() override { SetBackgroundColour(m_book->GetBackgroundColour()); } private: wxSimplebook *m_book; SegmentStyle m_style; wxSizer *m_wrappingSizer, *m_buttonsSizer; }; SegmentedNotebookBase *SegmentedNotebook::Create(wxWindow* parent, SegmentStyle style) { #ifdef __WXMSW__ // Return regular notebook for screenreaders: if (IsRunningUnderScreenReader()) return new SegmentedNotebookFallback(parent, style); #endif return new SegmentedNotebook(parent, style); } SegmentedNotebook::SegmentedNotebook(wxWindow *parent, SegmentStyle style) : wxSimplebook(parent, wxID_ANY) { switch (style) { case SegmentStyle::SmallInline: case SegmentStyle::LargeFullWidth: #ifdef __WXOSX__ { auto tabs = new SegmentedControlTabs(this, style); m_bookctrl = tabs; m_tabs = tabs; break; } #endif case SegmentStyle::SidebarPanels: { auto tabs = new ButtonTabs(this, style); m_bookctrl = tabs; m_tabs = tabs; break; } } wxSizer* sizer = new wxBoxSizer(wxVERTICAL); m_controlSizer = new wxBoxSizer(wxHORIZONTAL); m_controlSizer->Add(m_bookctrl, wxSizerFlags(1).Expand()); switch (style) { case SegmentStyle::SmallInline: sizer->Add(m_controlSizer, wxSizerFlags().Left().Border(wxLEFT, 4)); break; case SegmentStyle::LargeFullWidth: case SegmentStyle::SidebarPanels: sizer->Add(m_controlSizer, wxSizerFlags().Expand()); break; } SetSizer(sizer); Bind(wxEVT_NOTEBOOK_PAGE_CHANGED, [=](wxBookCtrlEvent& e) { m_tabs->ChangeSelection(e.GetSelection()); e.Skip(); }); } bool SegmentedNotebook::SetBackgroundColour(const wxColour& clr) { if (!wxSimplebook::SetBackgroundColour(clr)) return false; m_tabs->UpdateBackgroundColour(); return true; } wxSizer *SegmentedNotebook::GetTabsExtensibleArea() const { return m_tabs->GetExtensibleArea(); } int SegmentedNotebook::ChangeSelection(size_t page) { m_tabs->ChangeSelection(page); return wxSimplebook::ChangeSelection(page); } bool SegmentedNotebook::InsertPage(size_t n, wxWindow *page, const wxString& text, bool bSelect, int imageId) { m_tabs->InsertPage(n, text); return wxSimplebook::InsertPage(n, page, text, bSelect, imageId); } wxWindow *SegmentedNotebook::DoRemovePage(size_t page) { m_tabs->RemovePage(page); return wxSimplebook::DoRemovePage(page); } bool SegmentedNotebook::DeleteAllPages() { m_tabs->RemoveAllPages(); return wxSimplebook::DeleteAllPages(); } int SegmentedNotebook::DoSetSelection(size_t n, int flags) { // Is any page in the notebook currently focused? bool pageHadFocus = false; for (auto w = FindFocus(); w; w = w->GetParent()) { if (w == this) { pageHadFocus = true; break; } } auto oldSel = wxSimplebook::DoSetSelection(n, flags); // If a page was focused, focus the newly shown page: if (oldSel != n && pageHadFocus) GetPage(n)->SetFocus(); return oldSel; } #endif // !HAS_SEGMENTED_NOTEBOOK SegmentedNotebookFallback::SegmentedNotebookFallback(wxWindow *parent, SegmentStyle style) : wxNotebook(parent, -1, wxDefaultPosition, wxDefaultSize, wxNB_NOPAGETHEME) { wxFont font = GetFont(); double size = font.GetFractionalPointSize(); switch (style) { case SegmentStyle::SmallInline: size /= 1.2; break; case SegmentStyle::LargeFullWidth: size *= 1.2; break; case SegmentStyle::SidebarPanels: // do nothing break; } font.SetFractionalPointSize(size); SetOwnFont(font); } poedit-3.6.3/src/icons.h0000644000175100001660000000350715011674230010550 /* * This file is part of Poedit (https://poedit.net) * * Copyright (C) 2004-2025 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 _ICONS_H_ #define _ICONS_H_ #include #if defined(__WXGTK20__) #define HAS_THEMES_SUPPORT #endif #ifndef __WXOSX__ class PoeditArtProvider : public wxArtProvider { public: PoeditArtProvider(); protected: static wxString GetIconsDir(); virtual wxBitmap CreateBitmap(const wxArtID& id, const wxArtClient& client, const wxSize& size); }; #endif /** Return Poedit's icon appropriately sized. @param pointSize Base size of the icons, in points (not pixels!), i.e. 64 or 128 */ extern wxBitmap GetPoeditAppIcon(int pointSize); #endif // _ICONS_H_ poedit-3.6.3/net.poedit.Poedit.appdata.xml0000644000175100001660000000332415011674230014121 net.poedit.Poedit Poedit Simple translation editor MIT CC0-1.0

Translation editor for gettext (PO files) and XLIFF. It helps with translating applications or WordPress themes and plugins into other languages, as well as with developing localizable applications.

https://poedit.net/images/screenshots/linux/poedit-appdata1.png https://poedit.net https://github.com/vslavik/poedit https://github.com/vslavik/poedit https://crowdin.com/project/poedit translation gettext po localization i18n l10n wordpress xliff flutter net.poedit.Poedit.desktop poedit Václav Slavík Václav Slavík poedit
poedit-3.6.3/aclocal.m40000644000175100001660000015715215011674350010346 # generated automatically by aclocal 1.16.5 -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, [m4_warning([this file was generated for autoconf 2.71. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*- # serial 12 (pkg-config-0.29.2) dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29.2]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) dnl ---------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurrence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $2]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [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. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], dnl [DESCRIPTION], [DEFAULT]) dnl ------------------------------------------ dnl dnl Prepare a "--with-" configure option using the lowercase dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and dnl PKG_CHECK_MODULES in a single macro. AC_DEFUN([PKG_WITH_MODULES], [ m4_pushdef([with_arg], m4_tolower([$1])) m4_pushdef([description], [m4_default([$5], [build with ]with_arg[ support])]) m4_pushdef([def_arg], [m4_default([$6], [auto])]) m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) m4_case(def_arg, [yes],[m4_pushdef([with_without], [--without-]with_arg)], [m4_pushdef([with_without],[--with-]with_arg)]) AC_ARG_WITH(with_arg, AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, [AS_TR_SH([with_]with_arg)=def_arg]) AS_CASE([$AS_TR_SH([with_]with_arg)], [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], [auto],[PKG_CHECK_MODULES([$1],[$2], [m4_n([def_action_if_found]) $3], [m4_n([def_action_if_not_found]) $4])]) m4_popdef([with_arg]) m4_popdef([description]) m4_popdef([def_arg]) ])dnl PKG_WITH_MODULES dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [DESCRIPTION], [DEFAULT]) dnl ----------------------------------------------- dnl dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES dnl check._[VARIABLE-PREFIX] is exported as make variable. AC_DEFUN([PKG_HAVE_WITH_MODULES], [ PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) AM_CONDITIONAL([HAVE_][$1], [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) ])dnl PKG_HAVE_WITH_MODULES dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [DESCRIPTION], [DEFAULT]) dnl ------------------------------------------------------ dnl dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make dnl and preprocessor variable. AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], [ PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) ])dnl PKG_HAVE_DEFINE_WITH_MODULES # Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.16.5], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.16.5])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE="gmake" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking is enabled. # This creates each '.Po' and '.Plo' makefile fragment that we'll need in # order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl m4_ifdef([_$0_ALREADY_INIT], [m4_fatal([$0 expanded multiple times ]m4_defn([_$0_ALREADY_INIT]))], [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi AC_SUBST([CTAGS]) if test -z "$ETAGS"; then ETAGS=etags fi AC_SUBST([ETAGS]) if test -z "$CSCOPE"; then CSCOPE=cscope fi AC_SUBST([CSCOPE]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([admin/ax_boost_base.m4]) m4_include([admin/ax_boost_iostreams.m4]) m4_include([admin/ax_boost_system.m4]) m4_include([admin/ax_boost_thread.m4]) m4_include([admin/ax_cxx_compile_stdcxx.m4]) m4_include([admin/wxwin.m4]) poedit-3.6.3/net.poedit.PoeditURI.desktop0000644000175100001660000000024715011674230013742 [Desktop Entry] Name=Poedit Type=Application Terminal=false NoDisplay=true MimeType=x-scheme-handler/poedit; Exec=poedit --handle-poedit-uri %u Icon=net.poedit.Poedit poedit-3.6.3/locales/0000755000175100001660000000000015011674364010202 5poedit-3.6.3/locales/ru.po0000644000175100001660000033616715011674230011120 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-10 10:16\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 " "&& n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 " "&& n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: ru\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Скрыть Ñто уведомление" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Больше не показывать" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Больше не показывать" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "ПоÑледние изменениÑ" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Сводка об обновлении" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Закрыть" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Проблемы" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Файл" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Строка" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Проблема" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Ðовые Ñтроки" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Ðовые Ñтроки" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Удалённые Ñтроки" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Удалённые Ñтроки" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Сбор данных в иÑходных файлах…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Извлечение переводимых Ñтрок из %s файла…" msgstr[1] "Извлечение переводимых Ñтрок из %s файлов…" msgstr[2] "Извлечение переводимых Ñтрок из %s файлов…" msgstr[3] "Извлечение переводимых Ñтрок из %s файлов…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Ðе удалоÑÑŒ загрузить файл Ñ Ð¸Ð·Ð²Ð»ÐµÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼Ð¸ переводами." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Ð’: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "ИÑходный код недоÑтупен." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Перевод не может быть обновлён из иÑходного кода, так как код не был найден " "в меÑте, указанном в ÑвойÑтвах файла." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Ð’ доÑтупе отказано." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° чтение иÑходных кодов из меÑта, указанного в " "ÑвойÑтвах файла." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "ЕÑли вы ранее отказали в доÑтупе к файлам, вы можете разрешить Ñто в " "«СиÑтемные наÑтройки» > «КонфиденциальноÑть и безопаÑноÑть» > «Файлы и " "папки»." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "ЕÑли вы ранее отказали в доÑтупе к файлам, то вы можете разрешить его в " "«СиÑтемные наÑтройки» > «КонфиденциальноÑть и безопаÑноÑть» > " "«КонфиденциальноÑть» > «Файлы и папки»." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Ðе удалоÑÑŒ извлечь Ñтроки из иÑходного кода." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Файл «%s» не может быть открыт." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Обновление переводов" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Определение различий…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "СлиÑние различий…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "Файл перевода уÑтарел, никаких изменений в Ñтроках Ñделано не было." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Файл перевода был обновлён Ñ %s изменением" msgstr[1] "Файл перевода был обновлён Ñ %s изменениÑми" msgstr[2] "Файл перевода был обновлён Ñ %s изменениÑми" msgstr[3] "Файл перевода был обновлён Ñ %s изменениÑми" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Ðовые Ñтроки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð°:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Удалённые Ñтроки (больше не иÑпользуютÑÑ):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "%d проблема обнаружена Ñ Ð¸Ñходными Ñтроками" msgstr[1] "%d проблем обнаружено Ñ Ð¸Ñходными Ñтроками" msgstr[2] "%d проблем обнаружено Ñ Ð¸Ñходными Ñтроками" msgstr[3] "%d проблем обнаружено Ñ Ð¸Ñходными Ñтроками" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Показать подробноÑти…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Показать подробноÑти…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "ÐедопуÑтимый формат заголовка: «%s»" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Файлы перевода PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Шаблоны перевода POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Файлы перевода XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Каталог локализации Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Файлы перевода JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Файлы перевода Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Ð’Ñе файлы перевода" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Ðе удалоÑÑŒ определить формат файла." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Этот JSON файл — не файл перевода, и не может быть отредактирован в Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Чтение файла было прервано из-за ошибки: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Файл «%s» доÑтупен только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ, и его Ð½ÐµÐ»ÑŒÐ·Ñ Ñохранить.\n" "Сохраните файл под другим именем." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Ðе удалоÑÑŒ Ñохранить файл «%s»." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Скриншоты:" #: src/catalog_po.cpp:134 #, 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[1] "%i Ñтроки файла \"%s\" не были корректно загружены." msgstr[2] "%i Ñтрок файла \"%s\" не было корректно загружено." msgstr[3] "%i Ñтрок файла \"%s\" не было корректно загружено." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "%d Ñтрока файла «%s» повреждена (недопуÑтимые данные в %s)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Ðеправильный файл PO: форма единÑтвенного чиÑла msgstr иÑпользуетÑÑ Ð²Ð¼ÐµÑте Ñ " "msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Ðеправильный файл PO: форма множеÑтвенного чиÑла msgstr иÑпользуетÑÑ Ð±ÐµÐ· " "msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Ðе удалоÑÑŒ загрузить файл, похоже он повреждён." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "При загрузке файла произошли ошибки. Ð’ результате чего некоторые данные " "могут быть потерÑны или повреждены." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Возникла проблема при форматировании файла (но он был уÑпешно Ñохранён)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Файл не может быть Ñохранен в кодировке «%s» как указано в наÑтройках " "перевода.\n" "\n" "ВмеÑто Ñтого он был Ñохранён в UTF-8 и, ÑоответÑтвенно, были изменены " "наÑтройки." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "«%s» не ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым файлом POT." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Ðеожиданно отÑутÑтвует Ñодержимое в файле XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Сохранение в другом меÑте не поддерживаетÑÑ Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² XCLOC." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Ошибка при загрузке файла XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñ€Ð°Ð·Ð¼ÐµÑ‚ÐºÐ° в Ñтроке перевода." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Подключите Poedit к поддерживаемым облачным платформам локализации, чтобы " "легко Ñинхронизировать переведённые Ñ Ð½Ð¸Ð¼Ð¸." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Как работает Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð°Ñ ÑинхронизациÑ?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Ðккаунт" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(вход не выполнен)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Открыть облачный перевод" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Управление аккаунтами" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Проект:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Язык:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Войти в аккаунт" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Войти в аккаунт" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Ð’ вашем аккаунте нет проектов перевода." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "ЗагружаютÑÑ Ð¿Ð¾Ñледние переводы…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Войти в %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "СинхронизациÑ" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Идёт загрузка переводов в %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Загрузка переводов в %s не удалаÑÑŒ." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Ошибка Ñинхронизации" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Добавить" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Ðе авторизованы, пожалуйÑта войдите Ñнова." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Строчные проекты Crowdin не поддерживаютÑÑ." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Загрузка переводов отключена в Ñтом проекте." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Войти" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Войти" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Выйти" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Выйти" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Подробнее о Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin – Ñто онлайн-платформа Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð°Ð¼Ð¸ и инÑтрумент Ð´Ð»Ñ " "ÑовмеÑтного перевода. Мы Ñами иÑпользуем Crowdin Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð° Poedit на " "многие Ñзыки, и нам Ñто очень нравитÑÑ." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Ожидание авторизации…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Обновление информации о пользователе…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Войти в Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ Crowdin не удалаÑÑŒ." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Ошибка Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Выгрузка переводов…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Копировать" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Подробнее" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "Справка (&H)" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Файлы MO Ð½ÐµÐ»ÑŒÐ·Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ непоÑредÑтвенно в Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Ошибка при открытии файла" #: src/edapp.cpp:735 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 тоже обновитÑÑ." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "не удалÑть временные файлы (Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "обрабатывать Ð°Ð´Ñ€ÐµÑ poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "перейти к Ñлементу Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ номером Ñтроки" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Ðе удалоÑÑŒ подключитьÑÑ Ðº процеÑÑу Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Произошло непредвиденное иÑключение: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Выберите шаблон перевода" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "ÐедопуÑтимый файл" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Выберите файл перевода" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit — Ñто проÑтой в иÑпользовании редактор переводов." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Ð’ окно Poedit можно перетащить только один файл." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Файл «%s» не ÑвлÑетÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ перевода." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Файл «%s» не ÑущеÑтвует." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Проверка правопиÑÐ°Ð½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°, так как Ñловарь Ð´Ð»Ñ Ñзыка «%s» не " "уÑтановлен." #: src/edframe.cpp:871 msgid "Install" msgstr "УÑтановить" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Файл «%s» был изменён другим приложением." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Перезагрузить файл" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Ð’Ñ‹ хотите перезагрузить файл Ñ Ð´Ð¸Ñка? Ваши неÑохранённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Poedit " "будут потерÑны, еÑли вы Ñто Ñделаете." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Игнорировать" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Перезагрузить файл" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Этот файл был изменён. Ð’Ñ‹ желаете Ñохранить изменениÑ?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Сохранение изменений" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Ваши Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны, еÑли не Ñохранить их." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Сохранить" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ðе ÑохранÑть (&N)" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ðе ÑохранÑть" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "ИзменениÑ, внеÑённые другим приложением, будут потерÑны еÑли вы Ñохраните." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Отмена" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Сохранить вÑÑ‘ равно" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Сохранить вÑÑ‘ равно" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Сохранить как…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Компилировать в…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Скомпилированные файлы перевода" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "ЭкÑпорт в HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Файлы HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "ЭкÑпорт в HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Ðе удалоÑÑŒ обновить" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Открыть Ñправочный файл" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Обновить из файла POT (&P)…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Обновить из файла POT (&P)…" #: src/edframe.cpp:1834 #, c-format 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[3] "Ð’ переводе найдено %d проблем." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Результаты проверки" #: src/edframe.cpp:1842 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 "" "ЗапиÑи Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð¼Ð¸ были выделены в ÑпиÑке краÑным цветом. ЕÑли выбрать такую " "запиÑÑŒ, будут показаны подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± ошибке." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Файл был уÑпешно Ñохранён." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Файл был Ñохранён и Ñкомпилирован в формат MO. Ðо он может работать " "неправильно." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Файл был Ñохранён, но его не удалоÑÑŒ Ñкомпилировать в формат MO и " "иÑпользовать." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Файл был Ñкомпилирован в формат MO, но Ñкорее вÑего не будет правильно " "работать." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "" "Ðе удаётÑÑ Ñкомпилировать данный файл в формат MO Ð´Ð»Ñ Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐµÐ³Ð¾ " "иÑпользованиÑ." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Ðе найдено проблем Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð¾Ð¼." #: src/edframe.cpp:1894 #, 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] "Перевод готов к иÑпользованию, но %d запиÑÑŒ ещё не переведена." msgstr[1] "Перевод готов к иÑпользованию, но %d запиÑи ещё не переведены." msgstr[2] "Перевод готов к иÑпользованию, но %d запиÑей ещё не переведено." msgstr[3] "Перевод готов к иÑпользованию, но %d запиÑей ещё не переведено." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Перевод готов к иÑпользованию." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit автоматичеÑки иÑправил неверное Ñодержимое в файле «%s»." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Этот файл Ñодержал в Ñебе повторÑющиеÑÑ Ñлементы, которые недопуÑтимы в " "файлах PO и могли бы помешать его иÑпользованию. Poedit иÑправил проблему, " "но Ñледует проÑмотреть вÑе переводы, помеченные как требующие доработки, и " "иÑправить их при необходимоÑти." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Язык перевода не указан." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Выбор Ñзыка" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Задать Ñзык" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "ÐŸÑ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтупны, пока не выбран Ñзык перевода. Также не будут " "поддерживатьÑÑ Ñ„Ð¾Ñ€Ð¼Ñ‹ множеÑтвенного чиÑла и другие функции." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Язык перевода Ñовпадает Ñ Ð¸Ñходным Ñзыком." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "ИÑправить Ñзык" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "ИÑправить Ñзык" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Ð’ Ñтом файле еÑть запиÑи Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ð¼Ð¸ множеÑтвенного чиÑла, но нет заголовка " "Plural-Forms." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "ЗапиÑи в Ñтом файле имеют количеÑтво форм множеÑтвенного чиÑла, отличное от " "указанного в заголовке Plural-Forms" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Ðеобходимый заголовок Plural-Forms отÑутÑтвует." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Ошибка ÑинтакÑиÑа в заголовке Plural-Forms («%s»)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "ИÑправить заголовок" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Форма множеÑтвенного чиÑла, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð² файле, необычна Ð´Ð»Ñ Â«%s»." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Проверить" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Хотите иÑпользовать английÑкий Ñзык Ð´Ð»Ñ Ð¸Ñходного текÑта?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Этот файл иÑпользует идентификаторы вмеÑто иÑходного текÑта. Poedit может " "загрузить английÑкий текÑÑ‚ из файла «%s»." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Загрузить английÑкий" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Переведено: %d из %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "ОÑталоÑÑŒ: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d ошибка" msgstr[1] "%d ошибки" msgstr[2] "%d ошибок" msgstr[3] "%d ошибок" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d запиÑÑŒ" msgstr[1] "%d запиÑи" msgstr[2] "%d запиÑей" msgstr[3] "%d запиÑей" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (не Ñохранён)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (изменён)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Ðе удалоÑÑŒ обновить памÑть переводов: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Файл «%s» не может быть Ñохранён." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Удалить переводы, Ñовпадающие Ñ Ð¸Ñходным текÑтом" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Ð’Ñ‹ хотите удалить вÑе переводы, которые идентичны иÑходному текÑту?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Это дейÑтвие удалит вÑе переводы, Ñовпадающие Ñ Ð¸Ñходным текÑтом. Это " "невозможно отменить." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "ОÑтавить" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Удалить" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "ОчиÑтить удалённые переводы" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "ДейÑтвительно удалить вÑе неиÑпользуемые переводы?" #: src/edframe.cpp:2879 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 "" "ЕÑли продолжить, то вÑе переводы, помеченные как удалённые, будут " "безвозвратно удалены. ЕÑли они будут повторно добавлены в будущем, их " "придётÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾ переводить." #: src/edframe.cpp:2883 msgid "Purge" msgstr "ОчиÑтить" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Копировать иÑходный текÑÑ‚" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Копировать иÑходный текÑÑ‚" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Удалить перевод" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Удалить перевод" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Править комментарий" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Править комментарий" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Ð’Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Ð’Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Скрыть боковую панель" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Показать боковую панель" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Скрыть Ñтроку ÑоÑтоÑниÑ" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Показать Ñтроку ÑоÑтоÑниÑ" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Длина Ñтроки в Ñимволах: перевод | иÑточник" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Длина Ñтроки в Ñимволах" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "ИÑходный текÑÑ‚" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "ЕдинÑтвенное" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "МножеÑтвенное" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Перевод" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Черновой перевод" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Требует проверки" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Требует проверки" #: src/editing_area.cpp:566 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 из шаблона." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Создать новый перевод" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Сделать новый перевод из файла POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ИД иÑходного текÑта" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Ð’ÑÑ‘" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Форма %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Форма %i (не иÑпользуетÑÑ)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Ðоль" #: src/editing_area.cpp:788 msgid "One" msgstr "Один" #: src/editing_area.cpp:790 msgid "Two" msgstr "Два" #: src/editing_area.cpp:804 msgid "Other" msgstr "Другое" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "КонтекÑÑ‚ Ñтроки: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Идентификатор Ñтроки: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Формат %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Формат %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Перевод — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ИД" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "ИÑходный текÑÑ‚ — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "неизвеÑтный Ñзык" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Ошибка Ñети: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Ðе удалоÑÑŒ объединить каталоги gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Открыть в редакторе" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Открыть в редакторе" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "Ð’ файле нет информации о вхождениÑÑ… Ñтой Ñтроки в иÑходный код." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Ðет Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± иÑпользовании" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d вхождение кода" msgstr[1] "%d Ð²Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°" msgstr[2] "%d вхождений кода" msgstr[3] "%d вхождений кода" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "ИÑходный код не найден" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit не может показать иÑходный код, в котором иÑпользуетÑÑ Ñтрока, потому " "что файл либо недоÑтупен в указанном меÑте, либо Ñто ÑимволичеÑÐºÐ°Ñ ÑÑылка, " "ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ указывает на наÑтоÑщий файл." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Ðе удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файл" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit не Ñмог открыть файл «%s»." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Ðайти" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Заменить" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "ÐаÑтройки" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ðе учитывать региÑтр" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "ИÑкать по кругу" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Только полные Ñлова" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "ИÑкать в иÑходных текÑтах" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "ИÑкать в переводах" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "ИÑкать в комментариÑÑ…" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Заменить вÑе (&A)" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Заменить вÑе (&A)" #: src/findframe.cpp:150 msgid "&Replace" msgstr "Заменить (&R)" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< Пред. (&P)" #: src/findframe.cpp:152 msgid "&Next >" msgstr "След. > (&N)" #: src/findframe.cpp:235 msgid "String to find" msgstr "ИÑÐºÐ¾Ð¼Ð°Ñ Ñтрока" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Строка замены" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "предупреждение: " #: src/gexecute.cpp:171 msgid "error: " msgstr "ошибка: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Ðазвание Ñзыка или код" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Язык перевода" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Язык перевода:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Ð’Ñе Ñтроки" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Ðе удалоÑÑŒ Ñкачать информацию о проекте Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Произошла ошибка при загрузке переводов на Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Проекты" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Узнать больше о %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy - Ñто выÑоко Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸, " "позволÑÑŽÑ‰Ð°Ñ Ð»ÑŽÐ±Ð¾Ð¼Ñƒ человеку легко переводить Ñвои продукты и контент на " "неÑколько Ñзыков." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Добавить проект" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Добавить проект" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit — диÑпетчер папок" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Править…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Создать новый проект переводов" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Удалить проект" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Править проект" #: src/manager.cpp:176 msgid "Update all" msgstr "Обновить вÑÑ‘" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Обновить вÑе каталоги в Ñтом проекте" #: src/manager.cpp:378 msgid "Total" msgstr "Ð’Ñего" #: src/manager.cpp:379 msgid "Untrans" msgstr "Ðе переведено" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Требует проверки" #: src/manager.cpp:381 msgid "Errors" msgstr "Ошибки" #: src/manager.cpp:382 msgid "Last modified" msgstr "ПоÑледнее изменение" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Выберите папку" #: src/manager.cpp:433 msgid "Directories:" msgstr "Папки:" #: src/manager.cpp:503 msgid "" msgstr "<без имени>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Ð’Ñ‹ дейÑтвительно хотите удалить проект «%s»?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Удалить проект" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Удаление проекта не приведёт к удалению файлов перевода." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Подтверждение" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Обновить вÑе каталоги в Ñтом проекте?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "ВыполнÑет обновление из иÑходного кода вÑех файлов проекта." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Обновление каталогов проектов" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Проверить наличие обновлений…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "ДиÑпетчер папок" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "ÐаÑтройки (&P)…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Правка" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Отменить" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Повторить" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Стиль ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ вÑтавки" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Удалить" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Проверка правопиÑаниÑ" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Показывать ошибки правопиÑаниÑ" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Проверить документ" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "ПроверÑть правопиÑание во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð²Ð¾Ð´Ð°" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "ПроверÑть также и грамматику" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "ÐвтоматичеÑки иÑправлÑть ошибки правопиÑаниÑ" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Замены" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Показывать варианты замены" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Интеллектуальное копирование и вÑтавка" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Интеллектуальные кавычки" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Ð˜Ð½Ñ‚ÐµÐ»Ð»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ñ€Ð°ÑÑтановка переноÑов" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Интеллектуальные ÑÑылки" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Замена текÑта" #: src/menus.cpp:230 msgid "Transformations" msgstr "ПреобразованиÑ" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "ПропиÑные" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Строчные" #: src/menus.cpp:234 msgid "Capitalize" msgstr "С заглавной буквы" #: src/menus.cpp:237 msgid "Speech" msgstr "Речь" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Ðачать озвучивание" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "ОÑтановить озвучивание" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "Вид (&V)" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Показать панель инÑтрументов" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "ÐаÑтроить панель инÑтрументов…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Перейти в полноÑкранный режим" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Окно" #: src/menus.cpp:263 msgid "Minimize" msgstr "Свернуть" #: src/menus.cpp:264 msgid "Zoom" msgstr "МаÑштаб" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Добро пожаловать в Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "ПомеÑтить вÑе окна на передний план" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ переводчике" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "ИмÑ:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Ваше имÑ" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð°:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "ваша_почта@пример.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ваше Ð¸Ð¼Ñ Ð¸ почта будут иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ при указании поÑледнего " "переводчика в заголовках файлов GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Правка" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "ÐвтоматичеÑки компилировать файл MO при Ñохранении" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "ПроверÑть правопиÑание" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Ð’Ñегда переключатьÑÑ Ð½Ð° поле ввода текÑта" #: src/prefsdlg.cpp:211 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 "" "Ðе фокуÑироватьÑÑ Ð½Ð° ÑпиÑке Ñтрок. ЕÑли включено, Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ " "клавиатуры необходимо нажимать Ctrl+Ñтрелки, но при Ñтом можно вводить текÑÑ‚ " "немедленно, без Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð¾ÐºÑƒÑа клавишей Tab." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Внешний вид" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "ИÑпользовать наÑтраиваемый шрифт Ð´Ð»Ñ ÑпиÑка:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Шрифт полей ввода:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Изменить Ñзык интерфейÑа" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(требует Windows 8 или новее)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Общее" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "ИÑпользовать памÑть переводов" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Управление…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "При обновлении из иÑходного кода" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "подбирать похожий перевод внутри файла" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "переводить начерно из памÑти переводов" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit может попытатьÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ новые Ñтроки только предыдущими переводами " "из Ñтого файла либо из вашей памÑти переводов. ИÑпользование памÑти перевода " "будет не очень Ñффективным, еÑли она почти пуÑта, но будет улучшатьÑÑ Ð¿Ð¾ " "мере Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² неё переводов." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Сохранённых переводов:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Размер базы данных на диÑке:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Импорт файлов перевода…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Импорт файлов перевода…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Импорт из TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Импорт из TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "ЭкÑпорт в TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "ЭкÑпорт в TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "СброÑ" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Выберите файлы переводов Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Выберите TMX-файлы Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX-файлы" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Импорт переводов…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Ðе удалоÑÑŒ импортировать памÑть переводов." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Импорт из «%s»…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s перевод импортирован." msgstr[1] "%s перевода импортировано." msgstr[2] "%s переводов импортировано." msgstr[3] "%s переводов импортировано." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "ЭкÑпортировать как…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "ЭкÑпорт переводов…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Ðе удалоÑÑŒ ÑкÑпортировать памÑть перевода в «%s»." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "ОчиÑтить памÑть переводов" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Ð’Ñ‹ уверены, что хотите очиÑтить памÑть переводов?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "ОчиÑтка памÑти переводов необратимо удалит вÑе переводы, хранÑщиеÑÑ Ð² ней. " "Ð’Ñ‹ не Ñможете отменить Ñту операцию." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "ПП" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "ПамÑть переводов" #: src/prefsdlg.cpp:730 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 "" "ЭкÑтракторы иÑпользуютÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка переводимых Ñтрок в файлах иÑходного " "кода и извлекают их так, чтобы их можно было перевеÑти." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "ПользовательÑкие ÑкÑтракторы:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "ПользовательÑкие ÑкÑтракторы:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Поддерживает вÑе Ñзыки программированиÑ, которые раÑпознают инÑтрументы GNU " "gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript и другие)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Удалить ÑкÑтрактор" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Ð’Ñ‹ уверены, что хотите удалить ÑкÑтрактор «%s»?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "ЭкÑтракторы" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Ðккаунты" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "ÐвтоматичеÑки проверÑть наличие обновлений" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Ð’ÐºÐ»ÑŽÑ‡Ð°Ñ Ð±ÐµÑ‚Ð°-верÑии" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Бета-верÑии Ñодержат новейшие функции и улучшениÑ, но могут быть менее " "Ñтабильными." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "ОбновлениÑ" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Эти наÑтройки влиÑÑŽÑ‚ на внутреннее форматирование файлов PO. Измените их, " "еÑли у Ð²Ð°Ñ ÐµÑть оÑобые требованиÑ, например, еÑли вы иÑпользуете ÑиÑтему " "ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð²ÐµÑ€Ñий." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "ÐžÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ñтрок:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (рекомендуетÑÑ)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "ПереноÑ:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "СохранÑть форматирование ÑущеÑтвующих файлов" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Дополнительно" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "ÐаÑтройки" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Подготовка Ñтрок…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Черновой перевод из памÑти переводов…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Ðачерно переведена %u Ñтрока" msgstr[1] "Ðачерно переведены %u Ñтроки" msgstr[2] "Ðачерно переведено %u Ñтрок" msgstr[3] "Ðачерно переведено %u Ñтрок" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Выполнение чернового перевода…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d Ñтрока была заполнена предварительным переводом." msgstr[1] "%d Ñтроки были заполнены предварительным переводом." msgstr[2] "%d Ñтрок были заполнены предварительным переводом." msgstr[3] "%d Ñтрок были заполнены предварительным переводом." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Переводы были отмечены как требующие доработки. Проверьте их правильноÑть." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Точные ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¸Ð· памÑти переводов" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Приблизительные ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¸Ð· памÑти переводов" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "" "Строки, которые можно было бы заполнить предварительным переводом, " "отÑутÑтвуют." #: src/pretranslate.cpp:218 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 " "Ñоберёт доÑтаточно данных из файлов, которые вы перевели вручную." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Ðевозможно предварительно перевеÑти без иÑходного текÑта." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Черновой перевод" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Ð”Ð»Ñ Ñ‡ÐµÑ€Ð½Ð¾Ð²Ð¾Ð³Ð¾ перевода требуетÑÑ, чтобы был доÑтупен иÑходный текÑÑ‚. Эта " "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ будет работать, еÑли иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ идентификаторы без " "фактичеÑкого текÑта." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Ðевозможно предварительно перевеÑти Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтного Ñзыка." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Черновой перевод требует Ð·Ð½Ð°Ð½Ð¸Ñ Ñзыка иÑходного текÑта. Poedit не Ñмог " "обнаружить его в Ñтом файле." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Только при точном Ñовпадении" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "По умолчанию не полноÑтью Ñовпадающие результаты также будут заполнены и " "помечены как требующие доработки. Отметьте Ñтот вариант, чтобы заполнÑть " "только полные ÑовпадениÑ." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Ðе помечать полные ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ ÐºÐ°Ðº требующие доработки" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Включите Ñто только еÑли вы уверены в качеÑтве вашей памÑти переводов. По " "умолчанию вÑе ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¸Ð· памÑти переводов отмечаютÑÑ ÐºÐ°Ðº требующие " "доработки и подлежат проверке перед иÑпользованием." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Черновой перевод автоматичеÑки находит в памÑти переводов точные или " "неточные ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñтрок без перевода и заполнÑет их переводами." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Ошибка: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "Произошла %d ошибка:" msgstr[1] "Произошло %d ошибки:" msgstr[2] "Произошло %d ошибок:" msgstr[3] "Произошло %d ошибок:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Произошла ошибка." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "Произошла %d ошибка." msgstr[1] "Произошло %d ошибки." msgstr[2] "Произошло %d ошибок." msgstr[3] "Произошло %d ошибок." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "ОтменÑетÑÑ…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Перетащите Ñюда папки или файлы" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Перетащите Ñюда папки или файлы" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Добавить папки…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Добавить папки…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Добавить файлы…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Добавить файлы…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Добавить по шаблону…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Добавить по шаблону…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Показать в Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Показать в проводнике" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Показать в папке" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Папки" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "ИÑключенные пути" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "РаÑширенные наÑтройки извлечениÑ" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Извлекать пометки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ñ‡Ð¸ÐºÐ¾Ð²:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Из комментариев, начинающихÑÑ Ñ:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Ð’Ñе комментарии" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Дополнительные флаги xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Дополнительные ключевые Ñлова" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Ðазвание проекта перевода длÑ" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ и Ð°Ð´Ñ€ÐµÑ Ñлектронной почты или URL-адреÑ" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "например, nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (желательна)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "Сначала нужно Ñохранить файл. До Ñтого данный раздел Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "ПравильноÑть Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÐµÐ¹" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Ð’ переводе отÑутÑтвует заполнитель «%s»." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Лишний заполнитель «%s», которого нет в иÑходном текÑте." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Переводы форм множеÑтвенного чиÑла" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Ðе вÑе формы множеÑтвенного чиÑла переведены." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "ÐеÑоответÑтвие верхнего/нижнего региÑтра" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Перевод должен начинатьÑÑ ÐºÐ°Ðº предложение." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Перевод должен начинатьÑÑ Ñ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¾Ð¹ буквы." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "ÐеÑоглаÑованные пробелы" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Этот перевод не начинаетÑÑ Ñ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð°." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Перевод начинаетÑÑ Ñ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð°, но иÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñтрока - нет." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Ð’ переводе пропущена Ð½Ð¾Ð²Ð°Ñ Ñтрока в конце." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Перевод заканчиваетÑÑ Ð½Ð¾Ð²Ð¾Ð¹ Ñтрокой, но иÑходный текÑÑ‚ - нет." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Ð’ переводе пропущен пробел в конце." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Перевод заканчиваетÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð¾Ð¼, но иÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñтрока - нет." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Проверки пунктуации" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Перевод должен заканчиватьÑÑ Ð½Ð° «%s»." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Перевод не должен заканчиватьÑÑ Ð½Ð° «%s»." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "Перевод заканчиваетÑÑ Ð½Ð° «%s», но иÑходный текÑÑ‚ заканчиваетÑÑ Ð½Ð° «%s»." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Облако" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "ОчиÑтить меню" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "ОчиÑтить меню" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Комментарий:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Обновить" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Удалить" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Удалить комментарий" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Правка проекта" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Ðазвание проекта:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Обзор" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Добавить папку в ÑпиÑок" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "ОК" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Файл" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "Создать (&N)…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Создать из файла POT/PO (&P)…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Создать из файла POT/PO (&P)…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "Открыть (&O)…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Ðедавно открытые" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Ðедавно открытые" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Открыть облачный перевод…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Открыть облачный перевод…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Ðачальное окно (&S)" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Ðачальное окно (&S)" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "ДиÑпетчер папок (&M)" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "ДиÑпетчер папок (&M)" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "Закрыть (&C)" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "Сохранить (&S)" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Сохранить как (&A)…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Сохранить как (&A)…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Компилировать в формат MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "ЭкÑпорт в HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Проверить наличие обновлений…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "ÐаÑтройки…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "ÐаÑтройки (&P)" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "Выход (&X)" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Выход" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Копировать форму единÑтвенного чиÑла" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Копировать форму единÑтвенного чиÑла" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Перевод требует проверки (&W)" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Перевод требует проверки (&W)" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Править комментарий (&C)" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Править комментарий (&C)" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "ПредложениÑ" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "Ðайти (&F)…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Заменить…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Далее" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Ðазад" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Ðайти и заменить…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Далее" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Ðазад" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Показать идентификатор Ñтроки (&I)" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Показать идентификатор Ñтроки (&I)" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Показать предупреждениÑ" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Показать предупреждениÑ" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "УпорÑдочивать как в файле (&F)" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "УпорÑдочивать как в файле (&F)" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "УпорÑдочивать по иÑходному текÑту (&S)" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "УпорÑдочивать по иÑходному текÑту (&S)" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "УпорÑдочивать по переводу (&T)" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "УпорÑдочивать по переводу (&T)" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "Группировать по контекÑту (&G)" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "Группировать по контекÑту (&G)" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Показывать запиÑи Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð¼Ð¸ в начале" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Показывать запиÑи Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð¼Ð¸ в начале" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Показать непереведённые запиÑи в начале (&U)" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Показать непереведённые запиÑи в начале (&U)" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "Показать Ð²Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð° (&S)" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "Показать Ð²Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð° (&S)" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Показать боковую панель" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Показать Ñтроку ÑоÑтоÑниÑ" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "Перевод (&T)" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "Обновить из иÑходного кода (&U)" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "Обновить из иÑходного кода (&U)" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Синхронизировать Ñ Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Черновой перевод (&T)…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "Проверить перевод (&V)" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "Проверить перевод (&V)" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Удалить переводы, Ñовпадающие Ñ Ð¸Ñходным текÑтом" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "ОчиÑтить удалённые переводы (&P)" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "ОчиÑтить удалённые переводы (&P)" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "СвойÑтва (&P)…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Перейти" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "Закончить и перейти далее (&D)" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "Закончить и перейти далее (&D)" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Предыдущий отредактированный" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Предыдущий отредактированный" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Предыдущий перевод" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Предыдущий перевод (&P)" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Следующий перевод (&N)" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Следующий перевод" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Предыдущий незаконченный (&R)" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Предыдущий незаконченный (&R)" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Следующий незаконченный (&X)" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Следующий незаконченный (&X)" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° множеÑтвенного чиÑла" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° множеÑтвенного чиÑла" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° множеÑтвенного чиÑла" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° множеÑтвенного чиÑла" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Справка в интернете (&O)" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Справка в интернете (&O)" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "РуководÑтво по GNU gettext (&G)" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "РуководÑтво по GNU gettext (&G)" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "О программе Poedit (&A)" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&О программе" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "ÐаÑтройка ÑкÑтрактора" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "" "СпиÑок раÑширений, разделённых точкой Ñ Ð·Ð°Ð¿Ñтой (например, *.cpp; *.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Вызов:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Команда Ð´Ð»Ñ Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð°:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Эта команда запуÑкает ÑкÑтрактор.\n" "%o означает название выходного файла, %K — ÑпиÑок\n" "ключевых Ñлов, %F — ÑпиÑок входных файлов,\n" "%C — кодировку (Ñм. ниже)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Пункт в ÑпиÑке ключевых Ñлов:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Это будет добавлено в командную Ñтроку Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ключевого Ñлова. %k " "означает ключевое Ñлово." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Пункт в ÑпиÑке входных файлов:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Это будет добавлено в командную Ñтроку Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ входного файла. %f " "означает название файла." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Кодировка иÑходного кода:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Это будет добавлено в командную Ñтроку,\n" "только еÑли была указана кодировка иÑходного кода. %c означает кодировку." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "СвойÑтва перевода" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Ðазвание и верÑÐ¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Команда переводчиков:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Формы множеÑтвенного чиÑла:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "ИÑпользование правила по умолчанию Ð´Ð»Ñ Ñтого Ñзыка" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "ПользовательÑкое выражение" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Узнать о формах множеÑтвенного чиÑла" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Кодировка:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "РаÑширенные наÑтройки извлечениÑ…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "РаÑширенные наÑтройки извлечениÑ…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "СвойÑтва перевода" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Папки Ñ Ð¸Ñходными файлами" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Папки Ñ Ð¸Ñходными файлами" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Извлекать текÑÑ‚ из иÑходных файлов в Ñледующих папках:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Базовый путь:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Ключевые Ñлова иÑходных файлов" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Ключевые Ñлова иÑходных файлов" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "ИÑкать переводимые Ñтроки в иÑходных файлах по Ñтим ключевым Ñловам (именам " "функций):" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" "Также иÑпользовать ключевые Ñлова по умолчанию Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ñ… Ñзыков" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Подробнее о ключевых Ñловах gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Открыть файл" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Сохранить файл" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Проверить" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Проверить наличие ошибок в переводе" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Обновить из кода" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Обновить из кода" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Обновить из иÑходного кода" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Ð‘Ð¾ÐºÐ¾Ð²Ð°Ñ Ð¿Ð°Ð½ÐµÐ»ÑŒ" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Показать или Ñкрыть боковую панель" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Предыдущий иÑходный текÑÑ‚" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Старый иÑходный текÑÑ‚ (до обновлениÑ), которому ÑоответÑтвует неточный " "перевод." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "ÐŸÑ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ñ‡Ð¸ÐºÐ¾Ð²" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Комментарий" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Добавить комментарий" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Добавить комментарий" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Удалить из памÑти перевода" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Удалить из памÑти перевода" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Предлагаемые варианты перевода" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Совпадений не найдено" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Совпадений не найдено" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Эта Ñтрока была найдена в памÑти переводов Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Ð”Ð»Ñ Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ перевода нужно, чтобы был доÑтупен иÑходный текÑÑ‚. Эта " "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ будет работать, еÑли иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ идентификаторы без " "текÑта." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "ПереводчеÑкие переводы требуют, чтобы иÑходный текÑÑ‚ был извеÑтен. Poedit не " "Ñмог обнаружить его в Ñтом файле." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Ðе удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ программу: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Ðеверный формат TMX-файла." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "База памÑти переводов повреждена: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Ошибка памÑти перевода: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(ИÑпользовать Ñзык по умолчанию)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Выбор Ñзыка" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Выберите предпочитаемый Ñзык" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Чтобы Ñто изменение вÑтупило в Ñилу, необходимо перезапуÑтить Poedit." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Ðе удаётÑÑ Ñоздать папку Ð´Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… файлов." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Перевод отÑутÑтвует. Это Ñтранно." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Переводимые запиÑи не добавлÑÑŽÑ‚ÑÑ Ð² ÑиÑтему Gettext вручную, а автоматичеÑки " "извлекаютÑÑ Ð¸Ð· иÑходного кода. Таким образом, они оÑтаютÑÑ Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ð¼Ð¸ и " "точными. Переводчики обычно иÑпользуют файлы шаблонов PO (POT), " "подготовленные Ð´Ð»Ñ Ð½Ð¸Ñ… разработчиком." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Подробнее о GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Самый проÑтой ÑпоÑоб заполнить Ñтот файл переводами, Ñто обновить его из POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Обновить из POT-файла" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Извлечь переводимые Ñтроки из имеющегоÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° POT." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Переводимые Ñтроки можно также извлечь непоÑредÑтвенно из иÑходного кода:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Извлечь из иÑходного кода" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "ÐаÑтройте извлечение иÑходного кода в разделе «СвойÑтва»." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "ВерÑÐ¸Ñ %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Создать новый перевод" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Создать новый перевод из шаблона POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "ПроÑмотр файлов" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Открыть и править файлы перевода." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "ПеревеÑти проект Crowdin" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Переводите ÑовмеÑтно Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ людьми в Ñети." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Ðедавние файлы" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "СинхронизациÑ" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Синхронизировать перевод Ñ Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "О программе %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "ÐаÑтройки %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "О программе %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "СервиÑÑ‹" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Скрыть %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Скрыть оÑтальное" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Показать вÑÑ‘" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Выйти из %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "ÐаÑтройки…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "ÐаÑтройки..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "ÐаÑтройки..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "Применить (&A)" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "ПринÑть" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "Ðазад (&B)" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Ðазад" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "Отмена (&C)" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "ОчиÑтить (&C)" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "ЯÑно" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Копировать" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Вырезать (&T)" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Вырезать" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Править" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "Выход (&Q)" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Помощь" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "Создать (&N)" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Создать" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "Ðет (&N)" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ðет" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "ОК (&O)" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Открыть…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "Открыть (&O)..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Открыть..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Ð’Ñтавить" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Ð’Ñтавить" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "ÐаÑтройки" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Повторить" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Обновить" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "Сохранить как (&S)" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Сохранить как" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Выбрать вÑе (&A)" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Выбрать вÑе" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Отменить" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "Да (&Y)" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Да" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Стрелка вверх" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Стрелка вниз" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Влево" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Вправо" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Предупреждение: " poedit-3.6.3/locales/ar.po0000644000175100001660000030311215011674362011062 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Arabic\n" "Language: ar_SA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: ar\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Ø¥Ø®ÙØ§Ø¡ رسالة التنبيه هذه" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "عدم العرض مجدّدًا" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "عدم العرض مجدّدًا" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "ملخص التّحديث" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "أغلق" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "ملÙÙ‘" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "السلاسل الجديدة" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "جاري تجميع ملÙّات المصدر…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" msgstr[4] "" msgstr[5] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "ÙØ´Ù„ تحميل المل٠مع الترجمات المستخرجة." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "ÙÙŠ: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "الكود المصدريّ غير متوÙّر." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "تعذر تحديث الترجمات من رمز المصدر، لأنه لم يتم العثور على رمز ÙÙŠ الموقع " "المحدد ÙÙŠ خصائص الملÙ." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "الإذن مرÙوض." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "ليس لديك الصلاحية لقراءة Ù…Ù„ÙØ§Øª التعليمات البرمجية المصدر من الموقع المحدد ÙÙŠ " "خصائص الملÙ." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "إذا كنت قد منعت من الوصول إلى Ù…Ù„ÙØ§ØªÙƒØŒ يمكنك السماح بذلك ÙÙŠ إعدادات النظام > " "الخصوصية والأمان > Ø§Ù„Ù…Ù„ÙØ§Øª والمجلدات." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "إذا كنت قد منعت من الوصول إلى Ù…Ù„ÙØ§ØªÙƒØŒ يمكنك السماح به ÙÙŠ ØªÙØ¶ÙŠÙ„ات النظام > " "الحماية والخصوصية > الخصوصية > Ø§Ù„Ù…Ù„ÙØ§Øª والمجلدات." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "لا يمكن ÙØªØ­ المل٠\"%s\"." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "تحديث الترجمات" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "جاري دمج Ø§Ù„Ø§Ø®ØªÙ„Ø§ÙØ§Øªâ€¦" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" msgstr[4] "" msgstr[5] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" msgstr[4] "" msgstr[5] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "التّرويسة ÙØ§Ø³Ø¯Ø©: â€%s“" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "ملÙّات PO ترجميّة" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "ملÙّات POT قالبيّة" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Ù…Ù„ÙØ§Øª ترجمة XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Ù…Ù„ÙØ§Øª ترجمة JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Ù…Ù„ÙØ§Øª ترجمة Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "كلّ ملÙّات التّرجمة" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "المل٠بصيغة لم يتعر٠عليها Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "مل٠JSON هذا ليس مل٠ترجمات ولا يمكن تعديله ÙÙŠ Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "ÙØ´Ù„ قراءة محتوى المل٠مع الخطأ التالي: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "الملÙÙ‘ â€%s“ للقراءة Ùقط ولا يمكن Ø­ÙØ¸Ù‡.\n" "رجاء Ø§Ø­ÙØ¸Ù‡ باسم مختلÙ." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "تعذّر Ø­ÙØ¸ الملÙÙ‘ %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "لقطات شاشة:" #: src/catalog_po.cpp:134 #, 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[1] "%i سطر المل٠““%sâ€â€ لم يتم تحميله بشكل صحيح." msgstr[2] "%i سطر المل٠““%sâ€â€ لم يتم تحميله بشكل صحيح." msgstr[3] "%i سطر المل٠““%sâ€â€ لم يتم تحميله بشكل صحيح." msgstr[4] "%i سطر المل٠““%sâ€â€ لم يتم تحميله بشكل صحيح." msgstr[5] "%i آسطر المل٠““%sâ€â€ لم يتم تحميله بشكل صحيح." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "السطر %d من المل٠“%s†معطوب (بيانات %s غير صالحة)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "مل٠PO المكسور: نموذج وحيد يستخدم مع msgid_multiural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "ملÙÙ‘ PO معطوب: Ø§Ø³ØªÙØ®Ø¯Ù…ت صيغة الجمع msgstr دون msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "تعذر تحميل Ø§Ù„Ù…Ù„ÙØŒ ربما تالÙ." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "حدثت أخطاء عند تحميل الملÙ. قد تكون بعض البيانات Ù…Ùقودة أو معطوبة نتيجة لذلك." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "حدثت مشكلة أثناء تنسيق الملÙÙ‘ تنسيقًا جميلًا (لكنّه Ø­ÙÙÙØ¸ Ø­ÙØ¸Ù‹Ø§ صحيحًا)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "تعذّر Ø­ÙØ¸ المÙÙ„ÙÙ‘ بطقم المحار٠\"%s\" كما هو محدّد ÙÙŠ إعدادات الترجمة.\n" "\n" "Ø­ÙÙÙØ¸ الملÙÙ‘ بترميز UTF-8 بدلًا من ذلك ÙˆØ¹ÙØ¯Ù‘Ù„ الإعداد ÙˆÙقًا لذلك." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "خطأ أثناء Ø­ÙØ¸ الملÙ" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "الملÙÙ‘ â€%s“ ليس ملÙÙ‘ POT صالح." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "خطأ ÙÙŠ تحميل مل٠XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "إصدار غير مدعوم (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "خطأ ÙÙŠ الترميز ÙÙŠ جملة الترجمة." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "توصيل Poedit مع منصات التوطين السحابية المدعومة لمزامنة الترجمات التي تتم " "إدارتها عليها بسلاسة." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "كيÙية عمل المزامنة السحابية؟" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "حساب" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(لم يتم تسجيل الدخول)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "ÙØªØ­ الترجمة السحابية" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "إدارة الحسابات" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "المشروع:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "اللّغة:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "تسجيل الدخول إلى حساب سحابي" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "تسجيل الدخول إلى حساب سحابي" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "لا توجد مشروعات ترجمة مدرجة ÙÙŠ حسابك." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "ينزّل أحدث التّرجمات…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "تسجيل الدخول إلى %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "جار٠المزامنة" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "تحميل الترجمات إلى %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "ÙØ´Ù„ تحميل الترجمات إلى %s." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "خطأ ÙÙŠ المزامنة" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Ø¥Ø¶Ø§ÙØ©" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "خطأ Crowdin غير معروÙ." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "غير مستوثق، رجاء Ù„ÙØ¬ ثانية." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Ø¹ÙØ·Ùّل تنزيل التّرجمات لهذا المشروع." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Ù„ÙØ¬" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Ù„ÙØ¬" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "اخرج" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "اخرج" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "اطّلع على المزيد عن «كراودÙن»" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "ينتظر الاستيثاق…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "يحدّث معلومات المستخدم…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Ù„ÙØ¬ إلى «كراودÙن»" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "ÙØ´Ù„ت المزامنة مع «كراودÙن»." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "خطأ «كراودÙن»" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "ÙŠØ±ÙØ¹ التّرجمات…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "ا&نسخ" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "اطّلع على المزيد" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "Ù…&ساعدة" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "لا يمكن تحرير ملÙّات MO مباشرةً ÙÙŠ «محرÙّر Po»." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "خطأ ÙÙŠ ÙØªØ­ الملÙÙ‘" #: src/edapp.cpp:735 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 " "كذلك." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "لا تحذ٠الملÙّات المؤقّتة (للتّنقيح)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "تعامل مع معرّ٠poedit://‎" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "انتقل إلى العنصر ÙÙŠ رقم السطر المعين" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "ÙØ´Ù„ الاتّصال مع عمليّة Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "حدث خطأ لا يمكن التّعامل معه: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "حدد قالب الترجمة" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "الملÙÙ‘ غير صالح" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "حدد مل٠الترجمة" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "«محرÙّر Po» هو محرّر ترجمات سهل الاستخدام." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "لا يمكنك إسقاط أكثر من مل٠واحد ÙÙŠ Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "المل٠\"%s\" ليس مل٠ترجمة. " #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "الملÙÙ‘ â€%s“ غير موجود." #: src/edframe.cpp:455 msgid "Poedit" msgstr "محرّر Po" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "تدقيق الإملاء معطّل لأنّ قاموس %s غير مثبّت." #: src/edframe.cpp:871 msgid "Install" msgstr "ثبّت" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "تم تغيير المل٠\"%s\" بواسطة تطبيق آخر." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "إعادة تحميل الملÙ" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "هل تريد إعادة تحميل المل٠من القرص؟ سيتم Ùقدان تعديلاتك غير المحÙوظة ÙÙŠ " "«محرّر Po» إذا ÙØ¹Ù„ت ذلك." #: src/edframe.cpp:968 msgid "Ignore" msgstr "تجاهل" #: src/edframe.cpp:968 msgid "Reload File" msgstr "إعادة تحميل الملÙ" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "تم تعديل الملÙ. هل تريد Ø­ÙØ¸ التغييرات؟" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Ø­ÙØ¸ التغييرات " #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "ستÙقد تعديلاتك إن لم ØªØ­ÙØ¸Ù‡Ø§." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Ø­ÙØ¸" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "عدم Ø§Ù„Ø­ÙØ¸" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "عدم Ø§Ù„Ø­ÙØ¸" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "التغييرات التي أجرتها التطبيقات الأخرى سو٠تضيع إذا قمت Ø¨Ø§Ù„Ø­ÙØ¸." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "ألغÙ" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Ø­ÙØ¸ على أي حال" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Ø­ÙØ¸ على أي حال" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Ø­ÙØ¸ باسم…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "صرّ٠إلى…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "ملÙّات ترجمة Ù…ØµØ±Ù‘ÙØ©" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "صدّر إلى HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "ملÙّات HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "ÙØ´Ù„ التّحديث" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "تحديث من مل٠&POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "تحديث من مل٠&POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "لم ÙŠÙØ¹Ø«Ø± على مشاكل مع التّرجمات." msgstr[1] "Ø¹ÙØ«Ø± على مشكلة واحدة مع التّرجمات." msgstr[2] "Ø¹ÙØ«Ø± على مشكلتين مع التّرجمات." msgstr[3] "Ø¹ÙØ«Ø± على %d مشاكل مع التّرجمات." msgstr[4] "Ø¹ÙØ«Ø± على %d مشكلة مع التّرجمات." msgstr[5] "Ø¹ÙØ«Ø± على %d مشكلة مع التّرجمات." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "نتائج Ø§Ù„ÙØ­Øµ" #: src/edframe.cpp:1842 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 "" "المدخلات بأخطاء عÙلّمت بالأحمر ÙÙŠ القائمة. ستظهر ØªÙØ§ØµÙŠÙ„ الخطأ عندما تختار " "مدخلة ما." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Ø­ÙÙØ¸ الملÙÙ‘ Ø­ÙØ¸Ù‹Ø§ آمنًا." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "Ø­ÙÙØ¸ الملÙÙ‘ Ø­ÙØ¸Ù‹Ø§ آمنًا ÙˆØµÙØ±Ù‘٠إلى نسق MOØŒ لكنّه قد لا يعمل عملًا صحيحًا." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "Ø­ÙÙØ¸ الملÙÙ‘ Ø­ÙØ¸Ù‹Ø§ آمنًا، لكن ÙØ´Ù„ تصريÙÙ‡ إلى نسق MO واستخدامه." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "ØµÙØ±Ù‘٠الملÙÙ‘ إلى نسق MO لكنّ ربما لن يعمل عملًا صحيحًا." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "تعذّر تصري٠الملÙÙ‘ إلى نسق MO Ùلا يمكن استخدامه." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "لم ÙŠÙØ¹Ø«Ø± على مشاكل مع التّرجمة." #: src/edframe.cpp:1894 #, 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] "التّرجمة جاهزة لاستخدامها، ولا توجد مدخلات بحاجة إلى ترجمة." msgstr[1] "التّرجمة جاهزة لاستخدامها، لكن توجد مدخلة واحدة بحاجة إلى ترجمة." msgstr[2] "التّرجمة جاهزة لاستخدامها، لكن توجد مدخلتين بحاجة إلى الترجمة." msgstr[3] "التّرجمة جاهزة لاستخدامها، لكن توجد %d مدخلات بحاجة إلى ترجمة." msgstr[4] "التّرجمة جاهزة لاستخدامها، لكن توجد %d مدخلة بحاجة إلى ترجمة." msgstr[5] "التّرجمة جاهزة لاستخدامها، لكن توجد %d مدخلة بحاجة إلى ترجمة." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "التّرجمة جاهزة لاستخدامها." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "لقد أصلح Poedit محتوى غير صالح تلقائيا ÙÙŠ المل٠â€%s“." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "يحوي الملÙÙ‘ عناصر مكرّرة وذلك غير مسموح ÙÙŠ ملÙّات PO وسيمنع استخدام الملÙÙ‘. أصلح " "Poedit المشكلة، ولكن عليك مراجعة ترجمات العناصر المعلّمة Ùƒâ€â€ØªØ­ØªØ§Ø¬ عملًا“ " "وتصحيحها إن لزم." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "لغة التّرجمة لم ØªÙØ¶Ø¨Ø·." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "اضبط اللغة" #: src/edframe.cpp:2317 msgid "Set language" msgstr "اضبط اللغة" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "الاقتراحات لا تتوÙّر إن لم تضبط لغة التّرجمة ضبطًا صحيحًا. الميزات الأخرى (كصيغ " "المعدود) قد تتأثّر أيضًا." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "لغة التّرجمة Ù†ÙØ³Ù‡Ø§ لغة المصدر." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "أصلح اللغة" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "أصلح اللغة" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "يحتوي هذا المل٠على إدخالات مع نماذج معدودة، ولكن ليس لديه ترويسة أشكال " "متعددة." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "الإدخالات ÙÙŠ هذا المل٠لها صيغ معدودة Ù…Ø®ØªÙ„ÙØ© مما يقوله ترويسة الأشكال " "المتعددة للملÙ" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "ترويسة صيغ المعدود المطلوبة Ù…Ùقودة." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "خطأ صياغيّ ÙÙŠ ترويسة صيغ المعدود (â€%s“)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "أصلح التّرويسة" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "تعبير أشكال المعدود المستخدم من قبل المل٠غير معتاد لـ %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "راجع" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "هل ترغب ÙÙŠ استخدام اللغة الإنجليزية للنص المصدري؟" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Ø§Ù„Ù…ÙØªØ±Ø¬ÙŽÙ…Ø©: %d من %d â€(%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "المتبقّي: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "لا أخطاء" msgstr[1] "خطأ واحد" msgstr[2] "خطآن" msgstr[3] "%d أخطاء" msgstr[4] "%d خطأ" msgstr[5] "%d خطأ" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "لا مدخلات" msgstr[1] "مدخلة واحدة" msgstr[2] "مدخلتان" msgstr[3] "%d مدخلات" msgstr[4] "%d مدخلة" msgstr[5] "%d مدخلة" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (غير محÙوظ)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr "(معدّل)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "ÙØ´Ù„ تحديث ذاكرة التّرجمة: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "أبقها" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "نظّ٠التّرجمات Ø§Ù„Ù…Ø­Ø°ÙˆÙØ©" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "أتريد إزالة كلّ التّرجمات غير المستخدمة؟" #: src/edframe.cpp:2879 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 "" "إن تابعت مع Ø§Ù„ØªÙ‘Ù†Ø¸ÙŠÙØŒ Ø³ØªÙØ²Ø§Ù„ كلّ التّرجمات المعلّمة بÙâ€â€Ù…Ø­Ø°ÙˆÙØ©â€œ نهائيًّا. ستستطيع " "ترجمتها مجدّدًا إن Ø£ÙØ¶ÙŠÙت ÙÙŠ المستقبل." #: src/edframe.cpp:2883 msgid "Purge" msgstr "نظّÙ" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "نسخ من نص المصدري" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "انسخ من النّصّ المصدر" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "تنظي٠الترجمة" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "تنظي٠الترجمة" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "تحرير التعليق" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "تحرير التعليق" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "أحداث الكود" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "أحداث الكود" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "أخÙ٠الشّريط الجانبيّ" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "أظهر الشّريط الجانبيّ" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "أخÙ٠شريط الحالة" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "أظهر شريط الحالة" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "طول المقطع ÙÙŠ الأحرÙ: الترجمة مصدر" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "طول المقطع ÙÙŠ الأحرÙ" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "النصّ المصدر" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Ø§Ù„Ù…ÙØ±Ø¯" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "الجمع" #: src/editing_area.cpp:477 msgid "Translation" msgstr "التّرجمة" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "ØªÙØ±Ø¬Ù…ت مسبقًا" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "تحتاج عملًا" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "تحتاج المزيد من الانتباه" #: src/editing_area.cpp:566 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 مبنيّ على القالب." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "أنشئ ترجمة جديدة" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "إنشاء ترجمة جديدة من مل٠POT هذا." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: src/editing_area.cpp:768 msgid "Everything" msgstr "كلّ شيء" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "الصّيغة %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "النموذج%i (غير مستخدم)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "ØµÙØ±" #: src/editing_area.cpp:788 msgid "One" msgstr "واحد" #: src/editing_area.cpp:790 msgid "Two" msgstr "إثنان" #: src/editing_area.cpp:804 msgid "Other" msgstr "أخرى" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "نسق %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "نسق %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "التّرجمة — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "المعرّÙ" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "النّصّ المصدر — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "لغة مجهولة" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "ÙØ´Ù„ دمج كاتالوجات Â«ØºÙØªâ€ŒØªÙƒØ³ØªÂ»." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Ø§ÙØªØ­ ÙÙŠ المحرّر" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "ÙØªØ­ ÙÙŠ المحرّر" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "لا توجد معلومات حول تواتر هذه السلسلة ÙÙŠ Ø´ÙØ±Ø© المصدر ÙÙŠ الملÙ." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "لم يتم العثور على معلومات الاستخدام" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d تكرار التعليمات البرمجية" msgstr[1] "%d تكرار التعليمات البرمجية" msgstr[2] "%d تكرار التعليمات البرمجية" msgstr[3] "%d تكرار التعليمات البرمجية" msgstr[4] "%d تكرار التعليمات البرمجية" msgstr[5] "%d أحداث التعليمات البرمجية" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "لم ÙŠÙØ¹Ø«Ø± على كود المصدر" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "لا يستطيع تحرير Poedit إظهار Ø´ÙØ±Ø© المصدر حيث يتم استخدام السلسلة، لأن المل٠" "إما غير Ù…ØªÙˆÙØ± ÙÙŠ الموقع المشار إليه أو أنه مرجع رمزي لا يشير إلى مل٠حقيقي." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "لا يمكن ÙØªØ­ الملÙ" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "تعذر على Poedit ÙØªØ­ المل٠«%s»." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "بحث" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "استبدل" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "خيارات" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "تجاهل حالة الأحرÙ" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Ù„ÙÙ‘ حول" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "كامل الكلمات Ùقط" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "البحث نصوص المصدر" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "البحث ÙÙŠ الترجمات" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "البحث ÙÙŠ التعليقات" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "استبدل ال&كلّ" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "استبدل ال&كلّ" #: src/findframe.cpp:150 msgid "&Replace" msgstr "ا&ستبدل" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< ال&سّابقة" #: src/findframe.cpp:152 msgid "&Next >" msgstr "ال&تّالية >" #: src/findframe.cpp:235 msgid "String to find" msgstr "النّص للبحث عنه" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "نصّ الاستبدال" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "لغة التّرجمة" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "لغة التّرجمة:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Ù…Ø¹Ø±ÙØ© المزيد عن %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "«محرÙّر Po» - مدير الكتالوجات" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "تحرير…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "أنشئ مشروع ترجمات جديد" #: src/manager.cpp:145 msgid "Delete the project" msgstr "احذ٠المشروع" #: src/manager.cpp:146 msgid "Edit the project" msgstr "حرّر المشروع" #: src/manager.cpp:176 msgid "Update all" msgstr "حدّث الكلّ" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "حدّث كلّ الكتالوجات ÙÙŠ المشروع" #: src/manager.cpp:378 msgid "Total" msgstr "المجموع" #: src/manager.cpp:379 msgid "Untrans" msgstr "غير المترجمة" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "تحتاج عملًا" #: src/manager.cpp:381 msgid "Errors" msgstr "أخطاء" #: src/manager.cpp:382 msgid "Last modified" msgstr "آخر تعديل" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "اختر دليلًا" #: src/manager.cpp:433 msgid "Directories:" msgstr "الأدلّة:" #: src/manager.cpp:503 msgid "" msgstr "<غير معنون>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "هل تريد حذ٠المشروع «%s»؟" #: src/manager.cpp:540 msgid "Delete project" msgstr "حذ٠المشروع" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "حذ٠المشروع لن يحذ٠أي Ù…Ù„ÙØ§Øª ترجمة." #: src/manager.cpp:571 msgid "Confirmation" msgstr "أكّد" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "هل تريد تحديث جميع الكتالوجات ÙÙŠ هذا المشروع؟" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "إجراء تحديث من رمز المصدر على جميع Ø§Ù„Ù…Ù„ÙØ§Øª ÙÙŠ المشروع." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "التمس التّحديثات…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "مدير الكتالوجات" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Ø§Ù„ØªÙØ¶ÙŠÙ„ات…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "ت&حرير" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "تراجع" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "أعد" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "لصق ومطابقة التنسيق" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "احذÙ" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "الإملاء والنّحو" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "إظهار التدقيق الإملائي والنحوي" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "تدقيق المستند الآن" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "تدقيق إملائي أثناء الكتابة" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "تدقيق إملائي ونحوي" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "صحّح الإملاء آليًّا" #: src/menus.cpp:219 msgid "Substitutions" msgstr "الاستبدالات" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "إظهار الاستبدالات" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "نسخ/لصق ذكيّ" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "علامات اقتباس ذكيّة" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Ø´ÙØ±ÙŽØ· ذكيّة" #: src/menus.cpp:226 msgid "Smart Links" msgstr "روابط ذكيّة" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "استبدال النّصّ" #: src/menus.cpp:230 msgid "Transformations" msgstr "التّحويلات" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "اجعلها بحالة أحر٠كبيرة" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "اجعلها بحالة أحر٠صغيرة" #: src/menus.cpp:234 msgid "Capitalize" msgstr "كبّر الحروÙ" #: src/menus.cpp:237 msgid "Speech" msgstr "النّطق" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "ابدأ النّطق" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "أوق٠النّطق" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&عرض" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "إظهار شريط الأدوات" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "تخصيص شريط الأدوات…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "ادخل ملء الشّاشة" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Ù†Ø§ÙØ°Ø©" #: src/menus.cpp:263 msgid "Minimize" msgstr "صغّر" #: src/menus.cpp:264 msgid "Zoom" msgstr "قرّب" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "مرحبًا ÙÙŠ Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "اجلب الكلّ إلى الأمام" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "معلومات حول المترجم" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "الاسم:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "اسمك" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "البريد الإلكترونيّ:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "بريدك الإلكتروني" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "ÙŠÙØ³ØªØ®Ø¯Ù… اسمك وبريدك الإلكترونيّ Ùقط لضبط ترويسة â€Ø¢Ø®Ø± مترجم“ لملÙّات «غنو " "ØºÙØªâ€ŒØªÙƒØ³ØªÂ»." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "التّحرير" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "صرّ٠آليًّا مل٠‎.mo عند Ø§Ù„Ø­ÙØ¸" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "دقّق الإملاء" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "غيّر دائمًا التّركيز إلى حقل إدخال النصّ" #: src/prefsdlg.cpp:211 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 "" "لا تدع قائمة السلاسل تأخذ التّركيز أبدًا. إن ÙÙØ¹Ù‘Ù„ØŒ عليك استخدام Ù…ÙØªØ§Ø­ Ctrl مع " "الأسهم للتّنقّل عبر لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­. يمكنك هكذا طباعة النصّ مباشرةً دون الحاجة إلى " "ضغط Ù…ÙØªØ§Ø­ Tab لتغيير التّركيز." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "المظهر" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "استخدم خطّ قوائم مخصّص:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "استخدم خطّ حقول النّصوص مخصّص:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "تغيير لغة الواجهة" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(يتطلّب «وندوز» 8 وأحدث)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "عامّ" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "استخدم ذاكرة التّرجمة" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "إدارة…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "عند التّحديث من المصادر" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "مطابقة غبشة داخل الملÙÙ‘" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "احصل على ترجمة سابقة من ذاكرة التّرجمة" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "يمكن Ù„â€Â«Ù…حرÙّر Po» محاولة ملء المدخلات الجديدة Ùقط من التّرجمات السّابقة ÙÙŠ الملÙÙ‘ " "أو من ذاكرة التّرجمة كلّها. استخدام ذاكرة التّرجمة لن يكون ÙØ¹Ù‘الًا جديًّا إن كانت " "شبه ÙØ§Ø±ØºØ©ØŒ ولكنّها ستصبح Ø£ÙØ¶Ù„ متى ما أض٠ترجمات أخرى إليها." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "التّرجمات المخزّنة:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "حجم قاعدة البيانات ÙÙŠ القرص:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "استيراد Ù…Ù„ÙØ§Øª الترجمة…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "استيراد Ù…Ù„ÙØ§Øª الترجمة…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "استيراد من TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "استيراد من TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "تصدير إلى TMX ..." #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "تصدير إلى TMX ..." #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "صÙّر" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "اختر Ù…Ù„ÙØ§Øª التّرجمة لاستيرادها" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "حدد Ù…Ù„ÙØ§Øª TMX لاستيرادها" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "ملÙّات TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "يستورد التّرجمات…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" msgstr[4] "" msgstr[5] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "صدّر Ùƒâ€â€¦" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "تصدير الترجمات ..." #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "ÙØ´Ù„ تصدير ذاكرة الترجمة إلى \"%s\"." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "صÙّر ذاكرة الترجمة" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "أمتأكّد من تصÙير ذاكرة التّرجمة؟" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "تصÙير ذاكرة الترجمة سيحذ٠كلّ التّرجمات المخزّنة منها إلى الأبد. لا عودة عن هذه " "العمليّة." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "ذاكرة الترجمة" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "ذاكرة التّرجمة" #: src/prefsdlg.cpp:730 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 "" "ØªÙØ³ØªØ®Ø¯Ù… مستخرجات الكود المصدريّ للبحث عن السّلاسل القابلة للتّرجمة ÙÙŠ ملÙّات " "الكود المصدريّ واستخراجها ليمكن ترجمتها." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "مستخرجات مخصّصة:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "مستخرجات مخصّصة:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "يدعم كلّ لغات البرمجة التي تتعرّ٠عليها أدوات غنو â€ŒØºÙØªâ€Œâ€ŒØªÙƒØ³Øª (PHPØŒ وسي/سي++ØŒ وسي#ØŒ " "وبيرل، وبايثون، ÙˆØ¬Ø§ÙØ§ØŒ ÙˆØ¬Ø§ÙØ§Ø³ÙƒØ±Ø¨Øª وغيرها)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "احذ٠المستخرج" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "أمتأكّد من حذ٠مستخرج «%s»؟" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "المستخرجات" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "الحسابات" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "التمس آليًّا عن التّحديثات" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "ضمّن نسخ بيتا" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "نسخ بيتا تحوي المزايا الجديدة الأخيرة مع التّحسينات، لكن قد تكون أقلّ استقرارًا." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "التّحديثات" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "تؤثّر هذه الإعدادات على تنسيق ملÙّات PO الدّاخليّ. عدّلها إن أردت متطلّبات محدّدة " "كالتّحكّم بالإصدارات." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "نهايات الأسطر:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "ÙŠÙÙ†Ùكس (مستحسن)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "وندوز" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Ù„ÙÙ‘ عند:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Ø­Ø§ÙØ¸ على تنسيق الملÙّات الموجودة" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "متقدّم" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "جار٠إعداد المقاطع…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "الترجمة المسبقة من ذاكرة الترجمة..." #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "لم ÙŠÙØªØ±Ø¬Ù… أيّ مقطع مسبقًا" msgstr[1] "ØªÙØ±Ø¬Ù… مقطع واحد مسبقًا" msgstr[2] "ØªÙØ±Ø¬Ù… مقطعين مسبقًا" msgstr[3] "ØªÙØ±Ø¬Ù…ت %u مقاطع مسبقًا" msgstr[4] "ØªÙØ±Ø¬Ù…ت %u مقطعًا مسبقًا" msgstr[5] "ØªÙØ±Ø¬Ù…ت %u مقطع مسبقًا" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "يترجم مسبقًا…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "لا مدخلات ØªÙØ±Ø¬Ù…ت مسبقًا." msgstr[1] "ØªÙØ±Ø¬Ù…ت مدخلة واحدة مسبقًا." msgstr[2] "ØªÙØ±Ø¬Ù…ت مدخلتين مسبقًا." msgstr[3] "ØªÙØ±Ø¬Ù…ت %d مدخلات مسبقًا." msgstr[4] "ØªÙØ±Ø¬Ù…ت %d مدخلة مسبقًا." msgstr[5] "ØªÙØ±Ø¬Ù…ت %d مدخلة مسبقًا." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "عÙلّمت التّرجمات بâ€â€ØªØ­ØªØ§Ø¬ عملًا“، لأنّها قد تكون غير دقيقة. عليك مراجعتها لتصحيحها." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "لا مدخلات يمكن ترجمتها مسبقًا." #: src/pretranslate.cpp:218 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 أيّة سلاسة مشابهة لمحتوى الملÙÙ‘. هي ÙØ¹Ù‘الة Ùقط للتّرجمات شبه الآليّة " "بعد أن يتعلّم Poedit ÙƒÙØ§ÙŠØ©Ù‹ من الملÙّات التي تترجمها يدويًّا." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "ØªÙØ±Ø¬Ù…ت مسبقًا" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "املأ Ùقط المطابقات التّامّة" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "لا تعلّم المطابقات التّامّة بÙâ€â€ØªØ­ØªØ§Ø¬ عملًا“" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "ÙØ¹Ù‘له Ùقط إن كنت تثق بجودة TM. Ø§ÙØªØ±Ø§Ø¶ÙŠÙ‹Ù‘ا، كلّ المطابقات من TM ØªÙØ¹Ù„ّم بÙâ€â€ØªØ­ØªØ§Ø¬ " "عملًا“ ويجب مراجعتها قبل استخدامها." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "التّرجمة مسبقًا تبحث آليًّا عن المطابقات التّامّة أو الغبشة للسّلاسل غير المترجمة، " "وذلك ÙÙŠ ذاكرة التّرجمة لملء التّرجمات." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" msgstr[4] "" msgstr[5] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" msgstr[4] "" msgstr[5] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "جار٠الإلغاء…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "اسحب المجلدات أو Ø§Ù„Ù…Ù„ÙØ§Øª هنا" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "اسحب المجلدات أو Ø§Ù„Ù…Ù„ÙØ§Øª هنا" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Ø¥Ø¶Ø§ÙØ© مجلّدات…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Ø¥Ø¶Ø§ÙØ© مجلّدات…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Ø¥Ø¶Ø§ÙØ© ملÙّات…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Ø¥Ø¶Ø§ÙØ© ملÙّات…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Ø¥Ø¶Ø§ÙØ© حر٠بدل…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "أض٠حر٠بدل…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "كش٠ÙÙŠ Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "أظهر ÙÙŠ المتصÙّح" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "إظهار ÙÙŠ المجلد" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "المسارات" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "المسارات المستثناة" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "إعدادات استخراج متقدّمة" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "استخرج ملاحظات المترجمين من:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "التعليقات Ø§Ù„Ù…ÙØ¨ØªØ¯Ø£Ø© بâ€:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "كل التّعليقات" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "رايات xgettext إضاÙيّة:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "الكلمات Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘Ø© الإضاÙيّة" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "اسم المشروع الذي تكون التّرجمات له" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "اسم Ø§Ù„ÙØ±ÙŠÙ‚ وعنوان البريد الإلكتروني أو عنوان URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "مثلًا nplurals=2; plural=(n > 1);‎" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (مستحسن)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "رجاء Ø§Ø­ÙØ¸ الملÙÙ‘ أوّلًا. لا يمكن تحرير هذا القسم حتّى ذلك الحين." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "صحة المكون" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "المكون \"%s\" غير مترجم." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "المكون الغير ضروري “%s†لا يوجد ÙÙŠ النص الأصلي." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "ترجمات بصيغة الجموع" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "لم ØªÙØªØ±Ø¬Ù… كلّ صيغ الجموع." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "حالة أعلى/أسÙÙ„ غير متسقة" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "يجب أن تبدأ التّرجمة كجملة." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "يجب أن تبدأ التّرجمة بحر٠صغير." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Ù…Ø³Ø§ÙØ© بيضاء غير متسقة" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "يجب ألّا تبدأ التّرجمة Ø¨Ù…Ø³Ø§ÙØ©." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "بدأت التّرجمة Ø¨Ù…Ø³Ø§ÙØ©ØŒ ولكنّ النّصّ المصدر لم يبدأ بها." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "ينقص التّرجمة سطرًا جديدًا ÙÙŠ نهايتها." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "انتهت التّرجمة Ø¨Ù…Ø³Ø§ÙØ©ØŒ ولكنّ النّصّ المصدر لم ينته٠بها." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "ينقص التّرجمة Ù…Ø³Ø§ÙØ© ÙÙŠ نهايتها." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "انتهت التّرجمة بسطر جديد، ولكنّ النّصّ المصدر لم ينته٠بها." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "ÙØ­Øµ علامات الترقيم" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "يجب أن تنتهي التّرجمة بâ€â€%s“." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "يجب ألّا تنتهي التّرجمة بâ€â€%s“." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "تنتهي الترجمة بـ \"%s\" ØŒ لكن النص المصدر ينتهي بـ \"%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "مسح القائمة" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "مسح القائمة" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "التّعليق:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "تحديث" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "ا&حذÙ" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "حذÙ التعليق" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "حرّر المشروع" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "اسم المشروع:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "تصÙّح" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Ø¥Ø¶Ø§ÙØ© الدّليل إلى القائمة" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "حسنًا" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&ملÙÙ‘" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&جديد…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "مل٠جديد من &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "مل٠جديد من &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&ÙØªØ­â€¦" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Ø§ÙØªØ­ الأخيرة" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "ÙØªØ­ الأحدث" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&بدء Ø§Ù„Ù†Ø§ÙØ°Ø©" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&بدء Ù†Ø§ÙØ°Ø©" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Ù…&دير الكتالوجات" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Ù…&دير الكتالوجات" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "Ø£&غلق" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Ø­ÙØ¸" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Ø­ÙØ¸ &باسم…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Ø­ÙØ¸ &باسم…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "جمع الى MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "تحقق من التحديثات…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "إعدادات…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "ت&ÙØ¶ÙŠÙ„ات" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "Ø£&نهÙ" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "إنهاء" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "نسخ من الصيغة Ø§Ù„Ù…ÙØ±Ø¯Ø©" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "نسخ من الصيغة Ø§Ù„Ù…ÙØ±Ø¯Ø©" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "تحتاج التّرجمة &عملًا" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "تحتاج التّرجمة &عملًا" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "تحرير الت&عليق" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "تحرير الت&عليق" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "الاقتراحات" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&بحث…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "استبدال…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "ابحث عن التّالي" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "ابحث عن السّابق" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "إيجاد والاستبدال…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "بحث عن التالي" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "بحث عن السابق" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "إظهار السلسلة ومعر٠ID&" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "إظهار السلسلة ومعر٠ID&" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "عرض التحذيرات" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "عرض التحذيرات" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "ÙØ±Ø² حسب &ترتيب Ø§Ù„Ù…Ù„ÙØ§Øª" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "ÙØ±Ø² حسب &ترتيب Ø§Ù„Ù…Ù„ÙØ§Øª" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "ÙØ±Ø² حسب ال&مصدر" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "ÙØ±Ø² حسب ال&مصدر" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "ÙØ±Ø² حسب ال&ترجمة" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "ÙØ±Ø² حسب ال&ترجمة" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&جمّع بالسّياق" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&جمّع بالسّياق" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "المدخلات مع أخطاء أولا" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "المدخلات مع أخطاء أولا" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "المدخلات &غير المترجمة أوّلًا" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "المدخلات &غير المترجمة أوّلًا" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&إظهار أحداث التعليمات البرمجية" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&إظهار أحداث الكود" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "أظهر الشّريط الجانبيّ" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "أظهر شريط الحالة" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&التّرجمة" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "تحديث من &مصادرÙ" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "تحديث من &مصادرÙ" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "زامن مع كراودÙÙ†" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "الترجمة &المسبقة…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "ت&حقّق من سلامة التّرجمات" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "ت&حقّق من سلامة التّرجمات" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "Ù†&ظّ٠التّرجمات Ø§Ù„Ù…Ø­Ø°ÙˆÙØ©" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "Ù†&ظّ٠التّرجمات Ø§Ù„Ù…Ø­Ø°ÙˆÙØ©" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&خصائص…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&انتقال" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&تمّت وإلى التّالية" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&تمّت وإلى التّالية" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "تم تعديله سابقا" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "تم تعديله سابقا" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "التّرجمة ال&سّابقة" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "التّرجمة ال&سّابقة" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "التّرجمة ال&تّالية" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "التّرجمة ال&تّالية" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "غير المنتهية ال&سّابقة" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "غير المنتهية ال&سّابقة" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "غير المنتهية ال&تّالية" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "غير المنتهية ال&تّالية" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "صيغة المعدود السّابقة" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "صيغة المعدود السّابقة" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "صيغة المعدود التّالية" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "صيغة المعدود التّالية" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "مساعدة &شبكيّة" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "مساعدة &شبكيّة" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "كتيّب &غنو ØºÙØªâ€‹ØªÙƒØ³Øª" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "كتيّب &غنو ØºÙØªâ€‹ØªÙƒØ³Øª" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&عنْ Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&عنْ" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "إعداد المستخرج" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "قائمة الامتدادات Ù…ÙØµÙˆÙ„Ø© بÙواصل منقوطة (مثلًا ‎*.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "الاستدعاء:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "أمر استخراج التّرجمات:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "ÙŠÙØ³ØªØ®Ø¯Ù… هذا الأمر لإطلاق المستخرج.\n" "ÙŠÙوسّع ‎%o إلى اسم ملÙÙ‘ الخرج، و‎%K إلى\n" "قائمة الكلمات Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘ة، و‎%F إلى قائمة ملÙّات الدّخل،\n" "و‎%C إلى راية طقم المحار٠(طالع أدناه)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "عنصر ÙÙŠ قائمة الكلمات Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘Ø©:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Ø³ÙŠÙØ±ÙÙ‚ هذا بسطر الأمر مرّة لكلّ ملÙÙ‘ دخل.\n" "ÙŠÙوسّع ‎%K إلى الكلمة Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘Ø©." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "عنصر ÙÙŠ قائمة ملÙّات الدّخل:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Ø³ÙŠÙØ±ÙÙ‚ هذا بسطر الأمر مرّة لكلّ ملÙÙ‘ دخل.\n" "ÙŠÙوسّع ‎%f إلى اسم الملÙÙ‘." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "طقم محار٠الكود المصدريّ:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Ø³ÙŠÙØ±ÙÙ‚ هذا بسطر الأمر Ùقط إن Ø£ÙØ¹Ø·ÙŠ Ø·Ù‚Ù… المحارÙ.\n" "ÙŠÙوسّع ‎%c إلى قيمة طقم المحارÙ." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "خصائص التّرجمة" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "اسم المشروع وإصداره:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "ÙØ±ÙŠÙ‚ التّرجمة:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "صيغ المعدود:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "استخدم قواعد اللغة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠÙ‘Ø©" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "استخدم تعبيرًا مخصّصًا" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "تعلّم حول صيغ المعدود" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "طقم المحارÙ:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "إعدادات استخراج متقدّمة…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "إعدادات استخراج متقدّمة…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "خصائص التّرجمة" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "مسارات المصادر" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "مسارات المصادر" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "استخرج النّصوص من الملÙّات المصدريّة ÙÙŠ الأدلّة التّالية:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "المسار الأساس:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "كلمات المصادر Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘Ø©" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "كلمات المصادر Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘Ø©" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "استخدم الكلمات Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘Ø© هذه (أسماء الدّوال) للتعرّ٠على\n" "السلاسل القابلة للتّرجمة ÙÙŠ Ø§Ù„Ù…Ù„ÙØ§Øª المصدريّة:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "استخدم أيضًا الكلمات Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘Ø© Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠÙ‘Ø© للّغات المدعومة" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "تعلّم المزيد عن كلمات Â«ØºÙØªâ€Œâ€‹ØªÙƒØ³ØªÂ» Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘Ø©" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "ÙØªØ­ ملÙ" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Ø­ÙØ¸ الملÙ" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "تحقق" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "تحقّق الأخطاء ÙÙŠ التّرجمة" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "تحديث من التعليمات البرمجية" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "تحديث من التعليمات البرمجية" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "تحديث من Ø´ÙØ±Ø© المصدر" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "الشّريط الجانبيّ" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "أظهر الشّريط الجانبيّ أو أخÙÙ‡" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "نص المصدر السابق" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "نصّ المصدر القديم (قبل أن يتغيّر أثناء التحديث) الذي تقابله التّرجمة غير " "الدّقيقة الحاليّة." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "ملاحظات للمترجمين" #: src/sidebar.cpp:196 msgid "Comment" msgstr "تعليق" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Ø¥Ø¶Ø§ÙØ© تعليق" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Ø¥Ø¶Ø§ÙØ© تعليق" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "حذ٠من ذاكرة الترجمة" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "حذ٠من ذاكرة الترجمة" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "اقتراحات الترجمة" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "لا مطابقات" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "لا مطابقات" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Ø¹ÙØ«Ø± على السّلسلة ÙÙŠ ذاكرة ترجمة «محرÙّر Po»." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "تعذّر تنÙيذ البرنامج: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "مل٠TMX تالÙ." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "قاعدة بيانات ذاكرة الترجمة ØªØ§Ù„ÙØ©: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "خطأ ÙÙŠ ذاكرة الترجمة: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(استخدم اللغة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠÙ‘Ø©)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "حدّد اللّغة" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "اختر لغتك Ø§Ù„Ù…ÙØ¶Ù‘لة" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "عليك إعادة تشغيل Poedit لتطبيق التّعديلات." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "تعذّر إنشاء الدّليل المؤقّت." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "ليست هناك ترجمات. هذا غير طبيعيّ." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "أبسط طريقة لملء هذا المل٠بالترجمة هي تحديثه من POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "حدّث من POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Ø®ÙØ° السّلاسل التّرجميّة من قالب POT موجود." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "يمكنك أيضًا استخراج السّلاسل التّرجميّة مباشرةً من الكود المصدريّ:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "استخرج من المصادر" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "اضبط استخراج الكود المصدريّ ÙÙŠ الخصائص." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "النّسخة %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "إنشاء جديد" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "إنشاء ترجمة جديدة من قالب POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "ØªØµÙØ­ Ø§Ù„Ù…Ù„ÙØ§Øª" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "ÙØªØ­ وتحرير Ù…Ù„ÙØ§Øª الترجمة." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Ø§Ù„Ù…Ù„ÙØ§Øª الأخيرة" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "زامن" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "زامن التّرجمة مع «كراودÙن»" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "عنْ %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "ØªÙØ¶ÙŠÙ„ات %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "عنْ %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "الخدمات" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "أخÙ٠«%s»" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "أخÙ٠البقية" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "أظهر الكل" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "إنهاء %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Ø§Ù„ØªÙ‘ÙØ¶ÙŠÙ„ات…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "ØªÙØ¶ÙŠÙ„ات..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "ØªÙØ¶ÙŠÙ„ات..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "ت&طبيق" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "تطبيق" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&رجوع" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "رجوع" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "أل&غاء" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "ام&سح" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "تنظيÙ" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "نسخ" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&قصّ" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "قصّ" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "تحرير" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "Ø¥&نهاء" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "مساعدة" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&جديد" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "جديد" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&لا" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "لا" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&مواÙÙ‚" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "ÙØªØ­â€¦" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "ا&ÙØªØ­..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "ÙØªØ­..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "Ø£&لصق" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "لصق" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "ØªÙØ¶ÙŠÙ„ات" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "Ø£&عد" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "تحديث" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Ø­ÙØ¸ باسم" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Ø­ÙØ¸ باسم" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "تحديد الك&Ù„" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "تحديد الكل" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "ترا&جع" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "Ù†&عم" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "نعم" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "أعلى" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "أسÙÙ„" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "شمال" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "يمين" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/poedit.pot0000644000175100001660000021020415011674230012121 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the Poedit package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Poedit 3.6.2\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "" #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "" #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "" #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "" #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "" #: src/catalog_po.cpp:134 #, 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] "" #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "" #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "" #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "" #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "" #: src/commentdlg.cpp:48 msgid "Add" msgstr "" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "" #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "" #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "" #: src/edapp.cpp:733 msgid "Error opening file" msgstr "" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "" #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "" #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "" #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "" #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "" #: src/edframe.cpp:455 msgid "Poedit" 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" #: src/edframe.cpp:871 msgid "Install" msgstr "" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" #: src/edframe.cpp:968 msgid "Ignore" msgstr "" #: src/edframe.cpp:968 msgid "Reload File" msgstr "" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "" #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "" msgstr[1] "" #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "" #: src/edframe.cpp:1842 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 "" #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "" #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "" #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "" #: src/edframe.cpp:1894 #, 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] "" msgstr[1] "" #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "" #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "" #: src/edframe.cpp:2317 msgid "Set Language" msgstr "" #: src/edframe.cpp:2317 msgid "Set language" msgstr "" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "" #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "" #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "" #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "" msgstr[1] "" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "" msgstr[1] "" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr "" #: src/edframe.cpp:2639 msgid " (modified)" msgstr "" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "" #: src/edframe.cpp:2879 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 "" #: src/edframe.cpp:2883 msgid "Purge" msgstr "" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "" #: src/editing_area.cpp:477 msgid "Translation" msgstr "" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "" #: src/editing_area.cpp:566 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 "" #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: src/editing_area.cpp:768 msgid "Everything" msgstr "" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "" #: src/editing_area.cpp:786 msgid "Zero" msgstr "" #: src/editing_area.cpp:788 msgid "One" msgstr "" #: src/editing_area.cpp:790 msgid "Two" msgstr "" #: src/editing_area.cpp:804 msgid "Other" msgstr "" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "" #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "" #: src/findframe.cpp:150 msgid "&Replace" msgstr "" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "" #: src/findframe.cpp:152 msgid "&Next >" msgstr "" #: src/findframe.cpp:235 msgid "String to find" msgstr "" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "" #: src/manager.cpp:145 msgid "Delete the project" msgstr "" #: src/manager.cpp:146 msgid "Edit the project" msgstr "" #: src/manager.cpp:176 msgid "Update all" msgstr "" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "" #: src/manager.cpp:378 msgid "Total" msgstr "" #: src/manager.cpp:379 msgid "Untrans" msgstr "" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "" #: src/manager.cpp:381 msgid "Errors" msgstr "" #: src/manager.cpp:382 msgid "Last modified" msgstr "" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "" #: src/manager.cpp:433 msgid "Directories:" msgstr "" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "" #: src/manager.cpp:540 msgid "Delete project" msgstr "" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" #: src/manager.cpp:571 msgid "Confirmation" msgstr "" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "" #: src/menus.cpp:219 msgid "Substitutions" msgstr "" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "" #: src/menus.cpp:226 msgid "Smart Links" msgstr "" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "" #: src/menus.cpp:230 msgid "Transformations" msgstr "" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "" #: src/menus.cpp:234 msgid "Capitalize" msgstr "" #: src/menus.cpp:237 msgid "Speech" msgstr "" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "" #: src/menus.cpp:263 msgid "Minimize" msgstr "" #: src/menus.cpp:264 msgid "Zoom" msgstr "" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "" #: src/prefsdlg.cpp:211 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 "" #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "" #: src/prefsdlg.cpp:352 msgid "General" msgstr "" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "" #: src/prefsdlg.cpp:730 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 "" #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "" #: src/pretranslate.cpp:218 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 "" #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "" #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "" #: src/resources/comment.xrc:33 msgid "Update" msgstr "" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "" #: src/sidebar.cpp:196 msgid "Comment" msgstr "" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "" #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "" #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "" #: src/uilang.cpp:246 msgid "Language selection" msgstr "" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "" #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "" #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "" #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "" #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "" #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/Makefile.in0000644000175100001660000003711115011674351012166 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = locales ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/admin/ax_boost_base.m4 \ $(top_srcdir)/admin/ax_boost_iostreams.m4 \ $(top_srcdir)/admin/ax_boost_system.m4 \ $(top_srcdir)/admin/ax_boost_thread.m4 \ $(top_srcdir)/admin/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/admin/wxwin.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_IOSTREAMS_LIB = @BOOST_IOSTREAMS_LIB@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ BOOST_SYSTEM_LIB = @BOOST_SYSTEM_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLD2_LIBS = @CLD2_LIBS@ CPPFLAGS = @CPPFLAGS@ CPPREST_LIBS = @CPPREST_LIBS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ HAVE_CXX17 = @HAVE_CXX17@ ICU_CFLAGS = @ICU_CFLAGS@ ICU_LIBS = @ICU_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ 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@ LUCENE_LIBS = @LUCENE_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PUGIXML_CFLAGS = @PUGIXML_CFLAGS@ PUGIXML_LIBS = @PUGIXML_LIBS@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WXRC = @WXRC@ WX_CFLAGS = @WX_CFLAGS@ WX_CFLAGS_ONLY = @WX_CFLAGS_ONLY@ WX_CONFIG_PATH = @WX_CONFIG_PATH@ WX_CONFIG_WITH_ARGS = @WX_CONFIG_WITH_ARGS@ WX_CPPFLAGS = @WX_CPPFLAGS@ WX_CXXFLAGS = @WX_CXXFLAGS@ WX_CXXFLAGS_ONLY = @WX_CXXFLAGS_ONLY@ WX_LIBS = @WX_LIBS@ WX_LIBS_STATIC = @WX_LIBS_STATIC@ WX_RESCOMP = @WX_RESCOMP@ WX_VERSION = @WX_VERSION@ WX_VERSION_MAJOR = @WX_VERSION_MAJOR@ WX_VERSION_MICRO = @WX_VERSION_MICRO@ WX_VERSION_MINOR = @WX_VERSION_MINOR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = $(datadir)/locale localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ POEDIT_LINGUAS = af an ar az be bg bs ca ckb co cs da de el en_GB es et eu fa fi fr ga gl he hr hu hy id is it ja ka kab kk ko lt lv ms nb nl oc pa pl pt_BR pt_PT ro ru sk sl sq sr sr@latin sv tg th tr ug uk uz vi zh_CN zh_TW # ---------------------------------------------------------------------------- # Logic for catalogs updating follows # (shamelessly stolen from wxWidgets makefile): # ---------------------------------------------------------------------------- # the programs we use (TODO: use configure to detect them) MSGFMT = msgfmt --verbose --check MSGMERGE = msgmerge XGETTEXT = xgettext XARGS = xargs # common xgettext args: C++ syntax, use the specified macro names as markers XGETTEXT_ARGS = -C -k_ -kwxGetTranslation -kwxTRANSLATE -kwxPLURAL:1,2 -F -j \ --add-comments=TRANSLATORS \ --from-code=UTF-8 \ --package-name=Poedit --package-version=$(PACKAGE_VERSION) \ --msgid-bugs-address=help@poedit.net all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign locales/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign locales/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: 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) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am dist-hook distclean distclean-generic distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local .PRECIOUS: Makefile install-data-local: install-poedit-catalogs install-poedit-catalogs: for i in $(POEDIT_LINGUAS) ; do \ $(mkinstalldirs) $(DESTDIR)$(localedir)/$$i/LC_MESSAGES ; \ $(INSTALL_DATA) $(srcdir)/$$i.mo $(DESTDIR)$(localedir)/$$i/LC_MESSAGES/poedit.mo ; \ done uninstall-local: rm -rf $(DESTDIR)$(localedir)/*/LC_MESSAGES/poedit.mo # implicit rules %.mo: %.po $(MSGFMT) -o $@ $< # a PO file must be updated from poedit.pot include new translations %.po: $(srcdir)/poedit.pot if [ -f $@ ]; then $(MSGMERGE) --previous $@ $(srcdir)/poedit.pot > $@.new && mv $@.new $@; else cp $(srcdir)/poedit.pot $@; fi $(srcdir)/sr_RS@latin.po: $(srcdir)/sr.po recode-sr-latin <$< >$@ $(srcdir)/poedit.pot: touch $@ (cd $(srcdir) ; find ../src -name "*.h" | $(XARGS) $(XGETTEXT) $(XGETTEXT_ARGS) -o poedit.pot) (cd $(srcdir) ; find ../src -name "*.cpp" | $(XARGS) $(XGETTEXT) $(XGETTEXT_ARGS) -o poedit.pot) (cd $(srcdir) ; $(WXRC) --gettext ../src/resources/*.xrc | $(XGETTEXT) $(XGETTEXT_ARGS) -o poedit.pot -) allpo: force-update @-for t in $(POEDIT_LINGUAS); do $(MAKE) $(srcdir)/$$t.po; done allmo: @for t in $(POEDIT_LINGUAS); do $(MAKE) $(srcdir)/$$t.mo; done force-update: $(RM) $(srcdir)/poedit.pot # print out the percentage of the translated strings stats: @for i in $(POEDIT_LINGUAS); do \ x=`$(MSGFMT) -o /dev/null "$(srcdir)/$$i.po" 2>&1 | sed -e 's/[,\.]//g' \ -e 's/\([0-9]\+\) translated messages\?/TR=\1/' \ -e 's/\([0-9]\+\) fuzzy translations\?/FZ=\1/' \ -e 's/\([0-9]\+\) untranslated messages\?/UT=\1/'`; \ TR=0 FZ=0 UT=0; \ eval $$x; \ TOTAL=`expr $$TR + $$FZ + $$UT`; \ echo "\"$$i\" => \"`expr 100 "*" $$TR / $$TOTAL`\", /* $$TOTAL strings */"; \ done #echo "$$i.po `expr 100 "*" $$TR / $$TOTAL`% of $$TOTAL strings"; dist-hook: allmo cp -a $(srcdir)/*.pot $(srcdir)/*.po $(srcdir)/*.mo $(distdir) .PHONY: allpo allmo force-update stats FORCE # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: poedit-3.6.3/locales/pa.mo0000644000175100001660000015753415011674364011076 Þ•ìϼ!ø, ù, --$-J7- ‚-Œ- ›-¥- ¬-º-Á-Ç-Ï-Ö-Ý-ã-ë-ú- ....2.F.J.P.U.].e.w.‰.. ‘. ž.«.´.½. Ä.Ñ.á.÷. //8/T/Z/`/i/o/ x/ †/ ”/¡/§/Ã/ß/ø/00030C0 a0 m0w0€0ˆ0‘0 •0 ¡0®0 ½0 É0Õ0 ï0ü0 11+141 J1'V1~1›1 µ1À1Æ1)æ12 2 2<32Dp2$µ2Ú2 á2î2 õ2"3&3 A3L3^3p33”33°3Ì3è3ý34!4 '424 D4O4a4g4x4‰4¤4¬4µ4 Æ4Ô4 ï4ü455-51L5~5 —5¢5)¹5ã5 666+6/6F6M6l6‹6š6­6 À6^Í6?,7 l7 z7‡7š7"­75Ð78!8<8B8 G8 U8 c8 p8 }8Š8›8£8«8²8fÄ8u+9¡9´9"Æ9é9 ð9 û9:*:0E:!v:'˜:À:Å:Û:(ú:T#;x; }; ‡;•;©;º;Ï; ä; î; ü; <<%<4<N<V< g<s< {<†< ‹<˜<¨<Ç<á<‡ä<zl=ç= î=ú= >)><>X>r>y> >°> ¸> Å>Ñ>è>í>;?(??h?…?˜? §? ±?¿? Ü?ç?û?:@ O@<]@ š@.§@Ö@æ@*ö@!AI JIUIfI"~I¡I½I ÜI éI öI JJ)J9J LJ YJgJxJ‡J  J­J ½JËJÓJÛJäJ ìJúJK&K?KHKQK bK oK {KˆKK¸K ÎKÚKéKüK LLK%LqL†L •L£L¸LÎL1êLM +M 9MŽEMÔMÙMëM óMN+NJN MN"WNzNC‹N8ÏNîOŸ÷O8—P1ÐPRQcUQQ¹Q R'&R:NR-‰RC·RAûRK=S0‰S.ºSŽéS!xT)šT-ÄTCòT,6ULcU]°UJV[YV7µVmíV_[W[»WXX-XEX bXnXƒX–X®X"ÅXèXYY/YˆBYËYÏYãY èY ZZ 3ZAZIZ PZ"[Z~Z—Z°ZÁZÑZâZúZ [[![7[$T[y[™[³[É[#æ[ \!\*\ =\H\f\x\“\¤\«\.³\ â\î\]5 ]m@]7®] æ]3ð]a$^†^‹^^.­^ Ü^ý^_4_G_Y_l_~_‘_¥_µ_Æ_Ø_ë_``8`W`o`ˆ`¡`·`È`á`!ñ`«a¿bÏb?ïb%/cŽUcäcúcd-d#Edid„d˜d°dËdãdþd*e*:eeeveŠe%že%Äe êe øeff+f#>f#bf†f—f ¬f Ífîfg"g3g Qg&rg&™g"ÀgAãgA%hghxhŒhh*´h,ßh, i"9i\iLziLÇiAjAVj˜j ©j+·j)ãjJ kXknk€k k k ªk·k%×kýk"l@lE`l%¦lÌl"ìlm,m;?m"{mežmGn6Ln ƒnnI§noñnaoqo*Œoˆ·oˆ@pOÉp q##qGq4[q`qMñq9?r,yr,¦r%ÓrùrsC2sXvs\Ïs3,t9`t-štÈt#ßt"u#&u"Jumu%u%§ugÍu5vHv/\v,ŒvK¹vww:,w:gwE¢wèwChx¬x,ÆxPóxUDyšy¯y?Ày z0 z >zEKzE‘z,×z{"${G{ëd{¸P| }'} A} b}sƒ}‡÷}L~IÌ~ ' 1 Rs“"°Ó&ó€ *€08€íi€W<w‚<´‚Xñ‚Jƒ`ƒ%tƒ.šƒVɃ€ „g¡„] …g…Gw…?¿…Yÿ…ßY† 9‡F‡`‡#}‡)¡‡6ˇ,ˆ/ˆIˆ-fˆ-”ˆ&ˆ&éˆ8‰I‰Y‰ r‰~‰…‰ ‰#§‰0ˉ@ü‰K=Š ‰Š½–Š¢TŒ÷CŽ-[ŽE‰Ž-ÏŽEýŽMC‘&©8Ð &@-U ƒ4nÅM4‘*‚‘­‘Ç‘â‘ó‘1 ’<’&S’+z’ˆ¦’ /“‡P“)Ø“‡”"Š”"­”]Д2.•6a•˜•M®•ü•C– W–+b–+Ž–+º–fæ– M˜1Z˜1Œ˜"¾˜ á˜-î˜0™PM™yž™<š[Uš±š š8Ìš"›Y(›5‚›8¸›"ñ›/œ/Dœ"tœ—œ­œÜ Óœ(Ýœ,P3 „ž6‘ž Èž9Õž[ŸkŸ{ ‡Ž ¡4¡=G¡—…¡W¢Vu¢&Ì¢ó¢£-£J£)g£7‘£ ɣ꣤9¤=Q¤ ¤Ÿœ¤(<¥e¥¥*™¥-Ä¥ò¥ ¦¦- ¦-N¦|¦–¦i¦¦ §#1§U§e§&x§&Ÿ§&Ƨ&í§¨"4¨+W¨"ƒ¨¦¨À¨ب(ì¨,©VB©5™©=Ï© ª'ªAª]ªCzª)¾ª"èª" «%.«5T«,Š«:·«ò«)¬%9¬ _¬l¬€¬—¬-«¬GÙ¬.!­GP­˜­¯­6í"ú­"®@®1Z®=Œ®3Ê®þ®¯ 5¯V¯m¯ Н©—¯3A°)u°Ÿ°0¼°&í°@±oU±űã±ö±?²F³(]³4†³0»³Jì³c7´›´ž´Oµ´µÙ%µÿµ„¶[¹zqºìº¶}»ñ4¼ã&½Y ¾Sd¾€¸¾j9¿¤¿šBÀ¬ÝÀqŠÁaüÁW^ÂG¶ÃYþÃfXİ¿ÄWpžÈÅŇÆÉMǹÈwÑÈØIÉÕ"ÊØøÊ ÑË$ÞËIÌGMÌ•Ì"¨Ì%ËÌKñÌ7=Í>uÍK´Í.Î)/ÎYÎ:sÎ®Ï µÏ ÖÏ3ãÏ-Ð4EÐ"zÐзÐÊÐ[äÐ1@Ñ1rÑ0¤Ñ*ÕÑ0Ò=1Ò"oÒ’Ò?¥ÒJåÒv0Ó`§Ó]Ô`fÔ@ÇÔMÕMVÕ5¤ÕÚÕ5ôÕ*ÖW=Ö=•ÖZÓÖ .×O×_׋g×ó×.Ø BØ‘LØÞØ”÷ٌډ©Ú3Û9Ü IÜ+VÜ^‚Ü+áÜM Ý'[ÝƒÝ‰ÝŽÝ ”Ý ¡Ý®ÝµÝ¸Ý¼ÝÁÝÇÝ×Ý)ôÝÞ#;Þ_ÞuÞ6ÞÆÞ'æÞß=ß4º™ËêãiweJÞ"ÏðV!DÄͶ³Û¹V3jØõu÷ôdiWþÕäFDò3ùTÌŽ$ƒ÷PùbðuýÁH¾˜›¹…-0gÆŸC+)¼Ï¶¿û2YÙX`dÁ€cp£ â€B–yl#h>@-îŠS×UãYP1|öœë‰ž·”|«8/λ—Œc?í­(ɇȥ9à‚toä©ç¡ ßÚ§6fA7Ò_*¼¢5¸EˆóI‘s‰>wžÅÒÔ0ÖêÃô¦<Ù“O«GŽ#"¾¿²MèÇ´\!*A7JŒ“­:I }ÑmеrWׯQšqXÿ/'ŸÈó•sF{àýC(¦qva ÓÊÝÜüZåé訽+–¡{憧_5®=]¥Zí²=B¬„]alt™·ßK@1 TÑ‹ ¯y' ½É ±é—¤`ô‡,þS %Ó°vö˜RÚm®»6ÎÅ ~ØÔúµÝ ”£ ì^’ÜxNñÀÐ.œ<Ǻx4áHïúÐgR±Âìj2 òûˆ„^KLå©n $:‹&Í\çæE’ëhîõÿÆzøN…~Õ‚Â[‘økr;Þ á;ËM&¤)%Ìfb}U³•ï° kO¸ª.ÊQñšozªLÀ9n[?Ä¢¨G¬›eâ ,† üÛp8Ö (modified) (unsaved)%d entry%d entries%d error%d errors%d issue with the translation found.%d issues with the translation found.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd commentAdd directory to the listAdd files…Add folders…Add projectAdditional keywordsAdvancedAll Translation FilesAll stringsAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAutomatically check for updatesAutomatically compile MO file when savingBackBase path:Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesCancelCancelling…Cannot create temporary directory.Cannot execute program: %sCapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCode OccurrencesCode occurrencesCollecting source files…CommentComment:Compile to MO…Compile to…Compiled Translation FilesConfirmationCopyCopy from Source TextCopy from source textCorrect Spelling AutomaticallyCouldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustomize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete from translation memoryDelete projectDelete the commentDelete the projectDirectories:Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExport as…Export to HTML…Failed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn moreLearn more about %sLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishMO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Needs WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNoNo Matches FoundNo matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot authorized, please sign in again.OKOneOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPermission denied.Placeholder “%s†is missing from translation.Please open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.PluralPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatedPreferencesPreferences...Preferences…Previous source textProject name and version:Project name:Project:ProjectsPunctuation checksPurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettings…Show SidebarShow Spelling and GrammarShow Status BarShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSource code charset:Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources keywordsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String identifier: %sString length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.SyncSync with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTeam name and email address or URLText ReplacementThe changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation starts with a space, but the source text doesn’t.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There were errors when loading the file. Some data may be missing or corrupted as the result.This JSON file isn’t a translations file and cannot be edited in Poedit.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate allUpdate all catalogs in the projectUpdate from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom list font:Use custom text fields font:Use default rules for this languageUse translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundXLIFF Translation FilesYesYou can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);go to item at given line numberhandle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Punjabi Language: pa_IN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: pa-IN X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (ਸੋਧੀ) (ਨਾ-ਸੰਭਾਲਿਆ)%d ਦਾਖਲ ਚੀਜ਼%d ਦਾਖਲ ਚੀਜ਼ਾਂ%d ਗਲਤੀ%d ਗਲਤੀਆਂਟਰਾਂਸਲੇਸ਼ਨ ਵਿੱਚ %d ਮਸਲਾ ਮਿਲਿਆ।ਅਨà©à¨µà¨¾à¨¦ ਵਿੱਚ %d ਮਸਲੇ ਮਿਲੇ।%s ਫਾਰਮੈਟ%s ਮੇਰੀ ਪਸੰਦ%s ਫਾਰਮੈਟਇਸ ਬਾਰੇ(&A)ਪੋà¨à¨¡à¨¿à¨Ÿ ਬਾਰੇ(&A)ਲਾਗੂ ਕਰੋ(&A)ਪਿੱਛੇ(&B)ਰੱਦ ਕਰੋ(&C)ਸਾਫ਼ ਕਰੋ(&C)ਬੰਦ ਕਰੋ(&C)ਕਾਪੀ ਕਰੋ(&C)ਹਟਾਓ(&D)ਮà©à¨•ੰਮਲ ਤੇ ਅੱਗੇ(&D)ਮà©à¨•ੰਮਲ ਤੇ ਅੱਗੇ(&D)ਸੋਧੋ(&E)ਫ਼ਾਈਲ(&F)ਲੱਭੋ(&F)…&GNU gettext ਦਸਤਾਵੇਜ਼&GNU gettext ਦਸਤਾਵੇਜ਼ਜਾਓ(&G)ਮਦਦ(&H)ਨਵਾਂ(&N)ਨਵਾਂ(&N)…ਅੱਗੇ(&N) >ਅਗਲਾ ਅਨà©à¨µà¨¾à¨¦(&N)ਅਗਲਾ ਅਨà©à¨µà¨¾à¨¦(&N)ਨਹੀਂ(&N)ਠੀਕ ਹੈ(&O)ਆਨਲਾਈਨ ਮਦਦ(&O)ਆਨਲਾਈਨ ਮਦਦ(&O)ਖੋਲà©à¨¹à©‹(&O)...ਖੋਲà©à¨¹à©‹(&O)…ਚੇਪੋ(&P)ਮੇਰੀ ਪਸੰਦ(&P)ਮੇਰੀ ਪਸੰਦ(&P)…ਪਿਛਲਾ ਅਨà©à¨µà¨¾à¨¦(&P)ਪਿਛਲਾ ਅਨà©à¨µà¨¾à¨¦(&P)ਵਿਸ਼ੇਸ਼ਤਾ(&P)…ਹਟਾਠਗਠਅਨà©à¨µà¨¾à¨¦ ਨੂੰ ਕੱਢੋ(&P)ਹਟਾਠਗਠਅਨà©à¨µà¨¾à¨¦ ਨੂੰ ਕੱਢੋ(&P)ਬਾਹਰ(&Q)ਪਰਤਾਓ(&R)ਬਦਲੋ(&R)ਸੰਭਾਲੋ(&S)ਇਸ ਵਜੋਂ ਸੰਭਾਲੋ(&S)ਸ਼à©à¨°à©‚ਆਤੀ ਵਿੰਡੋ(&S)ਸ਼à©à¨°à©‚ਆਤੀ ਵਿੰਡੋ(&S)ਟਰਾਂਸਲੇਸ਼ਨ(&T)ਵਾਪਿਸ ਲਵੋ(&U)ਗ਼ੈਰ-ਅਨà©à¨µà¨¾à¨¦ à¨à¨‚ਟਰੀਆਂ ਪਹਿਲਾਂ(&U)ਗ਼ੈਰ-ਅਨà©à¨µà¨¾à¨¦ à¨à¨‚ਟਰੀਆਂ ਪਹਿਲਾਂ(&U)ਸਰੋਤ ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ(&U)ਸਰੋਤ ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ(&U)ਵੇਖੋ(&V)ਹਾਂ(&Y)(ਮੂਲ ਭਾਸ਼ਾ ਵਰਤੋਂ)(ਸਾਈਨ ਇਨ ਨਹੀਂ ਹੈ)(ਵਿੰਡੋਜ਼ 8 ਜਾਂ ਨਵੀਂ ਚਾਹੀਦੀ ਹੈ)< ਪਿੱਛੇ(&P)<ਬੇਨਾਮ>%s ਬਾਰੇਖਾਤਾਖਾਤੇਜੋੜੋਟਿੱਪਣੀ ਜੋੜੋਫ਼ਾਈਲਾਂ ਜੋੜੋ…ਫੋਲਡਰ ਜੋੜੋ…ਪਰੋਜੈਕਟ ਜੋੜੋਟਿੱਪਣੀ ਜੋੜੋਡਾਇਰੈਕਟਰੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲਫ਼ਾਈਲਾਂ ਜੋੜੋ…ਫੋਲਡਰ ਜੋੜੋ…ਪਰੋਜੈਕਟ ਜੋੜੋਵਾਧੂ ਕੀਵਰਡਤਕਨੀਕੀਸਾਰੀਆਂ ਅਨà©à¨µà¨¾à¨¦ ਫ਼ਾਇਲਾਂਨਵੀਂਆਂ ਸਤਰਾਂਹਮੇਸ਼ਾ ਪਾਠ ਲਿਖਣ ਖੇਤਰ 'ਤੇ ਹੀ ਕੇਂਦਰਿਤ ਕਰੋਇੰਪà©à©±à¨Ÿ ਫਾਇਲ ਲਿਸਟ ਵਿੱਚ ਇਕਾਈ:ਸ਼ਬਦ ਲਿਸਟ 'ਚ ਇੱਕ ਇਕਾਈ:ਦਿੱਖਲਾਗੂ ਕਰੋਆਟੋਮੈਟਿਕ ਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕਰੋਸੰਭਾਲਣ ਉੱਤੇ ਆਟੋਮੈਟਿਕ ਹੀ MO ਫ਼ਾਈਲ ਕੰਪਾਈਲ ਕਰੋਪਿੱਛੇਮà©à©±à¨– ਮਾਰਗ:ਸਭ ਤੋਂ ਅੱਗੇ ਲਿਆਓਖਰਾਬ PO ਫ਼ਾਈਲ: ਬਹà©à¨µà¨šà¨¨ ਕਿਸਮ msgstr ਨੂੰ msgid_plural ਤੋਂ ਬਿਨਾਂ ਵਰਤਿਆਖਰਾਬ PO ਫ਼ਾਈਲ: ਇੱਕਵਚਨ ਕਿਸਮ msgstr ਨੂੰ msgid_plural ਨਾਲ ਇਕੱਠੇ ਵਰਤਿਆਅਨà©à¨µà¨¾à¨¦ ਸਤਰ ਵਿੱਚ ਖਰਾਬ ਮਾਰਕਅੱਪ।à¨à¨²à¨•ਫਾਈਲਾਂ ਦੀ à¨à¨²à¨•ਰੱਦ ਕਰੋਰੱਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…ਆਰਜ਼ੀ ਡਾਇਰੈਕਟਰੀ ਬਣਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ।ਪà©à¨°à©‹à¨—ਰਾਮ ਚਲਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ: %sਅੰਗਰੇਜ਼ੀ ਦੇ ਵੱਡੇ ਅੱਖਰਕੈਟਾਲਾਗ ਮੈਨੇਜਰ(&M)ਕੈਟਾਲਾਗ ਮੈਨੇਜਰ(&m)ਕੈਟਲਾਗ ਮੈਨੇਜਰUI ਭਾਸ਼ਾ ਬਦਲੋਅੱਖਰ-ਸੈਟ :ਦਸਤਾਵੇਜ਼ ਦੀ ਹà©à¨£à©‡ ਜਾਂਚ ਕਰੋਲਿਖਣ ਦੇ ਨਾਲ ਨਾਲ ਵਿਆਕਰਨ ਦੀ ਜਾਂਚ ਕਰੋਲਿਖਣ ਦੇ ਨਾਲ ਨਾਲ ਹੀ ਸ਼ਬਦ-ਜੋੜ ਚੈੱਕ ਕਰੋਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕਰੋ…ਅੱਪਡੇਟਾਂ ਲਈ ਜਾਂਚ ਕਰੋ…ਸ਼ਬਦ-ਜੋੜ ਜਾਂਚ ਕਰੋਸਾਫ਼ ਕਰੋਮੇਨੂ ਸਾਫ਼ ਕਰੋਅਨà©à¨µà¨¾à¨¦ ਮਿਟਾਓਮੇਨੂ ਸਾਫ਼ ਕਰੋਅਨà©à¨µà¨¾à¨¦ ਮਿਟਾਓਬੰਦ ਕਰੋਕੋਡ ਮੌਜੂਦਗੀਆਂਕੋਡ ਮੌਜੂਦਗੀਆਂਸਰੋਤ ਫ਼ਾਈਲਾਂ ਨੂੰ ਇਕੱਠਾ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…ਟਿੱਪਣੀਟਿੱਪਣੀ:…MO ਵਜੋਂ ਕੰਪਾਈਲ ਕਰੋਇੱਥੇ ਕੰਪਾਇਲ ਕਰੋ…ਕੰਪਾਇਲ ਕੀਤੀਆਂ ਅਨà©à¨µà¨¾à¨¦ ਫਾਈਲਾਂਤਸਦੀਕਕਾਪੀ ਕਰੋਸਰੋਤ ਲਿਖਤ ਤੋਂ ਕਾਪੀ ਕਰੋਸਰੋਤ ਲਿਖਤ ਤੋਂ ਕਾਪੀ ਕਰੋਆਪਣੇ-ਆਪ ਹੀ ਸ਼ਬਦ-ਜੋੜ ਠੀਕ ਕਰੋਫ਼ਾਈਲ ਨੂੰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਸ਼ਾਇਦ ਇਹ ਖ਼ਰਾਬ ਹੈ।%s ਫਾਈਲ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕੀ।ਨਵਾਂ ਬਣਾਓਨਵਾਂ ਅਨà©à¨µà¨¾à¨¦ ਬਣਾਓPOT ਟੈਮਪਲੇਟ ਤੋਂ ਨਵਾਂ ਅਨà©à¨µà¨¾à¨¦ ਬਣਾਓਨਵਾਂ ਭਾਸ਼ਾ ਅਨà©à¨µà¨¾à¨¦ ਪà©à¨°à©‹à¨œà©ˆà¨•ਟ ਬਣਾਓCrowdin ਗਲਤੀਕੱਟੋ(&t)ਟੂਲਬਾਰ ਨੂੰ ਕਸਟਮਾਈਜ਼ ਕਰੋ…ਕੱਟੋਡਿਸਕ ਉੱਤੇ ਡਾਟਾਬੇਸ:ਹਟਾਓਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀ ਵਿੱਚੋਂ ਹਟਾਓਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀ ਵਿੱਚੋਂ ਹਟਾਓਪਰੋਜੈਕਟ ਨੂੰ ਹਟਾਓਟਿੱਪਣੀ ਹਟਾਓਪਰੋਜੈਕਟ ਹਟਾਓਡਾਇਰੈਕਟਰੀ:ਕੀ ਤà©à¨¸à©€à¨‚ ਡਿਸਕ ਤੋਂ ਫ਼ਾਈਲ ਮà©à©œ-ਲੋਡ ਕਰਨੀ ਹੈ? ਅਜਿਹਾ ਕਰਨ ਨਾਲ Poedit ਵਿੱਚ ਨਾ-ਸੰਭਾਲੇ ਸੰਪਾਦਨ ਖà©à©°à¨ ਜਾਣਗੇ।ਕੀ ਤà©à¨¸à©€à¨‚ ਸਭ ਅਨà©à¨µà¨¾à¨¦à¨¾à¨‚ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ, ਜੋ ਕਿ ਹà©à¨£ ਵਰਤੋਂ ਯੋਗ ਨਹੀਂ ਹਨ?ਨਾ ਸੰਭਾਲੋ(&n)ਨਾ ਸੰਭਾਲੋਮà©à©œ ਨਾ ਦਿਖਾਓਮà©à©œ ਨਾ ਦਿਖਾਓਤਾਜ਼ੇ ਅਨà©à¨µà¨¾à¨¦à¨¾à¨‚ ਨੂੰ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…ਇਸ ਪà©à¨°à©‹à¨œà©ˆà¨•ਟ ਦੇ ਅਨà©à¨µà¨¾à¨¦ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਸà©à¨µà¨¿à¨§à¨¾ ਬੰਦ ਹੈ।ਫੋਲਡਰ ਜਾਂ ਫ਼ਾਈਲਾਂ ਇੱਥੇ ਖਿੱਚੋਫੋਲਡਰ ਜਾਂ ਫਾਈਲਾਂ ਇੱਥੇ ਖਿੱਚੋਬਾਹਰ(&x)ਸੋਧਟਿੱਪਣੀ ਸੋਧ(&C)ਟਿੱਪਣੀ ਸੋਧ(&c)ਟਿੱਪਣੀ ਸੋਧੋਟਿੱਪਣੀ ਸੋਧਪਰੋਜੈਕਟ ਸੋਧੋਪਰੋਜੈਕਟ ਸੋਧਸੋਧਿਆ ਜਾਂਦਾ ਹੈਸੋਧੋ…ਈਮੇਲ:ਪੂਰੀ ਸਕਰੀਨ ਉਤੇ ਜਾਓਇਸ ਫ਼ਾਈਲ ਵਿਚਲੇ ਇੰਦਰਾਜਾਂ ਦੇ ਵੱਖੋ-ਵੱਖਰੇ ਬਹà©à¨µà¨šà¨¨ ਹਨ ਜੋ ਇਸ ਫ਼ਾਈਲ ਦੇ ਬਹà©à¨µà¨šà¨¨ ਵਾਲੇ ਸਿਰਲੇਖ ਦੇ ਉਲਟ ਹੈਖਾਮੀਆਂ ਵਾਲੇ ਇੰਦਰਾਜਾਂ ਨੂੰ ਸੂਚੀ ਵਿੱਚ ਲਾਲ ਰੰਗ ਲਗਾਇਆ ਗਿਆ। ਕਿਸੇ ਇੰਦਰਾਜ ਨੂੰ ਚà©à¨£à¨¨ ਨਾਲ ਉਸ ਵਿਚਲੀ ਖਾਮੀ ਦੇ ਵੇਰਵੇ ਦਿਸਣਗੇ।ਫਾਈਲ ਖੋਲà©à¨¹à¨£ ਦੌਰਾਨ ਗਲਤੀਫ਼ਾਈਲ ਸੰਭਾਲਣ ਵੇਲੇ ਖਾਮੀXLIFF ਫ਼ਾਈਲ ਨੂੰ ਲੋਡ ਕਰਨ ਵੇਲੇ ਗੜਬੜ ਹੋਈ: %sਗ਼ਲਤੀਆਂਹਰ ਚੀਜ਼…ਵਜੋਂ à¨à¨•ਸਪੋਰਟ…HTML ਵਜੋਂ ਦਰਾਮਦ ਕਰੋPoedit ਪà©à¨°à¨•ਿਰਿਆ ਨਾਲ ਸੰਚਾਰ ਨਹੀਂ ਹੋਇਆ।ਕੱਢੇ ਗਠਅਨà©à¨µà¨¾à¨¦à¨¾à¨‚ ਵਾਲੀ ਫ਼ਾਈਲ ਲੋਡ ਕਰਨਾ ਅਸਫ਼ਲ ਰਿਹਾ।gettext ਸਾਰਨੀਆਂ ਵਿੱਚ ਮਿਲਾਨ ਕਰਨਾ ਅਸਫ਼ਲ ਰਿਹਾ।ਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਫੇਲà©à¨¹: %sਫ਼ਾਈਲਫਾਈਲ ਖੋਲà©à¨¹à©€ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈਫ਼ਾਈਲ “%s†ਮੌਜੂਦ ਨਹੀਂ ਹੈ।ਫਾਈਲ “%s†ਅਨà©à¨µà¨¾à¨¦ ਵਾਲੀ ਫਾਈਲ ਨਹੀਂ ਹੈ।ਫ਼ਾਈਲ “%s†ਸਿਰਫ਼ ਪੜà©à¨¹à¨¨ ਲਈ ਹੈ ਅਤੇ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕਦੀ। ਇਸ ਨੂੰ ਕਿਸੇ ਵੱਖਰੇ ਨਾਂ ਨਾਲ ਸੰਭਾਲੋ।ਲੱਭੋਅੱਗੇ ਲੱਭੋਪਿੱਛੇ ਲੱਭੋ…ਲੱਭੋ ਤੇ ਬਦਲੋਟਿੱਪਣੀ ਵਿੱਚ ਖੋਜਸਰੋਤ ਟੈਕਸਟ ਵਿੱਚ ਲੱਭੋਅਨà©à¨µà¨¾à¨¦ ਵਿੱਚ ਲੱਭੋਅੱਗੇ ਲੱਭੋਪਿੱਛੇ ਲੱਭੋਭਾਸ਼ਾ ਨੂੰ ਠੀਕ ਕਰੋਭਾਸ਼ਾ ਨੂੰ ਠੀਕ ਕਰੋਸਿਰਲੇਖ ਠੀਕ ਕਰੋਸਿਰਲੇਖ ਠੀਕ ਕਰੋਫਲੱਟਰ ਅਨà©à¨µà¨¾à¨¦ ਫ਼ਾਈਲਾਂਫਾਰਮ %iਫਾਰਮ %i (unused)GNU gettextਆਮHTML ਫਾਈਲਾਂਮਦਦਬਾਹੀ ਓਹਲੇ ਕਰੋਹਾਲਤ ਪੱਟੀ ਓਹਲੇ ਕਰੋਇਹ ਸੂਚਨਾ ਸà©à¨¨à©‡à¨¹à¨¾ ਓਹਲੇ ਕਰੋਕਲਾਉਡ ਸਿੰਕ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ?ਆਈਡੀਜੇਕਰ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਪਹਿਲਾਂ ਵੀ ਤà©à¨¹à¨¾à¨¡à©€à¨†à¨‚ ਫ਼ਾਈਲਾਂ ਤੱਕ ਜਾਣ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ, ਤਾਂ ਤà©à¨¸à©€à¨‚ ਸਿਸਟਮ ਤਰਜੀਹਾਂ > ਸà©à¨°à©±à¨–ਿਆ ਅਤੇ ਪਰਦੇਦਾਰੀ > ਪਰਦੇਦਾਰੀ > ਫ਼ਾਈਲਾਂ ਅਤੇ ਫ਼ੋਲਡਰਾਂ ਵਿੱਚ ਇਹ ਇਜਾਜ਼ਤ ਦੇ ਸਕਦੇ ਹੋ।ਜੇਕਰ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਪਹਿਲਾਂ ਵੀ ਤà©à¨¹à¨¾à¨¡à©€à¨†à¨‚ ਫ਼ਾਈਲਾਂ ਤੱਕ ਜਾਣ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ, ਤਾਂ ਤà©à¨¸à©€à¨‚ ਸਿਸਟਮ ਸੈਟਿੰਗਾਂ > ਪਰਦੇਦਾਰੀ ਤੇ ਸà©à¨°à©±à¨–ਿਆ > ਫ਼ਾਈਲਾਂ ਅਤੇ ਫ਼ੋਲਡਰਾਂ ਵਿੱਚ ਇਹ ਇਜਾਜ਼ਤ ਦੇ ਸਕਦੇ ਹੋ।ਅਣਗੌਲਿਆ ਕਰੋਅੱਖਰ ਅਕਾਰ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰੋTMX ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ…ਅਨà©à¨µà¨¾à¨¦ ਫਾਈਲਾਂ ਇੰਪੋਰਟ ਕਰੋ…TMX ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ…ਅਨà©à¨µà¨¾à¨¦ ਫਾਈਲਾਂ ਇੰਪੋਰਟ ਕਰੋ…ਅਨà©à¨µà¨¾à¨¦ ਇੰਪੋਰਟ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ…ਇਸ ਵਿੱਚ: %sਬੀਟਾ ਵਰਜਨ ਸਮੇਤਅਨà©à¨µà¨¾à¨¦à¨• ਬਾਰੇ ਜਾਣਕਾਰੀਇੰਸਟਾਲ ਕਰੋਗਲਤ ਫ਼ਾਈਲਸਹਾਇਤਾ :JSON ਅਨà©à¨µà¨¾à¨¦ ਫ਼ਾਈਲਾਂਰੱਖੋਭਾਸ਼ਾ ਦਾ ਨਾਂ ਜਾਂ ਕੋਡਅਨà©à¨µà¨¾à¨¦ ਦੀ ਭਾਸ਼ਾ ਅਤੇ ਸਰੋਤ ਦੀ ਭਾਸ਼ਾ ਇੱਕੋ ਹੈ।ਅਨà©à¨µà¨¾à¨¦ ਦੀ ਭਾਸ਼ਾ ਸੈੱਟ ਨਹੀਂ ਹੈ।ਅਨà©à¨µà¨¾à¨¦ ਦੀ ਭਾਸ਼ਾ:ਭਾਸ਼ਾ ਚੋਣਭਾਸ਼ਾ ਟੀਮ:ਭਾਸ਼ਾ:ਆਖਰੀ ਸੋਧgettext ਕੀਵਰਡ ਬਾਰੇ ਜਾਣੋਹੋਰ ਜਾਣੋ%s ਬਾਰੇ ਹੋਰ ਜਾਣੋCrowdin ਬਾਰੇ ਹੋਰ ਜਾਣੋਫ਼ਾਈਲ “%2$s†ਦੀ ਕਤਾਰ %1$d ਵਿੱਚ ਖਰਾਬੀ ਹੈ (ਵਾਜਬ %3$s ਡਾਟਾ ਨਹੀਂ)।ਲਾਈਨ ਸਮਾਪਤੀ:ਇਕਸਟੈਸ਼ਨਾਂ ਦੀ ਲਿਸਟ ਅਰਧ ਕਾਮਿਆਂ ਨਾਲ ਲਿਖੋ (ਜਿਵੇ ਕਿ *.cpp;*.h):ਅੰਗਰੇਜ਼ੀ ਲੋਡ ਕਰੋMO ਫ਼ਾਈਲਾਂ ਦਾ Poedit ਵਿੱਚ ਸਿੱਧੇ ਸੰਪਾਦਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।ਲੋਅਰਕੇਸ ਬਣਾਓਅੱਪਰਕੇਸ ਬਣਾਓਇਸ POT ਫਾਈਲ ਤੋਂ ਨਵੀਂ ਟਰਾਂਸਲੇਸ਼ਨ ਬਣਾਓ।ਨà©à¨•ਸਦਾਰ ਸਿਰਲੇਖ: “%sâ€à¨–ਾਤਿਆਂ ਦਾ ਇੰਤਜ਼ਾਮ ਕਰੋ…ਇੰਤਜ਼ਾਮਫ਼ਰਕਾਂ ਨੂੰ ਮਿਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ…ਘੱਟੋ-ਘੱਟਅਨà©à¨µà¨¾à¨¦ ਦੇ ਪà©à¨°à©‹à¨œà©ˆà¨•ਟ ਦਾ ਨਾਂਨਾਂ:ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈਨੈੱਟਵਰਕ ਗਲਤੀ: %s (%d)ਸਤਰਾਂ ਦੀ ਸੂਚੀ ਕਦੇ ਕੇਂਦਰਿਤ ਨਾ ਹੋਣ ਦਿਉ। ਜੇ à¨à¨¦à¨¾à¨‚ ਹੈ ਤਾਂ ਤà©à¨¸à©€à¨‚ ਕੀਬੋਰਡ ਦੇ Ctrl- ਤੀਰ ਬਟਨਾਂ ਨਾਲ ਚੱਲ ਸਕਦੇ ਹੋ, ਪਰ ਤà©à¨¸à©€ Tab ਦਬਾਠਬਿਨਾਂ ਵੀ ਤà©à¨°à©°à¨¤ ਲਿਖ ਸਕਦੇ ਹੋ।ਨਵਾਂ&POT/PO ਫ਼ਾਈਲ ਤੋਂ ਨਵਾਂ…&POT/PO ਫ਼ਾਈਲ ਤੋਂ ਨਵਾਂ…ਨਵੀਂਆਂ ਸਤਰਾਂਨਹੀਂਕੋਈ ਮੇਲ ਨਹੀਂ ਲੱਭੇਕੋਈ ਮੇਲ ਨਹੀਂ ਲੱਭਿਆਅਨà©à¨µà¨¾à¨¦ ਵਿੱਚ ਕੋਈ ਖਾਮੀ ਨਹੀ ਲੱਭੀ।ਤà©à¨¹à¨¾à¨¡à©‡ ਖਾਤੇ ਵਿੱਚ ਕੋਈ ਅਨà©à¨µà¨¾à¨¦ ਪà©à¨°à©‹à¨œà©ˆà¨•ਟ ਨਹੀਂ ਹੈ।ਕੋਈ ਵਰਤੋਂ ਜਾਣਕਾਰੀ ਨਹੀਂਅਧਿਕਾਰ ਨਹੀਂ ਹੈ, ਦà©à¨¬à¨¾à¨°à¨¾ ਸਾਈਨ ਇਨ ਕਰੋ।ਠੀਕ ਹੈਇੱਕਕਲਾਉਡ ਅਨà©à¨µà¨¾à¨¦ ਖੋਲà©à¨¹à©‹â€¦à¨¸à©±à¨œà¨°à©‡ ਖੋਲà©à¨¹à©‡à¨…ਨà©à¨µà¨¾à¨¦ ਫਾਈਲਾਂ ਨੂੰ ਖੋਲà©à¨¹à©‹ ਅਤੇ ਸੋਧੋਕਲਾਉਡ ਅਨà©à¨µà¨¾à¨¦ ਖੋਲà©à¨¹à©‹à¨•ਲਾਉਡ ਅਨà©à¨µà¨¾à¨¦ ਖੋਲà©à¨¹à©‹â€¦à¨«à¨¼à¨¾à¨ˆà¨² ਖੋਲà©à¨¹à©‹à¨à¨¡à©€à¨Ÿà¨° ਵਿੱਚ ਖੋਲà©à¨¹à©‹à¨à¨¡à©€à¨Ÿà¨° ਵਿੱਚ ਖੋਲà©à¨¹à©‹à¨¸à©±à¨œà¨°à©‡ ਖੋਲà©à¨¹à©‹à¨–ੋਲà©à¨¹à©‹â€¦à¨–ੋਲà©à¨¹à©‹â€¦à¨šà©‹à¨£à¨¾à¨‚ਹੋਰPO ਅਨà©à¨µà¨¾à¨¦ ਫਾਈਲਾਂPOT ਅਨà©à¨µà¨¾à¨¦ ਟੈਂਪਲੇਟPOT ਫਾਈਲਾਂ ਸਿਰਫ਼ ਟੈਂਪਲੇਟ ਹà©à©°à¨¦à©€à¨†à¨‚ ਹਨ ਅਤੇ ਖà©à¨¦ ਕੋਈ ਟਰਾਂਸਲੇਸ਼ਨ ਨਹੀਂ ਰੱਖਦੀਆਂ। ਟਰਾਂਸਲੇਸ਼ਨ ਕਰਨ ਲਈ ਟੈਂਪਲੇਟ ਦੇ ਅਧਾਰ ਉੱਤੇ ਨਵੀਂ PO ਫਾਈਲ ਬਣਾਓ।ਚੇਪੋਚੇਪੋ ਅਤੇ ਮਿਲਾਨ ਸਟਾਈਲਮਾਰਗਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੱਤੀ ਗਈ।ਅਨà©à¨µà¨¾à¨¦ ਵਿੱਚੋਂ “%s†ਨਿਸ਼ਾਨ ਖà©à©°à¨à¨¿à¨† ਹੈ।ਕਿਰਪਾ ਕਰਕੇ ਇਸਦੀ ਬਜਾਠਸਬੰਧਿਤ PO ਫ਼ਾਈਲ ਖੋਲà©à¨¹ ਕੇ ਸੰਪਾਦਨ ਕਰੋ। ਇਸਦੇ ਸੰਭਾਲੇ ਜਾਣ 'ਤੇ MO ਫ਼ਾਈਲ ਵੀ ਅੱਪਡੇਟ ਹੋ ਜਾਵੇਗੀ।ਬਹà©à¨µà¨šà¨¨à¨‡à¨¸ ਫ਼ਾਈਲ ਵਿੱਚ ਵਰਤਿਆ ਬਹà©à¨µà¨šà¨¨ ਕਥਨ %s ਮà©à¨¤à¨¾à¨¬à¨• ਠੀਕ ਨਹੀਂ ਹੈ।ਬਹà©à¨µà¨šà¨¨ ਰੂਪ:ਪੋਆਡਿਟਪੋਆਡਿਟ - ਕੈਟਾਲਾਗ ਮੈਨੇਜਰPoedit ਨੇ ਫ਼ਾਈਲ “%s†ਵਿਚਲੀ ਅਢà©à¨•ਵੀਂ ਸਮੱਗਰੀ ਨੂੰ ਆਪਣੇ-ਆਪ ਠੀਕ ਕੀਤਾ।Poedit ਵਰਤਣ ਲਈ ਸੌਖਾ ਅਨà©à¨µà¨¾à¨¦ ਸੰਪਾਦਕ ਹੈ।Poedit “%s†ਫ਼ਾਈਲ ਖੋਲà©à¨¹à¨£ ਲਈ ਅਸਮਰੱਥ ਸੀ।ਕੱਚਾ-ਅਨà©à¨µà¨¾à¨¦(&t)…ਕੱਚਾ-ਅਨà©à¨µà¨¾à¨¦à¨®à©‡à¨°à©€ ਪਸੰਦਮੇਰੀ ਪਸੰਦ...ਮੇਰੀ ਪਸੰਦ…ਪਿਛਲੀ ਸਰੋਤ ਲਿਖਤਪਰੋਜੈਕਟ ਨਾਂ ਅਤੇ ਵਰਜ਼ਨ:ਪਰੋਜੈਕਟ ਨਾਂ:ਪਰੋਜੈਕਟ:ਪਰੋਜੈਕਟਵਿਸ਼ਰਾਮ-ਚਿੰਨà©à¨¹ ਦੀ ਜਾਂਚਹਟਾਠਗਠਅਨà©à¨µà¨¾à¨¦ ਨੂੰ ਕੱਢੋਬਾਹਰਅੱਗੇ ਦਿੱਤੀ ਗੜਬੜ ਕਰਕੇ ਫ਼ਾਈਲ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਪੜà©à¨¹à¨¿à¨† ਨਹੀਂ ਜਾ ਸਕਿਆ: %sਸੱਜਰੀਆਂ ਫਾਈਲਾਂਵਾਪਿਸ ਕਰੋਤਾਜ਼ਾ ਕਰੋਫਾਈਲ ਮà©à©œ-ਲੋਡ ਕਰੋਫ਼ਾਈਲ ਮà©à©œ-ਲੋਡ ਕਰੋਬਾਕੀ: %dਹਟਾਓਤਬਦੀਲਸਾਰਿਆਂ ਨੂੰ ਬਦਲੋ(&A)ਸਾਰਿਆਂ ਨੂੰ ਬਦਲੋ(&a)ਬਦਲਵੀ ਸਤਰਬਦਲੋ…ਬਹà©à¨µà¨šà¨¨ ਲਈ ਲੋੜੀਂਦਾ ਸਿਰਲੇਖ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।ਮà©à©œ-ਸੈੱਟ ਕਰੋFinder ਵਿੱਚ ਦਿਖਾਓਪੜਤਾਲਸੰਭਾਲੋ…ਵਜੋਂ ਸੰਭਾਲੋ(&A)…ਵਜੋਂ ਸੰਭਾਲੋ(&a)ਫ਼ਿਰ ਵੀ ਸੰਭਾਲੋਫ਼ਿਰ ਵੀ ਸੰਭਾਲੋਵਜੋਂ ਸੰਭਾਲੋ…ਵਜੋਂ ਸੰਭਾਲੋਤਬਦੀਲੀਆਂ ਸੰਭਾਲੋਫ਼ਾਈਲ ਸੰਭਾਲੋਸਕਰੀਨਸ਼ਾਟ:ਸਭ ਚà©à¨£à©‹(&A)ਸਭ ਚà©à¨£à©‹à¨¡à¨¾à¨‡à¨°à©ˆà¨•ਟਰੀ ਚà©à¨£à©‹à¨…ਨà©à¨µà¨¾à¨¦ ਫਾਈਲ ਚà©à¨£à©‹à¨‡à©°à¨ªà©‹à¨°à¨Ÿ ਕਰਨ ਲਈ ਅਨà©à¨µà¨¾à¨¦ ਫਾਈਲਾਂ ਚà©à¨£à©‹à¨…ਨà©à¨µà¨¾à¨¦ ਟੈਂਪਲੇਟ ਚà©à¨£à©‹à¨†à¨ªà¨£à©€ ਪਸੰਦ ਦੀ ਭਾਸ਼ਾ ਚà©à¨£à©‹à¨­à¨¾à¨¸à¨¼à¨¾ ਦਿਓਭਾਸ਼ਾ ਦਿਓਸੈਟਿੰਗਾਂ…ਬਾਹੀ ਵੇਖਾਓਸ਼ਬਦ-ਜੋੜ ਅਤੇ ਵਿਆਕਰਨ ਵੇਖਾਓਹਾਲਤ ਪੱਟੀ ਵੇਖਾਓਤਬਾਦਲੇ ਦਿਖਾਓਟੂਲਬਾਰ ਦਿਖਾਓਚਿਤਾਵਨੀ ਦਿਖਾਓà¨à¨•ਸਪਲੋਰਰ ਵਿੱਚ ਵੇਖਾਓਫੋਲਡਰ ਵਿੱਚ ਵੇਖਾਓਬਾਹੀ ਵੇਖੋ ਜਾਂ ਓਹਲੇ ਕਰੋਬਾਹੀ ਵੇਖਾਓਹਾਲਤ ਪੱਟੀ ਵੇਖਾਓਚਿਤਾਵਨੀ ਦਿਖਾਓਬਾਹੀਸਾਈਨ ਇਨਸਾਈਨ ਆਉਟਸਾਈਨ ਇਨ%s ਵਿੱਚ ਸਾਈਨ ਇਨ ਕਰੋਕਲਾਉਡ ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ ਇਨ ਕਰੋCrowdin ਵਿੱਚ ਦਾਖਲ ਹੋਵੋਕਲਾਉਡ ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ ਇਨ ਕਰੋਸਾਈਨ ਆਉਟਇੱਕ ਵਚਨਚà©à¨¸à¨¤ ਕਾਪੀ ਕਰਨਾ/ਚੇਪਣਾਸਮਾਰਟ ਡੈਸ਼ਾਂਸਮਾਰਟ ਲਿੰਕਾਂਸਮਾਰਟ ਕੋਟਸਰੋਤ ਕੋਡ ਅੱਖਰ ਸਮੂਹ:ਸਰੋਤ ਕੋਡ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।ਸਰੋਤ ਕੋਡ ਨਹੀਂ ਮਿਲਿਆਸਰੋਤ ਲਿਖਤਸਰੋਤ ਲਿਖਤ IDਸਰੋਤ ਲਿਖਤ — %sਸਰੋਤ ਸ਼ਬਦਸਰੋਤ ਕੀਵਰਡਸਪੀਚਸ਼ਬਦ-ਜੋੜ ਜਾਂਚ ਬੰਦ ਹੈ, ਕਿਉਂਕਿ %s ਦਾ ਸ਼ਬਦਕੋਸ਼ ਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ।ਸ਼ਬਦ-ਜੋੜ ਅਤੇ ਵਿਆਕਰਨਬੋਲਣਾ ਸ਼à©à¨°à©‚ ਕਰੋਬੋਲਣਾ ਰੋਕੋਸੰਭਾਲੇ ਹੋਠਅਨà©à¨µà¨¾à¨¦:ਸਤਰ ਪਛਾਣਕਰਤਾ: %sਅੱਖਰਾਂ ਵਿੱਚ ਸਤਰ ਦੀ ਲੰਬਾਈਅੱਖਰਾਂ ਵਿੱਚ ਸਤਰ ਦੀ ਲੰਬਾਈ: ਟਰਾਂਸਲੇਸ਼ਨ | ਸਰੋਤਲੱਭਣ ਲਈ ਸਤਰਤਬਾਦਲੇਸà©à¨à¨¾à¨…ਅਨà©à¨µà¨¾à¨¦ ਦੀ ਭਾਸ਼ਾ ਸਹੀ ਤਰà©à¨¹à¨¾à¨‚ ਸੈੱਟ ਨਾ ਹੋਣ 'ਤੇ ਸà©à¨à¨¾à¨… ਨਹੀਂ ਮਿਲਣਗੇ। ਹੋਰ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ, ਜਿਵੇਂ ਕਿ ਬਹà©à¨µà¨šà¨¨ ਬਣਾਉਣ 'ਤੇ ਵੀ ਸ਼ਾਇਦ ਅਸਰ ਪਵੇ।ਸਿੰਕ ਕਰੋCrowdin ਨਾਲ ਸਿੰਕ ਕਰੋਸਿੰਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈਸਿੰਕ ਕਰਨ ਵਿੱਚ ਗਲਤੀCrowdin ਨਾਲ ਸਮਕਾਲੀਕਰਨ ਅਸਫਲ ਰਿਹਾ।ਬਹà©à¨µà¨šà¨¨ ਸਿਰਲੇਖ ("%s") ਵਿੱਚ ਵਾਕ-ਵਿਉਂਤ ਖਾਮੀ।TMTMX ਫਾਈਲਾਂਟੀਮ ਦਾ ਨਾਂ ਅਤੇ ਈਮੇਲ à¨à¨¡à¨°à©ˆà¨¸ ਜਾਂ URLਲਿਖਤ ਤਬਾਦਲਾਜੇਕਰ ਤà©à¨¸à©€à¨‚ ਸੰਭਾਲਦੇ ਹੋ, ਤਾਂ ਕਿਸੇ ਹੋਰ à¨à¨ªà¨²à©€à¨•ੇਸ਼ਨ ਵੱਲੋਂ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਖà©à©°à¨ ਜਾਣਗੀਆਂ।ਫ਼ਾਈਲ MO ਫ਼ਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਕੀਤੀ ਅਤੇ ਵਰਤੀ ਨਹੀਂ ਜਾ ਸਕਦੀ।ਫ਼ਾਈਲ ਵਿੱਚ ਦੂਹਰੀਆਂ ਆਈਟਮਾਂ ਹਨ, ਜੋ PO ਫ਼ਾਈਲਾਂ ਲਈ ਠੀਕ ਨਹੀਂ ਅਤੇ ਜਿਸ ਕਰਕੇ ਫ਼ਾਈਲ ਵਰਤੀ ਨਹੀਂ ਜਾ ਸਕਦੀ। Poedit ਨੇ ਸਮੱਸਿਆ ਠੀਕ ਕੀਤੀ, ਪਰ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਕਿਸੇ ਵੀ ਉਸ ਆਈਟਮ ਦੇ ਅਨà©à¨µà¨¾à¨¦ ਦੀ ਸਮੀਖਿਆ ਕਰਨੀ ਪਵੇਗੀ ਜਿਸ 'ਤੇ 'ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈ' ਦਾ ਨਿਸ਼ਾਨ ਲੱਗੇ ਅਤੇ ਲੋੜ ਮà©à¨¤à¨¾à¨¬à¨• ਉਸਨੂੰ ਠੀਕ ਕਰਨਾ ਪਵੇਗਾ।ਅਨà©à¨µà¨¾à¨¦ ਦੀਆਂ ਸੈਟਿੰਗਾਂ ਮà©à¨¤à¨¾à¨¬à¨• ਫ਼ਾਈਲ “%s†ਅੱਖਰ-ਸਮੂਹ ਵਿੱਚ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕਦੀ। ਇਹ UTF-8 ਵਿੱਚ ਸੰਭਾਲੀ ਹੋਣ ਕਰਕੇ ਸੈਟਿੰਗ ਨੂੰ ਉਸ ਮà©à¨¤à¨¾à¨¬à¨• ਸੋਧਿਆ ਗਿਆ।ਫ਼ਾਈਲ ਸੋਧੀ ਗਈ। ਕੀ ਤà©à¨¸à©€à¨‚ ਤਬਦੀਲੀਆਂ ਸੰਭਾਲਣੀਆਂ ਹਨ?ਫਾਇਲ ਦਾ ਫਾਰਮੈਟ ਅਜਿਹਾ ਹੈ, ਜਿਸ ਨੂੰ ਪੋ-à¨à¨¡à¨¿à¨Ÿ ਪਛਾਣਦਾ ਨਹੀਂ ਹੈ।ਫ਼ਾਈਲ MO ਫ਼ਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਕੀਤੀ ਗਈ, ਪਰ ਸ਼ਾਇਦ ਇਹ ਸਹੀ ਤਰà©à¨¹à¨¾à¨‚ ਕੰਮ ਨਾ ਕਰੇ।ਫ਼ਾਈਲ ਸਹੀ ਤਰà©à¨¹à¨¾à¨‚ ਸੰਭਾਲੀ ਅਤੇ MO ਫ਼ਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਕੀਤੀ ਗਈ, ਪਰ ਸ਼ਾਇਦ ਇਹ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਨਾ ਕਰੇ।ਫ਼ਾਈਲ ਸਹੀ ਤਰà©à¨¹à¨¾à¨‚ ਸੰਭਾਲੀ ਗਈ, ਪਰ ਇਹ MO ਫ਼ਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਨਹੀਂ ਕੀਤੀ ਅਤੇ ਵਰਤੀ ਨਹੀਂ ਜਾ ਸਕਦੀ।ਫ਼ਾਈਲ ਸà©à¨°à©±à¨–ਿਅਤ ਢੰਗ ਨਾਲ ਸੰਭਾਲੀ ਗਈ।ਫ਼ਾਈਲ “%s†ਖੋਲà©à¨¹à©€ ਨਹੀਂ ਜਾ ਸਕੀ ਹੈ।ਫ਼ਾਈਲ “%s†ਨੂੰ ਕਿਸੇ ਹੋਰ à¨à¨ªà¨²à©€à¨•ੇਸ਼ਨ ਨੇ ਬਦਲ ਦਿੱਤਾ ਹੈ।ਅਨà©à¨µà¨¾à¨¦ ਖਾਲੀ ਥਾਂ ਨਾਲ ਸ਼à©à¨°à©‚ ਨਹੀਂ ਹà©à©°à¨¦à¨¾ ਹੈ।ਅਨà©à¨µà¨¾à¨¦ ਨਵੀਂ ਲਾਈਨ ਨਾਲ ਖਤਮ ਹà©à©°à¨¦à¨¾ ਹੈ, ਪਰ ਸਰੋਤ ਲਿਖਤ ਵਿੱਚ ਨਹੀਂ ਹੈ।ਅਨà©à¨µà¨¾à¨¦ ਖਾਲੀ ਥਾਂ ਨਾਲ ਖਤਮ ਹà©à©°à¨¦à¨¾ ਹੈ, ਪਰ ਸਰੋਤ ਲਿਖਤ ਵਿੱਚ ਨਹੀਂ ਹੈ।ਅਨà©à¨µà¨¾à¨¦ “%s†ਨਾਲ ਖਤਮ ਹà©à©°à¨¦à¨¾ ਹੈ, ਪਰ ਸਰੋਤ ਲਿਖਤ “%s†ਨਾਲ ਖਤਮ ਨਹੀਂ ਹà©à©°à¨¦à©€ ਹੈ।ਅਨà©à¨µà¨¾à¨¦ ਦੇ ਅੰਤ ਵਿੱਚ ਨਵੀਂ-ਲਾਈਨ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।ਅਨà©à¨µà¨¾à¨¦ ਦੇ ਆਖੀਰ ਵਿੱਚ ਖਾਲੀ ਥਾਂ ਨਹੀਂ ਹੈ।ਟਰਾਂਸਲੇਸ਼ਨ ਵਰਤੇ ਜਾਣ ਲਈ ਤਿਆਰ ਹੈ, ਪਰ %d à¨à¨‚ਟਰੀ ਹਾਲੇ ਟਰਾਂਸਲੇਟ ਨਹੀਂ ਹੈ।ਟਰਾਂਸਲੇਸ਼ਨ ਵਰਤੇ ਜਾਣ ਲਈ ਤਿਆਰ ਹੈ, ਪਰ %d à¨à¨‚ਟਰੀਆਂ ਹਾਲੇ ਟਰਾਂਸਲੇਟ ਨਹੀਂ ਹਨ।ਅਨà©à¨µà¨¾à¨¦ ਵਰਤੇ ਜਾਣ ਲਈ ਤਿਆਰ ਹੈ।ਅਨà©à¨µà¨¾à¨¦ “%s†ਨਾਲ ਖਤਮ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।ਅਨà©à¨µà¨¾à¨¦ “%s†ਨਾਲ ਖਤਮ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।ਅਨà©à¨µà¨¾à¨¦ ਖਾਲੀ ਥਾਂ ਨਾਲ ਸ਼à©à¨°à©‚ ਹà©à©°à¨¦à¨¾ ਹੈ, ਪਰ ਸਰੋਤ ਲਿਖਤ ਵਿੱਚ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।ਕੋਈ ਅਨà©à¨µà¨¾à¨¦ ਨਹੀਂ ਹੈ। ਇਹ ਅਸਧਾਰਨ ਹੈ।ਫਾਈਲ ਨੂੰ ਸਹੀ ਤਰà©à¨¹à¨¾à¨‚ ਫਾਰਮੇਟ ਕਰਨ ਵੇਲੇ ਖ਼ਾਮੀ ਆਈ (ਪਰ ਇਹ ਠੀਕ ਤਰà©à¨¹à¨¾à¨‚ ਸੰਭਾਲੀ ਗਈ)।ਫ਼ਾਈਲ ਲੋਡ ਕਰਨ ਵਿੱਚ ਗਲਤੀਆਂ ਸਨ। ਨਤੀਜੇ ਵਜੋਂ ਸ਼ਾਇਦ ਕà©à¨ ਡਾਟਾ ਗà©à©°à¨® ਜਾਂ ਖਰਾਬ ਹੋਵੇ।ਇਹ JSON ਫ਼ਾਈਲ ਅਨà©à¨µà¨¾à¨¦ ਵਾਲੀ ਫ਼ਾਈਲ ਨਹੀਂ ਹੈ ਅਤੇ ਇਸ ਦਾ ਸੰਪਾਦਨ Poedit ਵਿੱਚ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।ਇਸ ਫ਼ਾਈਲ ਵਿੱਚ ਬਹà©à¨µà¨šà¨¨ ਵਾਲੇ ਇੰਦਰਾਜ ਹਨ, ਪਰ ਬਹà©à¨µà¨šà¨¨ ਵਾਲਾ ਸਿਰਲੇਖ ਤੈਅ ਨਹੀਂ ਹੈ।ਇਹ ਲਾਈਨ ਪੋà¨à¨¡à¨¿à¨Ÿ ਦੀ ਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀ ਵਿੱਚ ਲੱਭੀ ਸੀ।ਇਹ ਇੱਕ ਵਾਰ ਕਮਾਂਡ ਲਾਇਨ ਨਾਲ ਹਰੇਕ ਇੰਪà©à©±à¨Ÿ ਫਾਇਲ ਲ਼ਈ ਜà©à¨¡à¨¼ ਜਾਵੇਗਾ। %c ਫਾਇਲ ਨਾਂ ਫੈਲਾ ਦੇਵੇਗਾ।ਇਹ ਇੱਕ ਵਾਰ ਕਮਾਂਡ ਲਾਇਨ ਨਾਲ ਹਰੇਕ ਇੰਪà©à©±à¨Ÿ ਫਾਇਲ ਲਈ ਜà©à¨¡à¨¼ ਜਾਵੇਗਾ। %f ਫਾਇਲ ਨਾਂ ਫੈਲਾ ਦੇਵੇਗਾ।ਇਹ ਇੱਕ ਵਾਰ ਕਮਾਂਡ ਲਾਇਨ ਨਾਲ ਹਰੇਕ ਇੰਪà©à©±à¨Ÿ ਫਾਇਲ ਲ਼ਈ ਜà©à¨¡à¨¼ ਜਾਵੇਗਾ। %k ਫਾਇਲ ਨਾਂ ਫੈਲਾ ਦੇਵੇਗਾ।ਕà©à©±à¨²à¨Ÿà¨°à¨¾à¨‚ਸਫਰਮੇਸ਼ਨਕਲਾਉਡ ਪਰੋਜੈਕਟ ਦਾ ਅਨà©à¨µà¨¾à¨¦ ਕਰੋਅਨà©à¨µà¨¾à¨¦ ਕੀਤਾ: %2$d ਵਿੱਚੋਂ %1$d (%3$d %%)ਅਨà©à¨µà¨¾à¨¦à¨…ਨà©à¨µà¨¾à¨¦ ਭਾਸ਼ਾਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀਅਨà©à¨µà¨¾à¨¦ ਉੱਤੇ ਕੰਮ ਕਰਨ ਵਾਲਾ ਹੈ(&w)ਅਨà©à¨µà¨¾à¨¦ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀ ਗਲਤੀ: %s (%d)।ਅਨà©à¨µà¨¾à¨¦ ਉੱਤੇ ਕੰਮ ਕਰਨ ਵਾਲਾ ਹੈ(&w)ਅਨà©à¨µà¨¾à¨¦ ਵਿਸ਼ੇਸ਼ਤਾਅਨà©à¨µà¨¾à¨¦ ਲਈ ਸà©à¨à¨¾à¨…ਅਨà©à¨µà¨¾à¨¦ — %sਅਨà©à¨µà¨¾à¨¦à¨¾à¨‚ ਨੂੰ ਸਰੋਤ ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਫ਼ਾਈਲ ਦੀਆਂ ਪà©à¨°à¨¾à¨ªà¨Ÿà©€à¨†à¨‚ ਵਿੱਚ ਦੱਸੇ ਟਿਕਾਣੇ 'ਤੇ ਕੋਈ ਕੋਡ ਨਹੀਂ ਮਿਲਿਆ।ਦੋUTF-8 (ਸਿਫਾਰਸ਼ੀ)ਵਾਪਸਨਾ-ਸਾਂਭਣਯੋਗ ਅਪਵਾਦ: %sਯੂਨੈਕਸ (ਸਿਫਾਰਸ਼ੀ)ਅਣਪਛਾਤੀ Crowdin ਗਲਤੀ ਹੈ।ਅਣਪਛਾਤੀ ਗਲਤੀਨਾ-ਅਨà©à¨µà¨¾à¨¦à¨…ੱਪਡੇਟਸਭ ਅੱਪਡੇਟਪਰੋਜੈਕਟ ਵਿਚਲੀਆਂ ਸਭ ਕੈਟਾਲਾਗ ਅੱਪਡੇਟ&POT ਫਾਈਲ ਤੋਂ ਅੱਪਡੇਟ…&POT ਫਾਈਲ ਤੋਂ ਅੱਪਡੇਟ…ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋPOT ਤੋਂ ਅੱਪਡੇਟ ਕਰੋਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋਸਰੋਤ ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋਅੱਪਡੇਟ ਸੰਖੇਪਅੱਪਡੇਟਅੱਪਡੇਟ ਕਰਨਾ ਅਸਫ਼ਲ ਰਿਹਾ।ਅਨà©à¨µà¨¾à¨¦ ਅੱਪਡੇਟ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨਵਰਤੋਂਕਾਰ ਜਾਣਕਾਰੀ ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…ਅਨà©à¨µà¨¾à¨¦ %s ਉੱਤੇ ਅੱਪਲੋਡ ਕਰਨ ਥਈ ਅਸਫ਼ਲ ਹੈ।ਅਨà©à¨µà¨¾à¨¦ %s ਉੱਤੇ ਅੱਪਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ…ਅਨà©à¨µà¨¾à¨¦à¨¾à¨‚ ਨੂੰ ਅੱਪਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…ਪਸੰਦੀਦਾ ਸੂਚੀ ਫ਼ੋਟ ਵਰਤੋਂ:ਪਸੰਦੀਦਾ ਪਾਠ ਖੇਤਰ ਫ਼ੋਂਟ ਵਰਤੋਂ:ਇਹ ਭਾਸ਼ਾ ਲਈ ਡਿਫਾਲਟ ਨਿਯਮ ਵਰਤੋਂਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀ ਵਰਤੋਂਤਸਦੀਕ ਕਰੋਪà©à¨°à¨®à¨¾à¨£à©€à¨•ਰਨ ਦੇ ਨਤੀਜੇ%s ਵਰਜ਼ਨਪਰਮਾਣਕਿਤਾ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…ਪੋà¨à¨¡à¨¿à¨Ÿ ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰਜਦੋਂ ਸਰੋਤ ਤੋਂ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈਪੂਰੇ ਸ਼ਬਦ ਹੀਵਿੰਡੋWindowsਕੀ ਤà©à¨¸à©€à¨‚ ਅੰਗਰੇਜ਼ੀ ਨੂੰ ਸਰੋਤ ਲਿਖਤ ਵਜੋਂ ਵਰਤਣਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?ਪਾਸਿਓ ਸਮੇਟੋXLIFF ਅਨà©à¨µà¨¾à¨¦ ਫ਼ਾਈਲਾਂਹਾਂਤà©à¨¸à©€à¨‚ Poedit ਵਿੰਡੋ ਵਿੱਚ ਇੱਕ ਤੋਂ ਵੱਧ ਫ਼ਾਈਲਾਂ ਨਹੀਂ ਸà©à©±à¨Ÿ ਸਕਦੇ।ਤà©à¨¹à¨¾à¨¡à©‡ ਕੋਲ ਫ਼ਾਈਲ ਦੀਆਂ ਪà©à¨°à¨¾à¨ªà¨Ÿà©€à¨†à¨‚ ਵਿੱਚ ਦੱਸੇ ਟਿਕਾਣੇ 'ਤੇ ਦਿੱਤੀਆਂ ਸਰੋਤ ਕੋਡ ਫ਼ਾਈਲਾਂ ਨੂੰ ਪੜà©à¨¹à¨¨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।ਤà©à¨¹à¨¾à¨¨à©‚à©° ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰਨ ਲਈ Poedit ਨੂੰ ਮà©à©œ ਚਾਲੂ ਕਰਨਾ ਪਵੇਗਾ।ਤà©à¨¹à¨¾à¨¡à¨¾ ਨਾਂਜੇ ਤà©à¨¸à©€à¨‚ ਤਬਦੀਲੀਆਂ ਨਹੀਂ ਸੰਭਾਲਦੇ ਤਾਂ ਉਹ ਖà©à©°à¨ ਜਾਣਗੀਆਂ।ਤà©à¨¹à¨¾à¨¡à¨¾ ਨਾਂ ਅਤੇ ਈਮੇਲ à¨à¨¡à¨°à©ˆà©±à¨¸, ਜੋ ਹੇਠਾਂ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਨੂੰ GNU gettext ਫਾਇਲਾਂ ਵਿੱਚ Last-Translator ਹੈੱਡਰ ਲਈ ਵਰਤਿਆ ਜਾਵੇਗਾ।ਸਿਫ਼ਰਜ਼ੂਮਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈਅਸਥਾਈ ਫ਼ਾਈਲਾਂ ਨਾ ਮਿਟਾਓ (ਡੀਬੱਗਿੰਗ ਲਈ)ਜਿਵੇਂ nplurals=2; plural=(n > 1);ਦਿੱਤੇ ਸਤਰ ਨੰਬਰ 'ਤੇ ਆਈਟਮ 'ਤੇ ਜਾਓpoedit:// URI ਹੈਂਡਲ ਕਰੋCtrl+DownEnterਖੱਬੇਸੱਜੇShift+Upaltctrlshift%s ਬਾਰੇ%s ਨੂੰ ਲà©à¨•ਾਓਹੋਰਾਂ ਨੂੰ ਲà©à¨•ਾਓਮੇਰੀ ਪਸੰਦ...%s ਤੋਂ ਬਾਹਰ ਜਾਓਸਰਵਿਸਾਂਸਾਰੇ ਵੇਖੋTM ਤੋਂ ਕੱਚਾ ਅਨà©à¨µà¨¾à¨¦ ਕਰੋਅਣਜਾਣ ਭਾਸ਼ਾਅਸਮਰਥਿਤ ਵਰਜਨ (%s)you@example.com“%s†ਜਾਇਜ਼ POT ਫਾਈਲ ਨਹੀਂ ਹੈ।poedit-3.6.3/locales/de.mo0000644000175100001660000017570415011674363011064 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-§O ÷‘’#’9’BQ’”’6¨’6ß’j“g“oé“ Y”c” t”F~”Å” Ì” Ú”ä” í” ø” • • •$•9• N•Z• a•m•ˆ• £•¯•Í•ë•ò•÷• – –!–8–>– B– P– ^– k– x–ƒ–’–¥–½–Õ–$è–$ —2—;— M— W—b—s—Œ— ¥— ³— Á— Ï—#Ý—#˜%˜B˜_˜w˜˜˜˜œ˜¸˜ ˘ ì˜ ÷˜™ ™™ ™%™;™S™j™~™š™°™Í™å™ü™š,š Kš lš'vš#žš'šêš››G'›*o›š›&¹›'à›œœ"œ@<œK}œ(Éœ-òœ (r6©LÉMž1dž –ž¢žµ¶ž lŸ vŸ5„Ÿ,ºŸ8çŸ7  X t ‡ š ¬  àР1ç ,¡ F¡&g¡ Ž¡¯¡ Ç¡ Ò¡ß¡ õ¡¢ ¢#¢)¢8¢$G¢!l¢)Ž¢ ¸¢ ¢Í¢å¢ü¢ £:2£ m£‰z£¤ ¤#¤9¤O¤"e¤Gˆ¤FФ-¥ E¥S¥,o¥$œ¥Á¥½Ð¥ ަœ¦¼¦ܦ ø¦)§/§"8§[§"o§’§£§º§=˧! ¨+¨)3¨o]¨QͨB©b©s©ƒ©?™©Ù©1ï©C!ª!eª!‡ª©ª²ª Ϊ٪磌«/«B« U«`«o«w«j€«ë«¬ƒ%¬©¬Ǭ%ç¬ ­­­#­9­O­h­|­—­°­FÆ­$ ®2®-L®;z®¶®8¯ N¯0Z¯<‹¯<ȯ4°8:°s°!y°›°.¹°Zè°C±J±e±±™±¯±űÞ±ù±²/²I²`²w²”²œ² °² ¼² ƲÓ²Ù²ñ²% ³,/³\³Â_³Ÿ"´¡Â´ dµ!oµ‘µ$©µε$æµ ¶>'¶$f¶‹¶’¶$­¶Ò¶ê¶ ··&·.·6·?·Y·b·>x·.··æ· ¸¸!¸*¸3;¸%o¸•¸«¸¸â¸¹@¹ I¹DV¹›¹”ª¹<?º|º‹º6šºѺíº þº& » 3»#>»b»h»|»»©»»ÚÚ»µ¼¹¼Ô¼ç¼½$½:½O½d½i½0€½l±½¾75¾=m¾«¾+Ǿ3ó¾'¿D¿G¿ÑP¿"À@À`À,sÀ À»À ÛÀéÀûÀ Á(Á >Á JÁVÁ_ÁfÁ{ÁÁ¨Á¨ÂÁ kÂu‘ÂP—ÂèÂ-üÂ*ÃBÃ^ÂÃ!Ä(Ä;CÄ ÄÄ”ÄM­Ä:ûÄñ6Æ:(Ç-cÇ‘Ç¦Ç ¶Ç<ÄÇ0È2ȳEÈ–ùÈÉ Ê Ê2Ê$DÊ,iʖʩʼÊÑÊâÊóÊ ËË#Ë,Ë BË#MËqËIyËÃËÞË ïËýË ÌÌ -Ì27Ì2jÌ̵Ì-ÍÌûÌÍÍ"Í 9Í;FÍ ‚Í#Í£´ÍXÎ kÎ x΂ΗάοÎÒÎâÎöÎ ÏNÏkÏ|ÏŽÏ&ŸÏÆÏØÏ/öÏ&Ð-FÐtІР˜Ð¦Ð¸Ð&ÎÐõÐ ÑÑ4ÑLÑ_ÑtÑ$‡Ñ¬ÑÂÑØÑìÑ ÿÑ ÒÒÒ'Ò7ÒTÒiÒ†ÒÒ ˜Ò¹ÒÓÒæÒÓÓ6ÓSÓiÓƒÓ Óª¼Ó)gÔ‘Ô ªÔ ´ÔÁÔ!ÒÔ ôÔ!Õ "Õ.Õ]6Õ”Õ²ÕÃÕÔÕñÕ Ö")Ö5LÖ‚Ö;›Ö ×Ö ãÖ«ïÖI›×’å×xØ}Ø,™ØÆØÞØ,þØ8+ÙdÙ gÙDsÙ*¸Ù ãÙñÙøÚ[ÛFrÛN¹ÛªÝC³Ý?÷Ýt7Þy¬Þr&ß#™ß/½ß/íß=à[àoÝà5MáOƒáMÓáG!â1iâ/›â´Ëâ'€ã)¨ã/Òã*ä;-äOi䡹ä4[åZåJëåo6柦æYF牠çs*èyžèúéFê†ZêeáêlGë´ë»ëÌëììí $í1íFí&\íƒítžíyî9î%Çî&íîï/ïœHï’åïxð˜Œð%ñ*ñ <ñ/Iñ+yñ¥ñ¶ñÒñåñ öñò"ò)5ò._ò Žò ¯òÐòìòó$ó"@ócó%tóšó"¸ó-Ûó3 ô-=ô%kô&‘ô4¸ô8íô,&õnSõÂõâõêõ öö$ö :ö [öeö!{öö¯ö·ö3¿öóö÷÷8÷T÷ZW÷@²÷xó÷Clø°ø@¹øzúøuù zù‡ù5 ù"Öùùù,ú4/údú€ú…ú‹ú’úšú ú §ú±ú¶úºú¿úÈú Ñúßúñú ûû û-$ûRû eû †ûû$Ÿû|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-06 10:16 Last-Translator: Language-Team: German Language: de_DE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: de X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (geändert) (ungespeichert)%d Code-Vorkommen%d Code-Vorkommen%d Eintrag%d Einträge%d Eintrag wurde vorübersetzt.%d Einträge wurden vorübersetzt.%d Fehler%d Fehler%d Fehler ist aufgetreten.%d Fehler sind aufgetreten.%d Fehler ist aufgetreten:%d Fehler sind aufgetreten:%d Problem mit den Quellzeichenfolgen wurde erkannt.%d Probleme mit den Quellzeichenfolgen wurde erkannt.Es wurde %d Problem mit der Übersetzung gefunden.Es wurden %d Probleme mit der Übersetzung gefunden.%i Zeile der Datei »%s« wurde nicht korrekt geladen.%i Zeilen der Datei »%s« wurden nicht korrekt geladen.%s-Format%s-Einstellungen%s-Format%s Übersetzung wurde importiert.%s Übersetzungen wurden importiert.&Über&Über Poedit&Anwenden&ZurückA&bbrechen&BereinigenS&chließen&Kopieren&Löschen&Erledigt und weiter&Erledigt und weiter&Bearbeiten&Datei&Suchen …&GNU gettext Dokumentation&GNU gettext Dokumentation&NavigierenNach Zusammenhang &gruppierenNach Zusammenhang &gruppieren&Hilfe&Neu&Neu …&Weiter >&Nächste Übersetzung&Nächste Übersetzung&Nein&OK&Online-Hilfe&Online-HilfeÖ&ffnen …Ö&ffnen …E&infügen&Einstellungen&Einstellungen …&Vorherige Übersetzung&Vorherige Übersetzung&Eigenschaften …&Ungenutzte Übersetzungen entfernen&Ungenutzte Übersetzungen entfernen&Beenden&WiederherstellenErset&zen&SpeichernSpeichern &unterCode-Vorkommen &anzeigenCode-Vorkommen &anzeigen&Startfenster&Startfenster&Übersetzung&Rückgängig&Nicht übersetzte Einträge zuerst&Nicht übersetzte Einträge zuerst&Aktualisieren aus Quellcode&Aktualisieren aus Quellcode&Übersetzungen prüfen&Übersetzungen prüfen&Ansicht&Ja(Standardsprache verwenden)(nicht angemeldet)(benötigt Windows 8 oder neuer)< &ZurückÜber %sKontoKontenHinzufügenKommentar hinzufügenDateien hinzufügen …Ordner hinzufügen …Projekt hinzufügenPlatzhalter hinzufügen …Kommentar hinzufügenOrdner zur Liste hinzufügenDateien hinzufügen …Ordner hinzufügen …Projekt hinzufügenPlatzhalter hinzufügen …Zusätzliche SchlüsselwörterZusätzliche xgettext-Parameter:ErweitertErweiterte Extraktionseinstellungen …Erweiterte ExtraktionseinstellungenErweiterte Extraktionseinstellungen …Alle ÜbersetzungsdateienAlle KommentareAlle ZeichenkettenStandard-Schlüsselwörter ebenso für unterstützte Sprachen verwendenDen Fokus immer auf das Eingabefeld setzenEs ist ein Fehler aufgetreten.Ein Eintrag in der Eingabedatei-Liste:Ein Eintrag in der Schlüsselwortliste:ErscheinungsbildAnwendenUngefähre Treffer von TMSind Sie sicher, dass der Extraktor »%s« entfernt werden soll?Sind Sie sicher, dass der Übersetzungsspeicher zurückgesetzt werden soll?Automatisch nach Aktualisierungen suchenMO-Datei beim Speichern automatisch erstellenZurückAusgangspfad:Beta-Versionen enthalten die neuesten Funktionen und Verbesserungen, können allerdings etwas weniger stabil sein.Alle in den Vordergrund bringenBeschädigte PO-Datei: Verwendung von msgstr in Pluralform ohne msgid_pluralBeschädigte PO-Datei: Verwendung von msgstr in Singularform mit msgid_pluralFehlerhaftes Markup in Übersetzungszeichenkette.DurchsuchenDateien durchsuchenStandardmäßig werden auch ungenaue Ergebnisse übernommen und mit »Benötigt Überarbeitung« markiert. Wählen Sie diese Option, um nur exakte Übereinstimmungen zu übernehmen.AbbrechenAbbrechen …Temporäres Verzeichnis konnte nicht erstellt werden.Programm konnte nicht ausgeführt werden: %sEine unbekannte Sprache kann nicht vorübersetzt werden.Eine Vorübersetzung ist ohne Quelltext nicht möglich.Wortanfänge großschreiben&Katalogverwaltung&KatalogverwaltungKatalogverwaltungGUI-Sprache auswählenZeichensatz:Dokument jetzt prüfenGrammatik zusätzlich zur Rechtschreibung prüfenRechtschreibung während der Eingabe prüfenAuf Aktualisierungen prüfen …Auf Fehler in der Übersetzung prüfenAuf Aktualisierungen prüfen …Rechtschreibung prüfenBereinigenMenü leerenÜbersetzung löschenMenü leerenÜbersetzung löschenSchließenCloudCode-VorkommenCode-VorkommenMit anderen online zusammenarbeiten.Quelldateien werden gesammelt …Befehl, um Übersetzungen zu extrahieren:KommentarKommentar:Kommentare mit Präfix:MO-Datei erstellen …Kompilieren nach …Kompilierte ÜbersetzungsdateienQuellcode-Extrahierung in den Einstellungen konfigurieren.BestätigungPoedit mit unterstützten Cloud-Lokalisierungsplattformen verbinden, um die darauf verwalteten Übersetzungen nahtlos zu synchronisieren.KopierenVom Singular kopierenQuelltext übernehmenVom Singular kopierenQuelltext übernehmenAutomatische RechtschreibkorrekturDie Details des Localazy-Projekts konnten nicht heruntergeladen werden.Die Datei konnte nicht geladen werden. Sie ist vermutlich beschädigt.Datei »%s« konnte nicht gespeichert werden.Neu erstellenNeue Übersetzung erstellenNeue Übersetzung aus POT-Vorlage erstellen.Neues Übersetzungsprojekt erstellenCrowdin FehlerCrowdin ist eine Online-Übersetzungsplattform und ein gemeinschaftliches Übersetzungswerkzeug. Wir verwenden Crowdin selbst, um Poedit in viele Sprachen zu übersetzen, und wir lieben es.&AusschneidenBenutzerdefinierte Extraktoren:Benutzerdefinierte Extraktoren:Werkzeugleiste anpassen …AusschneidenGröße der Datenbank auf der Festplatte:LöschenAus Übersetzungsspeicher löschenExtraktor entfernenAus Übersetzungsspeicher löschenProjekt löschenDen Kommentar löschenProjekt löschenDas Löschen des Projekts löscht keine Übersetzungsdateien.Unterschiede werden bestimmt …Ordner:Möchten Sie das Projekt »%s« löschen?Möchten Sie die Datei neu laden? Ihre ungespeicherten Änderungen in Poedit gehen verloren, wenn Sie dies tun.Möchten Sie alle Übersetzungen entfernen, die mit dem Quelltext identisch sind?Sollen alle nicht mehr verwendeten Übersetzungen entfernt werden?&Nicht speichernNicht speichernNicht erneut anzeigenGenaue Treffer nicht mit »Benötigt Überarbeitung« markierenNicht erneut anzeigenNeueste Übersetzungen werden heruntergeladen …Herunterladen von Übersetzungen ist in diesem Projekt deaktiviert.Ordner oder Dateien hierherziehenOrdner oder Dateien hierherziehen&BeendenNach HTML e&xportieren …Bearbeiten&Kommentar bearbeiten&Kommentar bearbeitenKommentar bearbeitenKommentar bearbeitenProjekt bearbeitenProjekt bearbeitenBearbeitenBearbeiten …E-Mail:VollbildEinträge in dieser Datei haben eine andere Anzahl an Plural-Formen als im Kopfbereich der Datei angegebenEinträge mit Fehlern zuerstEinträge mit Fehlern zuerstFehlerhafte Einträge wurden in der Liste rot markiert. Beim Auswählen eines dieser Einträge werden Details zum Fehler angezeigt.Fehler beim Öffnen der DateiFehler beim Speichern der DateiFehler beim Laden der XLIFF-Datei: %sFehler: FehlerAllesGenaue Treffer von TMAusgeschlossene PfadeNach TMX exportieren …Exportieren als …Nach HTML exportieren …Nach TMX exportieren …Nach HTML exportierenExportieren des Übersetzungsspeichers nach »%s« ist fehlgeschlagen.Übersetzungen werden exportiert …Aus Quellcode extrahierenAnmerkungen für Übersetzer extrahieren aus:Text aus Quelldateien in den folgenden Ordnern extrahieren:Übersetzbare Zeichenfolgen werden aus %s Datei extrahiert …Übersetzbare Zeichenfolgen werden aus %s Dateien extrahiert …Extraktor-EinrichtungExtraktorenKommunikation mit Poedit-Prozess fehlgeschlagen.Fehler beim Extrahieren der Zeichenfolgen aus dem Quellcode.Fehler beim Laden der Datei mit extrahierten Übersetzungen.Zusammenführen der gettext-Kataloge fehlgeschlagen.Fehler beim Aktualisieren des Übersetzungsspeichers: %sDateiDatei kann nicht geöffnet werdenDatei »%s« existiert nicht.Die Datei »%s« ist keine Übersetzungsdatei.Die Datei »%s« ist schreibgeschützt. Bitte speichern Sie sie unter einem anderen Namen.SuchenNächstes Vorkommen suchenVorheriges Vorkommen suchenSuchen und Ersetzen …In Kommentaren suchenIn Quelltexten suchenIn Übersetzungen suchenNächstes Vorkommen suchenVorheriges Vorkommen suchenSprache korrekt festlegenSprache korrekt festlegenKopfbereich reparierenKopfbereich reparierenFlutter-ÜbersetzungsdateienForm %iForm %i (ungenutzt)GNU gettextAllgemeinHTML-DateienHilfeSeitenleiste ausblendenStatusleiste ausblendenDiese Benachrichtigung nicht anzeigenWie funktioniert die Cloud-Synchronisierung?IDWenn Sie mit dem Bereinigen fortfahren, werden alle als gelöscht markierten Texte endgültig gelöscht. Wenn die Texte in Zukunft wieder hinzugefügt werden, müssen Sie sie erneut übersetzen.Wenn Sie den Zugriff auf Ihre Dateien zuvor verweigert haben, können Sie ihn hier erlauben: Systemeinstellungen > Sicherheit > Datenschutz > Dateien & Ordner.Wenn Sie den Zugriff auf Ihre Dateien zuvor verweigert haben, können Sie ihn hier erlauben: Systemeinstellungen > Datenschutz & Sicherheit > Dateien und Ordner.IgnorierenGroß-/Kleinschreibung ignorierenAus TMX importieren …Übersetzungsdateien importieren …Aus TMX importieren …Übersetzungsdateien importieren …Importieren von »%s« …Das Importieren des Übersetzungsspeichers ist fehlgeschlagen.Übersetzungen werden importiert …In: %sBeta-Versionen einbeziehenInkonsistente Groß-/KleinschreibungInkonsistenter LeerraumInformationen zum ÜbersetzerInstallierenUngültige DateiAufruf:ProblemProblemeJSON-ÜbersetzungsdateienBehaltenSprachname oder -codeSprache der Übersetzung ist dieselbe wie die Ausgangssprache.Sprache der Übersetzung ist nicht festgelegt.Sprache der Übersetzung:SprachauswahlÜbersetzungsteam:Sprache:Letzte ÄnderungWeitere Informationen zu gettext-SchlüsselwörternWeitere Informationen zu PluralformenWeitere InformationenMehr erfahren über %sErfahren Sie mehr über CrowdinMehr über GNU gettext erfahrenZeileZeile %d der Datei »%s« ist beschädigt (ungültige %s-Daten).Zeilenenden:Durch Semikola getrennte Liste der Dateiendungen (z. B. *.cpp;*.h):Englisch ladenLocalazy ist eine hochautomatisierte Lokalisierungsplattform, mit der jeder seine Produkte und Inhalte einfach in mehrere Sprachen übersetzen kann.MO-Dateien können nicht direkt in Poedit bearbeitet werden.KleinschreibenGroßschreibenEine neue Übersetzung aus dieser POT-Datei erstellen.Fehlerhafter Header: »%s«Konten verwaltenVerwalten …Änderungen werden zusammengefügt …MinimierenName des Projektes der ÜbersetzungName:N&ächste unfertigeN&ächste unfertigeBenötigt ÜberarbeitungBenötigt ÜberarbeitungNetzwerkfehler: %s (%d)Der Zeichenkettenliste nie den Fokus geben. Wenn aktiviert, müssen Sie Strg-Pfeiltasten zur Navigation benutzen. Sie können jedoch auch sofort Text eingeben, ohne vorher zum Ändern des Fokus Tab drücken zu müssen.NeuNeu aus &POT-/PO-Datei …Neue ZeichenfolgenNeu aus &POT-/PO-Datei …Neue ZeichenkettenNeue zu übersetzende Zeichenfolgen:Nächste Plural-FormNächste Plural-FormNeinKeine Treffer gefundenEs konnten keine Einträge vorübersetzt werden.In der Datei werden keine Informationen über das Vorkommen dieser Zeichenkette im Quellcode bereitgestellt.Keine Treffer gefundenEs wurden keine Probleme mit der Übersetzung gefunden.Es sind keine Übersetzungsprojekte in Ihrem Konto vorhanden.Keine NutzungsinformationenEs sind nicht alle Pluralformen übersetzt.Nicht autorisiert, bitte melden Sie sich erneut an.Anmerkungen für ÜbersetzerOKSingularNur aktivieren, wenn Sie der Qualität Ihres Übersetzungsspeichers vertrauen. Standardmäßig werden alle automatischen Übersetzungen mit »Benötigt Überarbeitung« markiert und sollten überprüft werden.Nur genaue Treffer ausfüllenCloud-Übersetzung öffnen …Benutzte DokumenteÜbersetzungsdateien öffnen und bearbeiten.Cloud-Übersetzung öffnenCloud-Übersetzung öffnen …Datei öffnenIm Editor öffnenIm Editor öffnenZuletzt verwendete öffnenReferenzdatei öffnenÖffnen …Öffnen …OptionenPluralV&orherige unfertigeV&orherige unfertigePO-ÜbersetzungsdateienPOT-ÜbersetzungsvorlagenPOT-Dateien sind nur Vorlagen, sie enthalten selbst keine Übersetzungen. Um eine Übersetzung zu starten, legen Sie eine neue PO-Datei an, die auf der Vorlage basiert.EinfügenEinsetzen und Stil anpassenPfadeFührt eine Aktualisierung aus dem Quellcode für alle Dateien im Projekt durch.Zugriff verweigert.Platzhalter »%s« fehlt in der Übersetzung.Platzhalter-KorrektheitBitte öffnen Sie stattdessen die zugehörige PO-Datei. Wenn Sie die Datei speichern, wird die MO-Datei ebenfalls aktualisiert.Bitte speichern Sie die Datei vorher. Dieser Abschnitt kann bis dahin nicht bearbeitet werden.PluralPlural-Form-ÜbersetzungenDie verwendete Plural-Form der Datei ist unüblich für %s.Pluralformen:PoeditPoedit-KatalogverwaltungUngültige Inhalte der Datei »%s« wurden von Poedit automatisch korrigiert.Poedit kann versuchen, neue Einträge ausschließlich mit früheren Übersetzungen aus der Datei zu befüllen oder den gesamten Übersetzungsspeicher zu nutzen. Der Übersetzungsspeicher wird nicht sehr effektiv sein, wenn dieser nahezu leer ist, wird aber immer besser, je mehr Übersetzungen hinzugefügt werden.Poedit kann den Quellcode nicht anzeigen, wo die Zeichenkette verwendet wird, weil die Datei entweder nicht an der angegebenen Stelle verfügbar ist oder es sich um einen symbolischen Verweis handelt, der nicht auf eine echte Datei verweist.Poedit ist ein einfach zu bedienender Übersetzungseditor.Poedit konnte die Datei »%s« nicht öffnen.Vorüberse&tzung …VorübersetzungVorübersetzt%u Zeichenkette vorübersetzt%u Zeichenketten vorübersetztVorübersetzen aus dem Übersetzungsspeicher …Vorübersetzen …Die Vorübersetzung findet automatisch übereinstimmende oder ungenaue Treffer für unübersetzte Zeichenketten im Übersetzungsspeicher und befüllt die fehlenden Übersetzungen.Die Vorübersetzung setzt voraus, dass der Quelltext verfügbar ist. Sie funktioniert nicht, wenn nur IDs ohne den eigentlichen Text verwendet werden.Die Vorübersetzung setzt voraus, dass die Sprache des Quelltextes bekannt ist. Poedit konnte sie in dieser Datei nicht erkennen.EinstellungenEinstellungen …Einstellungen …Zeichenketten werden vorbereitet …Formatierung vorhandener Dateien beibehaltenVorige Plural-FormVorige Plural-FormVorheriger QuelltextZuvor bearbeitetZuvor bearbeitetProjektname und -version:Projektname:Projekt:ProjekteSatzzeichenprüfungenBereinigenUngenutzte Übersetzungen entfernenBeendenDer Inhalt der Datei konnte mit folgendem Fehler nicht gelesen werden: %sZuletzt verwendete DateienWiederherstellenAktualisierenDatei neu ladenDatei neu ladenVerbleibend: %dEntfernenÜbersetzungen mit identischem Quelltext entfernenÜbersetzungen mit identischem Quelltext entfernenEntfernte ZeichenfolgenEntfernte ZeichenfolgenEntfernte Zeichenketten (nicht mehr benutzt):Ersetzen&Alle ersetzen&Alle ersetzenErsetzungszeichenketteErsetzen …Im Kopfbereich der Datei fehlt die Angabe »Plural-Forms«.ZurücksetzenÜbersetzungsspeicher zurücksetzenDas Zurücksetzen des Übersetzungsspeichers löscht alle darin gespeicherten Übersetzungen unwiderruflich. Dieser Schritt kann nicht rückgängig gemacht werden.Im Finder anzeigenÜberprüfenSpeichernSpeichern &unter …Speichern &unter …Trotzdem speichernTrotzdem speichernSpeichern unterSpeichern unter …Änderungen speichernDatei speichernDas Speichern an einem anderen Ort wird für XCLOC-Dateien nicht unterstützt.Bildschirmfotos:&Alles auswählenAlles auswählenTMX-Dateien zum Importieren auswählenOrdner auswählenÜbersetzungsdatei auswählenÜbersetzungsdateien zum Importieren auswählenÜbersetzungsvorlage auswählenBitte wählen Sie Ihre bevorzugte Sprache ausSprache festlegenSprache festlegenEinstellungenEinstellungen …Seitenleiste anzeigenRechtschreibung und Grammatik anzeigenStatusleiste anzeigenString &ID anzeigenErsetzungen anzeigenWerkzeugleiste anzeigenWarnungen anzeigenIm Explorer anzeigenIm Ordner anzeigenSeitenleiste anzeigen oder verbergenSeitenleiste anzeigenStatusleiste anzeigenString &ID anzeigenWarnungen anzeigenSeitenleisteAnmeldenAbmeldenAnmeldenBei %s anmeldenAuf dem Cloud-Konto anmeldenBei Crowdin anmeldenAuf dem Cloud-Konto anmeldenAbmeldenSingularIntelligentes Kopieren/EinsetzenIntelligente BindestricheIntelligente LinksIntelligente AnführungszeichenNach &Datei sortierenNach &Quelltext sortierenNach &Übersetzung sortierenNach &Datei sortierenNach &Quelltext sortierenNach &Übersetzung sortierenZeichensatz des Quellcodes:Quellcode-Extraktoren werden verwendet, um übersetzbare Zeichenketten in den Quellcode-Dateien zu suchen und diese zu extrahieren, so dass sie übersetzt werden können.Der Quellcode steht nicht zur Verfügung.Quellcode nicht gefundenQuelltextQuelltext-IDQuelltext — %sSchlüsselwörter aus QuelltextenQuell-PfadeSchlüsselwörter aus QuelltextenQuell-PfadeSpracheDie Rechtschreibprüfung ist deaktiviert, weil das Wörterbuch für %s nicht installiert ist.Rechtschreibung und GrammatikSprechen startenSprechen stoppenGespeicherte Übersetzungen:Zeichenkettenkontext: %sZeichenkettenidentifikator: %sLänge der Zeichenkette in ZeichenZeichenkettenlänge in Zeichen: Übersetzung | QuelleZu suchende ZeichenketteString-basierte Crowdin-Projekte werden nicht unterstützt.ErsetzungenVorschlägeVorschläge sind nicht verfügbar, wenn die Übersetzungssprache nicht richtig eingestellt ist. Andere Funktionen wie z. B. Pluralformen können ebenfalls betroffen sein.Überflüssiger Platzhalter »%s«, der nicht im Quelltext vorhanden ist.Unterstützt alle Programmiersprachen, die von GNU gettext Werkzeugen erkannt werden (PHP, C/C++, C#, Perl, Python, Java, JavaScript und weitere).SyncMit Crowdin synchronisierenSynchronisieren der Übersetzung mit CrowdinSynchronisierung läuftFehler bei der SynchronisierungFehler bei der Synchronisierung mit Crowdin.Syntaxfehler im Dateikopf bei »Plural-Forms« (»%s«).TMTMX-DateienÜbersetzbare Zeichenketten aus existierender POT-Vorlage verwenden.Name des Teams und E-Mail-Adresse oder URLTextersetzungDer Übersetzungsspeicher beinhaltet keine Zeichenketten, die dem Inhalt dieser Datei ähneln. Der Übersetzungsspeicher kann erst dann effizient bei semi-automatischen Übersetzungen helfen, wenn Poedit ausreichend von den bisherigen Übersetzungen gelernt hat.Die TMX-Datei ist fehlerhaft.Die von der anderen Anwendung vorgenommenen Änderungen gehen verloren, wenn Sie speichern.Die Datei kann nicht in das MO-Format kompiliert und verwendet werden.Die Datei enthält doppelte Einträge, die in PO-Dateien nicht zulässig sind und dazu führen würden, dass die Datei nicht verwendet werden kann. Dieses Problem wurde von Poedit behoben. Sie sollten allerdings Übersetzungen, die mit »Benötigt Überarbeitung« markiert sind, überprüfen und diese falls erforderlich korrigieren.Die Datei konnte nicht im angegebenen Zeichensatz »%s« gespeichert werden. Sie wurde stattdessen in UTF-8 gespeichert und die Einstellung wurde entsprechend angepasst.Die Datei wurde verändert. Möchten Sie die Änderungen speichern?Die Datei liegt in einem von Poedit nicht erkannten Format vor.Die Datei wurde in das MO-Format kompiliert, allerdings wird sie wahrscheinlich nicht ordnungsgemäß funktionieren.Die Datei wurde sicher gespeichert und in das MO-Format konvertiert, aber möglicherweise funktioniert sie nicht korrekt.Die Datei wurde gespeichert, aber das Kompilieren ins MO-Format schlug fehl und kann daher nicht verwendet werden.Die Datei wurde sicher gespeichert.Die Datei »%s« konnte nicht geöffnet werden.Die Datei »%s« konnte nicht geöffnet werden.Die Datei »%s« wurde von einer anderen Anwendung geändert.Der frühere Quelltext (bevor er durch eine Aktualisierung geändert wurde), auf den sich die jetzt unklare Übersetzung bezieht.Der einfachste Weg, diese Datei mit Übersetzungen zu befüllen, ist, sie aus einer POT-Datei zu aktualisieren:Die Übersetzung beginnt nicht mit einem Leerzeichen.Die Übersetzung endet mit einem Zeilenumbruch, der Quelltext allerdings nicht.Die Übersetzung endet mit einem Leerzeichen, der Quelltext allerdings nicht.Die Übersetzung endet mit »%s«, der Quelltext allerdings mit »%s«.Am Ende der Übersetzung fehlt ein Zeilenumbruch.Am Ende der Übersetzung fehlt ein Leerzeichen.Die Übersetzung ist bereit für die Nutzung, aber %d Eintrag ist noch nicht übersetzt.Die Übersetzung ist bereit für die Nutzung, aber %d Einträge sind noch nicht übersetzt.Die Übersetzung kann verwendet werden.Die Übersetzung sollte mit »%s« enden.Die Übersetzung sollte nicht mit »%s« enden.Die Übersetzung sollte als Satz beginnen.Die Übersetzung sollte mit einem Kleinbuchstaben beginnen.Die Übersetzung beginnt mit einem Leerzeichen, der Quelltext allerdings nicht.Die Übersetzungen wurden mit »Benötigt Überarbeitung« markiert, weil sie ungenau sein könnten. Sie sollten die Einträge auf ihre Richtigkeit überprüfen.Es gibt keine Übersetzungen. Das ist ungewöhnlich.Es gab einen Fehler beim Schön-Formatieren der Datei, sie wurde aber korrekt gespeichert.Beim Hochladen der Übersetzungen auf Localazy ist ein Fehler aufgetreten.Beim Laden der Datei sind Fehler aufgetreten. Möglicherweise fehlen einige Daten oder sind beschädigt worden.Diese Einstellungen betreffen die interne Formatierung der PO-Dateien. Passen Sie sie an, wenn Sie z. B. für Versionskontrolle bestimmte Anforderungen haben.Diese JSON-Datei ist keine Übersetzungsdatei und kann nicht in Poedit bearbeitet werden.Diese Aktion wird alle Übersetzungen löschen, die genau mit dem Quelltext übereinstimmen. Dies kann nicht rückgängig gemacht werden.Diese Datei hat Einträge mit Plural-Formen, jedoch sind im Kopfbereich der Datei keine Plural-Formen eingerichtet.Diese Datei verwendet Zeichenketten-IDs statt Quelltext. Poedit kann englische Texte aus der Datei »%s« für Sie laden.Mit diesem Befehl wird der Extraktor gestartet, wobei die folgenden Ersetzungen stattfinden: %o durch den Namen der Ausgabedatei, %K durch die Liste der Schlüsselwörter, %F durch die Liste der Eingabedateien, %C durch den Zeichensatz (siehe unten).Diese Zeichenkette wurde im Übersetzungsspeicher von Poedit gefunden.Wird nur dann an die Kommandozeile angefügt, wenn der Zeichensatz des Quellcodes übergeben wurde. %c repräsentiert den Zeichensatz.Wird für jede Eingabedatei einmal an die Kommandozeile angehängt. %f repräsentiert den Dateinamen.Wird für jedes Schlüsselwort einmal an die Kommandozeile angehängt. %k repräsentiert das Schlüsselwort.GesamtTransformationenDie übersetzbaren Einträge werden nicht manuell in das Gettext-System eingefügt, sondern automatisch aus dem Quellcode extrahiert. Auf diese Weise bleiben sie aktuell und genau. Übersetzer verwenden in der Regel PO-Vorlagendateien (POTs), die der Entwickler für sie vorbereitet hat.Cloud-Projekt übersetzenÜbersetzt: %d von %d (%d %%)ÜbersetzungÜbersetzungsspracheÜbersetzungsspeicherÜbersetzung benötigt &ÜberarbeitungÜbersetzungseigenschaftenDie Übersetzungsdatei ist bereits auf dem neuesten Stand, es wurden keine Änderungen an Zeichenfolgen vorgenommen.Die Übersetzungsdatei wurde mit %s Änderung aktualisiert.Die Übersetzungsdatei wurde mit %s Änderungen aktualisiert.Übersetzungsspeicher-Datenbank ist beschädigt: %s (%d).Übersetzungsspeicherfehler: %s (%d).Übersetzung benötigt &ÜberarbeitungÜbersetzungseinstellungenÜbersetzungsvorschlägeÜbersetzungsvorschläge setzen voraus, dass der Quelltext vorhanden ist. Sie funktionieren nicht, wenn nur IDs ohne den eigentlichen Text verwendet werden.Für Übersetzungsvorschläge ist es erforderlich, dass die Sprache des Quelltextes bekannt ist. Poedit konnte sie in dieser Datei nicht erkennen.Übersetzung – %sÜbersetzungen konnten nicht aus dem Quellcode aktualisiert werden, weil kein Code an dem in den Eigenschaften der Datei angegebenen Ort gefunden wurde.ZweiUTF-8 (empfohlen)RückgängigUnerwartet fehlender Inhalt in der XCLOC-Datei.Ein unerwarteter Fehler ist aufgetreten: %sUnix (empfohlen)Unbekannter Crowdin-Fehler.Unbekannter FehlerNicht übersetztAktualisierenZusammenfassung aktualisierenAlle aktualisierenAlle Kataloge des Projektes aktualisierenAlle Kataloge in diesem Projekt aktualisieren?Aus &POT-Datei aktualisieren …Aus &POT-Datei aktualisieren …Aktualisieren aus QuellcodeAus POT-Datei aktualisierenAktualisieren aus QuellcodeAktualisieren aus QuellcodeZusammenfassung der AktualisierungAktualisierungenDie Aktualisierung ist fehlgeschlagenProjektkataloge aktualisierenÜbersetzungen werden aktualisiertBenutzerinformationen werden aktualisiert …Hochladen von Übersetzungen auf %s fehlgeschlagen.Übersetzungen werden auf %s hochgeladen …Übersetzungen werden hochgeladen …Benutzerdefinierten Ausdruck verwendenBenutzerdefinierte Schriftart für Listen verwenden:Benutzerdefinierte Schriftart für Textfelder verwenden:Standard-Regeln für diese Sprache verwendenDiese Schlüsselwörter (Funktionsnamen) benutzen, um übersetzbare Zeichenketten in Quelldateien zu erkennen:Übersetzungsspeicher verwendenPrüfenÜberprüfungsergebnisseVersion %sDetails anzeigen …Details anzeigen …Auf Authentifizierung warten …Warnung: Willkommen bei PoeditBeim Aktualisieren von QuelldatenNur ganze WörterFensterWindowsMöchten Sie Englisch für den Quelltext verwenden?Am Ende von vorne beginnenUmbrechen bei:XLIFF-ÜbersetzungsdateienXcode-LokalisierungskatalogJaSie können die zu übersetzenden Zeichenketten auch direkt aus dem Quellcode extrahieren:Sie können nicht mehr als eine Datei ins Poedit-Fenster ziehen.Sie haben keine Berechtigung, Quellcode-Dateien von dem in den Eigenschaften der Datei angegebenen Speicherort zu lesen.Sie müssen Poedit neu starten, damit diese Änderung wirksam wird.Ihr NameIhre Änderungen gehen verloren, wenn Sie diese nicht speichern.Ihr Name und die E-Mail-Adresse werden nur verwendet, um den »Last-Translator«-Eintrag in GNU gettext-Dateien zu setzen.NullVergrößernBenötigt ÜberarbeitungTemporäre Dateien nicht entfernen (für Fehlersuche)z. B. nplurals=2; plural=(n != 1);Fehler: unklare Übereinstimmung innerhalb der Dateizum Element in der angegebenen Zeilennummer springenpoedit://-Adresse verwendenAlt+Strg+RunterEingabeLinksRechtsUmschalt+HochaltstrgumschaltÜber %s%s ausblendenAndere ausblendenEinstellungen …%s beendenDiensteAlle anzeigenVorübersetzung aus dem Übersetzungsspeicherunbekannte Sprachenicht unterstützte Version (%s)Warnung: du@example.com»%s« ist keine gültige POT-Datei.poedit-3.6.3/locales/sr@latin.po0000644000175100001660000026467115011674230012246 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Serbian (Cyrillic)\n" "Language: sr_SP\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: sr\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Sakrij ovo obaveÅ¡tenje" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ne prikazuj ponovo" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ne prikazuj ponovo" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Rezime ažuriranja" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Rezime ažuriranja" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "&Zatvori" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problemi" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Datoteka" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Linija" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problem" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Nove linije teksta" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Novi stringovi" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Uklonjene linije teksta" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Uklonjene linije teksta" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Prikupljanje datoteka sa izvornim kodom…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Izdvajanje linija teksta koje je moguće prevesti iz %s datoteke…" msgstr[1] "Izdvajanje linija teksta koje je moguće prevesti iz %s datoteke…" msgstr[2] "Izdvajanje linija teksta koje je moguće prevesti iz %s datoteka…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Nije moguće uÄitati datoteku sa izdvojenim prevodima." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Datoteka: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Izvorni kôd je nedostupan." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Nije moguće ažurirati prevode iz izvornog koda, jer nije pronaÄ‘en kôd na " "lokaciji koja je navedena u svojstvima datoteke." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Zabranjen pristup." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Nemate dozvolu za Äitanje datoteka sa izvornim kodom na lokaciji koja je " "navedena u svojstvima datoteke." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Ako ste ranije zabranili pristup datotekama, to možete promeniti u System " "Settings → Privacy & Security → Files & Folders." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Ako ste ranije zabranili pristup datotekama, to možete promeniti u System " "Preferences → Security & Privacy → Privacy → Files & Folders." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Nije uspelo izdvajanje linija teksta iz izvornog kôda." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Nije moguće otvoriti datoteku „%sâ€." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Ažuriranje prevoda" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "UporeÄ‘ivanje razlika…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Objedinjavanje razlika…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Datoteka prevoda je već ažurna, nisu naÄinjene promene u linijama prevoda." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Nove linije teksta koje je potrebno prevesti:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Uklonjene linije teksta (viÅ¡e se ne koriste):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Prikaži detalje…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Prikaži detalje…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Neispravan format zaglavlja: „%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO datoteke prevoda" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT Å¡abloni prevoda" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF datoteke prevoda" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode katalog lokalizacije" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON datoteke prevoda" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter datoteke prevoda" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Sve datoteke prevoda" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Datoteka je u formatu koji Poedit ne prepoznaje." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "Ova JSON datoteka ne sadrži prevode i ne može se ureÄ‘ivati u Poedit-u." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "DoÅ¡lo je do sledeće greÅ¡ke pri Äitanju datoteke: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Datoteka „%s†je dostupna samo za Äitanje i ne može se saÄuvati.\n" "SaÄuvajte je pod drugim imenom." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Nije moguće saÄuvati datoteku „%sâ€." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Snimci ekrana:" #: src/catalog_po.cpp:134 #, 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 red u datoteci „%s†nije ispravno uÄitan." msgstr[1] "%i reda u datoteci „%s†nisu ispravno uÄitana." msgstr[2] "%i redova u datoteci „%s†nije ispravno uÄitano." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Red %d u datoteci „%s†je oÅ¡tećen (nevažeći podaci u %s)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "PO datoteka je oÅ¡tećena: koristi se msgstr za jedninu uz msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "PO datoteka je oÅ¡tećena: koristi se msgstr za množinu bez msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Nije moguće uÄitati datoteku. Verovatno je oÅ¡tećena." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "DoÅ¡lo je do greÅ¡aka pri uÄitavanju datoteke. Zbog toga su neki podaci " "izgubljeni ili oÅ¡tećeni." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Datoteka je uspeÅ¡no saÄuvana, iako je doÅ¡lo do problema pri formatiranju." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Nije moguće saÄuvati datoteku u kodiranju „%sâ€, kako je navedeno u " "podeÅ¡avanjima prevoda.\n" "\n" "SaÄuvana je u UTF-8 formatu, a podeÅ¡avanje je izmenjeno shodno tome." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "GreÅ¡ka pri Äuvanju datoteke" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "„%s†je nevažeća POT datoteka." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "NeoÄekivano nedostaje sadržaj iz XCLOC datoteke." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Nije podržano Äuvanje XCLOC datoteke na drugu lokaciju." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "DoÅ¡lo je do greÅ¡ke pri uÄitavanju XLIFF datoteke: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "nepodržana verzija (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Neispravna oznaka u stringu za prevod." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Povežite Poedit sa podržanim platformama u oblaku za lokalizaciju da biste s " "lakoćom sinhronizovali prevode koji se nalaze na njima." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Kako funkcioniÅ¡e sinhronizacija u oblaku?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Nalog" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(niste prijavljeni)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Otvori prevod iz oblaka" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Upravljaj nalozima" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekat:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Jezik:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Prijava na nalog u oblaku" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Prijava na nalog u oblaku" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Nema prevodilaÄkih projekata na vaÅ¡em nalogu." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Preuzimanje najnovijih prevoda…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Prijavite se u %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sinhronizacija" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Otpremanje prevoda na %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Otpremanje prevoda na %s nije uspelo." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "GreÅ¡ka pri sinhronizovanju" #: src/commentdlg.cpp:48 msgid "Add" msgstr "&Dodaj" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Nepoznata greÅ¡ka u Crowdin-u." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Nemate ovlašćenja. Ponovo se prijavite." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Nisu podržani Crowdin projekti u kojima se prevode linije teksta." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Preuzimanje prevoda iz ovog projekta je onemogućeno." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Prijavite se" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Prijavi me" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Odjavi me" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Odjavi me" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Saznajte viÅ¡e o Crowdin-u" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin je internet platforma zadužena za upravljanje prevodima i alat za " "kolaborativno prevoÄ‘enje. I sami koristimo Crowdin kako bismo preveli Poedit " "na mnoge jezike i obožavamo ga." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "ÄŒeka se potvrda identiteta…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Ažuriranje informacija o korisniku…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Prijava na Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Sinhronizacija sa Crowdin-om nije uspela." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "GreÅ¡ka u Crowdin-u" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Prevodi se otpremaju…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopiraj" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Saznajte viÅ¡e" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "Po&moć" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO datoteke se ne mogu direktno ureÄ‘ivati u Poedit-u." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "GreÅ¡ka pri otvaranju datoteke" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Umesto toga otvorite i ureÄ‘ujte odgovarajuću PO datoteku. Kada je saÄuvate, " "ažuriraće se i MO datoteka." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ne briÅ¡i privremene datoteke (radi otklanjanja greÅ¡aka)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "obrada URI adrese poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "idi na stavku u navedenom redu" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Nije moguće komunicirati sa Poedit-ovim procesom." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "DoÅ¡lo je do neoÄekivanog izuzetka: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Izbor Å¡ablona prevoda" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Nevažeća datoteka" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Izbor datoteke prevoda" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit je jednostavan alat za prevoÄ‘enje." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "U Poedit-ov prozor možete prevući samo jednu datoteku." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "„%s†nije datoteka prevoda." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Datoteka „%s†ne postoji." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Provera pravopisa je onemogućena jer nije instaliran reÄnik za %s jezik." #: src/edframe.cpp:871 msgid "Install" msgstr "Instaliraj" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Datoteku „%s†je promenila druga aplikacija." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Ponovo uÄitaj datoteku" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Želite li da ponovo uÄitate datoteku sa diska? Time ćete izgubiti sve " "nesaÄuvane promene u Poedit-u." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Zanemari" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Ponovo uÄitaj datoteku" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Datoteka je izmenjena. Želite li da saÄuvate promene?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "ÄŒuvanje promena" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Izgubićete sve promene ako ih ne saÄuvate." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "SaÄuvaj" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Ne Äuvaj" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ne Äuvaj" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Ako saÄuvate, promene koje je napravila druga aplikacija će biti izgubljene." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "&Otkaži" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Svejedno saÄuvaj" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Svejedno saÄuvaj" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "SaÄuvaj kao…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Kompajliranje u…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Kompajlirane datoteke prevoda" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Izvoz u HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML datoteke" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Izvoženje u HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Ažuriranje nije uspelo" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Otvori referentnu datoteku" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "A&žuriraj iz POT datoteke…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "A&žuriraj iz POT datoteke…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "PronaÄ‘en je %d problem u prevodu." msgstr[1] "PronaÄ‘ena su %d problema u prevodu." msgstr[2] "PronaÄ‘eno je %d problema u prevodu." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Rezultati provere valjanosti" #: src/edframe.cpp:1842 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 "" "Unosi sa greÅ¡kama su oznaÄeni crvenom bojom.\n" "Kada izaberete takav unos, prikazaće se detalji o greÅ¡ci." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Datoteka je saÄuvana." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Datoteka je saÄuvana i kompajlirana u MO format, ali verovatno neće ispravno " "raditi." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Datoteka je saÄuvana, ali se ne može kompajlirati u MO format za dalje " "korišćenje." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Datoteka je kompajlirana u MO format, ali verovatno neće ispravno raditi." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Datoteka se ne može kompajlirati u MO format za dalje korišćenje." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Nisu pronaÄ‘eni problemi u prevodu." #: src/edframe.cpp:1894 #, 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] "Prevod je spreman za korišćenje, ali %d unos joÅ¡ nije preveden." msgstr[1] "Prevod je spreman za korišćenje, ali %d unosa joÅ¡ nisu prevedena." msgstr[2] "Prevod je spreman za korišćenje, ali %d unosa joÅ¡ nije prevedeno." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Spreman je za korišćenje." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit je automatski ispravio nevažeći sadržaj u datoteci „%sâ€." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Datoteka je sadržala duplikate, Å¡to nije dozvoljeno. Poedit je ispravio " "problem, ali je poželjno da proverite i ispravite sve prevode koji su " "oznaÄeni za doradu." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Nije naveden jezik prevoda." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Izaberi jezik" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Izaberi jezik" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Predlozi nisu dostupni ako nije izabran jezik prevoda. Isto važi i za " "množinske oblike i druge funkcije." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Jezik prevoda se poklapa sa izvornim jezikom." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Ispravi jezik" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Ispravi jezik" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Ova datoteka sadrži unose sa množinskim oblicima, ali joj nedostaje " "zaglavlje sa pravilom za množinu." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Broj množinskih oblika u unosima se razlikuje od onoga Å¡to piÅ¡e u zaglavlju " "datoteke" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "U zaglavlju nedostaje obrazac za množinske oblike." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "SintaktiÄka greÅ¡ka u zaglavlju kod obrasca za množinske oblike („%sâ€)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Ispravi zaglavlje" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Ispravi zaglavlje" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "Pravilo za množinske oblike koje je navedeno u datoteci nije uobiÄajeno za " "%s jezik." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Pregledaj" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Želite li da engleski bude izvorni tekst?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Ova datoteka koristi identifikatore umesto izvornog teksta. Poedit može da " "uÄita engleski tekst iz datoteke „%sâ€." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "UÄitaj engleski" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Prevedeno: %d od %d (%d%%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Preostalo: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d greÅ¡ka" msgstr[1] "%d greÅ¡ke" msgstr[2] "%d greÅ¡aka" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d unos" msgstr[1] "%d unosa" msgstr[2] "%d unosa" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (nesaÄuvano)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (izmenjeno)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Nije moguće ažurirati prevodilaÄku memoriju: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Nije moguće saÄivati datoteku „%sâ€." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Ukloni prevode identiÄne izvoru" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Želite li da uklonite sve prevode koje su identiÄne izvodnom tekstu?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Ova akcija će ukloniti sve prevode koji se u potpunosti podudaraju sa " "izvornim tekstom. Ovo nije moguće opozvati." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "&Zadrži" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Ukloni" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "ÄŒišćenje izbrisanih prevoda" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Želite li da uklonite sve prevode koji se viÅ¡e ne koriste?" #: src/edframe.cpp:2879 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 "" "Ako nastavite, trajno ćete ukloniti sve prevode oznaÄene kao izbrisane. " "Moraćete da ponovo prevedete stringove ako budu dodati u budućnosti." #: src/edframe.cpp:2883 msgid "Purge" msgstr "&ObriÅ¡i" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Kopiraj iz iz&vornog teksta" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopiraj iz iz&vornog teksta" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Obri&Å¡i prevod" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Obri&Å¡i prevod" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Uredi komentar" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Uredi komentar" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Pojavljivanja u kodu" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Pojavljivanja u kodu" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Sakrij boÄnu traku" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Prikaži boÄnu traku" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Sakrij statusnu traku" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "&Statusna traka" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Dužina stringa u znakovima: prevod | izvor" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Dužina stringa u znakovima" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Izvorni tekst" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Jednina" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Množina" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Prevod" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Preliminarni prevod" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Potrebna dorada" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Potrebna dorada" #: src/editing_area.cpp:566 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 datoteke su samo Å¡abloni bez prevoda.\n" "Da biste zapoÄeli prevod, napravite novu PO datoteku prema Å¡ablonu." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Napravi novi prevod" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Napravite novi prevod iz POT datoteke." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID izvornog teksta" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Sve" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Oblik %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Oblik %i (ne koristi se)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nula" #: src/editing_area.cpp:788 msgid "One" msgstr "Jedan" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dva" #: src/editing_area.cpp:804 msgid "Other" msgstr "Drugo" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Kontekst stringa: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identifikator stringa: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s format" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Prevod – %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Izvorni tekst – %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "nepoznat jezik" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "GreÅ¡ka na mreži: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Nepoznata greÅ¡ka" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Nije moguće objediniti gettext kataloge." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Otvori u ureÄ‘ivaÄu" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Otvori u ureÄ‘ivaÄu" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "U datoteci nije navedena informacija o pojavljivanjima ovog stringa u " "izvornom kodu." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Nema informacija o korišćenju" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d pojavljivanje u kodu" msgstr[1] "%d pojavljivanja u kodu" msgstr[2] "%d pojavljivanja u kodu" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Izvorni kôd nije pronaÄ‘en" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit ne može da prikaže izvorni kôd u kom se string koristi, jer datoteka " "nije dostupna na navedenoj lokaciji ili se radi o simboliÄkoj referenci koja " "ne upućuje na stvarnu datoteku." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Nije moguće otvoriti datoteku" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit ne može da otvori datoteku „%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "PronaÄ‘i" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Zameni" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opcije" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ne razlikuj velika i mala slova" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Traži ukrug" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Samo cele reÄi" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Izvorni tekst" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Prevodi" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Komentari" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Z&ameni sve" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Z&ameni sve" #: src/findframe.cpp:150 msgid "&Replace" msgstr "Za&meni" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Prethodno" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Sledeće >" #: src/findframe.cpp:235 msgid "String to find" msgstr "String za pretragu" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "String za zamenu" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "upozorenje: " #: src/gexecute.cpp:171 msgid "error: " msgstr "greÅ¡ka: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Naziv ili kôd jezika" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Jezik prevoda" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Jezik prevoda:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Svi stringovi" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Nije moguće preuzeti podatke o projektu na Localazy-ju." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "DoÅ¡lo je do greÅ¡ke pri otpremanju prevoda na Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projekti" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Saznajte viÅ¡e o usluzi %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy je platforma za lokalizaciju sa visokim nivoom automatizacije koja " "svakome omogućava da jednostavno prevede svoje proizvode i sadržaj na viÅ¡e " "jezika." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Dodaj projekat" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Dodaj projekat" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit – menadžer kataloga" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Uredi…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Napravi novi prevodilaÄki projekat" #: src/manager.cpp:145 msgid "Delete the project" msgstr "IzbriÅ¡i projekat" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Uredi projekat" #: src/manager.cpp:176 msgid "Update all" msgstr "A&žuriraj sve" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Ažuriraj sve kataloge u projektu" #: src/manager.cpp:378 msgid "Total" msgstr "Ukupno" #: src/manager.cpp:379 msgid "Untrans" msgstr "Neprevedeno" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Potrebna dorada" #: src/manager.cpp:381 msgid "Errors" msgstr "GreÅ¡ke" #: src/manager.cpp:382 msgid "Last modified" msgstr "Poslednja izmena" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Izbor foldera" #: src/manager.cpp:433 msgid "Directories:" msgstr "Folderi:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Želite li da izbriÅ¡ete projekat „%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "IzbriÅ¡i projekat" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Brisanjem projekta nećete izbrisati datoteke prevoda." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Potvrda" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Želite li da ažurirate sve kataloge u ovom projektu?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Ažuriraćete sve datoteke u projektu iz izvornog koda." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Ažuriranje kataloga projekta" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Proveri d&a li postoje ispravke…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Menadžer kataloga" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&PodeÅ¡avanja…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&UreÄ‘ivanje" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Opozovi" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Ponovi" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Nalepi i uskladi stil" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "&IzbriÅ¡i" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Pravopis i gramatika" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Prikaži pravopis i gramatiku" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Odmah proveri dokument" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Proveravaj pravopis tokom kucanja" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Provera gramatike sa pravopisom" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Automatski ispravi pravopis" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Zamene" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Prikaži zamene" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Pametno kopiranje/nalepljivanje" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Pametni navodnici" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Pametne crte" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Pametni linkovi" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Zamena teksta" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformacije" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Pretvori u velika slova" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Pretvori u mala slova" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Pretvori u velika poÄetna slova" #: src/menus.cpp:237 msgid "Speech" msgstr "Govor" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Pokreni govor" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Zaustavi govor" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Prikaz" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Prikaži traku sa alatkama" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Prilagodi traku sa alatkama…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "PreÄ‘i u režim celog ekrana" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Prozor" #: src/menus.cpp:263 msgid "Minimize" msgstr "Umanji" #: src/menus.cpp:264 msgid "Zoom" msgstr "Zum" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Dobro doÅ¡li u Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Postavi sve u prednji plan" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informacije o prevodiocu" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Ime:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "VaÅ¡e ime" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "&Imejl:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "adresa@domen.rs" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "VaÅ¡e ime i imejl-adresa se koriste samo pri postavljanju poslednjeg " "prevodioca u zaglavlju GNU gettext datoteka." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "UreÄ‘ivanje" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Automatski kompajliraj MO datoteku pri Äuvanju" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Proveravaj pravopis" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Uvek prebaci fokus na polje za unos teksta" #: src/prefsdlg.cpp:211 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 "" "Ne dozvoljava da lista stringova zauzme fokus. Ako je omogućeno, morate da " "koristite Ctrl i strelice za navigaciju. Tekst možete da unosite direktno u " "polje a da ne pritiskate Tab za promenu fokusa." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Izgled" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Font za listu:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Font za tekstualna polja:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Promenite jezik interfejsa" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(potreban je Windows 8 ili noviji)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "OpÅ¡te" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Koristi prevodilaÄku memoriju" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Upravljaj…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Pri ažuriranju iz izvornog koda" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "koristi sliÄne prevode iz datoteke" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "prevedi pomoću prevodilaÄke memorije" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit može pokuÅ¡ati da popuni nove unose samo iz prethodnih prevoda u " "datoteci ili iz Äitave prevodilaÄke memorije. Upotreba prevodilaÄke memorije " "neće imati mnogo uÄinka ako je slabo popunjena, ali će biti sve bolja kako " "dodajete nove prevode." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "SaÄuvanih prevoda:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "VeliÄina baze na disku:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Uvezi datoteke prevoda…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Uvezi datoteke prevoda…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Uvezi iz TMX-a…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Uvezi iz TMX-a…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Izvezi u TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Izvezi u TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "PoniÅ¡ti" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Izbor datoteke prevoda za uvoz" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Izbor TMH datoteka za uvoz" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX datoteke" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Uvoz prevoda…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Nije uspeo uvoz prevodilaÄke memorije." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Uvoz iz „%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "Uvezen je %s prevod." msgstr[1] "Uvezena su %s prevoda." msgstr[2] "Uvezeno je %s prevoda." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Izvezi kao…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Izvoz prevoda…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Izvoz prevodilaÄke memorije u „%s†nije uspeo." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Resetovanje prevodilaÄke memorije" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Želite li zaista da resetujete prevodilaÄku memoriju?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Obrisaćete sve prevode u prevodilaÄkoj memoriji. Ova radnja je nepovratna." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "Memorija" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "PrevodilaÄka memorija" #: src/prefsdlg.cpp:730 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 "" "IzdvajaÄi se koriste za pronalaženje i izdvajanje stringova za prevod u " "datotekama izvornog koda." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "PrilagoÄ‘eni izdvajaÄi:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "PrilagoÄ‘eni izdvajaÄi:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Podržava sve programske jezike koje prepoznaju GNU gettext alatke (PHP, C/C+" "+, C#, Python, Java, JavaScript i druge)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "IzbriÅ¡i izdvajaÄ" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Želite li zaista da izbriÅ¡ete izdvajaÄ â€ž%sâ€?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "IzdvajaÄi" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Nalozi" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Automatski traži ažuriranja" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "UkljuÄi beta verzije" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta verzije sadrže najnovije funkcije i poboljÅ¡anja, ali mogu biti manje " "stabilne." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Ažuriranja" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Ova podeÅ¡avanja utiÄu na formatiranje PO datoteka. Prilagodite ih svojim " "potrebama, npr. ako koristite sistem za upravljanje izvornim kodom." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "ZavrÅ¡eci redova:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (preporuÄeno)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Prelom:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "OÄuvaj formatiranje postojećih datoteka" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Napredno" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Postavke" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Priprema stringova…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Preliminarno prevoÄ‘enje pomoću prevodilaÄke memorije…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Preliminarno je preveden %u string" msgstr[1] "Preliminarno su prevedena %u stringa" msgstr[2] "Preliminarno je prevedeno %u stringova" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Preliminarno prevoÄ‘enje…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "Preliminarno je preveden %d unos." msgstr[1] "Preliminarno su prevedena %d unosa." msgstr[2] "Preliminarno je prevedeno %d unosa." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "Prevodi su oznaÄeni za doradu. Proverite njihovu ispravnost." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "IdentiÄna podudaranja sa prevodilaÄkom memorijom" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Približna podudaranja sa prevodilaÄkom memorijom" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Nijedan unos se ne može preliminarno prevesti." #: src/pretranslate.cpp:218 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 "" "PrevodilaÄka memorija ne sadrži stringove koji su sliÄni onima u trenutnoj " "datoteci. Ova opcija je korisna za poluautomatske prevode tek nakon Å¡to " "Poedit nauÄi dovoljno iz datoteka koje ste ruÄno preveli." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Nije moguće preliminarno prevesti bez izvornog teksta." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Preliminarni prevod" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Za preliminarni prevod je potreban izvorni tekst. Ova funkcija neće raditi " "samo sa identifikatorima." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Nije moguće preliminarno prevesti sa nepoznatog jezika." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Da biste koristili preliminarni prevod potrebno je da izvorni jezik bude " "poznat. Poedit ga nije prepoznao u ovoj datoteci." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Samo potpuna podudaranja" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Podrazumevano se prikazuju i približni rezultati, ali su oznaÄeni da im je " "potrebna dorada. OznaÄite ovu opciju kako bi se prikazivala samo potpuna " "podudaranja." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Potpuna podudaranja ne oznaÄavaj za doradu" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "UkljuÄite ovu opciju samo ako ste sigurni u kvalitet vaÅ¡e prevodilaÄke " "memorije. Podrazumevano se svim podudaranjima dodeljuje oznaka „potrebna " "dorada†i takve stringove bi trebalo proveriti." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Preliminarni prevod automatski pronalazi potpuna ili približna podudaranja " "za neprevedene stringove u prevodilaÄkoj memoriji i popunjava njihove " "prevode." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "GreÅ¡ka: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "DoÅ¡lo je do %d greÅ¡ke:" msgstr[1] "DoÅ¡lo je do %d greÅ¡ke:" msgstr[2] "DoÅ¡lo je do %d greÅ¡aka:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "DoÅ¡lo je do greÅ¡ke." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "DoÅ¡lo je do %d greÅ¡ke." msgstr[1] "DoÅ¡lo je do %d greÅ¡ke." msgstr[2] "DoÅ¡lo je do %d greÅ¡aka." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Otkazivanje…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Ovde prevucite foldere ili datoteke" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Ovde prevucite foldere ili datoteke" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Dodaj foldere…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Dodaj foldere…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Dodaj datoteke…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Dodaj datoteke…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Dodaj zamenski znak…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Dodaj zamenski znak…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Prikaži u Finder-u" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Prikaži u Explorer-u" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Prikaži u folderu" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Putanje" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Izuzete putanje" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Napredna podeÅ¡avanja izdvajanja" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Izdvoj napomene prevodiocima:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Iz komentara koji poÄinju sa:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Iz svih komentara" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Dodatne xgettext oznake:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Dodatne kljuÄne reÄi" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Naziv projekta za koji je namenjen prevod" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Naziv grupe i imejl-adresa ili URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "npr. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (preporuÄuje se)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Prvo saÄuvajte datoteku. Ovaj odeljak se ne može ureÄ‘ivati dok to ne uradite." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Ispravnost Äuvara mesta" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "U prevodu nedostaje Äuvar mesta „%sâ€." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Nepotreban Äuvar mesta „%s†koji ne postoji u izvornom tekstu." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Prevodi množinskih oblika" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Nisu svi množinski oblici prevedeni." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Nedoslednost pri upotrebi velikih i malih slova" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Prevod mora poÄinjati velikim slovom." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Prevod mora poÄinjati malim slovom." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Nedoslednost pri upotrebi razmaka" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Prevod ne poÄinje razmakom." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Prevod poÄinje razmakom, ali izvorni tekst ne." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "U prevodu nedostaje novi red na kraju." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Prevod se zavrÅ¡ava novim redom, ali izvorni tekst ne." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "U prevodu nedostaje razmak na kraju." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Prevod se zavrÅ¡ava razmakom, ali izvorni tekst ne." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Provere interpunkcije" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Prevod se mora zavrÅ¡avati znakom „%sâ€." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Prevod se ne sme zavrÅ¡avati znakom „%sâ€." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Prevod se zavrÅ¡ava znakom „%sâ€, a izvorni tekst znakom „%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Oblak" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "ObriÅ¡i listu" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "ObriÅ¡i listu" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Komentar:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Ažuriraj" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "Iz&briÅ¡i" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "IzbriÅ¡i komentar" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "UreÄ‘ivanje projekta" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Naziv projekta:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "&Potraži" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Dodajte folder na listu" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "&U redu" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Datoteka" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Novo…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "No&vo iz POT/PO datoteke…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "No&vo iz POT/PO datoteke…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Otvori…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Otvori &nedavne" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Otvori &nedavne" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Otvori prevod iz oblaka…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Otvori prevod iz oblaka…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Uvodni prozor" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Uvodni prozor" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Menadžer kataloga" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Menadžer kataloga" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Zatvori" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&SaÄuvaj" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "SaÄuvaj &kao…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "SaÄuvaj &kao…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Ko&mpajliraj u MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "I&zvoz u HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Potr&aži ažuriranja…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "PodeÅ¡avanja…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&PodeÅ¡avanja" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&IzaÄ‘i" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "IzaÄ‘i" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopiraj iz &jednine" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopiraj iz &jednine" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "OznaÄi prevod za &doradu" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "OznaÄi prevod za &doradu" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Uredi ko&mentar" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Uredi ko&mentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Predlozi" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "P&ronaÄ‘i…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "&Zameni…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "PronaÄ‘i &sledeće" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "PronaÄ‘i prðodno" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "PronaÄ‘i i zameni…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "PronaÄ‘i &sledeće" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "PronaÄ‘i prðodno" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "ID &stringa" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "ID &stringa" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "&Upozorenja" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "&Upozorenja" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Sortiraj kao u &datoteci" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Sortiraj kao u &datoteci" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Sortiraj prema &izvornom tekstu" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Sortiraj prema &izvornom tekstu" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Sortiraj prema p&revodu" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Sortiraj prema p&revodu" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&GrupiÅ¡i po kontekstu" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&GrupiÅ¡i po kontekstu" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Prvo unosi sa greÅ¡kama" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Prvo unosi sa greÅ¡kama" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Prvo &neprevedeni unosi" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Prvo &neprevedeni unosi" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "Pojavljivanja u &kodu" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "Pojavljivanja u &kodu" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Prikaži boÄnu traku" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "&Statusna traka" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "P&revod" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Ažuriraj iz izvornog koda" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Ažuriraj iz izvornog koda" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "&Sinhronizuj sa Crowdin-om" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "&Preliminarni prevod…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "P&roveri valjanost prevoda" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "P&roveri valjanost prevoda" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Ukloni prevode identiÄne izvoru" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&OÄisti izbrisane prevode" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&OÄisti izbrisane prevode" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "S&vojstva…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Navigacija" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&ZavrÅ¡i i nastavi" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&ZavrÅ¡i i nastavi" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Prethodna &izmena" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Prethodna &izmena" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Prethodni prevod" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Prethodni prevod" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Sledeći prevod" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Sledeći prevod" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "P&rethodni nedovrÅ¡eni" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "P&rethodni nedovrÅ¡eni" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "S&ledeći nedovrÅ¡eni" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "S&ledeći nedovrÅ¡eni" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Prðodni množinski oblik" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Prðodni množinski oblik" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Sle&deći množinski oblik" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Sle&deći množinski oblik" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "O&nlajn pomoć" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "O&nlajn pomoć" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "P&riruÄnik za GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "P&riruÄnik za GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&O Poedit-u" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&O programu" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "PodeÅ¡avanje izdvajaÄa" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista ekstenzija razdvojenih taÄka-zarezom (npr. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Pozivanje:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Komanda za izdvajanje prevoda:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ova komanda pokreće izdvajaÄ.\n" "%o – naziv izlazne datoteke,\n" "%K – lista kljuÄnih reÄi,\n" "%F – lista ulaznih datoteka,\n" "%C – kodiranje (v. ispod)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Stavka u listi kljuÄnih reÄi:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Ovo će biti dodato u komandnu liniju za svaku kljuÄnu reÄ.\n" "Parametar %k oznaÄava kljuÄnu reÄ." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Stavka u listi ulaznih datoteka:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Ovo će biti dodato u komandnu liniju za svaku ulaznu datoteku.\n" "Parametar %f oznaÄava naziv datoteke." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Kodiranje izvornog koda:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Ovo će biti dodato u komandnu liniju samo ako je navedeno kodiranje izvornog " "koda.\n" "Parametar %c oznaÄava kodiranje." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Svojstva prevoda" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Naziv i verzija projekta:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Tim prevodilaca:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Množinski oblici:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "&Podrazumevana pravila za ovaj jezik" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "PrilagoÄ‘eni izraz" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Saznajte viÅ¡e o množinskim oblicima" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Kodiranje:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Napredna podeÅ¡avanja izdvajanja…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Napredna podeÅ¡avanja izdvajanja…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Svojstva prevoda" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Putanje do izvornih datoteka" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Putanje do izvornih datoteka" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Izdvoj tekst iz izvornih datoteka u sledeće foldere:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Osnovna putanja:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "KljuÄne reÄi izvornih datoteka" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "KljuÄne reÄi izvornih datoteka" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Traži stringove za prevod u izvornim datotekama prema ovim kljuÄnim reÄima " "(nazivima funkcija):" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Koristi i podrazumevane kljuÄne reÄi za podržane jezike" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Saznajte viÅ¡e o kljuÄnim reÄima gettext-a" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Otvori datoteku" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "SaÄuvaj datoteku" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Proveri valjanost" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Proveri da li ima greÅ¡aka u prevodu" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Ažuriraj iz koda" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Ažuriraj iz koda" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Ažuriraj iz izvornog koda" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "BoÄna traka" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Prikaži ili sakrij boÄnu traku" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Prethodni izvorni tekst" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "Stari izvorni tekst (do ažuriranja) koji odgovara netaÄnom prevodu." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Napomene prevodiocima" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Komentar" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Dodaj komentar" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Dodaj komentar" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "IzbriÅ¡i iz prevodilaÄke memorije" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "IzbriÅ¡i iz prevodilaÄke memorije" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Predloženi prevodi" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Nema rezultata" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Nema rezultata" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Ovaj string je pronaÄ‘en u Poedit-ovoj prevodilaÄkoj memoriji." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Za predložene prevode je potreban izvorni tekst. Ova funkcija neće raditi " "samo sa identifikatorima." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Da biste koristili predloge prevoda potrebno je da izvorni jezik bude " "poznat. Poedit ga nije prepoznao u ovoj datoteci." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Nije moguće izvrÅ¡iti program: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Neispravan format TMX datoteke." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Baza podataka prevodilaÄke memorije je oÅ¡tećena: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "GreÅ¡ka u prevodilaÄkoj memoriji: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(podrazumevani jezik)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Izbor jezika" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Izaberite željeni jezik" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "" "Potrebno je da ponovo pokrenete Poedit kako bi ova izmena stupila na snagu." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Nije moguće napraviti privremeni folder." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Nema unosa. To je neobiÄno." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Saznajte viÅ¡e o GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Najjednostavniji naÄin da popunite ovu datoteku prevodima jeste da je " "ažurirate pomoću POT datoteke:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Ažuriraj pomoću POT datoteke" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Preuzmite stringove za prevod iz postojećeg POT Å¡ablona." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Stringove za prevod možete da izdvojite i direktno iz izvornog koda:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Izdvoj iz izvornog koda" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Podesite izdvajanje iz izvornog koda u svojstvima." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Verzija %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Napravi novi" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Napravite novi prevod pomoću POT Å¡ablona." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Pregledaj datoteke" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Otvorite i ureÄ‘ujte datoteke prevoda." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Prevedite projekat u oblaku" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "SaraÄ‘ujte sa drugima onlajn." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Nedavne datoteke" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sinhronizuj" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sinhronizuj prevod sa Crowdin-om" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "O %s-u" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "PodeÅ¡avanja %s-a" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Osnovni podaci o %s aplikaciji" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Usluge" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Sakrij %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Sakrij druge" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Prikaži sve" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "IzaÄ‘i iz %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "PodeÅ¡avanja…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "PodeÅ¡avanja…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Postavke..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Primeni" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Primeni" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Nazad" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Nazad" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Otkaži" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&ObriÅ¡i" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "ObriÅ¡i" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopiraj" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Iseci" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Iseci" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Uredi" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&IzaÄ‘i" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Pomoć" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Novo" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "&Novo" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Ne" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ne" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&U redu" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Otvori…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Otvori…" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Otvori…" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Nalepi" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Nalepi" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "PodeÅ¡avanja" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Ponovi" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Osveži" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&SaÄuvaj kao" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "SaÄuvaj kao" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Izaberi &sve" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Izaberi sve" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Opozovi" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Da" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Da" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Gore" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Dole" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Levo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Desno" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Upozorenje: " poedit-3.6.3/locales/hu.mo0000644000175100001660000017446615011674363011114 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-ªOú‘ ’.’H’-d’’’%¢’%È’î’C|“À“ B”O” a”?n” ®”¸”̔Քܔ ã” í” ø” • •$• ;•I• P•]•v••#—•#»•ß•ç•ì•ô•––3–8–<–K–Z–i– x–†–––©–½–Ñ–*ä–#— 3—>—F—M—V—$i—$Ž— ³— Á— Ï— Û—#é—# ˜1˜P˜o˜˜¯˜·˜$½˜â˜#ø˜ ™ '™3™B™H™ P™\™k™ƒ™›™'°™Ø™#ç™ š#š;š'Pšxšš ­š*¸š%ãš* ›4›M›a›Dw›(¼›å›)õ›$œ DœPœ%Yœ/œ-¯œ#Ýœ-/6EÇUÝO3ž+ƒž ¯žºžºÐž‹Ÿ’Ÿ:£Ÿ"ÞŸ. 30 d u ˆ › "­ Рã .¡%0¡V¡ q¡’¡±¡Ë¡Ô¡ä¡ù¡ ¢ ¢(¢/¢D¢)Y¢"ƒ¢¦¢ Ä¢ ТÝ¢÷¢ £ £7<£t£‹ƒ£ ¤¤6¤U¤r¤"‘¤8´¤4í¤%"¥H¥%Y¥+¥%«¥ Ñ¥ÆÞ¥ ¥¦°¦Ʀܦ ú¦§!§$*§O§$e§Чœ§´§7Ƨ!þ§ ¨..¨s]¨YѨA+©m© |©Š©< ©Ý©'ó©<ª%Xª%~ª ¤ª¯ª ̪Ùªôª«)«C«Y« o«|«Œ«”«„±«6¬P¬„j¬ï¬­*,­W­^­e­l­ˆ­Ÿ­»­Õ­ò­®A(®j®ˆ®+¥®MÑ®o¯¯ ©¯1¶¯=è¯<&°0c°6”°˰Ѱ!ë°* ±Z8±“±œ±²±ıÚ±ö±²,²B²T²g²z²² ²¼²Ų ݲ é² õ²³ ³³#5³,Y³ †³»’³¸N´ªµ ²µ½µÚµ$øµ¶$;¶`¶0€¶±¶ ϶!Ù¶!û¶·4· R·^·r· · ‹·—· °·»·1Ó·&¸,¸A¸R¸a¸h¸,~¸/«¸Û¸!ò¸ ¹$5¹Z¹D^¹ £¹G®¹ö¹­º<¶º óº ÿº3 »@»Y» k» w»˜»6¨»ß»å»ÿ»¼*¼;¼ÕT¼*½.½G½[½ t½ ‚½ £½ Ľå½é½)ø½]"¾€¾&¾/¶¾æ¾2¿38¿l¿Š¿¿½‘¿'OÀ!wÀ™À0°ÀáÀ!Á"Á4ÁPÁlÁƒÁ  Á ®Á¼ÁËÁÒÁèÁþÁÂ. ¼Â%É ïÂGúÂBÃ7XÃÃp«ÃIÄ fÄtÄQ‘ÄãÄûÄÅZÅ zÅÕ„Æ;ZÇ4–ÇËÇÞÇíÇ)üÇ+&ÈRȲdȇÉtŸÉÊ#Ê5Ê#GÊ/kʛʸÊÕÊìÊËË 8ËFË OËYË sË"Ë ¢ËD¬ËñËÌ ÌÌ,Ì AÌLÌ0[Ì0ŒÌ½ÌÜÌ;ûÌ7Í=ÍOÍ!a̓Í-ŒÍºÍÃÍ…âÍh΄ΕÎγÎÉÎÝÎñÎÏÏ.Ï6=ÏtφϛÏ$¯ÏÔÏ ðÏ0Ð!BÐdЄЙЬлÐÍÐ0çÐÑ*4Ñ_ÑÑ!›Ñ½Ñ×Ñ$ðÑÒ/Ò)KÒ!uÒ —Ò¡Ò°Ò¿ÒÎÒ"åÒÓ"#ÓFÓ UÓ"aӄӜӶÓÏÓïÓ Ô(ÔHÔcÔÔ» Ô$\ÕÕÕ¬ÕÇÕÝÕóÕÖÖ3ÖP;Ö ŒÖ­Ö¾ÖÔÖ(êÖ×0×*E×p×;‰×Å× Õ× à×JØŽÌØ[ÙlÙ+ŠÙ¶ÙÇÙ+ÞÙ7 ÚBÚ EÚKQÚ*Ú ÈÚÅÖÚœÛT»Û<ÜMÜÅgÝ:-Þ-hÞ_–Þ[öÞTRß%§ß&Íß'ôß7àiTài¾à'(á@Pá=‘áRÏá."â,Qâ“~â ã$3ã(Xã'ã'©ã<Ñã†ä)•äQ¿äFåhXå£ÁåJeæg°æ`ç—yçÁèFÓè…éc é^êcêkê{ê–ë²ë Ìë×ëéëþëìF6ì_}ì4Ýì#í6íTíní…ízîî~¢î!ï(ï 9ï1Fï!xïšïªïÃïÓï âïîï ð.ð/Nð~ðœðºðÑðëðñ ñ <ñJñ añ‚ñ%œñ/Âñ$òñò4ò&Sò-zò8¨ò|áò ^óóó ¬ó·óÓó ïóô"ô=ô[ônôtô3|ô°ôÅôÙôóôõNõ>dõc£õHö Pö1\öoŽöþö ÷÷6 ÷%W÷}÷!„÷*¦÷Ñ÷í÷ò÷ø÷û÷øøøøøø"ø(ø7øGøYøkø~øø§ø¾øÏøìøþø'ù|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-18 10:16 Last-Translator: Language-Team: Hungarian Language: hu_HU MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: hu X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (módosítva) (nincs mentve)%d kód elÅ‘fordulása%d kód elÅ‘fordulásai%d bejegyzés%d bejegyzés%d elem elÅ‘fordítva.%d elem elÅ‘fordítva.%d hiba%d hiba%d hiba történt.%d hiba történt.%d hiba történt:%d hiba történt:%d problémát észleltünk a forrás karakterláncokkal kapcsolatban.%d problémát észleltünk a forrás karakterláncokkal kapcsolatban.%d probléma van a fordítással.%d probléma van a fordítással.A(z) „%2$s†fájl %1$i sora nem lett megfelelÅ‘en betöltve.A(z) „%2$s†fájl %1$i sora nem lett megfelelÅ‘en betöltve.%s formátum%s beállításai%s formátum%s fordítás lett importálva.%s fordítás lett importálva.&NévjegyA Poedit &névjegyeAlkalmazVisszaMégse&TörlésBe&zárás&Másolás&Törlés&Kész és következÅ‘&Kész és következÅ‘Sz&erkesztés&Fájl&Keresés…&GNU gettext kézikönyv&GNU gettext kézikönyv&UgrásCs&oportosítás környezet szerintCs&oportosítás környezet szerint&SúgóÚ&jÚ&j…&KövetkezÅ‘ >&KövetkezÅ‘ fordítás&KövetkezÅ‘ fordítás&Nem&OK&Online súgó&Online súgó&Megnyitás…&Megnyitás…&Beillesztés&Beállítások&Beállítások…&ElÅ‘zÅ‘ fordítás&ElÅ‘zÅ‘ fordítás&Tulajdonságok…Törölt fordítások &végleges törléseTörölt fordítások &tisztítása&Kilépés&MégisCse&reMenté&sMentés &másként&KódelÅ‘fordulások megjelenítése&KódelÅ‘fordulások megjelenítése&KezdÅ‘ ablak&KezdÅ‘ ablak&Fordítás&Visszavonás&Lefordítatlan bejegyzések elÅ‘re&Lefordítatlan bejegyzések elÅ‘reFrissítés a &forráskódbólFrissítés a &forráskódbólFordítások ér&vényesítéseFordítások ér&vényesítése&Nézet&Igen(Alapértelmezett nyelv használata)(nincs bejelentkezve)(Windows 8 vagy újabb szükséges)< &ElÅ‘zÅ‘A %s névjegyeFiókFiókokHozzáadásHozzászólásFájlok hozzáadása…Mappák hozzáadása…Projekt hozzáadásaHelyettesítÅ‘ karakter hozzáadása…HozzászólásKönyvtár hozzáadása a listáhozFájlok hozzáadása…Mappák hozzáadása…Projekt hozzáadásaHelyettesítÅ‘ karakter hozzáadása…További kulcsszavakKiegészítÅ‘ xgettext jelzÅ‘k:SpeciálisSpeciális kivonatolási beállítások…Speciális kivonatoló beállításokSpeciális kivonatolási beállítások…Minden fordítási fájlÖsszes megjegyzésÖsszes karakterláncA támogatott nyelvek alapértelmezett kulcsszavai is használhatókMindig a beviteli mezÅ‘ legyen az aktívHiba történt.Egy elem a bemeneti fájlok listájában:Egy elem a kulcsszavak listájában:MegjelenésAlkalmazHozzávetÅ‘leges egyezések a TM-bólBiztos, hogy törli a(z) „%s†kivonatolót?Biztos, hogy törli a fordítási memóriát?Frissítések automatikus kereséseMO fájl automatikus létrehozása mentéskorVisszaAlap útvonal:A béta verziók a legújabb funkciókat és fejlesztéseket tartalmazzák, de elÅ‘fordulhat, hogy egy kicsit kevésbé stabilak.Összes elÅ‘rehozásaSérült katalógusfájl: többes számú msgstr van használva msgid_plural nélkülSérült PO fájl: egyes számú msgstr van használva msgid_plural megadássalHibás jelölés a fordítás szövegében.TallózásFájlok böngészéseAlapesetben a pontatlan eredmények is belekerülnek, de munkát igénylÅ‘ként lesznek megjelölve. Kapcsolja be ezt a lehetÅ‘séget, hogy csak pontos egyezés esetén kerüljenek bele.MégseMegszakítás…Az ideiglenes fájlok könyvtárát nem lehet létrehozni.A programot nem lehet futtatni: %sIsmeretlen nyelvrÅ‘l nem lehet elÅ‘fordítani.A forrásszöveg nélkül nem lehet elÅ‘fordítani.Nagy kezdÅ‘betű&KatalóguskezelÅ‘&KatalóguskezelÅ‘KatalóguskezelÅ‘Felület nyelvének változtatásaKarakterkódolás:Dokumentum ellenÅ‘rzése mostNyelvhelyesség és helyesírás ellenÅ‘rzéseHelyesírás-ellenÅ‘rzés beíráskorFrissítések keresése…Hibák keresése a fordításbanFrissítések ellenÅ‘rzése…Helyesírás-ellenÅ‘rzésTörlésMenü törléseFordítás törléseMenü törléseFordítás törléseBezárásFelhÅ‘Kód elÅ‘fordulásaiKód elÅ‘fordulásaiEgyüttműködés más emberekkel online.Forrásfájlok összegyűjtése…Fordításkinyerési parancs:MegjegyzésMegjegyzés:Megjegyzések elÅ‘taggal:Fordítás MO-ra…Lefordítás…Lefordított fordítási fájlokForráskódkinyerés beállítása a Tulajdonságokban.MegerÅ‘sítésKapcsolja a Poeditet egy támogatt felhÅ‘s honosítási platformhoz, hogy zökkenÅ‘mentesen szinkronizálja a rajtuk kezelt fordításokat.MásolásMásolás az egyes számbólMásolás a forrásszövegbÅ‘lMásolás az egyes számbólMásolás a forrásszövegbÅ‘lAutomatikus helyesírás-javításNem sikerült letölteni a Localazy projekt részleteit.A fájl nem tölthetÅ‘ be, valószínűleg sérült.A(z) %s fájl mentése nem sikerült.Új készítéseÚj fordítási projekt létrehozásaÚj fordítás készítése POT sablonból.Új fordítási projekt létrehozásaCrowdin hibaA Crowdin egy online fordításkezelÅ‘ platform és kollaboratív fordítási eszköz. Mi magunk is a Crowdint használjuk a Poedit számos nyelvre történÅ‘ fordításához, és nagyon szeretjük.&KivágásEgyéni kivonatolók:Egyéni kivonatolók:Eszköztár testreszabása…KivágásAdatbázis méret a lemezen:TörlésTörlés a fordítási memóriábólKivonatoló törléseTörlés a fordítási memóriábólProjekt törléseA megjegyzés törléseProjekt törléseA projekt törlése nem törli a fordítási fájlokat.Különbségek meghatározása…Könyvtárak:Biztos, hogy törli ezt a projektet: „%sâ€?Újra szeretné tölteni a fájlt a lemezrÅ‘l? Ha betölti, a Poedit programban elmentett módosításai elvesznek.El szeretné távolítani az összes olyan fordítást, amely azonos a forrásszöveggel?Tényleg törölni szeretné a már nem használt fordításokat?Ni&ncs mentésNincs mentésNe jelenjen meg újraNe jelölje meg munkát igénylÅ‘ként a pontosan egyezÅ‘ketNe jelenjen meg újraA legújabb fordítások letöltése…A fordítások letöltése ebben a projektben le van tiltva.Húzza ide a mappákat vagy fájlokatHúzza ide a mappákat vagy fájlokatK&ilépésExportálás HTML fájlba…Szerkesztés&Megjegyzés szerkesztése&Megjegyzés szerkesztéseMegjegyzés szerkesztéseMegjegyzés szerkesztéseProjekt szerkesztéseProjekt szerkesztéseSzerkesztésSzerkesztés…E-mail:Váltás teljes képernyÅ‘reA fájlban lévÅ‘ egyes bejegyzéseknek eltérÅ‘ darabszámú többes számuk van, mint amit a katalógus Plural-Forms fejléce mondHibás bejegyzések elölHibás bejegyzések elölA hibás bejegyzések pirossal meg lettek jelölve a listában. A hiba részletei megjelennek, ha egy ilyen bejegyzést választ ki.Hiba a fájl megnyitása soránHiba a fájl mentése soránHiba az XLIFF-fájl betöltése során: %sHiba: HibákMindenPontos egyezések a TM-bólKizárt elérési utakExportálás TMX fájlba…Exportálás másként…Exportálás HTML fájlba…Exportálás TMX fájlba…Exportálás HTML fájlbaNem sikerült a fordítási memória exportálása ide: „%sâ€.Fordítások exportálása…Kinyerés forrásfájlokbólFordítóknak szóló jegyzetek kinyerése:Szövegek kinyerése a következÅ‘ könyvtárakban lévÅ‘ forrásfájlokból:Fordítható karakterláncok kinyerése %s fájlból…Fordítható karakterláncok kinyerése %s fájlból…Kivonatoló beállításaKivonatolókNem sikerült kommunikálni a Poedit folyamattal.Nem sikerült a karakterláncok kinyerése a forráskódból.Nem sikerült betölteni a fájlt kibontott fordításokkal.A gettext katalógusok egyesítése meghiúsult.Nem sikerült frissíteni a fordítási memóriát: %sFájlA fájl nem nyitható megA(z) „%s†fájl nem létezik.A(z) „%s†fájl nem fordítási fájl.A(z) „%s†fájl csak olvasható és nem lehet menteni. Mentse el a fájlt más néven.KeresésKövetkezÅ‘ kereséseElÅ‘zÅ‘ kereséseKeresés és csere…Keresés a megjegyzésekbenKeresés a forrásszövegbenKeresés a fordításbanKövetkezÅ‘ kereséseElÅ‘zÅ‘ kereséseNyelv kijavításaNyelv kijavításaFejléc javításaFejléc javításaFlutter fordítási fájlok%i. alakForm %i (nem használt)GNU gettextÃltalánosHTML fájlokSúgóOldalsáv elrejtéseÃllapotsor elrejtéseEzen értesítÅ‘ üzenet elrejtéseHogyan működik a felhÅ‘s szinkronizálás?AzonosítóHa folytatja a tisztítást, akkor a töröltként megjelölt fordítások végleg eltávolításra kerülnek. Újra kell fordítania Å‘ket, ha ezek a jövÅ‘ben újra hozzá lesznek adva.Ha korábban megtagadtad a fájlokhoz való hozzáférést, akkor engedélyezheted a Rendszerbeállítások > Biztonság és adatvédelem > Adatvédelem > Fájlok és mappák menüben.Ha korábban megtagadta a fájljaihoz való hozzáférést, engedélyezheti azt a Rendszerbeállítások > Adatvédelem és biztonság > Fájlok és mappák menüpontban.MellÅ‘zésNem kis-nagybetű érzékenyImportálás TMX fájlból…Fordítási fájlok importálása…Importálás TMX fájlból…Fordítási fájlok importálása…Importálás innen: „%sâ€â€¦A fordítási memória importálása sikertelen.Fordítások importálása…Ebben: %sBeleértve a béta verziókat is.Inkonzisztens nagy- és kisbetűkInkonzisztens szóközInformációk a fordítórólTelepítésÉrvénytelen fájlVégrehajtás:ProblémaProblémákJSON fordítási fájlokMegtartásNyelv nyeve vagy kódjaA fordítás nyelve megegyezik a forrásnyelvvel.A fordítás nyelve nincs beállítva.A fordítás nyelve:NyelvválasztásNyelvi csapat:Nyelv:Utoljára módosítvaTudjon meg többet a gettext kulcsszavakrólTudjon meg többet a többes számú alakokrólTovábbi információkBÅ‘vebben a %s szolgáltatásrólTudjon meg többet a CrowdinrólTudjon meg többet a GNU gettextrÅ‘lSorA(z) „%2$s†fájl %1$d. sora sérült (érvénytelen %3$s adat).Sorvégek:Kiterjesztések listája pontosvesszÅ‘vel elválasztva (pl. *.cpp;*.h):Angol betöltéseA Localazy egy magas szinten automatizált honosítási platform, amely lehetÅ‘vé teszi, hogy bárki egyszerűen több nyelvre fordíthassa le a termékét vagy tartalmát.Az MO fájlok nem szerkeszthetÅ‘k közvetlenül a Poeditben.KisbetűvelNagybetűvelKészítsen új fordítást ebbÅ‘l a POT fájlból.Hibás fejléc: „%sâ€Fiókok kezeléseKezelés…Eltérések összefésülése…MinimalizálásA projekt megnevezése, amelyhez a fordítás tartozikNév:KövetkezÅ‘ &befejezetlenKövetkezÅ‘ &befejezetlenMunkát igényelMunkát igényelHálózati hiba: %s (%d)Soha ne legyen aktív a szöveglista. Ha be van kapcsolva, akkor a mozgáshoz a Ctrl+nyilakat kell használni, de a szöveg azonnal gépelhetÅ‘ anélkül, hogy elÅ‘tte Tabot kellene nyomni a fókusz váltásához.ÚjÚj &POT/PO fájlból…Új karakterláncokÚj &POT/PO fájlból…Új szövegekÚj karakterláncok fordítása:KövetkezÅ‘ többes számú alakKövetkezÅ‘ többes számú alakNemNincs találatEgy bejegyzést sem lehet elÅ‘fordítani.A fájl nem tartalmaz információt a karakterlánc forráskódban való elÅ‘fordulásáról.Nincs találatA fordítással nincsenek problémák.Nem szerepel fordítási projekt a fiókjában.Nincs használati információNincs az összes többes számú alak lefordítva.Nem engedélyezett, kérjük jelentkezzen be újra.Megjegyzések a fordítóknakOKEgyCsak akkor engedélyezze, ha megbízik a FM minÅ‘ségében. Alapértelmezés szerint a FM minden egyezése munkát igénylÅ‘ként lesz megjelölve, és használat elÅ‘tt ellenÅ‘riznie kell.Kitöltés csak pontos egyezés eseténFelhÅ‘s fordítás megnyitása…Legutóbbi megnyitásaFordítási fájl megnyitása és szerkesztése.FelhÅ‘s fordítás megnyitásaFelhÅ‘s fordítás megnyitása…Fájl megnyitásaMegnyitás a szerkesztÅ‘benMegnyitás a szerkesztÅ‘benLegutóbbi megnyitásaReferencia fájl megnyitásaMegnyitás...Megnyitás…BeállításokEgyébEl&Å‘zÅ‘ befejezetlenEl&Å‘zÅ‘ befejezetlenPO fordítási fájlokPOT fordítási sablonokA POT fájl csak egy sablon és nem tartalmaz fordításokat. Fordítás készítéséhez hozzon létre egy új PO fájlt a sablon alapján.BeillesztésBeillesztés és stílus egyeztetéseÚtvonalakA forráskódból frissítést hajt végre a projekt összes fájlján.Engedély megtagadva.A(z) „%s†helykitöltÅ‘ hiányzik a fordításból.HelykitöltÅ‘k helyességeKérjük, nyissa meg és szerkessze helyette a megfelelÅ‘ PO fájlt. Amikor menti, a MO fájl is frissülni fog.ElÅ‘ször mentse el a fájlt. Ez a szakasz addig nem lesz szerkeszthetÅ‘.Többes számTöbbes számú fordításokA fájl által használt többes szám kifejezés a %s nyelvhez nem használatos.Többes számú alakok:PoeditPoedit – KatalóguskezelÅ‘A Poedit automatikusan kijavította a(z) „%s†fájlban lévÅ‘ érvénytelen tartalmat.A Poedit megpróbálhat újabb bejegyzéseket betölteni a fájlban lévÅ‘ korábbi fordításokból, vagy a teljes fordítási memóriából. A FM használata nem igazán hatásos, ha majdnem üres, de ahogy egyre több fordítást ad hozzá, úgy egyre jobb lesz.A Poedit nem tudja megjeleníteni a forráskódot ott, ahol a karakterláncot használják, mert a fájl vagy nem érhetÅ‘ el a hivatkozott helyen, vagy szimbolikus hivatkozás, amely nem egy valós fájlra mutat.A Poedit egy könnyen használható fordítás szerkesztÅ‘.A Poedit nem tudja megnyitni ezt a fájlt: “%sâ€.&ElÅ‘fordítás…ElÅ‘fordításElÅ‘fordított%u sor elÅ‘fordítva%u sor elÅ‘fordítvaElÅ‘fordítás fordítási memóriából…ElÅ‘fordítás…Az elÅ‘fordítás automatikusan megtalálja a fordítási memóriában a lefordítatlan karakterláncok pontos vagy bizonytalan egyezéseit, és kitölti velük a fordításokat.Az elÅ‘fordításhoz szükséges a forrásszöveg megléte. Nem működik csak azonosítókkal, a valódi szöveg használata nélkül.Az elÅ‘fordítás elÅ‘feltétele, hogy a forrásszöveg nyelve ismert legyen. A Poedit ezt nem észlelte a fájlban.BeállításokBeállítások...Beállítások…Karakterláncok elÅ‘készítése…A meglévÅ‘ fájlok formázásának megÅ‘rzéseElÅ‘zÅ‘ többes számú alakElÅ‘zÅ‘ többes számú alakElÅ‘zÅ‘ forrásszövegKorábban szerkesztveKorábban szerkesztveProjekt neve és verziószáma:Projekt neve:Projekt:ProjektekÃrásjelek ellenÅ‘rzéseTisztításTörölt fordítások tisztításaKilépésA fájl tartalmának olvasása sikertelen a következÅ‘ hibával: %sLegutóbbi fájlokMégisFrissítésFájl újratöltéseFájl újratöltéseMaradt: %dEltávolításA forrással azonos fordítások eltávolításaA forrással azonos fordítások eltávolításaEltávolított karakterláncokEltávolított karakterláncokEltávolított karakterláncok (már nincsenek használva):CsereÖssz&es cseréjeÖssz&es cseréjeBehelyettesítendÅ‘ karakterláncCsere…A szükséges Plural-Forms fejléc hiányzik.TörlésFordítási memória törléseA fordítási memória törlésével visszavonhatatlanul töröl minden benne tárolt fordítást. Ez a művelet nem vonható vissza.Megjelenítés a Finder-benFelülvizsgálatMentésMentés &másként…Mentés &másként…Mentés mindenképpMentés mindenképpMentés máskéntMentés másként…Változások mentéseFájl mentéseAz XCLOC fájlok más helyre mentése nem támogatott.KépernyÅ‘képek:Min&den kijelöléseMinden kijelöléseVálasszon importálandó TMX fájltVálassza ki a könyvtáratFordítási fájl kiválasztásaImportálandó fordítás fájlok kiválasztásaFordítási sablon kiválasztásaVálassza ki a kívánt nyelvetNyelv kiválasztásaVálasszon nyelvetBeállításokBeállítások…Oldalsáv megjelenítéseHelyesírás és nyelvhelyesség megjelenítéseÃllapotsor megjelenítéseKarakterlánc-&azonosító megjelenítéseCserejavaslatok megjelenítéseEszköztár megjelenítéseFigyelmeztetések megjelenítéseMegnyitás az IntézÅ‘benMegjelenítés mappábanOldalsáv megjelenítése/elrejtéseOldalsáv megjelenítéseÃllapotsor megjelenítéseKarakterlánc-azonosító megjelenítéseFigyelmeztetések megjelenítéseOldalsávBejelentkezésKijelentkezésBejelentkezésBejelentkezés ide: %sBejelentkezés egy felhÅ‘s fiókbaBejelentkezés a CrowdinraBejelentkezés egy felhÅ‘s fiókbaKijelentkezésEgyes számIntelligens másolás/beillesztésIntelligens kötÅ‘jelekIntelligens hivatkozásokIntelligens idézÅ‘jelekRendezés &fájlsorrend szerintRendezés f&orrás szerintRendezés for&dítás szerintRendezés &fájlsorrend szerintRendezés f&orrás szerintRendezés for&dítás szerintForráskód karakterkódolás:A forráskód kivonatoló szolgál a lefordítható karakterláncok forráskód fájlokban való megkeresésére és kivonatolására annak érdekében, hogy le lehessen Å‘ket fordítani.Nem áll rendelkezésre forráskód.Forráskód nem találhatóForrásszövegForrásszöveg-azonosítóForrásszöveg – %sForrások kulcsszavaiForrások útvonalaiForrások kulcsszavaiForrások útvonalaiBeszédHelyesírás-ellenÅ‘rzés le van tiltva, mert a(z) %s szótár nincs telepítve.Helyesírás és nyelvhelyességBeszéd kezdéseBeszéd leállításaTárolt fordítások:Karakterlánc szövegösszefüggése: %sKarakterláncazonosító: %sKarakterlánc hosszaKarakterlánc hossza: fordítás | forrásKeresendÅ‘ karakterláncA karakterlánc-alapú Crowdin projektek nem támogatottak.CserejavaslatokJavaslatokA javaslatok nem érhetÅ‘ek el, ha a fordítás nyelve nincs pontosan beállítva. Ez más funkciókra, például a többes számú alakokra is hatással lehet.Felesleges „%s†helykitöltÅ‘, amely nem szerepel a forrásszövegben.Támogatja az összes, GNU gettext eszközök által ismert programozási nyelvet (PHP, C/C++, C#, Perl, Python, Java, JavaScript és mások).SzinkronizációSzinkronizáció a CrowdinnelFordítások szinkronizálása a CrowdinnelSzinkronizálásSzinkronizálási hibaNem sikerült szinkronizálni a Crowdinnel.Szintaktikai hiba a Plural-Forms fejlécben („%sâ€).FMTMX fájlokLefordítható karakterláncok átvétele egy már létezÅ‘ POT sablonból.Csapat neve és e-mail-címe vagy webcímeSzöveg csereA FM nem tartalmaz a fájl tartalmához hasonló karakterláncokat. Csak azután lesz alkalmas félautomata fordításokhoz, ha a Poedit eleget tanult a Ön által kézzel lefordított fájlokból.A TMX fájl formátuma hibás.A más alkalmazás által végrehajtott módosítások elvesznek, ha menti a fájlt.A fájlt nem lehet MO formátumra fordítani és használni.A fájl ismétlÅ‘dÅ‘ elemeket tartalmazott, amely a PO fájlokban nem engedélyezett, és megakadályozza a fájl használatát. A Poedit kijavította ezt a problémát, de minden bizonytalannak jelölt fordítási bejegyzés felülvizsgálata és esetleges javítása szükséges.A fájlt nem lehet a fordítás beállításainál megadott „%s†karakterkódolással menteni. Ehelyett a mentés UTF-8 kódolással történt, és a beállítás ennek megfelelÅ‘en módosult.A fájl megváltozott. Szeretné menteni a változásokat?A fájl formátumát a Poedit nem ismeri fel.A fájl át lett fordítva MO formátumra, de lehetséges, hogy nem fog megfelelÅ‘en működni.A fájl biztonságosan el lett mentve, de lehetséges, hogy nem fog megfelelÅ‘en működni.A fájl mentése sikerült, de nem lehet MO formátumúra fordítani és használni.A fájl biztonságosan el lett mentveA(z) „%s†fájl nem nyitható meg.„%s†fájlt nem lehetett elmenteni.“%s†fájlt egy másik alkalmazás megváltoztatta.A régi forrásszöveg (a frissítést megelÅ‘zÅ‘ állapotú), ami bizonytalan fordításnak tekinthetÅ‘.A fájl fordítással történÅ‘ kitöltésének legegyszerűbb módja a POT-ról történÅ‘ frissítés:A fordítás nem szóközzel kezdÅ‘dik.A fordítás egy új sorral végzÅ‘dik, de a forrásszöveg nem.A fordítás szóközzel végzÅ‘dik, de a forrásszöveg nem.A fordítás végén „%s†van, ellenben a forrásszöveg végén „%s†van.A fordítás végén hiányzik egy sortörés.A fordítás végén hiányzik egy szóköz.A fordítás használatra kész, de %d bejegyzés még nincs lefordítva.A fordítás használatra kész, de %d bejegyzés még nincs lefordítva.A fordítás használatra kész.A fordítás végére „%s†kell.A fordítás végére nem kell „%sâ€.A fordítást mondatként kell kezdeni.A fordítást kisbetűvel kell kezdeni.A fordítás szóközzel kezdÅ‘dik, de a forrásszöveg nem.A fordítások munkát igénylÅ‘ként lettek megjelölve, mert lehet, hogy pontatlanok. A pontosításukhoz át kellene nézni ezeket.Nem léteznek fordítások. Ez szokatlan.Probléma történt a fájl szépre formázása közben (de rendben mentve lett).Hiba történt a fordtások Localazyre történÅ‘ feltöltése során.Hibák történtek a fájl betöltése során. Ezért egyes adatok hiányozhatnak vagy megsérülhettek.Ezek a beállítások befolyásolják a PO fájlok belsÅ‘ formázását. Csak speciális követelmények, például verziókezelés esetén változtassa meg Å‘ket.Ez a JSON fájl nem fordítási fájl, és nem szerkeszthetÅ‘ a Poedittel.Ez a művelet törli a forrásszövegnek pontosan megfelelÅ‘ fordításokat. Ezt nem lehet visszavonni.Ebben a fájlban többes számú bejegyzések vannak, de nincs Plural-Forms fejléc beállítva.Ez a fájl szöveges azonosítókat használ forrásszöveg helyett. A Poedit be tudja tölteni az angol szövegeket a következÅ‘ fájlból: „%sâ€.Ezzel a paranccsal lesz indítva a kivonatoló. A %o a kimeneti fájl nevét, a %K a kulcsszavak listáját, a %F a bemeneti fájlokat, a %C pedig a karakterkódolást (lásd lejjebb) jelenti.Ez a karakterlánc a Poedit fordítási memóriájában lett találva.Ez csak akkor lesz a parancssorhoz fűzve, ha forráskód karakterkódolás meg lett adva. %c jelenti a karakterkódolás értékét.Ez minden bemeneti fájlnál egyszer a parancssor végéhez lesz fűzve. %f jelenti a fájl nevét.Ez minden kulcsszónál egyszer a parancssor végéhez lesz fűzve. A %k jelenti a kulcsszót.ÖsszesÃtalakításokA fordítható bejegyzéseket nem kézileg adják hozzá a Gettext rendszerben, hanem automatikusan kinyerésre kerülnek a forráskódból. Ãgy naprakészek és pontosak maradnak. A fordítók általában a fejlesztÅ‘ által készített PO sablonfájlokat (POT-okat) használják.FelhÅ‘s projekt fordításaLefordítva: %d/%d (%d%%)FordításFordítás nyelveFordítási memóriaFordítási munkát i&gényelFordítás tulajdonságaiA fordítási fájl már naprakész, a karakterláncok nem változtak.A fordítási fájl %s változással frissült.A fordítási fájl %s változással frissült.A fordítási memória adatbázis sérült: %s (%d).Fordítási memória hiba: %s (%d).Fordítási munkát i&gényelFordítás tulajdonságaiFordítási javaslatokA fordítási javaslatokhoz szükséges a forrásszöveg megléte. Nem működnek csak azonosítókkal, a valódi szöveg használata nélkül.A fordítási feladatok elÅ‘feltétele, hogy a forrásszöveg nyelve ismert legyen. A Poedit ezt nem észlelte a fájlban.Fordítás — %sA fordításokat nem lehet frissíteni a forráskódból, mert a fájl tulajdonságaiban megadott helyen nem található kód.KettÅ‘UTF-8 (javasolt)VisszavonásVáratlanul hiányzó tartalom az XCLOC fájlban.Nem kezelt kivétel történt: %sUnix (javasolt)Ismeretlen Crowdin hiba.Ismeretlen hibaLefordítatlanFrissítésFrissítési összefoglalóÖsszes frissítéseA projekt összes katalógusának frissítéseA projekt összes katalógusának frissítése?Frissítés &POT fájlból…Frissítés &POT fájlból…Frissítés a kódbólFrissítés POT fájlbólFrissítés a kódbólFrissítés a forráskódbólFrissítési összefoglalóFrissítésekSikertelen frissítésProjektkatalógusok frissítéseFordítások frissítéseFelhasználói adatok frissítése…A fordítások feltöltése ide sikertelen: %s.Fordítások feltöltése ide: %s…Fordítások feltöltése…Egyéni kifejezés használataEgyéni lista betűtípus használata:Egyéni szövegmezÅ‘ betűtípus használata:Alapértelmezett szabályok használata ehhez a nyelvhezHasználja ezeket a kulcsszavakat (függvény neveket) a forrásfájlokban lévÅ‘ lefordítható szövegek felismeréséhez:Fordítási memória használataÉrvényesítésÉrvényesítés eredménye%s verzióRészletek megtekintése…Részletek megtekintése…Várakozás a hitelesítésre…Figyelmeztetés: Üdvözöljük a PoeditbenForrásokból frissítésekorCsak teljes szóraAblakWindowsSzeretné az angolt használni forrásszövegként?Körkörös keresésSzövegszélesség:XLIFF fordítási fájlokXcode fordítási katalógusIgenKözvetlenül a forráskódból is kinyerhet lefordítható karakterláncokat:A Poedit ablakára egyszerre több fájlt nem lehet ráhúzni.Nincs engedélyed a forráskód fájlok olvasására a fájl tulajdonságaiban a megadott helyrÅ‘l.Újra kell indítania a Poeditet a módosítás életbe léptetéséhez.Az Ön neveA változtatások elvesznek, ha nem menti azokat.Az Ön neve és e-mail címe csak a GNU gettext fájlok Last-Translator fejlécének beállítására szolgál.NullaNagyításMunkát igényelne törölje az ideiglenes fájlokat (hibakereséshez)például nplurals=2; plural=(n > 1);hiba: fuzzy megfelelÅ‘ a fájlon belülugrás a tételhez a megadott sorszámnálegy poedit:// URI kezeléseAlt+Ctrl+LeEnterBalraJobbraShift+FelaltctrlshiftA %s névjegyeA %s elrejtéseTöbbi elrejtéseBeállítások…Kilépés a %sbÅ‘lSzolgáltatásokÖsszes megjelenítéseelÅ‘fordítás FM-bólismeretlen nyelvnem támogatott verzió (%s)figyelmeztetés: nev@example.comA(z) „%s†nem érvényes POT fájl.poedit-3.6.3/locales/nl.mo0000644000175100001660000016465515011674364011111 Þ•¸Ü¡œ+ : !: -:&8:_:<s:°:&Ã:&ê:_;Jq;g¼; $<.< =<;G<ƒ< Š<˜<Ÿ<¥<­<´<»<Á<É<Ø<ç<í<ó<ü<=$=(=:=L=R=W=_=g=y=‹== “=  =­=¶=¿= Æ=Ó=ã=ù=>>:>V>\>b>k>q>z>‘> ¨> ¶> Ä>Ñ>×>ó>?(?A?X?o?u?z?‘?¡? ¿? Ë?Õ?Þ?æ?ï? ó? ÿ? @ @'@ 7@C@ ]@j@ y@…@•@©@Ä@Í@í@ A*A @A MA1YA'‹A³AÆAãA ýAB7B6FB}B)BÇB ÌB]×B5C<HCD…C$ÊCïC öC€D„D ‹D"™D¼D+×D)E -E8EJE\EmE€E‰EœE¸EÔE#éE F"F1F 7FBF TF_FqFwF}FŽF%ŸFÅF àFG GG*G ;GIG/dG ”Gk¡G HH%H;HNHdH-ƒH1±HãH üHI)IHI hIvI{IŽI¡I¶IºIÑIØI÷IJ'J6JIJ;\J ˜J'¥J^ÍJL,K?yK ¹K ÇKÔK*çKL"%L5HL~L™L´LºLÍL ÒL àL îL ûL MM&M.M6M=MfOM¶MÐMuêM`NsN"…N¨N°N ·NÂNÑN âNïNOO0$OUOoO#„O<¨OåO õO*P0+P!\P'~P¦P«PÁP(àPT Q^Q cQ mQ{QQ QµQ ÊQ ÔQ âQ ïQüQ RR4R0o))«nÕNDŽh“Ž üŽ  A b h u€ ‡’š £ ®»Î áë ôÿ 1<Tlr y ƒ£·¼ Â Î Û æñ ú‘‘'‘9‘+K‘+w‘ £‘ ®‘ ¼‘Ç‘ БÝ‘ý‘ ’ *’ 7’B’R’l’†’¤’Â’Ù’ð’÷’û’“'“ D“ N“Y“a“i“ r“|““¦“¹“˓ݓñ“ ”"”5”G”Y”p” Ž”&š”#Á”&å” •"•3•8E•.~•­•)È• ò•– –9&–5`–"––5¹–ï– õ–cÿ–c—L{—PÈ—.˜H˜Q˜›j˜ ™ ™#™(A™,j™*—™™Þ™ò™šš 4šAš"Yš"|šŸš"¸šÛšôš › ›› /›;›L›T›Z›p›$†›«›&Ç› î› ø›œ"œ@œSœ2rœ ¥œ|±œ ."8["v™!´,Ö=ž(Ažjž}ž6›ž!Òž ôžŸ Ÿ$Ÿ>ŸUŸ]Ÿ xŸ!„Ÿ¦Ÿ!ÀŸâŸôŸ  F  d "q k” G¡BH¡ ‹¡ ™¡¦¡0º¡ë¡.ÿ¡?.¢"n¢"‘¢ ´¢¿¢×¢à¢õ¢ ££0£?£R£ [£ g£t£Œ£¤4¤}L¤ʤæ¤(ÿ¤(¥/¥6¥<¥N¥d¥v¥Ž¥¤¥1¹¥ë¥¦,!¦@N¦¦ ¦¦+´¦Bà¦%#§)I§s§{§›§(¶§_ß§?¨F¨ V¨d¨{¨‘¨§¨½¨ ͨÛ¨ê¨ù¨ © ©9©A© [©g©p©©„©—©¬©Á©á©Ë䩘°ªI«Ú«â«¬¬6¬N¬l¬#ƒ¬§¬Á¬Ȭ1Þ¬"­3­ O­[­l­t­ }­‡­­¦­3·­+ë­® .® ;®E®K®*e®&®·®Ë® ã®@¯ E¯DR¯ —¯£¯93°m°†°1°!ϰñ° ± ± (±.6±e±k±±—±¦±¼±ûѱͲÓ²ó²³'³ ;³\³s³г޳5«³gá³I´)f´4´Å´(Ý´#µ*µEµJµ¹Pµ# ¶.¶E¶#[¶¶“¶ª¶»¶̶ ݶ ê¶ ô¶þ¶· ·!·5·I·š^·ù·!¸#¸F)¸p¸/ƒ¸³¸ƒÌ¸JP¹›¹¤¹P¾¹º º'ºKAººáŸ»8¼0º¼ë¼ÿ¼½4½-T½‚½•½3¾pµ¾ &¿ 1¿ ?¿M¿(j¿“¿¨¿½¿οÝ¿ì¿ ÀÀ À#À6À,MÀ zÀA„ÀÆÀØÀ àÀëÀÁ Á %Á'1Á'YÁÁšÁ.³Á âÁìÁýÁ Â+,ÂXÂaˆ{ÂÃÃ$Ã,Ã<à Là Yà fà rÃ~ÔçûÃÍÃ(ÞÃÄÄ(4Ä]ÄtÄŠÄšÄ ªÄ·Ä ÇÄ ÕÄöÄ ÅÅ1ÅBÅVÅ kÅ!wřũżÅÔÅèÅðÅ ùÅÆ ÆÆ9ÆNÆ jÆ tÆ€Æ—Æ ¨ÆµÆÍÆêÆüÆÇ1ÇCÇZÇ›pÇ È'È >È HÈUÈfÈ È‹È £È­ÈY´ÈÉ%É:ÉNÉfÉÉ$“É>¸É÷É Ê ÊœÊ8¹Ê|òÊoË~Ë&™ËÀËÏË#âË*Ì1Ì 4Ì<BÌÌžÌã®Ì+’Íi¾ÍR(Î {ÎØ‰Ï8bÐ7›ÐZÓÐs.Ñx¢Ñ!Ò)=Ò,gÒ9”ÒsÎÒdBÓ(§ÓDÐÓ<Ô:RÔ:Ô2ÈÔ’ûÔ#ŽÕ$²Õ(×Õ'Ö1(Ö;ZÖz–Ö0×UB×I˜×yâ×\ØPíØz>Ùt¹Ù|.Úð«Ú>œÛˆÛÛkdÜjÐÜ;Ý BÝNÝeÝ Ý‹Ý¡Ý±ÝÐÝ_èÝ3HÞ|ÞšÞ¹ÞÑÞ€ãÞqdßÖß•çß}à‚à•à4¤àÙàëàá á á'á;á%Ká(qá#šá#¾áâáûáâ1âNâiâqâƒâ!™â0»âìâ ã$ã*Cã0nã)Ÿã]Éã'ä CäMä cämää•ä¯ä¾ä$Ðäõä åå'å AåMåaåxåL{åBÈåi æDuæºæ:Âæ{ýæyç }ç‹ç:šç!Õç÷ç,þç++èWètèyèè†èŒèœè­è´è»è¿èÄèÊè ÒèÝè íèûè é é!é?éNélé{é Œé¶¡8&©]Gl'/[có¯wš® Ù}˜42ûDm­P…ãYÐùtgyP²+¥0–5ñ9ù¾YT÷¾ —J±•C|ŒÐ<¥‚GOñdá0 LKYrç:ê@êQ`qÏ’O{V-Xº¥·g†ÑVÇ‘zaÉCn .¦ÈM)EŽŒ¤²Ö«?µ€€“LMè<Ë/Ò‹”ň0…wS‡ª!ÖÚ›R-`på—"ÌoÓ={\±“1à³R °…r ne4T°Z¸‹´ìÈBþýf'"§ õ§°h,S_„ 7uHUCt;‰A»à]¼©6½A•E ÷‰– EÂíí«„²q,×$~ÇúvÞ#ßþ^ !œó(#„:%~Ko’µbûj`id?fVŽÜÛݬc"–Œ©-U¡÷F9>}uX£üë1Úô>*ÔápÜži'=ðòâëkºj ˜³3Ó;@¶+½‡­»\”ãÁ%®HDs¸ŠzŽ8@€³n™ôŠ^‚üIÞy‘/ž˜(uo¨é‡NdŠLªš·¦æœ±× )9 †ÒBÕh=lx7|—{¯úø¢BTÍ¢¶œKÄÊ;‚,“†¸O Ÿ?x¿Ir&Àîm¬ʵ¿bZ  ”¤33ƒG¼45ŸQä)zÛgaeJM¹[R­\¹£tSé( ÏZ¨a:kNˆÎ¤Dèw7kP‹Ã«W™AÁ1W.ÑN®ðfQ!qØy$cÀ§bÎ8‰îÔF_ý´ƒÝUŸ_Ì~¨}Í6¢vïˆIƒõìÕä5تâ].ÆjåÙeöÿÿÄ[Æ™W%hò›+FÅx¬‘psXJ*¯2çøï>&mv2£6› * $ËHiÉ’<^æžß•l#|´šö¦ ¡s (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-23 10:16 Last-Translator: Language-Team: Dutch Language: nl_NL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: nl X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (gewijzigd)(niet-opgeslagen)%d maal voorkomen van de code%d maal voorkomen van de code%d woord%d woorden%d invoer is vooraf-vertaald.%d woorden zijn vooraf-vertaald.%d fout%d fouten%d fout opgetreden.%d fouten opgetreden.%d fout opgetreden:%d fouten opgetreden:%d probleem met de brontekenreeksen werd gedetecteerd.%d problemen met de brontekenreeksen zijn gedetecteerd.%d probleem gevonden met de vertaling.%d problemen gevonden met de vertaling.%i regel van bestand "%s" is niet correct geladen.%i regels van bestand "%s" zijn niet correct geladen.%s-Formaat%s-voorkeuren%s-formaat%s vertaling is geïmporteerd.%s vertalingen zijn geïmporteerd.&Over&Over Poedit&Toepassen&Terug&Annuleren&Wissen&Sluiten&Kopiëren&Verwijderen&Klaar en volgende&Klaar en volgendeB&ewerken&Bestand&Zoeken…&GNU-gettext-handleidingHandleiding &GNU-gettext&Navigeren&Groeperen naar context&Groeperen naar context&Hulp&Nieuw&Nieuw...&Volgende >&Volgende vertaling&Volgende vertaling&Nee&OkéOnline-hulpOnline-&hulp&Openen...&Openen...&Plakken&Voorkeuren&Voorkeuren…&Vorige vertaling&Vorige vertalingEigenscha&ppen...&Gewiste vertalingen definitief verwijderen&Gewiste vertalingen definitief verwijderen&AfsluitenOpnie&uw doenVe&rvangenOp&slaan&Opslaan als&Toon hoe vaak de code voorkomt&Toon hoe vaak de code voorkomt&Startscherm&Startscherm&Vertaling&Ongedaan maken&Onvertaalde invoer eerst&Onvertaalde invoer eerst&Bijwerken vanuit de broncode&Bijwerken vanuit de broncodeVertalingen &validerenVertalingen &validerenB&eeld&Ja(Gebruik de standaardtaal)(niet aangemeld)(vereist Windows 8 of hoger)< &VorigeOver %sAccountAccountsToevoegenOpmerking toevoegenVoeg bestanden toe…Voeg mappen toe…Project toevoegenVoeg joker toe…Opmerking toevoegenMap aan de lijst toevoegenVoeg bestanden toe…Voeg mappen toe…Project toevoegenVoeg joker toe…Aanvullende zoektermenAanvullende xgettext-vlaggen:GeavanceerdGeavanceerde extraheer-instellingen…Geavanceerde extractie-instellingenGeavanceerde extraheer-instellingen…Alle vertaalbestandenAlle opmerkingenAlle tekenreeksenGebruik ook standaardtrefwoorden voor ondersteunde talenAltijd de cursor in het tekstinvoerveld zettenEr is een fout opgetreden.Een item in de lijst met invoerbestanden:Een item in de trefwoordenlijst:WeergaveToepassenWeet u zeker dat u de extraheerder '%s' wilt verwijderen?Weet u zeker dat u het vertaalgeheugen wilt resetten?Automatisch op updates controlerenAutomatisch het MO-bestand compileren bij het opslaanTerugRoot-pad:Bèta-versies bevatten de nieuwste functies en verbeteringen, maar kunnen iets minder stabiel zijn.Alles naar de voorgrondBeschadigd PO-bestand: meervoudsvorm 'msgstr' gebruikt zonder 'msgid_plural'Beschadigd PO-bestand: enkelvoudsvorm 'msgstr' samen met 'msgid_plural' gebruiktBeschadigde markering in vertalingstekenreeks.BladerenBlader door de bestandenStandaard worden onnauwkeurige resultaten ook opgenomen, maar gemarkeerd als werk nodig. Vink deze optie aan om alleen perfecte overeenkomsten op te nemen.AnnulerenAnnuleren…Tijdelijke map maken niet mogelijk.Programma: %s kan niet uitgevoerd wordenKan niet vooraf vertalen uit onbekende taal.Kan niet vooraf vertalen zonder brontekst.Zet om in beginhoofdlettersCatalogus&beheerderCatalogus&beheerderCatalogusbeheerderVerander de interface-taalKarakterset:Document nu controlerenGrammatica en spelling controlerenSpelling controleren tijdens typenControleer op updates…De vertaling op fouten controlerenControleer op updates…Controleer de spellingWissenMenu wissenVertaling wissenMenu wissenVertaling wissenSluitenCloudVoorkomen van de codeVoorkomen van de codeWerk online samen met andere mensen.Bronbestanden verzamelen...Commando om vertalingen te extraheren:OpmerkingOpmerking:Opmerkingen voorafgegaan door:Naar MO-formaat compileren...Compileren naar...Gecompileerde vertaalbestandenConfigureer broncode-extractie in 'Eigenschappen'.BevestigingVerbind Poedit met ondersteunde cloudlokalisatieplatforms om vertalingen die erop worden beheerd naadloos te synchroniseren.KopiërenKopiëren vanuit de enkelvoudsvormKopiëren vanuit brontekstKopiëren vanuit de enkelvoudsvormKopiëren vanuit brontekstCorrigeer de spelling automatischKon Localazy projectdetails niet downloaden.Kon het bestand niet laden, het is waarschijnlijk beschadigd.Bestand '%s' kon niet worden opgeslagen.Maak een nieuw aanMaak een nieuwe vertaling aanMaak een nieuwe vertaling aan vanuit een POT-sjabloon.Maak een nieuw vertaalproject aanCrowdin-foutKni&ppenAangepaste extraheerders:Aangepaste extraheerders:Pas de taakbalk aan…KnippenDatabasegrootte op schijf:VerwijderenVerwijder uit het vertaalgeheugenVerwijder de extraheerderVerwijder uit het vertaalgeheugenVerwijder projectVerwijder de opmerkingVerwijder projectHet verwijderen van het project zal geen vertaalbestanden verwijderen.Directory's:Wilt u project "%s" " verwijderen?Wilt u het bestand opnieuw laden van de schijf? Niet opgeslagen wijzigingen in Poedit zullen verloren gaan.Wil je alle vertalingen verwijderen die identiek zijn aan de brontekst?Wilt u alle vertalingen verwijderen die niet meer worden gebruikt?&Niet opslaanNiet opslaanNiet meer weergevenExacte overeenkomsten niet markeren ter controleNiet meer weergevenDe recentste vertalingen aan het downloaden…Het downloaden van vertalingen is uitgeschakeld in dit project.Sleep mappen of bestanden hierheenSleep mappen of bestanden hierheen&AfsluitenE&xporteren als HTML…BewerkenBewerk de &opmerkingBewerk de &opmerkingOpmerking bewerkenOpmerking bewerkenWijzig projectBewerk het projectBewerkenBewerken…E-mailadres:Ga naar volledig schermDe invoergegevens in dit bestand bevatten aantallen meervoudsvormen die verschillen van wat er in de meervoudsvorm-header van het bestand staatInvoer met fouten eerstInvoer met fouten eerstInvoer met fouten is rood gemarkeerd in de lijst. Details van de fout zullen weergegeven worden als u zo'n invoer selecteert.Fout bij openen van bestandFout bij opslaan bestandFout bij het laden van XLIFF-bestand: %sFout: FoutenAllesUitgesloten padenExporteer naar TMX…Exporteren als...Exporteren naar HTML…Exporteer naar TMX…Exporteren naar HTMLVertaalgeheugen exporteren naar “%s†mislukt.Vertalingen exporteren…Extraheer vanuit de bronnenExtraheer opmerkingen voor vertalers vanuit:Extraheer tekst uit de bronbestanden in de volgende directory's:Instellen extraheerderExtraheerdersCommunicatie met het Poedit-proces mislukt.Niet mogelijk het bestand met geëxtraheerde vertalingen te laden.Gettext-catalogi samenvoegen mislukt.Bijwerken van vertaalgeheugen mislukt: %sBestandBestand kan niet geopend wordenBestand "%s" bestaat niet.Bestand "%s" is niet een vertaalbestand.Bestand '%s' is 'alleen-lezen' en kan niet worden opgeslagen; sla het op onder een andere naam.ZoekenVolgende zoekenVorige zoekenZoeken en vervangen…In opmerkingen zoekenIn bronteksten zoekenIn vertalingen zoekenVolgende zoekenVorige zoekenTaal reparerenTaal reparerenDe header reparerenRepareer de headerFlutter VertaalbestandenVorm %iFormulier %i (ongebruikt)GNU-gettextAlgemeenHTML-bestandenHulpVerberg de zijbalkStatusbalk verbergenVerberg deze meldingHoe werkt cloud synchronisatie?IDAls u doorgaat met verwijderen zullen alle vertalingen die gemarkeerd staan als 'gewist', definitief worden verwijderd; u zult ze dan opnieuw moeten vertalen als ze in de toekomst weer toegevoegd worden.Als u eerder toegang tot uw bestanden hebt geweigerd, kunt u deze toestaan in Systeem Voorkeuren > Beveiliging & Privacy > Privacy > Bestanden & Mappen.Als je eerder de toegang tot je bestanden hebt geweigerd, kun je deze toestaan in Systeeminstellingen > Privacy & Security > Bestanden & Mappen.NegerenHoofd-/kleine letters negerenImporteer vanuit TMX…Importeer vertaalbestanden…Importeer vanuit TMX…Importeer vertaalbestanden…Importeren van "%s"…Vertaalgeheugen importeren mislukt.Vertalingen importeren...In: %sNeem bèta-versies opInconsistent gebruik van hoofd- en kleine lettersInconsistent gebruik van witruimteInformatie over de vertalerInstallerenOngeldig bestandOproep:ProbleemProblemenJSON vertaalbestandenBehoudenTaalnaam of codeTaal van de vertaling is hetzelfde als de brontaal.De taal van de vertaling is niet ingesteld.Taal van de vertaling:TaalselectieTaalteam:Taal:Voor het laatst gewijzigdKom meer te weten over gettext-trefwoordenKom meer te weten over meervoudsvormenMeer te weten komenMeer informatie over %sMeer te weten komen over CrowdinRegel %d van bestand "%s" is beschadigd (ongeldige %s-gegevens).Regeleindes:Lijst met extensies, gescheiden door puntkomma's (bijv. *.cpp; *.h):Laad EngelsLocalazy is een sterk geautomatiseerd lokalisatieplatform waarmee iedereen zijn producten en inhoud gemakkelijk in meerdere talen kan vertalen.MO-bestanden kunnen niet direct bewerkt worden in Poedit.Zet om in kleine lettersZet om in hoofdlettersMaak een nieuwe vertaling vanuit dit POT-bestand.Verkeerd vormgegeven header: "%s"Accounts beherenBeheren…Verschillen samenvoegen...MinimaliserenNaam van het project waar de vertaling voor isNaam:&Volgende onvoltooide&Volgende onvoltooideControle nodigMoet worden nagekekenNetwerkfout: %s (%d)Nooit de lijst met strings als actief venster instellen; als deze optie aanstaat, moet je Ctrl-pijltjestoetsen gebruiken voor de toetsenbordnavigatie, maar je kan ook meteen tekst typen, zonder met de tabtoets het actieve venster te hoeven veranderen.NieuwNieuw vanuit &POT/PO-bestand...Nieuwe tekenreeksenNieuw vanuit &POT/PO-bestand...Nieuwe tekenreeksenNieuwe te vertalen tekenreeksen:Volgende meervoudsvormVolgende meervoudsvormNeeGeen overeenkomsten gevondenEr konden geen invoergegevens vooraf vertaald worden.Er is in het bestand geen informatie verstrekt over het voorkomen van deze tekenreeksen in de broncode.Geen overeenkomsten gevondenGeen problemen met de vertaling gevonden.Er zijn geen vertaalprojecten in uw account vermeld.Geen gebruiksinformatieNiet alle meervoudsvormen zijn vertaald.Niet geautoriseerd; log opnieuw in.Opmerkingen voor vertalersOkéÉénSchakel dit alleen in als u de kwaliteit van het TM vertrouwt; standaard worden alle overeenkomsten uit het TM gemarkeerd voor controle en moeten ze vóór het gebruik nagekeken worden.Vul alleen exacte overeenkomsten inOpen cloudvertaling…Recent bestand openenOpen en bewerk de vertaalbestanden.Open cloudvertalingOpen cloudvertaling…Open het bestandOpenen in editorOpenen in editorOpen recenteOpenen...Openen…OptiesOverigeVo&rige onvoltooideVo&rige onvoltooidePO-vertaalbestandenPOT-vertaalsjablonenPOT-bestanden zijn slechts sjablonen en bevatten zelf geen vertalingen. Maak een nieuw PO-bestand aan op basis van dit sjabloon om een vertaling te maken.PlakkenPlakken en aan de stijl aanpassenPadenVoert een update vanuit broncode uit op alle bestanden in het project.Toegang geweigerd.Plaatsvervanger "%s" ontbreekt in de vertaling.Placeholders correctheidOpen en bewerk in plaats daarvan het corresponderende PO-bestand; als je dat opslaat zal het MO-bestand eveneens worden bijgewerkt.Sla het bestand eerst op; deze sectie kan tot dan toe niet bewerkt worden.MeervoudMeervoudsvorm-vertalingenDe door het bestand gebruikte meervoudsvorm-expressie is ongebruikelijk voor %s.Meervoudsvormen:PoeditPoedit-catalogusbeheerderPoedit heeft automatisch ongeldige content gerepareerd in het bestand '%s'.Poedit kan proberen nieuwe invoer alleen vanuit eerdere vertalingen in het bestand in te vullen of vanuit het gehele vertaalgeheugen. Het gebruik van het TM zal niet erg effectief zijn als het bijna leeg is, maar het zal beter worden als u er meer vertalingen aan toevoegt.Poedit kan geen broncode tonen waarin de tekenreeks wordt gebruikt, omdat het bestand of niet beschikbaar is op de locatie waarnaar verwezen wordt, of omdat het een symbolische link is die niet naar een echt bestand verwijst.Poedit is een eenvoudig te gebruiken vertalingsbewerker.Poedit was niet in staat bestand "%s" te openen.Vooraf-ver&talen…Vooraf vertalenVooraf vertaald%u string vooraf vertaald%u strings vooraf vertaaldVooraf vertalen vanuit het vertaalgeheugen…Vooraf vertalen…De vooraf-vertaling zoekt automatisch exacte of onduidelijke overeenkomsten in het vertaalgeheugen voor niet-vertaalde tekenreeksen en vult hun vertaling in.Vooraf-vertaling vereist dat brontekst beschikbaar is. Het werkt niet als alleen ID's zonder de werkelijke tekst worden gebruikt.Vooraf-vertaling vereist dat de taal van de brontekst gekend is. Poedit kon deze niet detecteren in dit bestand.VoorkeurenVoorkeuren...Voorkeuren…Tekenreeksen voorbereiden…Behoud de opmaak van bestaande bestandenVorige meervoudsvormVorige meervoudsvormVorige brontekstEerder bewerktEerder bewerktProjectnaam en versie:Projectnaam:Project:ProjectenLeestekencontrolesDefinitief verwijderenVerwijder de &gewiste vertalingen definitiefAfsluitenHet lezen van bestandsinhoud is mislukt door de volgende fout: %sRecente bestandenOpnieuwVernieuwenBestand opnieuw ladenBestand opnieuw ladenResterend: %dVerwijderenZelfde als bron vertalingen verwijderenZelfde als bron vertalingen verwijderenVerwijderde tekenreeksenVerwijderde tekenreeksenVerwijderde tekenreeksen (niet meer gebruikt):Vervangen&Alles vervangen&Alles vervangenVervangende termVervangen…De vereiste meervoudsvorm-header ontbreekt.ResettenReset het vertaalgeheugenHet resetten van het vertaalgeheugen zal onherroepelijk alle opgeslagen vertalingen eruit wissen; u kunt deze actie niet ongedaan maken.Geef weer in de FinderNakijkenOpslaanOpslaan &als…Opslaan &als…Toch opslaanToch opslaanOpslaan alsOpslaan alsSla de wijzigingen opSla het bestand opSchermafbeeldingen:&Alles selecterenAlles selecterenSelecteer de te importeren TMX-bestandenSelecteer de directoryVertaalbestand kiezenSelecteer de te importeren taalbestandenVertaalsjabloon kiezenKies uw voorkeurstaalStel de taal inStel de taal inInstellingenInstellingen…Zijbalk tonenSpelling en grammatica weergevenStatusbalk weergevenToon tekenreeks-&IDToon vervangingenToon de taakbalkToon waarschuwingenToon in de VerkennerToon in MapDe zijbalk weergeven of verbergenToon de zijbalkToon de statusbalkToon het tekenreeks-&IDToon waarschuwingenZijbalkInloggenUitloggenInloggenAanmelden bij %sAanmelden bij Cloud-accountInloggen bij CrowdinAanmelden bij Cloud-accountUitloggenEnkelvoudigSlim kopiëren/plakkenSlimme streepjesSlimme linksSlimme aanhalingstekensSorteer op bestands&volgordeSorteren op &bronSorteren op ver&talingSorteren op bestands&volgordeSorteren op &bronSorteren op ver&talingBroncode-karakterset:Er worden broncode-extraheerders gebruikt om vertaalbare tekenreeksen in de broncode-bestanden te vinden en te extraheren, zodat ze vertaald kunnen worden.Broncode niet beschikbaar.Broncode niet gevondenBrontekstBrontekst-IDBrontekst — %sTrefwoorden van de bronnenBronpadenTrefwoorden van bronnenBronpadenSpraakSpellingscontrole is uitgeschakeld, omdat het woordenboek voor %s niet geïnstalleerd is.Spelling en grammaticaBeginnen met sprekenStoppen met sprekenOpgeslagen vertalingen:Context van tekenreeks: %sTekenreeks-ID: %sTekenreekslengte in aantal karaktersLengte van de tekenreeks in aantal karakters: vertaling | bronTe zoeken termVervangingSuggestiesSuggesties zijn niet beschikbaar als de taal van de vertaling niet juist is ingesteld; dit kan ook invloed hebben op andere functies, zoals meervoudsvormen.Een overbodige aanduiding "%s" die geen brontekst bevat.Ondersteunt alle programmeertalen herkend door GNU-gettext-tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript en andere).SynchroniserenSynchroniseren met CrowdinSynchroniseer de vertaling met CrowdinSynchroniserenSynchronisatiefoutSynchronisatie met Crowdin mislukt.Syntaxfout in meervoudsvorm-header ('%s').TMTMX-bestandenHaal vertaalbare tekenreeksen uit een bestaand POT-sjabloon.Teamnaam en e-mailadres of URLTekstvervangingHet vertaalgeheugen bevat geen strings die gelijk zijn aan de inhoud van dit bestand; het is alleen effectief voor semi-automatische vertalingen, nadat Poedit voldoende geleerd heeft van bestanden die u handmatig vertaald hebt.Het TMX-bestand heeft een verkeerde opmaak.Wijzigingen die door de andere applicatie zijn aangebracht, gaan verloren wanneer je het bestand opslaat.Het bestand kan niet gecompileerd worden naar het MO-formaat en dus niet gebruikt.Het bestand bevat dubbele items; dat is niet toegestaan in PO-bestanden, omdat dit het gebruik van het bestand zou belemmeren. Poedit heeft de fout hersteld, maar u moet vertalingen van alle items die als onduidelijk gemarkeerd zijn, nakijken en ze zo nodig corrigeren.Het bestand kon niet worden opgeslagen in de "%s"-karakterset zoals gespecificeerd is in de vertalingsinstellingen. Het werd in plaats daarvan opgeslagen in UTF-8 en de instelling werd dienovereenkomstig gewijzigd.Het bestand is veranderd; wilt u de wijzigingen opslaan?Het bestand is in een formaat niet herkend door Poedit.Het bestand is gecompileerd naar het MO-formaat, maar zal waarschijnlijk niet goed werken.Het bestand is veilig opgeslagen en gecompileerd naar het mo-formaat, maar het zal waarschijnlijk niet goed werken.Het bestand is veilig opgeslagen, maar het kan niet gecompileerd worden naar het mo-formaat en dus niet gebruikt worden.Het bestand is veilig opgeslagen.Het bestand "%s" kon niet worden geopend.Het bestand "%s" kon niet worden opgeslagen.Het bestand "%s" werd aangepast door een ander programma.De oude brontekst (voordat hij gewijzigd werd tijdens een update) waar de nu onnauwkeurige vertaling naar verwijst.De eenvoudigste manier om dit bestand te vullen met vertalingen is het bij te werken vanuit een POT:De vertaling begint niet met een spatie.De vertaling eindigt met een regelafbreking, maar de brontekst niet.De vertaling eindigt met een spatie, maar de brontekst niet.De vertaling eindigt met "%s", maar de brontekst met "%s".In de vertaling ontbreekt een regelafbreking aan het eind.In de vertaling ontbreekt een spatie aan het eind.De vertaling is klaar voor gebruik, maar regel %d is nog niet vertaald.De vertaling is klaar voor gebruik, maar regels %d zijn nog niet vertaald.De vertaling is klaar voor gebruik.De vertaling moet eindigen met "%s".De vertaling mag niet eindigen met "%s".De vertaling moet beginnen als een zin.De vertaling moet beginnen met een kleine letter.De vertaling begint met een spatie, maar de brontekst niet.De vertalingen zijn gemarkeerd ter controle, omdat ze mogelijk onnauwkeurig zijn; u dient te controleren of ze juist zijn.Er zijn geen vertalingen; dat is ongebruikelijk.Er ging iets mis bij het netjes opmaken van het bestand (maar het is wel opgeslagen).Er is een fout opgetreden bij het uploaden van vertalingen naar Localazy.Er zijn fouten opgetreden bij het laden van het bestand; er kunnen hierdoor enkele gegevens ontbreken of beschadigd zijn.Deze instellingen hebben invloed op de interne opmaak van de PO-bestanden; pas ze aan als u specifieke eisen hebt, bijv. vanwege versiecontrole.Dit JSON-bestand is geen vertalingsbestand en kan niet worden bewerkt in Poedit.Deze actie zal alle vertalingen verwijderen die exact overeenkomen met de brontekst. Dit kan niet ongedaan worden gemaakt.Dit bestand bevat invoergegevens met meervoudsvormen, maar de header 'Meervoudsvormen' ervan is niet geconfigureerd.Dit bestand gebruikt tekenreeks-ID's in plaats van brontekst. Poedit kan Engelse teksten uit het "%s" bestand voor je laden.Dit is het commando dat gebruikt wordt om de extraheerder te starten; %o wordt aangevuld naar de naam van het uitvoerbestand, %K naar de lijst met trefwoorden, %F naar de lijst met invoervelden, %C naar de karakterset-vlag (zie hieronder).Deze tekenreeks is gevonden in het vertaalgeheugen van Poedit.Dit wordt alleen aan de opdrachtregel toegevoegd als de broncode-karakterset is opgegeven; %c wordt aangevuld tot de karaktersetwaarde.Dit wordt voor elk invoerbestand aan de opdrachtregel toegevoegd; %f wordt aangevuld tot de bestandsnaam.Dit wordt voor elk trefwoord aan de opdrachtregel toegevoegd; %k wordt aangevuld tot het hele trefwoord.TotaalOmzettingenCloud project vertalenVertaald: %d van %d (%d %%)VertalingTaal van de vertalingVertaalgeheugenDe vertaling behoeft &controleVertalingseigenschappenVertaalbestand is bijgewerkt met %s wijziging.Vertaalbestand is bijgewerkt met %s wijzigingen.De vertaalgeheugen-database is beschadigd: %s (%d).Vertaalgeheugenfout: %s (%d).De vertaling behoeft &controleVertalingseigenschappenVertaalsuggestiesVertaalsuggesties vereisen dat brontekst beschikbaar is. Ze werken niet als alleen ID's zonder de actuele tekst worden gebruikt.Vertaalsuggesties vereisen dat de brontaal van de tekst gekend is. Poedit kon het niet detecteren in dit bestand.Vertaling — %sDe vertalingen konden niet bijgewerkt worden vanuit de broncode, omdat er geen code gevonden is op de locatie, opgegeven in de bestandseigenschappen.TweeUTF-8 (aanbevolen)Ongedaan makenEr is een niet-verwerkte uitzondering opgetreden: %sUnix (aanbevolen)Onbekende Crowdin-fout.Onbekende foutOnvertaaldBijwerkenUpdate samenvattingAlles bijwerkenWerk alle catalogi in het project bijAlle catalogen in dit project bijwerken?Werk bij vanuit het &POT-bestand…Werk bij vanuit het &POT-bestand…Bijwerken vanuit de codeBijwerken vanuit POT-bestandBijwerken vanuit de codeBijwerken vanuit de broncodeSamenvatting van de updateUpdatesBijwerken misluktVertalingen bijwerkenGebruikersinformatie bijwerken…Het uploaden van vertalingen naar %s is mislukt.Vertalingen uploaden naar %s…Vertalingen uploaden…Aangepaste expressie gebruikenAangepast lettertype voor lijst gebruiken:Aangepast lettertype voor tekstvelden gebruiken:Gebruik de standaardregels voor deze taalGebruik deze trefwoorden (functienamen) om vertaalbare strings in bronbestanden te herkennen:Gebruik het vertaalgeheugenValiderenValideringsresultatenVersie %sDetails bekijken…Details bekijken…Wachten op autorisatie…Waarschuwing: Welkom bij PoeditTijdens het bijwerken vanuit bronnenAlleen hele woordenVensterWindowsWil je Engels gebruiken voor brontekst?TekstomloopTekstterugloop bij:XLIFF-vertaalbestandenJaU kunt ook vertaalbare tekenreeksen rechtstreeks extraheren uit de broncode:U kunt niet meer dan één bestand in het Poedit-venster plaatsen.Je hebt niet het recht broncodebestanden te lezen vanaf de in de bestandseigenschappen opgegeven locatie.U moet Poedit opnieuw starten voordat deze verandering effect heeft.Uw naamDe wijzigingen zullen verloren gaan als u ze niet opslaat.Uw naam en e-mailadres worden alleen gebruikt om de header 'Recentste-vertaler' van de GNU-gettext-bestanden in te stellen.NulIn-/uitzoomenControle nodigtijdelijke bestanden niet verwijderen (voor foutopsporing)bijv. nplurals=2; plural=(n > 1);fout: onduidelijke overeenkomst binnen het bestandga naar het item op het gegeven regelnummeromgaan met een poedit://-URIAlt+Ctrl+OmlaagEnterPijl naar linksPijl naar rechtsShift+OmhoogaltctrlshiftOver %sVerberg %sVerberg overigeVoorkeuren...Stoppen met %sServicesToon allegebruik vooraf-vertalen vanuit TMonbekende taalniet-ondersteunde versie (%s)waarschuwing: jij@voorbeeld.nl"%s" is geen geldig POT-bestand.poedit-3.6.3/locales/eu.po0000644000175100001660000024620215011674363011100 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Basque\n" "Language: eu_ES\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: eu\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Ezkutatu jakinarazpen mezu hau" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ez erakutsi berriro" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ez erakutsi berriro" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Eguneratu laburpena" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Itxi" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Fitxategia" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Kate berriak" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Iturburu-fitxategiak biltzen…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "" #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Iturburu-kodea ez dago eskuragarri." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Baimena ukatuta." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Aurretik zure fitxategietarako sarbidea debekatu baduzu, baimendu dezakezu " "Sistemaren hobespenetan> Segurtasuna eta pribatutasuna> Pribatutasuna> " "Fitxategiak eta karpetak." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Ezberdintasunak batzen…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Gaizki osatutako goiburua: \"%s\"" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO itzulpen-fitxategiak" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT itzulpen-txantiloiak" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF itzulpen-fitxategiak" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Itzulpen-fitxategi guztiak" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "\"%s\" soilik irakurtzeko fitxategia da eta ezin da gorde.\n" "Gorde beste izen batez." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Ezin izan da %s fitxategia gorde." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "" #: src/catalog_po.cpp:134 #, 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] "'%2$s' fitxategiko kate %1$i ez da ongi kargatu." msgstr[1] "'%2$s' fitxategiko %1$i kate ez dira ongi kargatu." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "%d lerroa hondatuta dago \"%s\" fitxategian (%s datu baliogabea)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Arazo bat egon da fitxategiaren formatua txukuntzean (baina ongi gorde da)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "\"%s\" ez da baliozko POT fitxategi bat." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Marka-kode hautsia itzulpen katean." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Proiektua:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Hizkuntza:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Azken itzulpenak deskargatzen…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sinkronizatzen" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Sinkronizazio errorea" #: src/commentdlg.cpp:48 msgid "Add" msgstr "" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Ez autorizatua, mesedez hasi saioa berriro." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Itzulpenak deskargatzea desgaituta dago proiektu honetan." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Hasi saioa" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Hasi saioa" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Amaitu saioa" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Amaitu saioa" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Ikasi gehiago Crowdin buruz" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Autentifikazioaren zain…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Erabiltzailearen informazioa eguneratzen…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Hasi saioa Crowdin-en" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Hutsegitea Crowdin-ekin sinkronizatzean." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin errorea" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Itzulpenak kargatzen…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopiatu" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Ikasi gehiago" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Laguntza" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Ezin dira MO fitxategiak zuzenean editatu Poedit erabiliz." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Errorea fitxategia irekitzerakoan" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Ireki eta editatu dagokion PO fitxategia. Gordetzen duzunean, MO fitxategia " "ere eguneratuko da." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ez ezabatu fitxategi tenporalak (arazketarako)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "maneiatu poedit:// URI bat" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "joan emandako lerro zenbakiko elementura" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Komunikazioak huts egin du Poedit prozesuarekin." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Kontrolatu gabeko salbuespen bat gertatu da: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Fitxategi baliogabea" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit itzulpen editore erabilerraz bat da." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Ezin duzu fitxategi bat baino gehiago jaregin Poedit leihoan." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "“%s†fitxategia ez da itzulpen fitxategia." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "“%s†fitxategia ez dago." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Ortografia egiaztaketa desgaituta dago, %s hiztegia ez dagoelako instalatuta." #: src/edframe.cpp:871 msgid "Install" msgstr "Instalatu" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" #: src/edframe.cpp:968 msgid "Ignore" msgstr "" #: src/edframe.cpp:968 msgid "Reload File" msgstr "" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Gorde aldaketak" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Zure aldaketak galdu egingo dira ez badituzu gordetzen." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Gorde" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ez gorde" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ez gorde" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Utzi" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Gorde honela…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Konpilatu hona…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Konpilatutako itzulpen-fitxategiak" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML fitxategiak" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Eguneraketak huts egin du" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Eguneratu &POT fitxategitik…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Eguneratu &POT fitxategitik…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d arazo aurkitu da itzulpenarekin. " msgstr[1] "%d arazo aurkitu dira itzulpenarekin." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Balioztapenaren emaitzak" #: src/edframe.cpp:1842 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 "" "Erroreak dituzten sarrerak gorriz markatu dira zerrendan. Errorearen " "xehetasunak sarrera hautatzen duzunean erakutsiko dira." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Fitxategia seguru gorde da." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Fitxategia ongi gorde eta MO formatuan konpilatu da, baina ziurrenik ez du " "ongi funtzionatuko." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Fitxategia ongi gorde da, baina ezin da MO formatuan konpilatu eta erabili." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Fitxategia MO formatuan konpilatu da, baina ziurrenik ez du ongi " "funtzionatuko." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Fitxategia ezin da MO formatuan konpilatu eta erabili." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Ez da arazorik aurkitu itzulpenean." #: src/edframe.cpp:1894 #, 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] "" "Itzulpena erabiltzeko gertu dago, baina sarrera %d ez dago itzulita oraindik." msgstr[1] "" "Itzulpena erabiltzeko gertu dago, baina %d sarrera ez daude itzulita " "oraindik." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Itzulpena erabiltzeko prest dago." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poeditek automatikoki konpondu du \"%s\" fitxategiko eduki baliogabea." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Fitxategiak bikoiztutako elementuak zituen, eta hau ez da onartzen PO " "fitxategietan, ezin izango litzateke fitxategia erabili. Poedit-ek arazoa " "konpondu du, baina 'lana behar du'. gisa markatutako itzulpenak gainbegiratu " "beharko zenituzte eta behar bada zuzendu." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Itzulpenaren hizkuntza ez dago ezarrita." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Ezarri hizkuntza" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 batzuetan izan dezake eragina ere, plural formak " "esaterako." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Itzulpen hizkuntza eta iturburuko hizkuntza bera da." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Zuzendu hizkuntza" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Konpondu hizkuntzarena" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Beharrezkoa den Plural-Forms goiburua falta da." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Sintaxi errorea Plural-Forms goiburuan (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Konpondu goiburua" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Konpondu goiburua" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Berrikusi" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Itzulita: %d / %d (%%%d)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Gelditzen dira: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "errore %d" msgstr[1] "%d errore" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "Sarrera %d" msgstr[1] "%d sarrera" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (gorde gabe)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr "(aldatuta)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Hutsegitea itzulpen memoria eguneratzerakoan: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Mantendu" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Purgatu ezabatutako itzulpenak" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Luzaroan erabili ez diren itzulpen guztiak kentzea nahi duzu?" #: src/edframe.cpp:2879 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 "" "Purgarekin jarraitzen baduzu, ezabaturik bezala markaturiko itzulpen guztiak " "betiko kenduko dira. Berriro itzuli beharko dituzu etorkizunean atzera " "gehitzen badira." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Purgatu" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Kopiatu jatorrizko testutik" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopiatu jatorrizko testutik" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Garbitu itzulpena" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Garbitu itzulpena" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Editatu iruzkina" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Editatu iruzkina" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Ezkutatu alboko barra" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Erakutsi alboko barra" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Ezkutatu egoera-barra" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Erakutsi egoera-barra" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Jatorrizko testua" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singularra" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plurala" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Itzulpena" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Aurre-itzulita" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Lana behar du" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Lana behar du" #: src/editing_area.cpp:566 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 fitxategiak txantiloiak besterik ez dira eta ez dute inolako itzulpenik " "berez.\n" "Itzulpena egiteko, sortu PO fitxategi berri bat txantiloian oinarrituz." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Sortu itzulpen berria" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Dena" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "%i forma" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "%i forma (ez da erabiltzen)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Zero" #: src/editing_area.cpp:788 msgid "One" msgstr "Bat" #: src/editing_area.cpp:790 msgid "Two" msgstr "Bi" #: src/editing_area.cpp:804 msgid "Other" msgstr "Beste bat" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s Formatua" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s formatua" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Itzulpena — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "IDa" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Jatorrizko testua — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "hizkuntza ezezaguna" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Huts egin du gettext katalogoak batzerakoan." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Ireki editorean" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Ireki editorean" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Bilatu" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Ordeztu" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Aukerak" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ezikusi maiuskulak/minuskulak" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Itzulbiratu" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Hitz osoak bakarrik" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Bilatu jatorrizko testuetan" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Bilatu itzulpenetan" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Bilatu iruzkinetan" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Ordeztu &denak" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Ordeztu &denak" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Ordeztu" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Aurrekoa" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Hurrengoa >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Bilatzeko katea" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Ordezpen-katea" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Itzulpen hizkuntza" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Itzulpenaren hizkuntza:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Katalogoen kudeatzailea" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Editatu…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Sortu itzulpen proiektu berria" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Ezabatu proiektua" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Editatu proiektua" #: src/manager.cpp:176 msgid "Update all" msgstr "Eguneratu denak" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Eguneratu proiektuko katalogo guztiak" #: src/manager.cpp:378 msgid "Total" msgstr "Guztira" #: src/manager.cpp:379 msgid "Untrans" msgstr "Itzuli gabe" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Lana behar du" #: src/manager.cpp:381 msgid "Errors" msgstr "Erroreak" #: src/manager.cpp:382 msgid "Last modified" msgstr "Azken aldaketa" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Hautatu direktorioa" #: src/manager.cpp:433 msgid "Directories:" msgstr "Direktorioak:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "" #: src/manager.cpp:540 msgid "Delete project" msgstr "" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" #: src/manager.cpp:571 msgid "Confirmation" msgstr "Berrespena" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Egiaztatu eguneraketarik dagoen…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Katalogoen kudeatzailea" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Hobespenak…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Editatu" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Desegin" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Berregin" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Itsatsi eta bateratu estiloa" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Ezabatu" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Ortografia eta gramatika" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Erakutsi ortografia eta gramatika" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Egiaztatu dokumentua orain" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Egiaztatu ortografia idatzi bitartean" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Egiaztatu gramatika ortografiarekin" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Zuzendu ortografia automatikoki" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Ordezkapenak" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Erakutsi ordezkapenak" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Itsatsi/Kopiatu adimentsua" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Tipografia-komatxoak" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Tipografia-marratxoak" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Lotura adimentsuak" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Testu-ordezpena" #: src/menus.cpp:230 msgid "Transformations" msgstr "Eraldaketak" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Bihurtu maiuskulak" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Bihurtu minuskulak" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Jarri maiuskula" #: src/menus.cpp:237 msgid "Speech" msgstr "Diskurtsoa" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Hasi hitz egiten" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Gelditu hitz egitea" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Ikusi" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Erakutsi tresna-barra" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Pertsonalizatu tresna-barra…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Sartu pantaila osoan" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Leihoa" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimizatu" #: src/menus.cpp:264 msgid "Zoom" msgstr "Zooma" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Ongi etorri Poedit-era" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Ekarri denak aurrera" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Itzultzaileari buruzko informazioa" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Izena:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Zure izena" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-maila:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Zure izena eta e-mail helbidea GNU gettext fitxategietako Last-Translator " "goiburua ezartzeko besterik ez da erabiliko." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Edizioa" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Konpilatu MO fitxategia automatikoki gordetzean" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Egiaztatu ortografia" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Betik aldatu fokua testu sarrera eremura" #: src/prefsdlg.cpp:211 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 "" "Ez baimendu inoiz kate-zerrendak fokua hartzea. Gaitzen bada, ctrl+geziak " "erabili behar dituzu teklatu bidezko nabigaziorako edo zuzenean idazten hasi " "zaitezke, fokua aldatzeko tabuladorea sakatzeko beharrik gabe." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Itxura" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Erabili aukeratutako tipografia zerrendetan:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Erabili aukeratutako tipografia testu eremuetan:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Aldatu erabiltzaile-interfazearen hizkuntza" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 edo berriagoa behar du)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Orokorra" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Erabili itzulpen memoria" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Kudeatu…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Iturburuetatik eguneratzean" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "zalantzako bat egitea fitxategian" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "aurre-itzuli itzulpen memoriatik" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit sarrera berriak zure aurreko itzulpenekin edo itzulpen memoriarekin " "betetzen saiatu daiteke. Itzulpen memoria erabiltzea ez da oso eraginkorra " "izango erdi hutsik badago, baina hobetzen joango da itzulpenak gehitu ahala." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Biltegiratutako itzulpenak:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Datu-basearen tamaina diskoan:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Itzulpen fitxategiak inportatu…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Itzulpen fitxategiak inportatu…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "TMXtik inportatu…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "TMXtik inportatu…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "TMXra esportatu…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "TMXra esportatu…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Berrezarri" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Hautatu inportatzeko itzulpen-fitxategiak" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Inportatu beharreko TMX fitxategiak aukeratu" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX fitxategiak" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Itzulpenak inportatzen…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Esportatu honela…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Itzulpenak esportatzen…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "\"%s\"ra itzulpen memoria esportatzeak huts egin du." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Berrezarri itzulpen memoria" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Ziur zaude itzulpen memoria berrezarri nahi duzula?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Itzulpen memoria berrezartzeak atzerabiderik gabe ezabatuko ditu bertan " "biltegiratutako itzulpen guztiak. Ezin duzu eragiketa hau desegin." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "IM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Itzulpen memoria" #: src/prefsdlg.cpp:730 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 "" "Iturburu kode erauzleak iturburu kode fitxategietan kate itzulgarriak " "aurkitzeko eta itzuli ahal izateko erauzteko erabiltzen dira." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Erauzle pertsonalizatuak:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Erauzle pertsonalizatuak:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "GNU gettext tresnek ezagututako programazio hizkuntza guztiak onartzen ditu " "(PHP, C/C++, C#, Perl, Python, Java, JavaScript eta beste batzuk)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Ezabatu erauzlea" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Ziur \"%s\" erauzlea ezabatu nahi duzula?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Erauzleak" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Kontuak" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Egiaztatu eguneraketak automatikoki" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Beta bertsioak barne" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta bertsioek azken ezaugarriak eta hobekuntzak dituzte, baina apur bat " "ezegonkorrak izan daitezke." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Eguneraketak" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Ezarpen hauek PO fitxategien barneko formatuari eragiten diote. Zehaztu " "betebehar bereiziren bat baduzu, adib. bertsio kontrola dela eta." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Lerro amaierak:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (gomendatua)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Itzulbiratzea:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Mantendu dauden fitxategien formatua" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Aurreratua" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Kate %u aurre-itzulita" msgstr[1] "%u kate aurre-itzulita" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Aurre-itzultzen..." #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "sarrera %d aurre-itzulita." msgstr[1] "%d sarrera aurre-itzulita." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Itzulpenak 'lana behar du' gisa markatu dira, ez zehatzak izan " "daitezkeelako. Zuzenak diren berrikusi beharko zenuke." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Ezin izan da sarrerarik aurre-itzuli." #: src/pretranslate.cpp:218 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 "" "Itzulpen memoriak ez du fitxategi honen edukiaren antzekoa den katerik. Zuk " "eskuz itzulitako fitxategietatik ikasi ahala eraginkorragoa da Poedit " "Itzulpen erdi-automatikoentzat." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Aurre-itzuli" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Bete bakarrik zehaztasun osoz bat datozenean" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Ez markatu zehazki bat datozenak 'lana behar du' bezala" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Gaitu bakarrik zure itzulpen memoriaren kalitateaz fidatzen bazara. " "Lehenetsita itzulpen memoriako bat etortzean 'lana behar du' gisa markatzen " "dira eta erabili aurretik berrikusi behar dira." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Aurre-itzulpenak automatikoki aurkitzen ditu itzulpen memorian itzuli gabeko " "kateentzako bat etortze zehatzak edo gutxi gora beherakoak eta itzulpena " "betetzen du." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Gehitu karpetak…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Gehitu karpetak…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Gehitu fitxategiak…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Gehitu fitxategiak…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Gehitu komodina…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Gehitu komodina…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Bideak" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Baztertutako bideak" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Erauzte ezarpen aurreratuak" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Erauzi itzultzaileentzako oharrak hemendik:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Aurrizki hau duten iruzkinak:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Iruzkin guztiak" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "xgettext marka gehigarriak:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Gako-hitz gehigarriak" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Itzulitako proiektuaren izena" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Taldearen izena eta e-mail helbidea edo URL-a" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "Adib. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (gomendatua)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "Mesedez gorde fitxategia lehenik. Atal hau ezin ordura arte editatu." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Ez dira forma plural guztiak itzuli." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Itzulpena esaldi gisa hasi behar da." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Itzulpena minuskula batez hasi behar da." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Itzulpena ez da zuriune batekin hasten." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Itzulpena zuriune batekin hasten da, baina jatorrizko testua ez." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Itzulpenari lerro berri bat falta zaio amaieran." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Itzulpena lerro berri batekin amaitzen da, baina jatorrizko testua ez." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Itzulpenak zuriune bat falta du amaieran." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Itzulpena zuriune batekin amaitzen da, baina jatorrizko testua ez." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Itzulpenak “%sâ€-rekin amaitu behar du." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Itzulpenak ez du “%sâ€-rekin amaitu behar." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "Itzulpena \"%s\"-rekin amaitzen da, baina jatorrizko testua \"%s\"-rekin." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Iruzkina:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "E&zabatu" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Editatu proiektua" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Proiektuaren izena:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Arakatu" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Gehitu direktorioa zerrendara" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Ados" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Fitxategia" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Berria…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Berria &POT/PO fitxategitik…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Berria &POT/PO fitxategitik…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Ireki…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Ireki erabili berria" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Katalogoen &kudeatzailea" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Katalogoen &kudeatzailea" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Itxi" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Gorde" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Gorde &honela…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Gorde &honela…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Konpilatu MO-ra…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Egiaztatu eguneraketarik dagoen…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Hobespenak" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "I&rten" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Irten" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopiatu singularretik" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopiatu singularretik" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Itzulpenak &lana behar du" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Itzulpenak lana &behar du" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Editatu &iruzkina" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Editatu &iruzkina" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Iradokizunak" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Bilatu…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Ordeztu…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Bilatu hurrengoa" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Bilatu aurrekoa" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Bilatu eta ordeztu…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Bilatu hurrengoa" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Bilatu aurrekoa" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "&ID katea erakutsi" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "&ID katea erakutsi" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Oharrak erakutsi" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Erakutsi oharrak" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Ordenatu &fitxategiz" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Ordenatu &fitxategiz" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Ordenatu i&turburuz" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Ordenatu i&turburuz" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Ordenatu itz&ulpenez" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Ordenatu Itz&ulpenez" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Taldekatu testuinguruz" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Taldekatu testuinguruz" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Erroreak dituzten sarrerak lehenik" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Erroreak dituzten sarrerak lehenik" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Itzuli gabeko &sarrerak lehenik" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Itzuli gabeko &sarrerak lehenik" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Erakutsi alboko barra" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Erakutsi egoera-barra" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Eguneratu iturburuetatik" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Eguneratu iturburuetatik" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sinkronizatu Crowdin-ekin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Aurre-i&tzuli…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Balioztatu itzulpenak" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Balioztatu itzulpenak" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Purgatu ezabatutako itzulpenak" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Purgatu ezabatutako itzulpenak" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Propietateak…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Joan" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Eginda eta hurrengoa" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Eginda eta hurrengoa" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "A&urreko itzulpena" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "A&urreko itzulpena" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Hurrengo itzulpena" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Hurrengo itzulpena" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "A&urreko amaitu gabea" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "A&urreko amaigabea" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Hu&rrengo amaitu gabea" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Hu&rrengo amaigabea" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Aurreko plural forma" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Aurreko plural forma" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Hurrengo plural forma" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Hurrengo plural forma" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Online laguntza" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Online laguntza" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext eskuliburua" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext eskuliburua" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Poedit-i buruz" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Honi buruz" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Erauzlearen ezarpena" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Luzapenen zerrenda puntu eta komaz bananduta (adib. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Erabilera:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Itzulpenak erauzteko komandoa:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Hau erauzlea abiarazteko agindua da.\n" "%o irteerako fitxategiaren izena bihurtzen da, \n" "%K gako-hitzen zerrenda, %F sarrerako fitxategia,\n" "%C karaktere-jokora (ikusi behean)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Gako-hitzen zerrendako elementu bat:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Gako-hitz bakoitzeko behin erantsiko da hau\n" "komando lerrora. %k gako-hitza da." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Sarrera-fitxategien zerrendako elementu bat:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Hau komando lerrora erantsiko zaio \n" "sarrera-fitxategi bakoitzeko behin. %f fitxategi-izena bihurtzen da." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Iturburuaren karaktere-jokoa:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Hau agindu lerrora gehituko da\n" " jatorrizko karaktere kodeketa ematen bada besterik ez. %c karaktere " "kodeketa da." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Itzulpenaren propietateak" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Proiektuaren izena eta bertsioa:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Hizkuntza taldea:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Plural formak:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Erabili hizkuntza honetarako lehenetsitako arauak" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Erabili espresio pertsonalizatua" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Ikasi gehiago plural formez" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Karaktere-jokoa:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Erauzte ezarpen aurreratuak…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Erauzte ezarpen aurreratuak…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Itzulpenaren propietateak" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Iturburuen bideak" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Iturburuen bideak" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Erauzi testua direktorio hauetako jatorrizko fitxategietatik:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Hasierako bidea:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Iturburuetako gako-hitzak" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Iturburuetako gako-hitzak" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Erabili gako-hitzak (funtzioen izenak) kate itzulgarriak antzemateko\n" "iturburu fitxategietan:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Erabili lehenetsitako gako-hitzak onartutako hizkuntzetan ere bai" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Ikasi gettext gako-hitzei buruz" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Balioztatu" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Egiaztatu itzulpenean errorerik dagoen" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Eguneratu kodetik" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Eguneratu kodetik" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Eguneratu iturburuetatik" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Alboko barra" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Erakutsi edo ezkutatu alboko barra" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Orain desegokia den itzulpena dagokion jatorrizko testua (eguneraketan " "aldatu aurrekoa)." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "" #: src/sidebar.cpp:196 msgid "Comment" msgstr "" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Gehitu iruzkina" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Gehitu iruzkina" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Itzulpen memoriatik ezabatu" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Itzulpen memoriatik ezabatu" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Ez da bat datorrenik aurkitu" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Ez da bat datorrenik aurkitu" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Kate hau Poedit-en itzulpen memorian aurkitu da." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Ezin da programa abiarazi: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX fitxategia ez da zuzena." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Itzulpen memorien datubasea ez da zuzena: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Itzulpen memoriaren errorea: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Erabili hizkuntza lehenetsia)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Hizkuntza hautapena" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Hautatu zure gogoko hizkuntza " #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Poedit berrabiarazi behar duzu aldaketa honek eragina izateko." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Ezin izan da direktorio tenporala sortu." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Ez dago itzulpenik. Hori ezohikoa da." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Eguneratu POT fitxategitik" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Hartu kate itzulgarriak dagoen POT txantiloi batetik." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Kate itzulgarriak zuzenean erauzi ditzakezu iturburu kodetik:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "&Erauzi iturburuetatik" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Konfiguratu iturburu kodearen erauzketa propietateetan." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "%s bertsioa" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sinkronizatu" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sinkronizatu itzulpena Crowdin-ekin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "%s(r)i buruz" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s hobespenak" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "%s(r)i buruz" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Zerbitzuak" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Ezkutatu %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Ezkutatu besteak" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Erakutsi denak" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Irten %s(e)tik" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Hobespenak…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Hobespenak..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Hobespenak..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Aplikatu" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Aplikatu" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "A&tzera" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Atzera" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Utzi" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Garbitu" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Garbitu" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopiatu" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Ebaki" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Ebaki" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Editatu" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Irten" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Laguntza" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Berria" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Berria" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Ez" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ez" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "Ad&os" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Ireki…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Ireki..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Ireki..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Itsatsi" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Itsatsi" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Hobespenak" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Berregin" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Freskatu" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Gorde honela" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Gorde honela" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Hautatu &denak" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Hautatu denak" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Desegin" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Bai" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Bai" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Maius.+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Sartu" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Gora" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Behera" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Ezkerra" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Eskuina" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "maius." #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/kk.po0000644000175100001660000031777215011674364011110 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Kazakh\n" "Language: kk_KZ\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: kk\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Бұл хабарламаны жаÑыру" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "КелеÑіде көрÑетпеу" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "КелеÑіде көрÑетпеу" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Жаңарту ақпараты" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Жабу" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Файл" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Жаңа жолдар" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "БаÑтапқы код файлдарын жинау…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Ðлынған аудармалары бар файлды жүктеу ÑәтÑіз аÑқталды." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Қайда: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "БаÑтапқы коды қолжетерÑіз." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Ðудармаларды баÑтапқы кодтардан жаңарту мүмкін емеÑ, өйткені файл " "баптауларында көрÑетілген орында баÑтапқы кодтар табылмады." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "РұқÑат етілмеген." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Сізде файл қаÑиеттерінде көрÑетілген орналаÑудан баÑтапқы код файлдарын оқу " "Ñ€Ò±Ò›Ñаты жоқ." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Егер Ñіз файлдарыңызға қатынауды бұрын тайдырÑаңыз, оны Жүйелік баптаулар > " "ҚауіпÑіздік және жекелік > Файлдар және бумалар ішінен Ñ–Ñке қоÑа алаÑыз." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Егер Ñіз файлдарыңызға қатынауды бұрын тайдырÑаңыз, оны Жүйелік баптаулар > " "ҚауіпÑіздік және жекелік > Жекелік > Файлдар және бумалар ішінен Ñ–Ñке қоÑа " "алаÑыз." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "\"%s\" файлын ашу мүмкін емеÑ." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Ðудармаларды жаңарту" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "ӨзгеріÑтерді біріктіру…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "ЖарамÑыз тақырыптама: \"%s\"" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO аударма файлдары" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT аударма үлгілері" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF аударма файлдары" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON аударма файлдары" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter аудармалар файлдары" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Барлық аудармалар файлдары" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Файл пішімі Poedit танымайтын пішім болып табылады." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Бұл JSON файлы жарамды аудармалар файлы ÐµÐ¼ÐµÑ Ð¶Ó™Ð½Ðµ оны Poedit көмегімен " "түзету мүмкін емеÑ." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Файл құрамаÑын оқу келеÑÑ– қатемен ÑәтÑіз аÑқталды: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "\"%s\" файлы тек оқу үшін қолжетерліқ, Ñақталмайды.\n" "Оны баÑқа атымен Ñақтаңыз." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "%s файлын Ñақтау мүмкін емеÑ." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Скриншоттар:" #: src/catalog_po.cpp:134 #, 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[1] "%i жол \"%s\" файлынан Ð´Ò±Ñ€Ñ‹Ñ Ð¶Ò¯ÐºÑ‚ÐµÐ»Ð¼ÐµÐ³ÐµÐ½." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Жол %d, \"%s\" файлында, зақымдалған (жарамÑыз %s дерегі)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "PO файлы қате: msgstr жекеше түрі msgid_plural нәрÑеÑімен бірге қолданылған" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "PO файлы қате: msgstr көпше түрі msgid_plural нәрÑеÑіз көрÑетілген" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Файлдын жүктеу мүмкін емеÑ, ол зақымдалған болуы мүмкін." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Файлды жүктеген кезде қателер орын алған. Кейбір ақпарат жоқ немеÑе " "зақымдалған болуы мүмкін." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Файлды жақÑÑ‹ пішімдеу кезінде қате кетті (бірақ ол файл Ñәтті Ñақталды)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Файлды оның баптауларындағыдай көрÑетілген \"%s\" кодталуында Ñақтау мүмкін " "емеÑ.\n" "\n" "Оның орнына ол UTF-8 ретінде Ñақталды, және баптау ÑәйкеÑінше өзгертілді." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Файлды Ñақтау қатеÑÑ–" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "\"%s\" - Ð´Ò±Ñ€Ñ‹Ñ POT файлы емеÑ." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF файлын жүктеу қатеÑÑ–: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "қолдауы жоқ нұÑқаÑÑ‹ (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Ðударма жолындағы жарамÑыз белгілеу." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Қолдау көрÑетілетін бұлттық Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð°Ð»Ð°Ñ€Ñ‹Ð½Ð´Ð° баÑқарылатын " "аудармаларды Ñинхрондау үшін оларды Poedit қолданбаÑына байланыÑтырыңыз." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Бұлттық Ñинхрондау қалай Ð¶Ò±Ð¼Ñ‹Ñ Ñ–Ñтейді?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Тіркелгі" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(кіру орындалмаған)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Бұлттық аударманы ашу" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Тіркелгілерді баÑқару" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Жоба:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Тіл:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Бұлттық тіркелгіге кіру" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Бұлттық тіркелгіге кіру" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Сіздің тіркелгіңізде бірде-бір аударма жобаÑÑ‹ тіркелмеген." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Соңғы аудармаларды жүктеп алу…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "%s ішіне кіру" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Синхрондау" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Ðудармаларды %s ішіне жүктеп жіберу…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Ðудармаларды %s ішіне жүктеп жіберу ÑәтÑіз аÑқталды." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Синхрондау қатеÑÑ–" #: src/commentdlg.cpp:48 msgid "Add" msgstr "ҚоÑу" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "БелгіÑіз Crowdin қатеÑÑ–." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "ÐвторизациÑланбаған, қайтадан кіріңіз." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Бұл жобада аудармаларды жүктеп алу мүмкіндігі Ñөндірілген." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Жүйеге кіру" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Кіру" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Шығу" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Шығу" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Crowdin туралы" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "ÐутентификациÑны күту…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Пайдаланушы ақпаратын жаңарту…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Crowdin-ға кіру" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Crowdin қызметімен Ñинхрондау ÑәтÑіз аÑқталды." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin қатеÑÑ–" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Ðудармаларды жүктеу…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Көшіру" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Көбірек білу" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Көмек" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO файлдарын Poedit ішінде түзетуге болмайды." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Файлды ашу қатеÑÑ–" #: src/edapp.cpp:735 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 файлы да " "жаңартылады." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "уақытша файлдарды өшірмеу (жөндеу режимі үшін пайдалы)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "poedit:// URI-ін талдау" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "берілген жол нөмірі бар Ñлементке өту" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Poedit үрдіÑімен байланыÑу қатеÑÑ–." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Өңделмеген ережеден Ñ‚Ñ‹Ñ Ð¶Ð°Ò“Ð´Ð°Ð¹ орын алды: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Ðударма үлгіÑін таңдау" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "ЖарамÑыз файл" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Ðударма файлын таңдау" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit - қолдануға ыңғайлы аудармалар түзетушіÑÑ–." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Сіз Poedit терезеÑіне бірден көп файлды тартып апара алмайÑыз." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "\"%s\" файлы аударма файлы емеÑ." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "\"%s\" файлы жоқ болып тұр." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Емлені текÑеру Ñөндірілген, өйткені %s тілі үшін Ñөздік орнатылмаған." #: src/edframe.cpp:871 msgid "Install" msgstr "Орнату" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "\"%s\" файлы баÑқа қолданбамен өзгертілген." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Файлды қайта жүктеу" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Файлды диÑктен қайта жүктеуді қалайÑыз ба? Олай Ñ–ÑтеÑеңіз, Poedit ішіндегі " "Ñақталмаған өзгеріÑтеріңіз жоғалатын болады." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Елемеу" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Файлды қайта жүктеу" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Файл өзгертілген. ӨзгеріÑтерді Ñақтау керек пе?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "ӨзгеріÑтерді Ñақтау" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "ӨзгеріÑтерді ÑақтамаÑаңыз, олар жоғалады." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Сақтау" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Сақтамау" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Сақтамау" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "СақтаÑаңыз, баÑқа қолданбамен жаÑалған өзгеріÑтер жоғалатын болады." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Ð‘Ð°Ñ Ñ‚Ð°Ñ€Ñ‚Ñƒ" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Сонда да Ñақтау" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Сонда да Ñақтау" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Қалайша Ñақтау…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Қалайша компилÑциÑлау…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "КомпилÑциÑланған аудармалар файлдары" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML файлдары" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Жаңарту ÑәтÑіз аÑқталды" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "POT &файлынан жаңарту…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "POT &файлынан жаңарту…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Ðударма ішінен %d мәÑеле табылды." msgstr[1] "Ðударма ішінен %d мәÑеле табылды." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "ТекÑеру нәтижелері" #: src/edframe.cpp:1842 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 "" "Қателері бар жолдар қызыл түÑпен белгіленді. Қате ақпараты ондай жол " "таңдалған кезде көрÑетіледі." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Файл Ñәтті Ñақталды." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Файл Ñәтті Ñақталды және MO пішіміне компилÑциÑланды, бірақ, ол Ð´Ò±Ñ€Ñ‹Ñ " "жаÑамайтын ÑиÑқты." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Файл қаупÑіз Ñақталды, бірақ оны MO пішіміне түрлендіру мен қолдануға " "болмайды." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Файл MO пішіміне Ñәтті компилÑциÑланды, бірақ, ол Ð´Ò±Ñ€Ñ‹Ñ Ð¶Ð°Ñамайтын ÑиÑқты." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Файлды MO пішіміне компилÑцилау және қолдану мүмкін емеÑ." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Ðудармалар мәÑелелері табылмады." #: src/edframe.cpp:1894 #, 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] "Ðударма қолдануға дайын, бірақ, %d жазба әлі аударылмаған." msgstr[1] "Ðударма қолдануға дайын, бірақ, %d жазба әлі аударылмаған." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Ðударма қолдануға дайын." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit \"%s\" файлындағы жарамÑыз құраманы автотүзеткен." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Бұл файлда қайталанатын жазбалар болды, ол PO файлдарында Ñ€Ò±Ò›Ñат етілмейді, " "және файлды қолдануға жол бермейді. Poedit мәÑелені шешті, бірақ, жөндеу " "керек етіп белгіленген барлық жазбаларды қарап шығыңыз және керек болÑа, " "түзетіңіз." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Ðударма тілі әлі көрÑетілмеген." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Тілді орнату" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Тілді орнату" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Ðударма тілі Ð´Ò±Ñ€Ñ‹Ñ ÐºÓ©Ñ€Ñетілмеген болÑа, Ò±ÑыныÑтар қолжетерÑіз болады. Көпше " "түрлер ÑиÑқты, баÑқа да мүмкіндіктерге кері Ó™Ñер тиюі мүмкін." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Ðударма тілі баÑтапқы тілмен бірдей." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Тілді түзету" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Тілді түзету" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Бұл файлда көпше түрі бар жолдар бар, бірақ файлдың Plural-Forms өріÑÑ– " "бапталмаған." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Бұл файлдағы нәрÑелердің көпше түрлері файлдың Plural-Forms өріÑіндегі " "көрÑетілген көпше түрінен өзгеше" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Міндетті Plural-Forms тақырыптамаÑÑ‹ жоқ." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Plural-Forms өріÑіндегі ÑинтакÑÐ¸Ñ Ò›Ð°Ñ‚ÐµÑÑ– (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Тақырыптаманы дұрыÑтау" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Файл қолданатын көпше түрлерінің өрнегі %s үшін тән емеÑ." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "ТекÑеру" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Қайнар көз мәтіні үшін ағылшын тілін пайдалануды қалайÑыз ба?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Бұл файл қайнар көз мәтіні орнына жолдар ID қолданады. Poedit Ñіз үшін " "\"%s\" файлынан ағылшын мәтіндерін жүктей алады." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Ðғылшын тілін жүктеу" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Ðударылды: %d, барлығы %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Қалды: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d қате" msgstr[1] "%d қате" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d жазба" msgstr[1] "%d жазба" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (Ñақталмаған)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (түрлендірілген)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Ðудармалар жадыÑын жаңарту ÑәтÑіз аÑқталды: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Ò°Ñтау" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Өшірілген аудармаларды жою" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "ОÑыдан былай қолданылмайтын аудармаларды өшіруді қалайÑыз ба?" #: src/edframe.cpp:2879 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 "" "Жоюды таңдаÑаңыз, өшірілген деп белгіленген барлық аудармалар өшірілетін " "болады. Олар болашақта қайта қоÑылÑа, оларды қайта аударуға керек болады." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Тазарту" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "БаÑтапқы код мәтінінен көшіру" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "БаÑтапқы код мәтінінен көшіру" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Ðударманы тазарту" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Ðударманы тазарту" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "ТүÑіндірмені түзету" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "ТүÑіндірмені түзету" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Код кездеÑулері" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Код кездеÑулері" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Бүйір панелін жаÑыру" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Бүйір панелін көрÑету" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Қалып-күй жолағын жаÑыру" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Қалып-күй жолағын көрÑету" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Жолдың таңбалар еÑебімен ұзындығы: аударма | қайнар көзі" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Жолдың таңбалар еÑебімен ұзындығы" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "БаÑтапқы код мәтіні" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Жекеше" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Көпше" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Ðударма" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Ðлдын-ала аударылған" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Жөндеу керек" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Жөндеу керек" #: src/editing_area.cpp:566 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 файлын жаÑаңыз." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Жаңа аударманы жаÑау" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Бұл POT файлынан жаңа аударманы жаÑау." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "БаÑтапқы мәтін идентификаторы" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Барлығы" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Пішім %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Форма %i (қолданылмайды)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Ðөл" #: src/editing_area.cpp:788 msgid "One" msgstr "Бір" #: src/editing_area.cpp:790 msgid "Two" msgstr "Екі" #: src/editing_area.cpp:804 msgid "Other" msgstr "БаÑқа" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Мәтін контекÑті: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Мәтін анықтағышы: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s пішімі" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s пішімі" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Ðударма — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "БаÑтапқы мәтін — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "тіл белгіÑіз" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Gettext каталогтарын біріктіру ÑәтÑіз аÑқталды." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Түзеткіште ашу" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Түзеткіште ашу" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "Файлда бұл жолдың баÑтапқы кодтарда кездеÑетіні туралы ақпарат жоқ." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Қолданылу ақпараты жоқ" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d код кездеÑуі бар" msgstr[1] "%d код кездеÑуі бар" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "БаÑтапқы коды табылмады" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit бұл жол қолданылатын баÑтапқы код жерін көрÑете алмайды, өйткені ол " "файл көрÑетілген жерде жоқ болып тұр, немеÑе ол нақты файлға көрÑетіп " "тұрмаған Ñимволдық Ñілтеме болып тұр." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Файлды ашу мүмкін емеÑ" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit \"%s\" файлын аша алмады." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Табу" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "ÐлмаÑтыру" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "ОпциÑлар" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "РегиÑтрді елемеу" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Соңына жеткенде баÑына апару" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Тек толық Ñөздер" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "БаÑтапқы мәтіндерден табу" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Ðудармалардан табу" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "ТүÑіндірмелер ішінен іздеу" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Б&арлығын алмаÑтыру" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Б&арлығын алмаÑтыру" #: src/findframe.cpp:150 msgid "&Replace" msgstr "ÐлмаÑты&ру" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Ðлдыңғы" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&КелеÑÑ– >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Ізделінетін жол" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "ÐлмаÑтыру жолы" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Тіл атауы немеÑе коды" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Ðударманың тілі" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Ðударманың тілі:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Барлық жолдар" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Localazy жоба ақпаратын жүктеп алу мүмкін емеÑ." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Ðудармаларды Localazy ішіне жүктеп жіберу кезінде қате орын алды." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Жобалар" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "%s туралы көбірек білу" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy – кез келген адамға өз өнімдері мен мазмұнын бірнеше тілге оңай " "аударуға мүмкіндік беретін жоғары автоматтандырылған Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð°ÑÑ‹." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Жобаны қоÑу" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Жобаны қоÑу" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - каталогтарды баÑқару" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Түзету…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Жаңа аудармалар жобаÑын жаÑау" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Жобаны өшіру" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Жобаны түзету" #: src/manager.cpp:176 msgid "Update all" msgstr "Барлығын жаңарту" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Жобадағы барлық каталогтарды жаңарту" #: src/manager.cpp:378 msgid "Total" msgstr "Жалпы" #: src/manager.cpp:379 msgid "Untrans" msgstr "Ðударылмаған" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Жөндеу керек" #: src/manager.cpp:381 msgid "Errors" msgstr "Қателер" #: src/manager.cpp:382 msgid "Last modified" msgstr "Соңғы рет өзгертілген" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Буманы таңдау" #: src/manager.cpp:433 msgid "Directories:" msgstr "Бумалар:" #: src/manager.cpp:503 msgid "" msgstr "<атауÑыз>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "\"%s\" жобаÑын өшіруді қалайÑыз ба?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Жобаны өшіру" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Жобаны өшіру ешбір аударма файлын өшірмейді." #: src/manager.cpp:571 msgid "Confirmation" msgstr "РаÑтау" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Бұл жобадағы барлық каталогтарды жаңарту керек пе?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Жобадағы барлық файлдардан баÑтапқы кодтан жаңартуды орындайды." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Жаңартуларды текÑеру…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Каталогтар баÑқарушыÑÑ‹" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Баптаулар…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Түзету" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Болдырмау" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Қайталау" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "КіріÑтіру және ÑәйкеÑтендіру Ñтилі" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Өшіру" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Емлені текÑеру және грамматика" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Емлені текÑеру және грамматиканы көрÑету" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Құжатты қазір текÑеру" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Емлені теру кезінде текÑеріп отыру" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Грамматиканы теру кезінде текÑеріп отыру" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Емлені автоматты түрде түзетіп отыру" #: src/menus.cpp:219 msgid "Substitutions" msgstr "ÐлмаÑтырулар" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "ÐлмаÑтыруларды көрÑету" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Ðқылды көшіріп алу/кіріÑтіру" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Ðқылды тырнақшалар" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Ðқылды дефиÑтер" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Ðқылды Ñілтемелер" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Мәтінді алмаÑтыру" #: src/menus.cpp:230 msgid "Transformations" msgstr "Түрлендірулер" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Ð‘Ð°Ñ Ó™Ñ€Ñ–Ð¿Ñ‚Ñ– қылу" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Кіші әріпті қылу" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Ð‘Ð°Ñ Ó™Ñ€Ñ–Ð¿Ð¿ÐµÐ½" #: src/menus.cpp:237 msgid "Speech" msgstr "Сөйлеу" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Сөйлеуді баÑтау" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Сөйлеуді аÑқтау" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "Тү&рі" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Саймандар панелін көрÑету" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Саймандар панелін баптау…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Толық Ñкранға өту" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Терезе" #: src/menus.cpp:263 msgid "Minimize" msgstr "Бүктеу" #: src/menus.cpp:264 msgid "Zoom" msgstr "МаÑштаб" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Poedit-ке қош келдіңіз" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Барлығын алдына әкелу" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Ðудармашы жөніндегі ақпарат" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Ðты:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Сіздің атыңыз" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Пошта:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Сіздің атыңыз мен Ñл. пошта адреÑіңіз тек қана GNU gettext файлдарындағы " "Last-Translator жолы үшін керек." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Өңдеу" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Сақтағанда, MO файлын авто жаÑау" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Емлені текÑеру" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "ФокуÑты әрқашан мәтін енгізу жолына орнату" #: src/prefsdlg.cpp:211 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 "" "Жолдарға Ñ„Ð¾ÐºÑƒÑ Ð°Ð»ÑƒÒ“Ð° тыйым Ñалу. ҚоÑулы тұрÑа, пернетақта навигациÑÑÑ‹ үшін " "Ctrl мен жақтар пернелерін қолдануғы тиіÑтіÑіз, бірақ мәтінді тере алаÑыз, " "фокуÑты алу үшін Tab пернеÑін баÑу керек емеÑ." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Сыртқы түрі" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Таңдауыңызша тізім қарібін қолдану:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Таңдауыңызша мәтіндік өріÑтер қарібін қолдану:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Бағдарлама тілін өзгерту" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 немеÑе одан жаңаÑын талап етеді)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Жалпы" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Ðудармалар жадыÑын қолдану" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "БаÑқару…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "БаÑтапқы кодтардан жаңарту кезінде" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "файл ішінен дәлÑіз ÑәйкеÑтендіру" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "ÐЖ ішінен алдын-ала аудару" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit жаңа жолдарды тек файлдың алдыңғы аудармаларынан, немеÑе Ñіздің " "аудармалар жадыÑынан толтыру талабын жаÑай алады. Ðудармалар жадыÑÑ‹ Ð±Ð¾Ñ " "болған кезде оны қолдану пайдаÑÑ‹ аз, бірақ, оған жаңа аудармаларды қоÑқан " "кезде, пайдаÑÑ‹ арта түÑеді." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Сақталған аудармалар:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Дерекқордың диÑкідегі өлшемі:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Ðударма файлдарын импорттау…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Ðударма файлдарын импорттау…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "TMX-тан импорттау…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "TMX-тан импорттау…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "TMX пішіміне ÑкÑпорттау…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "TMX пішіміне ÑкÑпорттау…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "ТаÑтау" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Импорттау үшін аудармалар файларын таңдаңыз" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Импорттау үшін TMX файлдарын таңдаңыз" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX файлдары" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Ðудармаларды импорттау…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Қалайша ÑкÑпорттау…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Ðудармаларды ÑкÑпорттау…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "\"%s\" ішіне аудармалар жадыÑын ÑкÑпорттау ÑәтÑіз аÑқталды." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Ðудармалар жадыÑын таÑтау" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Ðудармалар жадыÑын таÑтауды шынымен қалайÑыз ба?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Ðудармалар жадыÑын таÑтау әрекеті одан барлық Ñақталған аудармаларды " "қайтармаÑтай өшіреді. Бұл әрекетті болдырмау мүмкін ÐµÐ¼ÐµÑ Ð±Ð¾Ð»Ð°Ð´Ñ‹." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Ðудармалар жадыÑÑ‹" #: src/prefsdlg.cpp:730 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 "" "БаÑтапқы кодтар ÑкÑтракторлары баÑтапқы кодтар файлдарынан аударуға келетін " "жолдарды табу және аудару үшін шығарып алуға қолданылады." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Таңдауыңызша ÑкÑтракторлар:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Таңдауыңызша ÑкÑтракторлар:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "GNU gettext Ñаймандары танитын барлық бағадарламалау тілдерін қолдайды (PHP, " "C/C++, C#, Perl, Python, Java, JavaScript және баÑқалары)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "ЭкÑтракторды өшіру" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "\"%s\" ÑкÑтракторын өшіруді шынымен қалайÑыз ба?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "ЭкÑтракторлар" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Тіркелгілер" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Жаңартуларға автотекÑеру" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Бета нұÑқаларын қоÑа" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Бета нұÑқаларында Ñоңғы мүмкіндіктер және жақÑартулар бар, бірақ, олар " "тұрақÑыздау болуы мүмкін." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Жаңартулар" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Бұл баптаулар PO файлдарының ішкі құрылымына Ó™Ñер етеді. Сізде арнайы " "талаптар болÑа ғана оларды өзгертіңіз, мыÑалы, нұÑқаларды баÑқару жүйелерді " "қолданÑаңыз." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Жол аÑқтаулары:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (Ò±Ñынылады)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "ТаÑымалдау:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Бар болып тұрған файлдардың пішімдеуін Ñақтап отыру" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Кеңейтілген" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Жолдарды дайындау…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Ðудармалар жадыÑынан алдын-ала аудару…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u жол алдын-ала аударылған" msgstr[1] "%u жол алдын-ала аударылған" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Ðлдын-ала аудару…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d жазба алдын-ала аударылды." msgstr[1] "%d жазба алдын-ала аударылды." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Ðудармалар толық ÑÓ™Ð¹ÐºÐµÑ Ð±Ð¾Ð»Ð¼Ð°ÑƒÑ‹ мүмкін Ñебебінен жөндеу керек етіп " "белгіленді. Олардың дұрыÑтығын текÑеруіңіз керек." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Бірде-бір жазбаны алдын-ала аудару мүмкін емеÑ." #: src/pretranslate.cpp:218 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 Ñіз қолмен аударған файлдардан жеткілікті ақпарат жинағаннан кейін " "ғана бұл жартылай автоматты аудармалар үшін пайдалы болады." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Қайнар көз мәтіні болмаған кезде алдын-ала аудару мүмкін емеÑ." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Ðлдын-ала аудару" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Ðлдын-ала аудару қайнар көз мәтінінің бар болуын талап етеді. Ðақты мәтін " "орнына тек ID қолданÑа, ол жаÑамайды." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "БелгіÑіз тілден алдын-ала аудару мүмкін емеÑ." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Ðлдын-ала аудару қайнар көз тілінің белгілі болуы талап етеді. Poedit оны " "бұл файлдан таба алмады." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Тек дәл ÑәйкеÑтіктерді толтыру" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "ҮнÑіз келіÑім бойынша, дәлÑіз нәтижелер де қоÑылады, бірақ, жөндеу керек " "етіп белгіленеді. Тек дәл ÑәйкеÑтіктерді қолдану үшін бұл опциÑны Ñ–Ñке " "қоÑыңыз." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Дәл ÑәйкеÑтіктерді жөндеу керек етіп белгілемеу" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Өзіңіздің ÐЖ ÑапаÑына Ñенімді болÑаңыз ғана Ñ–Ñке қоÑыңыз. ҮнÑіз келіÑім " "бойынша, ÐЖ ішінен келген барлық ÑәйкеÑтіктер жөндеу керек ретінде " "белгіленеді және оларды қолдану алдында текÑеру керек болады." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Ðлдын-ала аудару әрекеті аудармалар жадыÑынан аудармалары әлі жоқ жолдар " "үшін дәл немеÑе дәлÑіз ÑәйкеÑтіктерді тауып, олардың аудармаларын толтырады." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Ð‘Ð°Ñ Ñ‚Ð°Ñ€Ñ‚Ñƒâ€¦" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "ОÑында бумалар немеÑе файлдарды тартып әкеліңіз" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "ОÑында бумалар немеÑе файлдарды тартып әкеліңіз" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Бумаларды қоÑу…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Бумаларды қоÑу…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Файлдарды қоÑу…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Файлдарды қоÑу…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Шаблон бойынша қоÑу…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Шаблон бойынша қоÑу…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Finder ішінен көрÑету" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Explorer ішінен көрÑету" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Бумада көрÑету" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Жолдар" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Елемейтін жолдар" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "ЭкÑтракторлардың кеңейтілген баптаулары" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Ðудармашылар үшін пікірлерді қайдан алу:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Пікірлер префикÑÑ–:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Барлық пікірлер" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "ҚоÑымша xgettext жалаушалары:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "ҚоÑымша кілттік Ñөздер" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "КелеÑÑ– үшін аударма жобаÑының аталуы" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Топ аты және Ñл. пошта адреÑÑ– немеÑе ÑілтемеÑÑ–" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "мыÑ., nplurals=1; plural=0;" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (Ò±Ñынылады)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "Ðлдымен файлды Ñақтаңыз. Оған дейін бұл Ñанатты түзету мүмкін емеÑ." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Толтырғыштың дұрыÑтығы" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "“%s†толтырғышы аудармада жоқ." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "БаÑтапқы мәтінде жоқ артық “%s†толтырғышы." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Көпше түрі аудармалары" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Көпше түрлер толығымен аударылмаған." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Жоғарғы/төменгі региÑтр ÑәйкеÑÑіздігі" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Ðударма Ñөйлем ретінде баÑталуы тиіÑ." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Ðударма кіші әріптен баÑталуы тиіÑ." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Ð‘Ð¾Ñ Ð°Ñ€Ð°Ð»Ñ‹Ò›Ñ‚Ð°Ñ€ ÑәйкеÑÑіздігі" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Ðударма Ð±Ð¾Ñ Ð°Ñ€Ð°Ð»Ñ‹Ò›Ñ‚Ð°Ð½ баÑталып тұрған жоқ." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "" "Ðударма Ð±Ð¾Ñ Ð°Ñ€Ð°Ð»Ñ‹Ò›Ñ‚Ð°Ð½ баÑталады, ал, қайнар көз хабарламаÑÑ‹ одан баÑталмайды." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Ðударма Ñоңында жол таÑымалдауы жетпейді." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" "Ðударма жол таÑымалдаумен аÑқталады, ал, қайнар көз хабарламаÑÑ‹ оған " "аÑқталмайды." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Ðударма Ñоңында Ð±Ð¾Ñ Ð°Ñ€Ð°Ð»Ñ‹Ò› жетпейді." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "" "Ðударма Ð±Ð¾Ñ Ð°Ñ€Ð°Ð»Ñ‹Ò›Ð¿ÐµÐ½ аÑқталады, ал, қайнар көз хабарламаÑÑ‹ онымен " "аÑқталмайды." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Ð¢Ñ‹Ð½Ñ‹Ñ Ð±ÐµÐ»Ð³Ñ–Ð»ÐµÑ€Ñ–Ð½ текÑеру" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Ðударма \"%s\" мәнімен аÑқталуы тиіÑ." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Ðударма \"%s\" мәнімен аÑқталмауы тиіÑ." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "Ðударма \"%s\" мәнімен аÑқталады, ал қайнар көз хабарламаÑÑ‹ \"%s\" мәнімен " "аÑқталады." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Мәзірді тазарту" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Мәзірді тазарту" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "ТүÑіндірме:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Жаңарту" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "Ó¨&шіру" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "ТүÑіндірмені өшіру" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Жобаны түзету" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Жоба аты:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Шолу" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Тізімге буманы қоÑу" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "ОК" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Файл" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Жаңа…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "POT/PO &файлынан жаңа…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "POT/PO &файлынан жаңа…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "Ð&шу…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "СоңғыÑын ашу" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Жуырдағыны ашу" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Бұлттық аударманы ашу…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Бұлттық аударманы ашу…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "І&Ñке қоÑылу терезеÑÑ–" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "І&Ñке қоÑылу терезеÑÑ–" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Каталогтар &баÑқарушыÑÑ‹" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Каталогтар &баÑқарушыÑÑ‹" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "Жа&бу" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Сақтау" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Қала&йша Ñақтау…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Қала&йша Ñақтау…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "MO файлына компилÑциÑлау…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Жаңартуларды текÑеру…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Баптаулар…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Баптаулар" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Шығу" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Шығу" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Жекеше түрден көшіріп алу" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Жекеше түрден көшіріп алу" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Ðударма Ó©Ò£&деуді талап етеді" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Ðударма Ó©Ò£&деуді талап етеді" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Тү&Ñіндірмені түзету" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Тү&Ñіндірмені түзету" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Ò°ÑыныÑтар" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Табу…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "ÐлмаÑтыру…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "КелеÑÑ–" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Ðлдыңғы" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Табу және алмаÑтыру…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "КелеÑÑ–" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Ðлдыңғы" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Жол &ID көрÑету" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Жол &ID көрÑету" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "ЕÑкертулерді көрÑету" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "ЕÑкертулерді көрÑету" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "&Файлдар реті бойынша Ñұрыптау" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "&Файлдар реті бойынша Ñұрыптау" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Ба&Ñтапқы коды бойынша Ñұрыптау" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Ба&Ñтапқы коды бойынша Ñұрыптау" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Ðудар&ма бойынша Ñұрыптау" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Ðудар&ма бойынша Ñұрыптау" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "КонтекÑÑ‚ бойынша &топтау" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "КонтекÑÑ‚ бойынша &топтау" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Ðлдымен қателері бар нәрÑелер" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Ðлдымен қателері бар нәрÑелер" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Ðлд&ымен аударылмаған нәрÑелер " #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Ðлд&ымен аударылмаған нәрÑелер " #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "Код кездеÑулерін көр&Ñету" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "Код кездеÑулерін көр&Ñету" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Бүйір панелді көрÑету" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Қалып-күй жолағын көрÑету" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Ðударма" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&БаÑтапқы кодтан жаңарту" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&БаÑтапқы кодтан жаңарту" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Crowdin қызметімен Ñинхрондау" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Ðлдын-ала ау&дару…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "Ðудармаларды &текÑеру" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "Ðудармаларды &текÑеру" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Өшірілген аудармаларды жою" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "Ó¨&шірілген аудармаларды жою" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "ҚаÑ&иеттері…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "Ó¨&ту" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "Да&йын және келеÑÑ–" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "Да&йын және келеÑÑ–" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "ОÑыған дейін түзетілген" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "ОÑыған дейін түзетілген" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Ðлдыңғы аударма" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Ðлдыңғы аударма" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&КелеÑÑ– аударма" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&КелеÑÑ– аударма" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Ðлдыңғ&Ñ‹ аÑқталмаған" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Ðлдыңғ&Ñ‹ аÑқталмаған" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Келе&ÑÑ– аÑқталмаған" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Келе&ÑÑ– аÑқталмаған" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Ðлдыңғы көпше түрі" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Ðлдыңғы көпше түрі" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "КелеÑÑ– көпше түрі" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "КелеÑÑ– көпше түрі" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Же&лідегі көмек" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Же&лідегі көмек" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext нұÑқаулығы" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext нұÑқаулығы" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "Poedit Ñ‚&уралы" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&ОÑÑ‹ туралы" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "ЭкÑтрактор баптаулары" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Ðүктелі үтірмен ажыратылған кеңейтулер тізімі (мыÑ. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Шақыру:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Ðудармаларды шығарып алу командаÑÑ‹:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Бұл - ÑкÑтракторды жөнелту үшін қолданылатын команда.\n" "%o ÑˆÑ‹Ò“Ñ‹Ñ Ñ„Ð°Ð¹Ð» атын, %K кілттік Ñөздер\n" "тізімін, %F ÐºÑ–Ñ€Ñ–Ñ Ñ„Ð°Ð¹Ð»Ð´Ð°Ñ€ тізімін,\n" "ал, %C - кодталу жалаушаÑын (төменде қараңыз) білдіреді." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Кілт Ñөздер тізімінің біреуі:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Бұл жол әр кілт Ñөзі үшін командалық жолына қоÑылады.\n" "%k - кілт Ñөзімен алмаÑтырылады." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "ÐšÑ–Ñ€Ñ–Ñ Ñ„Ð°Ð¹Ð»Ð´Ð°Ñ€ тізімінің біреуі:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Бұл жол әр ÐºÑ–Ñ€Ñ–Ñ Ñ„Ð°Ð¹Ð»Ñ‹ үшін командалық жолына қоÑылады.\n" "%f - файл атымен алмаÑтырылады." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "БаÑтапқы код кодталуы:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Бұл жол баÑтапқы кодталу көрÑетÑе ғана командалық жолға\n" "қоÑылады. %c кодталу мәнімен алмаÑтырылады." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Ðударма қаÑиеттері" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Жоба аты мен нұÑқаÑÑ‹:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Тілдік топ:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Көпше түрлері:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Бұл тіл үшін үнÑіз келіÑім ережелерін қолдану" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Таңдауыңызша өрнекті қолдану" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Көпше түрлері жөнінде білу" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Кодтауы:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "ЭкÑтракторлардың кеңейтілген баптаулары…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "ЭкÑтракторлардың кеңейтілген баптаулары…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Ðударма қаÑиеттері" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "БаÑтапқы кодтар орналаÑу жолдары" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "БаÑтапқы кодтар орналаÑу жолдары" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "КелеÑÑ– бумалардағы баÑтапқы код файлдарынан мәтінді алу:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Ðегізгі жолы:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "БаÑтапқы код кілт Ñөздері" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "БаÑтапқы код кілт Ñөздері" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "КелеÑÑ– кілт Ñөздерді (функциÑлар аттары) баÑтапқы\n" "кодтарда аударылатын жолдарды тану үшін қолдану:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" "Сонымен қатар, үнÑіз келіÑім бойынша кілтÑөздерді қолдауы бар тілдер үшін " "қолдану" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Gettext кілттік Ñөздері туралы көбірек біліңіз" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Файлды ашу" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Файлды Ñақтау" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "ТекÑеру" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Ðударманы қателерге текÑеру" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Кодтан жаңарту" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Кодтан жаңарту" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "БаÑтапқы кодтан жаңарту" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Бүйір панелі" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Бүйір панелін көрÑету/жаÑыру" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Бұрынғы қайнар көз мәтіні" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "ДәлÑіз аударма ÑÓ™Ð¹ÐºÐµÑ ÐºÐµÐ»ÐµÑ‚Ñ–Ð½ еÑкі баÑтапқы код мәтіні (жаңарту кезінде " "өзгергенге дейін)." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Ðудармашылар үшін еÑкертулер" #: src/sidebar.cpp:196 msgid "Comment" msgstr "ТүÑіндірме" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Пікір қоÑу" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Пікір қоÑу" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Ðудармалар жадыÑынан өшіру" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Ðудармалар жадыÑынан өшіру" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Ðудармаға Ò±ÑыныÑтары" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "СәйкеÑтік табылмады" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "СәйкеÑтік табылмады" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Бұл жол Poedit-тің аудармалар жадыÑÑ‹ ішінен табылды." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Ðударма Ò±ÑыныÑтары қайнар көз мәтінінің бар болуын талап етеді. Ðақты мәтін " "орнына тек ID қолданÑа, ол жаÑамайды." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Ðударма Ò±ÑыныÑтары қайнар көз тілінің белгілі болуы талап етеді. Poedit оны " "бұл файлдан таба алмады." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Бағдарламаны орындау мүмкін емеÑ: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX файлының пішімі жарамÑыз." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Ðудармалар жадыÑÑ‹ дерекқоры зақымдалған: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Ðударма жадыÑÑ‹ қатеÑÑ–: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Ðегізгі тілді қолдану)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Тілді таңдау" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Өз тіліңізді таңдаңыз" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "ӨзгеріÑтерді Ñ–Ñке аÑыру үшін Poedit-ті қайта Ñ–Ñке қоÑыңыз." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Уақытша буманы жаÑау мүмкін емеÑ." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Ðудармалар жоқ. Бұл әдепкі жағдай ÐµÐ¼ÐµÑ ÑиÑқты." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Бұл файлды аудармалармен толтырудың ең оңай жолы - оны POT файлынан жаңарту:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "POT файлынан жаңарту" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Ðударуға келетін жолдарды тікелей бар болып тұрған POT үлгіÑінен алу." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Сонымен қатар, Ñіз аударуға келетін жолдарды тікелей баÑтапқы кодтардан " "шығара алаÑыз:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "БаÑтапқы кодтардан алу" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Баптаулар ішінен баÑтапқы кодтан аудармаларды шығарып алуды баптаңыз." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "%s нұÑқаÑÑ‹" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "ЖаңаÑын жаÑау" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "POT файлынан жаңа аударманы жаÑау." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Файлдарды шолу" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Ðудармалар файлдарын ашу және түзету." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Бұлттық жобаны аудары" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "БаÑқа адамдармен бірігіп онлайн Ð¶Ò±Ð¼Ñ‹Ñ Ð¶Ð°Ñаңыз." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Жуырдағы файлдар" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Синхрондау" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Ðударманы Crowdin қызметімен Ñинхрондау" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "%s туралы" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s баптаулары" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "%s туралы" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Қызметтер" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "%s жаÑыру" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Қалғанын жаÑыру" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Барлығын көрÑету" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "%s шығу" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Баптаулар…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Баптаулар..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Баптаулар..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "ІÑке &аÑыру" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "ІÑке аÑыру" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Ðртқа" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Ðртқа" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Ð‘Ð°Ñ Ñ‚Ð°Ñ€Ñ‚Ñƒ" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Тазарту" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Тазарту" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Көшіру" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Òš&иып алу" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Қиып алу" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Түзету" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Шығу" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Көмек" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Жаңа" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Жаңа" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Жоқ" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Жоқ" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&ОК" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Ðшу…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "Ð&шу..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Ðшу..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&КіріÑтіру" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "КіріÑтіру" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Баптаулар" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "Қа&йталау" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Жаңарту" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "Қалайша &Ñақтау" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Қалайша Ñақтау" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Б&арлығын таңдау" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Барлығын таңдау" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Болдырмау" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Иә" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Иә" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Жоғары" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Төмен" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Сол жақ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Оң жақ" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/vi.mo0000644000175100001660000016040515011674352011100 Þ•…D_l(è5 é5 õ5&6'6<;6x6J‹6gÖ6 >7H7 W7a7 h7v7}7ƒ7‹7’7™7Ÿ7§7¶7Å7Ë7Ñ7Ú7î7888*80858=8E8W8i8m8 q8 ~8‹8”88 ¤8±8Á8×8í8ü8949:9@9I9O9 X9 f9 t99‡9£9¿9Ø9ñ9::%:*:A:Q: o: {:…:Ž:–:Ÿ: £: ¯:¼: Ë:×: ç:ó: ;; );5;E;Y;t;};;º;Ú; ð; ý;1 <';<c<€< š<¥<7«<6ã<=):=d= i=]t=Ò=<å=D">$g>Œ> “> > §>"µ>Ø>+ó>)? I?T?f?x?‰?œ?¥?¸?Ô?ð?#@)@>@M@ S@^@ p@{@@“@¤@%µ@Û@ ö@AA(A@A QA_A/zA ªAk·A#B(B;BQBdBzB-™B1ÇBùB CC)4C^C ~CŒC‘C¤C·CÌCÐCçCîC DD=DLD_D;rD ®D'»D^ãD?BE ‚E EE*°EÛE"îE5FGFbF}FƒF ˆF –F ¤F ±F ¾FËFÜFäFìFóFfGlG†Gu GH)H";H^H eHpHH HH¯H0ÀHñH I# I<DII ‘I*œI0ÇI!øI'JBJGJ]J(|JT¥JúJ ÿJ KK+K`N`^` q` ~`Œ``¬` Å`Ò`â` ò`aaaa !a/aHa[ata}a†a —a ¤a °a½aÑaáaöa bb/b†DbËbæb übcc ,c:c KcYcK`c¬cÁc ÐcÞcócdd18djd yd ‡dŽ“d"e¢e§e(¹eâe êeøe+fAf Df8Nf"‡fªf»f~gC™g8ÝgîhŸi8¥i1ÞiRjccjQÇjk'4k:\kl—kPl-UlCƒlAÇlK m0Um.†m޵m!Dn)fn-n+¾n8ênC#ougo,ÝoL p]Wp…µpJ;q[†q«âq7ŽrmÆr_4s[”sðsöst #t/tDtWtot2†t"¹tÜtôt u#uˆ6u¿uÃu×u Üuýuv'v/v 6v"Av$dv‰v¢v»vÌvÜvívwww,wBw$_w„w¤w¾wÔwêw#xV+x‚x™x¢x µxÀxÞxðx yy#y.+y Zyfyoy‡yH‹y5Ôym z7xz °z3ºzaîzP{U{Z{.w{ ¦{Ç{ã{||-|?|R|d|w|‹|›|¬|¾|Ñ|ê|}}=}U}n}‡}}®}Ç}!×}¤ù} ž ¬ºÕ'Þ€(€Q8€Š€œ€«€½€Í€ é€ õ€  "'-L kx€0‰0ºëú‚ ,‚9‚ @‚J‚Y‚s‚‚ •‚¡‚½‚Ù‚â‚ë‚ñ‚ƒƒ+ƒBƒ#Tƒ#xƒœƒ ¤ƒ °ƒ¼ƒ ƒ̓çƒ „ „ „ <„]„|„›„´„ ̈́ڄ!á„…%… ?…K…_… v… ƒ……–…©…¼…Ð…ß…ÿ… †3†F†Z†i†‰†ž† ¸†$†!ç†$ ‡&.‡U‡m‡]€‡-Þ‡= ˆ1Jˆ |ˆ ˆˆ7“ˆEˈ$‰/6‰ f‰q‰k‹‰÷‰WŠNkŠ,ºŠçŠïŠ ‹ ‹$‹*@‹Bk‹?®‹ î‹ù‹Œ+ŒCŒ^ŒsŒ(Œ$¸ŒÝŒ)øŒ"= Z fp ƒ §¿8×*Ž+;Ž gŽ tŽ!ޣ޻Ž6ÐŽAI³Z 0Kc~88Ö‘ /‘;‘(T‘!}‘ Ÿ‘­‘´‘Í‘ æ‘’6 ’ D’#N’r’#Œ’ °’¾’Ð’<ã’ “/,“¥\“Z” ]” j”#v”Fš”á”0û”A,•/n•/ž•Ε Ö•â•õ•––,–C–Z–n––†–’ž–1—N—šk—˜˜0˜P˜ V˜b˜˜’˜¤˜¸˜9˘™!™.9™Mh™¶™Ι2ã™CšZš2xš «š$µš"Úš8ýšu6›¬› ±› ½›Ç›Þ›"õ›œ 1œ =œGœYœrœ†œšœ ³œ½œ Úœ æœòœ  #<7VŽ ‘㛞Ÿ!ˆŸªŸ½ŸÔŸçŸ!þŸ  #* -N $| !¡  àÏ  ë ù  ¡¡D7¡5|¡²¡Ò¡ë¡ þ¡ ¢2¢&Q¢x¢Š¢¤¢Mâ£W$£|£CŽ£Ò£ â£7ì£"$¤G¤ _¤!m¤ ¤&™¤À¤Ƥå¤ ¥¥&!¥H¦%N¦%t¦ 𦍦À¦ئ#ߦ4§w8§°§1ϧV¨!X¨Hz¨=è"© $©/©É5©/ÿ©/ªIª-ZªˆªŸª¹ªȪ誫#«+« 3«?«"E«"h«‹«Ÿ«´¯«d¬i¬€¬W¬è¬k­n­ î­lû­h®ƒ®Š®V¦®Jý®#H°<l±1©±Û±ï±ÿ±(²/8²h²®² 0³<³N³"`³0ƒ³´³ѳ î³´+´%G´m´ |´†´´ ¥´F±´ø´?ÿ´?µ Uµ `µkµµ—µ ¦µ ²µ½µÔµëµ þµ8 ¶E¶&Y¶™€¶· +·5· :· H· V· a· l· v·ƒ·”·£·¼·Ï·'á· ¸¸49¸n¸ˆ¸¦¸¹¸̸Û¸"ó¸¹1¹J¹b¹€¹™¹µ¹#Ó¹÷¹º*ºCº\º nº |º Šº˜º*®ºÙº*ôº »-»=»X»w»»&¨»!Ï» ñ»&¼!9¼ [¼|¼·œ¼T½r½‘½¤½½Õ½ í½¾ *¾b5¾˜¾´¾ ƾ&Ò¾ù¾¿/¿-K¿y¿ Œ¿ —¿Ã¤¿¸hÀ !Á.Á'IÁ qÁ~Á/‘ÁBÁÁ ÂLÂ,bÂÂî¥Â”Ãb³Ã`ÄgwÄÔßÅM´Æ>džAÇ¡ÈÇŸjÈ) É4ÉHRÉš›Éc6Ê9šÊWÔÊW,ËX„Ë4ÝËBÌXUÌ0®Ì)ßÌ0 Í3:ÍDnÍX³Í§ ÎN´ÎIÏqMÏÆ¿Ïj†ÐñÐqÑM‚Ò˜ÐÒ†iÓuðÓ fÔ tÔ‚Ô  Ô­ÔÆÔâÔÕDÕ)\Õ†Õ¦ÕÁÕÖÕ¡êÕŒÖÖ£Ö(¼ÖåÖ"÷Ö × '×3×3K×<×#¼×#àרØ:ØPØ/nØ žØ «ØÌØ/ìØ/Ù#LÙpÙ‹Ù+«Ù8×Ù8ÚƒIÚÍÚ ëÚöÚÛÛ9ÛYÛ"wÛ šÛ¥ÛG´ÛüÛ ÜÜ6Üq<ÜX®Ü…ÝPÝ ÞÝLéÝž6Þ ÕÞ áÞ ëÞ.öÞ%%ßKß,hߕ߲߸ßÀ߯ßÌßÓßÚßßßãßèßîßà à&à 8à BàNàfà~à,˜àÅà/Õà…iZVïŽuŽû nÈ/4½A3ëe CÓ[µ<³‡ÒnËTt]ן¦S~tvF×i˜;P ÀÉ¢‡æ¡M~)“wucà9 ƒÜJ{ãP¸œ„ö<O!€acšf6ÖvY¥ãB®–F-ý}Ú¾1õ°ëZÕ}—E8oÄ .1RÇÞ_ØŒÆ>¦¿á=Wƒ^rêQ~úM4ĵž—8ÿ†=ªÑ'ý/% \É+|VSm$! §,»2òÃx¤ŠO¢NI@[Ú?©|º"-IR¥A°¶h­¾±Yp^»Õ,Î7¬„Áßšœ‘ø·•ä \Nj§a_ /®€Ê”ü[l\ƒþñSà)ù¯™ñ ä+gD8jd¹·ÌrÓ{‹ÿ å£èdÊ–QÖЫê#!º‹…φ1éÃGçbH0? b"3ïP^K“™ô›ÛHUU ìç]*íw¬Bì´=¤>2žNo5ŒkKöÞzî’Gq’fdþk€6`O‰ªsqpÁ$Ì,ÒnÐ_LáL@Ô] ¹XŠcz#¶b‚âûèòÙ(v&(Ýee%I?ür¨CmM‚7yx|qÙôZ½©Í #Ô<¯¸twp:ŸÏDhzB:¨T;«•(yGú˜ îÀ­ð*ˆm*h²sKAâVù W)Rjó0'`Cu‰´H„g£íiÅ55&ÑÆJ‚³k"&¼fé÷Ü'a%W7Å{JosEX9U.2 Øg›Û.`Q9…”yõl;-Î>±ÇæYxÍËÂFåß4ø÷óX0+L$6²È‘Âð:EDˆ}3¿lTÝ ¼¡@ (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesCancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishMO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Please open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.UntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Vietnamese Language: vi_VN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: vi X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (đã sá»­a) (chưa lưu)%d lần xuất hiện mã%d mục%d mục đã được dịch trước.%d lá»—iTìm thấy trong bản dịch %d lá»—i.dòng %i cá»§a tập tin '%s' đã không được tải má»™t cách chính xác.Äịnh dạng %sCấu hình %sđịnh dạng %s&Giá»›i thiệu&Giá»›i thiệu vá» Poedit&Ãp dụng&Quay lại&Há»§y bá»&Dá»n dẹpÄó&ng&Sao&Xóa&Thá»±c hiện và làm tiếp&Thá»±c hiện và làm tiếp&Biên tập&Chính&Tìm…Sổ tay hướng dẫn sá»­ dụng &GNU gettextSổ tay hướng dẫn sá»­ dụng &GNU gettextNhả&y đếnNhóm Theo N&gữ CảnhNhóm theo n&gữ cảnhT&rợ giúp&Má»›i&Má»›i…&Tiếp theo >Bản Dịch &Kế TiếpBản dịch &kế tiếp&Không&Äồng ýTrợ Giúp &Trá»±c tuyếnTrợ giúp &trá»±c tuyến&Mở...&Mở…&Dán&Cá nhân hóa&Cá nhân hóa…Bản Dịch &TrướcBản dịch &Trước&Thuá»™c tính…&Thanh lá»c các chuá»—i đã xóa&Thanh lá»c các chuá»—i đã xóa&Thoát&Làm lạiT&hay thế&Lưu&Lưu nhưCá»­a sổ khởi độngCá»­a sổ khởi động&Bản dịch&Hoàn tácMục &chưa dịch đầu tiênMục &chưa dịch đầu tiên&Cập nhật từ mã nguồn&Cập nhật từ mã nguồn&Thẩm tra bản dịch&Thẩm tra bản dịch&Trình bày&Vâng(Dùng ngôn ngữ mặc định)(chưa đăng nhập)(yêu cầu Windows 8 hay má»›i hÆ¡n)< &TrướcGiá»›i thiệu vá» %sTài khoảnTài khoảnThêmThêm Bình LuậnThêm Tệp Tin…Thêm Thư Mục…Thêm dá»± ánThêm ký tá»± đại diện…Thêm bình luậnThêm thư mục vào danh sáchThêm tệp tin…Thêm thư mục…Thêm dá»± ánThêm ký tá»± đại diện…Từ khoá bổ xungBổ sung cá» xgettext :Nâng caoCài Äặt Giải Nén Nâng Cao…Cài đặt giải nén nâng caoCài đặt giải nén nâng cao…Tất Cả Các Tập Tin Bản DịchTất cả bình luậnTất cả chuá»—iCÅ©ng có thể sá»­ dụng từ khóa mặc định cho các ngôn ngữ được há»— trợLuôn luôn để focus vào ô nhập liệuMá»™t mục tin trong danh sách các tập tin nguồn vào:Má»™t mục tin trong danh sách các từ khóa:Giao diệnÃp dụngBạn có chắc muốn xóa trình trích xuất "%s"?Bạn có chắc bạn muốn đặt lại bá»™ nhá»› dịch thuật?Tá»± động kiểm tra cập nhậtTá»± động biên dịch tập tin MO khi lưuQuay lạiÄÆ°á»ng dẫn cÆ¡ sở:Phiên bản beta chứa các tính năng và cải tiến má»›i nhất, nhưng có thể ít ổn định.Mang Tất Cả ra TrướcTập tin PO há»ng: dạng số nhiá»u msgstr sá»­ dụng mà không có msgid_pluralTập tin PO há»ng: dạng số ít msgstr mà sá»­ dụng vá»›i msgid_pluralÄánh dấu bị gãy trong chuá»—i dịch.DuyệtDuyệt tệp tinHá»§y bá»Äang há»§y…Không thể tạo thư mục tạm.Không thể thi hành chương trình: %sKhông thể dịch trước từ ngôn ngữ không xác định.Không thể dịch trước mà không có văn bản nguồn.Viết Hoa&Quản lý các catalog&Quản lý các catalogQuản lý các catalogThay đổi ngôn ngữ UIBảng mã ký tá»±:Kiểm Tra Tài Liệu NgayKiểm Tra Ngữ Pháp Vá»›i Chính TảKiểm Tra Chính Tả Trong Khi GõKiểm tra cập nhật…Tìm kiếm các lá»—i trong bản dịchKiểm tra cập nhật…Kiểm tra lá»—i chính tảDá»n dẹpXóa menuXóa phần dịchXóa menuXóa phần dịchÄóngLần xuất hiện mãLần xuất hiện mãCá»™ng tác trá»±c tuyến vá»›i những ngưá»i khác.Äang thu thập các tập tin nguồn…Lệnh để giải nén các bản dịch:Bình luậnChú thích:Bình luận bắt đầu bằng:Biên dịch sang MO…Biên dịch sang…Các tập tin bản dịch đã được biên dịchCấu hình việc rút trích mã nguồn trong `Thuá»™c tính'.Sá»± xác thá»±cKết nối Poedit vá»›i các ná»n tảng bản địa hóa đám mây được há»— trợ để đồng bá»™ hóa liá»n mạch các bản dịch được quản lý trên đó.Sao chépSao chép từ số ítChép từ chuá»—i nguồnSao chép từ số ítChép từ chuá»—i nguồnSá»­a Chính Tả Tá»± Äá»™ngKhông thể tải xuống chi tiết dá»± án Localazy.Không thể tải tập tin, có thể nó bị há»ng.Không thể lưu tập tin %s.Tạo má»›iTạo bản dịch má»›iTạo bản dịch má»›i từ mẫu POT.Tạo má»™t dá»± án dịch má»›iCrowdin lá»—iCắ&tTùy Chá»n Giải Nén:Tùy chá»n giải nén:Tùy Chỉnh Thanh Công Cụ…CắtKích thước cá»§a cÆ¡ sở dữ liệu trên đĩa:Xóa bá»Xóa từ bá»™ nhá»› dịch thuậtXóa trình trích xuấtXóa từ bá»™ nhá»› dịch thuậtXóa dá»± ánXóa bình luậnXóa bá» dá»± ánXóa dá»± án sẽ không xóa bất kỳ tệp dịch nào.Thư mục:Bạn có muốn xóa dá»± án “%s†không?Bạn có muốn tải lại tập tin từ ổ đĩa không? Các chỉnh sá»­a chưa được lưu cá»§a bạn trong Poedit sẽ bị mất nếu bạn làm vậy.Bạn có muốn loại bá» tất cả các chuá»—i không còn sá»­ dụng nữa không?Khô&ng lưuKhông LưuKhông hiển thị lần sau nữaKhông đánh dấu các từ khá»›p chính xác là cần làm việcKhông hiển thị lạiÄang tải xuống bản dịch má»›i nhất…Tải vá» bản dịch bị vô hiệu hóa trong dá»± án này.Kéo các thư mục hoặc tập tin ở đâyKéo các thư mục hoặc tập tin ở đâyThoá&tBiên tậpSá»­a &chú thíchSá»­a &chú thíchSá»­a chú thíchSá»­a chú thíchChỉnh sá»­a dá»± ánChỉnh sá»­a dá»± ánÄang chỉnh sá»­aChỉnh sá»­a…Email:Nhập Toàn Màn HìnhCác mục nhập trong tập tin này có các dạng số nhiá»u khác nhau so vá»›i tiêu đỠDạng số nhiá»u cá»§a tập tin cho biếtMục Có Lá»—i Äầu TiênMục có lá»—i đầu tiênCác mục có lá»—i được đánh dấu màu đỠtrong danh sách. Chi tiết vá» lá»—i sẽ hiển thị khi bạn chá»n mục tương ứng đó.Lá»—i mở tập tinLá»—i lưu tập tinLá»—i khi tải tệp XLIFF: %sLá»—iMá»i thá»©ÄÆ°á»ng dẫn loại trừXuất sang TMX…Xuất ra như…Xuất sang HTML…Xuất sang TMX…Xuất bá»™ nhá»› bản dịch ra "%s" đã thất bại.Xuất các bản dịch…Trích từ mã nguồnGiải nén ghi chú cho ngưá»i dịch từ:Trích xuất văn bản từ mã nguồn trong những thư mục sau đây:Thiết lập ExtractorTrình trích xuấtKhông thể giao tiếp vá»›i quá trình Poedit.Lá»—i nạp tập tin vá»›i các bản dịch được giải nén.Lá»—i trá»™n catalog gettext.Gặp lá»—i khi cập nhật bá»™ nhá»› dịch: %sTập tinTập tin không thể mở đượcTập tin "%s" không tồn tại.Tập tin "%s" không phải là má»™t tập tin dịch.Tệp tin %s chỉ cho phép Ä‘á»c và không thể lưu lại được. Xin hãy lưu lại vá»›i má»™t tên khác.TìmTìm tiếpTìm lùiTìm và Thay thế…Tìm trong chú thíchTìm trong các văn bản nguồnTìm trong phần dịchTìm tiếpTìm lùiSá»­a ngôn ngữSá»­a chữa ngôn ngữSá»­a Phần ÄầuSá»­a phần đầuTập tin dịch FlutterDạng %iForm %i (không sá»­ dụng)GNU gettextTổng quanTập tin HTMLTrợ giúpẨn Thanh Công CụẨn Thanh Trạng TháiẨn thông báo này Ä‘iÄồng bá»™ đám mây hoạt động như thế nào?IDNếu bạn vẫn muốn thanh lá»c, tất cả các chuá»—i dịch mà được đánh dấu là đã xoá sẽ bị gỡ bá» hoàn toàn khá»i tập tin. Bạn sẽ phải dịch lại chúng nếu ngưá»i lập trình sá»­ dụng lại nó trong tương lai.Nếu trước đây bạn đã từ chối quyá»n truy cập vào tệp cá»§a mình, bạn có thể cho phép nó trong Tùy chá»n hệ thống > Bảo mật và quyá»n riêng tư > Quyá»n riêng tư > Tệp & thư mục.Lá» Ä‘iKhông phân biệt HOA/thưá»ngNhập từ TMX…Nhập tệp dịch…Nhập từ TMX…Nhập tệp dịch…Äang nhập các bản dịch…Trong: %sBao gồm cả bản thá»­ nghiệmChữ hoa/chữ thưá»ng không nhất quánKhoảng trắng không nhất quánThông tin vá» các dịch giảCài đặtTập tin không hợp lệLệnh gá»i:Tập tin dịch JSONGiữ lạiTên ngôn ngữ hoặc mãNgôn ngữ cá»§a bản dịch là giống như ngôn ngữ nguồn.Ngôn ngữ cá»§a bản dịch chưa được đặt.Ngôn ngữ cá»§a bản dịch:Lá»±a chá»n ngôn ngữNhóm ngôn ngữ:Ngôn ngữ:Lần sá»­a cuốiHá»c thêm vá» các từ khóa cá»§a GNU gettextTìm hiểu dạng thức số nhiá»uTìm hiểu thêmTìm hiểu thêm vá» %sTìm hiểu thêm vá» CrowdinDòng %d cá»§a tập tin '%s' bị há»ng (dữ liệu không hợp lệ %s).Dòng kết thúc:Danh sách Ä‘uôi tập tin ngăn cách bởi dấu chấm phẩy (ví dụ *.cpp;*.h):Tải tiếng AnhTập tin MO không thể chỉnh sá»­a trá»±c tiếp trong Poedit.Chữ thưá»ngChữ HOATạo má»™t bản dịch má»›i từ tập tin POT này.Phần đầu dị hình: “%sâ€Quản lý tài khoảnQuản lý…Äang trá»™n các khác biệt…Thu nhá»Tên cá»§a dá»± án cá»§a bản dịchTên:Câu chưa dịch &tiếp theoCâu chưa dịch &tiếp theoCần làmCần làm việcÄừng bao giỠđể danh sách chuá»—i nhận focus. Nếu cho phép, bạn phải sá»­ dụng Ctrl-Phím mÅ©i tên để có thể di chuyển bằng bàn phím nhưng bạn lại có thể nhập chữ má»™t cách trá»±c tiếp, mà không cần phải nhấn Tab để thay đổi focus.Má»›iTạo Má»›i Từ Tệp Tin &POT/PO…Tạo má»›i từ tệp tin &POT/PO…Chuá»—i má»›iDạng số tiếp theoDạng số tiếp theoKhôngKhông tìm thấy các từ khá»›pKhông có mục có thể được trước dịch.Không có thông tin vá» sá»± xuất hiện cá»§a chuá»—i này trong mã nguồn được cung cấp trong tập tin.Không tìm thấy từ khá»›pKhông tìm thấy lá»—i nào trong bản dịch.Không có dá»± án dịch thuật được liệt kê trong tài khoản cá»§a bạn.Không có thông tin sá»­ dụngKhông phải tất cả các hình thức số nhiá»u được dịch.Không có thẩm quyá»n, xin vui lòng đăng nhập lại.Ghi chú dành cho ngưá»i dịchÄồng ýMá»™tChỉ cho phép nếu bạn tin tưởng chất lượng TM cá»§a bạn. Theo mặc định, tất cả các từ khá»›p từ TM được đánh dấu là cần làm việc và nên được xem lại.Chỉ Ä‘iá»n vào các từ khá»›p chính xácMở dịch đám mây…Mở gần đâyMở và chỉnh sá»­a các tập tin dịch.Mở dịch đám mâyMở dịch đám mây…Mở tập tinMở trong Trình Soạn ThảoMở trong trình soạn thảoMở tập tin gần đâyMở...Mở…Tùy chá»nKhácCâu cần dịch liá»n t&rướcCâu cần dịch liá»n t&rướcPO Dịch Tập TinPO Dịch MẫuCác tập tin POT chỉ là các mẫu và không chứa bất kì bản dịch nào cá»§a chính chúng. Äể tạo 1 bản dịch, tạo 1 tập tin PO má»›i dá»±a trên mẫu.DánDán và Khá»›p KiểuÄÆ°á»ng dẫnThá»±c hiện cập nhật từ mã nguồn trên tất cả các tệp trong dá»± án.Quyá»n bị từ chối.Hãy mở và chỉnh sá»­a các tập tin PO. Khi bạn lưu nó, tập tin MO sẽ được cập nhật.Vui lòng lưu tập tin này trước. Phần này không được chỉnh sá»­a cho đến khi tập tin được lưu lại.Số nhiá»uBiểu thức dạng số nhiá»u được tập tin sá»­ dụng là không bình thưá»ng đối vá»›i %s.Hình thức số nhiá»u:PoeditPoedit - Quản lý catalogPoedit đã tá»± động sá»­a các ná»™i dung không hợp lệ trong tập tin "%s".Poedit có thể cố gắng để Ä‘iá»n vào mục má»›i từ bản dịch trước đó trong tập tin hoặc từ toàn bá»™ bá»™ nhá»› dịch cá»§a bạn. Sá»­ dụng TM sẽ không thể hiệu quả nếu nó gần như trống rá»—ng, nhưng nó sẽ trở nên tốt hÆ¡n khi bạn thêm nhiá»u bản dịch vá»›i nó.Poedit không thể hiển thị mã nguồn nÆ¡i chuá»—i được sá»­ dụng, bởi vì các tập tin hoặc là không có sẵn trong các vị trí tham chiếu hoặc nó là má»™t tài liệu tham khảo mang tính biểu tượng mà không trỠđến má»™t tập tin thá»±c sá»±.Poedit rất dá»… dùng cho việc biên tập bản dịch.Poedit đã không thể mở tập tin “%sâ€.Dịch &trước…Dịch trướcDịch trướcChuá»—i %u đã được dịch trướcÄang dịch trước từ bá»™ nhá»› dịch…Äang dịch trước…Bản dịch tá»± động tìm kiếm kết hợp chính xác hoặc làm má» cho các chuá»—i chưa dịch trong bá»™ nhá»› dịch và Ä‘iá»n vào bản dịch cá»§a há».Tùy chá»nCá nhân hóa...Cá nhân hóa…Äang chuẩn bị các chuá»—i…Duy trì định dạng cá»§a tập tin đã cóDạng số nhiá»u trướcDạng số nhiá»u trướcVăn bản nguồn trước đóChỉnh sá»­a trước đóChỉnh sá»­a trước đóTên và phiên bản cá»§a dá»± án:Tên dá»± án:Dá»± án:Dá»± ánKiểm tra dấu câuThanh lá»cXóa bá» các chuá»—i dịch bị đánh dấu là không dùng nữaThoátÄá»c ná»™i dung tệp không thành công vá»›i lá»—i sau: %sTập tin gần đâyLàm lạiLàm má»›iTải lại tập tinTải lại tập tinCòn lại: %dLoại bá»Thay thếThay Thế &Tất CảThay Thế &tất cảThay thế chuá»—iThay thế…Phần đầu Plural-Forms đã yêu cầu bị thiếu.Thiết lập lạiÄặt lại bá»™ nhá»› dịch thuậtÄặt lại bá»™ nhá»› dịch thuật sẽ xóa bá» tất cả bản dịch được lưu trữ từ nó. Bạn không thể hoàn tác thao tác này.Xem trong FinderXem lạiLưuLưu &Như…Lưu &như…Vẫn LưuVẫn lưuLưu nhưLưu như…Lưu thay đổiLưu tập tinẢnh chụp màn hình:Chá»n &Tất CảChá»n Tất cảChá»n má»™t tập tin TMX để nhậpChá»n thư mụcChá»n tập tin bản dịchChá»n các tập tin bản dịch để nhập vàoChá»n mẫu bản dịchChá»n ngôn ngữ ưa thíchÄặt ngôn ngữÄặt ngôn ngữCài đặt…Hiện thanh công cụHiện Chính Tả và Ngữ PhápHiển Thanh Trạng TháiHiển thị &ID chuá»—iHiển Thị Thay ThếHiển Thị Thanh Công CụHiển thị cảnh báoHiển thị trong ExplorerHiển thị trong Thư mụcHiện hoặc ẩn thanh công cụHiện thanh công cụHiển thanh trạng tháiHiển thị &ID chuá»—iHiển thị cảnh báoThanh tiện íchÄăng NhậpÄăng XuấtÄăng nhậpÄăng nhập vào %sÄăng nhập vào tài khoản đám mâyÄăng nhập vào CrowdinÄăng nhập vào tài khoản đám mâyÄăng xuấtDạng số ítSao Chép/Dán Thông MinhDấu Gạch Ngang Thông MinhLiên Kết Thông MinhTrích Dẫn Thông MinhSắp xếp theo thứ tá»± &Tập tinSắp xếp theo &chuá»—i nguồnSắp xếp theo chuá»—i &dịchSắp xếp theo thứ tá»± &tập tinSắp xếp theo &chuá»—i nguồnSắp xếp theo chuá»—i &dịchBảng mã dữ liệu nguồn:Trình giải nén mã nguồn được dùng để tìm các chuá»—i có thể dịch trong các tập tin mã nguồn và giải nén nó vì thế chúng có thể được dịch.Mã nguồn không có sẵn.Không tìm thấy mã nguồnVăn bản nguồnMã nguồn văn bản — %sNguồn từ khóaÄÆ°á»ng dẫn nguồnTừ khóa dùng cho mã nguồnÄÆ°á»ng dẫn mã nguồnLá»i nóiKiểm tra chính tả bị vô hiệu, bởi vì từ Ä‘iển cho %s không được cài đặt.Chính Tả và Ngữ PhápBắt Äầu NóiDừng NóiCác bản dịch được lưu trữ:Ngữ cảnh chuá»—i: %sMã định danh chuá»—i: %sÄá»™ dài chuá»—i ký tá»±Äá»™ dài chuá»—i ký tá»±: dịch | nguồnChuá»—i cần tìmThay ThếÄá» xuấtGợi ý không có sẵn nếu ngôn ngữ bản dịch không được thiết lập đúng. Các tính năng khác, chẳng hạn như hình thức số nhiá»u, có thể bị ảnh hưởng.Há»— trợ tất cả các ngôn ngữ lập trình được công nhận bởi công cụ GNU gettext (PHP, C/c + +, C#, Perl, Python, Java, JavaScript và những ngôn ngữ khác).Äồng bá»™Äồng bá»™ vá»›i CrowdinÄồng bá»™ bản dịch vá»›i CrowdinÄồng bá»™Lá»—i đồng bá»™Äồng bá»™ vá»›i Crowdin không thành công.Cú pháp lá»—i trong khai báo phần đầu Plural-Forms ("%s").TMTập tin TMXLấy các chuá»—i có thể dịch được từ má»™t mẫu POT sẵn có.Tên nhóm và địa chỉ email hoặc URLThay Thế Văn BảnTM không chứa bất kỳ chuá»—i tương tá»± cho ná»™i dung cá»§a tập tin này. Nó là chỉ có hiệu lá»±c cho các bản dịch bán tá»± động sau khi Poedit há»c đủ từ các tập tin mà bạn đã dịch thá»§ công.Tập tin TMX bị sai dạng.Các thay đổi được thá»±c hiện bởi ứng dụng khác sẽ bị mất nếu bạn lưu.Các tập tin không thể được biên dịch thành các định dạng MO và sá»­ dụng.Tập tin chứa các mục trùng lặp, mà không được cho phép trong các tập tin PO và sẽ ngăn chặn các tập tin được sá»­ dụng từ chúng. Poedit đã sá»­a vấn Ä‘á», nhưng bạn nên xem lại các bản dịch cá»§a bất kỳ mục nào được đánh dấu là cần làm việc và sá»­a lại chúng nếu cần thiết.Không thể lưu tập tin trong bá»™ ký tá»± “%s†như được chỉ định trong cài đặt dịch. Tập tin đã được lưu trong UTF-8 và cài đặt đã được sá»­a đổi cho phù hợp.Tập tin đã được sá»­a đổi. Bạn có muốn lưu các thay đổi?Tệp có định dạng không được Poedit nhận dạng.Các tập tin được biên dịch vào các định dạng MO, nhưng nó sẽ có lẽ không làm việc má»™t cách chính xác.Các tập tin được lưu má»™t cách an toàn và biên soạn thành định dạng MO, nhưng nó sẽ có lẽ không làm việc má»™t cách chính xác.Tập tin đã được lưu má»™t cách an toàn, nhưng nó không thể được biên dịch thành định dạng MO để có thể sá»­ dụng được.Tệp được lưu má»™t cách an toàn.Tệp "%s" không thể mở.Tập tin “%s†đã bị thay đổi bởi má»™t ứng dụng khác.Các nguồn văn bản cÅ© (trước khi nó thay đổi trong quá trình cập nhật) mà bản dịch hiện thá»i không chính xác tương ứng.Cách đơn giản nhất để Ä‘iá»n bản dịch vào tệp này là cập nhật nó từ POT:Bản dịch không bắt đầu vá»›i má»™t dấu cách.Bản dịch kết thúc vá»›i má»™t dòng má»›i, nhưng văn bản nguồn không có.Bản dịch kết thúc vá»›i má»™t dấu cách, nhưng văn bản nguồn không có.Bản dịch kết thúc bằng "%s", nhưng văn bản nguồn kết thúc bằng "%s".Bản dịch Ä‘ang thiếu 1 dòng má»›i ở cuối.Các bản dịch là thiếu má»™t dấu cách ở phần cuối.Bản dịch đã sẵn sàng để sá»­ dụng, nhưng %d mục không được dịch.Bản dịch đã sẵn sàng để sá»­ dụng.Bản dịch nên kết thúc vá»›i "%s".Bản dịch không nên kết thúc vá»›i "%s".Bản dịch nên bắt đầu như là má»™t câu.Bản dịch nên bắt đầu vá»›i má»™t ký tá»± chữ thưá»ng.Bản dịch bắt đầu vá»›i má»™t dấu cách, nhưng văn bản nguồn không có.Các bản dịch đã được đánh dấu là cần làm việc, bởi vì chúng có thể không chính xác. Bạn nên xem lại chúng cho việc sá»­a chữa.Ở đây không có bản dịch nào cả. Äiá»u này là bất thưá»ng.Có vấn đỠvá»›i định dạng (nhưng vẫn có thể lưu lại).Äã xảy ra lá»—i khi tải tệp. Vì vậy, má»™t số dữ liệu có thể bị thiếu hoặc bị há»ng.Các thiết đặt này ảnh hưởng đến định dạng bên trong cá»§a các tập tin PO. Äiá»u chỉnh chúng nếu bạn có yêu cầu cụ thể ví dụ vì kiểm soát phiên bản.Tệp JSON này không phải là tệp bản dịch và không thể được chỉnh sá»­a trong Poedit.Tập tin này có các mục nhập có dạng số nhiá»u, nhưng chưa định cấu hình tiêu đỠDạng số nhiá»u.Äây là lệnh được dùng để khởi chạy Trình trích xuất. %o được khai triển thành tên cá»§a tập tin đầu ra, %K thành danh sách các từ khóa, %F thành danh sách tập tin đầu vào, %C thành cá» bá»™ mã ký tá»± (xem bên dưới).Chuá»—i này được tìm thấy trong bá»™ nhá»› bản dịch cá»§a Poedit.Cái này sẽ gắn vá»›i dòng lệnh chỉ khi bá»™ mã ký tá»± nguồn được đưa ra. %c được triển khai thành giá trị bá»™ ký tá»±.Cái này sẽ gắn vá»›i dòng lệnh má»™t lần vá»›i má»—i tập tin đầu vào. %f được triển khai thành tên tập tin.Cái này sẽ gắn vá»›i dòng lệnh má»™t lần cho má»—i từ khóa. %k được triển khai thành từ khóa.Tổng cá»™ngBiến ÄổiÄã dịch: %d of %d (%d %%)Bản dịchNgôn ngữ bản dịchCÆ¡ sở dữ liệu dịchBản Dịch Cần Làm &ViệcThuá»™c tính dịchCÆ¡ sở dữ liệu bá»™ nhá»› dịch thuật bị há»ng: %s (%d).Lá»—i bá»™ nhá»› dịch thuật: %s (%d).Bản dịch cần làm &việcThuá»™c tính bản dịchCác gợi ý dịchBản dịch — %sKhông thể cập nhật bản dịch từ mã nguồn vì không tìm thấy mã nào ở vị trí được chỉ định trong Thuá»™c tính cá»§a tập tin.HaiUTF-8 (nên dùng)Huá»· thao tác trướcChưa được xá»­ lý ngoại lệ: %sUnix (nên dùng)Lá»—i Crowdin không xác định.Chưa dịchNâng cấpCập nhật tất cảCập nhật tất cả các catalog trong dá»± ánCập nhật tất cả các danh mục trong dá»± án này?Cập nhật từ tập tin &POT…Cập nhật từ tập tin &POT…Cập nhật từ mãCập nhật từ tệp tin POTCập nhật từ mãCập nhật từ mã nguồnTóm tắt sÆ¡ lược quá trình cập nhậtCập NhậtCập Nhật không thành côngÄang cập nhật bản dịchÄang cập nhật thông tin ngưá»i dùng…Tải bản dịch lên %s không thành công.Äang tải bản dịch lên %s…Tải lên bản dịch…Dùng biểu thức tá»± chá»nSá»­ dụng danh sách tùy chỉnh phông:Sá»­ dụng font tùy chỉnh các trưá»ng văn bản:Sá»­ dụng quy tắc mặc định cho ngôn ngữ nàySá»­ dụng những từ khóa (tên hàm) để nó có thể nhận ra các chuá»—i có thể dịch trong tập tin mã nguồn:Dùng bá»™ nhá»› bản dịchThẩm traKết quả xác nhậnPhiên bản %sÄang chá» xác thá»±c…Chào mừng bạn dùng PoeditKhi cập nhật từ nguồnPhải khá»›p toàn bá»™ các từCá»­a sổKiểu WindowsBạn có muốn sá»­ dụng tiếng Anh cho văn bản nguồn không?Ngắt khoảngNgắt tại:Các tập tin dịch XLIFFVângBạn đồng thá»i có thể rút trích các chuá»—i có thể dịch được trá»±c tiếp từ mã nguồn:Bạn không thể kéo thả nhiá»u hÆ¡n má»™t tập tin vào trong cá»­a sổ Poedit.Bạn không có quyá»n Ä‘á»c các tập tin mã nguồn từ vị trí được chỉ định trong Thuá»™c tính cá»§a tập tin.Bạn phải khởi động lại Poedit để các thay đổi có tác dụng.Tên BạnCác thay đổi cá»§a bạn sẽ bị mất nếu bạn không lưu chúng.Tên và địa chỉ email cá»§a bạn chỉ được sá»­ dụng để thiết lập các tiêu đỠdịch giả cuối cùng cá»§a GNU gettext tập tin.Số khôngPhóng toCần làmkhông xóa tập tin tạm (để gỡ lá»—i)ví dụ: nplurals=2; plural=(n > 1);kết hợp má» trong tệpnhảy tá»›i mục vá»›i số dòng đã choxá»­ lý má»™t poedit:// URICtrl+XuốngEnterTráiPhảiShift+LênaltctrlshiftGiá»›i thiệu vá» %sẨn %sẨn Những Thứ KhácCá nhân hóa...Thoát %sDịch vụHiển Thị Tất Cảdịch trước từ TMkhông hiểu ngôn ngữphiên bản không được há»— trợ (%s)you@example.comTập tin '%s' không hợp định dạng POT.poedit-3.6.3/locales/uk.po0000644000175100001660000033425415011674230011104 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 " "&& n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 " "&& n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: uk\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Сховати це повідомленнÑ" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ðе показувати знову" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ðе показувати знову" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Оновити підÑумок" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "ПідÑумок про оновленнÑ" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Закрити" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Проблеми" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Файл" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "РÑдок" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Проблема" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Ðові Ñ€Ñдки" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Ðові Ñ€Ñдки" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Вилучені Ñ€Ñдки" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Вилучені Ñ€Ñдки" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Ð—Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¸Ñ… файлів…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Ð’Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдків Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ з %s файлу…" msgstr[1] "Ð’Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдків Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ з %s файлів…" msgstr[2] "Ð’Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдків Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ з %s файлів…" msgstr[3] "Ð’Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдків Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ з %s файлу…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ файл з видобутими перекладами." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "У: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Початковий код недоÑтупний." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Переклади не можуть бути оновлені з початкового коду, оÑкільки програмний " "код не знайдений у теці, вказаній у влаÑтивоÑÑ‚ÑÑ… файлу." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "У доÑтупі відмовлено." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "У Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” дозволу читати файли початкового коду з розташуваннÑ, вказаного " "у влаÑтивоÑÑ‚ÑÑ… файлу." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Якщо ви раніше відмовили у доÑтупі до файлів, то можете дозволити його в " "СиÑтемних налаштуваннÑÑ… > Безпека та конфіденційніÑть > Файли та теки." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Якщо ви раніше відмовили у доÑтупі до файлів, то можете дозволити його в " "СиÑтемних налаштуваннÑÑ… > Безпека та конфіденційніÑть > КонфіденційніÑть > " "Файли та теки." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Ðе вдалоÑÑ Ð²Ð¸Ñ‚Ñгти Ñ€Ñдки з початкового коду." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Ðеможливо відкрити файл «%s»." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñ–Ð²" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð±Ñ–Ð¶Ð½Ð¾Ñтей…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Ð—Ð»Ð¸Ñ‚Ñ‚Ñ Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð½Ð¾Ñтей…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "Файл перекладу вже актуальний, змін до Ñ€Ñдків не вноÑилоÑÑŒ." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Файл перекладу оновлений з %s зміною." msgstr[1] "Файл перекладу оновлений з %s змінами." msgstr[2] "Файл перекладу оновлений з %s змінами." msgstr[3] "Файл перекладу оновлений з %s зміною." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Ðові Ñ€Ñдки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Вилучені Ñ€Ñдки (більше не викориÑтовуютьÑÑ):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "ВиÑвлено %d проблему з початковими Ñ€Ñдками." msgstr[1] "ВиÑвлено %d проблеми з початковими Ñ€Ñдками." msgstr[2] "ВиÑвлено %d проблем з початковими Ñ€Ñдками." msgstr[3] "ВиÑвлено %d проблеми з початковим Ñ€Ñдком." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "ПереглÑнути подробиці…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "ПереглÑнути подробиці…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Ðеправильний формат заголовка: «%s»" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Файли перекладу PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Шаблони перекладу POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Файли перекладу XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Каталог локалізації Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Файли перекладу JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Файли перекладу Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "УÑÑ– файли перекладу" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Файл у форматі, Ñкий не розпізнає Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "Цей файл JSON не Ñ” файлом перекладів Ñ– не може бути змінений у Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ вміÑÑ‚ файлу через таку помилку: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Файл «%s» доÑтупний лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ– не може бути збережений.\n" "Будь лаÑка, збережіть його з іншою назвою." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Ðеможливо зберегти файл %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Знімки екрана:" #: src/catalog_po.cpp:134 #, 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[1] "%i Ñ€Ñдки файлу «%s» було завантажено некоректно." msgstr[2] "%i Ñ€Ñдків файлу «%s» було завантажено некоректно." msgstr[3] "%i Ñ€Ñдка файлу «%s» було завантажено некоректно." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "РÑдок %d файлу «%s» пошкоджений (недійÑні дані %s)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Пошкоджений файл PO: msgstr у однині викориÑтана разом із формою множини " "msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Пошкоджений файл PO: msgstr у множині викориÑтовуєтьÑÑ Ð±ÐµÐ· msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Ðеможливо завантажити файл. Імовірно, він пошкоджений." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. Ð’ результаті деÑкі дані можуть " "бути відÑутні або пошкоджені." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "СталиÑÑ Ð½ÐµÐ³Ð°Ñ€Ð°Ð·Ð´Ð¸ при Ñпробі правильного Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ (але його вÑе " "одно збережено)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ файл в кодуванні «%s», Ñк це зазначено в налаштуваннÑÑ… " "перекладу.\n" "\n" "Він був збережений в UTF-8, Ñ– відповідним чином були змінені налаштуваннÑ." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Помилка Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "«%s» — некоректний POT-файл." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "ÐеÑподівано відÑутній вміÑÑ‚ у файлі XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð² іншому міÑці не підтримуєтьÑÑ Ð´Ð»Ñ XCLOC файлів." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "непідтримувана верÑÑ–Ñ (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Зламана розмітка у Ñ€Ñдку перекладу." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "З'єднайте Poedit з підтримуваними хмарними платформами локалізації, щоб " "безперешкодно Ñинхронізувати переклади, оброблювані на них." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Як працює хмарна ÑинхронізаціÑ?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Обілковий запиÑ" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(не авторизовано)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Відкрити хмарний переклад" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Керувати обліковими запиÑами" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Проєкт:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Мова:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Увійти до хмарного облікового запиÑу" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Увійти у хмарний обліковий запиÑ" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "У вашому обліковому запиÑÑ– немає проєктів з перекладу." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð°Ð¹Ð½Ð¾Ð²Ñ–ÑˆÐ¾Ð³Ð¾ перекладу…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Увійти до %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "СинхронізаціÑ" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Ð’Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñ–Ð² до %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ переклади до %s." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Помилка Ñинхронізації" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Додати" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Ðевідома помилка Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Ðе авторизовані, увійдіть повторно." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "РÑдкові проєкти Crowdin не підтримуютьÑÑ." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñ–Ð² вимкнено в цьому проєкті." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Увійти" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Увійти" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Вийти" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Вийти" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Докладніше про Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin це онлайн платформа ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ð°Ð¼Ð¸ та заÑіб Ð´Ð»Ñ Ñпільного " "перекладу. Ми Ñамі викориÑтовуємо Crowdin, щоб перекладати Poedit багатьма " "мовами, Ñ– ми любимо його." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "ÐžÑ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ—â€¦" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¾Ð¼Ð¾Ñтей про кориÑтувача…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Увійти до Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Ðе вдалоÑÑ Ñинхронізувати з Crowdin." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Помилка Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "ÐадÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒâ€¦" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Копіювати" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Докладніше" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Довідка" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Файли MO не можна редагувати безпоÑередньо в Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл" #: src/edapp.cpp:735 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-файл також оновитьÑÑ." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "не видалÑти тимчаÑові файли (Ð´Ð»Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "обробити poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "перейти до елемента у Ñ€Ñдку з указаним номером" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Ðе вдалоÑÑ Ð·Ð²'ÑзатиÑÑ Ð· Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "СтавÑÑ Ð½ÐµÐ¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¸Ð¹ винÑток: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Вибрати шаблон перекладу" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Ðеправильний файл" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Вибрати файл перекладу" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit — проÑтий у викориÑтанні редактор перекладів." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Ðе можна перетÑгувати у вікно Poedit більше одного файлу." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Файл «%s» не Ñ” файлом перекладу." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Файлу “%s†не Ñ–Ñнує." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Перевірка орфографії вимкнена, тому що не вÑтановлено Ñловник Ð´Ð»Ñ Ð¼Ð¾Ð²Ð¸ %s." #: src/edframe.cpp:871 msgid "Install" msgstr "Ð’Ñтановити" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Файл «%s» було змінено іншим заÑтоÑунком." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Перезавантажити файл" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Хочете перезавантажити файл з диÑка? Якщо це зробити, ваші незбережені зміни " "в Poedit буде втрачено." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Знехтувати" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Перезавантажити файл" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Файл був змінений. Хочете зберегти зміни?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Зберегти зміни" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "ВнеÑені зміни буде втрачено, Ñкщо Ñ—Ñ… не зберегти." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Зберегти" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ðе зберігати" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ðе зберігати" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "ВнеÑені іншим заÑтоÑунком зміни буде втрачено під Ñ‡Ð°Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "СкаÑувати" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Ð’Ñе одно зберегти" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Ð’Ñе одно зберегти" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Зберегти Ñк…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Компілювати в…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Скомпільовані файли перекладу" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "ЕкÑпорт до HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML файли" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "ЕкÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð½Ðµ вдалоÑÑ" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Оновити з POT-&файлу…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Оновити з POT-&файлу…" #: src/edframe.cpp:1834 #, c-format 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[3] "Знайдено %d проблеми із перекладом." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Результати перевірки" #: src/edframe.cpp:1842 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 "" "Елементи з помилками позначені у ÑпиÑку червоним. Виділіть елемент, щоб " "переглÑнути подробиці помилки." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Файл був уÑпішно збережений." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Файл був збережений Ñ– Ñкомпільований в формат MO. Ðле, швидше за вÑе, не " "буде правильно працювати." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "Файл збережений, але не може бути зібраний та викориÑтаний Ñк MO." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Файл був Ñкомпільований у формат MO, але, швидше за вÑе, не буде правильно " "працювати." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Ðе вдалоÑÑ Ñкомпілювати файл у формат MO Ð´Ð»Ñ Ð¿Ð¾Ð´Ð°Ð»ÑŒÑˆÐ¾Ð³Ð¾ викориÑтаннÑ." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Жодних проблем з перекладом не знайдено." #: src/edframe.cpp:1894 #, 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] "Переклад готовий до викориÑтаннÑ, але %d Ð·Ð°Ð¿Ð¸Ñ Ñ‰Ðµ не перекладено." msgstr[1] "Переклад готовий до викориÑтаннÑ, але %d запиÑи ще не перекладено." msgstr[2] "Переклад готовий до викориÑтаннÑ, але %d запиÑів ще не перекладено." msgstr[3] "Переклад готовий до викориÑтаннÑ, але %d запиÑи ще не перекладено." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Переклад готовий до викориÑтаннÑ." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit автоматично виправив хибний вміÑÑ‚ у файлі «%s»." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Файл міÑтив дубльовані елементи, що не дозволено у PO-файлах та унеможливлює " "викориÑÑ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ. Poedit виправив цю помилку, проте ви повинні переглÑнути " "переклади, позначені «потребує доопрацюваннÑ», та, за потреби, виправити Ñ—Ñ…." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Мову перекладу не зазначено." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Вибрати мову" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Вибрати мову" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Пропозиції будуть недоÑтупними, Ñкщо неправильно вказано мову перекладу. Це " "може вплинути на інші функції, Ñк-от форми множини." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Мова перекладу така ж, Ñк Ñ– мова оригіналу." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Виправити мову" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Виправити мову" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Цей файл міÑтить елементи з формами множини, але не має налаштованого " "заголовка Plural-Forms." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Елементи цього файлу мають форми множини, відмінні від вказаних у заголовку " "Plural-Formms файлу" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "ВідÑутній обов’Ñзковий заголовок Plural-Forms." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "СинтакÑична помилка в заголовку Plural-Forms («%s»)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Виправити заголовок" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Вираз форми множини, заÑтоÑований у файлі, незвичний Ð´Ð»Ñ %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "ОглÑд" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Бажаєте викориÑтовувати англійÑьку мову Ð´Ð»Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ð³Ð¾ текÑту?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Цей файл викориÑтовує ID Ñ€Ñдків заміÑть початкового текÑту. Poedit може " "завантажувати текÑти англійÑькою з файлу «%s»." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Завантажити англійÑькою" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Перекладено: %d з %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "ЗалишилоÑÑ: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d помилка" msgstr[1] "%d помилки" msgstr[2] "%d помилок" msgstr[3] "%d помилки" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d запиÑ" msgstr[1] "%d запиÑи" msgstr[2] "%d запиÑів" msgstr[3] "%d запиÑи" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (не збережено)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (змінено)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Ðе вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ пам'Ñть перекладів: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Ðеможливо зберегти файл «%s»." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Вилучити переклади, Ñкі збігаютьÑÑ Ð· джерелом" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Видалити вÑÑ– переклади, Ñкі ідентичні початковому текÑту?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "УÑÑ– переклади, Ñкі збігаютьÑÑ Ð· початковим текÑтом, буде видалено. Цю дію " "неможливо ÑкаÑувати." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Залишити" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Вилучити" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Знищити вилучені переклади" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Що робити з невикориÑтаним перекладом?" #: src/edframe.cpp:2879 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 "" "Точно вилучити з каталогу вÑÑ– невикориÑтані переклади? Якщо вони знову " "знадоблÑтьÑÑ Ð² майбутньому, вам доведетьÑÑ Ñ‰Ðµ раз перекладати Ñ—Ñ…." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Знищити" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Копіювати з початкового текÑту" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Копіювати з початкового текÑту" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Стерти переклад" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Стерти переклад" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Редагувати коментар" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Редагувати коментар" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "ПоÑва в коді" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "ПоÑва в коді" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Сховати бічну панель" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Показати бічну панель" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Сховати панель Ñтану" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Показати панель Ñтану" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "КількіÑть Ñимволів у Ñ€Ñдку: переклад | джерело" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "КількіÑть Ñимволів у Ñ€Ñдку" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Оригінал" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Однина" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Множина" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Переклад" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Попередньо перекладений" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Потребує доопрацюваннÑ" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Потребує доопрацюваннÑ" #: src/editing_area.cpp:566 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, заÑнований на цьому шаблоні." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Створити новий переклад" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Створити новий переклад з цього POT-файлу." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID початкового текÑту" #: src/editing_area.cpp:768 msgid "Everything" msgstr "УÑе" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Форма %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Форма %i (невикориÑтана)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Ðуль" #: src/editing_area.cpp:788 msgid "One" msgstr "Один" #: src/editing_area.cpp:790 msgid "Two" msgstr "Два" #: src/editing_area.cpp:804 msgid "Other" msgstr "Інше" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "КонтекÑÑ‚ Ñ€Ñдка: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Ідентифікатор Ñ€Ñдка: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Формат %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Формат %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Переклад — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Початковий текÑÑ‚ — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "невідома мова" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Помилка мережі: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Ðевідома помилка" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Ðе вдалоÑÑ Ð¾Ð±'єднати gettext-каталоги." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Відкрити в редакторі" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Відкрити в редакторі" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Ðемає даних про виÑÐ²Ð»ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ñ€Ñдка у початковому коді вказаному у файлі." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Ðемає даних про викориÑтаннÑ" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d збіг у коді" msgstr[1] "%d збіги у коді" msgstr[2] "%d збігів у коді" msgstr[3] "%d збігів у коді" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Початковий код не знайдено" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit не може показати початковий код, де викориÑтовуєтьÑÑ Ñ€Ñдок, оÑкільки " "файл або недоÑтупний у вказаному розташуванні, або він має Ñимволічне " "поÑиланнÑ, Ñке не вказує на Ñправжній файл." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Ðеможливо відкрити файл" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл «%s»." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Знайти" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Замінити" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Опції" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ігнорувати регіÑтр" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "По колу" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Лише Ñлово цілком" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Шукати у початкових текÑтах" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Шукати у перекладах" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Шукати в коментарÑÑ…" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Замінити &вÑе" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Замінити &вÑе" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Замінити" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Попередній" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&ÐаÑтупний >" #: src/findframe.cpp:235 msgid "String to find" msgstr "РÑдок пошуку" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "РÑдок заміни" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "попередженнÑ: " #: src/gexecute.cpp:171 msgid "error: " msgstr "помилка: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Ðазва мови або код" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Мова перекладу" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Мова перекладу:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "УÑÑ– Ñ€Ñдки" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ відомоÑті про проєкт Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Виникла помилка під Ñ‡Ð°Ñ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñ–Ð² на Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Проєкти" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Докладніше про %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy — платформа локалізації з виÑоким рівнем автоматизації, що дозволÑÑ” " "будь-кому легко перекладати Ñвої продукти й матеріали різними мовами." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Додати проєкт" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Додати проєкт" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit. Менеджер каталогів" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Змінити…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Створити новий проєкт перекладів" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Видалити проєкт" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Редагувати проєкт" #: src/manager.cpp:176 msgid "Update all" msgstr "Оновити вÑе" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Оновити вÑÑ– каталоги в цьому проєкті" #: src/manager.cpp:378 msgid "Total" msgstr "Загалом" #: src/manager.cpp:379 msgid "Untrans" msgstr "Ðе перекладено" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Потребує доопрацюваннÑ" #: src/manager.cpp:381 msgid "Errors" msgstr "Помилки" #: src/manager.cpp:382 msgid "Last modified" msgstr "ОÑтанні зміни" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Виберіть теку" #: src/manager.cpp:433 msgid "Directories:" msgstr "Теки:" #: src/manager.cpp:503 msgid "" msgstr "<без назви>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Справді хочете видалити проєкт «%s»?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Видалити проєкт" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ не видалить жодного файлу перекладу." #: src/manager.cpp:571 msgid "Confirmation" msgstr "ПідтвердженнÑ" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Оновити вÑÑ– каталоги в цьому проєкті?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Виконує Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð· початкового коду Ð´Ð»Ñ Ð²ÑÑ–Ñ… файлів проєкту." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñ–Ð² проєкту" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Перевірити оновленнÑ…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Менеджер каталогів" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&ÐалаштуваннÑ…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&РедагуваннÑ" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "СкаÑувати" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Відновити" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Ð’Ñтавити в поточному Ñтилі" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Видалити" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Перевірка орфографії та граматики" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Показати орфографічні та граматичні помилки" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Перевірити документ зараз" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "ПеревірÑти орфографію під Ñ‡Ð°Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Перевірити граматику Ñ– орфографію" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "ВиправлÑти автоматично орфографічні помилки" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Заміни" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Показати заміни" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Розумне копіюваннÑ/вÑтавленнÑ" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Розумні цитати" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Розумні тире" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Розумні поÑиланнÑ" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Заміна текÑту" #: src/menus.cpp:230 msgid "Transformations" msgstr "ПеретвореннÑ" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "У верхній регіÑтр" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "У нижній регіÑтр" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Перша велика" #: src/menus.cpp:237 msgid "Speech" msgstr "МовленнÑ" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Почати озвучуваннÑ" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Зупинити озвучуваннÑ" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&ВиглÑд" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Показати панель інÑтрументів" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Ðалаштувати панель інÑтрументів…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Перейти в повноекранний режим" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Вікно" #: src/menus.cpp:263 msgid "Minimize" msgstr "Мінімізувати" #: src/menus.cpp:264 msgid "Zoom" msgstr "МаÑштабувати" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "ЛаÑкаво проÑимо до Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "ВивеÑти вÑе на передній план" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "ВідомоÑті про перекладача" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Ім'Ñ:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Ваше ім'Ñ" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Електронна пошта:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ваше ім'Ñ Ñ‚Ð° пошту буде викориÑтано лише Ð´Ð»Ñ Ð²ÐºÐ°Ð·Ñ–Ð²ÐºÐ¸ оÑтаннього перекладача " "в заголовках GNU gettext файлів." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "РедагуваннÑ" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Ðвтоматично компілювати файл MO під Ñ‡Ð°Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Перевірка орфографії" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Завжди вÑтановлювати Ñ„Ð¾ÐºÑƒÑ Ñƒ поле вводу текÑту" #: src/prefsdlg.cpp:211 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 "" "Ðіколи не дозволÑйте ÑпиÑку Ñ€Ñдків отримати фокуÑ. Якщо активовано, можна " "викориÑтовувати Ctrl+Ñтрілки Ð´Ð»Ñ Ð½Ð°Ð²Ñ–Ð³Ð°Ñ†Ñ–Ñ— за допомогою клавіатури, але " "вводити текÑÑ‚ можна починати одразу не натиÑкаючи Tab Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ фокуÑу." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Зовнішній виглÑд" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "ВикориÑтовувати кориÑтувацький шрифт Ð´Ð»Ñ ÑпиÑку:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "ВикориÑтовувати кориÑтувальницький текÑÑ‚ в полÑÑ… вводу:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Змінити мову інтерфейÑу" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(потрібна Windows 8 або новіші верÑÑ–Ñ—)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Загальні" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "ВикориÑтовувати пам'Ñть перекладів" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Керувати…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Під Ñ‡Ð°Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð· джерел" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "підбирати Ñхожий переклад вÑередині файлу" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "попередній переклад через ПП" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit може Ñпробувати заповнити нові Ñ€Ñдки тільки попередніми перекладами з " "цього файлу або з вашої пам'Ñті перекладів. ВикориÑÑ‚Ð°Ð½Ð½Ñ ÐŸÐŸ буде не дуже " "ефективним, Ñкщо вона майже порожнÑ, але буде поліпшуватиÑÑ Ð² міру Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ " "перекладів." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Збережені переклади:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Розмір бази даних на диÑку:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Імпортувати файли перекладу…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Імпортувати файли перекладу…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Імпорт з TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Імпорт з TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "ЕкÑпорт до TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "ЕкÑпорт до TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Скинути" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Виберіть файли перекладу Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ñƒ" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Виберіть файл TMX Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ñƒ" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX файл" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Ð†Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñ–Ð²â€¦" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ пам'Ñть перекладів." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Ð†Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð· “%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "Імпортовано %s переклад." msgstr[1] "Імпортовано %s переклади." msgstr[2] "Імпортовано %s перекладів." msgstr[3] "Імпортовано %s переклад." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "ЕкÑпортувати Ñк…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "ЕкÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñ–Ð²â€¦" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Ðе вдалоÑÑ ÐµÐºÑпортувати пам'Ñть перекладів до “%sâ€." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Скинути пам'Ñть перекладів" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Ви впевнені, що хочете очиÑтити пам'Ñть перекладів?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "При очищенні пам'Ñті перекладів будуть безповоротно видалені вÑÑ– збережені " "переклади. Ви не зможете ÑкаÑувати цю операцію." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "Пам'Ñть перекладів" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Пам'Ñть перекладів" #: src/prefsdlg.cpp:730 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 "" "ЕкÑтрактори заÑтоÑовуютьÑÑ Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ Ñ€Ñдків, що перекладаютьÑÑ, у файлах " "початкового коду та витÑгують Ñ—Ñ… так, щоб Ñ—Ñ… можна було переклаÑти." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "КориÑтувацькі екÑтрактори:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "КориÑтувацькі екÑтрактори:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "ПідтримуютьÑÑ Ð²ÑÑ– мови програмуваннÑ, що розпізнаютьÑÑ Ñ–Ð½Ñтрументами GNU " "gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript тощо)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Видалити екÑтрактор" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Ви впевнені, що бажаєте видалити екÑтрактор \"%s\"?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "ЕкÑтрактори" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Облікові запиÑи" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Ðвтоматично перевірÑти наÑвніÑть оновлень" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Включити бета-верÑÑ–Ñ—" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Бета-верÑÑ–Ñ— міÑÑ‚Ñть новітні функції Ñ– поліпшеннÑ, але можуть бути менш " "Ñтабільними." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "ОновленнÑ" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Ці параметри впливають на внутрішнє Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² PO. Скоректуйте Ñ—Ñ…, " "Ñкщо у Ð²Ð°Ñ Ñ” Ñпеціальні вимоги, наприклад, Ñкщо ви кориÑтуєтеÑÑ ÑиÑтемою " "контролю верÑій." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Ð—Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ€Ñдків:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (рекомендовано)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "ПеренеÑеннÑ:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Зберігати Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ñвних файлів" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Розширені параметри" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "ÐалаштуваннÑ" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "ÐŸÑ–Ð´Ð³Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдків…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Попередній переклад з пам'Ñті перекладів…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Попередньо перекладено %u Ñ€Ñдок" msgstr[1] "Попередньо перекладено %u Ñ€Ñдки" msgstr[2] "Попередньо перекладено %u Ñ€Ñдків" msgstr[3] "Попередньо перекладено %u Ñ€Ñдка" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Виконати попередній переклад…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d Ð·Ð°Ð¿Ð¸Ñ Ð±ÑƒÐ»Ð¾ попередньо перекладено." msgstr[1] "%d запиÑи було попередньо перекладено." msgstr[2] "%d запиÑів було попередньо перекладено." msgstr[3] "%d запиÑи було попередньо перекладено." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Переклади були позначені Ñк \"потребує доопрацюваннÑ\". Перевірте Ñ—Ñ… " "правильніÑть." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Точний збіг з ПП" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Приблизний збіг з ПП" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Ðемає запиÑів, Ñкі можна попередньо переклаÑти." #: src/pretranslate.cpp:218 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 " "збере доÑтатньо даних з файлів, Ñкі ви переклали ÑамоÑтійно." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Ðеможливо здійÑнити попередній переклад без початкового текÑту." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Попередній переклад" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Попередній переклад вимагає, щоб був доÑтупний початковий текÑÑ‚. Він не " "працює, Ñкщо викориÑтовуютьÑÑ Ð»Ð¸ÑˆÐµ ID без Ñамого текÑту." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Ðеможливо зробити попередній переклад з невідомої мови." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Попередній переклад потребує, щоб мова початкового текÑту була відомою. " "Poedit не зміг знайти Ñ—Ñ— в цьому файлі." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Заповнювати лише точні збіги" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "УÑталено, неточні результати також включаютьÑÑ, але позначаютьÑÑ Ñ‚Ð°ÐºÐ¸Ð¼Ð¸, що " "потребують доопрацюваннÑ. Увімкніть цю опцію, щоб включалиÑÑ Ð»Ð¸ÑˆÐµ ідеальні " "збіги." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Ðе позначати точні збіги Ñк «потребує доопрацюваннÑ»" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Увімкніть це лише Ñкщо ви впевнені в ÑкоÑті Ñвоєї пам'Ñті перекладів. Типово " "вÑÑ– збіги з пам'Ñті перекладів позначаютьÑÑ Â«Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” доопрацюваннÑ» й " "підлÑгають перевірці." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Попередній переклад автоматично знаходить точні або нечіткі збіги Ð´Ð»Ñ " "неперекладених Ñ€Ñдків в пам'Ñті перекладів Ñ– заповнює в Ñ—Ñ… перекладах." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Помилка: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "СталаÑÑ %d помилка:" msgstr[1] "СталиÑÑ %d помилки:" msgstr[2] "СталиÑÑ %d помилок:" msgstr[3] "СталаÑÑ %d помилка:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "СталаÑÑ %d помилка." msgstr[1] "СталиÑÑ %d помилки." msgstr[2] "СталиÑÑ %d помилок." msgstr[3] "СталаÑÑ %d помилка." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "СкаÑуваннÑ…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "ПеретÑгніть теки або файли Ñюди" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "ПеретÑгніть теки або файли Ñюди" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Додати теки…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Додати теки…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Додати файли…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Додати файли…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Додати шаблон…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Додати шаблон…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Показати у Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Показати у провіднику" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Показати в теці" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "ШлÑхи" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Виключені шлÑхи" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Розширені Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Видобути нотатки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ð°Ñ‡Ñ–Ð² з:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Коментарі з префікÑом:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "УÑÑ– коментарі" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Додаткові прапорці xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Додаткові ключові Ñлова" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Ðазва проєкту, Ð´Ð»Ñ Ñкого призначений переклад" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Ðазва команди та адреÑа е-пошти або поÑиланнÑ" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "напр. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (рекомендовано)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Будь лаÑка, Ñпершу збережіть файл. Без Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ†ÐµÐ¹ розділ редагувати не " "можна." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "КоректніÑть заповнювачів" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "У перекладі відÑутній заповнювач «%s»" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Зайвий Ñимвол-заповнювач «%s», Ñкого немає у початковому текÑті." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Переклад форм множини" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Перекладено не вÑÑ– форм множини." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "ÐепоÑлідовний верхній/нижній регіÑтр" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Переклад повинен починатиÑÑ Ð· великої букви." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Переклад повинен починатиÑÑ Ð· Ñимволу в нижньому регіÑтрі." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "ÐепоÑлідовний пробіл" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Переклад не починаєтьÑÑ Ð· пробілу." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Переклад починаєтьÑÑ Ð· пробілу, а початковий текÑÑ‚ — ні." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "У переклад відÑутній Ñимвол нового Ñ€Ñдка вкінці." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Переклад закінчуєтьÑÑ Ñимволом нового Ñ€Ñдка, а початковий текÑÑ‚ — ні." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "У перекладі відÑутній пробіл вкінці." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Переклад закінчуєтьÑÑ Ð¿Ñ€Ð¾Ð±Ñ–Ð»Ð¾Ð¼, а початковий текÑÑ‚ — ні." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Перевірки пунктуації" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Переклад повинен закінчуватиÑÑ Ð½Ð° «%s»." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Переклад не повинен закінчуватиÑÑ Ð½Ð° «%s»." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "Переклад закінчуєтьÑÑ Ð½Ð° «%s», але початковий текÑÑ‚ закінчуєтьÑÑ Ð½Ð° «%s»." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Хмара" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "ОчиÑтити меню" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "ОчиÑтити меню" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Коментар:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Оновити" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Вилучити" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Видалити коментар" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Редагувати проєкт" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Ðазва проєкту:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Вибрати" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Додати теку до ÑпиÑку" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Гаразд" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Файл" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Ðовий…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Ðовий з &POT/PO-файлу…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Ðовий з &POT/PO-файлу…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Відкрити…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Відкрити нещодавні" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Відкрити недавні" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Відкрити хмарний переклад…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Відкрити хмарний переклад…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Початкове вікно" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Початкове вікно" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Менеджер &каталогів" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Менеджер &каталогів" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "З&акрити" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Зберегти" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Зберегти &Ñк…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Зберегти &Ñк…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Компілювати в MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "Е&кÑпорт до HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Перевірити наÑвніÑть оновлень…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "ÐалаштуваннÑ…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&ÐалаштуваннÑ" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Вийти" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Вийти" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Копіювати форму однини" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Копіювати форму однини" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Переклад потребує &доопрацюваннÑ" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Переклад потребує &доопрацюваннÑ" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Редагувати &коментар" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Редагувати &коментар" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Пропозиції" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Знайти…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Замінити…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Знайти наÑтупний" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Знайти попередній" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Знайти та замінити…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Знайти наÑтупний" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Знайти попередній" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Показувати &ID Ñ€Ñдків" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Показувати &ID Ñ€Ñдків" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Показувати попередженнÑ" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Показувати попередженнÑ" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Сортувати за положеннÑм у &файлі" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Сортувати за положеннÑм у &файлі" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Сортувати за &оригіналом" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Сортувати за &оригіналом" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Сортувати за &перекладом" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Сортувати за &перекладом" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Групувати за контекÑтом" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Групувати за контекÑтом" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "ЗапиÑи з помилками — вгорі" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "ЗапиÑи з помилками — вгорі" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Ðеперекладене — вгорі" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Ðеперекладене — &вгорі" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Показувати збіги в коді" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Показувати збіги в коді" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Показати бічну панель" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Показати панель Ñтану" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Переклад" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Оновити з початкового коду" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Оновити з початкового коду" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð· Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Попередній &переклад…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Перевірити переклад" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Перевірити переклад" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Вилучити переклади, Ñкі збігаютьÑÑ Ð· джерелом" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Знищити вилучені переклади" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Знищити вилучені переклади" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&ВлаÑтивоÑті…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "Пере&йти" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Завершити та до наÑтупного" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Завершити та до наÑтупного" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Раніше відредаговано" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Раніше відредаговано" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Попередній переклад" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Попередній переклад" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "ÐаÑтупний переклад" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "ÐаÑтупний переклад" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "До п&опереднього незавершеного" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "До п&опереднього незавершеного" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "До н&аÑтупного незавершеного" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "До н&аÑтупного незавершеного" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð° множини" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð° множини" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "ÐаÑтупна форма множини" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "ÐаÑтупна форма множини" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Онлайн-довідка" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Онлайн-довідка" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Про Poedit..." #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Про заÑтоÑунок" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐµÐºÑтрактора" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "СпиÑок розширень, розділених крапкою з комою (наприклад, *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Виклик:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Команда Ð´Ð»Ñ Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ð¦Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° запуÑкає екÑтрактор.\n" "%o розширює назву початкового файлу, %K — ÑпиÑок\n" "ключових Ñлів, %F — ÑпиÑок вхідних файлів,\n" "%C — ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ (див. нижче)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Елемент ÑпиÑку ключових Ñлів:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Це буде додано до командного Ñ€Ñдка Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾\n" "ключового Ñлова. %k замінюєтьÑÑ Ð½Ð° ключове Ñлово." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Елемент в ÑпиÑку вхідних файлів:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Це буде додано до командного Ñ€Ñдка Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾\n" "вхідного файлу. %f замінюєтьÑÑ Ð½Ð° ім'Ñ Ñ„Ð°Ð¹Ð»Ñƒ." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² з початковим кодом:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Це буде додано до командного Ñ€Ñдка лише Ñкщо вказано\n" "ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² з початкового коду. %c замінюєтьÑÑ Ð½Ð° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "ВлаÑтивоÑті перекладу" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Ðазва та верÑÑ–Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Команда перекладачів:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Форми множини:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "ВикориÑтовувати Ñтандартні правила Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— мови" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "ВикориÑтовувати кориÑтувацький вираз" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Докладніше про форми множини" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Розширені Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Розширені Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "ВлаÑтивоÑті перекладу" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "ШлÑÑ… до джерел" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "ШлÑÑ… до джерел" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Шукати початковий текÑÑ‚ у цих теках:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Базовий шлÑÑ…:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Ключові Ñлова початкових файлів" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Ключові Ñлова джерельних файлів" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "ВикориÑтовувати ці ключові Ñлова (назви функцій) додатково до\n" "типових Ð´Ð»Ñ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ Ñƒ початкових файлах Ñ€Ñдків,\n" "придатних Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Також типово викориÑтовувати ключові Ñлова Ð´Ð»Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ñ… мов" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Докладніше про ключові Ñлова Gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Відкрити файл" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Зберегти файл" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Перевірити" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Перевірити переклад на наÑвніÑть помилок" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Оновити з коду" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Оновити з коду" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Оновити з початкового коду" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Бічна панель" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Показати або Ñховати бічну панель" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Попередній початковий текÑÑ‚" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Старий початковий текÑÑ‚ (до оновленнÑ), Ñкому відповідає неточний переклад." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Примітки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ð°Ñ‡Ñ–Ð²" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Коментар" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Додати коментар" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Додати коментар" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Видалити з пам'Ñті перекладів" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Видалити з пам'Ñті перекладів" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Пропозиції перекладу" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Збігів не знайдено" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Збігів не знайдено" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Цей Ñ€Ñдок був знайдений в пам'Ñті перекладів Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Пропозиції перекладу потребують, щоб початковий текÑÑ‚ був доÑтупний. Вони не " "працювали в разі, Ñкщо викориÑтовуютьÑÑ Ð»Ð¸ÑˆÐµ ID без Ñамого текÑту." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Пропозиції перекладу потребують, щоб мова початкового текÑту була відомою. " "Poedit не зміг визначити Ñ—Ñ— у цьому файлі." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ програму: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX-файл пошкоджено." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Пошкоджено базу даних пам'Ñті перекладів: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Помилка пам'Ñті перекладу: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Типова мова)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Вибір мови" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Виберіть бажану мову" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Зміни набудуть чинноÑті піÑÐ»Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑку Poedit." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Ðе вдалоÑÑ Ñтворити тимчаÑову теку." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Дивно, але переклад відÑутній." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "ЗапиÑи, що перекладаютьÑÑ, не додаютьÑÑ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ в ÑиÑтему Gettext, а " "автоматично видобуваютьÑÑ Ð· початкового коду. Таким чином забезпечуєтьÑÑ " "Ñ—Ñ…Ð½Ñ Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ–Ñть Ñ– точніÑть. Перекладачі, зазвичай, працюють з PO-файлами " "(POT-шаблони), Ñкі підготував Ð´Ð»Ñ Ð½Ð¸Ñ… розробник." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Докладніше про GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "ÐайпроÑтіший ÑпоÑіб заповнити цей файл перекладами — оновити його з POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Оновити з POT-файлу" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "ВитÑг Ñ€Ñдків Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ з наÑвного POT-шаблону." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "РÑдки, що перекладаютьÑÑ, можна також отримати безпоÑередньо з програмного " "коду:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Видобути з початкового коду" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Ðалаштувати Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ð³Ð¾ коду у ВлаÑтивоÑÑ‚ÑÑ…." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "ВерÑÑ–Ñ %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Створити новий" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Створити новий переклад з POT-шаблону." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "ОглÑд файлів" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Відкрити й редагувати файли перекладу." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "ПереклаÑти проєкт із хмари" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Співпрацюйте з іншими людьми онлайн." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Ðедавні файли" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Синхронізувати" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Синхронізувати переклад з Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Про %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Про %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Служби" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Сховати %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Сховати інші" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Показати вÑе" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Вийти з %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "ÐалаштуваннÑ…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "ÐалаштуваннÑ..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "ÐалаштуваннÑ..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&ЗаÑтоÑувати" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "ЗаÑтоÑувати" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&ПовернутиÑÑ" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "ПовернутиÑÑ" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&СкаÑувати" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&ОчиÑтити" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "ОчиÑтити" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Копіювати" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Ви&різати" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Вирізати" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Редагувати" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Вийти" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Довідка" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Ðовий" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Ðовий" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&ÐÑ–" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "ÐÑ–" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&ОК" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Відкрити…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Відкрити..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Відкрити..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Ð’Ñтавити" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Ð’Ñтавити" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "ÐалаштуваннÑ" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Повторити" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Оновити" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Зберегти Ñк" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Зберегти Ñк" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Вибрати &вÑе" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Вибрати вÑе" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&СкаÑувати" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Так" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Так" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Вгору" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Вниз" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Вліво" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Вправо" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "ПопередженнÑ: " poedit-3.6.3/locales/uz.po0000644000175100001660000024056515011674230011124 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-23 10:16\n" "Last-Translator: \n" "Language-Team: Uzbek\n" "Language: uz_UZ\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: uz\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Ushbu ogohlantirish xabarini yashirish" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Boshqa ko‘rsatilmasin" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Boshqa ko‘rsatilmasin" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Yangilash hisoboti" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Yopish" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Fayl" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Yangi qatorlar" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Manba fayllari yig‘ilmoqda…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Ajratib olingan tarjimalar mavjud faylni yuklash amalga oshmadi." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Manba kodi mavjud emas." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Ruxsat berilmadi." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Tarjimalarni yangilash" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Farqlarni birlashtirish..." #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Noto'g'ri sarlavha: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO tarjima fayllari" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT tarjima namunalari" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF Tarjima Fayllari" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Barcha tarjima fayllari" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, 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" "Faylni boshqa nomi bilan saqlang." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "%s faylni saqlab bo'lmadi." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "" #: src/catalog_po.cpp:134 #, 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] "\"%2$s\" faylining %1$i satri to'g'ri yuklanmadi." msgstr[1] "\"%2$s\" faylining %1$i satrlari to'g'ri yuklanmadi." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "\"%2$s\" faylining %1$d qatori buzilgan (%3$s ma'lumoti yaroqsiz)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Yaroqsiz PO fayl: msgstr birlik shakli msgid_plural bilan birga ishlatilgan" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "Faylni formatlashda muammo yuz berdi (ammo u yaxshi saqlangandi)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Faylni saqlashda xato" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†bu POT fayli emas." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Tarjima satrida buzilgan belgilar." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Loyiha:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Til:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "So‘nggi tarjimalar yuklab olinmoqda…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sinxronizatsiya" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Sinxronizatsiyadagi xato" #: src/commentdlg.cpp:48 msgid "Add" msgstr "QoÊ»shish" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Tasdiqdan o‘tmagan, yana kiring." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Tarjimalarni yuklab olish ushbu loyihada o‘chirib qo‘yilgan." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Kirish" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Kirish" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Chiqish" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Chiqish" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Crowdin haqida ko‘proq ma’lumot olish" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Tasdiqdan o‘tkazilmoqda…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Foydalanuvchi ma’lumoti yangilanmoqda…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Crowdin saytiga kiring" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Crowdin bilan sinxronlash amalga oshmadi." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin’da xatolik" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Tarjimalar yuklab qo‘yilmoqda…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Nusxa olish" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Batafsil ma’lumot" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Yordam" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Poedit’da MO fayllarni to‘g‘ridan-to‘g‘ri tahrirlab bo‘lmaydi." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Faylni ochishda xato yuz berdi" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "O‘rniga mavjud PO faylini oching va tahrirlang. Uni saqlaganingizda, MO fayl " "ham yangilanadi." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "vaqtinchalik fayllar o'chirilmasin (to'g'irlash uchun)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "poedit:// URI bilan ishlash" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "raqami berilgan satrdagi elementga o'tish" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Poedit jarayoni bilan bog‘lab bo‘lmadi." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Qayta ishlab bo‘lmaydigan istisno yuz berdi: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Tarjima namunasini tanlash" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Noto‘g‘ri fayl" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Tarjima faylini tanlash" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit qulay va oson tarjimalar tahrirlagichidir." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Poedit oynasiga faqat bitta faylni qo'yish mumkin." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "\"%s\" fayli tarjima fayli hisoblanmaydi." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "\"%s\" fayli mavjud emas." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Imloni tekshirish o‘chirib qo‘yildi, chunki %s uchun lug‘at o‘rnatilmagan." #: src/edframe.cpp:871 msgid "Install" msgstr "O‘rnatish" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "%s faylini boshqa ilova oÊ»zgartirgan." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" #: src/edframe.cpp:968 msgid "Ignore" msgstr "" #: src/edframe.cpp:968 msgid "Reload File" msgstr "" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "O‘zgarishlarni saqlash" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "O'zgartirishlaringizni saqlamasangiz, ular yo'qoladi." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Saqlash" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Saqlamaslik" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Saqlamaslik" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Bekor qilish" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Quyidagiday saqlash…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Quyidagiga kompilyatsiya qilish…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Kompilyatsiya qilingan tarjima fayllari" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML fayllar" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Yuklash amalga oshmadi" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Tarjima bilan %d ta muammo topildi." msgstr[1] "Tarjima bilan %d ta muammo topildi." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "To‘g‘rilash natijalari" #: src/edframe.cpp:1842 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 "" "Xato kiritilganlar ro‘yxatda qizil bilan belgilangan. Xatolik tafsilotlari " "kiritilganni tanlasangiz ko‘rinadi." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Fayl xavfsiz saqlandi." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Fayl xavfsiz saqlandi va MO formatga o‘zgartirildi, ammo u to‘g‘ri " "ishlamasligi mumkin." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Fayl xavfsiz saqlandi, ammo MO formatga o‘zgartirilmadi va undan foydalanib " "bo‘lmaydi." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Fayl MO formatga kompilyatsiya qilindi, ammo u to‘g‘ri ishlamasligi mumkin." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "" "Faylni MO formatga kompilyatsiya qilib bo‘lmaydi va undan foydalanib ham " "bo‘lmaydi." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Tarjima bilan bog‘liq hech qanday muammo topilmadi." #: src/edframe.cpp:1894 #, 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] "" "Tarjima foydalanish uchun tayyor, ammo %d ta kiritilgan tarjima qilinmagan." msgstr[1] "" "Tarjima foydalanish uchun tayyor, ammo %d ta kiritilgan tarjima qilinmagan." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Tarjima foydalanish uchun tayyor." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "Poedit avtomatik tarzda “%s†nomli fayl ichidagi xato tarkibni to‘g‘riladi." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "" #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Tilni o‘rnatish" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Tilni o‘rnatish" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 ko‘rsatilmaydi. Boshqa " "xususiyatlar, masalan, ko‘plik shahkli yaxshi bo‘lishi mumkin." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Til nomi manba tildagi bilan bir xil." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Tilni to‘g‘rilash" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Tilni to‘g‘rilash" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Ko‘plik shakllari yo‘q bosh qatori talab qilinmoqda." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Ko‘plik shakllari (\"%s\") bosh qatorida sintaktik xato." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Boshlang‘ich qatorni to‘g‘rilash" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Bosh qatorni to‘g‘rilash" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Ko‘rib chiqish" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Tarjima qilindi: %d / %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Qolmoqda: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d ta xato" msgstr[1] "%d ta xato" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d ta kiritilgan" msgstr[1] "%d ta kiritilgan" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (saqlanmagan)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (o‘zgartirilgan)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Tarjima xotirasi yangilanmadi: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Saqlab qo‘yish" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "O‘chirilgan tarjimalarni tozalash" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Uzoq vaqt foydalanilmagan barcha tarjimalarni o‘chirishni xohlaysizmi?" #: src/edframe.cpp:2879 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 "" "Agar tozalashda davom etsangiz, barcha o‘chirish uchun belgilangan " "tarjimalar butunlay o‘chiriladi. Agar ular keyinchalik kerak bo‘lib qolsa, " "yana tarjima qilishingiz kerak bo‘ladi." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Tozalash" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Manba matnidan nusxa ko‘chirish" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Manba matnidan nusxa ko‘chirish" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Tarjimani tozalash" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Tarjimani tozalash" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Sharhni tahrirlash" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Sharhni tahrirlash" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Yon panelni yashirish" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Yon panelni ko‘rsatish" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Holat qatorini yashirish" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Holat qatorini ko‘rsatish" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Manba matni" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Birlik" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Ko‘plik" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Tarjima" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "" #: src/editing_area.cpp:566 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 fayllar aslida faqat shablonlar hisoblanadi va ularning tarkibida hech " "qanday tarjima bo‘lmaydi.\n" "Tarjima qilish uchun shablonga asoslangan yangi PO fayl yarating." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Yangi tarjima yaratish" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Hammasi" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "%i shakli " #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nol" #: src/editing_area.cpp:788 msgid "One" msgstr "Bir" #: src/editing_area.cpp:790 msgid "Two" msgstr "Ikki" #: src/editing_area.cpp:804 msgid "Other" msgstr "Boshqa" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Tarjima — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Manba matn — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "noma’lum til" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Gettext kataloglarini birlashtirishda xatolik." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Tahrirlagichda ochish" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Tahrirlagichda ochish" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Topish" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Almashtirish" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Tanlamalar" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Katta-kichiklikni rad qilish" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Uzun qidiruv" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Faqat to‘liq so‘zlar" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Manba matnlaridan topish" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Tarjimalardan topish" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Sharhlardan qidirish" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "" #: src/findframe.cpp:150 msgid "&Replace" msgstr "" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Oldingi" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Keyingi >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Topish uchun qator" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Almashadigan qator" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Tarjima tili" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Tarjima tili:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - kataloglar boshqaruvchisi" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Tahrirlash…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Yangi tarjimalar loyihasini yaratish" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Loyihani o‘chirish" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Loyihani tahrirlash" #: src/manager.cpp:176 msgid "Update all" msgstr "Barchasini yangilash" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Loyihadagi barcha kataloglarni yangilash" #: src/manager.cpp:378 msgid "Total" msgstr "Jami" #: src/manager.cpp:379 msgid "Untrans" msgstr "Tarjima qilinmagan" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "" #: src/manager.cpp:381 msgid "Errors" msgstr "" #: src/manager.cpp:382 msgid "Last modified" msgstr "So‘nggi o‘zgartirish" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Direktoriyani tanlash" #: src/manager.cpp:433 msgid "Directories:" msgstr "Direktoriyalar:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "" #: src/manager.cpp:540 msgid "Delete project" msgstr "" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" #: src/manager.cpp:571 msgid "Confirmation" msgstr "Tasdiqlash" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Yangilanishlarni tekshirish…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Kataloglar menejeri" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Tahrirlash" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Orqaga qaytarish" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Qayta bajarish" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Nusxa olish va joylash uslubi" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "O‘chirish" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Imlo va grammatika" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Imlo va grammatikani ko‘rsatish" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Hujjatni hozir tekshirish" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Yozayotganda imlo xatolari tekshirilsin" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Grammatik xatolar imlo xatolar bilan birga tekshirilsin" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Imlo xatolar avtomatik to‘g‘rilansin" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Almashishlar" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Almashishlarni ko‘rsatish" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Qulay nusxa olish/Qo‘yish" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Qulay qo‘shtirnoqlar" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Qulay tirelar" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Qulay linklar" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Matnni almashtirish" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformatsiya" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Katta harf qilish" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Kichik harf qilish" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Katta harf qilish" #: src/menus.cpp:237 msgid "Speech" msgstr "Nutq" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Gapirishni boshlash" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Gapirishni to‘xtatish" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Ko‘rinishi" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Asboblar panelini ko‘rsatish" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Asboblar panelini moslash" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "\"Butun ekranda\" usuliga o‘tish" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Oyna" #: src/menus.cpp:263 msgid "Minimize" msgstr "Yig‘ish" #: src/menus.cpp:264 msgid "Zoom" msgstr "Kattalashtirish/Kichiklashtirish" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Poedit’ga xush kelibsiz" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Hammasini oldga o‘tkazish" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Tarjimon haqida ma’lumot" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nomi:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Ismingiz" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-pochtangiz:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ismingiz va e-pochtangiz manzilidan faqat GNU gettext fayllaridagi \"Last-" "Translator\" bosh qatorida foydalaniladi." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Tahrirlanmoqda" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Saylayotganda avtomatik tarzda MO fayl yaratilsin" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Imloni tekshirish" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Fokusni doimo matnni kiritish maydoniga o‘zgartirish" #: src/prefsdlg.cpp:211 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 "" "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." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Ko‘rinishi" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Boshqa shrift ro‘yxatidan foydalanish:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Matn maydonlari shriftini o‘zgartirish:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Grafik interfeys tilini o‘zgartirish" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 yoki yangirog‘i talab qilinadi)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Umumiy" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Tarjima xotirasidan foydalanish" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Saqlangan tarjimalar:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Diskdagi ma’lumotlar bazasi hajmi:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Tiklash" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Import qilish uchun tarjimalarni tanlang" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Quyidagiday eksport…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Tarjima xotirasini tiklash" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Tarjima xotirasini tiklamoqchi ekanligingizga ishonchingiz komilmi?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Tarjima xotirasini tiklash barcha joylashgan tarjimalarni xotiradan butunlay " "o‘chiradi. Siz bu jarayonni iziga qaytara olmaysiz." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TX" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Tarjima xotirasi" #: src/prefsdlg.cpp:730 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 "" "Manba kodi ajratgichlari manba kodi fayllaridagi tarjima qilinadigan " "qatorlarni topishda foydalaniladi va ularni tarjima qilish uchun ajratadi." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Ajratkichni o‘chirish" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "“%s†ajratkichni o‘chirmoqchimisiz?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Ajratgichlar" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Hisoblar" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Yangilanishlar avtomatik tekshirilsin" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Beta versiyalari ham" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta versiyalarda so‘nggi yangi xususiyatlar va yaxshilanishlar bo‘ladi, " "ammo biroz barqaror bo‘lmasligi mumkin." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Yangilanishlar" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Ushbu sozlamalar PO fayllarni ichki formatlashga ta’sir qiladi. Agar " "versiyani boshgarishga o‘xshagan maxsus talablaringiz bo‘lsa, uni " "to‘g‘rilang." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Qator tugashi:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (tavsiya qilingan)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Oynalar" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Ushbuda joylashtirish:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Mavjud fayllarni formatlashni saqlash" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Qo‘shimcha" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "" #: src/pretranslate.cpp:218 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 "" "TXda ushbu fayl tarkibi bilan bir xil qatorlar mavjud emas. U faqat Poedit " "siz tarjima qilgan fayllardan yetarlicha o‘rgangandan so‘ng avtomatik " "tarjima qilishida samaralidir." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Avtomatik tarjima" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Faqat to‘liq mos kelganlar bilan to‘ldirilsin" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Yo‘llar" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Qo‘shilmagan yo‘llar" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Qo‘shimcha kalit so‘zlar" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Tarjima loyihasi nomi" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "masalan: nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (tavsiya qilinadi)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "Avval faylni saqlang, Saqlamasangiz uchbu qismni tahrirlay olmaysiz." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "" #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Sharh:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&O‘chirish" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Loyihani tahrirlash" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Loyiha nomi:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Ko‘rish" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Ro‘yxatga direktoriyani qo‘shish" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Fayl" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Yangi" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "So‘nggisini ochish" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Kataloglar &menejeri" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Kataloglar &menejeri" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Yopish" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Saqlash" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Parametrlar" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "Chi&qish" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Chiqish" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Birlik shaklidan nusxa ko‘chirish" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Birlik shaklidan nusxa ko‘chirish" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "&Sharhni tahrirlash" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "&Sharhni tahrirlash" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Tavsiyalar" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Keyingisini topish" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Oldingisini topish" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Keyingisini topish" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Oldingisini topish" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "&Fayl tartibi bo‘yicha saralash" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "&Fayl tartibi bo‘yicha saralash" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "&Manba bo‘yicha saralash" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "&Manba bo‘yicha saralash" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "&Tarjima bo‘yicha saralash" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "&Tarjima bo‘yicha saralash" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "Matn bo‘yicha &guruhlash" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "Matn bo‘yicha &guruhlash" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Xato kiritilganlar birinchi" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Xato kiritilganlar birinchi" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Avval &tarjima qilinmaganlar" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Avval &tarjima qilinmaganlar" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Yon panelni ko‘rsatish" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Holat qatorini ko‘rsatish" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Crowdin bilan sinxronlash" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "Tarjimalarni to‘g‘rilash" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "Tarjimalarni &to‘g‘rilash" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&O‘chirilgan tarjimalarni tozalash" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&O‘chirilgan tarjimalarni tozalash" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&O‘tish" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Tayyor va keyingisi" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Tayyor va keyingisi" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Oldingi tarjima" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Oldingi tarjima" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Keyingi tarjima" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Keyingi tarjima" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "O&ldingi tugatilmagan" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "O&ldingi tugatilmagan" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Ke&yingi tugatilmagan" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Ke&yingi tugatilmagan" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Oldingi ko‘plik shakli" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Oldingi ko‘plik shakli" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Keyingi ko‘plik shakli" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Keyingi ko‘plik shakli" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Onlayn yordam" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Onlayn yordam" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext yo‘riqnomasi" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext yo‘riqnomasi" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "Poedit h&aqida" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "H&aqida" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Ajratgichni o‘rnatish" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "" "Nuqtali vergul bilan ajratilgan kengaytmalar ro‘yxati (masalan: *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Chaqirish:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Tarjimalarni ajratish buyrug‘i:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ushbu buyruqdan ajratgichni ishga tushirish uchun foydalaniladi.\n" "%o chiquvchi fayl nomiga, %K kalit so‘zlar ro‘yxatiga\n" "%F kiruvchi fayllar ro‘yxatiga,\n" "%C kodlash bayrog‘iga (quyidagini ko‘ring) ajratiladi." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Kalit so‘zlar ro‘yxatidagi band:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Har bir kalit so'zi uchun bir marta buyruq\n" "satriga ilova qilinadi. %k kalit so'z." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Kirish fayllari ro'yxatida element:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "U har bir kiruvchi fayl uchun buyruq satriga qo‘shiladi. %f fayl nomini " "anglatadi." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Manba kodi kodlash usuli:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Agar manba kodlash usuli berilgan bo‘lsa, u buyruq satriga\n" "ilova qilinadi. %c kodlash usuli qiymatini anglatadi." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Loyiha nomi va versiyasi:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Ushbu til uchun standart qoidalardan foydalanish" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Boshqa ifodadan foydalanish" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Ko‘plik shakllari haqida o‘rganish" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Kodlash usuli:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Tarjima xossalari" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Manbalar yo‘llari" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Quyidagi direktoriyalardagi manba fayllaridan matnni ajratish:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Asosiy yo‘l:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Manbalar kalit so‘zlari" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Ushbu kalit so‘zlar (funksiya nomlari)dan manba fayllaridagi\n" "tarjima qilinadigan qatorlarni tanish uchun foydalaning:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "gettext kalit so‘lari haqida o‘rganish" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "To‘g‘rilash" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Tarjimadagi xatolarni tekshirish" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Yon panel" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "" #: src/sidebar.cpp:196 msgid "Comment" msgstr "" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Sharh qo‘shish" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Sharh qo‘shish" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Topilmadi" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Topilmadi" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Ushbu qator Poedit’ning tarjima xotirasida topildi." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Dastur ishga tushirilmadi: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "" #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Standart tildan foydalanish)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Tilni tanlash" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Siznig avfzal tilingizni tanlash" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "" "O‘zgartirish amalga oshishi uchun Poedit’ni qayta ishga tushirishingiz kerak." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Vaqtinchalik direktoriya yaratilmadi." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Tarjimalar yo‘q. Bu noodatiy." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "POT fayldan yangilash" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Mavjud POT namunasidan tarjima qilinadigan qatorlarni oling." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Shuningdek, siz tarjima qilinadigan qatorlarni to‘g‘ridan to‘g‘ri manba " "kodidan ajratishingiz mumkin:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Manbalardan ajratish" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Xossalardan manba kodini ajratishni moslang." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "%s versiya" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sinxronlash" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Tarjimani Crowdin bilan sinxronlash" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "%s haqida" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s sozlamalar" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "%s haqida" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Xizmatlar" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "%sni yashirish" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Boshqalarini yashirish" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Barchasini ko‘rsatish" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "%sdan chiqish" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Parametrlar…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Sozlamalar..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Sozlamalar..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Qo‘llash" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Qo‘llash" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Orqaga" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Orqaga" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Bekor qilish" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Tozalash" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Tozalash" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Nusxa olish" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Kes&ish" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Kesib olish" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Tahrirlash" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "Chi&qish" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Yordam" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Yangi" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Yangi" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Yo‘q" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Yo‘q" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Ochish…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Ochish..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Ochish..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Qo‘yish" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Qo‘yish" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Shaxsiy sozlamalar" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Qayta bajarish" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Yangilash" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Boshqacha saqlash" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Boshqacha saqlash" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "B&archasini belgilash" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Barchasini belgilash" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Qaytarish" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Ha" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ha" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Tepaga" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Pastga" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Chapga" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "O‘ngga" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/sq.po0000644000175100001660000027051615011674230011110 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Albanian\n" "Language: sq_AL\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: sq\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Fshihe këtë mesazh njoftimi" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Mos e Shfaq Sërish" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Mos e shfaq sërish" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Përmbledhje Përditësimi" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Përditëso përmbledhjen" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Mbylle" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Probleme" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Kartelë" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Rresht" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problem" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Vargje të Rinj" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Vargje të rinj" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Vargje të Hequr" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Vargje të hequr" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Po grumbullohen kartela burim…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Po përftohen vargje të përkthyeshëm nga %s kartelë…" msgstr[1] "Po përftohen vargje të përkthyeshëm nga %s kartela…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "S’u arrit të ngarkohej kartela me përkthimet e përftuara." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Te: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Pa kod burim të gatshëm." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "S’u përditësuan dot përkthimet që prej kodit burim, ngaqë s’u gjet kod në " "vendin e treguar te Vetitë e kartelës." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Leje e mohuar." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "S’keni leje të lexoni kartela burim prej vendndodhjes së treguar te Vetitë e " "kartelës." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Nëse keni mohuar më parë hyrje te kartelat tuaja, mundeni ta lejoni që nga " "Rregullime Sistemi > Privatësi & Siguri > Kartela & Dosje." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Nëse ju është mohuar më herët hyrje te kartelat tuaja, mund ta lejoni që nga " "Parapëlqime Sistemi > Siguri & Privatësi > Privatësi > Kartela & Dosje." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "S’u arrit të përftohen vargje nga kodi burim." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Kartela “%s†s’u hap dot." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Përditësim kartelash përkthimi" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Po përcaktohet dallimet…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Po përzihen dallimet…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Kartela e përkthimit është tashmë e përditësuar, s’u bënë ndryshime te " "vargje." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Kartelë përkthimi qe përditësuar me %s ndryshim." msgstr[1] "Kartelë përkthimi qe përditësuar me %s ndryshime." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Vargje të rinj për t’u përkthyer:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Vargje të hequr (jo më të përdorur):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "U pikas %d problem me vargjet burim." msgstr[1] "U pikasën %d probleme me vargjet burim." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Shihni Hollësi…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Shihni hollësi…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Krye e keqformuar: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Kartela Përkthimi PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Gjedhe Përkthimi POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Kartela XLIFF Përkthimi" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Katalog Xcode Përkthimi" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Kartela JSON Përkthimi" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Kartela Flutter Përkthimi" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Krejt Kartelat e Përkthimit" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Kartela është në një format jo të njohur nga Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Kjo kartelë JSON s’është kartelë përkthimi dhe s’mund të përpunohet me " "Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Leximi i lëndës së kartelës dështoi me gabimin vijues: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Kartela “%s†është vetëm për lexim dhe s’mund të ruhet.\n" "Ju lutemi, ruajeni nën një emër tjetër." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "S’u ruajt dot kartela %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Foto ekrani:" #: src/catalog_po.cpp:134 #, 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 rresht i kartelës “%s†s’u ngarkua saktësisht." msgstr[1] "%i rreshta të kartelës “%s†s’u ngarkuan saktësisht." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "" "Rreshti %d i kartelës “%s†është i dëmtuar (pa të dhëna %s të vlefshme)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Kartelë PO e dëmtuar: vargje mesazhesh në njëjës përdorur bashkë me " "msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Kartelë PO e dëmtuar: vargje mesazhesh në shumës përdorur pa msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "S’u ngarkua dot kartela, ka gjasa të jetë dëmtuar." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Pati gabime gjatë ngarkimit të kartelës. Për pasojë, disa nga të dhënat mund " "të kenë humbur ose të jenë dëmtuar." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Pati një problem me formatimin si duhet të kartelës (por u ruajt në rregull)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Kartela s’u ruajt dot nën shkronjat “%s†e treguara në rregullime " "përkthimi.\n" "\n" "U ruajt nën UTF-8 dhe rregullimi u ndryshua për përputhje." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Gabim në ruajtje kartele" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†s’është kartelë POT e vlefshme." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Papritmas mungon lëndë te kartela XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Për kartela XCLOC nuk mbulohet ruajtje në një vendndodhje tjetër." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Gabim teksa ngarkohej kartelë XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "version i pambuluar (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Markup i dëmtuar në varg përkthimi." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Lidheni Poedit-in me platforma përkthimi në re që mbulon, për njëkohësim të " "pacen përkthimesh të administruara në to." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Si funksionon njëkohësimi me renë?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Llogari" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(pa bërë hyrjen)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Hapni përkthim në re" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Administroni llogari" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekt:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Gjuhë:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Hyni në Llogari Reje" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Hyni në llogari reje" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Në llogarinë tuaj s’ka projekte përkthimi." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Po shkarkohen përkthimet më të reja…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Bëni hyrjen në %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Njëkohësim" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Po ngarkohen përkthime në %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Ngarkimi i përkthimeve në %s dështoi." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Gabim njëkohësimi" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Shtoje" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Gabim Crowdin i panjohur." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Jo i autorizuar, ju lutemi, ribëni hyrjen." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Nuk mbulohen projekte Crowdin me bazë vargje." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Shkarkimi i përkthimeve është i çaktivizuar për këtë projekt." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Hyni" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Hyni" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Dilni" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Dilni" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Mësoni më tepër mbi Crowdin-in" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin është një platformë internetore administrii përkthimesh dhe një mjet " "përkthimesh në bashkëpunim. Ne vetë e përdorim Crowdin-in për përkthimin e " "Poedit-it në mjaft gjuhë dhe e duam fort." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Po pritet për mirëfilltësim…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Po përditësohen të dhëna mbi përdoruesin…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Hyni në Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Njëkohësimi me Crowdin-in dështoi." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Gabim Crowdin-i" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Po ngarkohen përkthime…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopjoje" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Mësoni më tepër" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Ndihmë" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Kartelat MO s’mund të përpunohen drejt e në Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Gabim gjatë hapjes së kartelës" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Ju lutemi, në vend të kësaj, hapni dhe përpunoni kartelën përgjegjëse PO. " "Kur ta ruani, do të përditësohet edhe kartela MO." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "mos fshi kartela të përkohshme (për diagnostikim)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "trajto një URI poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "shko tek objekti në rreshtin me numrin e dhënë" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "S’u arrit të komunikohej me procesin Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ndodhi një përjashtim i patrajtuar: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Përzgjidhni gjedhe përkthimi" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Kartelë e pavlefshme" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Përzgjidhni kartelë përkthimi" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit është një përpunues përkthimesh i lehtë për t’u përdorur." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "S’mund të jepni më tepër se një kartelë te dritarja Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Kartela “%s†s’është kartelë përkthimesh." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Kartela “%s†s’ekziston." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Kontrolli i drejtshkrimit është i çaktivizuar, ngaqë fjalori për %s s’është " "i instaluar." #: src/edframe.cpp:871 msgid "Install" msgstr "Instaloje" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Kartela “%s†është ndryshuar nga një tjetër aplikacion." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Ringarkoje kartelën" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Doni të ringarkohet kartela prej disku? Nëse e bëni, përpunimet tuaja të " "paruajtura në Poedit do të humbin." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Shpërfille" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Ringarkoje Kartelën" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Kartela është ndryshuar. Doni të ruhen ndryshimet?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Ruaji ndryshimet" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Ndryshimet tuaja do të humbasin, nëse s’i ruani." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Ruaje" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Mos e ruaj" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Mos e Ruaj" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "Ndryshimet e bëra nga aplikacioni tjetër do të humbin, nëse e ruani." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Anuloje" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Ruaje, Sido Qoftë" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Ruaje, sido qoftë" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Ruajeni si…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Përpiloje te…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Kartela Përkthimi të Përpiluara" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Eksportojeni si HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Kartela HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Eksportim si HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Përditësimi dështoi" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Hap kartelë referencë" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Përditësojeni prej Kartele &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Përditësojeni prej kartele &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "U gjet %d problem te përkthimi." msgstr[1] "U gjetën %d probleme te përkthimi." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Përfundime vleftësimi" #: src/edframe.cpp:1842 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 "" "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ë." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Kartela u ruajt pa cen." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Kartela u ruajt pa cen dhe u përpilua nën formatin MO, por sipas gjasash " "s’do të funksionojë si duhet." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Kartela u ruajt pa cen, por s’përpilohet dot në formatin MO dhe të përdoret." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Kartela u përpilua nën formatin MO, por sipas gjasash s’do të funksionojë si " "duhet." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Kartela s’përpilohet dot në formatin MO dhe të përdoret." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "S’u gjetën probleme me përkthimin." #: src/edframe.cpp:1894 #, 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 %d zë është ende i papërkthyer." msgstr[1] "" "Përkthimi është gati për përdorim, por %d zëra janë ende të papërkthyer." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Përkthimi është gati për përdorim." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit-i ndreqi vetvetiu lëndë të pavlefshme te kartela “%sâ€." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Kartela përmbante zëra të përsëdytur, çka në kartelat PO s’lejohet dhe mund " "të pengojë përdorimin e kartelës. Poedit e ndreqi problemin, por do të duhej " "që të shqyrtonit përkthimet e cilitdo zë të shënuar si i turbullt dhe t’i " "ndreqni ato, në qoftë e nevojshme." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "S’është caktuar gjuha e përkthimit." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Caktoni Gjuhën" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Caktoni gjuhën" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "S’jepen sugjerime, në rast se gjuha e përkthimi s’është caktuar saktë. Kjo " "mund të prekë edhe veçori të tjera, format e shumësit, për shembull." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Gjuha e përkthimit është e njëjtë me gjuhën burim." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Ndreqeni Gjuhën" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Ndreqeni gjuhën" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Kjo kartelë ka zëra me forma shumësi, por s’ka të formësuar fushën Plural-" "Forms." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Zërat në këtë kartelë kanë forma shumësi të ndryshme nga çka tregohet te " "fusha Plural-Forms e katalogut" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "I mungon krye e domosdoshme Plural-Forms." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Gabim sintakse te kryet Plural-Forms (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Ndreqni Kryet" #: src/edframe.cpp:2383 msgid "Fix the header" 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 #. to rephrase it, e.g. to an equivalent of "for language %s". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "Shprehja për forma shumësi e përdorur nga kartela është e pazakontë për %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Shqyrtojeni" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Doni të përdoret anglishtja për tekst burim?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Kjo kartelë përdoru ID vargjesh, në vend se tekst burim. Poedit-i mund të " "ngakojë për ju tekste anglisht nga kartela “%sâ€." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Ngarko anglishten" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Të përkthyera: %d nga %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Të mbetura: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d gabim" msgstr[1] "%d gabime" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d zë" msgstr[1] "%d zëra" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (i paruajtur)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (i ndryshuar)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "S’u arrit të përditësohej kujtesë përkthimesh: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "S’u ruajt dot kartela “%sâ€." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Hiq përkthime njësoj-me-burimin" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Doni të hiqen krejt përkthimet që janë identike me tekstin burim?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Ky veprim do të heqë çfarëdo përkthimesh që përputhen saktësisht me tekstin " "burim. Ky veprim s’mund të zhbëhet." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Mbaji" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Hiqi" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Spastroji përkthimet e fshira" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Doni të hiqen krejt përkthimet që s’përdoren më?" #: src/edframe.cpp:2879 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, krejt përkthimet e shënuara si të fshira do të " "hiqen përgjithmonë. Do t’ju duhet t’i ripërktheni, nëse shtohen sërish në të " "ardhmen." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Spastroji" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Kopjoje prej teksti burim" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopjoje prej Teksti Burim" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Spastroje përkthimin" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Spastroje Përkthimin" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Përpunoni koment" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Përpunoni Komentin" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Hasje Në Kod" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Hasje në kod" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Fshihe Anështyllën" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Shfaqe Anështyllën" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Fshihe Shtyllën e Gjendjeve" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Shfaqe Shtyllën e Gjendjeve" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Gjatësi vargu në shenja: përkthim | burim" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Gjatësi vargu në shenja" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Teksti burim" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Njëjës" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Shumës" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Përkthim" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Përkthyer paraprakisht" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Lyp Punë" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Lyp punë" #: src/editing_area.cpp:566 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 "" "Kartelat POT janë thjesht gjedhe dhe s’përmbajnë ndonjë përkthim.\n" "Që të bëni një përkthim, krijoni një kartelë të re PO të bazuar te gjedhja." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Krijoni përkthim të ri" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Krijoni një përkthim të ri nga kjo kartelë POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID teksti burim" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Gjithçka" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Formular %i (i papërdorur)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Zero" #: src/editing_area.cpp:788 msgid "One" msgstr "Një" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dy" #: src/editing_area.cpp:804 msgid "Other" msgstr "Tjetër" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Kontekst vargu: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identifikues vargu: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Format %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Përkthim — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Teksti burim — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "gjuhë e panjohur" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Gabim rrjeti: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Gabim i panjohur" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "S’u arrit të përziheshin katalogë gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Hape në Përpunues" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Hape në përpunues" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Te kartela s’është dhënë informacion mbi hasjet e këtij vargu te kodi burim." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "S’ka të dhëna përdorimi" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d hasje në kod" msgstr[1] "%d hasje në kod\t" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "S’u gjet kod burim" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit-i s’mund të shfaqë kod burim ku është përdorur vargu, ngaqë kartela " "ose s’gjendet në vendin e treguar, ose është një lidhje simbolike që nuk " "shpie te një kartelë reale." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Kartela s’hapet dot" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit-i s’qe në gjendje të hapë kartelën “%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Gjej" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Zëvendësoje" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Mundësi" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Shpërfille shkrimin me të madhe/me të vogël" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Mbështille" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Vetëm fjalë të plota" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Gjej në tekste burim" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Gjej në përkthime" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Gjej në komente" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Zëvendësoji &Krejt" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Zëvendësoji &krejt" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Zëvendësoje" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< I &mëparshmi" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Pasuesi >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Varg për t’u gjetur" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Varg zëvendësimi" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "kujdes: " #: src/gexecute.cpp:171 msgid "error: " msgstr "gabim: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Emër ose kode gjuhe" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Gjuhë Përkthimi" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Gjuha e përkthimit:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Krejt vargjet" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "S’u shkakrkuan dot hollësi projekti Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Pati një gabim, teksa ngarkoheshin përkthime te Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projekte" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Mësoni më tepër rreth %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy është një platformë shumë e automatizuar përkthimesh që i lejon " "kujtdo të përkthejë produktet dhe lëndën e vet kollaj në gjuhë të shumta." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Shtoni Projekt" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Shtoni projekt" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Përgjegjës katalogësh" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Përpunoni…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Krijoni projekt të ri përkthimi" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Fshije projektin" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Përpunoni projektin" #: src/manager.cpp:176 msgid "Update all" msgstr "Përditësoji krejt" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Përditëso tërë katalogët në projekt" #: src/manager.cpp:378 msgid "Total" msgstr "Gjithsej" #: src/manager.cpp:379 msgid "Untrans" msgstr "Papërkth" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Lyp Punë" #: src/manager.cpp:381 msgid "Errors" msgstr "Gabime" #: src/manager.cpp:382 msgid "Last modified" msgstr "Ndryshuar së fundi" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Përzgjidhni drejtori" #: src/manager.cpp:433 msgid "Directories:" msgstr "Drejtori:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Doni të fshihet projekti “%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Fshije projektin" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Fshirja e projektit s’do të fshijë ndonjë kartelë përkthimi." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Ripohim" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Të përditësohen krejt katalogët në këtë projekt?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Kryen përditësim që nga kodi burim mbi krejt kartelat te projekti." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Po përditësohen katalogë projekti" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Kontrollo për Përditësime…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Përgjegjës Katalogësh" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Parapëlqime…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Përpunoni" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Zhbëje" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Ribëje" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Ngjite dhe Përputhi Stilin" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Fshije" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Drejtshkrim dhe Gramatikë" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Shfaq Drejtshkrim dhe Gramatikë" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Kontrolloje Dokumentin Tani" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Kontrolloji Drejtshkrimin Teksa Shtypet" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Kontrollojini Gramatikën Me Drejtshkrimin" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Ndreqe Vetvetiu Drejtshkrimin" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Zëvendësime" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Shfaq Zëvendësime" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Kopjim/Ngjitje e Mençur" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Thonjëza të Mençura" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Vija Ndarëse të Mençura" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Lidhje të Mençura" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Zëvendësim Teksti" #: src/menus.cpp:230 msgid "Transformations" msgstr "Shndërrime" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Kaloje në Shkronja të Mëdha" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Kaloje në Shkronja të Vogla" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Shkronja e parë e madhe" #: src/menus.cpp:237 msgid "Speech" msgstr "E folur" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Filloni të Folurën" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Ndalni të Folurën" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Parje" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Shfaq Panelin" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Përshtateni Panelin…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Kaloni Në Gjendjen Sa Krejt Ekrani" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Dritare" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimizoje" #: src/menus.cpp:264 msgid "Zoom" msgstr "Zoom" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Mirë se vini te Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Sill Gjithçka Përpara" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Të dhëna rreth përkthyesit" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Emër:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Emri Juaj" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Email:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "ju@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Emri dhe email-i juaj përdoren vetëm për të plotësuar fushën Last-Translator " "të kartelave GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Përpunim" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Gjatë daljes, përpilo vetvetiu kartelën MO" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Kontrolloji drejtshkrimin" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Ndryshoje përherë fokusin për te fushë futjeje teksti" #: src/prefsdlg.cpp:211 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ë 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." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Dukje" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Përdor shkronja vetjake liste:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Përdor shkronja vetjake për fusha tekstesh:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Ndryshoni gjuhën për UI-në" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(lyp Windows 8 ose më të ri)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Të përgjithshme" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Përdor kujtesë përkthimesh" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Administroni…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Kur përditësohet që nga burimi" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "plotëso përputhje të turbullta nga kartela" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "përkthe paraprakisht prej KP-je" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit-i mund të provojë të plotësojë zëra të rinj që nga përkthime të " "dikurshme vetëm prej kartelës, ose prej krejt kujtesës së përkthimit. " "Përdorimi i KP-së s’do të jetë kushedi çë i efektshëm, nëse kjo është " "thuajse e zbrazët, por do të përmirësohet, dora-dorës që shtoni përkthime në " "të." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Përkthime të depozituara:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Madhësi baze të dhënash në disk:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importoni Kartela Përkthimi…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importoni kartela përkthimi…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importoni Prej TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importoni prej TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Eksportoni Në TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Eksportoni në TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Zeroje" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Përzgjidhni kartela përkthimi për importim" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Përzgjidhni kartela TMX për importim" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Kartela TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Po importohen përkthimet…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Importimi i kujtesës së përkthimeve dështoi." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Po importoht nga “%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "U importua %s përkthim." msgstr[1] "U importuan %s përkthime." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Eksportojeni si…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Po eksportohen përkthime…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Eksportimi i kujtesës së përkthimeve në “%s†dështoi." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Të zerohet kujtesa e përkthimeve" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Jeni i sigurt se doni të zerohet kujtesa e përkthimeve?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Zerimi i kujtesës së përkthimit do të shkaktojë fshirjen, pa prapakthim, të " "krejt përkthimeve të depozituara në të. Këtë veprim s’mund ta zhbëni." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "KP" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Kujtesë Përkthimesh" #: src/prefsdlg.cpp:730 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 "" "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." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Përftues të Përshtatur:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Përftues të përshtatur:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Mbulon krejt gjuhët e programimit të pranuara nga mjete GNU gettext (PHP, C/" "C++, C#, Perl, Python, Java, JavaScript, etj)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Fshije përftuesin" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Jeni i sigurt se doni të fshihet përftuesi “%sâ€?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Përftues" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Llogari" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Kontrollo vetvetiu për përditësime" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Përfshi versione beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Versionet beta përmbajnë veçoritë dhe përmirësimet më të reja, por mund të " "jenë më pak të qëndrueshme." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Përditësime" #: src/prefsdlg.cpp:1127 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 prekin formatim të brendshëm të kartelave PO. Prekini nëse " "keni domosdoshmëri specifike, për shembull, për shkak sistemi kontrolli " "versionesh." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Funde rreshtash:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (e këshillueshme)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Mbështille në gjatësinë:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Ruaje formatimin e kartelave ekzistuese" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Të mëtejshme" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Rregullime" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Po përgatiten vargjet…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Po bëhet përkthim paraprak prej kujtesës së përkthimeve…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u varg i përkthyer paraprakisht" msgstr[1] "%u vargje të përkthyer paraprakisht" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Parapërkthim…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "U përkthye paraprakisht %d zë." msgstr[1] "U përkthyen paraprakisht %d zëra." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Përkthimet janë shënuar si të turbullta, ngaqë mund të jenë të pasakta. Do " "të duhej t’u kontrollonit saktësinë." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Përkim të përpikta nga TM" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Përkime të përafërt nga TM" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "S’u përkthye dot paraprakisht ndonjë zë." #: src/pretranslate.cpp:218 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 "" "KP-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 të grumbullojë " "mjaftueshëm lëndë prej kartelave që përktheni dorazi." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "S’mund të bëhet përkthim paraprak pa tekst burim." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Përkthim paraprak" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Përkthimi paraprak lyp prani të tekstit burim. S’funksionon, nëse përdoren " "vetëm ID, pa tekstin faktik." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "S’mund të bëhet përkthim paraprak prej një gjuhe të panjohur." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Përkthimi paraprak lyp që gjuha e tekstit burim të njihet. Poedit-i s’e " "pikasi dot në këtë kartelë." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Plotëso vetëm përputhjet e përpikta" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Si parazgjedhje, përfshihen edhe përfundime jo të përpikta, por me shenjën " "se duan punë. Që të përfshihen vetëm përputhje të përpikta, i vini shenjë " "kësaj mundësie." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Përputhjeve të përpikta mos u vër shenjë si të lypnin punë" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Aktivizojeni vetëm nëse besoni në cilësinë e KP-së suaj. Si parazgjedhje, " "krejt përputhjet prej KP-së shënohen si të turbullta dhe do të duheshin " "marrë në shqyrtim." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Parapërkthimi gjen në kujtesën e përkthimeve përputhje të sakta ose të " "përafërta për vargje përkthimesh dhe i plotëson ato në kutizën e përkthimit." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Gabim: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "Ndodhi %d gabim:" msgstr[1] "Ndodhën %d gabime:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Ndodhi një gabim." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "Ndodhi %d gabim." msgstr[1] "Ndodhën %d gabime." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Po anulohet…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Tërhiqni Këtu Dosje ose Kartela" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Tërhiqni këtu dosje ose kartela" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Shtoni Dosje…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Shtoni dosje…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Shtoni Kartela…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Shtoni kartela…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Shtoni Shenja të Gjithëpushtetshme…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Shtoni shenja të gjithëpushtetshme…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Shfaqe në Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Shfaqe në Explorer" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Shfaqe në Dosje" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Shtigje" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Shtigje të përjashtuar" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Rregullime të thelluara përftimesh" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Përfto shënime për përkthyesin nga:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Komente të paraprira me:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Krejt komentet" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Shenja xgettext shtesë:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Fjalëkyçe shtesë" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Emri i projektit për të cilin bëhet përkthimi" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Emër ekipi dhe adresë email ose URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p.sh. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (e këshillueshme)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Ju lutemi, së pari ruajeni kartelën. Kjo pjesë s’mund të përpunohet para " "ruajtjes." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Saktësi vendmbajtësesh" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Në përkthim mungon vendmbajtësja “%sâ€." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Vendmbajtëse e tepërt “%s†që s’gjendet në tekstin burim." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Përkthime formash shumësi" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "S’janë përkthyer krejt format e shumësit." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Shkronja të mëdha/të vogla jo njësoj" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Përkthimi duhet të fillojë me një togfjalësh." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Përkthimi duhet të fillojë me një shkronjë të vogël." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Hapësira të zbrazëta jo njësoj" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Përkthimi nuk fillon me një hapësirë." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Përkthimi fillon me një hapësirë, por jo burimi." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Përkthimit i mungon një simbol rreshti të ri në fund." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Përkthimi përfundon me një simbol rreshti të ri, por jo burimi." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Përkthimit i mungon një hapësirë në fund." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Përkthimi përfundon me një hapësirë, por jo burimi." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Kontrolle pikësimi" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Përkthimi duhet të mbarojë me një “%sâ€." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Përkthimi s’duhet të mbarojë me një “%sâ€." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Përkthimi përfundon me “%sâ€, por teksti burim përfundon me “%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Re" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Spastroje Menunë" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Spastroje menunë" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Koment:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Përditësoje" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Fshije" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Fshije komentin" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Përpunoni projekt" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Emër projekti:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Shfletoni" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Shtoni drejtori te lista" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Kartelë" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "E &re…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "E re prej kartele &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "E re prej Kartele &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Hapni…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Hap Një Nga të Rejat" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Hap një nga të rejat" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Hapni përkthim në re…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Hapni Përkthim Në Re…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Dritare &nisjeje" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Dritare &Nisjeje" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Përgjegjës katalogësh" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Përgjegjës Katalogësh" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Mbylle" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Ruaje" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Ruajeni &si…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Ruajeni &Si…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Përpilojeni si MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&ksportoje si HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Kontrollo për përditësime…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Rregullime…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Parapëlqime" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Dil" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Mbylle" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopjoje prej njëjësit" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopjoje Prej Njëjësit" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Përkthimi lyp &punë" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Përkthimi Lyp &Punë" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Përpunoni &koment" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Përpunoni &Komentin" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Sugjerime" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Gjeni…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Zëvendësoni…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Gjej pasuesin" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Gjej të mëparshmin" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Gjeni dhe Zëvendësoni…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Gjej Pasuesin" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Gjej të Mëparshmin" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Shfaq &ID vargu" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Shfaq &ID Vargu" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Shfaq sinjalizime" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Shfaq Sinjalizime" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Renditi sipas rendi &kartelash" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Renditi sipas Rendi &Kartelash" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Renditi sipas &burimesh" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Renditi sipas &Burimesh" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Renditi sipas &përkthimesh" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Renditi sipas &Përkthimesh" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Grupoji sipas kontekstit" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Grupoji Sipas Kontekstit" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Së pari zërat me gabime" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Së Pari Zërat me Gabime" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Së pari zërat e &papërkthyer" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Së Pari Zërat e &Papërkthyer" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Shfaq hasje në kod" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Shfaq Hasje Në Kod" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Shfaq anështyllë" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Shfaq shtyllë gjendjesh" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Përkthim" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Përditësoje prej kodi burim" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Përditësoje prej Kodi Burim" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Njëkohësoje me Crowdin-in" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Përkthe p&araprakisht…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Vleftësoni përkthime" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Vleftësoni Përkthime" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Hiq Përkthime Njësoj-Me-Burimin" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Spastroji përkthimet e fshira" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Spastroji Përkthimet e Fshira" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Veti…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Lëvizje" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&U bë, tjetri" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&U bë, Tjetri" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Përpunuar më parë" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Përpunuar Më Parë" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Përkthimi i &mëparshëm" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Përkthimi i &Mëparshëm" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Përkthimi &pasues" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Përkthimi &Pasues" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "I më&parshmi i pambaruar" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "I më&parshmi i Pambaruar" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Pas&uesi i pambaruar" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Pas&uesi i Pambaruar" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Forma e mëparshme e shumësit" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Forma e Mëparshme e Shumësit" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Forma pasuese e shumësit" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Forma Pasuese e Shumësit" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Ndihmë në &Internet" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Ndihmë Në &Internet" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Doracaku &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Doracaku &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Mbi Poedit-in" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Mbi" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Rregullim i përftuesit" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Listë zgjatimesh, të ndarë me pikëpresje (p.sh. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Thirrje:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Urdhër për përftim përkthimesh:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ky është urdhri i përdorur 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ë)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Një zë në listë fjalëkyçesh:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Kjo do t’i bashkëngjitet rreshtit të urdhrave një herë\n" "për çdo fjalëkyç. %k bëhet vlera e fjalëkyçit." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Një zë në listë futje kartelash:" #: src/resources/prefs.xrc:107 #, 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’i bashkëngjitet rreshtit të urdhrave një herë\n" "për çdo kartelë hyrje. %f bëhet emri i kartelës." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Shkronja kodi burim:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Kjo do t’i bashkëngjitet rreshtit të urdhrave\n" "vetëm nëse janë dhënë shkronja kodi burim. %c bëhet emri i shkronjave." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Veti Përkthimesh" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Emër dhe version projekti:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Ekip gjuhe:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Forma shumësi:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Për këtë gjuhë përdor rregullat parazgjedhje" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Përdor shprehje vetjake" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Mësoni më tepër rreth formash shumësi" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Shkronja:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Rregullime të Thelluara Përftimesh…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Rregullime të thelluara përftimesh…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Veti përkthimesh" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Shtigje Burimesh" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Shtigje burimesh" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Përfto tekst prej kartelash burim nga drejtoritë vijuese:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Shteg bazë:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Fjalëkyçe Burimesh" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Fjalëkyçe burimesh" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Përdorini këta fjalëkyçe (emra funksionesh) për të dalluar vargje të " "përkthyeshëm\n" "te kartelat burim:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Veç kësaj, përdor fjalëkyçe parazgjedhje për gjuhët e mbuluara" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Mësoni rreth fjalëkyçesh gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Hap kartelë" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Ruaje kartelën" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Vleftësoje" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Kontrolloni për gabime te përkthimi" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Përditësoje prej kodi" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Përditësoje prej Kodi" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Përditësoje prej kodi burim" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Anështyllë" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Teksti burim i dikurshëm" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Teksti burim i dikurshëm (përpara se të ndryshohej gjatë një përditësimi) të " "cilit i takon përkthimi tanimë jo i saktë." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Shënime për përkthyesit" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Koment" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Shto koment" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Shtoni Koment" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Fshije Prej Kujtesës së Përkthimeve" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Fshije prej kujtesës së përkthimeve" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Sugjerime përkthimi" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "S’u gjetën përputhje" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "S’u Gjetën Përputhje" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Ky varg u gjet në kujtesën e përkthimeve të Poedit-it." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Sugjerimet e përkthimeve lypin praninë e tekstit burim. S’funksionojnë, nëse " "përdoren vetëm ID, pa tekstin faktik." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Sugjerime përkthimi lypin që gjuha e tekstit burim të njihet. Poedit-i s’e " "pikasi dot në këtë kartelë." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "S’përmbushet dot programi: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Kartela TMX është e keqformuar." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Baza e të dhënave të kujtesës së përkthimeve është dëmtuar: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Gabim kujtese përkthimesh: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Përdor gjuhë parazgjedhje)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Përzgjedhje gjuhe" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Përzgjidhni gjuhën tuaj të parapëlqyer" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Duhet të rinisni Poedit-in, pa të hyjnë në fuqi ndryshimet." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "S’krijohet dot drejtori e përkohshme." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "S’ka përkthime. Kjo është e pazakontë." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Zërat e përkthyeshëm s’shtohet dorazi te sistemit Gettext, por përftohen " "automatikisht nga kodi burim. Në këtë mënyrë mbesin të përditësuar dhe të " "përpiktë. Përkthyesit zakonisht përdorin kartela gjedhe PO (POT-e) të " "përgatitur për ta nga zhvilluesi." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Mësoni më tepër mbi GNU gettext-in" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Rruga më e lehtë për të plotësuar këtë kartelë me vargje për përkthim është " "të përditësohet prej një POT-i:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Përditësojeni prej POT-i" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Merri vargjet e përkthyeshëm prej një gjedheje POT ekzistuese." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Mund të përftoni vargje të përkthyeshëm edhe drejt e nga kodi burim:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Përftoji prej burimesh" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Formësoni përftim nga kodi burim, te Vetitë." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versioni %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Krijoni të ri" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Krijoni përkthim të ri nga një gjedhe POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Shfletoni kartela" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Hapni dhe përpunoni kartela përkthimi." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Përktheni projekt në re" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Bashkëpunoni me persona të tjerë në internet." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Kartela së fundi" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Njëkohësoje" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Njëkohësojeni përkthimin me atë në Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Mbi %s-in" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Parapëlqime mbi %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Mbi %s-in" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Shërbime" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Fshihe %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Fshihi të Tjerët" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Shfaqi Krejt" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Mbylleni %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Parapëlqime…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Parapëlqime…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Parapëlqime…" #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Zbatoje" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Zbatoje" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Mbrapsht" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Mbrapsht" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Anuloje" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Spastroje" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Spastroje" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopjoje" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Prije" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Prijeni" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Përpunoni" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Mbylle" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Ndihmë" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "E &re" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "E re" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Jo" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Jo" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Hapni…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Hapni…" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Hapni…" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Ngjite" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Ngjitni" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Parapëlqime" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Ribëje" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Rifreskoje" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Ruaje si" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Ruaje si" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Përzgjidhe &Krejt" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Përzgjidheni Krejt" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Zhbëje" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Po" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Po" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "ENTER" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Left" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Right" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Kujdes: " poedit-3.6.3/locales/lt.mo0000644000175100001660000016047315011674364011111 Þ•ªl¼*ø8 ù8 9&979<K9ˆ9&›9&Â9Jé9g4: œ:¦: µ:¿: Æ:Ô:Û:á:é:ð:÷:ý:;;#;);/;8;L;`;d;v;ˆ;Ž;“;›;£;µ;Ç;Ë; Ï; Ü;é;ò;û; <<<5<K<Z<v<’<˜<ž<§<­<¶<Í< ä< ò< = ==/=K=d=}=”=«=±=¶=Í=Ý= û= >>>">+> /> ;>H> W>c> s>> ™>¦> µ>Á>Ñ>å>? ?)?F?f? |? ‰?1•?'Ç?ï?@@ 9@D@7J@6‚@¹@)Ù@A A]AqA<„ADÁA$B+B 2B?B FB"TBwB)’B ¼BÇBÙBëBüBCC+CGCcC#xCœC±CÀC ÆCÑC ãCîCDD DD%.DTD oDD˜D¡D¹D ÊDØD/óD #Ek0EœE¡E´EÊEÝEóE1FDF ]FhF)F©F ÉFª×F‚G‡GšG­GÂGÆGÝGäGHH3HBHUH;hH¤H ¿H'ÌH^ôHLSI? I àI îIûI*J9J"LJ5oJ¥JÀJÛJáJôJ ùJ K K "K /KgMg fgsgƒg “g¡g©g±gºg ÂgÐgãgìgõg h h h,h@hPhehyh‰hžh†³h:iUi kiwi†i™i ªi¸i Éi×iKÞi*j?j Nj\jqj„jšj1¶jèj0÷j (k 6kŽBk=Ñkll”l(¦lÏl ×lål+m.m 1m8;m"tm—m¨mknC†n8ÊnîoŸòo8’p1ËpRýpcPqQ´qr'!r:Irl„rPñr-BsCpsA´sKös0Bt.stŽ¢t!1u)Su-}u+«u8×uCvuTv,ÊvL÷v]Dw…¢wJ(x[sxoÏx«?y7ëym#z_‘z[ñzM{S{c{{{ ˜{¤{¹{Ì{ä{2û{".|Q|i|€|~˜|}ˆ*}³}·}Ë} Ð}ñ}~ ~)~1~8~ G~"R~$u~š~³~Ì~Ý~í~þ~%-=Wm$НÏéÿ€#2€VV€­€Ä€Í€ à€ë€ %@QX.` ›¤¼HÀ5 ‚m?‚7­‚ å‚3ï‚a#ƒ…ƒŠƒƒ.¬ƒ Ûƒüƒ„ „@„W„i„|„Ž„¡„³„Ƅڄê„û„ … …9…Q…m…Œ…¤…½…Ö…ì…ý… † †!0†R† bˆnˆT~ˆ/Óˆ•‰)™‰JÉJŠoYŠÕÉŠ Ÿ‹ «‹ ¸‹Ä‹ Ê‹׋à‹ ç‹ ó‹ þ‹ ŒŒŒ/ŒBŒIŒ QŒ[ŒpŒ…Œ‹Œ¦Œ ÁŒËŒ ӌތçŒ÷Œ & : FR [ guŠ Ÿ¬Ìì û Ž ŽŽ-ŽIŽeŽvŽ ‡Ž ‘Ž œŽ ½Ž!ÞŽ!"7LU[y*Š µ à ÎÜäíö 2Ecw–©¾Ñï‘ $‘(/‘%X‘(~‘§‘¼‘Í‘AÜ‘'’F’#U’"y’ œ’¦’2®’+á’+ “.9“h“n“f‚“é“J”cK”(¯”ؔᔠñ” ü”! • ,•5M•ƒ•›•±•Ǖܕ ô•þ•–4– N–!o– ‘–²– Ä–ΖÞ–ñ–——— &— 3—1@—r—’— ®— ¹—Å—á—ö—˜>#˜ b˜„p˜ õ˜ÿ˜™:™U™u™5•™Ë™é™ø™)š!:š\šÒkš >›I›]›q› ›™› ¶› À›á› ù›œ-œCœ:Wœ’œ ©œ(³œmÜœSJ:ž Ù æó9ž@ž!Sž4už"ªž"Ížðžùž ŸŸ1ŸGŸ\ŸqŸ…Ÿ™Ÿ ¢Ÿ ¯Ÿ ¼ŸÊŸ L  m pŽ ÿ ¡$/¡T¡]¡e¡l¡¡•¡©¡À¡Ö¡2ì¡¢9¢!X¢Cz¢Õ¾¢”£ «£¹£/Ø£$¤*-¤X¤_¤v¤"”¤d·¤¥%¥4¥E¥Z¥p¥¥ ¥¯¥À¥Ï¥Þ¥ñ¥¦¦%¦ <¦H¦ O¦[¦d¦}¦–¦(¯¦ئ¢Û¦‹~§ ¨,¨A¨W¨u¨‹¨©¨&ƨí¨©©7'©_©r©©–© ¨©¶© ¿©É©Þ©2橪4ªCªWªjªqª/‡ª$·ª ܪæª «*#«@N««C£«ç«@ý«>¬T¬+l¬˜¬·¬ ȬÔ¬ ë¬,÷¬$­,­=­N­d­z­Ç­X®_®{®‹®§®·®Ï®ç®ê®7þ®G6¯~¯’¯)«¯Õ¯(ò¯0°L°`°f°Ãm°"1±T±s±%±¶±Ò±ñ±²²)² F² Q² \²f²k²²—²ª²†Á²H³P³o³Av³¸³%˳ñ³w ´S„´ Ø´ä´?µAµVµ]µB{µ ¾µªÉ¶3t·%¨·ηç·ü·‘¸/¦¸Ö¸‘ñ¸sƒ¹ ÷¹ º ºº%3ºYºwº•º±ºź Ùºúº » »%» 9»C» b»2p»£» ¾»È»Ú»ó» ¼ ¼, ¼,M¼z¼¼ ¼©¼º¼ʼ ܼ+è¼½½~6½µ½ ɽ ×½â½ö½ ¾¾0¾ @¾M¾c¾u¾ˆ¾™¾#«¾Ͼä¾.ý¾,¿ H¿i¿z¿ Š¿ ”¿¡¿¹¿׿ï¿ÀÀ.ÀAÀ]À"lÀÀ§À¿ÀÓÀæÀ öÀ Á ÁÁ-Á FÁ QÁ#]Á ÁÁ£Á!¹Á&ÛÁÂ!!Â&CÂj‰¥Â6ÃUÃoÀÓëÃËÃãÃÄÄ<!Ä^ÄsĈěİÄÈÄáÄ2þÄ1Å/BÅ rÅ }ʼnÅBƆ]ÆäÆóÆ(Ç<ÇMÇ$bÇ7‡Ç¿Ç ÂÇ1ÍÇ3ÿÇ3ȹEÈÿÈCÉ2_Éù’ÉŒÊ3Ë*PËU{Ë[ÑËV-Ì„Ì  Ì'ÁÌTéÌS>Í#’ÍL¶ÍCÎ:GÎ4‚Î)·Î÷áÎÙÏöÏ!Ð*8Ð,cÐCÐqÔÐFÑDbÑH§Ñ‘ðÑO‚Ò`ÒÒv3ÓÕªÓ1€Ôo²Ôo"Õq’ÕÖ ÖÖ9ÖVÖ _ÖmÖÖšÖ5«Ö#áÖ× ×1×rD×·×kÇ×3Ø6Ø MØ,WØ„ØšØ´Ø ÅØ ÏØÚØðØ#Ù,&ÙSÙpÙ Ù%®Ù ÔÙ õÙÚ ,Ú9ÚMÚlÚ$Ú#¤ÚÈÚäÚúÚ Û'4Û,\Û‚‰Û& Ü 3Ü>Ü VÜ aÜ ‚ÜÜ!¤ÜÆÜÝÜäÜ2ìÜÝ/ÝAÝWÝH\Ý<¥ÝZâÝ5=Þ sÞ6Þt¸Þ-ß 3ß>ß-Tß ‚ߣß+¬ß&Øßÿßàà à'à-à 5à?àFàOàSàXà^à fà qà àŒà à §à´àÐààà ùàá#áÄ©iBÈ\ÿ²³ážXxî8–N#sˆµL>ƒ@šcVºâK©jt*¥Á&Ž<X˜ˆEêûëÖ lí|ת%Ÿ<)ÂzŒÓ}¸ߦøb|2¼Æ‚Z  ^S*¹QöjÕV““1ì“)qÝ’œy¾™f£Šaä§-(V\8(ÊŽžu—j WJ¤kRZUv¯²• Øh ”æ0c„¥ r_}Ú(üÀõgËŠyoAhB;`Y­fpOà,9´"lé@6.CÌ Î&Ï8Ð+éúÑD‘ªAÅS‘˜¾÷ø]k!=[w«½›òK!QEU­˜dž%÷•?¢eš%ñ5mûM…o$ßðõ‹7 ¨:Ú†:‡DçÉ—‹«zœH+w‡rãIèˆPô_/ªúIÔ‘Çq†9C”Ã`¡£„Î,ÀS)¼~y®d€abœ6®c>çë 2p¡ ItlÕüîF‰sê=·41€‰6–ïg]JÙf¿"Oh¬Ê}vã3tË=”©ÌK$ùŸ<¢å7‹ÜP€¦ ½x\3†@GWQà×.þFÈóè—zƒZÖ7nHG`mbÞÐ]_ X#’ ±óåR2íŒ*ŸÜL™•d›m¨s5ÄÆ.9[äxrM‚´³ŒŽºDâPAGùO{iýUv?¤H uYš°£T–!µR[¡oY"ï°J ¥¶eE¹$ nÔ¦#§W+þÓM±’uÑ|C‰ýÇ-/Ã{ ‚ìñ;¸aqÒôÛæÿkN0wB{T§¶F3'·göÍ4>;npÛ,ϯ…-òŬ1: ð?™5»á^ФeÙ›& Á/^4NT¢Ý'ØL„…~¨i~ÍÞ' »Ò‡¿É0ƒ (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesCancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishMO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to CrowdinSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-11 10:16 Last-Translator: Language-Team: Lithuanian Language: lt_LT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=(n%10==1 && (n%100>19 || n%100<11) ? 0 : (n%10>=2 && n%10<=9) && (n%100>19 || n%100<11) ? 1 : n%1!=0 ? 2: 3); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: lt X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (pakeista) (neiÅ¡saugota)%d kodo įeitis%d kodo pasireiÅ¡kimai%d kodo pasireiÅ¡kimų%d kodo pasireiÅ¡kimų%d įraÅ¡as%d įraÅ¡ai%d įrašų%d įrašųPreliminariai iÅ¡versta %d eilutÄ—.Preliminariai iÅ¡verstos %d eilutÄ—s.Preliminariai iÅ¡versta %d eiluÄių.%d eiluÄių preliminariai iÅ¡versta.%d klaida%d klaida%d klaidos%d klaidųĮvyko %d klaida.Ä®vyko %d klaidos.Ä®vyko %d klaidos.Ä®vyko %d klaidų.Ä®vyko %d klaida:Ä®vyko %d klaidos:Ä®vyko %d klaidos:Ä®vyko %d klaidų:Rasta %d vertimo problema.Rastos %d vertimo problemos.Rasta %d vertimo problemos.Rasta %d vertimo problemų.Nepavyko perskaityti %i eilutÄ—s iÅ¡ failo „%s“.Nepavyko perskaityti %i eiluÄių iÅ¡ failo „%s“.Nepavyko perskaityti %i eilutÄ—s iÅ¡ failo „%s“.Nepavyko perskaityti %i eiluÄių iÅ¡ failo „%s“.%s Formatas%s nuostatos%s formatas&Apie&Apie Poedit&Taikyti&Atgal&Atsisakyti&IÅ¡valyti&Užverti&KopijuotiÅ alinti&Atlikta ir Toliau&Atlikta ir toliau&Taisa&Failas&Rasti…&GNU gettext vadovas&GNU gettext vadovas&Eiti&Grupuoti pagal kontekstÄ…&Grupuoti pagal kontekstÄ…&Žinynas&Naujas&Naujas…&Kitas >&Kitas vertimas&Kitas vertimas&Ne&Gerai&Žinynas internete&Žinynas internete&Atverti...&Atverti…Į&dÄ—ti&Nustatymai&Nuostatos…&Ankstesnis vertimas&Ankstesnis vertimas&SavybÄ—s…&PaÅ¡alinti iÅ¡trintus vertimus&PaÅ¡alinti iÅ¡trintus vertimus&Baigti darbÄ…&Pakartoti&PakeistiIÅ¡&saugotiIÅ¡&saugoti kaip&Rodyti kodo pasireiÅ¡kimus&Rodyti kodo pasireiÅ¡kimus&Pradinis langas&Pradinis langas&Vertimas&AtÅ¡aukti&Pirmiausia neiÅ¡versti įraÅ¡ai&Pirmiausia neiÅ¡versti įraÅ¡aiAtna&ujinti iÅ¡ pradinių tekstųAtna&ujinti iÅ¡ pradinių tekstųPa&tikrinti vertimÄ…Pa&tikrinti vertimÄ…&Rodymas&Taip(Naudoti numatytÄ…jÄ… kalbÄ…)(neprisijungÄ™s)(bÅ«tina Windows 8 arba naujesnÄ— versija)< &AnkstesnisApie „%s“PaskyraPaskyrosPridÄ—tiPridÄ—ti komentarÄ…PridÄ—ti failus…PridÄ—ti aplankus…PridÄ—ti projektÄ…PridÄ—ti pakaitos simbolį…PridÄ—ti komentarÄ…Ä® sÄ…rašą pridÄ—ti aplankÄ…PridÄ—ti failus…PridÄ—ti aplankus…PridÄ—ti projektÄ…PridÄ—ti pakaitos simbolį…Papildomi raktažodžiaiPapildomos xgettext žymos:PapildomaiIÅ¡plÄ—stiniai iÅ¡traukimo parametrai…IÅ¡plÄ—stiniai iÅ¡traukimo parametraiIÅ¡plÄ—stiniai iÅ¡traukimo parametrai…Visi vertimų failaiVisų komentarųVisos eilutÄ—sTaip pat palaikomoms kalboms naudoti numatytuosius raktažodžiusVisada aktyvuoti teksto įvedimo laukÄ…Ä®vyko klaida.Elementas įvedimo failų sÄ…raÅ¡e:Elementas raktažodžių sÄ…raÅ¡e:IÅ¡vaizdaTaikytiAr tikrai norite iÅ¡trinti „%s“ iÅ¡traukÄ—jÄ…?Ar tikrai norite atkurti vertimų atmintį?AutomatiÅ¡kai tikrinti, ar yra atnaujinimųAutomatiÅ¡kai kompiliuoti MO failÄ… iÅ¡saugantAtgalPagrindinis kelias:Beta versijos turi naujausias funkcijas ir patobulinimus, bet gali bÅ«ti Å¡iek tiek mažiau stabilios.ViskÄ… rodyti priekyjeSugadintas PO failas: daugiskaitos forma msgstr pateikiama be msgid_pluralSugadintas PO failas: vienaskaitos forma msgstr pateikiama kartu su daugiskaitos forma msgid_pluralKlaidingai suformatuota vertimo eilutÄ—.NarÅ¡ytiNarÅ¡yti failusAtsisakytiAtsisakoma…Sukurti laikino aplanko nepavyko.Ä®vykdyti programos nepavyko: %sPreliminarus vertimas neįmanomas be pradinio teksto.IÅ¡ didžiosios raidÄ—sKatalogų &tvarkyklÄ—Katalogų &tvarkyklÄ—Katalogų tvarkyklÄ—Keisti programos kalbÄ…KoduotÄ—:Patikrinti dokumentÄ…Tikrinti raÅ¡ybÄ… ir gramatikÄ…Tikrinti raÅ¡ybÄ… raÅ¡antTikrinti, ar yra atnaujinimų…Tikrinti ar nÄ—ra vertimo klaidųTikrinti, ar yra atnaujinimų…Tikrinti raÅ¡ybÄ…IÅ¡valytiIÅ¡valyti meniuIÅ¡valyti vertimÄ…IÅ¡valyti meniuIÅ¡valyti vertimÄ…UžvertiDebesijaKodo įeitysKodo įeitysBendradarbiaukite su kitais žmonÄ—mis internete.Renkama iÅ¡ pradinių failų…Vertimų iÅ¡gavimo komanda:KomentarasKomentaras:Komentarų su prieÅ¡dÄ—liu:Kompiliuoti į MO…Kompiliuoti į…Kompiliuoti vertimo failaiPradinių tekstų iÅ¡traukimÄ… sukonfigÅ«ruokite Nustatymuose.PatvirtinimasSujunkite „Poedit“ su palaikomomis lokalizavimo platformomis debesijoje ir sklandžiai sinchronizuokite jose tvarkomus vertimus.KopijuotiKopijuoti iÅ¡ vienaskaitosKopijuoti iÅ¡ pradinių tekstųKopijuoti iÅ¡ vienaskaitosKopijuoti iÅ¡ pradinių tekstųRaÅ¡ybÄ… tikrinti automatiÅ¡kaiNepavyko įkelti failo, jis greiÄiausiai sugadintas.Nepavyko iÅ¡saugoti failo %s.Sukurti naujÄ…Sukurti naujÄ… vertimÄ…Sukurti naujÄ… vertimÄ… iÅ¡ POT Å¡ablono.Sukurti naujÄ… vertimų projektÄ…Crowdin klaida„Crowdin“ – tai internetinÄ— vertimo tvarkymo platforma ir bendradarbiavimo vertimo įrankis. Mes patys naudojame „Crowdin“, kad iÅ¡verstume „Poedit“ į daugelį kalbų, ir mums tai labai patinka.IÅ¡kirp&tiSavi iÅ¡traukÄ—jai:Savi iÅ¡traukÄ—jai:Tinkinti įrankių juostą…IÅ¡kirptiDuomenų bazÄ—s dydis diske:IÅ¡trintiIÅ¡trinti iÅ¡ vertimų atmintiesIÅ¡trinti iÅ¡traukÄ—jÄ…IÅ¡trinti iÅ¡ vertimų atmintiesÅ alinti projektÄ…PaÅ¡alinti komentarÄ…IÅ¡trinti projektÄ…IÅ¡trynus projektÄ…, nebus iÅ¡trinti jokie vertimo failai.Nustatomi skirtumai…Aplankai:Ar norite paÅ¡alinti „%s“ projektÄ…?Ar norite iÅ¡ naujo įkelti failÄ… iÅ¡ disko? Jei įkelsite, JÅ«sų padaryti pakeitimai Poedite bus prarasti.Ar tikrai norite paÅ¡alinti visus vertimus, kurie yra identiÅ¡ki pradiniam tekstui?Ar tikrai norite paÅ¡alinti visus nebenaudojamus vertimus?&NeįraÅ¡ytiNeiÅ¡saugotiDaugiau neberodytiNežymÄ—ti „Reikia peržiÅ«rÄ—ti“ jei pilnai atitinkaDaugiau neberodytiAtsiunÄiami naujausi vertimai…Vertimų atsiuntimas Å¡iame projekte yra iÅ¡jungtas.Nutempkite aplankus ir failus ÄiaNutempkite aplankus ir failus Äia&IÅ¡eitiE&ksportuoti į HTML…RedaguotiRedaguoti &komentarÄ…Redaguoti &komentarÄ…Koreguoti komentarÄ…Koreguoti komentarÄ…Redaguoti projektÄ…Redaguoti projektÄ…TaisymasRedaguoti…El. paÅ¡tas:Visas ekranasÅ iame faile yra įrašų, kurių daugiskaitos formų skaiÄius skiriasi nuo jų skaiÄiaus, nurodyto antraÅ¡tiniame Plural-FormsPirmiausia įraÅ¡ai su klaidomisPirmiausia įraÅ¡ai su klaidomisÄ®raÅ¡ai su klaidomis yra pažymÄ—ti raudonai. IÅ¡samesnÄ— klaidos informacija bus parodyta pasirinkus įrašą.Klaida atveriant failÄ…Klaida įraÅ¡ant failÄ…Klaida įkeliant sql XLIFF failÄ… %sKlaida: KlaidosViskasIgnoruojami keliaiEksportuoti į TMX…Eksportuoti kaip…Eksportuoti į HTML…Eksportuoti į TMX…Eksportuojama į HTMLVertimų atminties eksportas į „%s“ nepavyko.Eksportuojami vertimai…IÅ¡gauti iÅ¡ pradinių tekstųIÅ¡gauti pastabas vertÄ—jams iÅ¡:IÅ¡gauti tekstÄ… iÅ¡ pradinių failų esanÄių Å¡iuose aplankuose:IÅ¡skleidžiamos verÄiamos eilutÄ—s iÅ¡ %s failo…IÅ¡skleidžiamos verÄiamos eilutÄ—s iÅ¡ %s failų…IÅ¡skleidžiamos verÄiamos eilutÄ—s iÅ¡ %s failo…IÅ¡skleidžiamos verÄiamos eilutÄ—s iÅ¡ %s failų…IÅ¡traukÄ—jo nuostatosIÅ¡traukÄ—jaiNepavyko susisiekti su Poedit.Nepavyko įkelti failo su iÅ¡gautais vertimais.Nepavyko sujungti gettext katalogų.Nepavyko atnaujinti vertimų atminties: %sFailasFailo negalima atvertiFailas „%s“ neegzistuoja."%s" failas nÄ—ra vertimų failas.Failas „%s“ skirtas tik skaitymui ir negali bÅ«ti iÅ¡saugotas. IÅ¡saugokite duomenis kitu vardu.IeÅ¡kotiRasti tolesnįRasti ankstesnįRasti ir pakeisti…IeÅ¡koti komentaruoseIeÅ¡koti pradiniuose tekstuoseIeÅ¡koti vertimeRasti tolesnįRasti ankstesnįTaisyti kalbÄ…Taisyti kalbÄ…Taisyti antraÅ¡tÄ™Taisyti antraÅ¡tÄ™Flutter vertimų failaiForma %iForma %i (nenaudojama)GNU gettextBendraHTML failaiŽinynasSlÄ—pti Å¡oninÄ™ juostÄ…SlÄ—pti bÅ«senos juostÄ…SlÄ—pti šį praneÅ¡imÄ…Kaip veikia sinchronizavimas debesijoje?IDJei tÄ™site Å¡alinimÄ…, visi vertimai pažymÄ—ti kaip „iÅ¡trinti“ bus visam laikui paÅ¡alinti. Jei ateityje jie bus pridÄ—ti, turÄ—site juos versti iÅ¡ naujo.Jeigu esate atsisakÄ™ prieigos prie failų, jÄ… galite atkurti pasirinkÄ™ Sistemos nuostatos > Privatumas ir saugumas > Failai ir aplankai.IgnoruotiNeskirti didžiųjų raidžių nuo mažųjųImportuoti iÅ¡ TMX…Importuoti vertimų failus…Importuoti iÅ¡ TMX…Importuoti vertimų failus…Importuojama iÅ¡ „%s“…Nepavyko importuoti vertimo atminties.Importuojami vertimai…Faile %sÄ®traukti beta versijasNesuderintas didžiųjų/mažųjų raidžių naudojimasNesuderinti tarpaiInformacija apie vertÄ—jÄ…Ä®diegtiNetinkamas failasIÅ¡kvietimas:ProblemaProblemosJSON vertimų failaiPaliktiVertimo kalba yra tokia pati kaip originalo kalba.Nenustatyta vertimo kalba.Vertimo kalba:Kalbos pasirinkimasVertÄ—jų komanda:Kalba:Paskutinis pakeitimasSužinokite daugiau apie gettext raktažodžiusSužinokite apie daugiskaitos formasIÅ¡samiauSužinokite daugiau apie %sSužinokite daugiau apie CrowdinSužinokite daugiau apie „GNU gettext“EilutÄ— %d iÅ¡ failo „%s“ sugadinta (netinkami %s duomenys).EiluÄių pabaigos:PlÄ—tinių, atskirtų kabliataÅ¡kiais, sÄ…raÅ¡as (pvz., *.cpp;*.h):Ä®kelti anglų kalbÄ…MO failai negali bÅ«ti tiesiogiai redaguojami programoje Poedit.Mažosiomis raidÄ—misDidžiosiomis raidÄ—misSukurti naujÄ… vertimÄ… iÅ¡ Å¡io POT failo.Netinkama antraÅ¡tÄ—: „%s“Valdyti paskyrasTvarkyti…Suliejami skirtumai…MinimizuotiProjekto pavadinimas kuriam skirtas vertimasVardas:&Kitas nebaigtas&Kitas nebaigtasBÅ«tina peržiÅ«rÄ—tiBÅ«tina peržiÅ«rÄ—tiTinklo klaida %s (%d)Niekada nefokusuoti eiluÄių sÄ…raÅ¡o. Jei įjungta, turÄ—site naudoti Ctrl+rodyklÄ—s klaviatÅ«ros navigacijai, taip pat galÄ—site įvedinÄ—ti tekstÄ… iÅ¡ karto be TAB paspaudimo nekeiÄiant fokuso.NaujasNaujas iÅ¡ &POT/PO failo…Naujos eilutÄ—sNaujas iÅ¡ &POT/PO failo…Naujos eilutÄ—sKita daugiskaitos formaKita daugiskaitos formaNeAtitikmenų nerastaNÄ—ra eiluÄių, kurias galima preliminariai iÅ¡versti.Faile nÄ—ra informacijos apie Å¡ios eilutÄ—s įeitis pirminiame tekste.Atitikmenų nerastaNerasta vertimo klaidų.JÅ«sų paskyroje nÄ—ra vertimo projektų.NÄ—ra naudojimo informacijosNe visos daugiskaitos formos iÅ¡verstos.Nesankcionuota, praÅ¡ome prisijungti dar kartÄ….Pastabos vertÄ—jamsGeraiVienasÄ®junkite tik, jei pasitikite savo VA kokybe. Pagal numatytÄ…sias nustatas visi VA pasiÅ«lyti atitikmenys pažymimi „Reikia peržiÅ«rÄ—ti“ žyma ir prieÅ¡ naudojimÄ… turi bÅ«ti peržiÅ«rÄ—ti.Užpildyti tik jei pilnai atitinkaAtverti vertimÄ… debesijoje…Atverti paskiausiai naudotÄ…Atverti ir redaguoti vertimų failus.Atverti vertimÄ… debesijojeAtverti vertimÄ… debesijoje…Atverti failÄ…Atverti redaktoriujeAtverti raÅ¡yklÄ—jeAtverti paskiausiai naudotusAtverti...Atverti…ParinktysKita&Ankstesnis nebaigtas&Ankstesnis nebaigtasPO vertimų failaiPOT vertimų Å¡ablonaiPOT failai yra tik Å¡ablonai ir savyje neturi jokių vertimų. NorÄ—dami atlikti vertimÄ…, sukurkite naujÄ… PO failÄ… pagal Å¡ablonÄ….Ä®dÄ—tiÄ®dÄ—ti ir sutapatinti stiliųKeliaiAtlieka visų projekto failų atnaujinimÄ… iÅ¡ pradinių tekstų.Leidimas atmestas.Vietaženklio „%s“ nÄ—ra vertime.Vietaženklių teisingumasVietoje to atsiverskite ir redaguokite atitinkamÄ… PO failÄ…. Kai jį iÅ¡saugosite, MO failas taip pat bus atnaujintas.Pirma iÅ¡saugokite failÄ…. Å io skyriaus nebus galima redaguoti kol neiÅ¡saugosite.DaugiskaitaDaugiskaitos formų vertimasFaile panaudotos daugiskaitos formos nÄ—ra bÅ«dingos %s kalbai.Daugiskaitos formos:PoeditPoedit - katalogų tvarkyklÄ—Poedit automatiÅ¡kai iÅ¡taisÄ— neteisingÄ… turinį faile „%s“.Poedit gali bandyti užpildyti naujus įraÅ¡us tik iÅ¡ ankstesnių Å¡io failo vertimų arba iÅ¡ visos jÅ«sų vertimų atminties. VA naudojimas nebus labai efektyvus jei ji bus beveik tuÅ¡Äia, bet jis taps vis efektyvesnis kai tik pridÄ—site daugiau vertimų į jÄ….Poedit negali parodyti pirminio teksto, kur naudojama Å¡i eilutÄ—, nes failo arba nÄ—ra nurodytoje vietoje, arba tai yra simbolinÄ— nuoroda, kuri nerodo į tikrÄ… failÄ….Poedit yra lengvai naudojamas vertimų redaktorius.Poedit negali atverti failo „%s“.Vers&ti preliminariai…Versti preliminariaiIÅ¡versta preliminariaiPreliminariai iÅ¡versta %u eilutÄ—Preliminariai iÅ¡verstos %u eilutÄ—sPreliminariai iÅ¡versta %u eiluÄiųPreliminariai iÅ¡versta %u eiluÄiųPreliminarus vertimas iÅ¡ vertimų atminties…VerÄiama preliminariai…Preliminarus vertimas randa tikslius arba panaÅ¡ius atitikmenis neiÅ¡verstoms eilutÄ—ms vertimo atmintyje ir automatiÅ¡kai užpildo jų vertimus.Preliminariam vertimui atlikti reikalingas pradinis tekstas. Jis neveikia, jei naudojami tik ID be faktinio teksto.NuostatosNuostatos...Nustatymai…RuoÅ¡iamos eilutÄ—s…IÅ¡laikyti esamÄ… failų formatavimÄ…AnkstesnÄ— daugiskaitos formaAnkstesnÄ— daugiskaitos formaAnkstesnis pradinis tekstasAnksÄiau redaguotiAnksÄiau redaguotiProjekto pavadinimas ir versija:Projekto pavadinimas:Projektas:ProjektaiSkyrybos tikrinimasIÅ¡valytiPaÅ¡alinti iÅ¡trintus vertimusBaigti darbÄ…Failo turinio nuskaityti nepavyko dÄ—l klaidos: %sPaskiausiai naudoti failaiPakartotiÄ®kelti iÅ¡ naujoÄ®kelti failÄ… iÅ¡ naujoÄ®kelti failÄ… iÅ¡ naujoLiko: %dPaÅ¡alintiPaÅ¡alinti vertimus lygius pradiniam tekstuiPaÅ¡alinti vertimus lygius pradiniam tekstuiIÅ¡mestos eilutÄ—sIÅ¡mestos eilutÄ—sPakeistiPakeisti &viskÄ…Pakeisti &visusPakeitimo eilutÄ—Sukeisti…TrÅ«ksta bÅ«tinos Plurar-Forms antraÅ¡tÄ—s.AtkurtiAtkurti vertimų atmintįVertimų atminties atkÅ«rimas negrįžtamai panaikins visus saugomus vertimus iÅ¡ jos. NegalÄ—site atÅ¡aukti Å¡ios operacijos.Rodyti „Finder“PeržiÅ«rÄ—tiIÅ¡saugotiIÅ¡saugoti k&aip…IÅ¡saugoti k&aip…Vis tiek įraÅ¡ytiVis tiek įraÅ¡ytiIÅ¡saugoti kaipÄ®raÅ¡yti…IÅ¡saugoti pakeitimusIÅ¡saugoti failÄ…Ekrano nuotraukos:ŽymÄ—ti &viskÄ…PažymÄ—ti viskÄ…Pasirinkite kokius TMX importuositePasirinkite aplankÄ…Parinkite vertimo failÄ…Pasirinkite kokius vertimo failus importuositeParinkite vertimo Å¡ablonÄ…Pasirinkite pageidaujamÄ… kalbÄ…Nustatyti kalbÄ…Nurodyti kalbÄ…NuostatosNuostatos…Rodyti Å¡oninÄ™ juostÄ…Rodyti raÅ¡ybÄ… ir gramatikÄ…Rodyti bÅ«senos juostÄ…Rodyti eilutÄ—s &IDRodyti pakeitimusRodyti įrankių juostÄ…Rodyti įspÄ—jimusAtverti failų narÅ¡yklÄ—jeRodyti aplankeRodyti ar slÄ—pti Å¡oninÄ™ juostÄ…Rodyti Å¡oninÄ™ juostÄ…Rodyti bÅ«senos juostÄ…Rodyti eilutÄ—s &IDRodyti įspÄ—jimusÅ oninÄ— juostaPrisijungtiAtsijungtiPrisijungtiPrisijungti prie %sPrisijungti prie CrowdinAtsijungtiVienaskaitaÄ®mantrus kopijavimas ir įdÄ—jimasBrÅ«kÅ¡niaiIÅ¡maniosios nuorodosLietuviÅ¡kos kabutÄ—sRikiuoti pagal eiliÅ¡kumÄ… &faileRikiuoti pagal „&Pradinis tekstas“Rikiuoti pagal „&Vertimas“Rikiuoti pagal eiliÅ¡kumÄ… &faileRikiuoti pagal „&Pradinis tekstas“Rikiuoti pagal „&Vertimas“Pradinių tekstų koduotÄ—:Pradinio teksto iÅ¡traukÄ—jai naudojami verstinų eiluÄių suradimui pradiniuose failuose bei iÅ¡gavimui taip, kad jas bÅ«tų galima iÅ¡versti.Pradinis tekstas neprieinamas.Pirminis tekstas nerastasPradinis tekstasPirminio teksto IDPradinis tekstas — %sPradinių failų raktažodžiaiPradinių failų keliaiPradinių failų raktažodžiaiPradinių failų keliaiKalbaRaÅ¡ybos tikrinimas iÅ¡jungtas, nes neįdiegtas %s žodynas.RaÅ¡yba ir gramatikaPradÄ—ti kalbÄ—jimÄ…Baigti kalbÄ—jimÄ…IÅ¡saugoti vertimai:EilutÄ—s kontekstas: %sEilutÄ—s pavadinimas: %sŽenklų skaiÄius eilutÄ—jeŽenklų skaiÄius eilutÄ—je: vertimas | Å¡altinisIeÅ¡koma eilutÄ—Eilutiniai „Crowdin“ projektai nepalaikomi.PakeitimaiPasiÅ«lymaiPasiÅ«lymai negalimi, jei netinkamai nustatyta vertimo kalba. Tai taip pat gali turÄ—ti įtakos ir kitoms savybÄ—ms, pvz.: daugiskaitos formoms.Perteklinis vietaženklis „%s“, kurio nÄ—ra pradiniame tekste.Palaiko visas programavimo kalbas, kurias atpažįsta GNU gettext įrankiai (PHP, C/C++, C#, Perl, Python, Java, JavaScript ir kitas).SinchronizuotiSinchronizuoti su „Crowdin“Sinchronizuoti vertimÄ… su „Crowdin“SinchronizuojamaSuvienodinimo klaidaSinchronizacija su Crowdin nepavyko.SintaksÄ—s klaida Plural-Forms antraÅ¡tÄ—je („%s“).VATMX failaiPaimti verÄiamas eilutes iÅ¡ esamo POT Å¡ablono.Komandos pavadinimas ir el. paÅ¡to adresas arba URLTeksto pakeitimasVertimo atmintyje nÄ—ra eiluÄių panaÅ¡ių į Å¡io failo turinį. Tai efektyvu tik pusiau automatiniam vertimui, kai Poedit pakankamai iÅ¡moks iÅ¡ jÅ«sų rankiniu bÅ«du verstų failų.TMX failas yra neteisingas.Jei iÅ¡saugosite, kitos programos padaryti pakeitimai bus prarasti.Failas negali bÅ«ti sukompiliuotas į MO formatÄ….Faile buvo pasikartojanÄių elementų, kas yra neleidžiama PO failuose ir kurie neleistų naudoti failo. Poedit iÅ¡sprendÄ— problemÄ…, bet jÅ«s turÄ—tumÄ—te patikrinti vertimus pažymÄ—tus žyma reikia peržiÅ«rÄ—ti ir, jei reikia, juos pataisyti.Failo negalima įraÅ¡yti vertimo nuostatose nurodyta koduote „%s“. lt buvo įraÅ¡ytas UTF-8 koduote ir atitinkamai pakoreguotos nuostatos.Failas buvo pakoreguotas. Ar iÅ¡saugoti pakeitimus?Failas yra Poedit neatpažįstamo formato.Failas buvo sukompiliuotas į MO formatÄ…, taÄiau jis tikriausiai neveiks teisingai.Failas saugiai iÅ¡saugotas ir sukompiliuotas į MO formatÄ…, bet jis greiÄiausiai neveiks.Failas saugiai iÅ¡saugotas, bet jo neįmanoma sukompiliuoti į MO formatÄ… ir naudoti.Failas saugiai iÅ¡saugotas.Failo „%s“ nepavyko atverti.FailÄ… „%s“ pakeitÄ— kita programa.Senasis pradinis tekstas (prieÅ¡ atnaujinimÄ…), kuris atitinka neteisingÄ… vertimÄ….PaprasÄiausias bÅ«das užpildyti šį failÄ… vertimais yra atnaujinti jį iÅ¡ POT:Vertimas neprasideda tarpo ženklu.Vertimas baigiasi naujos eilutÄ—s ženklu, bet pradiniame tekste taip nÄ—ra.Vertimas baigiasi tarpo simboliu, bet pradiniame tekste taip nÄ—ra.Vertimas baigiasi „%s“, o pradinis tekstas - „%s“.Vertimo pabaigoje trÅ«ksta naujos eilutÄ—s simbolio.Vertimo pabaigoje trÅ«ksta tarpo ženklo.Vertimas paruoÅ¡tas naudoti, bet %d įraÅ¡as dar neiÅ¡verstas.Vertimas paruoÅ¡tas naudoti, bet %d įraÅ¡ai dar neiÅ¡versti.Vertimas paruoÅ¡tas naudoti, bet %d įraÅ¡o dar neiÅ¡versta.Vertimas paruoÅ¡tas naudoti, bet %d įrašų dar neiÅ¡versta.Vertimas paruoÅ¡tas naudoti.Vertimas turi baigtis „%s“.Vertimas neturi baigtis „%s“.Vertimas turÄ—tų prasidÄ—ti kaip sakinys.Vertimas turÄ—tų prasidÄ—ti mažąja raide.Vertimas prasideda tarpo ženklu, bet pradiniame tekste taip nÄ—ra.Vertimai buvo pažymÄ—ti kaip tobulintini, nes gali bÅ«ti netikslÅ«s. TurÄ—tumÄ—te peržiÅ«rÄ—ti jų teisingumÄ….NÄ—ra vertimų. Neįprasta.Kilo bÄ—dų gražiai formatuojant failÄ… (bet jis buvo iÅ¡saugotas).Klaidos įkeliant failÄ…. Gali bÅ«ti prarastų arba sugadintų duomenų.Å ie parametrai turi įtakos vidiniam PO failų formatavimui. Koreguokite juos, jei turite specifinių reikalavimų, pvz., dÄ—l versijų valdymo.Å is JSON failas nÄ—ra vertimų failas, todÄ—l jo negalima redaguoti su Poedit.Å iame faile yra įrašų su daugiskaitos formomis, bet nÄ—ra antraÅ¡tinio įraÅ¡o Plural-Forms.Å iame faile vietoj pradinio teksto naudojami eiluÄių ID. Poedit gali įkelti angliÅ¡kus tekstus iÅ¡ failo „%s“.Tai yra komanda, paleidžianti pradinio teksto iÅ¡traukÄ—jÄ…. %o bus pakeistas iÅ¡vesties failo pavadinimu, %K raktažodžių sÄ…raÅ¡u, %F įvesties failų sÄ…raÅ¡u, %C koduotÄ—s žymomis (žiÅ«rÄ—ti aukÅ¡Äiau).Å i eilutÄ— buvo rasta Poedit vertimų atmintyje.Tai bus pridÄ—ta komandinÄ—je eilutÄ—je po kartÄ… kiekvienam duomenų failui. %c iÅ¡plÄ—s į failo pavadinimÄ….Tai bus pridÄ—ta komandinÄ—je eilutÄ—je po kartÄ… kiekvienam duomenų failui. %f iÅ¡plÄ—s į failo pavadinimÄ….Tai bus pridÄ—ta komandinÄ—je eilutÄ—je po kartÄ… kiekvienam raktiniam žodžiui. %k iÅ¡plÄ—s į raktinį žodį.IÅ¡ visoTransformacijosVersti projektÄ… debesijojeIÅ¡versta: %d iÅ¡ %d (%d %%)VertimasVertimo kalbaVertimų atmintisVertimÄ… bÅ«tina tobulintiVertimo savybÄ—sSugadinta vertimų atminties duomenų bazÄ—: %s (%d).Vertimų atminties klaida: %s (%d).VertimÄ… bÅ«tina tobulintiVertimo savybÄ—sVertimų siÅ«lymaiVertimo pasiÅ«lymams pateikti reikalingas pradinis tekstas. Jis neveikia, jei naudojami tik ID be faktinio teksto.Vertimas — %sVertimo negalima atnaujinti iÅ¡ pirminio teksto, nes tokio teksto nÄ—ra failo savybÄ—se nurodytoje vietoje.DuUTF-8 (rekomenduojama)AtÅ¡auktiÄ®vyko neapdorojama iÅ¡imtinÄ— situacija: %sUnix (rekomenduojama)Nežinoma Crowdin klaida.Nežinoma klaidaNeverstosAtnaujintiAtnaujinti santraukÄ…Atnaujinti viskÄ…Atnaujinti visus projekto katalogusAr atnaujinti visus Å¡io projekto katalogus?Atnaujinti iÅ¡ &POT failo…Atnaujinti iÅ¡ &POT failo…Atnaujinti iÅ¡ pradinių tekstųAtnaujinti failÄ… pagal POT Å¡ablonÄ…Atnaujinti iÅ¡ pradinių tekstųAtnaujinti iÅ¡ pradinių tekstųAtnaujinti santraukÄ…AtnaujinimaiAtnaujinti nepavykoAtnaujinami projekto katalogaiNaujinami vertimaiAtnaujinama naudotojo informacija…Vertimų įkÄ—limas į %s nepavyko.Ä®keliami vertimai į %s…Įkeliami vertimai…Naudoti savo iÅ¡raiÅ¡kÄ…SÄ…raÅ¡ui naudoti savo Å¡riftÄ…:Ä®vedimo laukams naudoti savo Å¡riftÄ…:Å iai kalbai naudoti numatytÄ…sias taisyklesBe standartinių, naudokite Å¡iuos raktažodžius (funkcijų pavadinimus), verstinų eiluÄių atpažinimui pradiniuose tekstuose:Naudoti vertimų atminties pasiÅ«lymusPatikrintiPatvirtinimo rezultatai%s versijaLaukiama tapatybÄ—s nustatymo…ĮspÄ—jimas: Jus sveikina PoeditAtnaujinant iÅ¡ pradinių tekstųTik iÅ¡tisus žodžiusLangasWindowsAr norite naudoti anglų kalbÄ… pradiniam tekstui?Apgaubti tekstuTekstÄ… laužyti:XLIFF vertimų failaiTaipTaipogi galite iÅ¡gauti verstinas eilutes tiesiai iÅ¡ pradinių tekstų:Negalite užvilkti daugiau nei vieno failo ant Poedit lango.Neturite leidimo skaityti pirminių failų, esanÄių vietose, nurodytose failo savybÄ—se.Å is pakeitimas įsigalios paleidus Poedit iÅ¡ naujo.JÅ«sų vardasPrarasite atliktus pakeitimus, jei jų neiÅ¡saugosite.JÅ«sų el. paÅ¡to adresas ir vardas bus naudojami tik paskutinio vertÄ—jo nurodymui GNU gettext failų antraÅ¡tÄ—se.NulisPriartintiBÅ«tina peržiÅ«rÄ—tineÅ¡alinti laikinų failų, skirtų derinimuipvz. nplurals=2; plural=(n > 1);klaida: parinkti panašų vertimÄ… iÅ¡ paties failopereiti prie eilutÄ—s su duotu numeriuvykdyti poedit:// URIAlt+Ctrl+ŽemynEnterKairÄ—nDeÅ¡inÄ—nShift+AukÅ¡tynaltctrlshiftApie %sSlÄ—pti %sSlÄ—pti kitusNuostatos...Baigti darbÄ… %sPaslaugosRodyti visusversti preliminariai iÅ¡ VAnežinoma kalbanepalaikoma versija (%s)įspÄ—jimas: you@example.com„%s“ nÄ—ra tinkamas POT failas.poedit-3.6.3/locales/sk.mo0000644000175100001660000017222315011674351011077 Þ•Â,­<,ð: ñ: ý:&;/;<C;€;&“;&º;Já;g,< ”<ž< ­<;·<ó< ú<====$=+=1=9=H=W=]=c=l=€=”=˜=ª=¼=Â=Ç=Ï=×=é=û=ÿ= > >>&>/> 6>C>S>i>>Ž>ª>Æ>Ì>Ò>Û>á>ê>? ? &? 4?A?G?c??˜?±?È?ß?å?ê?@@ /@ ;@E@N@V@_@ c@ o@|@ ‹@—@ §@³@ Í@Ú@ é@õ@AA4A=A]AzAšA °A ½A1ÉA'ûA#B6BSB mBxB~B7šB6ÒB C))CSC XC]cCÁC<ÔCDD$VD{D ‚D€DE E"%EHE+cE)E ¹EÄEÖEèEùE FF(FDF`F#uF™F®F½F ÃFÎF àFëFýFG GG%+GQG lGG•GžG¶G ÇGÕG/ðG Hk-H™HžH±HÇHÚHðH-I1=IoI ˆI“I)ªIÔI ôIªJ­J²JÅJØJíJñJKK.K?K^KmK€K;“KÏK êK'÷K^LL~L?ËL M M&M*9MdM"wM5šMÐMëMN NN $N 2N @N MN ZNgNxN€NˆNNf¡NO"OuWTWrW ŠW«W ³W ÀWÌWÒWÙWðWõW; X(GXpXX X ¯X ¹XÇXäX ýXYY5YRY:WY ’Y< Y ÝYŒêY.wZ¦Z¶Z*ÆZñZ [ [&[=[*F[q[w[ˆ[ ™[ ¤[¯[»Æ[‚\†\ Ÿ\«\ Ä\Ð\ê\û\ ]]# ]\D]¡]'²]/Ú] ^$^%D^j^€^ƒ^’‡^_5_ O_ [_|_“_ ­_·_Æ_ Õ_á_õ_ý_` ``(`=`R`l`ý`aa=a]a1pa¢an»aE*bpbwb;b ÌbÚbáb@ûbõww'«w&Ów:úwl5xP¢x-óxC!yAeyK§y0óy.$zŽSz!âz){-.{+\{8ˆ{CÁ{u|,{|L¨|;õ|]1}…}J~c`~[Ä~o «7<€mt€_â€[Bž¤ù´®‚Æ‚ ã‚ƒ/ƒ2Fƒ"yƒœƒ´ƒ˃~ãƒqb„Ô„ˆç„p…t…ˆ… …®…Á… Ø…æ…î…õ… †"†$2†W†p†‰†š†ª†»†Ó†â†ê†ú†‡*‡$G‡l‡Œ‡¦‡¼‡Ò‡#ï‡VˆjˆˆŠˆ ˆ¨ˆ¸ˆȈ æˆðˆ‰‰.‰5‰.=‰ l‰x‰‰™‰H‰5æ‰mŠ7ŠŠ Š3ÌŠa‹b‹g‹l‹.‰‹ ¸‹Ù‹á‹ý‹Œ4ŒFŒYŒkŒ~ŒŒ£Œ·ŒÇŒØŒêŒýŒ.Jiš³ÉÚ óý! ŽÂ/Ž òþJ 1X‘Š#‘W@‘W˜‘‘ð‘Ì‚’ O“ Z“ h“s“ ó“ÿ“ ”” $” .” :” E” R”!_”!”£”¬”´”ÔØ”í”ö”• 4•?• F•P•`•v•Œ•‘•••§• ¹• Æ• Ó• Ý•é•ø• – –!/–!Q– s–~– …– – š–¨––Ü–ï–— — — 4—#U—#y——¯— Á—Í—Ó—î—&ÿ— &˜4˜ D˜R˜Y˜`˜h˜z˜˜£˜³˜Θà˜þ˜™'™8™S™q™ ™$™!™$ä™ š%š<šEMš(“š¼š'Ïš&÷š›&›/›6F›5}›&³›0Ú› œœX$œ}œL—œQäœ&6 ]iÊ€Kž Tž-až"ž3²ž;æž"Ÿ:ŸOŸdŸ)xŸ¢Ÿ±Ÿ%Ο&ôŸ 6 S r  ‰ ” £ ¶ Å  Ø â è ù + ¡(6¡ _¡ €¡ Š¡•¡®¡Ì¡Þ¡7ý¡ 5¢–@¢ ×¢ ã¢!£!&£!H£ j£2‹£>¾£"ý£ ¤0¤(H¤ q¤’¤·¨¤ `¥n¥ƒ¥"˜¥ »¥È¥ æ¥ò¥¦%¦B¦V¦l¦H€¦ɦ á¦$í¦l§O§Gϧ ¨ #¨.¨=F¨„¨%œ¨3¨&ö¨&© D©O©g©p©„©˜©«©¾©Ï©à© è©ô©û©‚ª–ª²ªƒÎªR«o«'‹«³«»«Á«É«Ü«3î«"¬5¬3L¬€¬1¬Á¬Û¬+ñ¬H­êf­Q® g®(r®3›®7Ï®&¯+.¯Z¯a¯¯'™¯eÁ¯ '°2°D°X°r°а©°¿°Ѱå°ô°±±)±E±M± c± o± {± ˆ±’±§±#¾±%Ⱳà ²¡Ï²¡q³ ´´2;´n´2Ž´Á´á´ ò´µ-µ2µ!Hµjµ€µ žµ«µ¼µε ׵ᵠúµ¶0¶!O¶q¶ ¶¶¦¶­¶:Á¶6ü¶ 3·'@·$h· ·®·Dµ·ú·;¸J¸›a¸6ý¸4¹N¹,j¹—¹µ¹ ǹÕ¹î¹ý¹º#º?º[ºqº‡ºÎœºk»q»»œ»¸»Ç» â» ¼$¼(¼)B¼]l¼ʼ*ä¼D½T½5r½A¨½ê½¾ ¾´¾ž$྿%¿?¿X¿x¿ˆ¿›¿®¿À¿ Ý¿ é¿õ¿ü¿ÀÀ9ÀLÀ–dÀûÀÁ$ÁE*ÁpÁ+†Á²ÁÒÁVR©Â"ºÂHÝÂ&Ã@ÃGÃ:fÃô¡ÃΖÄ4eÅ)šÅÄÅÕÅåÅyöÅ*pƛƢ´ÆWÇyÙÇ SÈ ^È lÈzÈ,‘È"¾È"áÈÉÉ1ÉDÉ^ÉoÉxÉÉ —É¢É ¿É=ÉÉÊÊÊ'Ê?Ê WÊ dÊ'pÊ'˜ÊÀÊÖÊ+ìÊ Ë"Ë5ËHË \Ë5iË ŸËªË{ÇËCÌ ^ÌhÌqÌ‚Ì“Ì©Ì ¿ÌÌÌÜÌëÌûÌÍÍ:/ÍjÍ€Í"—ͺÍ"ÕÍøÍÎ Î #Î1Î IÎj΄ΛΰÎÌÎäÎÿÎ#Ï9ÏQÏkÏ‚Ï ˜Ï¦Ï µÏÃÏÒÏïÏ!Ð1Ð NÐ\ÐnЎПЮÐ$ÁÐæÐÑ$ÑCÑ^Ñ{Ñ£™Ñ=Ò\ÒwÒ†Ò›Ò±Ò ÎÒÜÒ ùÒ ÓVÓkÓ€Ó•Ó¬ÓÊÓßÓûÓ+ÔBÔ?ZÔ šÔ¥Ô­ÔG;ÕzƒÕþÕÖ)*ÖTÖdÖ,zÖ<§ÖäÖ)öÖ? ×*`׋×Ùœ×8vØE¯Ø7õØë-Ù«Ú,ÅÚ3òÚK&ÛkrÛeÞÛDÜ"dÜ(‡Ü.°ÜvßÜaVݸÝBÕÝ1Þ:JÞ.…Þ#´ÞMØÞ'&à$Nà!sà •à(¶à2ßàtá9‡áUÁá8ânPâ—¿âOW㇧ãg/ä—ä×%å9ýå€7æc¸ævç“ç›çªç³èÒèïè÷èéé8é4Mé ‚é£éÃéØééétiêÞêíê{ëë•ë'œëÄëÙëòë ì ìì2ì*Hì1sì¥ìÅìåìûìí"-íPí eísí"‰í¬í1Ãí2õí(îAîUî nî&î.¶îyåî_ïzï‚ï —ï¡ï¶ïËï êïøï ð'ð8ð=ð)Eðoð †ð“ðªðF¯ð9öðl0ñ5ñ Óñ1Þñdòuò zòˆò/žò!Îòðò#øò+óHócóhónóróxó|ó€ó‡ó‹óó”ó šó ¨ó²ó Âó ÐóÝóåó#÷óô*ô EôSô(jôw·äuQ}œ™¬5{0¥$§‡-W›Wrk3äãþ,"€).)`,š^D6fv¾Éž&KGt ¤éëû…âI¡¦­ë%˜?Èš_×Fª¹|7Æ8‚(‘TD»¹Ä;rQ|’H‘Ø…¿¢¼O‰¬æYŒ‘æÁ•«JAuà¨ÂܧîKºã"!eYœx[Ò!üì'  SsS'E…·rVÕ¦ah·B´>aË\ï5›? =uÚèH½ø7ZŸtƒCUib‡W¾³zh:;o Ãêöð¯zßwÀÈ”{²„–Û+í¸î’°@\d®¶#,mfß"`´«P¢†>0pþV ‚xn1Ž/ÁdÅÿÔÙÖŠ À—=ŽŒL]gƒ²úLÇZá—´“7É__‰^ý!ݸŽÓIG˜Å4&è±R$snÔ4<„ç×Ê@›½võRPñÓ™ló:T®#~©ploÌóÞ  £mj=‚»â†¯M%ËÏ9Où•öšò„ŠÿÝLc6b §Z•*ªÌÒQsƒbµ‹qѯ¼wAÂ9¬ž–Í’ùûCµ¿º8Ü—Á(ü}³`˜~Ê¢Ÿ÷ +œêUV  2'Í EgP[¦gyl0¡¤µFçô¹Û eÎN±¸9$¡ÕBŠe­Â¼Ú8ðúˆ 3ñH?í>6qª*‹‰”Y½ ¤a11E©Ç%)5n2KzG ~qå\ F]ýI£¶Æi*y‹<™xO.SXc¶Ÿ hXˆ¾Ð}-±jM Þ/°dòŒ«ˆ;(¥¨|4ïtmMÄp“X€^c+ôÀ:®²Ö-–ØÙ]áÏ.jUT†@2N¨<÷Rõåiºvì€ø/k¥­Ãà°é3£³ByžD{&¿NÎoJCJf»A”#©kГ[‡Ñ (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-17 10:16 Last-Translator: Language-Team: Slovak Language: sk_SK MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3; X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: sk X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (zmenené) (neuložené)%d výskyt kódu%d výskyty kódu%d výskytov kódu%d výskytov v kóde%d položka%d položky%d položiek%d položiek%d položka bola pred-preložená.%d položky boli pred-preložené.%d položiek bolo pred-preložených.%d položiek bolo pred-preložených.chyba %d%d chyby%d chýb%d chýbVyskytla sa %d chyba.Vyskytli sa %d chyby.Vyskytlo sa %d chýb.Vyskytlo sa %d chýb.Vyskytla sa %d chyba:Vyskytli sa %d chyby:Vyskytlo sa %d chýb:Vyskytlo sa %d chýb:NaÅ¡iel sa %d problém s prekladom.NaÅ¡li sa %d problémy s prekladom.NaÅ¡lo sa %d problémov s prekladom.NaÅ¡lo sa %d problémov s prekladom.%i riadok súboru „%s" sa nenaÄítal správne.%i riadky súboru „%s" sa nenaÄítali správne.%i riadkov súboru „%s" sa nenaÄítalo správne.%i riadkov súboru „%s" sa nenaÄítalo správne.%s formátNastavenia %s%s formát%s preklad bol importovaný.%s preklady boli importované.%s prekladov bolo importovaných.%s prekladov bolo importovaných.&O programe&O programe Poedit&PoužiÅ¥&Späť&ZruÅ¡iÅ¥&VyÄistiÅ¥&ZatvoriÅ¥&KopírovaÅ¥&OdstrániÅ¥&DokonÄiÅ¥ a prejsÅ¥ na Äalší&DokonÄiÅ¥ a prejsÅ¥ na Äalší&Úpravy&Súbor&Vyhľadať…Manuál &GNU gettextManuál &GNU gettextP&rejsÅ¥Z&oskupiÅ¥ podľa súvislostíZ&oskupiÅ¥ podľa súvislostí&Nápoveda&Nový&Nový…&Nasledujúci >&Nasledujúci preklad&Nasledujúci preklad&Nie&OKOnline &nápovedaOnline &nápoveda&OtvoriÅ¥...&Otvoriť…&VložiÅ¥Pred&voľby&Predvoľby…&PredoÅ¡lý preklad&PredoÅ¡lý preklad&Vlastnosti…&VyÄistiÅ¥ odstránené preklady&VyÄistiÅ¥ odstránené preklady&UkonÄiÅ¥&Vpred&NahradiÅ¥&UložiÅ¥&UložiÅ¥ ako&ZobraziÅ¥ výskyty kódu&ZobraziÅ¥ výskyty kóduÅ &tartovacie oknoÅ &tartovacie okno&Preklad&Späť&Najskôr nepreložené záznamy&Najskôr nepreložené záznamy&AktualizovaÅ¥ zo zdrojového kódu&AktualizovaÅ¥ zo zdrojového kódu&OveriÅ¥ preklady&OveriÅ¥ preklady&Zobrazenie&Ãno(PoužiÅ¥ pôvodný jazyk)(neprihlásený)(požadovaný Windows 8 alebo novší)< &PredoÅ¡lýO programe %sÚÄetÚÄtyPridaÅ¥PridaÅ¥ komentárPridaÅ¥ súbory…PridaÅ¥ prieÄinky…PridaÅ¥ projektPridaÅ¥ zástupný znak…PridaÅ¥ komentárPridaÅ¥ prieÄinok do zoznamuPridaÅ¥ súbory…PridaÅ¥ prieÄinky…Pridáva projektPridaÅ¥ zástupný znak…Prídavné kľúÄové slováPrídavné príznaky xgettext:RozšírenéRozšírené nastavenia extrakcie…Rozšírené nastavenia extrakcieRozšírené nastavenia extrakcie…VÅ¡etky prekladové súboryVÅ¡etkých komentárovVÅ¡etky reÅ¥azceTiež použiÅ¥ predvolené kľúÄové slová pre podporované jazykyVždy zameraÅ¥ pole pre zadávanie textuVyskytla sa chyba.Položka v zozname vstupných súborov:Položka v zozname kľúÄových slov:VzhľadPoužiÅ¥Približné zhody z TMSte si istý, že chcete odstrániÅ¥ extraktor „%s"?Ste si istý že chcete vynulovaÅ¥ pamäť prekladov?Automaticky kontrolovaÅ¥ aktualizácieAutomaticky skompilovaÅ¥ MO súbor pri uloženíSpäťZákladná cesta:Beta verzie obsahujú najnovÅ¡ie funkcie a vylepÅ¡enia, ale môžu byÅ¥ menej stabilné.PreniesÅ¥ vÅ¡etko dopreduChybný PO súbor: tvar množného Äísla msgstr použitý bez msgid_pluralChybný PO súbor: tvar jednotného Äísla msgstr je použitý aj v msgid_pluralNeplatné znaÄky v reÅ¥azci prekladu.PrehliadaÅ¥PrehľadávaÅ¥ súboryV predvolenom nastavení sú zahrnuté aj nepresné výsledky, ale sú oznaÄené ako výsledky, ktoré si vyžadujú prepracovanie. Ak chcete zahrnúť len dokonalé zhody, zaÅ¡krtnite túto možnosÅ¥.ZruÅ¡iÅ¥ZruÅ¡enie…Nepodarilo sa vytvoriÅ¥ doÄasný prieÄinok.Nepodarilo sa spustiÅ¥ program: %sNemožno predbežne prekladaÅ¥ z neznámeho jazyka.Nie je možné použiÅ¥ pred-preklad bez zdrojového textu.Prvé písmeno veľkým&Správca katalógov&Správca katalógovSprávca katalógovZmeniÅ¥ jazyk užívateľského rozhraniaZnaková sada:SkontrolovaÅ¥ dokument terazSkontrolovaÅ¥ gramatiku so slovníkomKontrolovaÅ¥ gramatiku poÄas písaniaKontrola aktualizácií…Skontroluje chyby v prekladeSkontrolovaÅ¥ aktualizácie…KontrolovaÅ¥ gramatikuVyÄistiÅ¥ZmazaÅ¥ ponukuVyÄistiÅ¥ prekladZmazaÅ¥ ponukuVyÄistiÅ¥ prekladZatvoriÅ¥CloudVýskyty v kódeVýskyty v kódeSpolupracovaÅ¥ s ostatnými ľuÄmi online.ZhromažÄovanie zdrojových súborov…Príkaz pre extrakciu prekladov:KomentárKomentár:Komentárov s predponou:SkompilovaÅ¥ do MO súboru…KompilovaÅ¥ do…Skompilované súbory prekladuNastaviÅ¥ vytiahnutie zdrojového kódu v Nastaveniach.PotvrdeniePrepojte Poedit s podporovanými cloudovými lokalizaÄnými platformami na bezproblémovú synchronizáciu prekladov, ktoré sú na nich spravované.KopírovaÅ¥KopírovaÅ¥ z jednotého ÄíslaSkopírovaÅ¥ zo zdrojového textuKopírovaÅ¥ z jednotného ÄíslaSkopírovaÅ¥ zo zdrojového textuAutomaticky opravovaÅ¥ gramatikuNepodarilo sa stiahnuÅ¥ detaily projektu Localazy.Súbor sa nepodarilo naÄítaÅ¥, pravdepodobne je poÅ¡kodený.Súbor %s nie je možné uložiÅ¥.VytvoriÅ¥ novýVytvoriÅ¥ nový prekladVytvoriÅ¥ nový preklad z POT Å¡ablóny.VytvoriÅ¥ nový projekt prekladuChyba služby CrowdinCrowdin je online platforma na správu prekladov a nástroj na spoluprácu pri prekladaní. My sami používame Crowdin na preklad Poeditu do mnohých jazykov a veľmi sa nám páÄi.V&ystrihnúťVlastné extraktory:Vlastné extraktory:PrispôsobiÅ¥ liÅ¡tu nástrojov…VystrihnúťVeľkosÅ¥ databázy na disku:OdstrániÅ¥VymazaÅ¥ z Pamäte prekladovOdstrániÅ¥ extraktorVymazaÅ¥ z Pamäte prekladovOdstrániÅ¥ projektOdstrániÅ¥ komentárOdstrániÅ¥ projektOdstránením projektu nebudú odstránené žiadne prekladové súbory.UrÄovanie rozdielov…PrieÄinky:Chcete odstrániÅ¥ projekt “%sâ€?Chcete znovu naÄítaÅ¥ súbor z disku? Ak to urobíte, vaÅ¡e neuložené úpravy v Poedite budú stratené.Chcete odstrániÅ¥ vÅ¡etky preklady, ktoré sú totožné so zdrojovým textom?Chcete odstrániÅ¥ vÅ¡etky preklady, ktoré sa už dlho nepoužívajú?&NeukladaÅ¥NeukladaÅ¥Nabudúce nezobrazovaÅ¥NeoznaÄovaÅ¥ presné výsledky ako potrebujúce dopracovanieNabudúce nezobrazovaÅ¥SÅ¥ahovanie najnovších prekladov…V tomto projekte je sÅ¥ahovanie prekladov vypnuté.PretiahnuÅ¥ prieÄinok alebo súbor tuPretiahnuÅ¥ prieÄinok alebo súbor tuU&konÄiÅ¥E&xportovaÅ¥ do HTML…UpraviÅ¥&UpraviÅ¥ komentár&UpraviÅ¥ komentárUpraviÅ¥ komentárUpraviÅ¥ komentárUpraviÅ¥ projektUpraviÅ¥ projektÚpravaUpraviť…Email:Celoobrazovkový režimPoložky v tomto súbore majú rozdielne tvary množných Äísiel, ako je nastavené v hlaviÄke súboru Tvary množného ÄíslaNajskôr položky s chybamiNajskôr položky s chybamiZáznamy s chybami boli v zozname vyznaÄené Äervenou farbou. Podrobnosti o chybe budú zobrazené, ak vyberiete nejaký záznam.Chyba pri otváraní súboruChyba pri ukladaní súboruChyba pri naÄítaní súboru XLIFF: %sChyba: ChybyVÅ¡etkoPresné zhody z TMVylúÄené cestyExportovaÅ¥ do Výmennej pamäte prekladov (TMX)…ExportovaÅ¥ ako…ExportovaÅ¥ do HTML…ExportovaÅ¥ do Výmennej pamäte prekladov (TMX)…Export do HTMLExportovanie prekladovej pamäte do "%s" zlyhalo.Exportovanie prekladov…VytiahnuÅ¥ zo zdrojovExtrahovaÅ¥ poznámky pre prekladateľov z:AktualizovaÅ¥ text zo zdrojových súborov v nasledovných prieÄinkoch:Extrahovanie preložiteľných reÅ¥azcov zo súboru %s…Extrahovanie preložiteľných reÅ¥azcov zo súborov %s…Extrahovanie preložiteľných reÅ¥azcov zo súborov %s…Extrahovanie preložiteľných reÅ¥azcov zo súborov %s…Nastavenia extraktoraExtraktoryZlyhala komunikácia s procesom Poeditu.Zlyhalo vytiahnutie reÅ¥azcov zo zdrojového kódu.Zlyhalo naÄítanie súboru pri rozbaľovaní prekladu.Zlyhalo zlúÄenie katalógov gettext.Zlyhala aktualizácia pamäte prekladov: %sSúborSúbor nemohol byÅ¥ otvorenýSúbor „%s" neexistuje.Súbor „%s" nie je súborom prekladu.Súbor “%s†je iba na Äítanie a nemôže byÅ¥ uložený. Prosím, uložte ho pod iným názvom.VyhľadaÅ¥HľadaÅ¥ ÄalšíHľadaÅ¥ predoÅ¡lýVyhľadaÅ¥ a nahradiť…HľadaÅ¥ v komentárochHľadaÅ¥ v zdrojových textochHľadaÅ¥ v prekladochHľadaÅ¥ ÄalšíHľadaÅ¥ predoÅ¡lýOpraviÅ¥ jazykOpraviÅ¥ jazykOpraviÅ¥ hlaviÄkuOpraviÅ¥ hlaviÄkuPrekladové súbory FlutterTvar %iTvar %i (nepoužitý)GNU gettextVÅ¡eobecnéHTML súboryNápovedaSkryÅ¥ boÄný panelSkryÅ¥ stavový riadokSkryÅ¥ túto správu s upozornenímAko funguje synchronizácia v cloude?IDAk budete pokraÄovaÅ¥ s Äistením, vÅ¡etky preklady oznaÄené ako zmazané budú natrvalo odstránené. V prípade, že budú v budúcnosti znovu pridané, budete ich musieÅ¥ preložiÅ¥ znovu.Ak ste predtým zakázali prístup ku vaÅ¡im súborom, môžete ho povoliÅ¥ v Nastavenia systému > ZabezpeÄenie a súkromie > Súkromie > Súbory a prieÄinky.Ak ste predtým zakázali prístup ku vaÅ¡im súborom, môžete ho povoliÅ¥ v Nastavenia systému > ZabezpeÄenie a súkromie > Súkromie > Súbory a prieÄinky.IgnorovaÅ¥IgnorovaÅ¥ veľkosÅ¥ písmenImportovaÅ¥ z Výmennej pamäte prekladov (TMX)…ImportovaÅ¥ súbory prekladu…ImportovaÅ¥ z Výmennej pamäte prekladov (TMX)…ImportovaÅ¥ súbory prekladu…Import z "%s"…Import pamäte prekladov zlyhal.Importovanie prekladov…V %sVrátane beta verziíNezhodné veľké/malé písmenáNezhodné biele znakyInformácie o prekladateľoviInÅ¡talovaÅ¥Neplatný súborVolanie príkazu:ProblémProblémyPrekladové súbory JSONZachovaÅ¥Názov jazyka alebo kóduJazyk prekladu sa zhoduje so zdrojovým jazykom.Jazyk prekladu nie je nastavený.Jazyk prekladu:Výber jazykaPrekladateľský tím:Jazyk:Naposledy upravenéDozvedieÅ¥ sa informácie o kľúÄových slovách GettextDozvedieÅ¥ sa informácie o tvaroch množného ÄíslaZistiÅ¥ viacZískaÅ¥ viac informácií o službe %sDozvedieÅ¥ sa viac o službe CrowdinDozvedieÅ¥ sa viac o GNU gettextRiadokRiadok %d súboru „%s" je poÅ¡kodený (%s nie sú platné údaje).UkonÄenie riadkov:Zoznam prípon oddelených bodkoÄiarkou (napr. *.cpp;*.h):NaÄítaÅ¥ angliÄtinuLocalazy je vysoko automatizovaná lokalizaÄná platforma, ktorá umožňuje každému jednoducho prekladaÅ¥ svoje produkty a obsah do viacerých jazykov.MO súbory nemôžu byÅ¥ upravované priamo v Poedite.VyhotoviÅ¥ malým písmomVyhotoviÅ¥ VEĽKÃM PÃSMOMVytvoriÅ¥ nový preklad z tohto POT súboru.PoÅ¡kodená hlaviÄka: „%s"SpravovaÅ¥ úÄtySpravovať…ZluÄovanie rozdielov…MinimalizovaÅ¥Názov projektu prekladu je preMeno:Nasledujúci &nedokonÄenýNasledujúci &nedokonÄenýVyžaduje spracovanieVyžaduje spracovanieChyba siete: %s (%d)Nepovolí zameranie zoznamu reÅ¥azcov. Ak je povolené, musíte pre navigáciu použiÅ¥ Ctrl+šípky na klávesnici, inak môžete priamo zaÄaÅ¥ písaÅ¥ text bez nutnosti stlaÄiÅ¥ Tab pre zmenu zamerania.NovýNový zo súboru &POT/PO…Nové reÅ¥azceNový zo súboru &POT/PO…Nové reÅ¥azceNové reÅ¥azce na preklad:ÄŽalší tvar množného ÄíslaÄŽalší tvar množného ÄíslaNieNenaÅ¡li sa žiadne zhodyŽiadne položky neboli pred-preložené.V súbore nie sú uvedené žiadne informácie o výskytoch tohto reÅ¥azca v zdrojovom kóde.Nenájdené žiadne zhodyNenaÅ¡li sa žiadne problémy s prekladom.Vo vaÅ¡om úÄte nie sú uvedené žiadne prekladateľské projekty.Bez použiteľnej informácieNie vÅ¡etky tvary množného Äísla sú preložené.Vyskytla sa chyba pri autorizácii, skúste sa prihlásiÅ¥ znova.Poznámky pre prekladateľovOKJedenPovoľte to iba ak dôverujete kvalite vaÅ¡ej Prekladovej pamäti. Å tandardne sú oznaÄené vÅ¡etky zhody ako potrebujúce dopracovanie a mali by byÅ¥ pred použitím posúdené.VyplniÅ¥ iba presné zhodyOtváranie cloudovského prekladu…Naposledy otvorenéOtvoriÅ¥ a upraviÅ¥ súbory prekladu.OtvoriÅ¥ cloud prekladovOtvoriÅ¥ cloudovský preklad…OtvoriÅ¥ súborOtvoriÅ¥ v editoreOtvoriÅ¥ v editoreOtvoriÅ¥ nedávneOtvoriÅ¥ referenÄný súborOtvoriÅ¥...Otvoriť…VoľbyOstatnéP&redoÅ¡lý nedokonÄenýP&redoÅ¡lý nedokonÄenýSúbory rekladu POÅ ablóny prekladov POTSúbory POT sú iba Å¡ablóny a samé neobsahujú žiadne preklady. Ak chcete vytvoriÅ¥ nový preklad, vytvorte nový PO súbor na základe Å¡ablóny.VložiÅ¥VložiÅ¥ a prispôsobiÅ¥ Å¡týlCestyVykoná aktualizáciu zdrojového kódu vÅ¡etkých súborov projektu.Prístup zamietnutý.V preklade chýba zástupný znak „%s“.SprávnosÅ¥ zástupných znakovOtvorte a upravte, prosím, namiesto toho zodpovedajúci PO súbor. Po jeho uložení bude takisto aktualizovaný aj MO súbor.Uložte, prosím, najprv súbor. Táto sekcia nemôže byÅ¥ bez uloženia upravovaná.Množné ÄísloTvary množného Äísla prekladovTvar množného Äísla použitého súborom je neobvyklý pre jazyk %s.Tvary množného Äísla:PoeditPoedit – Správca katalógovPoedit automaticky opraví neplatný obsah v súbore "%s".Poedit sa pokúsi vyplniÅ¥ nové reÅ¥azce iba z predoÅ¡lých prekladov v súbore alebo z celej Pamäte prekladov. Prekladanie pomocou Pamäte prekladov nebude príliÅ¡ úÄinné ak je skoro prázdna, ale bude lepÅ¡ie ak pridáte viac prekladov.Poedit nemôže zobraziÅ¥ zdrojový kód tam, kde sa používa reÅ¥azec, pretože súbor nie je k dispozícii v referenÄnom umiestnení alebo ide o symbolický odkaz, ktorý neukazuje na skutoÄný súbor.Poedit je jednoducho použiteľný editor prekladov.Poedit nedokázal otvoriÅ¥ súbor „%s".Pred-&preklad…Pred-preložiÅ¥Pred-preloženéPred-preložený %u reÅ¥azecPred-preložené %u reÅ¥azcePred-preložených %u reÅ¥azcovPred-preložených %u reÅ¥azcovPredbežný preklad z pamäte prekladov…Prebieha pred-preklad…Pri použití pred-prekladu budú nájdené presné zhody alebo nepresnosti pre nepreložené preklady v Pamäti prekladov a budú doplnené do vaÅ¡ich prekladov.Predbežný preklad si vyžaduje, aby bol k dispozícii zdrojový text. Nefunguje, ak sa použijú len ID bez skutoÄného textu.Predbežný preklad vyžaduje, aby bol známy jazyk východiskového textu. Poedit ho v tomto súbore nedokázal zistiÅ¥.PredvoľbyPredvoľby...Predvoľby…Príprava reÅ¥azcov…ZachovaÅ¥ existujúce formátovanie súborovPredoÅ¡lý tvar množného ÄíslaPredoÅ¡lý tvar množného ÄíslaPredoÅ¡lý zdrojový textPredoÅ¡lá úpravaPredoÅ¡lá úpravaNázov projektu a verzia:Názov projektu:Projekt:ProjektyKontrola interpunkcieVyÄistiÅ¥VyÄistiÅ¥ zmazané prekladyUkonÄiÅ¥NaÄítanie obsahu súboru zlyhalo s nasledujúcou chybou: %sNedávne súboryVpredObnoviÅ¥Znovu naÄítaÅ¥ súborZnovu naÄítaÅ¥ súborZostáva: %dOdstrániÅ¥OdstrániÅ¥ preklady rovnaké ako zdrojOdstrániÅ¥ preklady rovnaké ako zdrojOdstránené reÅ¥azceOdstránené reÅ¥azceOdstránené reÅ¥azce (už nepoužívané):NahradiÅ¥NahradiÅ¥ &vÅ¡etkoNahradiÅ¥ &vÅ¡etkoReÅ¥azec nahradeniaNahradiť…V hlaviÄke chýba položka Tvary množného Äísla.VynulovaÅ¥VynulovaÅ¥ pamäť prekladovObnovením pamäte prekladov natrvalo vymažete vÅ¡etky uložené preklady. Túto operáciu nie je možné vrátiÅ¥ späť.OdhaliÅ¥ vo vyhľadávaÄiPosúdiÅ¥UložiÅ¥UložiÅ¥ &ako…UložiÅ¥ &ako…Napriek tomu uložiÅ¥Napriek tomu uložiÅ¥UložiÅ¥ akoUložiÅ¥ ako…UložiÅ¥ zmenyUložiÅ¥ súborSnímky obrazovky:VybraÅ¥ &vÅ¡etkoVybraÅ¥ vÅ¡etkoVyberte súbor Výmennej pamäte prekladov (TMX) na importVyberte si prieÄinokVybrte súbor prekladuVyberte súbor prekladu pre importVyberte Å¡ablónu prekladuVyberte si vami preferovaný jazykNastaviÅ¥ jazykNastaviÅ¥ jazykNastaveniaNastavenia…ZobraziÅ¥ boÄný panelZobrazovaÅ¥ pravopis a gramatikuZobraziÅ¥ stavový riadokZobraziÅ¥ &ID reÅ¥azcaZobraziÅ¥ nahradeniaZobraziÅ¥ liÅ¡tu nástrojovZobrazovaÅ¥ upozorneniaUkázaÅ¥ v PrieskumníkoviUkázaÅ¥ v prieÄinkuZobrazí alebo skryje boÄný panelZobraziÅ¥ boÄný panelZobraziÅ¥ stavový riadokZobraziÅ¥ &ID reÅ¥azcaZobrazovaÅ¥ varovaniaBoÄný panelPrihlásiÅ¥ saOdhlásiÅ¥ saPrihlásiÅ¥ saPrihlásiÅ¥ sa do služby %sPrihlásiÅ¥ sa do úÄtu clouduPrihlásiÅ¥ sa do služby CrowdinPrihlásenie do cloud úÄtuOdhlásiÅ¥ saJednotné ÄísloChytré kopírovanie/prilepenieChytré pomlÄkyChytré odkazyChytré úvodzovkyUsporiadaÅ¥ podľa poradia &súborovUsporiadaÅ¥ podľa &zdrojaUsporiadaÅ¥ podľa &prekladuUsporiadaÅ¥ podľa poradia &súborovUsporiadaÅ¥ podľa &zdrojaUsporiadaÅ¥ podľa &prekladuZdrojový kód znakovej sady:Extraktory zdrojového kódu sa používajú na vyhľadávanie preložiteľných reÅ¥azcov v súboroch zdrojového kódu a ich extrahovanie na použite v preklade.Zdrojový kód je nedostupný.Zdrojový kód nenájdenýZdrojový textID zdrojového textuZdrojový text — %sZdrojové kľúÄové slováCesty zdrojovZdrojové kľúÄové slováCesty zdrojovVýslovnosÅ¥Kontrola pravopisu je vypnutá, pretože slovník pre jazyk %s nie je nainÅ¡talovaný.Pravopis a gramatikaZaÄaÅ¥ rozprávanieZastaviÅ¥ rozprávaniePoÄet uložených prekladov:Kontext reÅ¥azca: %sIdentifikátor reÅ¥azca: %sDĺžka reÅ¥azca v znakochDĺžka reÅ¥azca v znakoch: preklad | zdrojVyhľadávaný reÅ¥azecProjekty Crowdin založené na reÅ¥azcoch nie sú podporované.NahradeniaNávrhyNávrhy nie sú dostupné ak jazyk prekladu nie je nastavený správne. Ostatné funkcie, ako množné Äíslo, tým môžu byÅ¥ ovplyvnené.NadbytoÄný zástupný znak „%s“, ktorý nie je v zdrojovom texte.Podporuje vÅ¡etky programovacie jazyky nástrojov GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript a ÄalÅ¡ie).SynchronizáciaSynchronizovaÅ¥ s CrowdinomSynchronizuje preklad so službou CrowdinSynchronizáciaChyba synchronizácieSynchronizácia so službou Crowdin zlyhala.Chyba syntaxu v hlaviÄke Tvary množného Äísla („%s").Pamäť prekladovSúbory Výmennej pamäte prekladov (TMX)PoužiÅ¥ preložiteľné reÅ¥azce z existujúcej POT Å¡ablóny.Názov tímu a e-mailová adresa alebo URLNahradenia textuPamäť prekladov neobsahuje žiaden reÅ¥azec podobný obsahu tohto súboru. Tento spôsob je úÄinný iba pre poloautomatické preklady po tom, keÄ sa to Poedit nauÄí zo súborov, ktoré ste preložili manuálne.Súbor Výmennej pamäte prekladov (TMX) je poÅ¡kodený.Ak zmeny uložíte, zmeny vykonané inou aplikáciou budú stratené.Nemožno skompilovaÅ¥ súbor do formátu MO a použiÅ¥.Súbor obsahoval duplicitné položky, Äo nie je v PO súboroch povolené a brá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Å¥.Súbor nie je možné uložiÅ¥ v znakovej sade „%s†nastavenej vo vlastnostiach prekladu. Namiesto toho bol uložený v UTF-8 a nastavenia boli podľa toho upravené.Súbor bol upravený. Chcete zmeny uložiÅ¥?Súbor je vo formáte, ktorý Poedit nerozpoznáva.Súbor vo formáte MO bol vytvorený, ale pravdepodobne nefunguje správne.Súbor bol bezpeÄne uložený a skompilovaný do MO formátu, ale pravdepodobne nebude pracovaÅ¥ správne.Súbor bol bezpeÄne uložený, ale nemôže byÅ¥ skompilovaný do formátu MO a následne použitý.Súbor bol bezpeÄne uložený.Súbor „%s†nemožno otvoriÅ¥.Súbor “%s†nebolo možné uložiÅ¥.Súbor „%s†bol zmenený inou aplikáciou.Starý zdrojový text (predtým, než bol zmenený poÄas aktualizácie), bude teraz oznaÄený ako nepresný preklad.NajjednoduchÅ¡ia cesta, ako vyplniÅ¥ tento súbor prekladmi, je aktualizovaÅ¥ ho z POT Å¡ablóny:Preklad nezaÄína medzerou.Preklad konÄí prechodom na nový riadok, ale zdrojový text nie.Preklad konÄí medzerou, ale zdrojový text nie.Preklad konÄí „%s", ale zdrojový text konÄí „%s".Prekladu chýba konci prechod na nový riadok.V preklade chýba medzera na konci.Preklad je pripravený na používanie, ale %d záznam eÅ¡te nie je preložený.Preklad je pripravený na používanie, ale %d záznamy eÅ¡te nie sú preložené.Preklad je pripravený na používanie, ale %d záznamov eÅ¡te nie je preložených.Preklad je pripravený na používanie, ale %d záznamov eÅ¡te nie je preložených.Preklad je pripravený na používanie.Preklad by mal byÅ¥ ukonÄený "%s".Preklad by nemal konÄiÅ¥ „%s".Preklad by mal zaÄaÅ¥ ako veta.Preklad by mal zaÄaÅ¥ malým písmenom.Preklad zaÄína medzerou, ale zdrojový text nie.Preklady boli oznaÄené ako potrebujúce dopracovanie, pretože môžu byÅ¥ nepresné a môžu potrebovaÅ¥ úpravy.V súboru nie sú žiadne preklady. Toto je nezvyÄajné.Vyskytol sa problém pri formátovaní súboru (napriek tomu bol správne uložený).Pri obnove prekladov do služby Localazy doÅ¡lo k chybe.Nastala chyba pri naÄítavaní súboru. Niektoré údaje vo výsledku môžu chýbaÅ¥ alebo byÅ¥ poÅ¡kodené.Tieto nastavenia ovplyvňujú interné formátovanie PO súborov. Zmeňte ich, iba ak máte Å¡peciálne požiadavky, napríklad kvôli správe verzií.Tento súbor JSON nie je prekladový súbor a nemožno ho upravovaÅ¥ v Poedite.Táto akcia odstráni vÅ¡etky preklady, ktoré sa presne zhodujú so zdrojovým textom. Túto operáciu nie je možné vrátiÅ¥ späť.Tento súbor obsahuje položky s množným Äíslom, ale nemá nastavenú hlaviÄku množného Äísla.V tomto súbore sa namiesto zdrojového textu používajú ID reÅ¥azce. Poedit môže za vás naÄítaÅ¥ anglické texty zo súboru „%sâ€.Tento príkaz je použitý na spustenie extraktora. %o rozÅ¡iruje názov výstupného súboru, %K pre zoznam kľúÄových slov, %F pre zoznam vstupných súborov, %C pre príznak kódovej stránky (pozri nižšie).Tento reÅ¥azec bol nájdený v Pamäti prekladov Poeditu.Toto bude pripojené do príkazového riadku iba ak je zadaný zdroj znakovej sady. „%c" sa rozšíri o hodnotu znakovej sady.Toto bude pripojené k príkazu raz pre každý vstupný súbor. „%f" sa zamení názvom súboru.Toto bude pripojené k príkazovému riadku raz pre každé kľúÄové slovo. „%k" sa zamení sa kľúÄové slovo.CelkovoTransformáciePrekladateľné položky sa do systému Gettext nepridávajú ruÄne, ale sú automaticky extrahované zo zdrojového kódu. Takto zostávajú aktuálne a presné. Prekladatelia zvyÄajne používajú súbory Å¡ablón PO (POT), ktoré pre nich pripravil vývojár.PreložiÅ¥ cloudovský projektPreložené: %d z %d (%d %%)PrekladJazyk prekladuPamäť prekladovPreklad potrebuje &dopracovanieVlastnosti prekladovDatabáza Pamäte prekladov je poÅ¡kodená: %s (%d).Chyba pamäte prekladu: %s (%d).Preklad potrebuje &dopracovanieVlastnosti prekladovNávrhy prekladuNávrhy na preklad vyžadujú, aby bol k dispozícii zdrojový text. Nefungujú, ak sa použijú len ID bez skutoÄného textu.Návrhy na preklad vyžadujú, aby bol známy jazyk zdrojového textu. Poedit ho v tomto súbore nedokázal zistiÅ¥.Preklad — %sPreklady sa nepodarilo aktualizovaÅ¥ zo zdrojového kódu, pretože v umiestnení zadanom vo vlastnostiach súboru sa nenaÅ¡iel žiadny kód.DvaUTF-8 (odporúÄané)SpäťVyskytla sa neoÄakávaná výnimka: %sUnix (odporúÄané)Neznáma chyba Crowdinu.Neznáma chybaNepreloženéAktualizovaÅ¥Súhrn aktualizácieAktualizovaÅ¥ vÅ¡etkoAktualizovaÅ¥ vÅ¡etky katalógy v projekteAktualizovaÅ¥ vÅ¡etky katalógy v tomto projekte?AktualizovaÅ¥ zo súboru POT…AktualizovaÅ¥ zo súboru POT…AktualizovaÅ¥ z kóduAktualizovaÅ¥ z POT súboruAktualizovaÅ¥ z kóduAktualizovaÅ¥ zo zdrojového kóduSúhrn aktualizácieAktualizácieAktualizácia zlyhalaAktualizujú sa katalógy projektuAktualizácia prekladuAktualizujú sa informácie o používateľovi…Nahrávanie prekladov prostredníctvom %s zlyhalo.Obnova prekladov v %s…Obnova prekladov…PoužiÅ¥ vlastný výrazPoužiÅ¥ vlastný zoznam písma:Použije vlastný zoznam písma polí:PoužiÅ¥ predvolené pravidlá pre tento jazykPoužiÅ¥ tieto kľúÄové slová (názvy funkcií) pre rozlíšenie preložiteľných reÅ¥azcov v zdrojových súboroch:PoužiÅ¥ Pamäť prekladovOveriÅ¥Výsledky overovaniaVerzia %sZobraziÅ¥ detaily…ZobraziÅ¥ detaily…Čakanie na autentifikáciu…Upozornenie: Vitajte v PoeditePri aktualizácii zo zdrojovIba celé slováOknoWindowsChcete použiÅ¥ anglický zdrojový text?PrehľadávaÅ¥ dookolaZalomiÅ¥ po:Súbory prekladu XLIFFÃnoMôžete vybraÅ¥ preložiteľné reÅ¥azce priamo zo zdrojového kódu:Nemôžete vložiÅ¥ viac ako jeden súbor do okna Poedit.Nemáte oprávnenie na Äítanie súborov zdrojového kódu z umiestnenia urÄenom vo vlastnostiach súboru.Musíte reÅ¡tartovaÅ¥ Poedit, aby sa zmeny prejavili.VaÅ¡e menoVaÅ¡e úpravy budú stratené ak ich neuložíte.VaÅ¡e meno a emailová adresa sú použité iba v hlaviÄke Last-Translator v GNU gettext súboroch.NulaPriblíženieVyžaduje spracovanieneodstraňovaÅ¥ doÄasné súbory (pre ladenie)napr. nplurals=2; plural=(n > 1);chyba: oznaÄovaÅ¥ v súbore ako nepresnéprejsÅ¥ na položku na danom Äísle riadkumanipulátor poedit:// URIAlt+Ctrl+↓Enterâ†â†’Shift+↑altctrlshiftO programe %sSkryÅ¥ %sSkryÅ¥ ostatnéPredvoľby...UkonÄiÅ¥ %sSlužbyZobraziÅ¥ vÅ¡etkopred-preložiÅ¥ z Pamäte prekladovneznámy jazyknepodporovaná verzia (%s)upozornenie: vase_meno@príklad.comSúbor „%s" nie je platný POT súbor.poedit-3.6.3/locales/nb.po0000644000175100001660000025763215011674364011100 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Norwegian Bokmal\n" "Language: nb_NO\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: nb\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Skjul denne meldingen" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ikke vis igjen" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ikke vis igjen" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Sammendrag" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Lukk" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Fil" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Nye tekster" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Samler kildefiler…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Kunne ikke lese oversettelses-filen." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Inn: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Kildekode er ikke tilgjengelig." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Kunne ikke oppdatere oversettelser fra kildekoden, fordi ingen ble funnet i " "plasseringen angitt i filegenskapene." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Ingen tillatelse." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Du har ikke tillatelse til Ã¥ lese kildekodefiler fra plasseringen angitt i " "filegenskapene." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Hvis du tidligere har nektet tilgang til filene dine, kan du gi tilgang i " "Systeminnstillinger > Personvern og Sikkerhet > Filer og mapper." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Hvis du tidligere har nektet tilgang til filene dine, kan du gi tilgang ved " "Ã¥ gÃ¥ til Systeminnstillinger > Personvern og sikkerhet > Filer og mapper." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "«%s»-filen kunne ikke Ã¥pnes." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Oppdaterer oversettelser" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "SlÃ¥r sammen endringer…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Misformet topptekst: \"%s\"" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO oversettelsesfiler" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT Oversettelsesmaler" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF oversettelsesfiler" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON oversettelsesfiler" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter oversettelsesfiler" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Alle oversettelsesfiler" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Denne filen er i et format som ikke gjenkjennes av Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Denne JSON-filen er ikke en oversettelsesfil og kan ikke redigeres i Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Lesing av filinnhold mislyktes med følgende feilmelding: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Fil «%s» er skrivebeskyttet og kan ikke lagres.\n" "Vennligst lagre filen under et annet navn." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Kunne ikke lagre fil %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Skjermbilder:" #: src/catalog_po.cpp:134 #, 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 linje i fil «%s» ble ikke riktig lastet inn." msgstr[1] "%i linjer i fil «%s» ble ikke riktig lastet inn." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Linje %d i filen «%s» er korrupt (ugyldig %s data)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "Ødelagt PO-fil: entallsform msgstr brukt med msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Ødelagt PO-fil: flertallsform msgstr brukt uten msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Kunne ikke laste filen. Den er sannsynligvis skadet." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Det oppstod problemer under lastingen av filen. Noe data kan mangle eller " "være ødelagt." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Det oppstod et problem med Ã¥ formatere filen pÃ¥ pent vis (men den ble lagret " "OK)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Filen kunne ikke lagres i \"%s\" tegnsett som angitt i innstillinger.\n" "\n" "Den ble lagret i UTF-8 i stedet og innstillingen ble endret tilsvarende." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Feil ved lagring av fil" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "«%s» er ikke en gyldig POT-fil." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Feil ved lasting av XLIFF-fil: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "versjonen støttes ikke (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Ødelagt merking i oversettelses-strengen." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Koble Poedit til støttede lokaliserings-platformer i skyen for Ã¥ " "synkronisere oversettelser sømløst." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Hvordan fungerer skysynkronisering?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Konto" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(ikke pÃ¥logget)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Ã…pne skyoversettelse" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Behandle kontoer" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Prosjekt:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "SprÃ¥k:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Logg inn pÃ¥ skykonto" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Logg inn pÃ¥ skykonto" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Ingen oversettelsesprosjekter er oppført pÃ¥ kontoen din." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Laster ned nyeste oversettelser…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Logg inn pÃ¥ %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Synkroniserer" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Laster opp oversettelser til %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Opplasting av oversettelser til %s mislyktes." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Feil ved synkronisering" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Legg til" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Ukjent feil med Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Ikke autorisert, vennligst logg inn igjen." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Nedlasting av oversettelser er deaktivert i dette prosjektet." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Logg inn" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Logg inn" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Logg ut" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Logg ut" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Lær mer om Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Venter pÃ¥ autentisering…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Oppdaterer brukerinformasjon..." #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Logg inn pÃ¥ Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Synkronisering med Crowdin mislyktes." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin-feil" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Laster opp oversettelser…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "Kopier" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Lær mer" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Hjelp" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO-filer kan ikke redigeres direkte i Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Feil under Ã¥pning av filen" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Vennligst Ã¥pne og rediger den tilsvarende PO-filen i stedet. NÃ¥r du lagrer " "den, oppdateres MO-filen ogsÃ¥." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ikke slett midlertidige filer (for feilsøking)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "hÃ¥ndter en poedit://-URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "gÃ¥ til elementet pÃ¥ gitt linjenummer" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Kunne ikke kommunisere med Poedit-prosessen." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ubehandlet unntak oppstod: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Velg oversettelsesmal" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Ugyldig fil" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Velg oversettelsesfil" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "" "Poedit er et redigeringsprogram for oversettelser som er enkelt Ã¥ bruke." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Du kan ikke dra mer enn én fil inn i Poedit-vinduet." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Filen «%s» er ikke en oversettelsesfil." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Filen «%s» finnes ikke." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Stavekontroll er deaktivert fordi ordlisten for %s ikke er installert." #: src/edframe.cpp:871 msgid "Install" msgstr "Installer" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Filen «%s» har blitt endret av et annet program." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Last inn filen pÃ¥ nytt" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Vil du laste inn filen fra disken? Ulagrede endringer i Poedit vil gÃ¥ tapt." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignorer" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Last inn fil pÃ¥ nytt" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Filen har blitt endret. Vil du lagre endringene?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Lagre endringer" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Dine endringer vil gÃ¥ tapt hvis du ikke lagrer dem." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Lagre" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ik&ke lagre" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ikke lagre" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Endringene gjort av den andre applikasjonen vil gÃ¥ tapt hvis du lagrer." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "&Avbryt" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Lagre uansett" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Lagre uansett" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Lagre som…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Kompiler til…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Kompilerte oversettelsesfiler" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Eksporter til HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML-filer" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Oppdatering mislyktes" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Oppdater fra &POT-fil…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Oppdater fra &POT-fil…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d problem med oversettelsen funnet." msgstr[1] "%d problemer med oversettelsen funnet." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Valideringsresultat" #: src/edframe.cpp:1842 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 "" "Oppføringer med feil ble markert med rødt i listen. Detaljer om feilen vises " "nÃ¥r du velger en slik oppføring." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Filen ble trygt lagret." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Filen ble trygt lagret og kompilert i MO-format, men vil sannsynligvis ikke " "fungere riktig." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Filen ble trygt lagret, men kunne ikke kompileres til MO-formatet og brukes." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Filen ble kompilert i MO-format, men vil sannsynligvis ikke fungere riktig." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Filen kunne ikke kompileres til MO-formatet og brukes." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Ingen problemer med oversettelsen funnet." #: src/edframe.cpp:1894 #, 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] "" "Oversettelsen er klar til bruk, men %d streng er ikke oversatt enda." msgstr[1] "" "Oversettelsen er klar til bruk, men %d strenger er ikke oversatt enda." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Oversettelsen er klar til bruk." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit rettet automatisk opp ugyldig innhold i filen «%s»." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Filen inneholdt duplikater, noe som ikke er tillatt i PO-filer og ville " "hindret filen i Ã¥ bli brukt. Poedit har løst problemet, men du bør gjennomgÃ¥ " "alle oversettelser merket med «Trenger arbeid» og rette dem om nødvendig." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "OversettelsessprÃ¥k er ikke valgt." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Velg sprÃ¥k" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Velg sprÃ¥k" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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Ã¥." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "OversettelsessprÃ¥k og kildesprÃ¥k er det samme." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Rett opp sprÃ¥k" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Rett opp sprÃ¥k" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Denne filen har oppføringer med flertallsformer, men har ikke en Plural-" "Forms header konfigurert." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Oppføringer i denne filen har forskjellige antall flertallsformer enn " "spesifisert i filens Plural-Forms header" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "En pÃ¥krevd Plural-Forms header mangler." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntaksfeil i Plural-Forms header («%s»)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Reparer headeren" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Reparer headeren" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Flertallsformuttrykket som brukes av filen er uvanlig for %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Se igjennom" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Vil du bruke engelsk som kildetekst?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Denne filen bruker strenge-ID-er istedet for kildetekst. Poedit kan laste " "inn engelsk tekst fra filen «%s» for deg." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Last inn engelsk" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Oversatt: %d av %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "GjenstÃ¥r: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d feil" msgstr[1] "%d feil" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d oppføring" msgstr[1] "%d oppføringer" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (ikke lagret)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (endret)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Kunne ikke oppdatere oversettingsminnet: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Fjern samme-som-kilde oversettelser" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Vil du fjerne alle oversettelser som er identiske med kildeteksten?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Denne handlingen vil slette alle oversettelser som samsvarer perfekt med " "kildeteksten. Dette kan ikke angres." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Behold" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Fjern" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Fjern slettede oversettelser" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Vil du fjerne alle oversettelser som ikke lenger brukes?" #: src/edframe.cpp:2879 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 "" "Hvis du fortsetter vil alle oversettelser merket som slettet fjernes " "permanent. Du mÃ¥ oversette dem igjen hvis de legges tilbake i fremtiden." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Fjern" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Kopier fra kildetekst" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopier fra kildetekst" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Tøm oversettelse" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Tøm oversettelse" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Rediger kommentar" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Rediger kommentar" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Kode forekomster" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Forekomster av kode" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Skjul sidepanelet" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Vis sidepanelet" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Skjul statuslinje" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Vis statuslinje" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Lengde pÃ¥ streng i tegn: oversettelsec kilde" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Tekst lengde i tegn" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Kildetekst" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Entall" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Flertall" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Oversettelse" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "ForhÃ¥nds-oversatt" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Trenger arbeid" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Trenger arbeid" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Opprett ny oversettelse" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Lag en ny oversettelse av denne POT-filen." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Kildetekstens ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Alt" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Form %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Skjemaet %i (ubrukt)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Null" #: src/editing_area.cpp:788 msgid "One" msgstr "En" #: src/editing_area.cpp:790 msgid "Two" msgstr "To" #: src/editing_area.cpp:804 msgid "Other" msgstr "Andre" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Kontekst for streng: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "ID for streng: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s-format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s-format" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Oversettelse — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Kildetekst — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "ukjent sprÃ¥k" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Nettverksfeil: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Ukjent feil" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Klarte ikke slÃ¥ sammen gettex-kataloger." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Ã…pne i redigeringsprogram" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Ã…pne i redigeringsprogram" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Ingen informasjon om denne strengens forekomster i kildekoden finnes i filen." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Ingen bruksinformasjon" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kodeforekomst" msgstr[1] "%d kodeforekomster" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Kildekoden ikke funnet" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit kan ikke vise kildekode der strengen er brukt. fordi filen enten ikke " "er tilgjengelig i den refererte posisjonen, eller det er en symbolsk " "referanse som ikke peker pÃ¥ en realfil." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Filen kan ikke Ã¥pnes" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit kunne ikke Ã¥pne “%s†filen." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Finn" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Erstatt" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Alternativer" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignorer smÃ¥/STORE bokstaver" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Pakk rundt" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Bare hele ord" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Finn i kildetekster" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Finn i oversettelser" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Finn i kommentarer" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Erstatt &alle" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Erstatt &alle" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Erstatt" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "↠&Tidligere" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Neste →" #: src/findframe.cpp:235 msgid "String to find" msgstr "Strengen som skal finnes" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Erstatningsstreng" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "SprÃ¥knavn eller -kode" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "OversettelsesprÃ¥ket" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "SprÃ¥ket til oversettelsen:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Alle strenger" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Kunne ikke laste ned prosjektdetaljer fra Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "En feil oppsto ved opplasting av oversettelser til Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Prosjekter" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Lær mer om %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy er en høyt automatisert lokaliserings-plattform som enkelt lar hvem " "som helst oversette sine produkter og innhold til flere sprÃ¥k." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Legg til prosjekt" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Legg til prosjekt" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - KataloghÃ¥ndterer" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Rediger…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Lag nytt oversettelsesprosjekt" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Slett prosjekt" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Rediger prosjekt" #: src/manager.cpp:176 msgid "Update all" msgstr "Oppdater alle" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Oppdater alle katalogene i prosjektet" #: src/manager.cpp:378 msgid "Total" msgstr "Totalt" #: src/manager.cpp:379 msgid "Untrans" msgstr "Ikke oversettbart" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Trenger arbeid" #: src/manager.cpp:381 msgid "Errors" msgstr "Feil" #: src/manager.cpp:382 msgid "Last modified" msgstr "Sist endret" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Velg mappe" #: src/manager.cpp:433 msgid "Directories:" msgstr "Mapper:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Vil du slette prosjektet “%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Slett prosjekt" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Slette prosjektet vil ingen oversettelsesfiler slettes." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Bekreftelse" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Oppdater alle kataloger i dette prosjektet?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Utfører oppdatering fra kildekode pÃ¥ alle filer i prosjektet." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Se etter oppdateringer…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Katalogbehandling" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Innstillinger…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Rediger" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Angre" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Gjør om" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Lim inn og tilpass stil" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Slett" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Stavekontroll og grammatikk" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Vis stavekontroll og grammatikk" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Sjekk dokumentet nÃ¥" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Stavekontroll mens du skriver" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Kontroller grammatikk i stavekontrollen" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Korrigere stavefeil automatisk" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Erstatninger" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Vis erstatninger" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Enkel Kopiering/Lim inn" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Apostrof" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Enkle punkter" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Enkle lenker" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Teksterstatning" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformasjoner" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Gjør om til store bokstaver" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Gjør om til smÃ¥ bokstaver" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Stor forbokstav" #: src/menus.cpp:237 msgid "Speech" msgstr "Tale" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Begynn Ã¥ snakke" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Slutt Ã¥ snakke" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Vis" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Vis verktøylinje" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Tilpass verktøylinje..." #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "GÃ¥ til fullskjerm" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Vindu" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimer" #: src/menus.cpp:264 msgid "Zoom" msgstr "Zoom" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Velkommen til Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Plasser fremst" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informasjon om oversetteren" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Navn:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Ditt navn" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-post:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "deg@eksempel.no" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Navnet og E-postadressen din brukes bare til Ã¥ bestemme hvem som skal " "oppføres som den seneste oversetteren av GNU gettext-filer." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Redigering" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Automatisk kompiler MO-filen ved lagring" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Stavesjekk" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "&Fokuser automatisk pÃ¥ oversettelsesfeltet" #: src/prefsdlg.cpp:211 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 "" "La aldri tekstlisten fÃ¥ fokus. Du mÃ¥ bruke Ctrl + piltast for Ã¥ bevege deg " "mellom tekstene, men du kan ogsÃ¥ skrive direkte, uten Ã¥ mÃ¥tte trykke pÃ¥ Tab " "først." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Utseende" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Bruk egendefinert listeskrifttype:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Bruk egendefinert tekstfelt-skrifttype:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Sett sprÃ¥k for brukergrensesnitt" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(krever Windows 8 eller nyere)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Generelt" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Bruk oversettelsesminne" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Behandle…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Ved oppdatering fra kilder" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "fuzzy-treff i fila" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "forhÃ¥nds-oversatt fra TM" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit kan prøve Ã¥ fylle inn nye oppføringer ved bruk av tidligere " "oversettelser i fila, eller fra hele ditt oversettelsesminne. Bruk av OM vil " "ikke være særlig effektivt, siden den nesten er tom, men det bedrer seg " "etterhvert som oversettelser blir lagt til." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Lagrede oversettelser:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Databasestørrelsen pÃ¥ disk:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importer oversettelsesfiler…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importer oversettelsesfiler…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importer fra TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importer fra TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Eksporter til TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Eksporter til TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Tilbakestill" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Velg oversettelsesfiler som skal importeres" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Velg TMX filer for importering" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX filer" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Importerer oversettelser…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Eksporter som…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Eksporterer oversettelser…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Kunne ikke eksportere oversettelsesminne til \"%s\"." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Tilbakestill oversettingsminnet" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Er du sikker pÃ¥ at du vil tilbakestille oversettelsesminnet?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Ã… tilbakestille oversettelsesminnet vil ugjenkallelig slette alle lagrede " "oversettelser fra den. Du kan ikke angre operasjonen." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Oversettelsesminne" #: src/prefsdlg.cpp:730 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 "" "Kildekodeutpakkere brukes til Ã¥ finne oversettbare strenger i kildekodefiler " "og Ã¥ pakke dem ut slik at de kan oversettes." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Egendefinerte utpakkere:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Egendefinerte utpakkere:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Støtter alle programmeringssprÃ¥k som er gjenkjent av GNU gettext-verktøy " "(PHP, C/C++, C#, Perl, Python, Java, JavaScript og andre)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Slett ekstraktor" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Er du sikker pÃ¥ at du vil slette \"%s\" ekstraktor?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Utpakker" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Kontoer" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Automatisk se etter oppdateringer" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Inkluder betaversjoner" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta-versjoner inneholder de nyeste funksjonene og forbedringene, men kan " "være litt mindre stabil." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Oppdateringer" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Disse innstillingene pÃ¥virker den interne formateringen av PO-filer. Juster " "dem hvis du har bestemte krav, f.eks pÃ¥ grunn av versjonskontroll." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Linjeavslutninger:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "UNIX (anbefales)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Vikle pÃ¥:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Behold formateringen til eksisterende filer" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Avansert" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Innstillinger" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Forbereder strenger…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "ForhÃ¥nds-oversetter fra oversettelsesminne…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "ForhÃ¥nds-oversatte %u tekststreng" msgstr[1] "ForhÃ¥nds-oversatte %u tekststrenger" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "ForhÃ¥nds-oversetter…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d oppføring ble forhÃ¥nds-oversatt." msgstr[1] "%d oppføringer ble forhÃ¥nds-oversatt." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Oversettelsene ble markert som Trenger arbeid, fordi de kan være unøyaktige. " "Du bør gjennomse dem for Ã¥ vurdere hvor korrekte de er." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Ingen oppføringer kan bli forhÃ¥nds-oversatt." #: src/pretranslate.cpp:218 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 inneholder ikke strenger lik innholdet i denne filen. Det er bare " "effektivt for semi-automatiske oversettelser, som Poedit lærer fra filer som " "du oversetter manuelt." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Kan ikke forhÃ¥ndsoversette uten kildetekst." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "ForhÃ¥nds-oversett" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "ForhÃ¥ndsoversettelse krever at en kildetekst er tilgjengelig. Det virker " "ikke om kun IDer uten tekst er i bruk." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Kan ikke forhÃ¥ndsoversette fra et ukjent sprÃ¥k." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "ForhÃ¥ndsoversettelse krever at kildetekstens sprÃ¥k er kjent. Poedit kunne " "ikke gjenkjenne det i denne filen." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Fyll kun ut nøyaktige treff" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Som standard er ogsÃ¥ unøyaktige resultater inkludert, men markert som " "«trenger arbeid». Kryss av her for Ã¥ kun inkludere perfekte resultater." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Ikke marker nøyaktige treff som Trenger arbeid" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Bare skru pÃ¥ dette hvis du stoler pÃ¥ kvaliteten pÃ¥ ditt OM. Som forvalg, " "blir alle treff fra OM markert som Trenger arbeid, og bør ses over før de " "brukes." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "ForhÃ¥nds-oversettelse vil automatisk finne eksakte eller vilkÃ¥rlige " "sammensettinger for uoversatte strenger i oversettelses-minnet og fyller " "deretter ut oversettelsene." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Avbryter…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Dra mapper eller filer hit" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Dra mapper eller filer hit" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Legg til mapper…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Legg til mapper…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Legg til filer…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Legg til filer…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Legg til jokertegn…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Legg til jokertegn…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Vis i Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Vis i utforsker" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Vis i mappe" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Stier" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Ekskluderte baner" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Avanserte utvinningsinnstillinger" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Hent ut notater for oversettere fra:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Kommentarer som innledes med:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Alle kommentarer" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Ytterligere xgettext-flagg:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Flere søkeord" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Navnet pÃ¥ prosjektet oversettelsen er for" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Lagnavn og e-postadresse eller nettadresse" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "f.eks nplurals = 2; flertall = (n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (anbefales)" #: src/propertiesdlg.cpp:976 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." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Plassholder-riktighet" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Midlertidig â€%s†mangler i oversettelsen." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Superflukt plassholder “%s, that is not is in source text." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Flertallsform oversettelser" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Ikke alle flertallsformer er oversatte." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Ukonsekvent øvre/smÃ¥ bokstaver" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Oversettelsen burde begynne som en setning." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Oversettelsen burde begynne med en liten bokstav." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Inconsistent whitespace" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Oversettelsen starter ikke med et mellomrom." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "" "Oversettelsen starter med et mellomrom, men kildeteksten gjør det ikke." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Oversettelsen mangler en linje pÃ¥ slutten." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Oversettelsen slutter med en linje, men kildeteksten gjør ikke." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Oversettelsen mangler et mellomrom pÃ¥ slutten." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Oversettelsen slutter med et mellomrom, men kildeteksten gjør ikke." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Stikkprøvekontroll" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Oversettelsen burde slutte med \"%s\"." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Oversettelsen burde ikke slutte med \"%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Oversettelsen slutter med \"%s\", men kildeteksten slutter med \"%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Skylagring" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Nullstill meny" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Nullstill meny" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Kommentar:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Oppdater" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Slett" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Slett kommentaren" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Rediger prosjekt" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Prosjektnavn:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Bla &gjennom" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Legg katalog til lista" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "&OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Fil" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Ny…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Ny fra &POT/PO fil…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Ny fra &POT/PO fil…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Ã…pne…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Ã…pne seneste" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Ã…pne seneste" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Ã…pne skyoversettelse…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Ã…pne skyoversettelse…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Startmeny" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Startmeny" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Katalog&hÃ¥ndterer" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Katalog&behandler" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Avslutt" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "La&gre" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Lagre &som…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Lagre &som…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Kompiler til MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&ksporter til HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Se etter oppdateringer…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Innstillinger…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Innstillinger" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "Avslutt" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Avslutt" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopier fra entall" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopier fra entall" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Oversettelsen trenger &arbeid" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Oversettelsen trenger &arbeid" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "&Rediger kommentar" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Rediger &kommentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Forslag" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Søk…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Erstatt…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Finn neste" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Finn forrige" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Søk og erstatt…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Finn neste" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Finn forrige" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Vis string-&ID" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Vis string-&ID" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Vis advarsler" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Vis advarsler" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Sorter etter &filrekkefølge" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Sorter etter &filrekkefølge" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Sorter etter &kilde" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Sorter etter &kilde" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Sorter etter overse&ttelse" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Sorter etter overse&ttelse" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Sorter etter sammenheng" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Sorter etter sammenheng" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Oppføringer med feil først" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Oppføringer med feil først" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Uoversatte poster først" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Uoversatte poster først" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Vis kodeforekomster" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Vis Kodetime-forekomster" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Vis sidepanelet" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Vis statuslinje" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Oversettelse" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Oppdater fra kildekode" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Oppdater fra kildekode" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Synkroniser med Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "ForhÃ¥nds&oversett…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Valider oversettelser" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Valider oversettelser" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Fjern oversettelser som er lik kildeteksten" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Fjern slettede oversettelser" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "Fjern slettede oversettelser" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Egenskaper…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&GÃ¥" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "Utført og neste" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Utført og neste" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Tidligere redigert" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Tidligere endret" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Tidligere oversettelse" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Tidligere oversettelse" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Neste oversettelse" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Neste oversettelse" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Fo&rrige uferdige" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Fo&rrige uferdige" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Neste uferdige" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Neste uferdige" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Forrige flertallsform" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Forrige flertallsform" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Neste flertallsform" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Neste flertallsform" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Hjelp pÃ¥ nett" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Hjelp pÃ¥ nett" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext-dokumentasjon" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext-dokumentasjon" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Om Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "Om" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Utpakker-oppsett" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Liste over etternavn skilt med semikolon (f.eks. «*.cpp; *.h»):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Start: " #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Kommando for Ã¥ pakke ut oversettelser:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Denne kommandoen brukes til Ã¥ starte utpakker.\n" "%o utvides til navnet pÃ¥ utdatafilen, %K til listen\n" "over søkeord, %F til listen over inndatafiler,\n" "og %C til karaktersettsflagget (se nedenfor)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Et element i lista over nøkkelord:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Dette blir føyd til kommandolinja én gang\n" "for hvert nøkkelord. %k blir utvidet til nøkkelordet." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Et element i lista over inndatafiler:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Dette blir lagt til kommandolinja en gang\n" "for hver inndatafil. %f blir utvidet til filnavnet." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Kildekodetegnsett:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Dette blir lagt til kommandolinja bare hvis\n" "kildekodetegnsett ble angitt. %c blir utvidet til tegnsettets verdi." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Oversettelsesegenskaper" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "&Prosjektnavn og -versjon:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "SprÃ¥klag:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Flertallsformer:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Bruk standardregler for dette sprÃ¥ket" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Bruk egendefinerte uttrykk" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Lær om flertallsformer" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "&Tegnkoding:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Avanserte innstillinger for eksportering…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Avanserte innstillinger for eksportering…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Egenskaper for oversettelse" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Kildestier" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Kildebaner" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Trekk ut tekst fra kildefiler i følgende kataloger:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "&Grunnsti:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Kilde-nøkkelord" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Kilder nøkkelord" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Bruk disse nøkkelordene (funksjonsnavn) til Ã¥ gjenkjenne oversettbare " "strenger\n" "i kildefiler:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Bruk forvalgte nøkkelord ogsÃ¥ for støttede sprÃ¥k" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Lær om gettext-søkeord" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Ã…pne fil" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Lagre filen" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Valider" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Se etter feil i oversettelse" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Oppdatere fra koden" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Oppdatere fra koden" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Oppdater fra kildekode" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Sidepanel" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Vis eller skjul sidepanelet" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Tidligere kildetekst" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Den gamle kildeteksten (før den endres under en oppdatering) som den nÃ¥ ikke-" "nøyaktige oversettelsen samsvarer med." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Notater for oversettere" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Kommentar" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Legg til kommentar" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Legg til kommentar" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Slett fra oversettelsesminne" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Slett fra oversettelsesminne" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Oversettelsesforslag" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Ingen treff funnet" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Ingen treff funnet" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Denne strengen ble funnet i Poedits oversettelsesminne." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Oversettelsesforslag krever en tilgjengelig kildetekst. De virker ikke om " "bare strenge-IDer uten tekst er i bruk." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Oversettelsesforslag krever at kildetekstens sprÃ¥k er kjent. Poedit kunne " "ikke gjenkjenne sprÃ¥ket i denne filen." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Kan ikke kjøre program: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX-filen er feilformatert." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Oversettelsesminnedatabasen er skadet: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Oversettelsesminnefeil: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Bruk standard sprÃ¥k)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "SprÃ¥kvalg" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Velg foretrukket sprÃ¥k" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Du mÃ¥ starte Poedit pÃ¥ nytt for at denne endringen skal tre i kraft." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Kan ikke opprette midlertidig katalog." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Det finnes ingen oversettelser. Det er uvanlig." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Den enkleste mÃ¥ten Ã¥ fylle ut denne filen med oversettelser, er Ã¥ oppdatere " "den fra en POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Oppdater fra POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Ta oversettbare strenger fra en eksisterende POT mal." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Du kan ogsÃ¥ hente oversettbare strenger direkte fra kildekoden:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Utdrag fra kilder" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Konfigurer kildekodeutvinningen i Egenskaper." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versjon %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Lag ny" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Lag en ny oversettelse ut i fra en POT-mal" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Bla gjennom filer" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Ã…pne og rediger oversettelsesfiler." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Oversett skyprosjekt" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Samarbeid med andre pÃ¥ internett." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Nylige filer" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Synkroniser" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Synkroniser oversettelsen med Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Om %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s preferanser" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Om %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Tjenester" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Skjul %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Skjul andre" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Vis alle" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Avslutt %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Innstillinger…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Preferanser..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferanser..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "Bruk" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Legg til" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "Til&bake" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Tilbake" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "Avbryt" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "Tøm" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Klargjør" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopier" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Klipp &ut" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Klipp ut" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "&Rediger" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Avslutt" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Hjelp" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Ny" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "&Ny" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Nei" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Nei" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Ã…pne…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Ã…pne ..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Ã…pne..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Lim inn" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Lim inn" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Innstillinger" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "Gjø&r om" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Oppdatér" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "Lagre &som" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Lagre som" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "&Merk alle" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Merk alle" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Angre" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "Ja" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ja" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Skriv" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Opp" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Ned" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Venstre" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Høyre" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/az.po0000644000175100001660000024174215011674363011105 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Azerbaijani\n" "Language: az_AZ\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: az\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Bu bildiriÅŸ mesajını gizlÉ™din" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "TÉ™krar GöstÉ™rmÉ™" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "TÉ™krar göstÉ™rmÉ™" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "YenilÉ™nmÉ™nin nÉ™ticÉ™si" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "BaÄŸla" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Fayl" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Yeni sÉ™tir" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "MÉ™nbÉ™ faylları yığılır…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "İxrac edilmiÅŸ tÉ™rcümÉ™lÉ™rlÉ™ faylı yüklÉ™mÉ™ uÄŸursuz oldu." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "MÉ™nbÉ™ kodu É™lçatan deyil." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "" #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "TÉ™rcümÉ™lÉ™r yenilÉ™nir" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "FÉ™rqliliklÉ™r birləşdirilir…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "SÉ™hv yazılmış baÅŸlıq: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO TÉ™rcümÉ™ Faylları" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT TÉ™rcümÉ™ Åžablonları" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF TÉ™rcümÉ™ Faylları" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Bütün TÉ™rcümÉ™ Faylları" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "\"%s†faylı yalnız-oxunan olduÄŸu üçün saxlanıla bilmÉ™z.\n" "ZÉ™hmÉ™t olmasa fÉ™rqli bir ad ilÉ™ saxlayın." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "%s faylı saxlanıla bilmÉ™di." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "" #: src/catalog_po.cpp:134 #, 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] "“%2$s†faylının %1$i sÉ™tri düzgün qaydada yüklÉ™nmÉ™di." msgstr[1] "“%2$s†faylının %1$i sÉ™tri düzgün qaydada yüklÉ™nmÉ™di." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "" "“%2$s†faylının %1$d nömrÉ™li sÉ™tri zÉ™dÉ™lidir (%3$s verilÉ™nlÉ™ri etibarlı " "deyil)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "ZÉ™dÉ™li PO faylı: tÉ™k formalı 'msgstr', 'msgid_plural' ilÉ™ birlikdÉ™ istifadÉ™ " "olunub" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "ZÉ™dÉ™li PO faylı: cÉ™m formalı 'msgstr', 'msgid_plural' ilÉ™ birlikdÉ™ istifadÉ™ " "olunub" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Fayl yüklÉ™nÉ™rkÉ™n xÉ™talar baÅŸ verdi. NÉ™ticÉ™ etibarilÉ™ bÉ™zi verilÉ™nlÉ™r É™skik " "vÉ™ ya zÉ™dÉ™li ola bilÉ™r." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Faylı gözÉ™l olaraq formatlamada xÉ™ta baÅŸ verdi (ancaq problemsiz saxlanıldı)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Fayl saxlayarkÉ™n xÉ™ta" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†etibarlı bir POT faylı deyil." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "TÉ™rcümÉ™ sÉ™trindÉ™ zÉ™dÉ™li iÅŸarÉ™lÉ™mÉ™." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "LayihÉ™:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Dil:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Æn son tÉ™rcümÉ™lÉ™r endirilir…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Eyniləşdirilir" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "EyniləşdirmÉ™ xÉ™tası" #: src/commentdlg.cpp:48 msgid "Add" msgstr "ÆlavÉ™ et" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "SÉ™lahiyyÉ™tiniz yoxdur, zÉ™hmÉ™t olmasa tÉ™krar daxil olun." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Bu layihÉ™dÉ™ tÉ™rcümÉ™lÉ™ri endirmÉ™k sıradan çıxarıldı." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Daxil Ol" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Daxil ol" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Çıxış Et" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Çıxış et" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Crowdin haqqında daha É™traflı É™ldÉ™ edin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Kimlik tÉ™sdiqlÉ™mÉ™si üçün gözlÉ™nilir…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "İstifadəçi mÉ™lumatları yenilÉ™nir..." #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Crowdin-dÉ™ daxil olun" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Crowdin ilÉ™ sinxronlaÅŸdırma baÅŸ tutmadı." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin xÉ™tası" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "TÉ™rcümÉ™lÉ™r göndÉ™rilir…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Köçür" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Daha çox öyrÉ™n" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Yardım" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO faylları birbaÅŸa Poedit içindÉ™ redaktÉ™ edilÉ™ bilmÉ™z." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Fayl açılması sırasında xÉ™ta" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "LütfÉ™n bunun yerinÉ™ É™laqÉ™dar PO faylını açın vÉ™ redaktÉ™ edin. Qeyd etdiyiniz " "zaman, MO faylı da yenilÉ™nÉ™cÉ™kdir." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "bir poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Poedit É™mÉ™liyyatı ilÉ™ É™laqÉ™ qurmaq baÅŸ tutmadı." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "GözlÉ™nilmÉ™z bir xÉ™ta baÅŸ verdi: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "XÉ™talı fayl" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit asan istifadÉ™ edilÉ™ bilÉ™n bir tÉ™rcümÉ™ redaktorudur." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "" #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "" #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "" #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Yazı korrektoru deaktivasiya edildi, çünki %s üçün lüğət qurulmuÅŸ deyil." #: src/edframe.cpp:871 msgid "Install" msgstr "Qur" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" #: src/edframe.cpp:968 msgid "Ignore" msgstr "" #: src/edframe.cpp:968 msgid "Reload File" msgstr "" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "DÉ™yiÅŸikliklÉ™ri qeyd et" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "" #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Qeyd et" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Qeyd etmÉ™" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "İmtina" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "FÉ™rqli saxla…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Kompliyasiya EdilmiÅŸ TÉ™rcümÉ™ Faylları" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML Faylları" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "YenilÉ™nmÉ™ baÅŸ tutmadı" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "TÉ™rcümÉ™dÉ™ %d xÉ™ta tapıldı." msgstr[1] "TÉ™rcümÉ™dÉ™ %d xÉ™ta tapıldı." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "TÉ™sdiqlÉ™mÉ™ nÉ™ticÉ™lÉ™ri" #: src/edframe.cpp:1842 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 "" "XÉ™talı sÉ™tirlÉ™r siyahıda qırmızı rÉ™ngdÉ™ göstÉ™rilir. XÉ™ta haqqında mÉ™lumata " "baxmaq üçün sÉ™tri seçin." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Fayl tÉ™hlükÉ™siz bir ÅŸÉ™kildÉ™ qeyd edildi." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Fayl problemsiz olaraq MO formatında kompliyasiya olundu vÉ™ qeyd edildi, " "ancaq böyük ehtimalla ola bilsin ki, düzgün iÅŸlÉ™mÉ™sin." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "Fayl problemsiz qeyd edildi, ancaq MO formatında baÅŸ tutmadı." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Fayl, MO formatında kompliyasiya edildibi, ancaq böyük ehtimalla, düzgün " "iÅŸlÉ™mÉ™yÉ™cÉ™k." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "" "Fayl, MO formatında kompliyasiya edilÉ™ bilmÉ™z vÉ™ istifadÉ™ edilÉ™ bilmÉ™z." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "TÉ™rcümÉ™ ilÉ™ É™laqqÉ™dar heç bir problem tapılmadı." #: src/edframe.cpp:1894 #, 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] "" "TÉ™rcümÉ™ istifadÉ™ üçün hazırdır, ancaq %d sÉ™tir hÉ™lÉ™lik tÉ™rcümÉ™ edilmÉ™miÅŸdir." msgstr[1] "" "TÉ™rcümÉ™ istifadÉ™ üçün hazırdır, ancaq %d sÉ™tir hÉ™lÉ™lik tÉ™rcümÉ™ edilmÉ™miÅŸdir." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "TÉ™rcümÉ™ istifadÉ™ üçün hazırdır." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit, “%s†faylındakı etibarsız içəriyi avtomatik olaraq düzÉ™ltdi." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "" #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Dili Qur" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "TÉ™rcümÉ™ dili doÄŸru olaraq qurulmazsa, mÉ™slÉ™hÉ™tlÉ™r istifadÉ™ edilÉ™ bilmÉ™z. CÉ™m " "formatlar kimi, digÉ™r özÉ™lliklÉ™r dÉ™ tÉ™sirlÉ™nÉ™ bilÉ™r." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "TÉ™rcümÉ™ dili mÉ™nbÉ™ dili ilÉ™ eynidir." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Dili DüzÉ™lt" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Dili düzÉ™lt" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "GÉ™rÉ™kli baÅŸlıq CÉ™m-Formatları É™ksikdir." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "CÉ™m-Formatı baÅŸlığında sintaksis xÉ™tası (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "BaÅŸlığı DüzÉ™lt" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "BaÅŸlığı düzÉ™lt" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Baxış" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "%d / %d (%d %%) tÉ™rcümÉ™ edildi" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Qalan: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d xÉ™ta" msgstr[1] "%d xÉ™ta" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d yazı" msgstr[1] "%d yazı" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (qeyd edilmÉ™miÅŸ)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (modifikasiya edilmiÅŸ)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "TÉ™rcümÉ™ yaddaşı yenilÉ™nÉ™ bilmÉ™di: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Tut" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "SilinmiÅŸ tÉ™rcümÉ™lÉ™ri yox edin" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "" "Artıq istifadÉ™ edilmÉ™yÉ™n bütün É™mÉ™liyyatların silinmÉ™sini istÉ™yirsinizmi?" #: src/edframe.cpp:2879 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 "" "Davam etsÉ™niz, silinmÉ™k üçün iÅŸarÉ™lÉ™nmiÅŸ bütün tÉ™rcümÉ™lÉ™r yox olacaq. " "GÉ™lÉ™cÉ™kdÉ™ bunlar yenidÉ™n É™lavÉ™ olunarsa, tÉ™krar tÉ™rcümÉ™ etmÉ™k " "mÉ™cburiyyÉ™tindÉ™ qalacaqsınız." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Yox edin" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "MÉ™nbÉ™ mÉ™tnindÉ™n köçür" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "MÉ™nbÉ™ MÉ™tnindÉ™n Köçür" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "TÉ™rcümÉ™ni tÉ™mizlÉ™" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "TÉ™rcümÉ™ni TÉ™mizlÉ™" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Şərhi redaktÉ™ et" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Şərhi RedaktÉ™ Et" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Yan menyunu GizlÉ™t" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Yan menyunu GöstÉ™r" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Status ÇubuÄŸunu GizlÉ™t" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Status ÇubuÄŸunu GöstÉ™r" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "MÉ™nbÉ™ mÉ™tni" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "TÉ™k" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "CÉ™m" #: src/editing_area.cpp:477 msgid "Translation" msgstr "TÉ™rcümÉ™" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "" #: src/editing_area.cpp:566 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 Faylları sadÉ™cÉ™ ÅŸablonlardır vÉ™ özü-özündÉ™n hÉ™r hansı bir tÉ™rcümÉ™yÉ™ " "sahib olmazlar.\n" "Bir tÉ™rcümÉ™ etmÉ™k üçün ÅŸablonu É™sas alan yeni bir PO faylı yaradın." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Yeni tÉ™rcümÉ™ yarat" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: src/editing_area.cpp:768 msgid "Everything" msgstr "HÉ™r ÅŸey" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Format %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Sıfır" #: src/editing_area.cpp:788 msgid "One" msgstr "Bir" #: src/editing_area.cpp:790 msgid "Two" msgstr "İki" #: src/editing_area.cpp:804 msgid "Other" msgstr "DigÉ™r" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s Format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s format" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "TÉ™rcümÉ™ — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "MÉ™nbÉ™ mÉ™tni — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "bilinmÉ™yÉ™n dil" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Gettext kataloqlarını birləşdirÉ™rkÉ™n bir xÉ™ta baÅŸ verdi." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Redaktorda Aç" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Redaktorda aç" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Tap" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "DÉ™yiÅŸdir" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "ParametrlÉ™r" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Böyük-kiçik hÉ™rflÉ™ri gözardı et" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "ÇevrÉ™sindÉ™ sürüşdür" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "MÉ™tnÉ™ eyni ilÉ™ uyÄŸun gÉ™lÉ™nlÉ™ri tap" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "MÉ™nbÉ™ mÉ™tnlÉ™rdÉ™ axtar" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "TÉ™rcümÉ™lÉ™rdÉ™ tap" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "ŞərhlÉ™rdÉ™ tapın" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "DÉ™yiÅŸdir &Hamısını" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "DÉ™yiÅŸdir &Hamısını" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&DÉ™yiÅŸdir" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &ÖncÉ™ki" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Sonrakı >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Tapılacaq sÉ™tir" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "DÉ™yiÅŸdirmÉ™ sÉ™tri" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "TÉ™rcümÉ™ Dili" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "TÉ™rcümÉ™ dili:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Kataloq meneceri" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "RedaktÉ™ et…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Yeni tÉ™rcümÉ™ layihÉ™si hazırlayın" #: src/manager.cpp:145 msgid "Delete the project" msgstr "LayihÉ™ni sil" #: src/manager.cpp:146 msgid "Edit the project" msgstr "LayihÉ™ni redaktÉ™ et" #: src/manager.cpp:176 msgid "Update all" msgstr "Tamamını yenilÉ™" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "LayihÉ™dÉ™ki bütün kataloqları yenilÉ™" #: src/manager.cpp:378 msgid "Total" msgstr "Ümumi" #: src/manager.cpp:379 msgid "Untrans" msgstr "TÉ™rcümÉ™ edilmÉ™miÅŸ" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "" #: src/manager.cpp:381 msgid "Errors" msgstr "XÉ™talar" #: src/manager.cpp:382 msgid "Last modified" msgstr "Son modifikasiya" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Direktoriya seç" #: src/manager.cpp:433 msgid "Directories:" msgstr "Direktoriyalar:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "" #: src/manager.cpp:540 msgid "Delete project" msgstr "" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" #: src/manager.cpp:571 msgid "Confirmation" msgstr "TÉ™sdiq" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "YeniliklÉ™ri yoxla…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Kataloq Meneceri" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&ÜstünlüklÉ™r…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&RedaktÉ™ et" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Geri qaytar" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "YenilÉ™yin" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Yapışdır vÉ™ StillÉ™ri TutuÅŸdur" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Sil" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Yazma vÉ™ Qrammatika" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Yazma vÉ™ Qrammatikanı GöstÉ™r" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "SÉ™nÉ™di YenidÉ™n Yoxla" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "TÉ™rcümÉ™ vaxtı orfoqrafiyanı yoxla" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Qrammatikanı vÉ™ Yazma Qaydasını Yoxla" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Yazı Avtomatik Korreksiya Edilsin" #: src/menus.cpp:219 msgid "Substitutions" msgstr "DÉ™yiÅŸikliklÉ™r" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "DÉ™yiÅŸikliklÉ™r GöstÉ™rilsin" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Ağıllı KöçürmÉ™/Yapışdırma" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Ağıllı Sitatlar" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Ağıllı TirelÉ™r" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Ağıllı BaÄŸlantılar" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "MÉ™tn DÉ™yiÅŸikliyi" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformasiyalar" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Böyük HÉ™rfÉ™ Çevirin" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Kiçik HÉ™rfÉ™ Çevirin" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Böyüdün" #: src/menus.cpp:237 msgid "Speech" msgstr "Danışın" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "DanışmaÄŸa BaÅŸlayın" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Danışmağı Dayandırın" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Bax" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "AlÉ™t çubuÄŸunu göstÉ™r" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "AlÉ™t çubuÄŸunu özÉ™lləşdir…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Tam Ekran Daxil edin" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "PÉ™ncÉ™rÉ™" #: src/menus.cpp:263 msgid "Minimize" msgstr "MinimallaÅŸdır" #: src/menus.cpp:264 msgid "Zoom" msgstr "YaxınlaÅŸdır" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Poedit-É™ XoÅŸ GÉ™lmisiniz" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Tamamını ÖnÉ™ GÉ™tir" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "TÉ™rcüməçi haqqında mÉ™lumat" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Ad:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Adınız" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-poçt:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Adınız vÉ™ e-poçt ünvanınız sadÉ™cÉ™ GNU gettext fayllarında Son TÉ™rcüməçi " "baÅŸlığını tÉ™rtiblÉ™mÉ™k üçün istifadÉ™ edilir." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "RedaktÉ™" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Qeyd etmÉ™ sırasında MO faylının kompliyasiyası" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Yazma qaydasını yoxla" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "HÉ™r zaman giriÅŸ sahÉ™sindÉ™ mÉ™tn fokusunu dÉ™yiÅŸdir" #: src/prefsdlg.cpp:211 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 "" "Bu parametr aktivləşdirildiyindÉ™, iÅŸarÉ™lÉ™yici É™sla sÉ™tir siyahısına " "fokuslana bilmÉ™z. BelÉ™cÉ™ fokusu dÉ™yiÅŸdirmÉ™k üçün (Tab) tuÅŸuna basmadan " "tÉ™rcümÉ™ni hÉ™mÉ™n yaza bilÉ™rsiniz. GÉ™zinmÉ™k üçün Ctrl-AÅŸağı/Yuxarı oxlarından " "istifadÉ™ etmÉ™lisiniz." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Görünüş" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "ÖzÉ™l ÅŸrift siyahısından istifadÉ™ et:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "ÖzÉ™l ÅŸrift sahÉ™sindÉ™n istifadÉ™ et:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "İnrfeys dilini dÉ™yiÅŸ" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 vÉ™ ya daha yenisi gÉ™rÉ™kdir)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Æsas" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "TÉ™rcümÉ™ yaddaşından istifadÉ™ et" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Qeyd edilmiÅŸ tÉ™rcümÉ™lÉ™r:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "VerilÉ™nlÉ™r bazasının diskdÉ™ki ölçüsü:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Sıfırla" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "İdxal edilÉ™cÉ™k tÉ™rcümÉ™ fayllarını seçin" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "FÉ™rqli ixrac et…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "TÉ™rcümÉ™ yaddaşını sıfırla" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "TÉ™rcümÉ™ yaddaşını sıfırlamaq istÉ™diyinizÉ™ É™minsiniz?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "TÉ™rcümÉ™ yaddaşını sildikdÉ™ bütün saxlanılan tÉ™rcümÉ™lÉ™ri silÉ™cÉ™k. Bunu geri " "ala bilmÉ™yÉ™cÉ™ksiz." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TY" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "TÉ™rcümÉ™ Yaddaşı" #: src/prefsdlg.cpp:730 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 "" "MÉ™nbÉ™ kodu ekstraktorları mÉ™nbÉ™ kodu fayllarında tÉ™rcümÉ™ edilÉ™cÉ™k sÉ™trlÉ™ri " "tapmaq vÉ™ onları çıxararaq tÉ™rcümÉ™ etmÉ™yÉ™ hazır vÉ™ziyyÉ™tÉ™ gÉ™tirirlÉ™r." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Ekstraktoru sil" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "“%s†ekstraktorunu silmÉ™k istÉ™diyinizdÉ™n É™minsinizmi?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Ekstraktorlar" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Hesablar" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "YenilÉ™nmÉ™lÉ™r üçün avtomatik yoxla" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Beta versiyaları da alınsın" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta versiyalar É™n son xüsusiyyÉ™tlÉ™rÉ™ malikdirlÉ™r, ancaq stabil iÅŸlÉ™mÉ™ " "xüsusunda bir az qeyri-stabildirlÉ™r." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "YenilÉ™nmÉ™lÉ™r" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Bu parametrlÉ™r, PO fayllarının daxili formatlarına tÉ™sir edÉ™ bilÉ™r. MÉ™sÉ™lÉ™n, " "versiya testi sÉ™bÉ™bilÉ™ xüsusi tÉ™lÉ™blÉ™riniz varsa onları korrektÉ™ edin." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "SÉ™tir sonları:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (mÉ™slÉ™hÉ™t görülür)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "SürüşdürmÉ™ yönü:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Var olan faylların formatını qoru" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Qabaqcıl" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "" #: src/pretranslate.cpp:218 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 "" "TY bu faylın mÉ™zmununa oxÅŸayan heç bir sÉ™trÉ™ sahib deyil. Bu yarım-avtomatik " "tÉ™rcümÉ™lÉ™r üçün keçərlidir. Poedit bunları É™llÉ™ tÉ™rcümÉ™ edilmiÅŸ fayllardan " "öyrÉ™nÉ™cÉ™k." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "SadÉ™cÉ™ tam uyÄŸunluqları doldur" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Yollar" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "İstisna edilmiÅŸ yollar" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Bütün ÅŸÉ™rhlÉ™r" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "ÆlavÉ™ açar kÉ™lmÉ™lÉ™r" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Bunun üçün hazırlanan tÉ™rcümÉ™nin adı:" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "mÉ™s. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (mÉ™slÉ™hÉ™t görülür)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "LütfÉ™n É™vvÉ™lcÉ™ faylı qeyd edin. Qeyd etdikdÉ™n sonra bu bölmÉ™ redaktÉ™ edilÉ™ " "bilÉ™r." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "" #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Şərh:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Sİl" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "LayihÉ™ni redaktÉ™ et" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "LayihÉ™nin adı:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "GÉ™tir" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Siyahıya kataloq É™lavÉ™ et" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Fayl" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Yeni…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "&POT/PO faylından yenisi…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "&POT/PO Faylından Yenisi…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Aç…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Son İstifadÉ™ EdilÉ™nlÉ™ri Açın" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Kataloq &meneceri" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Kataloq &Meneceri" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&BaÄŸla" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Qeyd et" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "MO faylına kompliyasiya et…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "YenilÉ™nmÉ™lÉ™r üçün yoxla…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&XüsusiyyÉ™tlÉ™r" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "Ç&ıx" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Çıx" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "TÉ™k olandan köçür" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "TÉ™k Olandan Köçür" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "&Şərhi redaktÉ™ et" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "&Şərhi RedaktÉ™ Et" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "MÉ™slÉ™hÉ™tlÉ™r" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Tap…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "DÉ™yiÅŸdir…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Sonrakını tapın" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "ÖncÉ™kini tapın" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Tap vÉ™ DÉ™yiÅŸdir…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Sonrakını Tapın" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "ÖncÉ™kini Tapın" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "&Fayldakı sıraya görÉ™ sırala" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "&Fayldakı Sıraya GörÉ™ Sırala" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "&MÉ™nbÉ™yÉ™ görÉ™ sırala" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "&MÉ™nbÉ™ MÉ™tninÉ™ GörÉ™ Sırala" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "&TÉ™rcümÉ™yÉ™ görÉ™ sırala" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "&TÉ™rcümÉ™yÉ™ GörÉ™ Sırala" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&KontekstÉ™ görÉ™ qrup" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&KontekstÉ™ GörÉ™ Qrup" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "ÆvvÉ™lcÉ™ xÉ™talı olan yazılar" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "ÆvvÉ™lcÉ™ XÉ™talı Olan Yazılar" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&TÉ™rcümÉ™ edilmÉ™miÅŸ yazılar É™n üstdÉ™ görünsün" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&TÉ™rcümÉ™ EdilmÉ™miÅŸ Yazılar Æn ÜstdÉ™ Görünsün" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Yan menyunu göstÉ™r" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Status çubuÄŸunu göstÉ™r" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Crowdin ilÉ™ SinxronlaÅŸdırın" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&TÉ™rcümÉ™lÉ™ri tÉ™sdiqlÉ™" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&TÉ™rcümÉ™lÉ™ri TÉ™sdiqlÉ™" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&SilinmiÅŸ tÉ™rcümÉ™lÉ™ri yox edin" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&SilinmiÅŸ TÉ™rcümÉ™lÉ™ri Yox Edin " #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Get" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Tamamla vÉ™ sonrakı" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Tamamla vÉ™ Sonrakı" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&ÖncÉ™ki tÉ™rcümÉ™" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&ÖncÉ™ki TÉ™rcümÉ™" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Sonrakı tÉ™rcümÉ™" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Sonrakı TÉ™rcümÉ™" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Ö&ncÉ™ki tamamlanmamış" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Ö&ncÉ™ki Tamamlanmamış" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "S&onrakı tamamlanmamış" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "S&onrakı Tamamlanmamış" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "ÆvvÉ™lki cÉ™m növü" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "ÆvvÉ™lki CÉ™m Növü" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "NövbÉ™ti cÉ™m növü" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "NövbÉ™ti CÉ™m Növü" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Onlayn yardım" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Onlayn Yardım" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext kitabı" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext Kitabı" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Poedit Haqqında" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Haqqında" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Ekstraktoru qur" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "VergüllÉ™ ayrılmış uzantı siyahısı (mÉ™s. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "ÇaÄŸrış:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "TÉ™rcümÉ™lÉ™ri çıxarmaq üçün É™mr:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Bu, ekstraktoru iÅŸlÉ™tmÉ™k üçün istifadÉ™ edilÉ™n É™mrdir.\n" "%o çıxış faylı adına, %K açar kÉ™lmÉ™lÉ™rin siyahısına,\n" "%F giriÅŸ fayllarının siyahısına, \n" "%C nsimvoluna dönüşür (aÅŸağıya baxın)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Açar kÉ™lmÉ™lÉ™ri siyahısındakı bir maddÉ™:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Bu, hÉ™r açar kÉ™lmÉ™ üçün bir dÉ™fÉ™ É™mr sÉ™trinÉ™\n" "É™lavÉ™ edilÉ™cÉ™kdir. %k açar kÉ™lmÉ™ni yazar." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "GiriÅŸ faylları siyahısındakı bir maddÉ™:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Bu, hÉ™r yazı faylı üçün bir dÉ™fÉ™ É™mr sÉ™trinÉ™\n" "É™lavÉ™ edilÉ™cÉ™kdir. %f fayl adını yazar." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "MÉ™nbÉ™ kodu kodlaÅŸması:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "MÉ™nbÉ™ xarakter É™mri verilmiÅŸdirsÉ™,\n" "bu É™mr sÉ™trinÉ™ É™lavÉ™ edilÉ™cÉ™kdir.\n" "%c xarakter dÉ™yÉ™rini yazar." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "LayihÉ™nin adı vÉ™ versiyası:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Dil komandası:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Bu dil üçün mövcud qaydalardan istifadÉ™ edilsin" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "ÖzÉ™l ifadÉ™dÉ™n istifadÉ™ edilsin" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "CÉ™m formatları öyrÉ™nin" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "KodlaÅŸdırma:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "TÉ™rcümÉ™ xüsusiyyÉ™tlÉ™ri" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "MÉ™nbÉ™ yolları" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "MÉ™nbÉ™ fayllarındakı mÉ™tnlÉ™ri bu direktoriyaya çıxart:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Æsas yol:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "MÉ™nbÉ™ açar kÉ™lmÉ™lÉ™ri" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "MÉ™nbÉ™ fayllarındakı tÉ™rcümÉ™ edilÉ™ bilinÉ™n sÉ™tirlÉ™r tanındığında, mövcud " "olanların yanında bu açar kÉ™lmÉ™lÉ™r (funksiya adları) istifadÉ™ edilsin." #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Gettext açar kÉ™lmÉ™lÉ™rindÉ™n öyrÉ™nilsin" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "TÉ™sdiqlÉ™" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "TÉ™rcümÉ™dÉ™ki xÉ™taları yoxla" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Yan menyu" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Yan paneli göstÉ™r/gizlÉ™t" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "" #: src/sidebar.cpp:196 msgid "Comment" msgstr "" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Şərh É™lavÉ™ et" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Şərh ÆlavÉ™ Et" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "TÉ™rcümÉ™ Yaddaşından Sil" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "TÉ™rcümÉ™ yaddaşından sil" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "UyÄŸunluq tapılmadı" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "UyÄŸunluq Tapılmadı" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Bu sÉ™tr Poedit-in TY tapıldı." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Proqram iÅŸÉ™ salına bilmir: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "" #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(İlkin dili istifadÉ™ et)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Dil seçimi" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "TÉ™rcih etdiyiniz dili seçin" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Bu dÉ™yiÅŸikliyin tÉ™sirli olması üçün Poedit-i yenidÉ™n baÅŸlatmalısınız." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "MüvÉ™qqÉ™ti direktoriya yaradıla bilmir." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Orada heç bir tÉ™rcümÉ™ yoxdur. Bu qeyri-adi bir ÅŸeydir." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "POT-dan YenilÉ™" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "" "TÉ™rcümÉ™ edilÉ™ bilinÉ™n sÉ™tirlÉ™ri birbaÅŸa POT ÅŸablonundan ala bilÉ™rsiniz." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "TÉ™rcümÉ™ edilÉ™ bilinÉ™n sÉ™tirlÉ™ri birbaÅŸa mÉ™nbÉ™ kodundan ala bilÉ™rsiniz:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "MÉ™nbÉ™lÉ™rdÉ™n alınsın" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "XüsusiyyÉ™tlÉ™r bölmÉ™sindÉ™n mÉ™nbÉ™ koddan almağı konfiqurasiya edin." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versiya %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "SinxronlaÅŸdır" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "TÉ™rcümÉ™ni Crowdin ilÉ™ sinxronlaÅŸdır" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "%s Haqqında" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s Nizamlamalar" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "%s Haqqında" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "XidmÉ™tlÉ™r" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "%s GizlÉ™t" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "DigÉ™rlÉ™rini GizlÉ™t" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Hamısını GöstÉ™r" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "%s Çıx" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Ayarlar…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "XüsusiyyÉ™tlÉ™r..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "XüsusiyyÉ™tlÉ™r..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&TÉ™tbiq et" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "TÉ™tbiq et" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Geri" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Geri" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "İ&mtina" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&TÉ™mizlÉ™" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "TÉ™mizlÉ™" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Köçür" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "KÉ™&s" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "KÉ™s" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "RedaktÉ™ et" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "Çı&x" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Yardım" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Yeni" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Yeni" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Xeyr" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Xeyr" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Aç…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Aç..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Aç..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Yapışdır" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Yapışdır" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Ayarlar" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&YenilÉ™" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "TÉ™zÉ™lÉ™" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&FÉ™rqli qeyd et" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "FÉ™rqli qeyd et" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Tamamını &Seç" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Tamamını Seç" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Geri Al" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&BÉ™li" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "BÉ™li" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Yuxarı" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "AÅŸağı" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Sol" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "SaÄŸ" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/be.mo0000644000175100001660000021010215011674363011040 Þ•†L_|(ø5 ù5 6&676<K6ˆ6J›6gæ6 N7X7 g7q7 x7†77“7›7¢7©7¯7·7Æ7Õ7Û7á7ê7þ788(8:8@8E8M8U8g8y8}8 8 Ž8›8¤8­8 ´8Á8Ñ8ç8ý8 9(9D9J9P9Y9_9h99 –9 ¤9 ²9¿9Å9á9ý9:/:F:]:c:h::: ­: ¹:Ã:Ì:Ô:Ý: á: í:ú: ;; %;1; K;X; g;s;ƒ;—;²;»;Û;ø;< .< ;<1G<'y<¡<¾< Ø<ã<7é<6!=X=)x=¢= §=]²=><#>D`>$¥>Ê> Ñ>Þ> å>"ó>? 1?N_N gN tN€N—NœN;²N(îNO4OGO VO `OnO‹O ¤O¯OÃO:ÜO P<%P bP.oPžP®P*¾PéPQ QQ5Q*>QiQoQ€Q ‘Q œQ»§QcRgR€R ™R¥R¶RÇRÊR#ÛR\ÿR\S'mS/•SÅS$ÚS%ÿS%T;T>T’BTÕT ðT üTU4U NUXUgU vU‚UŠU’UšU UµUÊUßUùUŠVV¦V=¬VêVnýVElW²W¹W;ÒW XX#X@=Xõ~X¿tY,4Z,aZŽZ  Z®Z2½Z*ðZ[Ž.[ ½[É[Ø[ç[%ü["\7\L\a\ {\‰\’\›\®\´\Ï\8Ô\ ]]] '] 3] ?]M]T] \] i]v] ‰](”]½]Ã]zÜ]W^h^o^ t^ €^ Œ^ ˜^¤^ ¬^ ·^ Ä^ Î^ Û^ ç^ò^ __"6_Y_u_ ”_ ¡_®_ ·_ Ã_Ð_ê_ú_ ` ` *`8`I`X` q`~`Ž` ž`¬`´`¼`Å` Í`Û`ô`a a)a2a Ca Pa \aia}aa¢a¶aÆaÛa†ðawb’b ¨b´bÃbÖb çbõb ccKcgc|c ‹c™c®cÁc×c1óc%d 4d BdŽNdÝd]ebe(tee ¥e³e+Ðeüe ÿe8 f"BfefÂvf9gCTg8˜gîÑgŸÀh8`i1™iRËicjQ‚jÔj'ïj:klRkP¿k-lC>lA‚lKÄl0m.AmŽpm!ÿm)!n-Kn+yn8¥nCÞnu"o,˜oLÅo;p]Np…¬pJ2q[}q«Ùq7…rm½r_+s[‹sçsísýs t&t;tNtft2}t"°tÓtëtuuˆ-u¶uºuÎu Óuôuv v,v4v ;v"Fv$ivŽv§vÀvÑvávòv ww!w1wGw$dw‰w©wÃwÙwïw# xV0x‡xžx§x ºxÅxãxõxy!y(y 0yŠ>[Š0šŠ0ËŠ$üŠ$!‹ F‹T‹9\‹$–‹J»‹ŒŒ 0Œ:ŒTŒ rŒ!Œ¡Œ¼Œ׌ñŒ!'0Xsލ0Å)ö Ž3@Ž0tŽ3¥Ž&ÙŽ–.TÅ=7X ªZµ`‘Tq‘SÆ‘ ’%’±<’8î’j'“y’“I ” V”a”}””G¬”Eô”!:•$\•$•#¦•,Ê•÷•# –9/–;i–*¥–LЖ*—#H—l—}—!——¹—!Ó—õ—˜˜1˜1O˜8˜º˜Ϙ7å˜(™F™8c™kœ™šë!š ›= ›.^›=›.Ë›<ú›M7œb…œ0èœ*3A^9 Úñ6ž6:ž;qž­ž/¾žîž5ÿž%5Ÿ5[Ÿ‘Ÿ%¯ŸÕŸpóŸd Jv êÁ u¬¡"¢;¢ S¢pt¢ å¢?£^F£<¥£<⣠¤+¤$:¤$_¤)„¤)®¤!ؤ!ú¤¥3¥"E¥7h¥¹ ¥LZ¦L§¦õô¦*ê§,¨AB¨„¨“¨š¨º¨ Ó¨ô¨©]'©2…©+¸©Aä©b&ª#‰ª­ªAĪa«Eh«P®«ÿ«*¬"3¬GV¬§ž¬F­U­!u­%—­$½­/â­$®7®!W®y®•®%±®%×®%ý® #¯51¯ g¯s¯ „¯’¯*¡¯$̯Bñ¯@4°u°3x°ý¬±ª²#¿²ã²/ú²*³/A³0q³¢³;©³Oå³-5´.c´’´§´ ô"Ñ´ô´!µJ'µ6rµ©µƵ*Úµ ¶¶H/¶Ix¶¶'à¶,·Z5· ·r±·'$¸aL¸;®¸7ê¸H"¹3k¹6Ÿ¹Ö¹&칺3$ºXº(`º(‰º!²º!ÔºÌöºü!̼!î¼½7&½7^½–½.›½bʽ…-¾.³¾?â¾`"¿7ƒ¿L»¿BÀ.KÀ zÀ …ÀlÀNýÁ*LÂ?wÂ0·Â3èÂÃ$4Ã$YÃ~Þðà Âà ÏÃ*ÙÃ*Ä /Ä%PÄîvÄeÅ1vÅ ¨Åj³Å%Æ—DÆÜÆ mÇ5zÇŸ°Ç%PÈvÈ,}È`ªÈ  ÉEËa^Ì6ÀÌ#÷ÌÍ;ͽYÍKÎ;cΟΠ¹ÏÆÏÖÏ&æÏI Ð9WÐ9‘Ð,ËÐ*øÐ#Ñ >ÑLÑ%[ÑÑ6’Ñ ÉÑqÖÑHÒdÒuÒ#†Ò#ªÒÎÒåÒöÒÓ Ó9ÓQÓJeÓ°Ó0¿ÓãðÓÔÔïÔÕÕ-Õ"GÕ"jÕÕ£Õ¼ÕØÕòÕÖÖ53ÖiÖ*‰ÖN´Ö.×,2×_×w× ×œ×,¬×VÙ×&0Ø!WØyØ6™Ø)ÐØ(úØ#Ù@BÙ,ƒÙ&°Ù!×Ù)ùÙ#Ú?Ú NÚ[ÚjÚ@ÚÀÚ@ÚÚ Û(ÛBBÛ/…Û/µÛ/åÛ&Ü.<Ü0kÜ&œÜ.ÃÜ0òÜ/#ÝüSÝ,PÞ-}Þ«Þ:ÅÞ ß9!ß+[ß9‡ß+Áßíß|þß9{àµà!Õà&÷àá)>á-háP–áçá ÿá âùâÃãÝã'øã8 äYä)täBžäTáä(6å_å_nåAÎåæw*æ$¢ç|Çç‚DèÙÇè ¡ê5«ëJáë†,ì­³ì¼aí4î6Sî?ŠîšÊî…eï=ëït)ðožðgñfvñCÝññ!ò<ô8PôF‰ôRÐôV#õ[zõóÖõHÊöŠ÷Pž÷Ãï÷E³øùù‡ú5%ûZ[üζü¡…ý©'þ ÑþÜþ*÷þ"ÿ3ÿ!OÿGqÿ)¹ÿVãÿ::?u)µ#ßáýD,q*‰!´Öö7FW&ž&Åì !/>nŒ*¡)ÌHöH?0ˆ(¹BâW%^}^ÜÓ;>Na(-¸-æ" 7 @ H f #v 𠇡 U) ¿ ]?  `­ ð ÿ   ! I7 . J° Xû )T~„ “ ž« ²½ÁÆ ÌÖè%4DL‘5­ãBÿ²ƒj\XïwŒûžnÇ/4½C3‹ëd EÒ]´>±…ÒpËVtפU~vwHÖk–;R ÀÉ ‡æ¡M*‘yueà;¬„ÜL{ã›P¸œ…Z<Q"€`b˜e7Õv[¥ãD®”H.ý}Ù¾1õ®ëYÕ}•G8ÛqÄ .1QÆÞg`׊Æ@¦¿á?Y^`sêT~úO5põž—9ÿ†?ªÐ'ý0%![È+|URm%! ¥,»3òÃy¤ˆO¢PKB]Ú?§|¹#-KT£C°¶i«½¯X8_ºÔ,Î7ª„Áßššø¶“ä Pi§b^ /É’ül^ƒþñUà)ù­™ñ ä+hD9lc¹·ÌtÓ|‰ÿ å£èeÊ–SÖÏ«ê#!º‹…Ï„2éÂIçaJ1qA d"3ïR]M“—ô™ÚHW ìç_*íx¬Bì³=¢@2No6ŒmKöÞ{î’Ishfþk€‚6_Q‰¨trrÀ$Ë-ÑoÐaNáLBÓ\ ¸WŠ;ö$µc‚âûèòØ(x')Ýgf %IAür¨EnOƒ7z}qÙô\¼©Ì #Ô>¯·uwp<ŸÎFjzDަV=©•(zGú˜ î¿­ð+†o*g²sMAâXù V)Tkó0'aCv‡´Jœi¡íhÄ55&ÑÅL‚³l"&»:é÷Ü(c&Y8Å{JdujEZ9W/2 Øf›Û.bS:†”yõm=-Í>±€Çæ[xÍÊÂF:ß4ø÷óZ0,N$6°È‘åÁŽð<GFˆ~4¾nSÝ ¼Ÿ@ (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesCancelCancelling…Cannot create temporary directory.Cannot execute program: %sCapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishMO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Please open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Belarusian Language: be_BY MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || n%10>=5 && n%10<=9 || n%100>=11 && n%100<=14 ? 2 : 3); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: be X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (зменены) (не захавана)%d уваходжанне кода%d уваходжанні кода%d уваходжаннÑÑž кода%d уваходжанні кода%d запіÑ%d запіÑÑ‹%d запіÑаў%d запіÑаў%d радок быў запоўнены чарнавым перакладам.%d радкі былі Ð·Ð°Ð¿Ð¾ÑžÐ½ÐµÐ½Ñ‹Ñ Ñ‡Ð°Ñ€Ð½Ð°Ð²Ñ‹Ð¼ перакладам.%d радкоў было запоўнена чарнавым перакладам.%d радкоў было запоўнена чарнавым перакладам.%d памылка%d памылкі%d памылак%d памылакУ перакладзе знойдзена %d праблема.У перакладзе знойдзены %d праблемы.У перакладзе знойдзена %d праблем.У перакладзе знойдзена %d праблем.%i радок файла "%s" быў загружаны некарÑктна.%i радкі файла "%s" былі Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°Ð½Ñ‹Ñ Ð½ÐµÐºÐ°Ñ€Ñктна.%i радкоў файла "%s" былі Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°Ð½Ñ‹Ñ Ð½ÐµÐºÐ°Ñ€Ñктна.%i радкоў файла "%s" былі Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°Ð½Ñ‹Ñ Ð½ÐµÐºÐ°Ñ€Ñктна.Фармат %sÐалады %sФармат %s&Пра праграму&Пра Poedit&Ужыць&Ðазад&Ðдмена&ÐчыÑціць&Закрыць&СкапіÑваць&Выдаліць&Скончыць Ñ– перайÑці да наÑтупнага&Скончыць Ñ– перайÑці да наÑтупнага&ЗмÑніць&Файл&ЗнайÑці…&Ð”Ð°ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ‹Ñ GNU gettext&Ð”Ð°ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ‹Ñ GNU gettext&ПерайÑці&Групаваць па кантÑкÑце&Групаваць па кантÑкÑце&Даведка&Стварыць&Ðовы…&ÐаÑтупны >&ÐаÑтупны пераклад&ÐаÑтупны пераклад&Ðе&Ok&Ð¡ÐµÑ†Ñ–ÑžÐ½Ð°Ñ Ð´Ð°Ð²ÐµÐ´ÐºÐ°&Ð¡ÐµÑ†Ñ–ÑžÐ½Ð°Ñ Ð´Ð°Ð²ÐµÐ´ÐºÐ°&Ðдкрыць...&Ðдкрыць…&УÑтавіць&Ðалады&Ðалады…&ПапÑÑ€Ñдні пераклад&ПапÑÑ€Ñдні пераклад&УлаÑціваÑці…&Знішчыць Ð²Ñ‹Ð»ÑƒÑ‡Ð°Ð½Ñ‹Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‹&Знішчыць Ð²Ñ‹Ð»ÑƒÑ‡Ð°Ð½Ñ‹Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‹&ВыйÑці&Ðднавіць&ЗамÑніць&Захаваць&Захаваць Ñк&Паказаць уваходжанні кода&Паказаць уваходжанні кода&Пачатковае акно&Пачатковае акно&Пераклад&Ð’ÑрнуцьСпачатку &не Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ Ð·Ð°Ð¿Ñ–ÑыСпачатку &не Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ Ð·Ð°Ð¿Ñ–ÑÑ‹&Ðбнавіць з зыходнага кода&Ðбнавіць з зыходнага кода&Праверыць пераклад&Праверыць пераклад&ВыглÑд&Так(КарыÑтацца мовай па змаўчанні)(уваход не выкананы)(патрабуецца Windows 8 ці больш Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÑ–Ñ)< &ПапÑÑ€Ñдні<без назвы>Пра %sУліковы запіÑÐ£Ð»Ñ–ÐºÐ¾Ð²Ñ‹Ñ Ð·Ð°Ð¿Ñ–ÑыДадацьДадаць каментарыйДадаць файлы…Дадаць папкі…Дадаць ПраектДадаць шаблон…Дадаць каментарыйДадаць каталог у ÑпіÑДадаць файлы…Дадаць папкі…Дадаць праектДадаць ÑˆÐ°Ð±Ð»Ð¾Ð½â€¦Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ ÐºÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ ÑÐ»Ð¾Ð²Ñ‹Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ ÑцÑгі xgettext:ÐŸÐ°ÑˆÑ‹Ñ€Ð°Ð½Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ выманнÑâ€¦Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ выманнÑÐ”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ выманнÑ…УÑе файлы перакладаўУÑе каментарыіУÑе радкіТакÑама выкарыÑтоўваць ÐºÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы па змаўчанні Ð´Ð»Ñ Ð¼Ð¾Ñž, ÑÐºÑ–Ñ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð°Ð—Ð°ÑžÑёды рабіць поле Ð´Ð»Ñ ÑžÐ²Ð¾Ð´Ñƒ Ñ‚ÑкÑту актыўнымЭлемент у ÑпіÑе ўваходных файлаў:Элемент у ÑпіÑе ключавых Ñлоў:Знешні выглÑдУжыцьВы ўпÑўненыÑ, што жадаеце выдаліць ÑкÑтрактар "%s"?Ð’Ñ‹ ўпÑўненыÑ, што жадаеце Ñкінуць памÑць перакладаў?Ðўтаматычна правÑраць наÑўнаÑць новых верÑійÐўтаматычна кампілÑваць файл MO пры захаванніÐазадБазавы шлÑÑ…:БÑта-верÑÑ–Ñ– ўключаюць уÑе ÑÐ°Ð¼Ñ‹Ñ Ð½Ð¾Ð²Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ñ– ўдаÑканаленні, але могуць быць менш Ñтабільнымі.ЗмÑÑціць уÑÑ‘ на пÑÑ€Ñднім планеСапÑаваны файл PO: форма множнага ліку msgstr ужыта без msgid_pluralСапÑаваны файл PO: форма адзіночнага ліку msgstr ÑƒÐ¶Ñ‹Ñ‚Ð°Ñ Ñ€Ð°Ð·Ð°Ð¼ з msgid_pluralÐŸÐ°ÑˆÐºÐ¾Ð´Ð¶Ð°Ð½Ð°Ñ Ñ€Ð°Ð·Ð¼ÐµÑ‚ÐºÐ° Ñž радку перакладу.ÐглÑдПраглÑд файлаўСкаÑавацьСкаÑоўваецца…Ðе атрымалаÑÑ Ñтварыць чаÑовы каталог.Ðе атрымліваецца выканаць праграму: %sÐ’Ñлікімі літарамі&Менеджар каталогаў&Менеджар каталогаўМенеджар каталогаўЗмÑніць мову інтÑрфейÑуКадаванне:Праверыць дакументПравÑраць граматыку Ñ– правапіÑПравÑраць Ð¿Ñ€Ð°Ð²Ð°Ð¿Ñ–Ñ Ð¿Ð°Ð´Ñ‡Ð°Ñ ÑƒÐ²Ð¾Ð´ÑƒÐŸÑ€Ð°Ð²ÐµÑ€ÐºÐ° абнаўленнÑў…Праверыць наÑўнаÑць памылак у перакладзеПраверка абнаўленнÑў…ПравÑраць правапіÑÐчыÑціцьÐчыÑціць менюÐчыÑціць перакладÐчыÑціць менюÐчыÑціць перакладЗакрыцьВоблакаКод уваходжаннÑКод уваходжаннÑЗбіранне зыходных файлаў…Каманда Ð´Ð»Ñ Ð²Ñ‹Ð¼Ð°Ð½Ð½Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñƒ:КаментарыйКаментарый:Каментарыі, ÑÐºÑ–Ñ Ð¿Ð°Ñ‡Ñ‹Ð½Ð°ÑŽÑ†Ñ†Ð° з:КампілÑваць у файл MO…КампілÑваць у…СкампілÑÐ²Ð°Ð½Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹ перакладуÐаладзьце выманне зыходнага кода Ñž раздзеле "УлаÑціваÑці".ПацвÑрджÑннеПадлучыце Poedit да падтрымліваемых воблачных платформ лакалізацыі Ð´Ð»Ñ Ð±ÐµÑперашкоднай Ñінхранізацыі перакладаў, выкананых на Ñ–Ñ….КапіÑвацьКапіÑваць форму адзіночнага лікуСкапіÑваць зыходны Ñ‚ÑкÑтКапіÑваць форму адзіночнага лікуСкапіÑваць зыходны Ñ‚ÑкÑтВыпраўлÑць Ð¿Ñ€Ð°Ð²Ð°Ð¿Ñ–Ñ Ð°ÑžÑ‚Ð°Ð¼Ð°Ñ‚Ñ‹Ñ‡Ð½Ð°Ðемагчыма Ñпампаваць дÑталі праекту Localazy.Файл не можа быць загружаны. Верагодна, ён пашкоджаны.Ðемагчыма захаваць файл %s.Стварыць новыСтварыць новы перакладСтварыць новы пераклад з шаблона POT.Стварыць новы праект перакладуПамылка CrowdinВыра&зацьКарыÑÑ‚Ð°Ð»ÑŒÐ½Ñ–Ñ†ÐºÑ–Ñ ÑкÑтрактары:КарыÑÑ‚Ð°Ð»ÑŒÐ½Ñ–Ñ†ÐºÑ–Ñ ÑкÑтрактары:Ðаладзіць панÑль інÑтрументаў…ВыразацьПамер базы даных на дыÑку:ВыдаліцьВыдаліць з памÑці перакладаўВыдаліць ÑкÑтрактарВыдаліць з памÑці перакладаўВыдаліць праектВыдаліць каментарыйВыдаліць праектВыдаленне праекта не прывÑдзе да Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°Ñž перакладу.Каталогі:Ð’Ñ‹ Ñапраўды хочаце выдаліць праект “%sâ€?Ð’Ñ‹ Ñапраўды хочаце перазагрузіць файл з дыÑка? УÑе вашы не Ð·Ð°Ñ…Ð°Ð²Ð°Ð½Ñ‹Ñ Ð·Ð¼Ñненні Ñž праграме будуць ÑтрачаныÑ, калі вы гÑта зробіце.Жадаеце выдаліць уÑе пераклады, ÑÐºÑ–Ñ Ð±Ð¾Ð»ÑŒÑˆ не выкарыÑтоўваюцца?Ðе зах&оўвацьÐе захоўвацьÐе паказваць зноўÐе пазначаць Ð´Ð°ÐºÐ»Ð°Ð´Ð½Ñ‹Ñ Ñупадзенні Ñк "патрабуюць дапрацоўкі"Ðе паказваць зноўСпампоўванне апошніх перакладаў…Спампоўванне перакладаў адключана Ñž гÑтым праекце.ПерацÑгніце папкі або файлы ÑюдыПерацÑгніце папкі або файлы ÑюдыВ&ыхадЗмÑніцьЗмÑніць &каментарыйЗмÑніць &каментарыйРÑдагаваць каментарыйРÑдагаваць каментарыйРÑдагаваць праектРÑдагаваць праектРÑдагаваннеЗмÑÐ½Ñ–Ñ†ÑŒâ€¦Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾ÑˆÑ‚Ð°:ПерайÑці Ñž поўнаÑкранны Ñ€ÑжымЭлементы Ñž гÑтым файле маюць формы множнага ліку, ÑÐºÑ–Ñ Ð°Ð´Ñ€Ð¾Ð·Ð½Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° ад азначаных у загалоўку Plural-FormsПершымі адлюÑтроўваць запіÑÑ‹ з памылкаміПершымі адлюÑтроўваць запіÑÑ‹ з памылкаміЗапіÑÑ‹ з памылкамі былі вылучаны Ñž ÑпіÑе чырвоным колерам. Калі выбраць такі запіÑ, будуць Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ð¿Ð°Ð´Ñ€Ð°Ð±ÑÐ·Ð½Ñ‹Ñ Ð·Ð²ÐµÑткі пра памылку.Памылка Ð°Ð´ÐºÑ€Ñ‹Ñ†Ñ†Ñ Ñ„Ð°Ð¹Ð»Ð°ÐŸÐ°Ð¼Ñ‹Ð»ÐºÐ° Ð·Ð°Ñ…Ð°Ð²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°ÐŸÐ°Ð¼Ñ‹Ð»ÐºÐ° Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÑ– файла XLIFF: %sПамылкіУÑÑ‘Ð’Ñ‹ÐºÐ»ÑŽÑ‡Ð°Ð½Ñ‹Ñ ÑˆÐ»ÑхіЭкÑпарт у TMX…ЭкÑпартаваць Ñк…ЭкÑпарт у HTML…ЭкÑпарт у TMX…Ðе атрымалаÑÑ ÑкÑпартаваць файлы перакладу Ñž “%sâ€.ЭкÑпартаванне перакладаў…ВынÑць з зыходнага кодаВынÑць нататкі Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‡Ñ‹ÐºÐ°Ñž з:Вымаць Ñ‚ÑкÑÑ‚ з зыходных файлаў у наÑтупных каталогах:Ðалады ÑкÑтрактараЭкÑтрактарыПамылка падключÑÐ½Ð½Ñ Ð´Ð° працÑÑу Poedit.Ðе атрымалаÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ–Ñ†ÑŒ файл з вынÑтымі перакладамі.Ðе атрымалаÑÑ Ð°Ð±'Ñднаць каталогі gettext.Ðе атрымалаÑÑ Ð°Ð±Ð½Ð°Ð²Ñ–Ñ†ÑŒ памÑць перакладаў: %sФайлÐемагчыма адкрыць файлФайл “%s†не Ñ–Ñнуе.Файл "%s" не з'ÑўлÑецца файлам перакладу.Файл "%s" даÑтупны толькі Ð´Ð»Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ Ñ– не можа быць захаваны. Захавайце Ñго пад іншай назвай.ЗнайÑціЗнайÑці наÑтупныЗнайÑці папÑÑ€ÑдніЗнайÑці Ñ– замÑніць…Шукаць у перакладахШукаць у зыходных Ñ‚ÑкÑтахШукаць у перакладахЗнайÑці наÑтупныЗнайÑці папÑÑ€ÑдніВыправіць мовуВыправіць мовуВыправіць загаловакВыправіць загаловакФайлы перакладу FlutterФорма %iФорма %i (не выкарыÑтоўваецца)GNU gettextÐгульныÑФайл HTMLДаведкаСхаваць бакавую панÑльСхаваць радок ÑтануÐе паказваць больш гÑта апавÑшчÑннеЯк працуе Ð²Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð°Ñ ÑінхранізацыÑ?IDКалі працÑгнуць аперацыю, уÑе пераклады, Ð¿Ð°Ð·Ð½Ð°Ñ‡Ð°Ð½Ñ‹Ñ Ñк выдаленыÑ, будуць цалкам знішчаныÑ. Калі Ñны будуць Ð´Ð°Ð´Ð°Ð½Ñ‹Ñ Ð½Ð°Ð·Ð°Ð´ у будучым, Ñ–Ñ… прыйдзецца перакладаць паўторна.Калі вы дагÑтуль адмовілі Ñž доÑтупе да вашых файлаў, вы можаце даць дазвол у Параметры > ПрыватнаÑць Ñ– бÑÑпека > ПрыватнаÑць > Файлы Ñ– папкі.ІгнаравацьІгнараваць Ñ€ÑгіÑтрІмпарт з TMX…Імпарт файлаў перакладу…Імпарт з TMX…Імпарт файлаў перакладу…Імпартаванне перакладаў…У: %sУ тым ліку правÑраць бÑта-верÑÑ–Ñ–ÐепаÑлÑдоўнаÑць ніжнÑга/верхнÑга Ñ€ÑгіÑтраÐÑўзгодненаÑць прабелаўЗвеÑткі пра перакладчыкаУÑталÑвацьПамылковы файлВыклік:Файлы перакладу JSONПакінуцьÐазва мовы або кодМова перакладу Ñупадае з зыходнай мовай.Ðе прызначана мова перакладу.Мова перакладу:Выбар мовыКаманда перакладчыкаў:Мова:ÐпошнÑе змÑненнеДаведацца больш пра ÐºÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы gettextДаведацца больш пра формы множнага лікуДаведацца большДаведацца больш пра %sДаведацца больш пра CrowdinРадок %d файла "%s" пашкоджаны (некарÑÐºÑ‚Ð½Ñ‹Ñ Ð´Ð°Ð½Ñ‹Ñ %s).СканчÑнне радкоў:Ð¡Ð¿Ñ–Ñ Ð¿Ñ‹ÑˆÑ‹Ñ€ÑннÑÑž, падзеленых кропкай з коÑкай (напрыклад *.cpp;*.h):Загрузіць англійÑкуюФайлы з пашырÑннем MO нельга змÑніць непаÑÑ€Ñдна Ñž Poedit.Канвертаваць у Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÑ–Ñ Ð»Ñ–Ñ‚Ð°Ñ€Ñ‹ÐšÐ°Ð½Ð²ÐµÑ€Ñ‚Ð°Ð²Ð°Ñ†ÑŒ у вÑÐ»Ñ–ÐºÑ–Ñ Ð»Ñ–Ñ‚Ð°Ñ€Ñ‹Ð—Ñ€Ð°Ð±Ñ–Ñ†ÑŒ новы пераклад з гÑтага файла POT.ÐÑправільны загаловак: “%sâ€ÐšÑ–раванне ўліковымі запіÑаміКіраванне…Зліццё адрозненнÑў…ЗгарнуцьÐазва праекта перакладу длÑІмÑ:Ðа&Ñтупны незавершаныÐа&Ñтупны незавершаныПатрабуе праверкіПатрабуе праверкіÐіколі не рабіць актыўным ÑÐ¿Ñ–Ñ Ð· радкамі. Калі ўключана, Ð´Ð»Ñ Ð¿ÐµÑ€Ð°Ð¼ÑшчÑÐ½Ð½Ñ Ð· дапамогай клавіÑтуры неабходна выкарыÑтоўваць Ctrl+ÑтрÑлкі. ГÑты параметр такÑама дазвалÑе ўводзіць Ñ‚ÑкÑÑ‚ імгненна, без папÑÑ€ÑднÑга націÑку клавішы TAB Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÐºÐ»ÑŽÑ‡ÑÐ½Ð½Ñ Ñ„Ð¾ÐºÑƒÑа.ÐовыÐовы з файла &POT/PO…Ðовы з файла &POT/PO…ÐÐ¾Ð²Ñ‹Ñ Ñ€Ð°Ð´ÐºÑ–ÐаÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° множнага лікуÐаÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° множнага лікуÐеСупадзеннÑÑž не знойдзенаÐÑма запіÑаў Ð´Ð»Ñ Ñкіх можна зрабіць чарнавы пераклад.ЗвеÑткі Ñž файле адÑутнічацюь пра ўваходжанне гÑтага радка Ñž зыходны код.СупадзеннÑÑž не знойдзенаПраблем у перакладзе не знойдзена.У вашым уліковым запіÑе нÑма праектаў Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñƒ.ÐÑма звеÑтак пра выкарыÑтаннеÐе ÑžÑе формы множнага ліку перакладзеныÑ.Ðе аўтарызаваны, увайдзіце ÑÑˆÑ‡Ñ Ñ€Ð°Ð·.Заўвагі Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‡Ñ‹ÐºÐ°Ð”Ð¾Ð±Ñ€Ð°ÐдзінУключыце толькі Ñž тым выпадку, калі вы давÑраеце ÑкаÑці вашай памÑці перакладаў. Па змаўчанні, уÑе Ñупадзенні з памÑці перакладаў пазначаюцца Ñк "патрабуюць дапрацоўкі" Ñ– Ñ–Ñ… неабходна пераправÑраць.ЗапаўнÑць толькі пры дакладным ÑупадзенніÐдкрыць нÑÐ´Ð°ÑžÐ½Ñ–Ñ Ñ„Ð°Ð¹Ð»Ñ‹Ðдкрыць Ñ– змÑніць файлы перакладу.Ðдкрыць воблачны перакладÐдкрыць воблачны пераклад…Ðдкрыць файлÐдкрыць у Ñ€ÑдактарыÐдкрыць у Ñ€ÑдактарыÐдкрыць нÑдаўніÑÐдкрыць...Ðдкрыць…ÐаладыIншаеПа&пÑÑ€Ñдні незавершаныПа&пÑÑ€Ñдні незавершаныФайлы перакладу POШаблоны перакладу POTФайлы з пашырÑннем POT з'ÑўлÑюцца толькі шаблонамі Ñ– не змÑшчаюць у Ñабе перакладаў. Каб зрабіць пераклад Ñтварыце файл PO з шаблона.УÑтавіцьСтыль капіÑÐ²Ð°Ð½Ð½Ñ Ñ– ÑžÑтаўкіШлÑхіВыконвае абнаўленне з зыходнага кода уÑÑ–Ñ… файлаў праекта.У дазволе адмоўлена.Ðдкрыйце Ñ– змÑніце адпаведны файл PO. ПаÑÐ»Ñ Ñго захаваннÑ, файл MO такÑама абновіцца.Першапачаткова захавайце файл. Да гÑтага дадзены раздзел не можа быць зменены.МножныПераклады форм множнага лікуВыраз формы множнага ліку, Ñкое выкарыÑтоўваецца Ñž файла, з'ÑўлÑецца незвычайным Ð´Ð»Ñ %s.Формы множнага ліку:PoeditPoedit - кіраўнік каталогаўPoedit аўтаматычна выправіў памылковы змеÑÑ‚ у файле "%s".Poedit можа паÑпрабаваць запоўніць Ð½Ð¾Ð²Ñ‹Ñ Ñ€Ð°Ð´ÐºÑ– толькі папÑÑ€Ñднімі перакладамі з гÑтага файла ці з вашай памÑці перакладаў. ВыкарыÑтанне памÑці перакладаў не будзе вельмі Ñфектыўным, калі Ñна амаль пуÑтаÑ, але Ñна будзе Ñтанавіцца лепш па меры таго, Ñк вы будзеце дадаваць Ð½Ð¾Ð²Ñ‹Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‹.Poedit не можа паказаць зыходны код у Ñкім выкарыÑтоўваецца радок з той прычыны, што файла Ñž азначаным меÑцы або ён з'ÑўлÑецца Ñімвалічнай ÑпаÑылкай, ÑÐºÐ°Ñ ÑžÐºÐ°Ð·Ð²Ð°Ðµ на Ñапраўдны файл.Poedit - гÑта проÑты Ñž выкарыÑтанні Ñ€Ñдактар перакладаў.Poedit не можа адкрыць файл “%sâ€.Чарнавы &пераклад…Чарнавы перакладЧарнавы варыÑнтЧарнавы пераклад %u радкаЧарнавы пераклад %u радкоўЧарнавы пераклад %u радкоўЧарнавы пераклад %u радкоўПапÑÑ€Ñдні пераклад з памÑці перакладаў…Выкананне чарнавога перакладу…Чарнавы пераклад аўтаматычна знаходзіць Ð´Ð°ÐºÐ»Ð°Ð´Ð½Ñ‹Ñ Ñ†Ñ– Ð½ÐµÐ´Ð°ÐºÐ»Ð°Ð´Ð½Ñ‹Ñ Ñупадзенні Ð´Ð»Ñ Ð½Ðµ перакладзеных радкоў у памÑці перакладаў Ñ– запаўнÑе Ñ–Ñ… перакладамі.ÐаладыÐалады...Ðалады…Падрыхтоўка радкоў…Захоўваць фарматаванне Ñ–Ñнуючых файлаўПапÑÑ€ÑднÑÑ Ñ„Ð¾Ñ€Ð¼Ð° множнага лікуПапÑÑ€ÑднÑÑ Ñ„Ð¾Ñ€Ð¼Ð° множнага лікуПапÑÑ€Ñдні зыходны Ñ‚ÑкÑÑ‚Ðазва Ñ– верÑÑ–Ñ Ð¿Ñ€Ð°ÐµÐºÑ‚Ð°:Ðазва праекта:Праект:ПраектыПраверка пунктуацыіЗнішчыцьЗнішчыць Ð²Ñ‹Ð»ÑƒÑ‡Ð°Ð½Ñ‹Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‹Ð’Ñ‹Ð¹ÑціЗагрузка змеÑціва файла не атрымалаÑÑ Ð· наÑтупнай памылкай: %sÐÑÐ´Ð°ÑžÐ½Ñ–Ñ Ñ„Ð°Ð¹Ð»Ñ‹ÐднавіцьÐбнавіцьПеразагрузіць файлПеразагрузіць файлЗаÑталоÑÑ: %dВыдаліцьЗамÑніцьЗамÑніць &уÑеЗамÑніць &уÑеРадок заменыЗамÑніць…Ðеабходны загаловак "Plural-Forms" адÑутнічае.СкінуцьСкінуць памÑць перакладаўÐчыÑтка памÑці перакладаў незваротна выдаліць уÑе пераклады, ÑÐºÑ–Ñ Ð·Ð°Ñ…Ð¾ÑžÐ²Ð°ÑŽÑ†Ñ†Ð° Ñž ёй. Ð’Ñ‹ не зможаце ÑкаÑаваць гÑтую аперацыю.Паказаць у FinderПраверыцьЗахавацьЗахаваць &Ñк…Захаваць &Ñк…УÑÑ‘ роўна захавацьУÑÑ‘ роўна захавацьЗахаваць ÑкЗахаваць Ñк…Захаваць зменыЗахаваць файлСкрыншоты:Выбраць у&ÑёВыбраць уÑёВыберыце файлы TMX Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð°Ñ€Ñ‚ÑƒÐ’Ñ‹Ð±ÐµÑ€Ñ‹Ñ†Ðµ каталогВыбраць файл перакладуВыберыце файлы перакладу Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð°Ñ€Ñ‚Ð°Ð²Ð°Ð½Ð½ÑВыбраць шаблон перакладуВыберыце пажаданую мовуВыбраць мовуВыбраць мовуÐаладыÐалады…Паказаць бакавую панÑльПаказваць Ð°Ñ€Ñ„Ð°Ð³Ñ€Ð°Ñ„Ñ–Ñ‡Ð½Ñ‹Ñ Ñ– Ð³Ñ€Ð°Ð¼Ð°Ñ‚Ñ‹Ñ‡Ð½Ñ‹Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÑ–ÐŸÐ°ÐºÐ°Ð·Ð°Ñ†ÑŒ радок ÑтануПаказваць &ID радкаПаказваць заменыПаказаць панÑль інÑтрументаўПаказаць папÑÑ€ÑджанніПаказаць у праваднікуПаказаць у папцыПаказаць ці Ñхаваць бакавую панÑльПаказаць бакавую панÑльПаказаць радок ÑтануПаказваць &ID радкаПаказаць папÑÑ€ÑÐ´Ð¶Ð°Ð½Ð½Ñ–Ð‘Ð°ÐºÐ°Ð²Ð°Ñ Ð¿Ð°Ð½ÑльУвайÑціВыйÑціУвайÑціУвайÑці Ñž %sУвайдзіце Ñž Воблачны Уліковы запіÑУвайÑці Ñž CrowdinУвайдзіце Ñž воблачны ўліковы запіÑВыйÑціÐдзіночны лікІнтÑлектуальнае капіÑванне/уÑтаўкаІнтÑлектуальны працÑжнікІнтÑÐ»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ ÑпаÑылкіІнтÑÐ»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ð´Ð²ÑƒÐºÐ¾ÑÑіСартаваць Ñк у &файлеСартаваць Ñк у &арыгіналеСартаваць Ñк у &перакладзеСартаваць Ñк у &файлеСартаваць Ñк у &арыгіналеСартаваць Ñк у &перакладзеКадаванне зыходнага кода:ЭкÑтрактары выкарыÑтоўвацца Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ радкоў, ÑÐºÑ–Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ð°ÑŽÑ†Ñ†Ð° Ñž файлах зыходнага кода Ñ– вымаюць Ñ–Ñ… так, каб Ñ–Ñ… можна было пераклаÑці.Зыходны код не даÑтупны.Зыходны код не знойдзеныЗыходны Ñ‚ÑкÑтІдÑнтыфікатар зыходнага Ñ‚ÑкÑтуЗыходны Ñ‚ÑкÑÑ‚ — %sÐšÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы зыходных файлаўШлÑÑ… да зыходнага Ñ„Ð°Ð¹Ð»Ð°ÐšÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы зыходных файлаўШлÑÑ… да зыходнага файлаМаўленнеПраверка правапіÑу адключана, таму што, Ñлоўнік Ð´Ð»Ñ %s не ÑžÑталÑваны.Праверка правапіÑу Ñ– граматыкаПачаць агучваннеСпыніць Ð°Ð³ÑƒÑ‡Ð²Ð°Ð½Ð½ÐµÐ—Ð°Ñ…Ð°Ð²Ð°Ð½Ñ‹Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‹:КантÑкÑÑ‚ радка: %sІдÑнтыфікатар радка: %sÐ”Ð°ÑžÐ¶Ñ‹Ð½Ñ Ñ€Ð°Ð´ÐºÐ° Ñž ÑÑ–Ð¼Ð²Ð°Ð»Ð°Ñ…Ð”Ð°ÑžÐ¶Ñ‹Ð½Ñ Ñ€Ð°Ð´ÐºÐ° Ñž Ñімвалах: пераклад | крыніцаРадок пошукуЗаменыПрапановыПрапановы не даÑтупныÑ, калі мова перакладу не азначанаÑ. Ð†Ð½ÑˆÑ‹Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð°Ñці, Ñ‚Ð°ÐºÑ–Ñ Ñк формы множнага ліку, такÑама могуць быць парушаныÑ.Падтрымліваюцца ÑžÑе Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ð½Ñ‹Ñ Ð¼Ð¾Ð²Ñ‹, ÑÐºÑ–Ñ Ñ€Ð°Ñпазнаюцца Ñродкамі GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript Ñ– іншыÑ).СінхранізацыÑСінхранізаваць з CrowdinСінхранізаваць пераклад з CrowdinСінхранізацыÑПамылка ÑінхранізацыіСінхранізаваць з Crowdin не атрымалаÑÑ.СінтакÑÑ–Ñ‡Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ñž загалоўку "Plural-Forms" ("%s").ПамÑць перакладаў (ПП)Файлы TMXВыманне радкоў Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñƒ з Ñ–Ñнуючага шаблона POT.Ðазва каманды Ñ– Ð°Ð´Ñ€Ð°Ñ Ñл. пошты ці URLЗамена Ñ‚ÑкÑтуПамÑць перакладаў не змÑшчае радкоў, падобных на змеÑціва гÑтага файла. Яна падыходзіць толькі Ð´Ð»Ñ Ð¿Ð°ÑžÐ°ÑžÑ‚Ð°Ð¼Ð°Ñ‚Ñ‹Ñ‡Ð½Ð°Ð³Ð° перакладу паÑÐ»Ñ Ñ‚Ð°Ð³Ð¾, Ñк Poedit збÑÑ€Ñ Ð´Ð°Ñтаткова даных з файлаў, ÑÐºÑ–Ñ Ð²Ñ‹ пераклалі ўручную.ÐÑправільны файл TMX.Змены Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ñ‹Ñ Ñ–Ð½ÑˆÐ°Ð¹ праграма будуць ÑтрачаныÑ, калі вы захаваеце.Ðе атрымалаÑÑ ÑкампілÑваць файл у фармат MO Ð´Ð»Ñ Ð´Ð°Ð»ÐµÐ¹ÑˆÐ°Ð³Ð° выкарыÑтаннÑ.ГÑты файл змÑшчаў у Ñабе дублÑÐ²Ð°Ð½Ñ‹Ñ Ñлементы, ÑÐºÑ–Ñ Ð½Ðµ дазвалÑюцца Ñž файлах PO Ñ– могуць Ñтвараць перашкоды Ñž Ñ–Ñ… выкарыÑтанні. Poedit выправіў гÑту праблему, але вы павінны перагледзець пераклады з пазнакамі "патрабуюць дапрацоўкі" Ñ– выправіць Ñ–Ñ… пры неабходнаÑці.Файл не можа быць захаваны Ñž кадаванні "%s" Ñк азначана Ñž наладах перакладу. ЗамеÑÑ‚ гÑтага ён будзе захаваны Ñž кадаванні UTF-8 з адпаведнымі зменамі.Файл зменены. Захаваць змены?Файл мае фармат, Ñкі не раÑпазнаецца Poedit.Файл быў ÑкампілÑваны Ñž фармат MO, але магчыма будзе працаваць некарÑктна.Файл быў паÑпÑхова захаваны Ñ– ÑкампілÑваны Ñž фармат MO, але магчыма будзе працаваць некарÑктна.Файл быў паÑпÑхова захаваны, але Ñго не атрымалаÑÑ ÑкампілÑваць у фармат MO Ð´Ð»Ñ Ð´Ð°Ð»ÐµÐ¹ÑˆÐ°Ð³Ð° выкарыÑтаннÑ.Файл быў паÑпÑхова захаваны.Файл «%s» не можа быць адкрыты.Файл “%s†зменены іншай праграмай.Стары зыходны Ñ‚ÑкÑÑ‚ (да таго, Ñк быў адноўлены), Ñкому адпавÑдае недакладны пераклад.Самы проÑты шлÑÑ… запоўніць гÑты файл перакладамі - гÑта абнавіць Ñго з POT:Пераклад не пачынаецца з прабела.Пераклад Ñкачаецца Ñімвалам новага радка, а пачатковы Ñ‚ÑкÑÑ‚ не.Пераклад пачынаецца Ñканчаецца прабелам, а зыходны Ñ‚ÑкÑÑ‚ не.Пераклад Ñканчаецца "%s", а пачатковы Ñ‚ÑкÑÑ‚ Ñканчаецца "%s".У перакладзе адÑутнічае Ñімвал зыходнага радка Ñž канцы.У канцы перакладу прапушчаны прабел.Пераклад гатовы да выкарыÑтаннÑ, але %d Ð·Ð°Ð¿Ñ–Ñ ÑÑˆÑ‡Ñ Ð½Ðµ перакладзены.Пераклад гатовы да выкарыÑтаннÑ, але %d запіÑÑ‹ ÑÑˆÑ‡Ñ Ð½Ðµ перакладзена.Пераклад гатовы да выкарыÑтаннÑ, але %d запіÑаў ÑÑˆÑ‡Ñ Ð½Ðµ перакладзена.Пераклад гатовы да выкарыÑтаннÑ, але %d запіÑаў ÑÑˆÑ‡Ñ Ð½Ðµ перакладзена.Пераклад гатовы да выкарыÑтаннÑ.Пераклад павінен Ñканчацца "%s".Пераклад не павінен заканчвацца на "%s".Пераклад павінен пачынацца з вÑлікай літары.Пераклад павінен пачынацца з маленькай літары.Пераклад пачынаецца з прабела, а зыходны Ñ‚ÑкÑÑ‚ не.Пераклады былі Ð¿Ð°Ð·Ð½Ð°Ñ‡Ð°Ð½Ñ‹Ñ Ñк "патрабуюць дапрацоўкі" з той прычыны, што могуць змÑшчаць памылкі. Ð’Ñ‹ павінны праверыць ці ÑÐ»ÑƒÑˆÐ½Ñ‹Ñ Ñны.Вельмі дзіўна, але пераклад адÑутнічае.Узнікла праблема Ð¿Ð°Ð´Ñ‡Ð°Ñ Ñ„Ð°Ñ€Ð¼Ð°Ñ‚Ð°Ð²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° (але ён быў паÑпÑхова захаваны).Памылка Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÑ– перакладаў на Localazy.Пры загрузцы файла ўзнікла памылка. У выніку чаго, Ð½ÐµÐºÐ°Ñ‚Ð¾Ñ€Ñ‹Ñ Ð´Ð°Ð½Ñ‹Ñ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ быць Ð¿Ð°ÑˆÐºÐ¾Ð´Ð¶Ð°Ð½Ñ‹Ñ Ñ†Ñ– адÑутнічаць.ГÑÑ‚Ñ‹Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹ ўплываюць на ўнутранае фарматаванне файлаў PO. СкарÑктуйце Ñ–Ñ…, калі Ñž Ð²Ð°Ñ Ñ‘Ñць адмыÑÐ»Ð¾Ð²Ñ‹Ñ Ð¿Ð°Ñ‚Ñ€Ð°Ð±Ð°Ð²Ð°Ð½Ð½Ñ–, напрыклад, калі вы карыÑтаецеÑÑ ÑÑ–ÑÑ‚Ñмай кантролю верÑій.ГÑты JSON-файл не з'ÑўлÑецца файлам перакладу Ñ– не можа быць адрÑдагаваны Ñž Poedit.Файл змÑшчае Ñлементы з формамі множнага ліку, але ён не мае наладаў загалоўку Plural-Forms.Ð”Ð°Ð´Ð·ÐµÐ½Ð°Ñ ÐºÐ°Ð¼Ð°Ð½Ð´Ð° выкарыÑтоўваецца, каб запуÑціць ÑкÑтрактар. %o абазначае назву выходнага файла, %K - ÑÐ¿Ñ–Ñ ÐºÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ… Ñлоў, %F - ÑÐ¿Ñ–Ñ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð½Ñ‹Ñ… файлаў, %C - кадаванне (гл. ніжÑй).ГÑты радок быў знойдзены Ñž памÑці перакладаў Poedit.ГÑта будзе дададзена Ñž камандны радок, толькі калі было азначана кадаванне зыходнага файла. %c азначае кадаванне.ГÑта будзе дадзена Ñž камандны радок Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð°Ð³Ð° ўваходнага файла. %f азначае назву файла.ГÑта будзе дададзена Ñž камандны радок Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð°Ð³Ð° ключавога Ñлова. %k азначае ключавое Ñлова.УÑÑгоПераўтварÑнніПеракладзена: %d з %d (%d %%)ПеракладМова перакладуПамÑць перакладаўПераклады, ÑÐºÑ–Ñ Ð¿Ð°Ñ‚Ñ€Ð°Ð±ÑƒÑŽÑ†ÑŒ &дапрацоўкіУлаÑціваÑці перакладуБаза даных памÑці перакладаў пашкоджанаÑ: %s (%d).Памылка памÑці перакладаў: %s (%d).Пераклад, Ñкі патрабуе &дапрацоўкіУлаÑціваÑці перакладуВарыÑнты перакладуПераклад — %sПераклады не могуць быць абноўлены з зыходнага кода, таму што код не быў знойдзены Ñž азначаным меÑцы ва ўлаÑціваÑцÑÑ… файла.ДваUTF-8 (пажадана)Ð’ÑрнуцьÐдбылоÑÑ Ð½ÐµÐ¿Ñ€Ð°Ð´Ð±Ð°Ñ‡Ð°Ð½Ð°Ðµ выключÑнне: %sUnix (пажадана)ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Crowdin.ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°Ðе перакладзеныхÐбнавіцьÐбнавіць уÑÑ‘Ðбнавіць уÑе каталогі праектаÐбнавіць уÑе катологі Ñž гÑтым праекце?Ðбнавіць з файла &POT…Ðбнавіць з файла &POT…Ðбнавіць з кодаÐбнавіць з POTÐбнавіць з кодаÐбнавіць з зыходнага кодаÐбнавіць зводкуÐбнаўленніÐе атрымалаÑÑ Ð°Ð±Ð½Ð°Ð²Ñ–Ñ†ÑŒÐбнаўленне перакладаўÐбнаўленне звеÑтак пра карыÑтальніка…ДаÑыланне перакладаў у %s не атрымалаÑÑ.ДаÑыланне перакладаў у %s…ДаÑыланне перакладу…ВыкарыÑтоўваць выраз карыÑтальнікаВыкарыÑтоўваць карыÑтальніцкі шрыфт Ð´Ð»Ñ ÑпіÑу:ВыкарыÑтоўваць карыÑтальніцкі Ñ‚ÑкÑÑ‚ у палÑÑ… уводу:ВыкарыÑтоўваць правілы па змаўчанні Ð´Ð»Ñ Ð³Ñтай мовыВыкарыÑтоўвайце гÑÑ‚Ñ‹Ñ ÐºÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы (імёны функцый) Ð´Ð»Ñ Ñ€Ð°ÑÐ¿Ð°Ð·Ð½Ð°Ð½Ð½Ñ Ñ€Ð°Ð´ÐºÐ¾Ñž, ÑÐºÑ–Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ð°ÑŽÑ†Ñ†Ð° Ñž зыходных файлах:ВыкарыÑтоўваць памÑць перакладаўПраверыцьВынікі праверкіВерÑÑ–Ñ %sЧаканне аўтарызацыі…СардÑчна запрашаем у PoeditПры абнаўленні з крыніцыТолькі цÑÐ»Ñ‹Ñ ÑловыÐкноWindowsШукаць бÑÑконцаПераноÑ:Файлы перакладу XLIFFТакВы такÑама можаце вынÑць радкі Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñƒ непаÑÑ€Ñдна з зыходнага кода:Ðельга перацÑгваць некалькі файлаў у акно Poedit.Ð’Ñ‹ не маеце дазволаў Ð´Ð»Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°Ñž зыходнага кода з размÑшчÑÐ½Ð½Ñ Ð¿Ð°Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°Ð³Ð° ва ўлаÑціваÑцÑÑ… файла.Ð’Ñ‹ павінны перазапуÑціць Poedit, каб змены набылі моц.Ваша імÑВашы змены будуць ÑтрачаныÑ, калі вы не захаваеце Ñ–Ñ….Ваша Ñ–Ð¼Ñ Ñ– Ð°Ð´Ñ€Ð°Ñ Ñлектроннай пошты будуць выкарыÑтоўвацца толькі пры пазначÑнні апошнÑга перакладчыка Ñž загалоўках GNU gettext файлаў.ÐульМаштабПатрабуе праверкіне выдалÑйце чаÑÐ¾Ð²Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹ (Ð´Ð»Ñ Ð°Ð´Ð»Ð°Ð´ÐºÑ–)напрыклад, plurals=2; plural=(n > 1);падбіраць падобны пераклад унутры файлаперайÑці да Ñлемента з вызначаным нумарам радкаапрацаваць Ð°Ð´Ñ€Ð°Ñ poedit://Ctrl+УнізEnterУлеваУправаShift+УверхaltctrlshiftПра %sСхаваць %sСхаваць іншыÑÐалады...ВыйÑці з %sСÑрвіÑыПаказаць уÑечарнавы пераклад з памÑці перакладаўневÑÐ´Ð¾Ð¼Ð°Ñ Ð¼Ð¾Ð²Ð°Ð½Ðµ падтрымліваецца верÑÑ–Ñ (%s)alyaksandr.koshal@gmail.com"%s" не з'ÑўлÑецца карÑктным файлам POT.poedit-3.6.3/locales/gl.po0000644000175100001660000026300015011674363011064 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Galician\n" "Language: gl_ES\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: gl\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Ocultar esta mensaxe de notificación" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Non mostrar novamente" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Non mostrar novamente" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Resumo da actualización" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Pechar" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Ficheiro" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Novas cadeas" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Recompilando ficheiros orixe…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Produciuse un fallo cargando o ficheiro coas traducións extraídas." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "En: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Código fonte non dispoñible." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Non se puideron actualizar as traducións a partir do código fonte porque non " "se atopou tal código na localización especificada nas propiedades do " "ficheiro." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Permiso denegado." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Non ten permisos para ler o código fonte na localización indicada nas " "Propiedades do ficheiro." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Se anteriormente denegou o acceso aos seus ficheiros, pode cambialo nas " "Preferencias do sistema > Privacidade e seguranza > Ficheiros e cartafoles." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Se anteriormente denegou o acceso aos seus ficheiros, pode cambialo nas " "Preferencias do sistema > Seguranza e privacidade > Privacidade > Ficheiros " "e cartafoles." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Non foi posíbel abrir o ficheiro «%s»." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Actualizando as traducións" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Fusionando as diferenzas…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Cabeceira mal formada: «%s»" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Ficheiros de tradución PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Modelos de tradución POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Ficheiros de tradución XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Ficheiros de tradución JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Ficheiros de tradución Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Todos os ficheiros de tradución" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "O ficheiro está nun formato non recoñecíbel para o Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Este ficheiro JSON non é un ficheiro de tradución e non é posíbel editalo no " "Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Produciuse un fallo lendo o contido do ficheiro co seguinte erro: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "O ficheiro «%s» é de só lectura e non é posible gardalo.\n" "Gárdeo cun nome diferente." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Non foi posible gardar o ficheiro %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Capturas de pantalla:" #: src/catalog_po.cpp:134 #, 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] "Non se cargou de maneira correcta %i liña do ficheiro «%s»." msgstr[1] "Non se cargaron de maneira correcta %i liñas do ficheiro «%s»." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "A liña %d do ficheiro «%s» está danada (datos %s non válidos)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "O ficheiro PO está corrompido: emprégase a foma singular de msgstr xunto con " "msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "O ficheiro PO está corrompido: emprégase a forma plural de msgstr sen " "existir msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Non foi posible cargar o ficheiro, probablemente estea corrompido." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Producíronse erros ao cargar o ficheiro. Pode que se perderan ou corromperan " "algúns dos datos." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Produciuse un problema ao formatar o ficheiro (pero gardouse correctamente)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Non foi posíbel gardar este ficheiro co xogo de caracteres «%s» tal como se " "especificou nos axustes da tradución.\n" "\n" "Gardouse en UTF-8 e en consecuencia modificouse o axuste." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Produciuse un erro ao gardar o ficheiro" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "«%s» non é un ficheiro POT correcto." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Erro ao cargar o ficheiro XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "versión incompatíbel (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "A cadea a traducir ten unha marcación incorrecta." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Como funciona a sincronización na nube?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Conta" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(non se accedeu)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Abrir tradución na nube" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Xestionar contas" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Proxecto:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Idioma:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Acceder á conta da nube" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Acceder á conta da nube" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Non hai ningún proxecto de tradución listado na túa conta." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Descargando as traducións máis recentes…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Iniciar sesión en %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sincronizando" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Subindo as traducións a %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Subir as traducións a %s fallou." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Erro ao sincronizar" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Engadir" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Erro de Crowdin descoñecido." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Acción non autorizada; accede de novo." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "A descarga de traducións está deshabilitada neste proxecto." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Acceder" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Acceder" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Saír" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Saír" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Máis información sobre Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Agardando a autenticación…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Actualizando a información do usuario…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Acceder a Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Erro ao sincronizar con Crowdin." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Erro de Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Cargando as traducións…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Copiar" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Aprender máis" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Axuda" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Os ficheiros MO non se poden editar directamente en Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Erro ao abrir o ficheiro" #: src/edapp.cpp:735 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 no seu lugar o ficheiro PO correspondente. Cando o " "garde, o ficheiro MO actualizarase tamén." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "non eliminar os ficheiros temporais (para depuración)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "manexar un URI de poedit" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "ir ao elemento dun número de liña determinado" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Erro de comunicación co proceso do Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Produciuse unha excepción non controlada: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Seleccionar o modelo da tradución" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Ficheiro non válido" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Seleccionar o ficheiro da tradución" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit é un editor de traducións fácil de usar." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Non pode arrastrar máis dun ficheiro a unha xanela de Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "O ficheiro «%s» non é un ficheiro de tradución." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "O ficheiro «%s» non existe." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Desactivouse a revisión ortográfica porque non está instalado o dicionario " "para o %s." #: src/edframe.cpp:871 msgid "Install" msgstr "Instalar" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "O ficheiro «%s» foi modificado por outra aplicación." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Recargar o ficheiro" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Desexa recargar o ficheiro desde o disco? Se o fai, perderanse os cambios " "non gardados no Poedit." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignorar" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Recargar o ficheiro" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "" "O ficheiro foi modificado.\n" "Desexa gardar os cambios?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Gardar os cambios" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Os cambios perderanse a menos que vostede os garde." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Gardar" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "No&n gardar" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Non gardar" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "De gardar perderanse os cambios feitos por as outras aplicacións." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Cancelar" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Gardar igualmente" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Gardar igualmente" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Gardar como…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Compilar a…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Ficheiros de tradución compilados" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Exportar coma HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Ficheiros HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Erro na actualización" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Actualizar desde un ficheiro &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Actualizar desde un ficheiro &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "atopouse %d problema coa tradución" msgstr[1] "atopáronse %d problemas coa tradución." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Resultados da validación" #: src/edframe.cpp:1842 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 con erros márcanse en vermello na lista. Os detalles do erro " "mostraranse cando seleccione unha destas entradas." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "O ficheiro gardouse satisfactoriamente." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "O ficheiro gardouse satisfactoriamente e compilouse no formato MO, mais é " "posible que non funcione correctamente." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "O ficheiro gardouse de forma segura, pero non foi posíbel compilalo ao " "formato MO para utilizalo." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "O ficheiro foi compilado ao formato MO, mais é posíbel que non funcione " "correctamente." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "O ficheiro non pode ser compilado ao formato MO para o seu uso." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Non se atoparon problemas coa tradución." #: src/edframe.cpp:1894 #, 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] "" "A tradución está pronta para o seu uso, mais aínda hai %d cadea sen traducir." msgstr[1] "" "A tradución está pronta para o seu uso, mais aínda hai %d cadeas sen " "traducir." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "A tradución está lista para utilizar." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "Poedit corrixiu automaticamente o contido non válido do ficheiro \"%s\"." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "O ficheiro contiña elementos duplicados, non permitidos nos ficheiros PO que " "impedirían o seu uso. Poedit solucionou o problema, mais debe revisar as " "traducións marcadas como dubidosas e corrixilas no caso de ser preciso." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "O idioma da tradución está sen definir." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Definir idioma" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "O idioma da tradución é o mesmo que o de orixe." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Solucionar idioma" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Solucionar idioma" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Este ficheiro ten entradas con formas plurais, pero non ten configurada a " "cabeceira de formas do plural." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "As entradas neste ficheiro teñen un número de formas plurais diferente ao " "que indica a cabeceira de formas do plural" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Falta a cabeceira requirida de formas do plural." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Erro de sintaxe na cabeceira Plural-Forms (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Corrixir a cabeceira" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Arranxar a cabeceira" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "A expresión de formas plurais usada no ficheiro non é habitual no %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Revisar" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Desexa usar o inglés para os textos orixe?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Este ficheiro usa os identificadores das cadeas do texto de orixe. Poedit " "pode cargar os textos en inglés desde o ficheiro «%s»." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Cargar inglés" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traducidas: %d de %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Pendente: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d erro" msgstr[1] "%d erros" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrada" msgstr[1] "%d entradas" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (sen gardar)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (modificado)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Erro ao actualizar a memoria de tradución: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Eliminar traducións iguais á fonte" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Desexa eliminar todas as traducións que idénticas ao texto fonte?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Manter" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Eliminar" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Purgar as traducións eliminadas" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Desexa eliminar todas as traducións que xa non se empregan?" #: src/edframe.cpp:2879 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 continua coa purga, todas as traducións marcadas para eliminar " "retiraranse permanentemente do ficheiro. Terá que traducilas outra vez se se " "volven engadir no futuro." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Purgar" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Copiar o texto orixe" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Copiar o texto orixe" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Borrar a tradución" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Borrar a tradución" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Editar o comentario" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Editar o comentario" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Aparicións no código" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Aparicións no código" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Agochar barra lateral" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Mostrar barra lateral" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Agochar a barra de estado" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Mostrar a barra de estado" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Lonxitude da cadea en caracteres: tradución | fonte" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Lonxitude da cadea en caracteres" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Texto orixe" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singular" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plural" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Tradución" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pre-traducido" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Dubidosa" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Dubidosa" #: src/editing_area.cpp:566 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, cree un novo ficheiro PO con base no modelo." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Crear unha nova tradución" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Facer unha nova tradución desde este ficheiro POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID do texto orixe" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Todo" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Forma %i (non usado)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Cero" #: src/editing_area.cpp:788 msgid "One" msgstr "Un" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dous" #: src/editing_area.cpp:804 msgid "Other" msgstr "Outro" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Contexto da cadea: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identificador de cadea: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Formato %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "formato %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Tradución — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Texto fonte — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "idioma descoñecido" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Erro de rede: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Erro descoñecido" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Produciuse un erro ao fusionar os catálogos gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Abrir no editor" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Abrir no editor" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "No ficheiro non se fornece información ningunha sobre as aparicións desta " "cadea no código fonte." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Non hai información do uso" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d aparición no código" msgstr[1] "%d aparicións no código" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Non foi posíbel atopar o código fonte" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "O Poedit non pode mostrar o codigo fonte onde se usa a cadea porque o " "ficheiro non está dispoñíbel na localización referenciada ou a referencia " "simbólica non apunta ao ficheiro real." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Non é posíbel abrir o ficheiro" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "O Poedit non foi quen de abrir o ficheiro «%s»." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Buscar" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Substituír" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opcións" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignorar maiúsculas e minúsculas" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Busca circular" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Só palabras completas" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Atopar nos textos fonte" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Buscar nas traducións" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Buscar nos comentarios" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Substituír &todo" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Substituír &todo" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Substituír" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Anterior" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Seguinte >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Texto que atopar" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Texto de substitución" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "advertencia: " #: src/gexecute.cpp:171 msgid "error: " msgstr "erro: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Idioma da tradución" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Idioma da tradución:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Todas as cadeas" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Proxectos" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Máis información sobre %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Engadir Proxecto" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Engadir proxecto" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Xestor de catálogos" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Editar…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Crear novo proxecto de tradución" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Eliminar o proxecto" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Editar o proxecto" #: src/manager.cpp:176 msgid "Update all" msgstr "Actualizar todo" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Actualizar todos os catálogos do proxecto" #: src/manager.cpp:378 msgid "Total" msgstr "Total " #: src/manager.cpp:379 msgid "Untrans" msgstr "Sen traducir" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Dubidosa" #: src/manager.cpp:381 msgid "Errors" msgstr "Erros" #: src/manager.cpp:382 msgid "Last modified" msgstr "Última modificación" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Seleccione un directorio" #: src/manager.cpp:433 msgid "Directories:" msgstr "Directorios:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Desexa eliminar o proxecto «%s»?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Eliminar proxecto" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Eliminar o proxecto non eliminará ningún ficheiro de tradución." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Confirmación" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Actualizar todos os catálogos deste proxecto?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Actualiza desde o código fonte todos os ficheiros do proxecto." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Buscar actualizacións…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Xestor de catálogos" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Preferencias…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Editar" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Desfacer" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Refacer" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Pegar e coincidir estilo" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Eliminar" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Ortografía e gramática" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Mostrar ortografía e gramática" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Comprobar documento agora" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Revisar ortografía mentres se escribe" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Revisar gramática e ortografía" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Corrixir ortografía automaticamente" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Substitucións" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Mostrar substitucións" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Copiar/pegar intelixente" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Comiñas intelixentes" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Trazos intelixentes" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Ligazóns intelixentes" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Substitución de texto" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformacións" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Converter a maiúsculas" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Converter a minúsculas" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Maiúsculas" #: src/menus.cpp:237 msgid "Speech" msgstr "Fala" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Comezar a falar" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Deixar de falar" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Ver" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Mostrar barra de ferramentas" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Personalizar barra de ferramentas…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Modo de pantalla completa" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Xanela" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimizar" #: src/menus.cpp:264 msgid "Zoom" msgstr "Zoom" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Benvido/a a Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Traer todo á fronte" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Información acerca do/a tradutor/a" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nome:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "O seu nome" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Correo electrónico:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "ti@exemplo.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Estes datos (nome e correo electrónico) empréganse unicamente para " "establecer o valor da cabeceira «Last-Translator» dos ficheiros de GNU " "gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Edición" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Compilar automaticamente o ficheiro MO ao gardar" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Revisar a ortografía" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Cambiar o foco sempre ao campo da entrada de texto" #: src/prefsdlg.cpp:211 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 "" "Nunca deixar que a lista de mensaxes teña o foco. Se está activado, debe " "usar Ctrl-frechas para navegar co teclado pero tamén poderá introducir texto " "inmediatamente, sen ter que premer Tabulación para cambiar o foco." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Aparencia" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Fonte personalizada nas listaxes:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Tipo de letra personalizado nos campos de texto:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Cambiar o idioma da interface" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(cómpre Windows 8 ou posterior)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Xeral" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Utilizar a memoria de tradución" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Manexar…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Cando actualice desde as fontes" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "coincidencia dubidosa no ficheiro" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pre-traducir da MT" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit pode tentar completar as novas entradas desde traducións previas no " "ficheiro ou desde a memoria de tradución completa. Usar a MT non será " "efectivo se está case baleira pero mellorará a medida que se lle engadan " "traducións." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Traducións almacenadas:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Tamaño da base de datos no disco:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importar os ficheiros da tradución…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importar os ficheiros da tradución…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importar de TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importar de TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Exportar como TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Exportar como TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Restablecer" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Seleccione os ficheiros de tradución para importar" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Seleccione os ficheiros TMX a importar" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Ficheiros TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Importando as traducións…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importando desde “%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "A tradución %s foi importada." msgstr[1] "As traducións %s foron importadas." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exportar como…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Exportando as traducións…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Produciuse un erro exportando a memoria de tradución «%s»." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Restablecer memoria de tradución" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Ten a certeza de querer restablecer a memoria de tradución?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Ao restablecer a memoria de tradución, borraranse todas as traducións " "almacenadas. Esta operación non se pode desfacer." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "MT" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Memoria de tradución" #: src/prefsdlg.cpp:730 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 "" "Os extractores de código fonte utilízanse para atopar as mensaxes " "traducibles nos ficheiros de código fonte, extraelas e así permitir a súa " "tradución." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Extractores personalizados:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Extractores personalizados:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Acepta todos as linguaxes de programación recoñecidas polas ferramentas de " "GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript e outras)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Eliminar extractor" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Ten a certeza de querer eliminar o extractor \"%s\"?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extractores" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Contas" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Mirar de actualizacións automaticamente" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Incluír versións beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "As versións beta conteñen as funcionalidades e melloras máis recentes, mais " "poden resultar menos estables." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Actualizacións" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Estes valores afectan ao formato interno dos ficheiros PO. Axústaos se tes " "requisitos específicos; por exemplo, debido ao control de versión." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Finais de liña:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (recomendado)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Axustar a:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Conservar o formato dos ficheiros existentes" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Avanzado" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Configuracións" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Preparando as cadeas…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Tradución previa desde a memoria de traducións…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Pre-traduciuse %u cadea" msgstr[1] "Pre-traducíronse %u cadeas" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Pre-traducindo…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d entrada foi pre-traducida." msgstr[1] "%d entradas foron pre-traducidas." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "As traducións marcáronse como dubidosas porque poden ser inexactas. Debería " "revisalas e no seu caso corrixilas." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Non foi posíbel pre-traducir entrada ningunha." #: src/pretranslate.cpp:218 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 non contén ningunha cadea similar ao contido deste ficheiro. Só será " "efectiva para traducións semiautomáticas logo de que Poedit aprenda o " "suficiente de ficheiros traducidos manualmente polo usuario." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pre-traducir" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Só aquelas correspondencias exactas" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Non marcar coincidencias exactas como dubidosas" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Active isto unicamente se confía na calidade da súa MT. Predeterminadamente, " "todas as coincidencias coa MT márcanse como dubidosas e deben revisarse " "antes do seu uso." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "A Pre-tradución automaticamente atopa coincidencias exactas ou dubidosas na " "memoria de tradución para as cadeas sen rematar e úsaas para completar a " "tradución." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Erro: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Cancelando…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Arrastrar aquí cartafoles ou ficheiros" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Arrastrar aquí cartafoles ou ficheiros" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Engadir cartafoles…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Engadir cartafoles…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Engadir cartafoles…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Engadir cartafoles…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Engadir comodín…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Engadir comodín…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Mostrar no Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Mostrar no Explorer" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Mostrar no cartafol" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Rutas" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Rutas excluídas" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Axustes avanzados de extracción" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Extraer notas para tradutores de:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Comentarios prefixados con:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Todos os comentarios" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Bandeiras xgettext adicionais:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Palabras clave adicionais" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "O nome do proxecto ao que pertence esta tradución" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Nome do equipo e enderezo de correo electrónico ou URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p. ex., nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomendado)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Por favor, garde o ficheiro primeiro. Esta sección non pode ser editar ata " "que o faga." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Precisión dos marcadores de posición" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "O marcador de posición «%s» falta na tradución." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" "Marcador de posición innecesario «%s» que non aparece no texto orixinal." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Traducións dos plurais" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Non se traduciron todas as formas do plural." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Uso inconsistente das maiúsculas/minúsculas" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "A tradución debería comezar con maiúscula." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "A tradución debería comezar con minúscula." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Espazo en branco inconsistente" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "A tradución non comeza por un espazo." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "A tradución comeza cun espazo pero o texto orixe non." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Falta o salto de liña ao remate da tradución." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "A tradución remata cun salto de liña pero o texto orixe non." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Falta un espazo ao remate da tradución." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "A tradución remata cun espazo pero o texto orixe non." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Comprobación da puntuación" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "A tradución debería rematar con «%s»." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "A tradución non debería rematar con «%s»." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "A tradución remata con «%s» pero o texto orixe remata con «%s»." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Nube" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Limpar menú" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Limpar menú" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Comentario:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Actualizar" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Eliminar" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Eliminar o comentario" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Editar o proxecto" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nome do proxecto:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Explorar" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Engadir directorio á lista" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Aceptar" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Ficheiro" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Novo…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nova a partir dun ficheiro &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nova a partir dun ficheiro &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "A&brir…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Abrir recentes" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Abrir recentes" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Abrir tradución na nube…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Abrir Tradución na Nube…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Xanela de inicio" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Xanela de inicio" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Xestor de proxectos" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Xestor de &catálogos" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Pechar" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Gardar" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Gard&ar como…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Gard&ar como…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Compilar a MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Buscar actualizacións…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Preferencias…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Preferencias" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Saír" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Saír" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Copiar do singular" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Copiar do singular" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Tradución du&bidosa" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Tradución du&bidosa" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Editar o &comentario" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Editar &comentario" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Suxestións" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Buscar…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Substituír…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Buscar seguinte" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Buscar anterior" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Buscar e substituír…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Buscar seguinte" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Buscar anterior" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Mostrar o &ID da cadea" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Mostrar o &ID da cadea" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Mostrar avisos" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Mostrar avisos" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Ordenar por &ficheiro" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Ordenar por &ficheiro" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Ordenar pola &orixe" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Ordenar pola &orixe" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Ordenar por &tradución" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Ordenar por &tradución" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "A&grupar por contexto" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "A&grupar por contexto" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Primeiro as entradas con erros" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Primeiro as entradas con erros" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Entradas &sen traducir primeiro" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Entradas &sen traducir primeiro" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Mostrar as aparicións no código" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Mostrar as aparicións no código" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Mostrar barra lateral" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Mostrar a barra de estado" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Tradución" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "Act&ualizar desde o código fonte" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "Act&ualizar desde o código fonte" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sincronizar con Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pre-&traducir…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validar as traducións" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validar as traducións" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Purgar as traducións eliminadas" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Purgar as traducións eliminadas" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Propiedades…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Ir a" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Feito e continuar coa seguinte" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Feito e seguinte" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Editada previamente" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Editada previamente" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Tradución &anterior" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Tradución &anterior" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Tradución &seguinte" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Tradución &seguinte" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "&Anterior sen rematar" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "&Anterior sen rematar" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Seguin&te sen rematar" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Seguin&te sen rematar" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Forma plural anterior" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Forma plural anterior" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Forma plural seguinte" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Forma plural seguinte" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Axuda &en Internet" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Axuda &en Internet" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Manual de &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Manual de &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Sobre Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Sobre" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Configuración do extractor" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista de extensións separadas con punto e coma (p.ex. *.cpp; *.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Invocación:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Comando para extraer as traducións:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Este comando emprégase para abrir o extractor.\n" "%o expande o nome do ficheiro de saída, %K mostra\n" "as palabras clave, %F fai unha listaxe dos ficheiros de entrada e\n" "%C define o conxunto de caracteres (véxase máis abaixo)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Un elemento da lista de palabras clave:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Isto engadirase á liña de ordes unha vez por\n" "cada palabra clave. %k substituirase pola\n" "palabra clave." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Un elemento da lista de ficheiros de entrada:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Isto engadirase á liña de ordes unha vez\n" "por cada ficheiro de entrada. %f substituirase\n" "polo nome de ficheiro." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Xogo de caracteres do código fonte:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Isto engadirase á liña de ordes só se\n" "se proporciona o xogo de caracteres do\n" "código fonte. %c substituirase polo valor\n" "do xogo de caracteres." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Propiedades da tradución" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nome e versión do proxecto:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Equipo de idioma:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Formas do plural:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Utilizar as regras predeterminadas para este idioma" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Utilizar expresión personalizada" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Aprenda sobre as formas do plural" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Xogo de caracteres:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Axustes avanzados de extracción…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Axustes avanzados de extracción…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Propiedades da tradución" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Rutas das orixes" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Rutas do código fonte" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "" "Extraer textos dos ficheiros de código fonte que están nos seguintes " "directorios:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Ruta base:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Palabras clave das orixes" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Palabras clave das orixes" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Use estas palabras clave (nomes de funcións) para recoñecer cadeas\n" "intraducibles nos ficheiros de código fonte:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Use tamén as palabras clave predeterminadas nos idiomas aceptados" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Saber máis sobre as palabras clave de gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Abrir ficheiro" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Gardar ficheiro" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validar" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Buscar erros na tradución" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Actualizar desde o código" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Actualizar desde o código" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Actualizar desde o código fonte" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Barra lateral" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Texto fonte anterior" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Texto fonte antigo (antes de cambiar durante unha actualización) ao que " "corresponde a agora inexacta tradución." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Notas para os tradutores" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Comentario" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Engadir comentario" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Engadir comentario" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Eliminar da memoria de tradución" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Eliminar da memoria de tradución" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Suxestións de tradución" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Non se atoparon coincidencias" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Non se atoparon coincidencias" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Esta cadea atopouse na memoria de tradución de Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Non foi posíbel executar o programa: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "O ficheiro TMX está mal construído." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "A base de datos da memoria de tradución está corrupta: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Erro na memoria de tradución: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Usar idioma predeterminado)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Selección de idioma" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Seleccione o seu idioma preferido" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Debe reiniciar Poedit para que este cambio teña efecto." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Non foi posíbel crear o directorio temporal." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Non hai traducións. Isto non é o habitual." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "As entradas traducibles non se engaden manualmente no sistema Gettext, senón " "que se extraen\n" "automaticamente do código orixinal. Así, mantéñense actualizadas e precisas. " "Quen traduce normalmente emprega patróns ou modelos de ficheiros PO (POT) " "proporcionados polo desenvolvedor." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Máis información sobre gettext de GNU" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "O xeito máis simple de encher este ficheiro con traducións é actualizalo " "desde un POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Actualizar desde POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Tomar as cadeas traducibles desde un patrón POT existente." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Tamén pode extraer as cadeas traducibles directamente do código fonte:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Extraer desde as fontes" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Configure a extracción de código fonte en Propiedades." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versión %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Crear novo" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Crear nova tradución desde o modelo POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Explorar ficheiros" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Abrir e editar os ficheiros de tradución." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Proxecto de tradución na nube" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Colabora con outras persoas en liña." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Ficheiros recentes" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sincronizar" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sincronizar a tradución con Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Sobre %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Preferencias do %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Sobre %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Servizos" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Agochar %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Agochar outros" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Mostrar todo" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Saír do %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Preferencias…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Preferencias..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferencias..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Aplicar" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Aplicar" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Volver" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Volver" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Cancelar" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Limpar" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Limpar" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Copiar" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Cor&tar" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Cortar" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Editar" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Saír" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Axuda" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Novo" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Novo" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Non" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Non" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Aceptar" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Abrir…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Abrir..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Abrir..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Pegar" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Pegar" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Preferencias" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Refacer" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Actualizar" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "Gardar &como" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Gardar como" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Seleccionar &todo" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Seleccionar todo" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Desfacer" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Si" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Si" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Maiús+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Intro" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Arriba" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Abaixo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Esquerda" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Dereita" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "maiús" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Advertencia: " poedit-3.6.3/locales/eu.mo0000644000175100001660000012147315011674363011077 Þ•”Å ! , !, -,8,<L,‰,Jœ,gç, O-Y- h-r- y-‡-Ž-”-œ-£-ª-°-¸-Ç-Ö-Ü-â-ë-ÿ-..).;.A.F.N.V.h.z.~. ‚. .œ.¥.®. µ.Â.Ò.è.þ. /)/E/K/Q/Z/`/i/o/‹/§/À/Ù/ð/0 00)0 G0 S0]0f0 o0 {0ˆ0—0 §0³0 Í0Ú0é0ù0 1(111Q1n1Ž1 ¤11±1'ã1 2(2 B2M27S26‹2Â2)â2 3 3]3z3$3²3¹3"À3ã3 þ3 44-4>4Q4Z4m4‰4¥4#º4Þ4ó4555,525 M5n5w55  5®5/É5 ù56 6646G6]6|6•6¬6 Ì6Ú6ß6ò677757<7[7l7‹7 ž7?«7 ë7 ù78*8D8"W85z8°8¶8 »8 É8 ×8 ä8 ñ8þ8999&989R9ul9â9õ9 ü9:: ':4:0E:v::#¥:<É:; ;*!;!L;'n;–;›;(º;Tã;8< =< G<U<i<z<< ¤< ®< ¼< É<Ö<å<ô<ü< == !=,= 1=>=N=m=©p=‡> ¢>®>Á>Ý>ð> ?&? ~ ^~i~ ƒ~Ž~¬~³~Ç~ Þ~ ì~Õú~Ð×ö €"€8€N€Q€%n€”€#±€$Õ€+ú€&+¿/,ï‚1‚A‚Q‚Z‚c‚ k‚u‚ˆ‚ž‚¶‚šÏ‚jƒrƒƒ–ƒ_§ƒD„L„T„c„ j„D‹„âЄ+³…ß… ð…ý…- †:†¢M† ð† û† ‡$‡<‡Q‡ f‡‡‡ ›‡¦‡®‡͇Ó‡܇凸‡ˆˆˆ -ˆ/8ˆ hˆsˆŠˆ ‰$‰*‰;‰ L‰Y‰i‰y‰ ˆ‰,–‰É)׉Š Š1ŠBŠ!XŠzŠŠ£Š¹ŠÏŠ"àŠ‹‹/‹B‹ S‹ `‹ k‹ x‹ƒ‹ ™‹ ¦‹±‹Ì‹â‹õ‹ ŒŒ3ŒHŒ]ŒqŒ†Œƒ¤Œ#(L^w‘£½ ÏMÚ(ŽAŽRŽfŽ‚Ž ’Ž ŸŽš¬ŽŽG Öã#ý!0(F.ož¡5±-瑱%‘ב6ô‘+’O2“^‚“Ká“-”XI”'¢”FÊ”B•ET•0š•)Ë•œõ•!’–*´–-ß–$ —(2—@[—uœ—%˜K8˜‰„˜ª™0¹™pê™h[šNÄš› ›'› @›J›]›n›ˆ›2¢›%Õ›û›œ/œ@œCœVœ/^œŽœ  œ¬œ%¼œâœ 2M_x Œ™+³ß ÷,ž0Ež1vž\¨žŸ Ÿ)Ÿ BŸNŸiŸ€ŸœŸ°Ÿ·Ÿ ¿ŸËŸÚŸõŸ=ùŸ=7 >u  ´ 7¿ v÷ n¡s¡ y¡.‡¡!¶¡!Ø¡(ú¡#¢>¢D¢K¢Q¢Y¢a¢i¢n¢r¢w¢ ~¢ ‹¢—¢ ¨¢¶¢ Å¢Т ߢ£&£Óéâ˜ÿR†7NÍ×—]ô~WÝÜ÷õ›‡æ‹6<Ë¢Áí yOM|•z¥X§›;—Žˆip‘Ð@oÛÞ4Õ¨žjަ ßÉ[Õv¼« ÁÆIöž¿_îƒÍº™Yäµî ¶üwdç}Êë" \d;gèçßSn9K Mg3š¹ÀLÂGvÎFV𤵲eýR|o 0-®ÑÅKÖúË)nAÌPõñÐÙ]«†VQr^U”êÚªa>’~ýw£:´ ¥,ŸèïtX5Ó1+Z' ÂÏù<TTu%È*°UÑŒª¿r®Hƒ[ì!¢„³Û¨ó·k/ˆò ÊL ,YQ ¬½=÷Èø{ü³ å/s'2Æ(*ÿ¯å5þ+¡¾Oú}¾q¡¦9؇?s‹h$@þí¼8œ€ ½¹Ôû»!Jô&AENãeŒø`iÞ §C%–ê™Jæ3´:Gh­c7Dp#à•¸`BéŠ.¬82tb?ÄZIº±ä$ÒÙál_C1jaÉmݱ΀Ïò·­‚ûc WÖ"ëŸ(f>Ü)„^\âÀ”؉S׸ã6²…‘Ŷm“{xö q»Bì4£lÌÄ©EPÃ…ï#&f¯¤ózñÒàDá=-’Çb.©ÔÚ‰xH˜ u–ðFœ°ÇšŠky ù“0 (modified) (unsaved)%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountsAdd CommentAdd Files…Add Folders…Add Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken markup in translation string.BrowseCancelCannot create temporary directory.Cannot execute program: %sCapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear TranslationClear translationCloseCollecting source files…Command to extract translations:Comment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationCopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t save file %s.Create new translationCreate new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete the projectDirectories:Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileErrorsEverythingExcluded pathsExport To TMX…Export as…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageIDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.Ignore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…Include beta versionsInformation about the translatorInstallInvalid fileInvocation:KeepLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMalformed header: “%sâ€Manage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No matches foundNo problems with the translation found.Not all plural forms are translated.Not authorized, please sign in again.OKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen RecentOpen in EditorOpen in editorOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPermission denied.Please open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit is an easy to use translation editor.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.PreferencesPreferences...Preferences…Preserve formatting of existing filesPrevious Plural FormPrevious plural formProject name and version:Project name:Project:PurgePurge deleted translationsQuitRedoRefreshRemaining: %dReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.ReviewSaveSave &As…Save &as…Save asSave as…Save changesSelect &AllSelect AllSelect TMX files to importSelect directorySelect translation files to importSelect your preferred languageSet LanguageSet languageShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to CrowdinSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source textSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation — %sTwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)UntransUpdate allUpdate all catalogs in the projectUpdate from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating user information…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown language“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Basque Language: eu_ES MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: eu X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (aldatuta) (gorde gabe)Sarrera %d%d sarrerasarrera %d aurre-itzulita.%d sarrera aurre-itzulita.errore %d%d errore%d arazo aurkitu da itzulpenarekin. %d arazo aurkitu dira itzulpenarekin.'%2$s' fitxategiko kate %1$i ez da ongi kargatu.'%2$s' fitxategiko %1$i kate ez dira ongi kargatu.%s Formatua%s hobespenak%s formatua&Honi buruz&Poedit-i buruz&AplikatuA&tzera&Utzi&Garbitu&Itxi&KopiatuE&zabatu&Eginda eta hurrengoa&Eginda eta hurrengoa&Editatu&Fitxategia&Bilatu…&GNU gettext eskuliburua&GNU gettext eskuliburua&Joan&Taldekatu testuinguruz&Taldekatu testuinguruz&Laguntza&Berria&Berria…&Hurrengoa >&Hurrengo itzulpena&Hurrengo itzulpena&EzAd&os&Online laguntza&Online laguntza&Ireki...&Ireki…&Itsatsi&Hobespenak&Hobespenak…A&urreko itzulpenaA&urreko itzulpena&Propietateak…&Purgatu ezabatutako itzulpenak&Purgatu ezabatutako itzulpenak&Irten&Berregin&Ordeztu&Gorde&Gorde honela&DeseginItzuli gabeko &sarrerak lehenikItzuli gabeko &sarrerak lehenik&Eguneratu iturburuetatik&Eguneratu iturburuetatik&Balioztatu itzulpenak&Balioztatu itzulpenak&Ikusi&Bai(Erabili hizkuntza lehenetsia)(Windows 8 edo berriagoa behar du)< &Aurrekoa%s(r)i buruzKontuakGehitu iruzkinaGehitu fitxategiak…Gehitu karpetak…Gehitu komodina…Gehitu iruzkinaGehitu direktorioa zerrendaraGehitu fitxategiak…Gehitu karpetak…Gehitu komodina…Gako-hitz gehigarriakxgettext marka gehigarriak:AurreratuaErauzte ezarpen aurreratuak…Erauzte ezarpen aurreratuakErauzte ezarpen aurreratuak…Itzulpen-fitxategi guztiakIruzkin guztiakErabili lehenetsitako gako-hitzak onartutako hizkuntzetan ere baiBetik aldatu fokua testu sarrera eremuraSarrera-fitxategien zerrendako elementu bat:Gako-hitzen zerrendako elementu bat:ItxuraAplikatuZiur "%s" erauzlea ezabatu nahi duzula?Ziur zaude itzulpen memoria berrezarri nahi duzula?Egiaztatu eguneraketak automatikokiKonpilatu MO fitxategia automatikoki gordetzeanAtzeraHasierako bidea:Beta bertsioek azken ezaugarriak eta hobekuntzak dituzte, baina apur bat ezegonkorrak izan daitezke.Ekarri denak aurreraMarka-kode hautsia itzulpen katean.ArakatuUtziEzin izan da direktorio tenporala sortu.Ezin da programa abiarazi: %sJarri maiuskulaKatalogoen &kudeatzaileaKatalogoen &kudeatzaileaKatalogoen kudeatzaileaAldatu erabiltzaile-interfazearen hizkuntzaKaraktere-jokoa:Egiaztatu dokumentua orainEgiaztatu gramatika ortografiarekinEgiaztatu ortografia idatzi bitarteanEgiaztatu eguneraketarik dagoen…Egiaztatu itzulpenean errorerik dagoenEgiaztatu eguneraketarik dagoen…Egiaztatu ortografiaGarbituGarbitu itzulpenaGarbitu itzulpenaItxiIturburu-fitxategiak biltzen…Itzulpenak erauzteko komandoa:Iruzkina:Aurrizki hau duten iruzkinak:Konpilatu MO-ra…Konpilatu hona…Konpilatutako itzulpen-fitxategiakKonfiguratu iturburu kodearen erauzketa propietateetan.BerrespenaKopiatuKopiatu singularretikKopiatu jatorrizko testutikKopiatu singularretikKopiatu jatorrizko testutikZuzendu ortografia automatikokiEzin izan da %s fitxategia gorde.Sortu itzulpen berriaSortu itzulpen proiektu berriaCrowdin errorea&EbakiErauzle pertsonalizatuak:Erauzle pertsonalizatuak:Pertsonalizatu tresna-barra…EbakiDatu-basearen tamaina diskoan:EzabatuItzulpen memoriatik ezabatuEzabatu erauzleaItzulpen memoriatik ezabatuEzabatu proiektuaDirektorioak:Luzaroan erabili ez diren itzulpen guztiak kentzea nahi duzu?Ez gordeEz gordeEz erakutsi berriroEz markatu zehazki bat datozenak 'lana behar du' bezalaEz erakutsi berriroAzken itzulpenak deskargatzen…Itzulpenak deskargatzea desgaituta dago proiektu honetan.I&rtenEditatuEditatu &iruzkinaEditatu &iruzkinaEditatu iruzkinaEditatu iruzkinaEditatu proiektuaEditatu proiektuaEdizioaEditatu…E-maila:Sartu pantaila osoanErroreak dituzten sarrerak lehenikErroreak dituzten sarrerak lehenikErroreak dituzten sarrerak gorriz markatu dira zerrendan. Errorearen xehetasunak sarrera hautatzen duzunean erakutsiko dira.Errorea fitxategia irekitzerakoanErroreakDenaBaztertutako bideakTMXra esportatu…Esportatu honela…TMXra esportatu…"%s"ra itzulpen memoria esportatzeak huts egin du.Itzulpenak esportatzen…&Erauzi iturburuetatikErauzi itzultzaileentzako oharrak hemendik:Erauzi testua direktorio hauetako jatorrizko fitxategietatik:Erauzlearen ezarpenaErauzleakKomunikazioak huts egin du Poedit prozesuarekin.Huts egin du gettext katalogoak batzerakoan.Hutsegitea itzulpen memoria eguneratzerakoan: %sFitxategia“%s†fitxategia ez dago.“%s†fitxategia ez da itzulpen fitxategia."%s" soilik irakurtzeko fitxategia da eta ezin da gorde. Gorde beste izen batez.BilatuBilatu hurrengoaBilatu aurrekoaBilatu eta ordeztu…Bilatu iruzkinetanBilatu jatorrizko testuetanBilatu itzulpenetanBilatu hurrengoaBilatu aurrekoaZuzendu hizkuntzaKonpondu hizkuntzarenaKonpondu goiburuaKonpondu goiburua%i forma%i forma (ez da erabiltzen)GNU gettextOrokorraHTML fitxategiakLaguntzaEzkutatu alboko barraEzkutatu egoera-barraEzkutatu jakinarazpen mezu hauIDaPurgarekin jarraitzen baduzu, ezabaturik bezala markaturiko itzulpen guztiak betiko kenduko dira. Berriro itzuli beharko dituzu etorkizunean atzera gehitzen badira.Aurretik zure fitxategietarako sarbidea debekatu baduzu, baimendu dezakezu Sistemaren hobespenetan> Segurtasuna eta pribatutasuna> Pribatutasuna> Fitxategiak eta karpetak.Ezikusi maiuskulak/minuskulakTMXtik inportatu…Itzulpen fitxategiak inportatu…TMXtik inportatu…Itzulpen fitxategiak inportatu…Itzulpenak inportatzen…Beta bertsioak barneItzultzaileari buruzko informazioaInstalatuFitxategi baliogabeaErabilera:MantenduItzulpen hizkuntza eta iturburuko hizkuntza bera da.Itzulpenaren hizkuntza ez dago ezarrita.Itzulpenaren hizkuntza:Hizkuntza hautapenaHizkuntza taldea:Hizkuntza:Azken aldaketaIkasi gettext gako-hitzei buruzIkasi gehiago plural formezIkasi gehiagoIkasi gehiago Crowdin buruz%d lerroa hondatuta dago "%s" fitxategian (%s datu baliogabea).Lerro amaierak:Luzapenen zerrenda puntu eta komaz bananduta (adib. *.cpp;*.h):Ezin dira MO fitxategiak zuzenean editatu Poedit erabiliz.Bihurtu minuskulakBihurtu maiuskulakGaizki osatutako goiburua: "%s"Kudeatu…Ezberdintasunak batzen…MinimizatuItzulitako proiektuaren izenaIzena:Hu&rrengo amaigabeaHu&rrengo amaitu gabeaLana behar duLana behar duEz baimendu inoiz kate-zerrendak fokua hartzea. Gaitzen bada, ctrl+geziak erabili behar dituzu teklatu bidezko nabigaziorako edo zuzenean idazten hasi zaitezke, fokua aldatzeko tabuladorea sakatzeko beharrik gabe.BerriaBerria &POT/PO fitxategitik…Berria &POT/PO fitxategitik…Kate berriakHurrengo plural formaHurrengo plural formaEzEz da bat datorrenik aurkituEzin izan da sarrerarik aurre-itzuli.Ez da bat datorrenik aurkituEz da arazorik aurkitu itzulpenean.Ez dira forma plural guztiak itzuli.Ez autorizatua, mesedez hasi saioa berriro.AdosBatGaitu bakarrik zure itzulpen memoriaren kalitateaz fidatzen bazara. Lehenetsita itzulpen memoriako bat etortzean 'lana behar du' gisa markatzen dira eta erabili aurretik berrikusi behar dira.Bete bakarrik zehaztasun osoz bat datozeneanIreki erabili berriaIreki editoreanIreki editoreanIreki...Ireki…AukerakBeste batA&urreko amaigabeaA&urreko amaitu gabeaPO itzulpen-fitxategiakPOT itzulpen-txantiloiakPOT fitxategiak txantiloiak besterik ez dira eta ez dute inolako itzulpenik berez. Itzulpena egiteko, sortu PO fitxategi berri bat txantiloian oinarrituz.ItsatsiItsatsi eta bateratu estiloaBideakBaimena ukatuta.Ireki eta editatu dagokion PO fitxategia. Gordetzen duzunean, MO fitxategia ere eguneratuko da.Mesedez gorde fitxategia lehenik. Atal hau ezin ordura arte editatu.PluralaPlural formak:PoeditPoedit - Katalogoen kudeatzaileaPoeditek automatikoki konpondu du "%s" fitxategiko eduki baliogabea.Poedit sarrera berriak zure aurreko itzulpenekin edo itzulpen memoriarekin betetzen saiatu daiteke. Itzulpen memoria erabiltzea ez da oso eraginkorra izango erdi hutsik badago, baina hobetzen joango da itzulpenak gehitu ahala.Poedit itzulpen editore erabilerraz bat da.Aurre-i&tzuli…Aurre-itzuliAurre-itzulitaKate %u aurre-itzulita%u kate aurre-itzulitaAurre-itzultzen...Aurre-itzulpenak automatikoki aurkitzen ditu itzulpen memorian itzuli gabeko kateentzako bat etortze zehatzak edo gutxi gora beherakoak eta itzulpena betetzen du.HobespenakHobespenak...Hobespenak…Mantendu dauden fitxategien formatuaAurreko plural formaAurreko plural formaProiektuaren izena eta bertsioa:Proiektuaren izena:Proiektua:PurgatuPurgatu ezabatutako itzulpenakIrtenBerreginFreskatuGelditzen dira: %dOrdeztuOrdeztu &denakOrdeztu &denakOrdezpen-kateaOrdeztu…Beharrezkoa den Plural-Forms goiburua falta da.BerrezarriBerrezarri itzulpen memoriaItzulpen memoria berrezartzeak atzerabiderik gabe ezabatuko ditu bertan biltegiratutako itzulpen guztiak. Ezin duzu eragiketa hau desegin.BerrikusiGordeGorde &honela…Gorde &honela…Gorde honelaGorde honela…Gorde aldaketakHautatu &denakHautatu denakInportatu beharreko TMX fitxategiak aukeratuHautatu direktorioaHautatu inportatzeko itzulpen-fitxategiakHautatu zure gogoko hizkuntza Ezarri hizkuntzaEzarri hizkuntzaErakutsi alboko barraErakutsi ortografia eta gramatikaErakutsi egoera-barra&ID katea erakutsiErakutsi ordezkapenakErakutsi tresna-barraErakutsi oharrakErakutsi edo ezkutatu alboko barraErakutsi alboko barraErakutsi egoera-barra&ID katea erakutsiOharrak erakutsiAlboko barraHasi saioaAmaitu saioaHasi saioaHasi saioa Crowdin-enAmaitu saioaSingularraItsatsi/Kopiatu adimentsuaTipografia-marratxoakLotura adimentsuakTipografia-komatxoakOrdenatu &fitxategizOrdenatu i&turburuzOrdenatu Itz&ulpenezOrdenatu &fitxategizOrdenatu i&turburuzOrdenatu itz&ulpenezIturburuaren karaktere-jokoa:Iturburu kode erauzleak iturburu kode fitxategietan kate itzulgarriak aurkitzeko eta itzuli ahal izateko erauzteko erabiltzen dira.Iturburu-kodea ez dago eskuragarri.Jatorrizko testuaJatorrizko testua — %sIturburuetako gako-hitzakIturburuen bideakIturburuetako gako-hitzakIturburuen bideakDiskurtsoaOrtografia egiaztaketa desgaituta dago, %s hiztegia ez dagoelako instalatuta.Ortografia eta gramatikaHasi hitz egitenGelditu hitz egiteaBiltegiratutako itzulpenak:Bilatzeko kateaOrdezkapenakIradokizunakIradokizunak ez daude eskuragarri itzulpen hizkuntza ez badago zuzen ezarrita. Beste ezaugarri batzuetan izan dezake eragina ere, plural formak esaterako.GNU gettext tresnek ezagututako programazio hizkuntza guztiak onartzen ditu (PHP, C/C++, C#, Perl, Python, Java, JavaScript eta beste batzuk).SinkronizatuSinkronizatu Crowdin-ekinSinkronizatu itzulpena Crowdin-ekinSinkronizatzenSinkronizazio erroreaHutsegitea Crowdin-ekin sinkronizatzean.Sintaxi errorea Plural-Forms goiburuan ("%s").IMTMX fitxategiakHartu kate itzulgarriak dagoen POT txantiloi batetik.Taldearen izena eta e-mail helbidea edo URL-aTestu-ordezpenaItzulpen memoriak ez du fitxategi honen edukiaren antzekoa den katerik. Zuk eskuz itzulitako fitxategietatik ikasi ahala eraginkorragoa da Poedit Itzulpen erdi-automatikoentzat.TMX fitxategia ez da zuzena.Fitxategia ezin da MO formatuan konpilatu eta erabili.Fitxategiak bikoiztutako elementuak zituen, eta hau ez da onartzen PO fitxategietan, ezin izango litzateke fitxategia erabili. Poedit-ek arazoa konpondu du, baina 'lana behar du'. gisa markatutako itzulpenak gainbegiratu beharko zenituzte eta behar bada zuzendu.Fitxategia MO formatuan konpilatu da, baina ziurrenik ez du ongi funtzionatuko.Fitxategia ongi gorde eta MO formatuan konpilatu da, baina ziurrenik ez du ongi funtzionatuko.Fitxategia ongi gorde da, baina ezin da MO formatuan konpilatu eta erabili.Fitxategia seguru gorde da.Orain desegokia den itzulpena dagokion jatorrizko testua (eguneraketan aldatu aurrekoa).Itzulpena ez da zuriune batekin hasten.Itzulpena lerro berri batekin amaitzen da, baina jatorrizko testua ez.Itzulpena zuriune batekin amaitzen da, baina jatorrizko testua ez.Itzulpena "%s"-rekin amaitzen da, baina jatorrizko testua "%s"-rekin.Itzulpenari lerro berri bat falta zaio amaieran.Itzulpenak zuriune bat falta du amaieran.Itzulpena erabiltzeko gertu dago, baina sarrera %d ez dago itzulita oraindik.Itzulpena erabiltzeko gertu dago, baina %d sarrera ez daude itzulita oraindik.Itzulpena erabiltzeko prest dago.Itzulpenak “%sâ€-rekin amaitu behar du.Itzulpenak ez du “%sâ€-rekin amaitu behar.Itzulpena esaldi gisa hasi behar da.Itzulpena minuskula batez hasi behar da.Itzulpena zuriune batekin hasten da, baina jatorrizko testua ez.Itzulpenak 'lana behar du' gisa markatu dira, ez zehatzak izan daitezkeelako. Zuzenak diren berrikusi beharko zenuke.Ez dago itzulpenik. Hori ezohikoa da.Arazo bat egon da fitxategiaren formatua txukuntzean (baina ongi gorde da).Ezarpen hauek PO fitxategien barneko formatuari eragiten diote. Zehaztu betebehar bereiziren bat baduzu, adib. bertsio kontrola dela eta.Hau erauzlea abiarazteko agindua da. %o irteerako fitxategiaren izena bihurtzen da, %K gako-hitzen zerrenda, %F sarrerako fitxategia, %C karaktere-jokora (ikusi behean).Kate hau Poedit-en itzulpen memorian aurkitu da.Hau agindu lerrora gehituko da jatorrizko karaktere kodeketa ematen bada besterik ez. %c karaktere kodeketa da.Hau komando lerrora erantsiko zaio sarrera-fitxategi bakoitzeko behin. %f fitxategi-izena bihurtzen da.Gako-hitz bakoitzeko behin erantsiko da hau komando lerrora. %k gako-hitza da.GuztiraEraldaketakItzulita: %d / %d (%%%d)ItzulpenaItzulpen hizkuntzaItzulpen memoriaItzulpenak lana &behar duItzulpenaren propietateakItzulpen memorien datubasea ez da zuzena: %s (%d).Itzulpen memoriaren errorea: %s (%d).Itzulpenak &lana behar duItzulpenaren propietateakItzulpena — %sBiUTF-8 (gomendatua)DeseginKontrolatu gabeko salbuespen bat gertatu da: %sUnix (gomendatua)Itzuli gabeEguneratu denakEguneratu proiektuko katalogo guztiakEguneratu &POT fitxategitik…Eguneratu &POT fitxategitik…Eguneratu kodetikEguneratu POT fitxategitikEguneratu kodetikEguneratu iturburuetatikEguneratu laburpenaEguneraketakEguneraketak huts egin duErabiltzailearen informazioa eguneratzen…Itzulpenak kargatzen…Erabili espresio pertsonalizatuaErabili aukeratutako tipografia zerrendetan:Erabili aukeratutako tipografia testu eremuetan:Erabili hizkuntza honetarako lehenetsitako arauakErabili gako-hitzak (funtzioen izenak) kate itzulgarriak antzemateko iturburu fitxategietan:Erabili itzulpen memoriaBalioztatuBalioztapenaren emaitzak%s bertsioaAutentifikazioaren zain…Ongi etorri Poedit-eraIturburuetatik eguneratzeanHitz osoak bakarrikLeihoaWindowsItzulbiratuItzulbiratzea:XLIFF itzulpen-fitxategiakBaiKate itzulgarriak zuzenean erauzi ditzakezu iturburu kodetik:Ezin duzu fitxategi bat baino gehiago jaregin Poedit leihoan.Poedit berrabiarazi behar duzu aldaketa honek eragina izateko.Zure izenaZure aldaketak galdu egingo dira ez badituzu gordetzen.Zure izena eta e-mail helbidea GNU gettext fitxategietako Last-Translator goiburua ezartzeko besterik ez da erabiliko.ZeroZoomaLana behar duez ezabatu fitxategi tenporalak (arazketarako)Adib. nplurals=2; plural=(n > 1);zalantzako bat egitea fitxategianjoan emandako lerro zenbakiko elementuramaneiatu poedit:// URI batCtrl+BeheraSartuEzkerraEskuinaMaius.+Goraaltctrlmaius.%s(r)i buruzEzkutatu %sEzkutatu besteakHobespenak...Irten %s(e)tikZerbitzuakErakutsi denakaurre-itzuli itzulpen memoriatikhizkuntza ezezaguna"%s" ez da baliozko POT fitxategi bat.poedit-3.6.3/locales/kab.po0000644000175100001660000025472715011674364011240 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Kabyle\n" "Language: kab_KAB\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: kab\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Ffer izen-agi n ulÉ£u" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ur d-skan ara tikelt-nniá¸en" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ur d-skan ara tikelt-nniá¸en" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Leqqem agzul" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Mdel" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Afaylu" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Izraren imaynuten" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "AlqaḠn ifuyla iÉ£bula…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Ulamek asali n ufaylu s tsuqilin yettwassfen." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Di: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Tangalt taÉ£balut ur tewjid ara." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Tisuqilin ulamek ara ttwaleqqement si tengalt taÉ£balut, acku ur nufi ara " "tangalt deg wadig i d-yettunefken deg yiraten n ufaylu." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Tasiregt tettwagi." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Ur tesÉ›iḠara tisirag akken ad teÉ£reḠifuyla n tengalt taÉ£balut deg wadig i " "d-yettunefken deg yiraten n ufaylu." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Ma tugiḠyakan adduf É£er yisefka-inek•inem, tzemreḠad t-tsirgeḠdi " "IÉ£ewwaren > Tabaá¸nit & TaÉ£ellist > Ifuyla & Ikaramen." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Ma tugiḠyakan anekcum É£er yifuyla-inek, tzemreḠad t-tsirgeḠdi Tinefrunin " "n unagraw > TaÉ£ellist akked tbaá¸nit > Tabaá¸nit > Ifuyla akked yikaramen." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Afaylu “%s†ulamek ara yettwaldi." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Aleqqem n tsuqilin" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Asdukkel n wayen yimgaraden…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Inixf ur yemsil ara akken iwata: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Ifuyla n tsuqilt PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "TineÉ£rufin n tsuqilt POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Ifuyla n tsuqilt XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Ifuyla n tsuqqilt JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Akk ifuyla n tsuqilt" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "JSON agi maÄÄi d afaylu n tsuqilin yerna ulamek ara yettwaẓreg di Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Afaylu “%s†i tÉ£uri kan ihi ur tezmireḠara ad t-teskelseá¸.\n" "Ttxil-k skels-it s yisem-nniá¸en." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Ur izmira ara ad isekles afaylu %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Tuá¹­á¹­fiwin n wegdil :" #: src/catalog_po.cpp:134 #, 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 n yizirig n ufaylu “%s†ur d-yuli ara akken iwata." msgstr[1] "%i n yizirigen n ufaylu “%s†ur d-ulin ara akken iwata." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Izirig %d n ufaylu '%s'  yerreẓ (isefka n %s maÄÄi d imeÉ£ta)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Afaylu PO yerreẓ: talÉ£a n usuf msgstr tettwaseqdec lwaḥid akked msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Afaylu PO yerreẓ: talÉ£a n usget msgstr tettwaseqdec war msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "D awezÉ£i asali n ufaylu, izmer ad yili yerreẓ." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Tella-d tuccá¸a deg usali n ufaylu. Kra n yisefka zemren ad xaṣṣen neÉ£ ad " "rreẓen." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "Yella wugur deg umsal n ufaylu (maca yettwasekles akken iwata)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Afaylu ulamek ara yettwasekles s tegrumma n yisekkilen “%s†am wakken " "yettwamla deg yiÉ£ewwaren n tsuqilt.\n" "\n" "yettwasekles UTF-8 deg umá¸iq yerna iÉ£ewwaren ttwabeddelen." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Tuccá¸a deg usekles n ufaylu" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†maÄÄi d afaylu POT ameÉ£tu." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Tella-d tuccá¸a deg usali n ufaylu XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "lqem-gi ur yettwadel ara (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Ticreá¸t yerrẓen deg uzrar n tsuqilt." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Amiá¸an" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Sefrek imiá¸anen" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Asenfar:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Tutlayt:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Qqen É£er umiá¸an n cloud" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Qqen É£er umiá¸an n cloud" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Asider n tsuqilin tineggura…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Qqen É£er %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Amtawi" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Asali n tsuqilin É£er %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Tuccá¸a n umtawi" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Rnu" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Tuccá¸a tarussint n Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Ur yurig ara, ttxil-k qqen tikkelt-nniá¸en." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Asider n tsuqilin yensa deg usenfar-agi." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Qqen" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Qqen" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "FfeÉ£" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "FfeÉ£" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Issin ugar É£ef Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Araǧu n usesteb…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Aleqqem n telÉ£ut n useqdac…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Qqen É£er Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Amtawi akked Crowdin yerreẓ." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Tuccá¸a n Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Asili n tsuqilin…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&NÉ£el" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Issin ugar" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Tallelt" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Ifuyla MO ur tezmireḠara ad ten-tẓergeḠsrid di Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Tuccá¸a deg ulday n ufaylu" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Ttxil-k ldi u ẓreg afaylu PO anmeÉ£ray. Mi ara t-teskelseá¸, afaylu MO ad " "yettwaleqqem daÉ£en." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ur ttekkes ara ifuyla ikudanen (i weseÉ£ti)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "sefrek URI n poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "ddu s aferdis deg yizirig i d-ittunefken" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Tuccá¸a di teÉ£walt akked usekker Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Teá¸ra-d tsureft ur nettwassefrak ara: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Fren taneÉ£ruft n tsuqilt" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Afaylu d armeÉ£tu" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Fren afaylu n tsuqilt" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit d amaẓrag n tsuqilin yeshel i weseqdec." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Ur tezmireḠar ad tserseḠugar n yiwen n ufaylu deg wesfaylu n Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Afaylu “%s†maÄÄi d afaylu n tsuqilt." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Afaylu “%s†ulac-it." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "AseÉ£ti n teÉ£dirawt yensa, acku amawal i %s ur yettwasbedd ara." #: src/edframe.cpp:871 msgid "Install" msgstr "Sbedd" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Afaylu “%s†ibeddel-it usna-nniá¸en." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Ales asali n ufaylu" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "TebÉ£iḠad talseḠasali n ufaylu seg uá¸ebsi? Tiẓrigin-inek·inem ur " "nettwaskels ara di Poedit ad á¹›uḥent ma tkemmeleá¸." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ttu" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Ales asali n ufaylu" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Afaylu yettwabeddel. TebÉ£iḠad teskelseḠibeddilen?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Sekles ibeddilen" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Ibeddilen-ik (im) ad ruḥen ma yella ur ten-teskelseḠara." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Sekles" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ur sseklas a&ra" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ur sseklas ara" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "Ibeddilen ixdem usnas-nniá¸en ad á¹›uḥen ma teskelseá¸." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Sefsex" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Sekles akken ibÉ£u" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Sekles akken ibÉ£u" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Sekles am…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Sefsu É£er…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Afaylu n tsuqilt yefsa" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "SifeḠs talÉ£a HTM…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Ifuyla HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Aleqqem yecceá¸" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Leqqem seg ufaylu POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Leqqem seg ufaylu POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d n wugur i d-nufa di tsuqilt." msgstr[1] "%d n wuguren i d-nufa di tsuqilt." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "IgmaḠn usentem" #: src/edframe.cpp:1842 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 "" "Inekcumen yesÉ›an tuccá¸iwin ttucerá¸en s uzeggaÉ£ di tebdart. Isalan É£ef É£ef " "tuccá¸a ad d-baben mi ara tferneḠanekcum." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Afaylu yettwasekles s tÉ£ellist." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Afaylu yettwasekles s tÉ£ellist u yefsa É£er umasal MO, maca wissen ma ad iddu " "akken ilaq." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Afaylu yettwasekles s tÉ£ellist, ur yezmir ara yefsu É£er umasal MO neÉ£ ad " "yettwaseqdec." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "Afaylu yefsa É£er umasal MO, maca wissen ma ad yeddu akken ilaq." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Afaylu ur yezmir ara ad yefsu É£er umasal MO neÉ£ ad yettwaseqdec." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Ulac uguren di tsuqilt." #: src/edframe.cpp:1894 #, 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] "Tasuqilt tewjed i wseqdec, maca %d n unekcum ur yettwasuqqel ara." msgstr[1] "" "Tasuqilt tewjed i wseqdec, maca, %d n yinekcumen ur ttwasuqqelen ara." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Tasuqilt tewjed i wseqdec." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit yeseÉ£ti i yiman-is agbur armeÉ£tu deg ufaylu “%sâ€." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Afaylu yesÉ›a iferdisen usligen, ayen i yegedlen deg yifuyla PO u yettqerriÉ› " "asqedc n ufaylu. Poedit yefra ugur, maca ilaq ad tselkeneḠtisuqilin i " "yettwacerá¸en d timewẓiyin u ad tent-teseÉ£tiḠma yelaq." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Tutlayt n tsuqilt ur tettusbadu ara." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Sbadu tutlayt" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Sbadu tutlayt" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Isumar ur ttawjaden ara ma yella tutlayt n tsuqilt ur tettusbadu ara akken " "iwata. Ayagi, yezmer ad iḥaz timeẓliyin-nniá¸en, am talÉ£iwin n wesget." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Tutlayt n tsuqilt kifkif-itt akked tutlayt taÉ£balut." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "SÉ£ti tutlayt" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "SeÉ£ti tutlayt" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Afaylu-agi yesÉ›a inekcumen s talÉ£iwin n usget, maca ur yesÉ›i ara inixef " "Plural-Forms ittusewlen." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Inekcumen deg ukaram-agi sÉ›an amá¸an n talÉ£iwin n wesget i yemgarraden É£ef " "wayen i d-yeqqar inixf Plural-Forms" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Inixf Plural-Forms i yettwasran ixuṣṣ." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Tuccá¸a n tseddast deg yinixf Plural-Forms (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "SeÉ£ti inixf" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "SeÉ£ti inixf" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "Tinfaliyin n talÉ£iwin n wesget i yesseqdec ufaylu-agi ulac-itent di tnumi n " "%s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Cegger" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "TebÉ£iḠad tesqedceḠtaglizit i uá¸ris aÉ£balu?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Sali-d taglizit" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Tasuqilt n: %d seg %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Yeggra-d: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d n tuccá¸a" msgstr[1] "%d n tuccá¸iwin" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d n unekcum" msgstr[1] "%d n yinekcumen" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (ur yettwasekles ara)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (yettwabeddel)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Aleqqem n tkatut n tsuqilt ur yeddi ara: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Eǧǧ" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Kkes" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "SfeḠtisuqilin yettwakksen" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "TebÉ£iḠad tekkseḠtisuqilin merra ur nettwaseqdac ara?" #: src/edframe.cpp:2879 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 "" "Ma tkemmeleḠasizdeg, tisuqilin merra i yettwacerá¸en amzun ttwakksent ad " "ttwakksent i lebda. Asmi ara tebÉ£uḠad tent-ternuḠilaq ak ad tent-" "tesuqqeleḠtikkelt-nniá¸en." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Sfeá¸" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "NÉ£el seg weá¸ris aÉ£balu" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "NÉ£el seg weá¸ris aÉ£balu" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "SfeḠtasuqilt" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "SfeḠtasuqilt" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Ẓreg awennit" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Ẓreg awennit" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Tummanin n tengalt" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Tummanin n tengalt" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Ffer afeggag n yidis" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Sken afeggag n yidis" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Ffer afeggag n waddad" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Sken afeggag n waddad" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "TeÉ£zi n uzrar s yisekkilen: tasuqilt | aÉ£balu" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "TeÉ£zi n uzrar s yisekkilen" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Aá¸ris aÉ£balu" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Asuf" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Asget" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Tasuqilt" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Yettwasuqqel s uzwer" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Yesra amahil" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Yesra amahil" #: src/editing_area.cpp:566 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 "" "Ifuyla POT d tineÉ£rufin kan ur sÉ›in ara kra n tsuqilin. \n" "Iwakken ad tgeḠtasuqilt, snulfu-d afaylu amaynut PO yebnan É£ef tneÉ£ruft." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Snulfu-d tasuqilt tamaynutt" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Eg tasuqilt tamaynutt seg ufaylu-agi POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID n uá¸ris aÉ£balu" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Akk" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "TalÉ£a %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Seg %i (ur tettwaseqdac ara)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Ilem" #: src/editing_area.cpp:788 msgid "One" msgstr "Yiwen" #: src/editing_area.cpp:790 msgid "Two" msgstr "Sin" #: src/editing_area.cpp:804 msgid "Other" msgstr "Wayeá¸" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Amasal %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Amasal %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Tasuqilt — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Aá¸ris aÉ£balu — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "tutlayt tarussint" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Tuccá¸a deg wesmezdi n yikaramen gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Ldi deg wemaẓrag" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Ldi deg wemaẓrag" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Ulac talÉ£ut É£ef tummanin n uzrar-agi di tengalt taÉ£balut i d-yettunefken deg " "ufaylu." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Ulac talÉ£ut n useqdec" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d n tummant n tengalt" msgstr[1] "%d n tummanin n tengalt" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Tangalt taÉ£balut ur tettwaf ara" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit ur yezmir ara ad d-isken tangalt taÉ£balut anida yettwaseqdec uzrar, " "acku afaylu yezmer ur yewjid ara deg wadig yettwamlen neÉ£ d tamselÉ£ut " "tazamulant ur nettawi ara s afaylu ilaw." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Afaylu ulamek ara yeldi" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit igguma ad ildi afaylu “%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Nadi" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Semselsi" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Tinefrunin" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ttu tajá¹›ut n usekkil" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Qfel" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Awalen ummiden kan" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Nadi deg yiá¸risen iÉ£bula" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Nadi di tsuqilin" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Nadi deg yiwenniten" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Semselsi &akk" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Semselsi i &meṛṛa" #: src/findframe.cpp:150 msgid "&Replace" msgstr "Se&mselsi" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Æ”er deffir" #: src/findframe.cpp:152 msgid "&Next >" msgstr "Æ”er &sdat >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Azrar ara tnadiá¸" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Izraren n usemselsi" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Isem n tutlayt neÉ£ tangalt" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Tutlayt n tsuqilt" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Tutlayt n tsuqilt:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Akk izriren" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Isenfaá¹›en" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Issin ugar É£ef %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Rnu asenfaá¹›" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Rnu asenfaá¹›" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Amsefrak n yikaramen" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Ẓreg…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Snulfu-d asenfar amaynut n tsuqilin" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Kkes asenfar" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Ẓreg asenfar" #: src/manager.cpp:176 msgid "Update all" msgstr "Leqqem Akk" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Leqqem ikaramen merra n usenfar" #: src/manager.cpp:378 msgid "Total" msgstr "AÉ£rud" #: src/manager.cpp:379 msgid "Untrans" msgstr "Ur yettwasuqqel ara" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Yesra amahil" #: src/manager.cpp:381 msgid "Errors" msgstr "Tuccá¸iwin" #: src/manager.cpp:382 msgid "Last modified" msgstr "Abeddel aneggaru" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Fren akaram" #: src/manager.cpp:433 msgid "Directories:" msgstr "Ikaramen:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "TebÉ£iḠad tekseḠasenfar “%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Kkes asenfaá¹›" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Tukksa n usenfaá¹› ur tettekkes ara ifuyla n tsuqilt." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Asentem" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Leqqem ikaramen merra n usenfar-a?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Ad yeg aleqqem si tengalt taÉ£balut i yifuyla meṛṛa n usenfaá¹›." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Nadi ileqman…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Amsefrak n yikaramen" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "Ismenyifen…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Ẓreg" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Sefsex" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Err-d" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Sená¹­eḠs uḥraz n uÉ£anib" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Kkes" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "TaÉ£dirawt akked tjerrumt" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Sken taÉ£dirawt akked tjerrumt" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Senqed isemli tura" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Selken taÉ£dirawt di lawan n tira" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Selken taÉ£dirawt akked tajerrumt" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "AseÉ£ti awurman n teÉ£dirawt" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Isemselsiyen" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Sken yisemselsiyen" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "AnÉ£el/Asená¹­eḠamegzu" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Tuccar timegza" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Tijerriá¸in timegza" #: src/menus.cpp:226 msgid "Smart Links" msgstr "IseÉ£wan imegza" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Asemselsi n uá¸ris" #: src/menus.cpp:230 msgid "Transformations" msgstr "Aselket" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Selket s asekkil ameqran" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Selket s asekkil amecá¹­uḥ" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Selket s asekkil ameqran" #: src/menus.cpp:237 msgid "Speech" msgstr "Mmeslay" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Bdu ameslay" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Ḥbes ameslay" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "Ta&muÉ£li" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Sken afeggag n yifecka" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Sagen afeggag n yifecka…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Æeddi s agdil aÄÄuran" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Asfaylu" #: src/menus.cpp:263 msgid "Minimize" msgstr "Simẓi" #: src/menus.cpp:264 msgid "Zoom" msgstr "SimÉ£ur" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Ansuf É£er Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "SÉ›eddi kulec É£er uÉ£awas amezwaru" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Isalan É£ef umsuqqel" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Isem:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Isem n tmagit-inek" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Imayl:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "keÄÄ·kem@amedya.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Isem-ik akked tansa-inek imayl ad ttwasqedcen kan i wesbadu n yinixf Last-" "Translator n yifuyla GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Asiẓreg" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Asefsu awurman n ufaylu MO deg wesekles" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Senqed taÉ£dirawt" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Yalas ssermad taÉ£zut n usekcem n uá¸ris" #: src/prefsdlg.cpp:211 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 "" "Werǧin ad teǧǧeḠtabdart n yizraren ad tawi asaá¸as. Ma yermed, isefk ad " "tesqedceḠtiqeffalin Ctrl-tineccabin iwakken ad tinigeḠs unasiw maca " "tzemreḠdaÉ£en ad tsekcmeḠsrid aá¸ris, war ma tessdeḠtaqeffalt Tab iwakken " "ad tbeddeleḠasaá¸as." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Timeẓri" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Seqdec tasefsit yugnen:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Seqdec tasefsit yugnen i tÉ£ezza n uá¸ris:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Beddel tutlayt n ugrudem" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(yesra Windows 8 neÉ£ amaynut)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Amatu" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Seqdec takatut n tsuqilt" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Sefrek…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Mi ara yili uleqqem seg yiÉ£bula" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "taÄÄart ittemcabin deg ufaylu" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "suqqel s uzwer si TM" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit yezmer ad yeÉ›reḠad yaÄÄar inekcumen imaynuten, anagar si tsuqilin " "tuzwirin n ufaylu-agi neÉ£ si tkatut n tsuqilt. Aseqdec n tkatut n tsuqilt ur " "k-ineffeÉ› ara ma ur teÄÄur ara. Iwakken takatut-inek n tsuqilt ad tgerrez " "ilaq ad s-ternuḠaá¹­as n tsuqilin." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Tisuqilin yettwaḥerzen:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Tiddi n uzadur n yisefka É£ef uá¸ebsi:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Kter ifuyla n tsuqilt…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Kter ifuyla n tsuqilt…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Kter si TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Kter si TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "SifeḠar TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "SifeḠar TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Ales awennez" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Fren yifuyla n tsuqilt ara tketreá¸" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Fren yifuyla TMX ara tketreá¸" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Ifuyla TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Taktert n tsuqilin…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "SifeḠam…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "AsifeḠn tsuqilin…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Taktert n tkatut n tsuqilt si \"%s\" ur yeddi ara." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Ales awennez n tkatut n tsuqilt" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "D tidett tebÉ£iḠad talseḠawennez n tkatut n tsuqilit?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Alus n uwennez n tkatut n tsuqilt ad yesfeḠi lebda tisuqilin i yettwaḥerzen " "degs. Tamhelt-agi ur tesÉ›i ara tuÉ£alin É£er deffir." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "MT" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Takatut n tsuqilt" #: src/prefsdlg.cpp:730 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 "" "Imassafen n tengalt taÉ£balut seqdacen-ten i wenadi di tengalt taÉ£balut É£ef " "izraren n tsuqilt iwakken ad ttwassfen yerna ad ttwasuqqlen." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Imassafen yugnen:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Imassafen udmawanen:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Idehhel timeslayin merra n usihel n yifecka GNU gettext (PHP, C/C++, C#, " "Perl, Python, Java, JavaScript d wiyaá¸)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Kkes amassaf" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "S tidett tebÉ£iḠad tekkseḠamassaf “%sâ€?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Imassafen" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Imiá¸anen" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Anadi awurman n yileqman" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Seddu ileqman biá¹­a" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Ileqman biá¹­a gebren tiwuriwin timaynutin akked usnerni aneggaru, acu kan " "zemren ad ilin xuṣṣen arkad." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Ileqman" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "IÉ£ewwaren-agi ad beddelen amsal adigan n yifuyla PO. Sgaddi-iten ma tesÉ›iḠ" "israyen ulmisen, amedya asenqed n lqem." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Taggara n yizirigen:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (yettwasemter)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "TuÉ£alin s ajerriḠdi:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Ḥrez amsal n yifuyla yellan" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Anaẓi" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "IÉ£ewwaren" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Aheggi n yizraren…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Tasuqilt tuzwirt si tkatut n tsuqilt…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u n uzrar yettwasuqqel s uzwer" msgstr[1] "%u n yizraren ttwasuqqlen s uzwer" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Tasuqilt tuzwirt…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d n unekcum iÄur." msgstr[1] "%d n yinekcumen ÄÄuren." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Tisuqilin ttwacerá¸ent srant amahil, acku zemrent ad ilint d timewẓiyin. Ilaq " "ad tent-teceggereá¸." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Ulac inekcumen i yzemren ad tusuqqelen s uzwer." #: src/pretranslate.cpp:218 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 "" "Takatut n tsuqilt ur tegbir ara izraren yugdan agbur n ufaylu-agi. Ayagi " "yettili-d i tsuqilin tizgen-aymaniyin mi ara yelmed Poedit seg yifuyla " "yettwasuqqlen s ufus." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Tasuqqilt tuzwirt" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "AÄÄaá¹› kan ayen yemá¹£adan s tseddi" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Ur cerreḠara tisuqilin tiseddiyin d timewẓiyin" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Sermed kan ma yella tetḥeqqeqeḠbelli takatut n tsuqilt inek tgerrez. S " "lexá¹£as akk tinmeÉ£ra n tkatut n tsuqilt ad ttwacerá¸en srant amahil yerna ilaq " "ad ttwaceggerent send aseqdec-nnsen." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Asuqqel s uzwer awurman yettaf di tkatut n tsuqilt tinmeÉ£ra tiseddiyin neÉ£ " "timewẓiyin i yinekcumen ur nettwasuqqel ara iwakken ad ten-yaÄÄar." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Asefsex…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "ZuÉ£er ikaramen neÉ£ ifuyla É£er dagi" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "ZuÉ£er ikaramen neÉ£ ifuyla É£er dagi" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Rnu ikaramen…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Rnu ikaramen…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Rnu ifuyla…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Rnu ifuyla…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Rnu asekkil awsiyan…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Rnu asekkil awsiyan…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Askan deg unaram" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Sken deg wenaram" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "BeqqeḠdeg ukaram" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Iberdan" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Iberdan ur nettekki ara" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "IÉ£ewwaá¹›en inaẓiyen n tussfa" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Kkes-d tilÉ£a i yimsuqqelen si:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Iwenniten ibeddun s uzwir:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Akk iwenniten" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Inamalen-nniá¸en n sgettxt:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Awalen yufraren imernanen" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Isem n usenfar n tsuqilt" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Isem n terbaÉ›t akked tansa imayl neÉ£ URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "amedya. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (yettwasemter)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Ttxil-k sekles qbel afaylu. Ur tezmireḠara ad tẓergeḠtanegzumt-agi uqbel." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Tallunt yettwaḥeṛṛan “%s†txuṣṣ di tsuqilt." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Tallunt yettwaḥeṛṛan n zzyada “%s†ur nelli ara deg uá¸ris aÉ£balu." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Tisuqilin n talÉ£iwin n usget" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "TalÉ£iwin n usget ur ttwasuqqelent ara merra." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Asekkil ameqran/asekkil amecá¹­uḥ ur mtawan ara" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Tasuqilt isefk ad tebdu am tefyirt." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Tasuqilt isefk ad tebdu s usekkil amecá¹­uḥ." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Tallunt ur teǧhid ara" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Tasuqilt ur tebdi ara s tallunt." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Tasuqilt tabda s tallunt, ma d aá¸ris aÉ£balu xaá¹­i." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Ixuṣṣ wengaz n ujerriḠdi tagarra n tsuqilt." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Tasuqilt tfukk s wengaz n ujerriá¸, ma d aá¸ris aÉ£balu xaá¹­i." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Txuṣṣ tallunt di taggara n tsuqilt." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Tasuqilt tfukk s tallunt, ma d aá¸ris aÉ£balu xaá¹­i." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Asenqed n usenqeá¸" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Tasuqilt ilaq ad tfakk s “%sâ€." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Tasuqilt ur ilaq ara ad tfakk s “%sâ€." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Tasuqilt tfukk s “%sâ€, maca aá¸ris aÉ£balu ifukk s “%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "SfeḠumuÉ£" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "SfeḠumuÉ£" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Awennit:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Leqqem" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Kkes" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Kkes awennit" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Ẓreg asenfar" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Isem n usenfar:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Snirem" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Rnu akaram É£er tebdart" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Ih" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "Afa&ylu" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "Amaynut…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Amaynut seg ufaylu &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Amaynut seg ufaylu &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Ldi…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Ldin melmi kan" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Ldin melmi kan" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Asfaylu n tazwara" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Asfaylu n tazwara" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Amsefrak n yikaramen" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Amsefrak n yikaramen" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Mdel" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Sekles" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Sekles am…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Sekles s am…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Sefsu É£er MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Nadi ileqman…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "IÉ£ewwaren…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "Ismenyifen" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "Ff&eÉ£" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "FfeÉ£" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "NÉ£el seg wasuf" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "NÉ£el seg wasuf" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Tasuqilt tesra amahil" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Tasuqilt tesra amahil" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Ẓreg awennit" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "&Ẓreg awennit" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Isumar" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "Nadi…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Semselsi…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Nadi uá¸fir" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Nadi uzwir" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Nadi semselsi…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Nadi uá¸fir" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Nadi uzwir" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Sken &ID n uzrar" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Sken &ID n uzrar" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Sken ilÉ£a" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Sken ilÉ£a" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Fren s umizzwer n ufaylu" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Fren s umizzwer n ufaylu" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Fren s uÉ£balu" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Fren s uÉ£balu" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Fren s tsuqilt" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Fren s tsuqilt" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "Se&grew s twennaá¸t" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "Se&grew s twennaá¸t" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Zwir inekcumen yesÉ›an tuccá¸iwin" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Zwir inekcumen yesÉ›an tuccá¸iwin" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Zwir inekcumen ur nettwasuqqel ara" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Zwir inekcumen ur nettwasuqqel ara" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Sken tummanin n tengalt" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Sken tummanin n tengalt" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Sken afeggag n yidis" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Sken afeggag n waddad" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Tasuqilt" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Leqqem seg tengalt taÉ£balut" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Leqqem seg tengalt aÉ£balu" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Amtawi akked Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Tasuqilt tuzwirt…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "SeÉ£bel tisuqilin" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "Sentem tisuqilin" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "SfeḠtisuqilin yettwakksen" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "SfeḠtisuqilin yettwakksen" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "Iraten…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Ddu" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "Snes u kemmel" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "Snes u kemmel" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Yettwaẓreg yakan" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Yettwaẓreg yakan" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Tasu&qilt tuzwirt" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Tasu&qilt tuzwirt" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Tasuqilt tuá¸firt" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Tasuqilt tuá¸firt" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Uzwir ur nemmid ara" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Uzwir ur nemmid ara" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Uá¸fir ur nemmidt ara" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Uá¸fir ur nemmid ara" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "TalÉ£a n usget tuzwirt" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "TalÉ£a n usget tuzwirt" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "TalÉ£a n usget tuá¸firt" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "TalÉ£a n usget tuá¸firt" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Tallelt É£ef uẓeá¸á¸a" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Tallelt É£ef uẓeá¸á¸a" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Adlisfus n &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Adlisfus n &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "Æ”ef Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "Æ”ef" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Asbeddi n umassaf" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Tabdart n yiseÉ£zaf berzen s tenqiá¸t ticcert (amedya. *.cpp;*.h) :" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "TiÉ£ri:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Anezá¸ay i tussfa n tsuqilin:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Attaya tnezá¸ayt i yesekkaren amassaf.\n" "%o ad yeẓel É£er yisem n ufaylu n tuffÉ£a, %K ad ibeqqeá¸\n" "awalen yufraren, %F ad ibeqqeḠifuyla n unekcum,\n" "%C i tegrumma n yisekkilen (ẓer uksar-agi)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Aferdis si tebdart n yismawen yufraren:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Wagi ad yettwarez É£er yizirig n tnezá¸ayt tikkelt\n" "i yal awal yufraren. %k ad yeẓel É£er wawal yufraren." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Aferdis di tebdart n yifuyla n unekcum:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Yettwager deg yizirig n tnezá¸ayt tikkelt\n" "i yal afaylu n unekcum. %f ad yeẓel isem n ufaylu." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Tagrumma n yisekkilen n tengalt taÉ£balut:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Ayagi ad yettwarez É£er yizirig n tnezá¸ayt\n" "ma yella kan tangalt taÉ£balut tettunefk-d. %c ad yeẓel É£er wazal n tegrumma " "n yisekkilen." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Iraten n tsuqilt" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Isem akked lqem n usenfar:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "TarbaÉ›t n tutlayt:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "TalÉ£iwin n wesget:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Seqdec alugen n lexá¹£as n tutlayt-agi" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Seqdec tanfalit yugnen" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Ẓer ugar É£ef talÉ£iwin n wesget" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Tagrumma n yisekkilen:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "IÉ£ewwaá¹›en inaẓiyen n tussfa…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "IÉ£ewwaá¹›en inaẓiyen n tussfa…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Iraten n tsuqilt" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Iberdan n yiÉ£bula" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Iberdan n yiÉ£bula" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Ssef aá¸ris seg yifuyla iÉ£bula deg yikaramen-agi:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Abrid azaduran:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Awalen yufraren iÉ£bula" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Awalen yufraren iÉ£bula" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Seqdec awalen-agi yufraren (ismawen n twura) iwakken ad tÉ›eqleḠizraren ara " "yettwasuqqelen\n" "deg yifuyla iÉ£bula:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Seqdec daÉ£en awalen yufraren n lexá¹£as i tutlayin yettwadehlen" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Issin ugar É£ef wawalen yufraren n gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Ldi afaylu" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Sekles afaylu" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "SeÉ£bel" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Selken tuccá¸iwin di tsuqilt" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Leqqem seg tengalt" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Leqqem seg tengalt" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Leqqem seg tengalt taÉ£balut" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Afeggag n yidis" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Sken neÉ£ ffer afeggag n yidis" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Aá¸ris aÉ£balu uzwir" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "AÉ£balu n uá¸ris aqbuá¹› (send ad yettwabeddel deg uleqqem) ukud tenmeÉ£ra " "tsuqilt tamewẓit." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Tamawt i yemsuqqlen" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Awennit" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Rnu awennit" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Rnu awennit" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Kkes seg tkatut n tsuqilt" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Kkes seg tkatut n tsuqilt" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Isumar n tsuqilt" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Ur d-nufi ara tinmeÉ£ra" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Ur d-nufi ara tinmeÉ£ra" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Azrar-agi nufat-id di tkatut n tsuqilt n Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Ulamek aselkem n wahil: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Afaylu TMX ur yemsil ara akken iwata." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Azadur n yisefka n tkatut n tsuqil texseá¹›: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Tuccá¸a di tkatut n tsuqilt: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Seqdec tutlayt n lexá¹£as)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Afran n tutlayt" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Fren tutlayt-ik tamenyift" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Yessefk ad talseḠtanekra n Poedit akken ad yeddu ubeddil-agi." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "D awezÉ£i asnulfu n ukaram akudan." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Ulac tisuqilin. Ayagi ulac-it di tnumi." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Lmed ugar É£ef GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "Ma tebÉ£iḠad taÄÄareḠafaylu-agi s sshala leqqem-it seg ufaylu POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Leqqem seg POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Awi-d izraren ara yettwasuqqelen si tneÉ£ruft POT yellan." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "TzemreḠdaÉ£en ad d-tekkseḠizraren ara yettwasuqqelen srid seg tengalt " "taÉ£balut:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Ssef seg yiÉ£bula" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Swel tussfa n tengalt taÉ£balut deg yiraten." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Lqem %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Snulfu-d amaynut" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Snulfu-d tasuqilt tamaynutt si tneÉ£ruft POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Snirem ifuyla" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Ldi yerna siẓreg ifuyla n tsuqilt." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Ifuyla n melmi kan" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Mtawi" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Mtawi tisuqilin akked Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Æ”ef %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Ismenyifen n %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Æ”ef %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Imeẓluyen" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Ffer %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Ffer wiyaá¸" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Sken akk" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "FfeÉ£ si %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Ismenyifen…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Ismenyifen..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Ismenyifen..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "Snes" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Snes" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "TuÉ£alin" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "TuÉ£alin" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Sefsex" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Sfeá¸" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Sfeá¸" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "NÉ£el" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Gzem" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Gzem" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Ẓreg" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "FfeÉ£" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Tallelt" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Amaynut" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Amaynut" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Ala" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ala" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&IH" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Ldi…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Ldi..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Ldi..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "Sen&á¹­eá¸" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Sená¹­eá¸" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Ismenyifen" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "Err-&d" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Sismeá¸" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Sekles am" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Sekles am" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "&Fren akk" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Fren akk" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "Se&fsex" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Ih" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ih" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Kcem" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Asawen" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Akessar" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Azelmaá¸" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Ayfus" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/vi.po0000644000175100001660000026763615011674230011114 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\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" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: vi\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Ẩn thông báo này Ä‘i" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Không hiển thị lần sau nữa" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Không hiển thị lại" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Tóm tắt sÆ¡ lược quá trình cập nhật" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Äóng" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Tập tin" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Chuá»—i má»›i" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Äang thu thập các tập tin nguồn…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Lá»—i nạp tập tin vá»›i các bản dịch được giải nén." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Trong: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Mã nguồn không có sẵn." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Không thể cập nhật bản dịch từ mã nguồn vì không tìm thấy mã nào ở vị trí " "được chỉ định trong Thuá»™c tính cá»§a tập tin." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Quyá»n bị từ chối." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Bạn không có quyá»n Ä‘á»c các tập tin mã nguồn từ vị trí được chỉ định trong " "Thuá»™c tính cá»§a tập tin." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Nếu trước đây bạn đã từ chối quyá»n truy cập vào tệp cá»§a mình, bạn có thể cho " "phép nó trong Tùy chá»n hệ thống > Bảo mật và quyá»n riêng tư > Quyá»n riêng tư " "> Tệp & thư mục." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Tệp \"%s\" không thể mở." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Äang cập nhật bản dịch" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Äang trá»™n các khác biệt…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Phần đầu dị hình: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO Dịch Tập Tin" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "PO Dịch Mẫu" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Các tập tin dịch XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Tập tin dịch JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Tập tin dịch Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Tất Cả Các Tập Tin Bản Dịch" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Tệp có định dạng không được Poedit nhận dạng." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Tệp JSON này không phải là tệp bản dịch và không thể được chỉnh sá»­a trong " "Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Äá»c ná»™i dung tệp không thành công vá»›i lá»—i sau: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Tệp tin %s chỉ cho phép Ä‘á»c và không thể lưu lại được.\n" "Xin hãy lưu lại vá»›i má»™t tên khác." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Không thể lưu tập tin %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Ảnh chụp màn hình:" #: src/catalog_po.cpp:134 #, 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] "dòng %i cá»§a tập tin '%s' đã không được tải má»™t cách chính xác." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Dòng %d cá»§a tập tin '%s' bị há»ng (dữ liệu không hợp lệ %s)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "Tập tin PO há»ng: dạng số ít msgstr mà sá»­ dụng vá»›i msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Tập tin PO há»ng: dạng số nhiá»u msgstr sá»­ dụng mà không có msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Không thể tải tập tin, có thể nó bị há»ng." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Äã xảy ra lá»—i khi tải tệp. Vì vậy, má»™t số dữ liệu có thể bị thiếu hoặc bị " "há»ng." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "Có vấn đỠvá»›i định dạng (nhưng vẫn có thể lưu lại)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Không thể lưu tập tin trong bá»™ ký tá»± “%s†như được chỉ định trong cài đặt " "dịch. \n" "\n" "Tập tin đã được lưu trong UTF-8 và cài đặt đã được sá»­a đổi cho phù hợp." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Lá»—i lưu tập tin" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "Tập tin '%s' không hợp định dạng POT." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Lá»—i khi tải tệp XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "phiên bản không được há»— trợ (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Äánh dấu bị gãy trong chuá»—i dịch." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Kết nối Poedit vá»›i các ná»n tảng bản địa hóa đám mây được há»— trợ để đồng bá»™ " "hóa liá»n mạch các bản dịch được quản lý trên đó." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Äồng bá»™ đám mây hoạt động như thế nào?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Tài khoản" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(chưa đăng nhập)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Mở dịch đám mây" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Quản lý tài khoản" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Dá»± án:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Ngôn ngữ:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Äăng nhập vào tài khoản đám mây" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Äăng nhập vào tài khoản đám mây" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Không có dá»± án dịch thuật được liệt kê trong tài khoản cá»§a bạn." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Äang tải xuống bản dịch má»›i nhất…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Äăng nhập vào %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Äồng bá»™" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Äang tải bản dịch lên %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Tải bản dịch lên %s không thành công." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Lá»—i đồng bá»™" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Thêm" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Lá»—i Crowdin không xác định." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Không có thẩm quyá»n, xin vui lòng đăng nhập lại." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Tải vá» bản dịch bị vô hiệu hóa trong dá»± án này." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Äăng Nhập" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Äăng nhập" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Äăng Xuất" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Äăng xuất" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Tìm hiểu thêm vá» Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Äang chá» xác thá»±c…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Äang cập nhật thông tin ngưá»i dùng…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Äăng nhập vào Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Äồng bá»™ vá»›i Crowdin không thành công." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin lá»—i" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Tải lên bản dịch…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Sao" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Tìm hiểu thêm" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "T&rợ giúp" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Tập tin MO không thể chỉnh sá»­a trá»±c tiếp trong Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Lá»—i mở tập tin" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Hãy mở và chỉnh sá»­a các tập tin PO. Khi bạn lưu nó, tập tin MO sẽ được cập " "nhật." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "không xóa tập tin tạm (để gỡ lá»—i)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "xá»­ lý má»™t poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "nhảy tá»›i mục vá»›i số dòng đã cho" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Không thể giao tiếp vá»›i quá trình Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Chưa được xá»­ lý ngoại lệ: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Chá»n mẫu bản dịch" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Tập tin không hợp lệ" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Chá»n tập tin bản dịch" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit rất dá»… dùng cho việc biên tập bản dịch." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Bạn không thể kéo thả nhiá»u hÆ¡n má»™t tập tin vào trong cá»­a sổ Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Tập tin \"%s\" không phải là má»™t tập tin dịch." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Tập tin \"%s\" không tồn tại." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Kiểm tra chính tả bị vô hiệu, bởi vì từ Ä‘iển cho %s không được cài đặt." #: src/edframe.cpp:871 msgid "Install" msgstr "Cài đặt" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Tập tin “%s†đã bị thay đổi bởi má»™t ứng dụng khác." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Tải lại tập tin" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Bạn có muốn tải lại tập tin từ ổ đĩa không? Các chỉnh sá»­a chưa được lưu cá»§a " "bạn trong Poedit sẽ bị mất nếu bạn làm vậy." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Lá» Ä‘i" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Tải lại tập tin" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Tập tin đã được sá»­a đổi. Bạn có muốn lưu các thay đổi?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Lưu thay đổi" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Các thay đổi cá»§a bạn sẽ bị mất nếu bạn không lưu chúng." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Lưu" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Khô&ng lưu" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Không Lưu" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "Các thay đổi được thá»±c hiện bởi ứng dụng khác sẽ bị mất nếu bạn lưu." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Há»§y bá»" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Vẫn Lưu" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Vẫn lưu" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Lưu như…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Biên dịch sang…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Các tập tin bản dịch đã được biên dịch" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Xuất sang HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Tập tin HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Cập Nhật không thành công" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Cập nhật từ tập tin &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Cập nhật từ tập tin &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Tìm thấy trong bản dịch %d lá»—i." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Kết quả xác nhận" #: src/edframe.cpp:1842 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 "" "Các mục có lá»—i được đánh dấu màu đỠtrong danh sách. Chi tiết vá» lá»—i sẽ hiển " "thị khi bạn chá»n mục tương ứng đó." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Tệp được lưu má»™t cách an toàn." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Các tập tin được lưu má»™t cách an toàn và biên soạn thành định dạng MO, nhưng " "nó sẽ có lẽ không làm việc má»™t cách chính xác." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Tập tin đã được lưu má»™t cách an toàn, nhưng nó không thể được biên dịch " "thành định dạng MO để có thể sá»­ dụng được." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Các tập tin được biên dịch vào các định dạng MO, nhưng nó sẽ có lẽ không làm " "việc má»™t cách chính xác." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "" "Các tập tin không thể được biên dịch thành các định dạng MO và sá»­ dụng." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Không tìm thấy lá»—i nào trong bản dịch." #: src/edframe.cpp:1894 #, 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] "Bản dịch đã sẵn sàng để sá»­ dụng, nhưng %d mục không được dịch." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Bản dịch đã sẵn sàng để sá»­ dụng." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit đã tá»± động sá»­a các ná»™i dung không hợp lệ trong tập tin \"%s\"." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Tập tin chứa các mục trùng lặp, mà không được cho phép trong các tập tin PO " "và sẽ ngăn chặn các tập tin được sá»­ dụng từ chúng. Poedit đã sá»­a vấn Ä‘á», " "nhưng bạn nên xem lại các bản dịch cá»§a bất kỳ mục nào được đánh dấu là cần " "làm việc và sá»­a lại chúng nếu cần thiết." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Ngôn ngữ cá»§a bản dịch chưa được đặt." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Äặt ngôn ngữ" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Gợi ý không có sẵn nếu ngôn ngữ bản dịch không được thiết lập đúng. Các tính " "năng khác, chẳng hạn như hình thức số nhiá»u, có thể bị ảnh hưởng." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Ngôn ngữ cá»§a bản dịch là giống như ngôn ngữ nguồn." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Sá»­a ngôn ngữ" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Sá»­a chữa ngôn ngữ" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Tập tin này có các mục nhập có dạng số nhiá»u, nhưng chưa định cấu hình tiêu " "đỠDạng số nhiá»u." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Các mục nhập trong tập tin này có các dạng số nhiá»u khác nhau so vá»›i tiêu đỠ" "Dạng số nhiá»u cá»§a tập tin cho biết" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Phần đầu Plural-Forms đã yêu cầu bị thiếu." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Cú pháp lá»—i trong khai báo phần đầu Plural-Forms (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Sá»­a Phần Äầu" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Sá»­a phần đầu" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "Biểu thức dạng số nhiá»u được tập tin sá»­ dụng là không bình thưá»ng đối vá»›i %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Xem lại" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Bạn có muốn sá»­ dụng tiếng Anh cho văn bản nguồn không?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Tải tiếng Anh" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Äã dịch: %d of %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Còn lại: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d lá»—i" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d mục" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (chưa lưu)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (đã sá»­a)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Gặp lá»—i khi cập nhật bá»™ nhá»› dịch: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Giữ lại" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Loại bá»" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Xóa bá» các chuá»—i dịch bị đánh dấu là không dùng nữa" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Bạn có muốn loại bá» tất cả các chuá»—i không còn sá»­ dụng nữa không?" #: src/edframe.cpp:2879 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ếu bạn vẫn muốn thanh lá»c, tất cả các chuá»—i dịch mà được đánh dấu là đã xoá " "sẽ bị gỡ bá» hoàn toàn khá»i tập tin. Bạn sẽ phải dịch lại chúng nếu ngưá»i lập " "trình sá»­ dụng lại nó trong tương lai." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Thanh lá»c" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Chép từ chuá»—i nguồn" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Chép từ chuá»—i nguồn" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Xóa phần dịch" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Xóa phần dịch" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Sá»­a chú thích" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Sá»­a chú thích" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Lần xuất hiện mã" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Lần xuất hiện mã" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Ẩn Thanh Công Cụ" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Hiện thanh công cụ" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Ẩn Thanh Trạng Thái" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Hiển Thanh Trạng Thái" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Äá»™ dài chuá»—i ký tá»±: dịch | nguồn" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Äá»™ dài chuá»—i ký tá»±" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Văn bản nguồn" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Dạng số ít" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Số nhiá»u" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Bản dịch" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Dịch trước" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Cần làm" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Cần làm việc" #: src/editing_area.cpp:566 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 "" "Các tập tin POT chỉ là các mẫu và không chứa bất kì bản dịch nào cá»§a chính " "chúng.\n" "Äể tạo 1 bản dịch, tạo 1 tập tin PO má»›i dá»±a trên mẫu." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Tạo bản dịch má»›i" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Tạo má»™t bản dịch má»›i từ tập tin POT này." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Má»i thứ" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Dạng %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Form %i (không sá»­ dụng)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Số không" #: src/editing_area.cpp:788 msgid "One" msgstr "Má»™t" #: src/editing_area.cpp:790 msgid "Two" msgstr "Hai" #: src/editing_area.cpp:804 msgid "Other" msgstr "Khác" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Ngữ cảnh chuá»—i: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Mã định danh chuá»—i: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Äịnh dạng %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "định dạng %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Bản dịch — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Mã nguồn văn bản — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "không hiểu ngôn ngữ" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Lá»—i trá»™n catalog gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Mở trong Trình Soạn Thảo" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Mở trong trình soạn thảo" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Không có thông tin vá» sá»± xuất hiện cá»§a chuá»—i này trong mã nguồn được cung " "cấp trong tập tin." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Không có thông tin sá»­ dụng" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d lần xuất hiện mã" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Không tìm thấy mã nguồn" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit không thể hiển thị mã nguồn nÆ¡i chuá»—i được sá»­ dụng, bởi vì các tập " "tin hoặc là không có sẵn trong các vị trí tham chiếu hoặc nó là má»™t tài liệu " "tham khảo mang tính biểu tượng mà không trỠđến má»™t tập tin thá»±c sá»±." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Tập tin không thể mở được" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit đã không thể mở tập tin “%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Tìm" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Thay thế" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Tùy chá»n" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Không phân biệt HOA/thưá»ng" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Ngắt khoảng" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Phải khá»›p toàn bá»™ các từ" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Tìm trong các văn bản nguồn" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Tìm trong phần dịch" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Tìm trong chú thích" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Thay Thế &Tất Cả" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Thay Thế &tất cả" #: src/findframe.cpp:150 msgid "&Replace" msgstr "T&hay thế" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Trước" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Tiếp theo >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Chuá»—i cần tìm" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Thay thế chuá»—i" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Tên ngôn ngữ hoặc mã" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Ngôn ngữ bản dịch" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Ngôn ngữ cá»§a bản dịch:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Tất cả chuá»—i" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Không thể tải xuống chi tiết dá»± án Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Dá»± án" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Tìm hiểu thêm vá» %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Thêm dá»± án" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Thêm dá»± án" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Quản lý catalog" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Chỉnh sá»­a…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Tạo má»™t dá»± án dịch má»›i" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Xóa bá» dá»± án" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Chỉnh sá»­a dá»± án" #: src/manager.cpp:176 msgid "Update all" msgstr "Cập nhật tất cả" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Cập nhật tất cả các catalog trong dá»± án" #: src/manager.cpp:378 msgid "Total" msgstr "Tổng cá»™ng" #: src/manager.cpp:379 msgid "Untrans" msgstr "Chưa dịch" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Cần làm" #: src/manager.cpp:381 msgid "Errors" msgstr "Lá»—i" #: src/manager.cpp:382 msgid "Last modified" msgstr "Lần sá»­a cuối" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Chá»n thư mục" #: src/manager.cpp:433 msgid "Directories:" msgstr "Thư mục:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Bạn có muốn xóa dá»± án “%s†không?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Xóa dá»± án" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Xóa dá»± án sẽ không xóa bất kỳ tệp dịch nào." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Sá»± xác thá»±c" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Cập nhật tất cả các danh mục trong dá»± án này?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Thá»±c hiện cập nhật từ mã nguồn trên tất cả các tệp trong dá»± án." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Kiểm tra cập nhật…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Quản lý các catalog" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Cá nhân hóa…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Biên tập" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Huá»· thao tác trước" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Làm lại" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Dán và Khá»›p Kiểu" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Xóa bá»" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Chính Tả và Ngữ Pháp" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Hiện Chính Tả và Ngữ Pháp" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Kiểm Tra Tài Liệu Ngay" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Kiểm Tra Chính Tả Trong Khi Gõ" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Kiểm Tra Ngữ Pháp Vá»›i Chính Tả" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Sá»­a Chính Tả Tá»± Äá»™ng" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Thay Thế" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Hiển Thị Thay Thế" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Sao Chép/Dán Thông Minh" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Trích Dẫn Thông Minh" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Dấu Gạch Ngang Thông Minh" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Liên Kết Thông Minh" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Thay Thế Văn Bản" #: src/menus.cpp:230 msgid "Transformations" msgstr "Biến Äổi" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Chữ HOA" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Chữ thưá»ng" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Viết Hoa" #: src/menus.cpp:237 msgid "Speech" msgstr "Lá»i nói" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Bắt Äầu Nói" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Dừng Nói" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Trình bày" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Hiển Thị Thanh Công Cụ" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Tùy Chỉnh Thanh Công Cụ…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Nhập Toàn Màn Hình" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Cá»­a sổ" #: src/menus.cpp:263 msgid "Minimize" msgstr "Thu nhá»" #: src/menus.cpp:264 msgid "Zoom" msgstr "Phóng to" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Chào mừng bạn dùng Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Mang Tất Cả ra Trước" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Thông tin vá» các dịch giả" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Tên:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Tên Bạn" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Email:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Tên và địa chỉ email cá»§a bạn chỉ được sá»­ dụng để thiết lập các tiêu đỠdịch " "giả cuối cùng cá»§a GNU gettext tập tin." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Äang chỉnh sá»­a" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Tá»± động biên dịch tập tin MO khi lưu" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Kiểm tra lá»—i chính tả" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Luôn luôn để focus vào ô nhập liệu" #: src/prefsdlg.cpp:211 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 "" "Äừng bao giỠđể danh sách chuá»—i nhận focus. Nếu cho phép, bạn phải sá»­ dụng " "Ctrl-Phím mÅ©i tên để có thể di chuyển bằng bàn phím nhưng bạn lại có thể " "nhập chữ má»™t cách trá»±c tiếp, mà không cần phải nhấn Tab để thay đổi focus." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Giao diện" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Sá»­ dụng danh sách tùy chỉnh phông:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Sá»­ dụng font tùy chỉnh các trưá»ng văn bản:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Thay đổi ngôn ngữ UI" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(yêu cầu Windows 8 hay má»›i hÆ¡n)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Tổng quan" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Dùng bá»™ nhá»› bản dịch" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Quản lý…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Khi cập nhật từ nguồn" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "kết hợp má» trong tệp" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "dịch trước từ TM" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit có thể cố gắng để Ä‘iá»n vào mục má»›i từ bản dịch trước đó trong tập tin " "hoặc từ toàn bá»™ bá»™ nhá»› dịch cá»§a bạn. Sá»­ dụng TM sẽ không thể hiệu quả nếu nó " "gần như trống rá»—ng, nhưng nó sẽ trở nên tốt hÆ¡n khi bạn thêm nhiá»u bản dịch " "vá»›i nó." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Các bản dịch được lưu trữ:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Kích thước cá»§a cÆ¡ sở dữ liệu trên đĩa:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Nhập tệp dịch…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Nhập tệp dịch…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Nhập từ TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Nhập từ TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Xuất sang TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Xuất sang TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Thiết lập lại" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Chá»n các tập tin bản dịch để nhập vào" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Chá»n má»™t tập tin TMX để nhập" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Tập tin TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Äang nhập các bản dịch…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Xuất ra như…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Xuất các bản dịch…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Xuất bá»™ nhá»› bản dịch ra \"%s\" đã thất bại." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Äặt lại bá»™ nhá»› dịch thuật" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Bạn có chắc bạn muốn đặt lại bá»™ nhá»› dịch thuật?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Äặt lại bá»™ nhá»› dịch thuật sẽ xóa bá» tất cả bản dịch được lưu trữ từ nó. Bạn " "không thể hoàn tác thao tác này." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "CÆ¡ sở dữ liệu dịch" #: src/prefsdlg.cpp:730 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 "" "Trình giải nén mã nguồn được dùng để tìm các chuá»—i có thể dịch trong các tập " "tin mã nguồn và giải nén nó vì thế chúng có thể được dịch." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Tùy Chá»n Giải Nén:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Tùy chá»n giải nén:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Há»— trợ tất cả các ngôn ngữ lập trình được công nhận bởi công cụ GNU gettext " "(PHP, C/c + +, C#, Perl, Python, Java, JavaScript và những ngôn ngữ khác)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Xóa trình trích xuất" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Bạn có chắc muốn xóa trình trích xuất \"%s\"?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Trình trích xuất" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Tài khoản" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Tá»± động kiểm tra cập nhật" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Bao gồm cả bản thá»­ nghiệm" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Phiên bản beta chứa các tính năng và cải tiến má»›i nhất, nhưng có thể ít ổn " "định." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Cập Nhật" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Các thiết đặt này ảnh hưởng đến định dạng bên trong cá»§a các tập tin PO. Äiá»u " "chỉnh chúng nếu bạn có yêu cầu cụ thể ví dụ vì kiểm soát phiên bản." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Dòng kết thúc:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (nên dùng)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Kiểu Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Ngắt tại:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Duy trì định dạng cá»§a tập tin đã có" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Nâng cao" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Äang chuẩn bị các chuá»—i…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Äang dịch trước từ bá»™ nhá»› dịch…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Chuá»—i %u đã được dịch trước" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Äang dịch trước…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d mục đã được dịch trước." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Các bản dịch đã được đánh dấu là cần làm việc, bởi vì chúng có thể không " "chính xác. Bạn nên xem lại chúng cho việc sá»­a chữa." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Không có mục có thể được trước dịch." #: src/pretranslate.cpp:218 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 không chứa bất kỳ chuá»—i tương tá»± cho ná»™i dung cá»§a tập tin này. Nó là chỉ " "có hiệu lá»±c cho các bản dịch bán tá»± động sau khi Poedit há»c đủ từ các tập " "tin mà bạn đã dịch thá»§ công." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Không thể dịch trước mà không có văn bản nguồn." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Dịch trước" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Không thể dịch trước từ ngôn ngữ không xác định." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Chỉ Ä‘iá»n vào các từ khá»›p chính xác" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Không đánh dấu các từ khá»›p chính xác là cần làm việc" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Chỉ cho phép nếu bạn tin tưởng chất lượng TM cá»§a bạn. Theo mặc định, tất cả " "các từ khá»›p từ TM được đánh dấu là cần làm việc và nên được xem lại." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Bản dịch tá»± động tìm kiếm kết hợp chính xác hoặc làm má» cho các chuá»—i chưa " "dịch trong bá»™ nhá»› dịch và Ä‘iá»n vào bản dịch cá»§a há»." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Äang há»§y…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Kéo các thư mục hoặc tập tin ở đây" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Kéo các thư mục hoặc tập tin ở đây" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Thêm Thư Mục…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Thêm thư mục…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Thêm Tệp Tin…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Thêm tệp tin…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Thêm ký tá»± đại diện…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Thêm ký tá»± đại diện…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Xem trong Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Hiển thị trong Explorer" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Hiển thị trong Thư mục" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "ÄÆ°á»ng dẫn" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "ÄÆ°á»ng dẫn loại trừ" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Cài đặt giải nén nâng cao" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Giải nén ghi chú cho ngưá»i dịch từ:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Bình luận bắt đầu bằng:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Tất cả bình luận" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Bổ sung cá» xgettext :" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Từ khoá bổ xung" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Tên cá»§a dá»± án cá»§a bản dịch" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Tên nhóm và địa chỉ email hoặc URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "ví dụ: nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (nên dùng)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Vui lòng lưu tập tin này trước. Phần này không được chỉnh sá»­a cho đến khi " "tập tin được lưu lại." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Không phải tất cả các hình thức số nhiá»u được dịch." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Chữ hoa/chữ thưá»ng không nhất quán" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Bản dịch nên bắt đầu như là má»™t câu." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Bản dịch nên bắt đầu vá»›i má»™t ký tá»± chữ thưá»ng." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Khoảng trắng không nhất quán" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Bản dịch không bắt đầu vá»›i má»™t dấu cách." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Bản dịch bắt đầu vá»›i má»™t dấu cách, nhưng văn bản nguồn không có." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Bản dịch Ä‘ang thiếu 1 dòng má»›i ở cuối." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Bản dịch kết thúc vá»›i má»™t dòng má»›i, nhưng văn bản nguồn không có." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Các bản dịch là thiếu má»™t dấu cách ở phần cuối." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Bản dịch kết thúc vá»›i má»™t dấu cách, nhưng văn bản nguồn không có." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Kiểm tra dấu câu" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Bản dịch nên kết thúc vá»›i \"%s\"." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Bản dịch không nên kết thúc vá»›i \"%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "Bản dịch kết thúc bằng \"%s\", nhưng văn bản nguồn kết thúc bằng \"%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Xóa menu" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Xóa menu" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Chú thích:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Nâng cấp" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Xóa" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Xóa bình luận" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Chỉnh sá»­a dá»± án" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Tên dá»± án:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Duyệt" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Thêm thư mục vào danh sách" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Äồng ý" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Chính" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Má»›i…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Tạo má»›i từ tệp tin &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Tạo Má»›i Từ Tệp Tin &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Mở…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Mở gần đây" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Mở tập tin gần đây" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Mở dịch đám mây…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Mở dịch đám mây…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Cá»­a sổ khởi động" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Cá»­a sổ khởi động" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Quản lý các catalog" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Quản lý các catalog" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "Äó&ng" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Lưu" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Lưu &như…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Lưu &Như…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Biên dịch sang MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Kiểm tra cập nhật…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Cài đặt…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Cá nhân hóa" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "Thoá&t" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Thoát" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Sao chép từ số ít" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Sao chép từ số ít" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Bản dịch cần làm &việc" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Bản Dịch Cần Làm &Việc" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Sá»­a &chú thích" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Sá»­a &chú thích" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Äá» xuất" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Tìm…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Thay thế…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Tìm tiếp" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Tìm lùi" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Tìm và Thay thế…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Tìm tiếp" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Tìm lùi" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Hiển thị &ID chuá»—i" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Hiển thị &ID chuá»—i" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Hiển thị cảnh báo" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Hiển thị cảnh báo" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Sắp xếp theo thứ tá»± &tập tin" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Sắp xếp theo thứ tá»± &Tập tin" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Sắp xếp theo &chuá»—i nguồn" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Sắp xếp theo &chuá»—i nguồn" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Sắp xếp theo chuá»—i &dịch" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Sắp xếp theo chuá»—i &dịch" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "Nhóm theo n&gữ cảnh" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "Nhóm Theo N&gữ Cảnh" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Mục có lá»—i đầu tiên" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Mục Có Lá»—i Äầu Tiên" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Mục &chưa dịch đầu tiên" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Mục &chưa dịch đầu tiên" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Hiện thanh công cụ" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Hiển thanh trạng thái" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Bản dịch" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Cập nhật từ mã nguồn" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Cập nhật từ mã nguồn" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Äồng bá»™ vá»›i Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Dịch &trước…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Thẩm tra bản dịch" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Thẩm tra bản dịch" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Thanh lá»c các chuá»—i đã xóa" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Thanh lá»c các chuá»—i đã xóa" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Thuá»™c tính…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "Nhả&y đến" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Thá»±c hiện và làm tiếp" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Thá»±c hiện và làm tiếp" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Chỉnh sá»­a trước đó" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Chỉnh sá»­a trước đó" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Bản dịch &Trước" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Bản Dịch &Trước" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Bản dịch &kế tiếp" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Bản Dịch &Kế Tiếp" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Câu cần dịch liá»n t&rước" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Câu cần dịch liá»n t&rước" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Câu chưa dịch &tiếp theo" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Câu chưa dịch &tiếp theo" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Dạng số nhiá»u trước" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Dạng số nhiá»u trước" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Dạng số tiếp theo" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Dạng số tiếp theo" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Trợ giúp &trá»±c tuyến" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Trợ Giúp &Trá»±c tuyến" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Sổ tay hướng dẫn sá»­ dụng &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Sổ tay hướng dẫn sá»­ dụng &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Giá»›i thiệu vá» Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Giá»›i thiệu" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Thiết lập Extractor" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Danh sách Ä‘uôi tập tin ngăn cách bởi dấu chấm phẩy (ví dụ *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Lệnh gá»i:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Lệnh để giải nén các bản dịch:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Äây là lệnh được dùng để khởi chạy Trình trích xuất.\n" "%o được khai triển thành tên cá»§a tập tin đầu ra, %K thành danh sách\n" "các từ khóa, %F thành danh sách tập tin đầu vào,\n" "%C thành cá» bá»™ mã ký tá»± (xem bên dưới)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Má»™t mục tin trong danh sách các từ khóa:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Cái này sẽ gắn vá»›i dòng lệnh má»™t lần\n" "cho má»—i từ khóa. %k được triển khai thành từ khóa." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Má»™t mục tin trong danh sách các tập tin nguồn vào:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Cái này sẽ gắn vá»›i dòng lệnh má»™t lần vá»›i má»—i\n" "tập tin đầu vào. %f được triển khai thành tên tập tin." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Bảng mã dữ liệu nguồn:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Cái này sẽ gắn vá»›i dòng lệnh chỉ khi bá»™ mã ký tá»±\n" "nguồn được đưa ra. %c được triển khai thành giá trị bá»™ ký tá»±." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Thuá»™c tính dịch" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Tên và phiên bản cá»§a dá»± án:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Nhóm ngôn ngữ:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Hình thức số nhiá»u:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Sá»­ dụng quy tắc mặc định cho ngôn ngữ này" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Dùng biểu thức tá»± chá»n" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Tìm hiểu dạng thức số nhiá»u" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Bảng mã ký tá»±:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Cài Äặt Giải Nén Nâng Cao…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Cài đặt giải nén nâng cao…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Thuá»™c tính bản dịch" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "ÄÆ°á»ng dẫn nguồn" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "ÄÆ°á»ng dẫn mã nguồn" #: src/resources/properties.xrc:164 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:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "ÄÆ°á»ng dẫn cÆ¡ sở:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Nguồn từ khóa" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Từ khóa dùng cho mã nguồn" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Sá»­ dụng những từ khóa (tên hàm) để nó có thể nhận ra các chuá»—i có thể dịch\n" "trong tập tin mã nguồn:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "CÅ©ng có thể sá»­ dụng từ khóa mặc định cho các ngôn ngữ được há»— trợ" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Há»c thêm vá» các từ khóa cá»§a GNU gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Mở tập tin" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Lưu tập tin" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Thẩm tra" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Tìm kiếm các lá»—i trong bản dịch" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Cập nhật từ mã" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Cập nhật từ mã" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Cập nhật từ mã nguồn" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Thanh tiện ích" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Hiện hoặc ẩn thanh công cụ" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Văn bản nguồn trước đó" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Các nguồn văn bản cÅ© (trước khi nó thay đổi trong quá trình cập nhật) mà bản " "dịch hiện thá»i không chính xác tương ứng." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Ghi chú dành cho ngưá»i dịch" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Bình luận" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Thêm bình luận" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Thêm Bình Luận" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Xóa từ bá»™ nhá»› dịch thuật" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Xóa từ bá»™ nhá»› dịch thuật" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Các gợi ý dịch" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Không tìm thấy từ khá»›p" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Không tìm thấy các từ khá»›p" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Chuá»—i này được tìm thấy trong bá»™ nhá»› bản dịch cá»§a Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Không thể thi hành chương trình: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Tập tin TMX bị sai dạng." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "CÆ¡ sở dữ liệu bá»™ nhá»› dịch thuật bị há»ng: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Lá»—i bá»™ nhá»› dịch thuật: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Dùng ngôn ngữ mặc định)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Lá»±a chá»n ngôn ngữ" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Chá»n ngôn ngữ ưa thích" #: src/uilang.cpp:263 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." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Không thể tạo thư mục tạm." #: src/welcomescreen.cpp:139 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." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "Cách đơn giản nhất để Ä‘iá»n bản dịch vào tệp này là cập nhật nó từ POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Cập nhật từ tệp tin POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Lấy các chuá»—i có thể dịch được từ má»™t mẫu POT sẵn có." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Bạn đồng thá»i có thể rút trích các chuá»—i có thể dịch được trá»±c tiếp từ mã " "nguồn:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Trích từ mã nguồn" #: src/welcomescreen.cpp:171 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'." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Phiên bản %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Tạo má»›i" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Tạo bản dịch má»›i từ mẫu POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Duyệt tệp tin" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Mở và chỉnh sá»­a các tập tin dịch." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Cá»™ng tác trá»±c tuyến vá»›i những ngưá»i khác." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Tập tin gần đây" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Äồng bá»™" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Äồng bá»™ bản dịch vá»›i Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Giá»›i thiệu vá» %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Cấu hình %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Giá»›i thiệu vá» %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Dịch vụ" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Ẩn %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Ẩn Những Thứ Khác" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Hiển Thị Tất Cả" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Thoát %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Cá nhân hóa…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Cá nhân hóa..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Cá nhân hóa..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Ãp dụng" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Ãp dụng" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Quay lại" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Quay lại" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Há»§y bá»" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Dá»n dẹp" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Dá»n dẹp" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Sao chép" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Cắ&t" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Cắt" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Biên tập" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Thoát" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Trợ giúp" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Má»›i" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Má»›i" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Không" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Không" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Äồng ý" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Mở…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Mở..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Mở..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Dán" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Dán" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Tùy chá»n" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Làm lại" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Làm má»›i" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Lưu như" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Lưu như" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Chá»n &Tất Cả" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Chá»n Tất cả" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Hoàn tác" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Vâng" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Vâng" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Lên" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Xuống" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Trái" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Phải" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/ga.mo0000644000175100001660000020016315011674363011047 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-ÏO’0’\A’Bž’èá’=Ê“c”cl”ДÖÙ•°– È—Ô— 䗤𗠕˜¢˜´˜Ř ˘Õ˜Û˜ á˜í˜õ˜™5™<™ D™P™i™‚™Š™ª™Ê™Ó™Ø™ à™î™ š*š0š4šFš Xš cš nš yš‡š˜š¶š Õš!ãš!›'› .› 9›D›T›c›€››¯›Á› Л#Ú›#þ›!"œ!Dœfœ…œ¤œ¬œ,±œÞœûœ  ( 3@G OYr‡Ÿ´Éâžž-žBžWžmž‡žž¦ž¼žÕžðžŸTŸ9hŸ¢Ÿ³ŸÓŸòŸ÷Ÿ E# Mi $· @Ü ¡"¡y2¡¬¡JÆ¡I¢[¢ z¢„¢Þ–¢u£~£-‘£¿£BߣB"¤ e¤p¤Ф¤¶¤Ö¤ê¤ ¥)¥A¥ W¥x¥Ž¥£¥¨¥»¥Ò¥å¥ý¥¦ ¦¦$)¦N¦%e¦‹¦š¦ ª¦˦Þ¦!ï¦E§W§ˆ`§ é§ô§ ¨ ¨5¨$L¨=q¨I¯¨(ù¨ "©0©/L©'|©¤©Äµ©zªªª¹ªت)Þª«%«5«%K«q«†«Ÿ«J´«ÿ«¬3+¬ˆ_¬Qè¬R:­ ­ ›­©­L¾­ ®2 ®<S®%®%¶®Ü®ã® ü®¯!&¯H¯ e¯†¯¢¯ ¾¯˯ Ô¯á¯zö¯/q°/¡°ƒÑ°"U±%x±*ž± ɱ ӱޱ籲²2²F²^²|²G”²!ܲþ².³AH³ïгz´ ‘´/Ÿ´1Ï´Bµ%Dµ;jµ¦µ­µ͵"çµn ¶y¶¶—¶¬¶ƶã¶÷¶·)·>·Q·d·z·· ¯·¹· Ó· ß· ë·ø·¸! ¸B¸&`¸ ‡¸¼’¸¡O¹¨ñ¹ šº"¤ºǺ)庻)-»W»3v»#ª»λÔ»&ó»¼4¼ M¼W¼k¼ r¼ |¼ˆ¼ ¤¼¯¼.ļ(ó¼½ 6½D½U½&^½…½#£½ǽؽó½#¾5¾?;¾{¾<‹¾Ⱦ˜Ú¾=s¿±¿ À¿,οû¿À *À8À TÀ7bÀšÀ& À&ÇÀîÀÁ"Á<ÁCÂGÂgÂv–¥ÂÂÂ×Âì ñÂGþÂUFà œÃ1©Ã<ÛÃÄ +Ä&LÄsÄ ‘ÄžÄÇ¢Ä'jÅ!’Å´Å6ÏÅÆ!%Æ GÆUÆlÆƒÆžÆ µÆ ¿ÆÉÆÒÆ%ׯ%ýÆ#Ç=Ç—[Ç óÇýÇÈMÈ"jÈ?ÈÍÈwéÈiaÉËÉ"ÑÉ?ôÉ4ÊFÊMÊFhʯÊî¿ËH®Ì5÷Ì-ÍEÍYÍ“iÍ2ýÍ0ΈPΓÙÎmÏ ïÏüÏ ÐÐ-7ÐeÐzÐÐ¥ÐÀÐ ÛÐüÐ Ñ Ñ)ÑCÑJÑgÑNmÑ¼Ñ ÐÑ ÚÑäÑûÑ ÒÒ(#Ò1LÒ~ÒÒ4¢Ò ×ÒáÒñÒÓ Ó0)Ó ZÓ+gÓ‚“ÓÔ+Ô:ÔIÔ[ÔmÔ…Ô Ô«Ô¼ÔÙÔDòÔ7ÕMÕ]Õ)lÕ–Õ§Õ1ÇÕ#ùÕÖ8ÖIÖ ZÖ dÖqÖ!ŒÖ®Ö#ËÖïÖ×"×9×P×&jב׬×#É×í× ØØ !Ø/Ø?ØTØtØ!ŽØ °Ø¾ØÄØÞØïØÿØÙ3Ù"NÙqÙÙ"«Ù"ÎÙtñÙ fÚ‡Ú¢Ú³ÚÊÚâÚúÚÛ'Û<Û=BÛ€Û—Û«Û¼ÛØÛòÛ Ü3)Ü]ÜDsÜ ¸ÜÃÜ•ËÜBaݘ¤Ý =ÞIÞ*aތޛÞ'ºÞ5âÞß ß8'ß+`ߌ߸›ßTàNrà0ÁàÇòàʺáC…â/ÉâVùâjPãD»ãä+ä1Cä6uäg¬äMå+båJŽåFÙåW æ4xæ4­æºâæ*è:Èè=é1Aé4séP¨é—ùé-‘ê[¿êBël^ë½Ëë_‰ìzéìddí—Éí©aî< ïƒHïvÌïvCðºð Âð%Ïðõñò -ò ;òIò`ò{òi—òóDô*`ô‹ô¦ôÂô–ØôƒoõóõŽö—ö ›ö©ö3²ö!æö ÷÷1÷D÷S÷c÷z÷(Œ÷-µ÷ã÷ø#ø=øOø iøŠø  ø®øÂøáø'þø-&ù)Tù!~ù ù!»ù,Ýù/ úk:ú¦ú ÅúÏú ìúöúû û;ûDû+[û‡ûžû§û3¯û ãûðûüü9üP=üKŽü`Úü;;ýwý<~ýg»ý#þ)þ2þ,Lþ!yþ ›þ&¥þ-Ìþúþÿÿ!ÿ0ÿ6ÿ?ÿHÿ Oÿ]ÿaÿfÿ lÿ yÿ„ÿ™ÿ©ÿ ²ÿ¾ÿ/Îÿþÿ'7@!Q|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-05-16 10:16 Last-Translator: Language-Team: Irish Language: ga_IE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: ga-IE X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (mionathraithe) (gan sábháil)%d teagmhas cód%d eachtraí cóid%d eachtraí cóid%d eachtraí cóid%d eachtraí cóid%d iontráil%d iontráil%d iontráil%d n-iontráil%d iontráilRinneadh réamhaistriúchán ar %d teaghrán.Rinneadh réamhaistriúchán ar %d theaghrán.Rinneadh réamhaistriúchán ar %d theaghrán.Rinneadh réamhaistriúchán ar %d dteaghrán.Rinneadh réamhaistriúchán ar %d teaghrán.%d earráid%d earráid%d earráid%d n-earráid%d earráidTharla %d earráid.Tharla %d earráid.Tharla %d earráid.Tharla %d earráid.Tharla %d earráid.Tharla %d earráid:Tharla %d earráid:Tharla %d earráid:Tharla %d earráid:Tharla %d earráid:Braitheadh ​​%d fadhb leis na teaghráin foinse.Braitheadh ​​%d fadhb leis na teaghráin foinse.Braitheadh ​​%d fadhb leis na teaghráin foinse.Braitheadh ​​%d fadhb leis na teaghráin foinse.Braitheadh ​​%d fadhb leis na teaghráin foinse.Aimsíodh %d fhadhb leis an aistriúchán.Aimsíodh %d fhadhb leis an aistriúchán.Aimsíodh %d fhadhb leis an aistriúchán.Aimsíodh %d bhfadhb leis an aistriúchán.Aimsíodh %d fadhb leis an aistriúchán.Níor luchtaíodh %i líne i gcomhad '%s' mar is ceart.Níor luchtaíodh %i líne i gcomhad '%s' mar is ceart.Níor luchtaíodh %i líne i gcomhad '%s' mar is ceart.Níor luchtaíodh %i líne i gcomhad '%s' mar is ceart.Níor luchtaíodh %i líne i gcomhad '%s' mar is ceart.Formáid %sSainroghanna %sFormáid %sIompórtáladh %s aistriúchán.Iompórtáladh %s aistriúchán.Iompórtáladh %s aistriúchán.Iompórtáladh %s aistriúchán.Iompórtáladh %s aistriúchán.&Maidir Leis&Maidir le Poedit&Cuir i bhFeidhm&Siar&Cealaigh&Glan&Dún&Cóipeáil&Scrios&Críochnú agus dul ar aghaidh&Críochnú agus dul ar aghaidh&Eagar&Comhad&Aimsigh…Cáipéisí gettext &GNUCáipéisí gettext &GNU&Téigh&Grúpáil de réir Comhthéacs&Grúpáil de réir comhthéacs&Cabhair&Nua&Nua…&Ar Aghaidh >An &Chéad Aistriúchán Eile&An chéad aistriúchán eile&Níl&OKCúnamh &Ar LíneCúnamh &ar líne&Oscail...&Oscail…&Greamaigh&Sainroghanna&Sainroghanna…An tAistriúchán &Roimhe SeoAn t-aistriúchán &roimhe seo&Airíonna…&Glan na hAistriúcháin Scriosta&Glan na haistriúcháin scriostaSc&oir&Athdhéan&Ionadaigh&Cuir i dtaisce&Sábháil mar&Taispeáin Teagmhais Chóid&Taispeáin teagmhais chóid&Tosaigh fuinneog&Tosaigh fuinneog&Aistriúchán&CealaighIontrálacha &gan aistriú ar dtúsIontrálacha &gan aistriú ar dtúsN&uashonraigh ón Chód FoinseachN&uashonraigh ón chód foinseach&Bailíochtaigh Aistriúcháin&Bailíochtaigh aistriúcháin&Amharc&Tá(Bain feidhm as an béarla réamhshocraithe)(níl mé logáilte isteach)(Windows 8 nó níos déanaí)< &Roimhe SeoMaidir le %sCuntasCuntaisCuir leisCuir nóta tráchta leisCuir Comhaid Leis…Cuir Fillteáin Leis…Cuir Tionscadal leisCuir Saoróg leis…Cuir nóta tráchta leisCuir comhadlann leis an réimCuir comhaid leis…Cuir fillteáin leis…Cuir tionscadal leisCuir saoróg leis…Lorgfhocail sa bhreisBratacha breise xgettext:CastaArdsocruithe Bailithe…Ardsocruithe bailitheArdsocruithe bailithe…Gach Comhad AistriúcháinGach nóta tráchtaGach teaghránBain úsáid as lorgfhocail réamhshocraithe le haghaidh teangacha a dtacaítear leoAthruigh an sprioc i gcónaí chuig réimse inchur téacsTharla earráid.Mír i réim na comhaid inchur:Mír i réim na treoirfhocail:CumaCuir i bhFeidhmMeaitseálacha garbha ó TMAn bhfuil tú cinnte gur mhaith leat an bailitheoir "%s" a scriosadh?An bhfuil tú cinnte gur mhaith leat an chuimhne aistriúcháin a athshocrú?Lorg nuashonruithe go huathoibríochTiomsaigh mar chomhad MO go huathoibríoch agus é á shábháilSiarCosán bunaidh:Gheobhaidh tú na gnéithe agus na feabhsúcháin is déanaí sa leagan béite, ach seans nach mbeidh sé chomh cobhsaí.Tabhair Uile Chun TosaighComhad PO briste: baineadh úsáid as leagan iolra msgstr gan msgid_pluralComhad PO briste: baineadh úsáid as leagan uatha msgstr le msgid_pluralMarcáil bhriste sa teaghrán.SiortaighSiortaigh comhaidDe réir réamhshocraithe, cuirtear torthaí míchruinne san áireamh freisin, ach marcáiltear iad mar thorthaí a bhfuil gá le hobair orthu. Seiceáil an rogha seo chun meaitseálacha foirfe amháin a chur san áireamh.Cealaighà chur i gceal…Ní féidir comhadlann shealadach a chruthú.Ní féidir an clár a rith: %sNí féidir réamh-aistriúchán a dhéanamh ó theanga anaithnid.Ní féidir réamh-aistriúchán a dhéanamh gan an téacs foinse.Ceannlitir&Bainisteoir na gCatalóg&Bainisteoir clárBainisteoir na gCatalógAthraigh teanga an chomhéadainFoireann litreacha:Seiceáil an Cháipéis AnoisSeiceáil Gramadach agus LitriúSeiceáil Litrithe BheoLorg Nuashonruithe…Lorg botúin sna haistriúcháinLorg nuashonruithe…Seiceáil an litriúGlanGlan an roghchlárGlan an tAistriúchánGlan an roghchlárGlan an t-aistriúchánDúnScamallTarluithe CódTarluithe cóidComhoibrigh le daoine eile ar líne.Foinsí á mbailiú…Ordú chun aistriúcháin a bhailiú:Nóta tráchtaNóta tráchta:Réimír roimh nótaí tráchta:Tiomsaigh go MO…Tiomsaigh mar…Comhaid Aistriúcháin TiomsaitheCumraigh an próiseas bailithe teaghrán ó bhunchód sna hAiríonna.DearbhúCeangail Poedit le hardáin logánaithe scamall a dtacaítear leo chun aistriúcháin a bhainistítear orthu a shioncrónú go gan uaim.CóipeáilCóipeáil ón UathaCóipeáil ón FhoinseCóipeáil ón uathaCóipeáil ón fhoinseSeiceáil Litrithe go hUathoibríochNíorbh fhéidir sonraí tionscadail Localazy a íoslódáil.Níorbh fhéidir comhad a lódáil, is dóigh go bhfuil sé damáistithe.Níorbh fhéidir comhad %s a shábháil.Cruthaigh nuaCruthaigh aistriúchán nuaCruthaigh aistriúchán nua ó theimpléad POT.Cruthaigh tionscadal aistriúcháin nuaEarráid CrowdinIs ardán bainistíochta aistriúcháin ar líne agus uirlis aistriúcháin chomhoibríoch é Crowdin. Úsáidimid Crowdin féin chun Poedit a aistriú go go leor teangacha, agus is breá linn é.Gea&rrBailitheoirí Saincheaptha:Bailitheoirí saincheaptha:Saincheap an Barra Uirlisí…GearrMéid an bhunachair sonraí ar an diosca:ScriosScrios ón gCuimhne Aistriúcháin ÉScrios an bailitheoirScrios ón gcuimhne aistriúcháin éScrios an tionscadalScrios an nóta tráchtaScrios an tionscadalMá scriosann tú an tionscadal, ní scriosfar aon chomhad aistriúcháin.Ag cinneadh difríochtaí…Comhadlannaí:An bhfuil fonn ort tionscadal “%s†a scriosadh?Ar mhaith leat an comhad a athlódáil ón diosca? Caillfear d’eagarthóireacht neamhshábháilte i Poedit má dhéanann tú amhlaidh.Ar mhaith leat gach aistriúchán atá comhionann leis an téacs foinse a bhaint?An bhfuil fonn ort na haistriúcháin go léir nach bhfuil in úsáid a scriosadh?Ná sábháilNá SábháilNá Taispeáin ArísNá marcáil go bhfuil tuilleadh oibre de dhíth más meaitseáil chruinn éNá taispeáin arísNa haistriúcháin is déanaí á n-íosluchtú…Ní féidir aistriúcháin a íosluchtú don tionscadal seo.Tarraing Fillteáin nó Comhaid AnseoTarraing fillteáin nó comhaid anseoS&coirE&aspórtáil go HTML…Déan eagarCuir &Nóta Tráchta in EagarDéan eagar ar an &nóta tráchtaCuir Nóta Tráchta in EagarDéan eagar ar an nóta tráchtaCuir an tionscadal in eagarCuir an tionscadal in eagarCur in EagarEagar…Ríomhphost:Mód LánscáileáinTá líon difriúil foirmeacha iolra ag iontrálacha sa chomhad seo ná mar a deir ceanntásc Foirmeacha Iolra an chomhaidIontrálacha a bhfuil earráidí iontu ar dtúsIontrálacha a bhfuil earráidí iontu ar dtúsMarcáladh earráidí le cló dearg sa liosta. Gheobhaidh tú mionsonraí na hearráide nuair a roghnóidh tú iontráil sa liosta.Earráid agus an comhad á oscailtEarráid agus an comhad á shábháilEarráid agus comhad XLIFF á lódáil: %sEarráid EarráidíGach RudMeaitseálacha beachta ó TMCosáin eisiataBain Amach Chuig an TMX é…Easpórtáil mar…Easpórtáil go HTML…Bain amach chuig an TMX é…Ag easpórtáil go HTMLNíorbh fhéidir an chuimhne aistriúcháin a easpórtáil go “%sâ€.Aistriúcháin á mbaint amach…Faigh teaghráin ón chódBailigh nótaí le haghaidh aistritheoirí ó:Faigh téacs ó comhaid fhoinseacha sna comhadlanna seo a leanas:Ag baint teaghráin inaistrithe as comhad %s…Ag baint teaghráin inaistrithe as %s comhad…Ag baint teaghráin inaistrithe as %s comhad…Ag baint teaghráin inaistrithe as %s comhad…Ag baint teaghráin inaistrithe as %s comhad…Socrú an bhailitheoraBailitheoiríTheip ar chumarsáid leis an bpróiseas Poedit.Theip ar theaghráin a bhaint as an gcód foinse.Níorbh fhéidir an comhad le haistriúcháin bailithe a lódáil.Theip ar cláir gettext a chumascú. Níorbh fhéidir an chuimhne aistriúchán a nuashonrú: %sComhadNí féidir an comhad a oscailtNíl comhad “%s†ann.Ní comhad aistriúcháin é "%s".Is comhad inléite-amháin é “%s†agus ní féidir é a chur i dtaisce. Cuir i dtaisce é faoi ainm eile.AimsighAn chéad toradh eileAn toradh roimhe seoAimsigh agus Ionadaigh…Aimsigh sna nótaí tráchtaAimsigh sna foinsíCuardaigh in aistriúcháinAn chéad toradh eileAn toradh roimhe seoAthraigh an TeangaAthraigh an teangaDeisigh an CeanntáscDeisigh an ceanntáscComhaid Aistriúcháin FlutterLeagan %iFoirm %i (neamhúsáidte)GNU gettextGinearáltaComhaid HTMLCabhairCuir an Barra Taoibh i bhfolachCuir an Barra Stádais i bhfolachCuir an fógra seo i bhfolachConas a oibríonn sioncrónú scamall?AitheantasMá leanann tú ar aghaidh leis seo, déanfar léirscriosadh buan ar gach aistriúchán atá marcáilte "scriosta". Beidh sé ort iad a aistriú arís má chuirtear ar ais iad amach anseo.Mura bhfuil teacht agat ar do chuid comhad a thuilleadh, is féidir leat cead a thabhairt in System Preferences > Security & Privacy > Privacy > Files & Folders.Má dhiúltaigh tú rochtain ar do chuid comhad roimhe seo, is féidir leat é sin a cheadú i Socruithe Córais > Príobháideacht & Slándáil > Comhaid & Fillteáin.NeamhairdNá bac le cás uachtair/íochtairTabhair Isteach Ó TMX Iad…Tabhair Isteach Comhaid Aistriúcháin…Tabhair isteach ó TMX iad…Tabhair isteach comhaid aistriúcháin…Ag iompórtáil ó “%sâ€â€¦Theip ar an gcuimhne aistriúcháin a iompórtáil.Aistriúcháin á n-iompórtáil…I: %sLeaganacha béite san áireamhCás uachtair/íochtair neamhréireachSpás bán neamhréireachEolas faoin aistritheoirSuiteáilComhad neamhbhailíGairm:EisiúintEisiúintíComhaid Aistriúcháin JSONNá ScriosAinm nó cód teangaIs ionann an bhunteanga agus an sprioctheanga.Níl teanga an aistriúcháin socraithe.Teanga an aistriúcháin:Rogha béarlaFoireann teanga:Béarla:Mionathraithe an uair deirineadh ar anMaidir le lorgfhocail gettextTuilleadh eolais maidir le hiolraíTuilleadh eolaisFoghlaim tuilleadh faoi %sTuilleadh eolais faoi CrowdinFoghlaim tuilleadh faoi GNU gettextLíneLíne %d i gcomhad '%s' truaillithe (ní sonraí bailí %s é).Deireadh líne:Réim breiseáin scartha le leathstadanna (m.sh. *.cpp;*.h):Luchtaigh BéarlaIs ardán logánaithe uathoibrithe go mór é Locazy a ligeann d’aon duine a gcuid táirgí agus ábhair a aistriú go teangacha éagsúla go héasca.Ní féidir comhaid MO a chur in eagar go díreach in Poedit.Cás ÃochtairCás UachtairDéan aistriúchán nua ón gcomhad POT seo.Ceanntásc míchumtha: '%s'Bainistigh cuntaisBainistigh…Difríochtaí á gcumasc…ÃoslaghdaighAinm an tionscadail a mbaineann an t-aistriúchán leisAinm:An &chéad cheann eile gan chríochnúAn &chéad cheann eile gan chríochnúTuilleadh oibre de dhíthTuilleadh oibre de dhíthEarráid líonra: %s (%d)Ná riamh lig don réim teaghráin bheith mar sprioc. Má tá sé chumasaithe, caithfear feidhm a bhaint as na saighdeanna Ctrl le haghaidh an méarchlár a fheidhmiú ach is féidir téacs a chlóscríobh láithreach, gan Tab a bhrúigh chun an sprioc a athrú.NuaCeann nua ó chomhad &POT/PO…Teaghráin NuaCeann nua ó chomhad &POT/PO…Teaghráin nuaTeaghráin nua le haistriú:An Chéad Iolra EileAn chéad iolra eileNílGan TorthaíNíorbh fhéidir réamhaistriúchán a dhéanamh ar theaghrán ar bith.Níl aon fhaisnéis faoi tharla an teaghrán seo sa chód foinse ar fáil sa chomhad.Gan torthaíNíor aimsíodh aon fhadhb leis an aistriúchán.Níl aon tionscadail aistriúcháin liostaithe i do chuntas.Gan eolas úsáideNíl gach foirm iolra aistrithe.Níl cead agat. Logáil isteach arís.Nótaí ar son aistritheoiríTá go maithAonNá húsáid an rogha seo mura bhfuil an-mhuinín agat as do chuimhne aistriúcháin. De réir réamhshocraithe, marcálfar go bhfuil tuilleadh oibre de dhíth ar gach aistriúchán a thagann ón TM.Ná húsáid ach meaitseálacha cruinneAistriúchán Oscailte Scamall…Oscail Comhaid Le DéanaíComhaid aistriúcháin a oscailt agus a chur in eagar.Aistriúchán scamall oscailteAistriúchán scamall oscailte…Oscail comhadOscail san EagarthóirOscail san eagarthóirOscail comhaid le déanaíOscail comhad tagarthaOscail...Oscail…RoghannaEileTeagh&rán gan chríochnú roimhe seoTeagh&rán gan chríochnú roimhe seoComhaid Aistriúcháin POTeimpléid Aistriúcháin POTNíl sna comhaid POT ach teimpléid; níl aon aistriúcháin iontu. Chun aistriúchán a dhéanamh, cruthaigh comhad nua PO, bunaithe ar an teimpléad.GreamaighPaste and Match StyleCosáin:Déanann sé seo nuashonrú ón gcód foinseach ar gach comhad sa tionscadal.Níl cead agat é seo a dhéanamh.Tá an áitchoimeádaí “%s†ar iarraidh ón aistriúchán.Ceartas áitchoinneálaitheOscail agus cuir an comhad PO in eagar ina áit sin. Nuair a shábhálfaidh tú é, nuashonrófar an comhad MO freisin.Sábháil an comhad ar dtús. Ní féidir an rannán seo a chur in eagar go dtí go sábhálfaidh tú é.IolraAistriúcháin ar leaganacha iolraTá an abairt iolra a úsáideann an comhad neamhghnách do %s.Leaganacha iolra:PoeditPoedit - Bainisteoir ClárDheisigh Poedit ábhar neamhbhailí sa chomhad "%s" go huathoibríoch.Is féidir leat Poedit iarracht a dhéanamh iontrálacha nua a líonadh ó aistriúcháin eile sa chomhad seo amháin, nó ón chuimhne aistriúcháin iomlán. Ní bheidh an TM ró-éifeachtach má tá sé beagnach folamh, ach tiocfaidh feabhas uirthi de réir a chéile.Ní féidir le Poedit an cód foinse a thaispeáint san áit a n-úsáidtear an teaghrán, mar nach bhfuil an comhad ar fáil san áit a bhfuil tagairt á déanamh di nó gur tagairt shiombalach é nach bhfuil ag tagairt do chomhad fíor.Is eagarthóir aistriúcháin é Poedit atá furasta feidhm a bhaint as.Ní raibh Poedit in ann an comhad “%s†a oscailt.Réamhais&triúchán…RéamhaistriúchánRéamhaistrithe%u teaghrán réamhaistrithe%u theaghrán réamhaistrithe%u theaghrán réamhaistrithe%u dteaghrán réamhaistrithe%u teaghrán réamhaistritheRéamhaistriúchán ón chuimhne aistriúcháin…Réamhaistriúchán ar siúl…Le réamhaistriúchán, aimsítear meaitseálacha, cruinn nó neamhchruinn, ar theaghráin gan aistriúchán sa gcuimhne aistriúcháin.Éilíonn réamh-aistriúchán go mbeadh an téacs foinse ar fáil. Ní oibríonn sé mura n-úsáidtear ach aitheantóirí gan an téacs iarbhír.Éilíonn réamh-aistriúchán go mbeadh teanga an téacs foinse ar eolas. Níorbh fhéidir le Poedit é a bhrath sa chomhad seo.SainroghannaSainroghanna...Sainroghanna…Teaghráin á n-ullmhú…Caomhnaigh an formáidiú i gcomhaid atá annAn tIolra Roimhe SeoAn t-iolra roimhe seoSeantéacs foinseachCurtha in eagar roimhe seoCurtha in eagar roimhe seoAinm agus leagan an tionscadail:Ainm an tionscadail:Tionscadal:TionscadailSeiceálacha poncaíochtaScriosGlan aistriúcháin scriostaScoirNíorbh fhéidir ábhar an chomhaid a léamh agus fuarthas an earráid seo: %sComhaid le déanaíAthdhéanAthnuaighAthluchtaigh an ComhadAthluchtaigh an comhadFágtha: %dBainBain Aistriúcháin den Fhoinse chéannaBain aistriúcháin atá cosúil leis an bhfoinseTeaghráin BainteTeaghráin bainteTeaghráin bainte (nach n-úsáidtear a thuilleadh):IonadaighIonadaigh &UileIonadaigh &uileTeaghrán le cur ina ionadIonadaigh…Ceanntásc riachtanach Plural-Forms ar iarraidh.AthshocraighAthshocraigh an cuimhneachán aistriúchánMá athshocraíonn tú an chuimhne aistriúcháin, scriosfar gach aistriúchán atá inti go buan. Ní féidir dul ar ais air seo.Taispeáin sa FinderAthbhreithniúCuir i dtaisceSábháil M&ar…Sábháil m&ar…Sábháil mar sin féinSábháil mar sin féinSábháil marSábháil mar…Cuir i dtaisce na hathruitheCuir an comhad i dtaisceNí thacaítear le sábháil in áit eile le haghaidh comhaid XCLOC.Seatanna scáileáin:Roghnaigh &UileRoghnaigh UileRoghnaigh comhaid TMX le tabhairt isteachSelect directoryRoghnaigh comhad aistriúcháinRoghnaigh comhaid aistriúcháin le hiompórtáilRoghnaigh teimpléad aistriúcháinRoghnaigh do rogha béarlaRoghnaigh TeangaRoghnaigh teangaSocruitheSocruithe…Taispeáin an Barra TaoibhTaispeáin Litriú agus GramadachTaispeáin an Barra StádaisTaispeáin Aitheantas an TeaghráinTaispeáin IonadaitheTaispeáin an Barra UirlisíTaispeáin na RabhaidhTaispeáin in ExplorerTaispeáin san fhillteánTaispeáin nó folaigh an barra taoibhTaispeáin an barra taoibhTaispeáin an barra stádaisTaispeáin aitheantas an teaghráinTaispeáin na rabhaidhBarra taoibhLogáil isteachLogáil AmachLogáil isteachSínigh isteach i %sSínigh isteach i gCuntas NéilLogáil isteach i CrowdinSínigh isteach i gcuntas scamallLogáil amachUathaCóipeáil/Greamú ClisteDaiseanna ClisteNascanna ClisteAthfhriotail ChlisteSórtáil mar atá sa &chomhadSórtáil de réir &FoinseSórtáil de réir &AistriúcháinSórtáil mar atá sa &chomhadSórtáil de réir &foinseSórtáil de réir &aistriúcháinTagairt foinse foireann litreacha:Baintear úsáid as bailitheoir chun teaghráin inaistrithe a aimsiú i mbunchód sa chaoi gur féidir iad aistriú.Níl an cód foinseach ar fáil.Cód foinseach gan aimsiúTéacs foinseachID an téacs fhoinsighTéacs foinseach — %sLorgfhocail sna FoinsíCosáin na bhFoinsíLorgfhocail sna foinsíCosáin na bhfoinsíCaintNíl an litreoir ar fáil, toisc nach bhfuil foclóir %s ann.Litriú agus GramadachTosaigh ag LabhairtStop ag LabhairtAistriúcháin stóráilte:Comhthéacs teaghrán: %sAitheantóir teaghrán: %sFad teaghrán i gcarachtairFad teaghrán i gcarachtair: aistriúchán | foinseTeaghrán le haimsiúNí thacaítear le tionscadail Crowdin atá bunaithe ar theaghráin.IonadaitheMoltaíNí féidir moltaí a fháil mura bhfuil teanga an aistriúcháin socraithe. Agus beidh fadhbanna agat le gnéithe eile freisin, mar shampla iolraí.Ãitchoinneálaí iomarcach “%s†nach bhfuil sa téacs foinse.Tacaíonn sé le gach teanga ríomhchlárúcháin a aithníonn na huirlisí GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript agus cinn eile).SiocronaighSioncronaigh le CrowdinSioncronaigh an t-aistriúchán le Crowdinà shioncronúEarráid le linn sioncronaitheNíorbh fhéidir sioncronú le Crowdin.Earráid chomhréire ar an líne Plural-Forms ("%s").TMComhaid TMXTóg teaghráin inaistrithe ó theimpléad POT atá ann.Ainm na foirne agus seoladh rphoist nó URLIonadú TéacsNíl aon teaghráin cosúil le hábhar an chomhaid seo sa gcuimhne aistriúcháin. Ní bheidh an TM éifeachtach go dtí go mbaileoidh Poedit go leor comhad a aistríonn tú de láimh.Tá an comhad TMX míchumtha.Caillfear na hathruithe a rinne an feidhmchlár eile má shábhálann tú iad.Ní féidir an comhad a thiomsú mar chomhad MO.Bhí teaghráin dhúblacha sa chomhad, rud nach gceadaítear i gcomhaid PO. Réitigh Poedit an fhadhb, ach ba chóir duit na haistriúcháin a bhfuil tuilleadh oibre de dhíth orthu a athbhreithniú.Níorbh fhéidir an comhad a shábháil i dtacar carachtair “%s†mar atá sonraithe sna socruithe aistriúcháin. Sábháladh é in UTF-8 ina ionad sin agus rinneadh an socrú a mhodhnú dá réir.Tá an comhad athraithe. Ar mhaith leat na hathruithe a shábháil?Ní aithníonn Poedit formáid an chomhaid seo.Tiomsaíodh an comhad mar chomhad MO, ach is dócha nach n-oibreoidh sé mar is ceart.Sábháladh an comhad agus tiomsaíodh mar chomhad MO é, ach is dócha nach n-oibreoidh sé mar is ceart.Sábháladh an comhad, ach ní féidir é a thiomsú mar chomhad MO.Sábháladh an comhad.Níorbh fhéidir comhad “%s†a oscailt.Níorbh fhéidir an comhad “%s†a shábháil.Tá an comhad “%s†athraithe ag feidhmchlár eile.An sean-bhuntéacs (sular athraigh sé) a fhreagraíonn an t-aistriúchán (atá míchruinn anois) dó.An bealach is fusa an chatalóg seo a líonadh ná nuashonrú ó chomhad POT:Ní thosaíonn an t-aistriúchán le spás.Tá líne nua ag deireadh an aistriúcháin cé nach bhfuil sa mbuntéacs.Tá spás ag deireadh an aistriúcháin cé nach bhfuil sa mbuntéacs.Tá “%s†ag deireadh an aistriúcháin, ach tá “%s†ag deireadh an bhuntéacs.Tá spás ar iarraidh ag deireadh an aistriúcháin.Tá spás ar iarraidh ag deireadh an aistriúcháin.Tá an t-aistriúchán réidh le húsáid, ach tá %d teaghrán gan aistriúchán fós.Tá an t-aistriúchán réidh le húsáid, ach tá %d theaghrán gan aistriúchán fós.Tá an t-aistriúchán réidh le húsáid, ach tá %d theaghrán gan aistriúchán fós.Tá an t-aistriúchán réidh le húsáid, ach tá %d dteaghrán gan aistriúchán fós.Tá an t-aistriúchán réidh le húsáid, ach tá %d teaghrán gan aistriúchán fós.Tá an t-aistriúchán réidh le húsáid.Ba chóir “%s†a bheith ag deireadh an aistriúcháin.Níor chóir “%s†a bheith ag deireadh an aistriúcháin.Ba chóir an t-aistriúchán a thosú mar abairt.Ba chóir don aistriúchán a thosú le litir bheag.Tosaíonn an t-aistriúchán le spás, ach ní thosaíonn an buntéacs le spás.Marcáladh go bhfuil tuilleadh oibre de dhíth ar na haistriúcháin toisc gurbh fhéidir nach bhfuil siad cruinn. Ba chóir duit iad a athbhreithniú.Níl aon aistriúcháin ann. Nach ait é sin.Níorbh fhéidir leagan amach deas a chur ar an gcomhad (ach sábháladh é mar sin féin).Tharla earráid agus aistriúcháin á n-uaslódáil chuig Locazy.Tharla botúin i rith luchtú an chomhaid. D'fhéadfadh sonraí bheith in easnamh nó truaillithe dá bharr.Rachaidh na socruithe seo i bhfeidhm ar fhormáidiú inmheánach comhad PO. Is féidir leat iad a athrú má tá riachtanais ar leith agat, m.sh. mar gheall ar chóras rialaithe leaganacha.Ní comhad aistriúcháin é an comhad JSON seo, agus ní féidir é a chur in eagar in Poedit.Scriosfaidh an gníomh seo aon aistriúcháin a mheaitseálann an téacs foinse go díreach. Ní féidir é seo a chealú.Tá iontrálacha le foirmeacha iolra sa chomhad seo, ach níl ceanntásc Plural-Forms cumraithe ann.Úsáideann an comhad seo aitheantóirí teaghrán in ionad téacs foinse. Is féidir le Poedit téacsanna Béarla a luchtú ón gcomhad “%s†duit.Seo é an t-ordú chun an bailitheoir a thosú. Is é %o ainm an aschomhaid, is é %K liosta lorgfhocal, %F liosta inchomhad, agus %C an tacar carachtar (féach thíos).Aimsíodh an teaghrán seo i gcuimhne aistriúcháin Poedit.Ceanglófar é seo le líne na n-orduithe amháin má tugadh tacar carachtar an chóid. Leathnaíonn %c go dtí an tacar carachtar.Ceanglófar é seo chuig líne na n-orduithe uair amháin do gach comhad inchur. Leathnaíonn %f chuig an ainm comhad.Ceanglófar é seo chuig líne na n-orduithe uair amháin do gach treoirfhocal. Leathnaíonn &k chuig an treoirfhocal.IomlánClaochluitheNí chuirtear iontrálacha inaistrithe leis de láimh sa chóras Gettext, ach baintear iad go huathoibríoch ón gcód foinse. Ar an mbealach seo, fanann siad cothrom le dáta agus cruinn. De ghnáth úsáideann aistritheoirí comhaid teimpléid PO (POTanna) a ullmhaíonn an forbróir dóibh.Aistrigh tionscadal scamallAistrithe: %d as %d (%d %%)AistriúchánSprioctheangaCuimhne AistriúcháinTuilleadh &oibre de dhíthAiríonna an AistriúcháinTá an comhad aistriúcháin cothrom le dáta cheana féin, ní dhearnadh aon athruithe ar na teaghráin.Nuashonraíodh an comhad aistriúcháin le %s athrú.Nuashonraíodh an comhad aistriúcháin le %s athruithe.Nuashonraíodh an comhad aistriúcháin le %s athruithe.Nuashonraíodh an comhad aistriúcháin le %s athruithe.Nuashonraíodh an comhad aistriúcháin le %s athruithe.Tá bunachar sonraí na cuimhne aistriúcháin truaillithe: %s (%d).Earráid chuimhne aistriúcháin: %s (%d).Tuilleadh &oibre de dhíthAiríonna an aistriúcháinAistriúcháin mholtaÉilíonn moltaí aistriúcháin go bhfuil an téacs foinse ar fáil. Ní oibreoidh siad mura n-úsáidtear ach aitheantóirí gan an téacs iarbhír.Éilíonn moltaí aistriúcháin go bhfuil teanga an téacs foinse ar eolas. Níorbh fhéidir le Poedit é a bhrath sa chomhad seo.Aistriúchán — %sNíorbh fhéidir aistriúcháin a nuashonrú ón gcód foinse, mar nach bhfuarthas aon chód san áit a shonraítear in Airíonna an chomhaid.DóUTF-8 (molta)CealaighÃbhar ar iarraidh go gan choinne sa chomhad XCLOC.Tharla earráid gan réiteach: %sUnix (molta)Earráid anaithnid Crowdin.Earráid anaithnidNeamhaistritheNuashonraigh éAchoimre NuashonraitheNuashonraigh uileNuashonraigh gach catalóg sa tionscadalNuashonraigh gach catalóg sa tionscadal seo?Nuashonraigh ó Chomhad &POT…Nuashonraigh ó chomhad &POT…Nuashonraigh ón gCód éNuashonrú ó POTNuashonraigh ón gcód éNuashonraigh ón chód foinseachNuashonraigh achoimreNuashonruitheTheip ar nuashonrúNuashonrú catalóg tionscadalAistriúcháin á nuashonrúSonraí an úsáideora á nuashonrú…Theip ar uaslódáil aistriúcháin chuig %s.Ag uaslódáil aistriúcháin chuig %s…Aistriúcháin á n-uasluchtú…Úsáid slonn saincheapthaÚsáid cló saincheaptha liosta:Úsáid cló saincheaptha i réimsí téacs:Úsáid rialacha réamhshocraithe na teanga seoÚsáid na lorgfhocail seo (ainmneacha ar fheidhmeanna) chun teacht ar theaghráin inaistrithe san fhoinse:Úsáid cuimhne aistriúcháinDeimhnighTorthaí an bhailíochtaitheLeagan %sFéach Sonraí…Féach sonraí…Ag fanacht le fíordheimhniú…Rabhadh Fáilte go dtí PoeditAgus teaghráin sa bhunteanga á nuashonrúFocail iomlán amháinFuinneogWindowsAr mhaith leat Béarla a úsáid don téacs foinse?TimfhilleadhTimfhilleadh ag:Comhaid Aistriúcháin XLIFFCatalóg Logánaithe XcodeTáNó is féidir leat teaghráin inaistrithe a bhailiú go díreach ón bhunchód:Ní féidir ach comhad amháin a chaitheamh isteach ar an fhuinneog PoEdit.Níl cead agat comhaid cód foinse a léamh ón suíomh atá sonraithe in Airíonna an chomhaid.Caithfear Poedit a atosú chun an athrú a chur i bhfeidhm.D'ainmCaillfidh tú do chuid athruithe mura sábhálfaidh tú iad.Ní úsáidfear d'ainm nó do sheoladh r-phoist ach ar an líne Last-Translator i gcomhaid GNU gettext.NáidSúmáilTuilleadh oibre de dhíthná scrios comhaid shealadacha (dífhabhtú)m.sh. nplurals=2; plural=(n > 1);earráid garbhmheaitseáil laistigh den chomhadléim go dtí an mhír ar an líne shonraithedéileáil le URI poedit://Alt+Ctrl+Saighead SíosEnterAr ChléAr DheisShift+Saighead SuasaltctrlshiftMaidir le %sFolaigh %sFolaigh na cinn eileSainroghanna...Scoir %sSeirbhísíTaispeáin Uileréamhaistriúchán ón chuimhne aistriúcháinteanga anaithnidleagan nach dtugtar tacaíocht dó (%s)rabhadh tusa@seoladh.comNí comhad POT ceart é “%sâ€.poedit-3.6.3/locales/ca.mo0000644000175100001660000015445315011674363011055 Þ•…D_l(è5 é5 õ5&6'6<;6x6J‹6gÖ6 >7H7 W7a7 h7v7}7ƒ7‹7’7™7Ÿ7§7¶7Å7Ë7Ñ7Ú7î7888*80858=8E8W8i8m8 q8 ~8‹8”88 ¤8±8Á8×8í8ü8949:9@9I9O9X9o9 †9 ”9 ¢9¯9µ9Ñ9í9::6:M:S:X:o: : ™:£:¬:´:½: Á: Í:Ú: é:õ: ;; +;8; G;S;c;w;’;›;»;Ø;ø; < <1'<'Y<<ž< ¸<Ã<7É<6=8=)X=‚= ‡=]’=ð=<>D@>$…>ª> ±>¾> Å>"Ó>ö>)? ;?F?X?j?{?Ž?—?ª?Æ?â?#÷?@0@?@ E@P@ b@m@@…@–@§@ Â@ã@ë@ô@ A A+A/FA vAƒAˆA›A±AÄAÚA-ùA1'BYB rB}B)”B¾B ÞBìBñBCC,C0CGCNCmC~CC¬C¿C;ÒC D'D^CD?¢D âD ðDýD*E;E"NE5qE§EÂEÝEãE èE öE F F F+FQNQ*^Q‰Q¤Q ´Q¾QÕQ*ÞQ RR R 1R {ar{Ô{Ù{Þ{.û{ *|K|g|‡|ž|°|Ã|Õ|è|ú| }!}1}B}T}g}€}˜}´}Ó}ë}~~3~D~]~!m~¨~ 8€ E€.Q€€€?—€×€[ê€{F ÂÌ áëô‚ ‚ ‚!‚)‚0‚ 7‚B‚Q‚`‚g‚ o‚y‚’‚«‚³‚ǂۂâ‚ç‚ ð‚ü‚ƒ&ƒ *ƒ5ƒFƒWƒ`ƒiƒrƒƒ“ƒ¨ƒ½ƒ!̃!„ „*„0„@„^„|„„ ¤„°„"¹„"Ü„ÿ„…;…S… k…w…!|… ž… ¿… Ë… ×…ã…ê…ò…ú…†"†6†J†`† u†–†©†½†цç†(‡ *‡'5‡$]‡'‚‡ª‡ɇ݇Eï‡55ˆ/kˆ)›ˆ ňψ4Öˆ@ ‰1L‰-~‰¬‰ ³‰o¿‰/ŠYFŠf Š5‹=‹D‹ X‹c‹,}‹"ª‹%͋󋌌2Œ#FŒjŒ}Œ)–Œ)ÀŒ$êŒ($8]u|Œ¡±ÆÌá0ö('Ž PŽ ZŽeŽŽ“ޤŽ4ÄŽ ùŽ 9L(f=EÍ#7J8c#œÀÒÛö"‘4‘!<‘ ^‘&h‘‘&§‘Αä‘û‘?’ Q’"]’g€’=è’ &“ 3“?“3V“Š“1¡“;Ó“$”$4”Y”_”e”y”” ”³”Ŕהߔè”þ”•‘•°•‚Ï•+R–+~–8ª–ã–ê–î–þ–—$—:—DO—&”—»—)Ó—;ý—9˜ V˜4a˜@–˜4ט= ™J™Q™k™&‰™`°™šš)š<šRšgš‚ššš¬š¿šÔšéš›!›;›D› ]›i› q›~›„›››´›.Ï›þ›ÐœªÓœ•~žž:ž Pžqž ‡ž&¨žÏžÕž*5Ÿ TŸ_Ÿ wŸƒŸžŸ­Ÿ9ß0ýŸ. H ] r { 4 )Å ï ¡!¡C?¡ƒ¡D–¡Û¡¯ï¡8Ÿ¢Ø¢ñ¢7 £1B£t£ ‰£'•£ ½£+Ç£ó£ø£¤ *¤ 6¤íB¤0¥&4¥&[¥ ‚¥¥¦¥¼¥ ¿¥'à¥\¦ e¦0†¦>·¦&ö¦2§<P§§ ¦§°§•³§-I¨ w¨ ˜¨%¥¨˨ é¨ ©©,© ?©L©T©\©d©k©„©©¶©ŒÔ©aªiª…ªVŒªãªi«Fk«²«¹«H׫ ¬5¬<¬NX¬ §¬ÉÈ­<’®-Ï®ý® ¯ ¯;&¯>b¯¡¯¥º¯ `°n°°"°.³°â°ø°±±3±H±d± v± €±б ¦± °±ѱ:Ö±²!² (²3²N² i²t² |²ˆ²›²®² Ų1Ó² ³"³Š6³Á³Ò³Ú³ß³ò³´´#´2´D´T´c´y´Œ´4ž´Ó´#ê´>µ&Mµ!tµ–µ«µ Àµ̵ݵ%õµ¶&5¶\¶u¶¶§¶¿¶Ó¶ó¶ ·&%·L· d·r·„·™·«·È·Ý·æ·¸¸5¸L¸h¸y¸¸¬¸½¸ Ô¸˜õ¸޹®¹̹ܹô¹ º'º;ºRºfºkjºÖº îº üº »%»>»#]»<»¾» λ Ü»±é»˜›¼ 4½@½([½„½+”½,À½Aí½/¾ 2¾6>¾-u¾£¾Æ¹¾+€¿=¬¿Fê¿ 1ÀÂ?Á3Â56ÂZlÂtÇÂV<Ã%“Ã'¹Ã;áÃuÄb“Ä'öÄGÅ>fÅJ¥Å4ðÅ+%ƹQÆ1 Ç'=Ç*eÇ,Ç=½ÇAûÇ‚=È'ÀÈTèÈn=ÉŠ¬ÉJ7Êc‚Ê’æÊÝyËCWÌš›Ìl6Íg£Í ÎÎ!Î 9ÎDÎ]ÎtÎÎC«Î4ïÎ$Ï?Ï[ÏvÏ‘ˆÏÐÐ0Ð/8ÐhÐ/yÐ ©Ð ·ÐÂÐ*ÔÐ2ÿÐ$2Ñ$WÑ|єѫÑÃÑàÑüÑ Ò&)Ò6PÒ#‡Ò&«Ò(ÒÒ,ûÒ5(Ót^Ó"ÓÓöÓýÓ Ô'#ÔKÔ cÔ„Ô¡ÔªÔ.²Ô"áÔ ÕÕ*ÕD.ÕAsÕtµÕ>*Ö iÖ&wÖ’žÖ1×6× =×:I×$„×"©×-Ì×ú×ØØØ%Ø,Ø5Ø;Ø@ØFØJØOØ SØ _ØkØzØ ‹Ø—Ø ŸØ­ØÇØÙØöØ#Ùµ†h[WïŽvû¡o/4»C3Žée EÒZ·=´ˆþÐoÉUu\Õ §RuvGÖj™;Q¾Ç£‡æŸM~*”xvdà;¯ƒÚK›|ãžP¶š„ô<P€‚ac›f7ÕwX£áD¬—k.ý}Ù¼1ó±ëZÓ~˜G8Ûpž.1RÜ^×Ä@¤½á>V„_rêQ~øN5Ƴœ–9ÿ†?¨Ð&û0#$!\É+|VSn%  ¨,¹3òÁx¢‹O MJB\Ø?ª}¼+-JQ¦B®´g®À²Y8]½Ô,Ì7­„¿ß™’ö¹–ä [Oj¥`_ /€"•ü[m]ƒþñTÞ(ù°˜ï â*fD9kd·µÊsÑ{Œý å¡ècÈ•PÔÏ©è"!¸‹…͇2éÅHåbI1pA c"3íO^o’šôœÚHUVêç^)ëwªBì¶=¥?2 ŸNp6ŒlKöÞzî‘Hr“geül6`N‰«sqqÃ$Ë-ÑmÎ`M߀LAÓ] »XŠbz$ݸaƒâùæðØ(w' )Ûfd%I@ús¦DlL‚7y|r×òY¿§Ì #Ò>­ºtxq;ÎFi{C:©S<¬”'yGú— ì«î+‰n*h°tLAàU÷ W)Siñ0'_CuвI…h¤íiÇ55&ÏÈ‚±j!%¾eçõÿÜ(b&X8Ã{JntkEY9T/2 ÖgÙ.aR:…“zõ=-Í>¯ÅäZyËÊÀF:Ý4ø÷óW0,K#6³ÆãÄ‘ð<FEˆ}4ÁmT º¢@ (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesCancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCode OccurrencesCode occurrencesCollecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationCopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Please open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to CrowdinSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.UntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Catalan Language: ca_ES MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: ca X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (modificat) (no desat)%d ocurrència al codi%d ocurrències al codi%d entrada%d entradesS’ha pretraduït %d entrada.S’han pretraduït %d entrades.%d error%d errorsS’ha trobat %d problema amb la traducció.S’han trobat %d problemes amb la traducció.No s’ha carregat %i línia del fitxer «%s» correctament.No s’han carregat %i línies del fitxer «%s» correctament.Format %sPreferències del %sFormat %s&Quant a&Quant al Poedit&Aplica&Enrere&Cancel·la&Neteja&Tanca&Copia&Suprimeix&Fet; següent&Fet; següent&Edita&Fitxer&Cerca…Manual del &GNU gettextManual del &GNU gettext&NavegaA&grupa pel contextA&grupa pel context&Ajuda&Nou&Nova…&Següent >Traducció &següentTraducció &següent&No&D’acord&Ajuda en línia&Ajuda en línia&Obre…&Obre…&Enganxa&Preferències&Preferències…Traducció &anteriorTraducció &anterior&Propietats…&Purga les traduccions suprimides&Purga les traduccions suprimides&Surt&Refés&Reemplaça&DesaAnomena i de&sa&Mostra ocurrències del codi&Mostra ocurrències del codiFinestra d’&iniciFinestra d’&inici&Traducció&Desfés&Primer les entrades no traduïdes&Primer les entrades no traduïdesActualitza des del codi &fontActualitza des del codi &font&Valida les traduccions&Valida les traduccions&Visualitza&Sí(Utilitza la llengua per defecte)(cal el Windows 8 o més recent)< &AnteriorQuant al %sCompteComptesAfegeixAfegeix un comentariAfegeix fitxers…Afegeix carpetes…Afegeix un projecteAfegeix un comodí…Afegeix un comentariAfegeix el directori a la llistaAfegeix fitxers…Afegeix carpetes…Afegeix un projecteAfegeix un comodí…Paraules clau addicionalsSenyaladors addicionals de l’xgettext:AvançadesParàmetres d’extracció avançats…Paràmetres d’extracció avançatsParàmetres d’extracció avançats…Tots els fitxers de traduccióTots els comentarisTotes les cadenesUtilitza també les paraules clau per defecte a les llengües admesesCanvia sempre el focus al camp d'introducció de textUn element de la llista dels fitxers d'entrada:Un element de la llista de paraules clau:AparençaAplicaEsteu segur que voleu suprimir l’extractor «%s»?Esteu segur que voleu reinicialitzar la memòria de traduccions?Comprova si hi ha actualitzacions automàticamentCompila el fitxer MO automàticament en desarEnrereCamí base:Les versions beta contenen les funcionalitats i millores més recents, però poden ser una mica menys estables.Envia tot al capdavantEl fitxer PO és malmès: la forma plural del msgstr s’ha fet servir sense msgid_pluralEl fitxer PO és malmès: la forma singular del msgstr s’ha fet servir conjuntament amb msgid_pluralEtiquetatge incorrecte en la cadena de la traducció.NavegaNavega pels fitxersCancel·laS’està cancel·lant…No s’ha pogut crear el directori temporal.No es pot executar el programa: %sNo es pot pretraduir sense text font.Majúscules inicials&Gestor de catàlegs&Gestor de catàlegsGestor de catàlegsCanvia l’idioma de la interfícieJoc de caràcters:Comprova el document araComprova la gramàtica amb l’ortografiaComprova l’ortografia mentre s’escriuComprova si hi ha actualitzacions…Comprova si hi ha errors a la traduccióComprova si hi ha actualitzacions…Comprova l’ortografiaNetejaNeteja el menúNeteja la traduccióNeteja el menúNeteja la traduccióTancaOcurrències al codiOcurrències al codiS’estan recopilant els fitxers de codi font…Ordre d’extracció de les traduccions:ComentariComentari:Comentaris prefixats per:Compila com a MO…Compila com a…Fitxers de traducció compilatsConfigureu l’extracció de codi font a Propietats.ConfirmacióCopiaCopia del singularCopia del text de partidaCopia del singularCopia del text de partidaCorregeix l’ortografia automàticamentNo s’han pogut baixar els detalls del projecte al Localazy.No s’ha pogut carregar el fitxer; és probable que estigui malmès.No s’ha pogut desar el fitxer %s.Crea’n un de nouCrea una traducció novaCrea una traducció nova a partir d’una plantilla POT.Crea un projecte de traduccions nouError del CrowdinRe&tallaExtractors personalitzats:Extractors personalitzats:Personalitza la barra d’eines…RetallaMida de la base de dades al disc:SuprimeixSuprimeix de la memòria de traduccióSuprimeix l’extractorSuprimeix de la memòria de traduccióSuprimeix el projecteSuprimeix el comentariSuprimeix el projecteSi suprimiu el projecte no es perdrà cap fitxer de traducció.Directoris:Voleu suprimir el projecte «%s»?Voleu tornar a carregar el fitxer des del disc? Els canvis sense desar del Poedit es perdran si ho feu.Voleu suprimir totes les traduccions que ja no s’utilitzen?&No ho desisNo ho desisNo tornis a mostrar-hoNo marquis les coincidències exactes com a difusesNo tornis a mostrar-hoS’estan baixant les traduccions més recents…Aquest projecte ha inhabilitat les baixades de traduccions.Deixeu anar carpetes o fitxers aquíDeixeu anar carpetes o fitxers aquí&SurtEdita&Edita el comentari&Edita el comentariEdita el comentariEdita el comentariEdita el projecteEdita el projecteEdicióEdita…Adreça electrònica:Pantalla senceraLes entrades d’aquest fitxer tenen un nombre total de formes plurals diferent del que diu la capçalera Plural-Forms del fitxerPrimer les entrades amb errorsPrimer les entrades amb errorsLes entrades amb errors s’han marcat en vermell a la llista. Els detalls de l’error es mostraran quan seleccioneu l’entrada.S’ha produït un error en obrir el fitxerS’ha produït un error en desar el fitxerS’ha produït un error en carregar el fitxer XLIFF: %sErrorsTotCamins exclososExporta com a TMX…Exporta com a…Exporta com a HTML…Exporta com a TMX…Ha fallat l’exportació de la memòria de traducció cap a «%s».S’estan exportant les traduccions…Extreu des de les fontsExtreu les notes per a traductors des de:Extreu el text dels fitxers font dels següents directoris:Paràmetres de l’extractorExtractorsHa fallat la comunicació amb el procès del Poedit.No s’ha pogut carregar el fitxer amb les traduccions extretes.No s’han pogut fusionar els catàlegs del gettext.Ha fallat l’actualització de la memòria de traducció: %sFitxerNo es pot obrir el fitxerEl fitxer «%s» no existeix.El fitxer «%s» no és de traducció.El fitxer «%s» és només de lectura i no es pot desar. Hauríeu de desar-lo amb un altre nom.TrobaCerca el següentCerca l’anteriorCerca i reemplaça…Cerca als comentarisTroba als texts de partidaTroba a les traduccionsCerca el següentCerca l’anteriorCorregeix l’idiomaCorregeix l’idiomaCorregeix la capçaleraCorregeix la capçaleraFitxers de traducció del FlutterForma %iForma %i (no utilitzada)GNU gettextGeneralFitxers HTMLAjudaAmaga la barra lateralAmaga la barra d’estatAmaga aquesta notificacióCom funciona la sincronització amb el núvol?Id.Si continueu amb la purga, totes les traduccions marcades com a suprimides s’eliminaran permanentment. Si continueu amb la supressió, les haureu de traduir de nou en cas que es tornin a afegir en un futur.Si heu denegat prèviament accès als vostres fitxers, podeu permetre-ho a les Preferències del sistema â–¸ Seguretat i privacitat â–¸ Privacitat â–¸ Carpetes i fitxers.Si anteriorment heu denegat l'accés als vostres fitxers, podeu permetre-ho a Configuració del sistema > Privadesa i seguretat > Fitxers i carpetes.IgnoraIgnora majúscules/minúsculesImporta des de TMX…Importa fitxers de traducció…Importa des de TMX…Importa fitxers de traducció…S’estan important les traduccions…A: %sInclou les versions betaInconsistència de majúscules/minúsculesEspai en blanc inconsistentInformació sobre el traductorInstal·laEl fitxer no és vàlidInvocació:Fitxers de traducció JSONMantingues-lesNom o codi de llenguaLa llengua de traducció es la mateixa que la de partida.No s’ha establert la llengua de la traducció.Llengua de la traducció:Selecció de llenguaEquip de traducció:Llengua:Darrera modificacióMés informació sobre les paraules clau del gettextInformació sobre les formes dels pluralsMés informacióMés informació quant al %sMés informació sobre el CrowdinLa línia %d del fitxer «%s» està malmesa (dades %s no vàlids).Finals de línies:Llistat d’extensions separades per punt i coma (p. ex. *.cpp,*.h):Carrega l’anglèsEl Localazy és una plataforma de regionalització altament automatitzada que permet qualsevol persona de traduir productes i continguts a diverses llengües de manera fàcil.Els fitxers MO no es poden editar directament al Poedit.Converteix a minúsculesConverteix a majúsculesFeu una traducció nova a partir d’aquest fitxer POT.El format de la capçalera és incorrecte: «%s»Gestiona els comptesGestiona…S’estan fusionant les diferències…MinimitzaNom del projecte pel qual és la traduccióNom:&Següent no finalitzada&Següent no finalitzadaCal revisarCal revisarMai permetis que el llistat de cadenes obtingui el focus. Si està habilitat, haureu d'emprar les Ctrl+fletxes per la navegació amb el teclat, però també podreu escriure immediatament sense haver de prémer Tab per a canviar el focus.NouNova a partir d’un fitxer &POT/PO…Nova a partir d’un fitxer &POT/PO…Cadenes novesForma plural següentForma plural següentNoNo s’han trobat coincidènciesNo s’ha pogut pretraduir cap entrada.Al fitxer no es proporciona cap informació de les aparicions d'aquesta cadena al codi font.No s’han trobat coincidènciesNo s’ha trobat cap problema amb la traducció.No hi ha cap projecte de traducció enumerat al vostre compte.No s'ha trobat informació sobre l'úsNo s’han traduït totes les formes dels plurals.No s’ha autoritzat l’acció. Inicieu una sessió de nou.Notes per als traductorsD’acordUnHabiliteu-la només si confieu en la qualitat de l’MT. Per defecte, totes les coincidències de l’MT es marquen com a difuses i es deuen revisar.Únicament emplena les coincidències exactesObre una traducció al núvol…Obre recentsObriu i editeu fitxers de traducció.Obre una traducció al núvolObre una traducció al núvol…Obre el fitxerObre en l’editorObre en l’editorObre recentsObre…Obre…OpcionsAltresAnte&rior no finalitzadaAnte&rior no finalitzadaFitxers de traducció POPlantilles de traducció .POTEls fitxers POT només són plantilles i no contenen cap traducció. Per a fer una traducció, creeu un fitxer PO nou basat en la plantilla.EnganxaEnganxa amb el mateix estilCaminsEfectua una actualització a partir del codi font per a tots els fitxers del projecte.S’hi ha denegat el permís.Obriu i editeu el fitxer .po corresponent en el seu lloc. Quan ho deseu, el fitxer .mo s’actualitzarà.Deseu el fitxer primer. No es pot editar aquesta secció fins llavors.PluralTraduccions de formes pluralsL’expressió de formes plurals usada pel fitxer és inusual per al %s.Formes dels plurals:PoeditPoedit. Gestor de catàlegsEl Poedit ha corregit automàticament el contingut no vàlid al fitxer «%s».El Poedit pot intentar emplenar entrades noves només des de traduccions prèvies en el fitxer o des de la vostra memòria completa de traduccions. Utilitzar l’MT no serà gaire efectiu si la memòria està pràcticament buida, però millorarà a mesura que hi afegiu traduccions noves.El Poedit no pot mostrar el codi font on es fa servir la cadena, ja sigui perquè el fitxer no està disponible al lloc referit o perquè és una referència simbòlica que no apunta a cap fitxer real.El Poedit és un editor de traduccions fàcil d’utilitzar.El Poedit no ha pogut obrir el fitxer «%s».Pre&tradueix…PretradueixPretraduïdaS’ha pretraduït %u cadenaS’han pretraduït %u cadenesS’està pretraduint a partir de la memòria de traducció…S’està pretraduint…La traducció prèvia detecta automàticament coincidències exactes o aproximades de cadenes sense traduir en la memòria de traducció i n’omple les traduccions.PreferènciesPreferències...Preferències…S’estan preparant les cadenes…Preserva la formatació dels fitxers existentsForma plural anteriorForma plural anteriorText font previEditada anteriormentEditada anteriormentNom i versió del projecte:Nom del projecte:Projecte:ProjectesComprovacions de puntuacióPurga-lesPurga les traduccions suprimidesSurtHa fallat la lectura del fitxer amb l’error següent: %sFitxers recentsRefésActualitzaTorna a carregar el fitxerTorna a carregar el fitxerResten: %dEliminaSubstitueixReemplaça-ho &totReemplaça-ho &totCadena de substitucióReemplaça…Falta la capçalera necessària «Plural-Forms».ReinicialitzaEsborra la memòria de traduccionsRestablir la memòria de traducció irrevocablement en suprimirà totes les traduccions emmagatzemades. No podeu desfer aquesta operació.Mostra al FinderRepassaDesa&Anomena i desa…&Anomena i desa…Desa igualmentDesa igualmentAnomena i desaAnomena i desa…Desa els canvisDesa el fitxerCaptures de pantalla:Selecciona-ho &totSelecciona-ho totSeleccioneu els fitxers TMX que s’han d’importarSeleccioneu la carpetaSeleccioneu el fitxer de traduccióSeleccioneu els fitxers de traducció que s’han d’importarSeleccioneu la plantilla de traduccióTrieu la vostra llengua preferidaEstableix la llenguaEstableix la llenguaParàmetresConfiguració…Mostra la barra lateralMostra l’ortografia i la gramàticaMostra la barra d’estatMostra l’&identificador de la cadenaMostra les substitucionsMostra la barra d’einesMostra els advertimentsMostra a l’ExploradorMostra a la carpetaMostra o amaga la barra lateralMostra la barra lateralMostra la barra d’estatMostra l’&identificador de la cadenaMostra els advertimentsBarra lateralInicia la sessióFinalitza la sessióInicia la sessióInicia la sessió al CrowdinFinalitza la sessióSingularCopia/enganxa intel·ligentmentGuions intel·ligentsEnllaços intel·ligentsCometes tipogràfiquesOrdena per &ordre de fitxerOrdena per &fontOrdena per &traducció&Ordena per ordre de fitxerOrdena per &fontOrdena per &traduccióJoc de caràcters del codi font:Els extractors de codi font s’utilitzen per a trobar cadenes traduïbles dins els fitxers de codi font i extreure-les de manera que es puguin traduir.El codi font no és disponible.No s’ha trobat el codi fontText de partidaId. del text de partidaText de partida — %sParaules claus de les fontsCamins de les fontsParaules clau de fontsCamins de les fontsVeuLa correcció ortogràfica está inhabilitada perquè no s’ha instal·lat el diccionari de l’idioma %s.Ortografia i gramàticaInicia la veuAtura la veuTraduccions emmagatzemades:Context de la cadena: %sIdentificador de la cadena: %sLongitud de la cadena en caràctersLlargària de la cadena en caràcters: traducció | originalCadena a trobarSubstitucionsSuggerimentsEls suggeriments no seran disponibles si no es defineix la llengua de traducció correctament. Altres funcions, com ara les formes dels plurals, també poden resultar afectades.Admet tots els llenguatges de programació que les eines del GNU gettext reconeixen (PHP, C/C++, C#, Perl, Python, Java, JavaScript, entre d’altres).SincronitzaSincronitza amb el CrowdinSincronitza la traducció amb el CrowdinSincronitzacióS’ha produït un error de sincronitzacióLa sincronització amb el Crowdin ha fallat.Hi ha un error de sintaxis a la capçalera Plural-Forms («%s»).MTFitxers TMXPren cadenes traduïbles d'una plantilla POT existent.Nom de l’equip i adreça electrònica o URLSubstitució del textL’MT no conté cap cadena similar al contingut d’aquest fitxer. Només en serà efectiva per a traduccions semiautomàtiques quan el Poedit hagi après prou dels fitxers que traduïu manualment.El fitxer TMX no és formatat correctament.Els canvis fets per l’altra aplicació es perdran si deseu.No és possible compilar el fitxer en el format MO per a utilitzar-lo.El fitxer contenia elements duplicats. Això no es permet als fitxers PO; en cas contrari el fitxer no es podria fer servir. El Poedit ha corregit el problema, però hauríeu de revisar les traduccions de qualssevol elements marcats com a difusos i corregir-les si cal.No s’ha pogut desar el fitxer en el joc de caràcters «%s» com s’especifica en la configuració de traducció. Se n’ha desat en UTF-8 i el paràmetre s’ha modificat en conseqüència.S’ha modificat el fitxer. Voleu desar els canvis?El fitxer és en un format que el Poedit no reconeix.El fitxer s’ha compilat en el format MO, però probablement no funcionarà correctament.El fitxer s’ha desat amb seguretat i compilat en el format MO, però és probable que no en funcioni correctament.El fitxer s’ha desat amb seguretat, però no es pot compilar i usar en el format MO.El fitxer s’ha desat amb seguretat.No s’ha pogut obrir el fitxer «%s».S’ha modificat el fitxer «%s» amb una altra aplicació.El text de partida antic (abans que canviés durant una actualització) al qual correspon la traducció ara inexacta.La manera més senzilla d’omplir aquest fitxer amb traduccions es actualitzar-lo des d’un POT:La traducció no comença amb un espai.La traducció acaba amb un salt de línia, però el text de partida no.La traducció acaba amb un espai, però el text de partida no.La traducció acaba amb «%s», però el text de partida acaba amb «%s».A la traducció hi falta un salt de línia al final.A la traducció hi falta un espai al final.La traducció ja és a punt per a fer-se servir, però encara no s’ha traduït %d cadena.La traducció ja és a punt per a fer-se servir, però encara no s’han traduït %d cadenes.La traducció ja és a punt i podeu utilitzar-la.La traducció ha d’acabar amb «%s».La traducció no ha d’acabar amb «%s».La traducció ha de començar com una frase.La traducció ha de començar amb un caràcter en minúscula.La traducció comença amb un espai, però el text de partida no.Les traduccions s’han marcat per a revisar, ja que poden ser inexactes. Hauríeu de revisar-les per a garantir-ne la correctesa.No hi ha traduccions. Això es inusual.S’ha produït un problema en formatar el fitxer (però s’ha desat correctament).S’han produït errors en carregar el fitxer. És possible que manquin algunes dades o que estiguin malmeses.Aquests ajusts afecten el format intern dels fitxers PO. Ajusteu-los si teniu requisits específics, per exemple, pel control de versions.Aquest fitxer JSON no és de traduccions i no es pot editar amb el Poedit.Aquest fitxer té entrades amb formes plurals, però no té la capçalera Plural-Forms configurada.Aquest fitxer usa identificadors de cadena en comptes de text de partida. El Poedit pot carregar textos en anglès des del fitxer «%s» per vós.Aquesta és l’ordre emprada per a iniciar l’extractor. %o s’expandeix al nom del fitxer de sortida, %K al llistat de paraules clau, %F al llistat de fitxers de sortida, %C al joc de caràcters (vegeu-ho més avall).S'ha trobat aquesta cadena en la memòria de traducció del Poedit.Això s’adjuntarà a la línia d’ordres només si s’ha especificat el joc de caràcters d’origen. %c s’expandeix al valor del joc de caràcters.Això s'adjuntarà a la línia d'ordres un cop per cada fitxer de sortida. %f s'expandeix al nom del fitxer.Això s'adjuntarà a la línia d'ordres un cop per cada paraula clau. %k s'expandeix a la paraula clau.TotalTransformacionsTraduït: %d/%d (%d %%)TraduccióLlengua de la traduccióMemòria de traduccióCal &revisar la traduccióPropietats de la traduccióLa base de dades de la memòria de traducció és malmesa: %s (%d).Hi ha un error a la memòria de traducció: %s (%d).Cal &revisar la traduccióPropietats de la traduccióSuggeriments de traduccióTraducció — %sLes traduccions no es podran actualitzar des del codi font perquè no s’ha trobat codi a la ubicació especificada a les propietats del fitxer.DosUTF-8 (recomanat)DesfésS’ha produït una excepció no controlada: %sUnix (recomanat)S’ha produït un error desconegut al Crowdin.No traduïdesActualitzaActualitza-ho totActualitza tots els catàlegs del projecteVoleu actualitzar tots els catàlegs del projecte?Actualitza des d’un fitxer &POT…Actualitza des d’un fitxer &POT…Actualitza des del codiActualitza des del POTActualitza des del codiActualitza des del codi fontResum de l’actualitzacióActualitzacionsL’actualització ha fallatS’estan actualitzant les traduccionsS’està actualitzant la informació de l’usuari…S’estan pujant les traduccions…Utilitza una expressió personalitzadaLletra personalitzada per a les llistes:Lletra personalitzada per als camps de text:Fes servir les regles per defecte d’aquesta llenguaUsa aquestes paraules clau (noms de funcions) per a reconèixer les cadenes traduïbles en els fitxers de codi font:Utilitza la memòria de traduccióValidaResultats de la validacióVersió %sS’està esperant l’autenticació…Benvingut/uda al PoeditEn actualitzar des del codi fontNomés les paraules senceresFinestraWindowsVoleu utilitzar anglès com a text de partida?Continua la cerca des de l’iniciAjusta a:Fitxers de traducció XLIFFSíTambé podeu extreure cadenes traduïbles directament del codi font:No podeu deixar anar més d’un fitxer a la finestra del Poedit.No teniu permís per a llegir els fitxers de codi font des de la ubicació especificada a les propietats del fitxer.Heu de reiniciar el Poedit perquè aquest canvi tingui efecte.El vostre nomEls canvis es perdran si no els deseu.El vostre nom i adreça electrònica s’utilitzen només per a establir el valor de la capçalera «Last-Translator» als fitxers de GNU gettext.ZeroEscalaCal revisarno suprimeixis els fitxers temporals (per a la depuració)p. ex., nplurals=2; plural=(n > 1);inclou-hi concordances aproximadesvés a l’element al número de línia donatgestiona un URI poedit://Alt+Ctrl+AvallRetornEsquerraDretaMaj+AmuntaltctrlmajQuant al %sAmaga el %sAmaga la restaPreferències...Surt del %sServeisMostra-ho totpretradueix des de l’MTidioma desconegutno s’admet la versió (%s)vós@exemple.cat«%s» no és un fitxer POT vàlid.poedit-3.6.3/locales/is.po0000644000175100001660000026727315011674363011115 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Icelandic\n" "Language: is_IS\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: is\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Fela þessi skilaboð" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ekki birta aftur" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ekki birta aftur" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Samantekt uppfærslu" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Samantekt uppfærslu" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Loka" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Vandamál" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Skrá" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Lína" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Vandamál" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Nýir strengir" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Nýir strengir" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Fjarlægðir strengir" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Fjarlægðir strengir" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Safna upprunaskrám…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Næ í þýðanlega strengi úr %s skrá…" msgstr[1] "Næ í þýðanlega strengi úr %s skrám…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Mistókst að hlaða inn skrá með innlesnum þýðingum." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Ã: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Upprunakóði ekki tiltækur." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Ekki var hægt að uppfæra þýðingar úr frumkóða, vegna þess að enginn kóði " "fannst á þeim stað sem tilgreindur er í eiginleikum þýðingaskrárinnar." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Aðgangi hafnað." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Þú hefur ekki réttindi til að lesagrunnkóðaskrár frá stað sem tilgreindur er " "í eiginleikum þýðingaskrárinnar." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Ef þú áður neitaðir aðgangi að skránum þínum, geturðu heimilað það í " "'Kjörstillingar kerfis > Gagnaleynd og öryggi > Skrár og möppur'." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Ef þú hefur áður bannað aðgang að skránum þínu, geturðu heimilað hann í " "'Kjörstillingar kerfis > Öryggi og gagnaleynd > Gagnaleynd > Skrár og " "möppur'." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Mistókst að ná í strengi úr grunnkóðanum." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Skrána “%s†var ekki hægt að opna." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Uppfæri þýðingar" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Ãkvarða mismun…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Samþætti mismun…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Þýðingaskrá er þegar af nýjustu útgáfu, engar breytingar voru gerðar á " "strengjum." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Þýðingaskrá var uppfærð með %s breytingu." msgstr[1] "Þýðingaskrá var uppfærð með %s breytingum." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Nýir strengir til að þýða:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Fjarlægðir strengir (ekki lengur í notkun):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "Greindi %d vandamál í upprunastrengjum." msgstr[1] "Greindi %d vandamál í upprunastrengjum." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Skoða nánar…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Skoða nánar…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Rangt formaður haus: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO þýðingaskrár" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT þýðingasniðmát" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF-þýðingaskrár" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode efnisskrá staðfærslu" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON-þýðingaskrár" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter-þýðingaskrár" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Allar þýðingaskrár" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Skráin er ekki á sniði sem Poedit þekkir." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Þessi JSON-skrá er ekki þýðingaskrár og er því ekki hægt að breyta í Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Mistókst að lesa efni skrárinnar með eftirfarandi villumeldingu: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Skráin '%s' er einungis lesanleg og er ekki hægt að vista hana.\n" "Vistaðu hana með öðru heiti." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Gat ekki vistað skrána %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Skjámyndir:" #: src/catalog_po.cpp:134 #, 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' var ekki lesin rétt inn." msgstr[1] "%i línur úr skránni '%s' voru ekki lesnar rétt inn." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Lína “%d í skránni '%s' er skemmd (ekki gild %s gögn)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "Skemmd PO-þýðingaskrá: eintöluform msgstr notað með msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Skemmd PO-þýðingaskrá: fleirtöluform msgstr notað án msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Get ekki hlaðið inn skránni, líklega er hún skemmd." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Það komu upp villur við að hlaða inn skránni. Einhver gögn gæti vantað eða " "hafa skemmst við þetta." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Það kom upp vandamál við að forma skrána rétt (en hún var samt vistuð rétt)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Ekki tókst að vista þýðingaskrá með '“%s' stafatöflu eins og tiltekið er í " "kjörstillingum.\n" "\n" "Skráin var þess vegna vistuð í UTF-8 og stillingum breytt í samræmi við það." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Villa við að vista skrá" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s\" er ógild POT skrá." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Óvænt vantar efni í XCLOC-skránni." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Að vista á aðra staði er ekki leyfilegt fyrir XCLOC-skrár." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Villa við að hlaða inn XLIFF-skrá: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "óstudd útgáfa (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Skemmd skilgreining í þýðingarstreng." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Tengdu Poedit við studd þýðingakerfi á netinu til að samstilla þýðingar " "hnökralaust við þær sem unnið er með á þessum kerfum." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Hvernig virkar samstilling við tölvuský?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Aðgangur" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(Ekki skráð/ur inn)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Opna þýðingu á tölvuskýi" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Sýsla með aðganga" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Verkefni:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Tungumál:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Skrá inn á tölvuskýsaðgang" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Skrá inn á tölvuskýsaðgang" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Engin þýðingarverkefni eru skráð á aðgangnum þínum." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Sæki nýjustu þýðingar…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Skrá inn í %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Samstilling" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Sendi þýðingar inn á %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Innsending þýðinga á %s mistókst." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Villa í samstillingu" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Bæta við" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Óþekkt Crowdin-villa." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Ekki leyfilegt, skráðu þig aftur inn." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Strengja-háð Crowdin-verkefni eru ekki studd." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Ekki er hægt að sækja þýðingar í þessu verki." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Skrá inn" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Skrá inn" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Skrá út" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Skrá út" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Fræðast meira um Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin er þýðingakerfi á netinu, sem hjálpar til við samstarf þýðenda og " "umsýslu. Við notum sjálf Crowdin til að þýða Poedit yfir á mörg tungumál og " "kunnum við mjög vel við þetta kerfi." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Bíð eftir auðkenningu…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Uppfæri upplýsingar um notanda…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Skrá inn í Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Samstilling við Crowdin mistókst." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Villa í Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Sendi inn þýðingar…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Afrita" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Vita meira" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Hjálp" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Ekki er hægt að vinna beint með MO-skrár í Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Villa við að opna skrá" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Opnaðu frekar og breyttu samsvarandi PO-skrá. Þegar þú vistar hana, verður " "MO-skráin líka uppfærð." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ekki eyða bráðabirgðaskrám (fyrir aflúsun)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "meðhöndla poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "fara á atriði á tilteknu línunúmeri" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Gat ekki átt samskipti við Poedit-ferli." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ómeðhöndlað frávik kom upp: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Veldu sniðmát þýðingar" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Ógild skrá" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Veldu þýðingaskrá" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit er auðveldur þýðingaritill." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Þú getur ekki sleppt fleiri en einni skrá í Poedit glugga." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Skráin “%s†er ekki þýðingaskrá." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Skráin '%s' finnst ekki." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Stafsetningaryfirferð er óvirk, því ekki er búið að setja upp orðasafn fyrir " "tungumálið %s." #: src/edframe.cpp:871 msgid "Install" msgstr "Setja upp" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Skránni “%s†hefur verið breytt af öðru forriti." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Endurlesa skrá" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Viltu endurlesa skrána af diski? Ef þú ert með óvistaðar breytingar í Poedit " "þá tapast þær." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Hunsa" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Endurlesa skrá" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Skránni hefur verið breytt. Viltu vista breytingarnar?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Vista breytingar" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Breytingar tapast ef þú vistar þær ekki." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Vista" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ekki vista" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ekki vista" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Breytingar sem gerðar hafa verið af hinu forritinu tapast ef þú vistar." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Hætta við" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Vista samt" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Vista samt" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Vista sem…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Vistþýða í…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Vistþýddar þýðingaskrár" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Flytja út í HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML skrár" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Útflutningur í HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Uppfærsla mistókst" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Opna viðmiðunarskrá" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Uppfæra frá &POT skrá…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Uppfæra frá &POT skrá…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d galli fannst á þýðingunni." msgstr[1] "%d gallar fundust á þýðingunni." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Niðurstöður prófunar" #: src/edframe.cpp:1842 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 "" "Færslur með villum eru auðkenndar með rauðum lit í listanum. Nánari " "upplýsingar um villurnar birtast þegar slík færsla er valin." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Skráin var sannlega vistuð." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Skráin var sannlega vistuð og vistþýdd yfir á MO-form , en mun líklega ekki " "virka rétt." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Skráin var sannlega vistuð, en ekki er hægt að vistþýða hana yfir á MO-form " "til notkunar" #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Skráin var sannlega vistþýdd yfir á MO-form , en mun líklega ekki virka rétt." #: src/edframe.cpp:1870 msgid "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." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Engin vandamál fundust í þýðingunni." #: src/edframe.cpp:1894 #, 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] "Þýðingin er tilbúin til notkunar, en %d færsla er samt óþýdd." msgstr[1] "Þýðingin er tilbúin til notkunar, en %d færslur er samt óþýddar." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Þýðingaminnið er tilbúið til notkunar." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit lagaði sjálfkrafa ógilt efni í '%s' skránni." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Skráin inniheldur tvítekin atriði sem er ekki leyfilegt í PO-skrám og sem " "myndi koma í veg fyrir að hægt sé að nota skrána. Poedit lagaði þetta, en þú " "ættir að yfirfara þau atriði sem merkt eru til athugunar og leiðrétta þau ef " "þörf krefur." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Tungumál þýðingar er ekki stillt." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Settu inn tungumál" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Tillögur eru ekki í boði ef tungumál þýðinga er ekki rétt skilgreint. Aðrir " "eiginleikar eins og fleirtöluform, gætu einnig valdið vandræðum." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Tungumál þýðingar er það sama og upprunatungumálið." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Laga tungumál" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Laga tungumál" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Þessi þýðingaskrá er með færslum sem hafa fleirtöluform, en hún er ekki með " "skilgreiningu á Plural-Forms línu skráarhaussins." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Færslur í þessari þýðingaskrá eru með annan fleirtölufjölda en þann sem " "titekinn er í Plural-Forms línu skráarhaussins" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Höfuðstrenginn Plural-Forms vantar." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Formvilla í Plural-Forms hauslínu (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Laga skráarhausinn" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Laga hausinn" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file 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 file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Yfirfara" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Myndir þú vilja nota ensku fyrir frumtexta?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Þessi skrá notar auðkenni strengja í stað frumtexta. Poedit getur hlaðið inn " "fyrir þig enskum textum úr “%s†skránni." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Hlaða inn ensku" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Þýtt: %d af %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Eftir: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d villa" msgstr[1] "%d villur" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d færsla" msgstr[1] "%d færslur" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (óvistað)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (breytt)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Mistókst að uppfæra þýðingaminni: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Ekki var hægt að vista skrána “%sâ€." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Fjarlægja þýðingar sem eru eins og í uppruna" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Viltu fjarlægja allar þýðingar sem eru eins og í upprunatextanum?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Þessi aðgerð mun fjarlægja allar þær þýðingar sem eru nákvæmlega eins og " "upprunatextinn. Þetta er ekki hægt að afturkalla." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Halda" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Fjarlægja" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Henda eyddum þýðingum" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Viltu fjarlægja allar þýðingar sem ekki eru lengur notaðar?" #: src/edframe.cpp:2879 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 "" "Ef þú heldur áfram að henda, verður öllum þýðingum sem merktar eru til að " "eyða endanlega eytt. Þú munt þurfa að þýða þær alveg aftur ef þeim verður " "bætt inn aftur síðar." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Henda" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Afrita úr frumtexta" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Afrita úr frumtexta" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Hreinsa þýðingu" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Hreinsa þýðingu" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Breyta athugasemd" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Breyta athugasemd" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Tilvik kóða" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Tilvik kóða" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Fela hliðarspjald" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Birta hliðarspjald" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Fela stöðustiku" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Birta stöðustiku" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Lengd strengs í stöfum: þýðing | frumtexti" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Lengd strengs í stöfum" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Frumtexti" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Eintala" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Fleirtala" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Þýðing" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Forþýtt" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Þarfnast lagfæringa" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Þarfnast lagfæringa" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Búa til nýja þýðingu" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Útbúa nýja þýðingaskrá úr þessari POT-skrá." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Auðkenni frumtexta" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Allt" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Form %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Form %i (ónotað)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Núll" #: src/editing_area.cpp:788 msgid "One" msgstr "Einn" #: src/editing_area.cpp:790 msgid "Two" msgstr "Tveir" #: src/editing_area.cpp:804 msgid "Other" msgstr "Annað" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Samhengi strengs: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Auðkenni strengs: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s snið" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s snið" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Þýðing — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "Auðkenni (ID)" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Frumtexti — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "óþekkt tungumál" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Villa í netkerfi: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Óþekkt villa" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Mistókst að sameina gettext þýðingaskrár." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Opna í ritli" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Opna í ritli" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Engar upplýsingar eru í skránni um hvar þessi strengur kemur fyrir í " "grunnkóða eða hve oft." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Engar upplýsingar um notkun" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d tilvik kóða" msgstr[1] "%d tilvik kóða" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Grunnkóði fannst ekki" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit getur ekki sýnt grunnkóðann þar sem strengurinn er notaður, annað " "hvort þar sem skráin finnst ekki á þeim stað sem vísað var til eða að um er " "að ræða táknræna tilvísun sem ekki vísar á raunverulega skrá." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Ekki hægt að opna skrá" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit gat ekki “%s†skrána." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Finna" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Skipta út" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Valkostir" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Hunsa há/lágstafi" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Umbrjóta texta" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Aðeins stök orð" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Finna í frumtextum" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Finna í þýðingum" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Finna í athugasemdum" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Skipt&a út öllu" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Skipt&a út öllu" #: src/findframe.cpp:150 msgid "&Replace" msgstr "Ski&pta út" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Fyrra" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Næsta >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Finna streng" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Útskiptistrengur" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "aðvörun: " #: src/gexecute.cpp:171 msgid "error: " msgstr "villa: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Heiti tungumáls eða kóði" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Tungumál þýðingar" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Tungumál þýðingar:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Allir strengir" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Gat ekki sótt nánari upplýsingar um Localazy-verkefni." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Það kom upp villa við að senda þýðingar til Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Verkefni" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Læra meira um %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy er sérlega sjálfvirknivætt þýðingakerfi sem gerir hverjum sem er " "kleift að láta þýða hugbúnað og efni yfir á fjölmörg tungumál." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Bæta við verkefni" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Bæta við verkefni" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Þýðingaskráastjórn" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Breyta…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Búa til nýtt þýðingarverkefni" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Eyða þýðingaverkefninu" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Breyta þýðingarverkefni" #: src/manager.cpp:176 msgid "Update all" msgstr "Uppfæra allt" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Uppfæra allar þýðingaskrár í verkefninu" #: src/manager.cpp:378 msgid "Total" msgstr "Alls" #: src/manager.cpp:379 msgid "Untrans" msgstr "Óþýtt" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Þarfnast lagfæringa" #: src/manager.cpp:381 msgid "Errors" msgstr "Villur" #: src/manager.cpp:382 msgid "Last modified" msgstr "Síðast breytt" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Veldu möppu" #: src/manager.cpp:433 msgid "Directories:" msgstr "Möppur:" #: src/manager.cpp:503 msgid "" msgstr "<ónefnt>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Viltu eyða “%s†verkefninu?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Eyða verkefni" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Sé verkefninu eytt, eyðast engar þýðingaskrár." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Staðfesting" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Uppfæra allar þýðingaskrár í verkefninu?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Uppfærir úr grunnkóða í allar skrár verkefnisins." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Uppfæri verkefnaskrár" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Athuga með uppfærslur…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Þýðingaskráastjórn" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Kjörstillingar…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "Br&eyta" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Afturkalla" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Endurtaka" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Líma og samsvara stíl" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Eyða" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Stafsetning og málfræði" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Birta stafsetningu og málfræði" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Athuga skjal núna" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Yfirfara stafsetningu á meðan skrifað er" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Yfirfara málfræði ásamt stafsetningu" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Leiðrétta stafsetningu sjálfvirkt" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Útskiptingar" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Birta útskiptingar" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Snjöll afritun/líming" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Snjallar gæsalappir" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Snjöll strik" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Snjallir tenglar" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Útskipting texta" #: src/menus.cpp:230 msgid "Transformations" msgstr "Umbreytingar" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Gera allt að hástöfum" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Gera allt að lágstöfum" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Byrja öll orð á hástaf" #: src/menus.cpp:237 msgid "Speech" msgstr "Tala" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Hefja lestur" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Stöðva lestur" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "S&koða" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Birta verkfærastiku" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Sérsníða verkfærastiku…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Fylla skjáinn" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Gluggi" #: src/menus.cpp:263 msgid "Minimize" msgstr "Lágmarka" #: src/menus.cpp:264 msgid "Zoom" msgstr "Aðdráttur" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Velkomin í Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Færa allt fremst" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Upplýsingar um þýðandann" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nafn:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Nafnið þitt" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Netfang:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "þú@dæmi.is" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Nafn þitt og netfang hér að neðan eru einungis til að fylla út " "höfuðstrenginn Last-Translator í skráarhaus GNU-gettext-skráa." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Vinnsla" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Vistþýða sjálfkrafa MO-skrár við vistun" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Athuga stafsetningu" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Ãvallt setja virkni á innsláttarreit" #: src/prefsdlg.cpp:211 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 "" "Aldrei að leyfa lista yfir strengi að yfirtaka virkni. Ef þetta er virkjað, " "verður þú að nota CTRL-örvar til að flakka með lyklaborði, en þú getur líka " "slegið inn texta samstundis án þess að þurfa að þrýsta á TAB til að breyta " "hvar virknin er." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Útlit" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Nota sérsniðið letur í listum:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Nota sérsniðið letur í textareitum:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Veldu tungumál fyrir notendaviðmót" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(krefst Windows 8 eða nýrra)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Almennt" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Nota þýðingaminni" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Sýsla…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Þegar frumtextar eru uppfærðir" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "nota loðna þýðingu í skrá" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "forþýða úr þýðingaminni" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit getur reynt að fylla inn í nýjar þýðingar með eingöngu fyrri þýðingum " "í skránni, eða með færslum úr þýðingaminninu þínu. Að nota þýðingaminnið er " "ekkert sérstaklega öflugt ef það er hálftómt, en þessi aðgerð verður smátt " "og smátt betri eftir því sem þýðingar bætast við." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Geymdar þýðingar:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Stærð gagnagrunns á diski:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Flytja inn þýðingaskrár…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Flytja inn þýðingaskrár…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Flytja inn úr TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Flytja inn úr TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Flytja út í TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Flytja út í TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Endurstilla" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Veldu þær þýðingaskrár sem á að flytja inn" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Veldu TMX-skrár til að flytja inn" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX-skrár" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Flyt inn þýðingar…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Innflutningur þýðingaminnis mistókst." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Flyt inn frá \"%s\"…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s þýðing var flutt inn." msgstr[1] "%s þýðingar voru fluttar inn." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Flytja út sem…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Flyt út þýðingar…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Útflutningur þýðingaminnis í “%s†mistókst." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Núllstilla þýðingaminni" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Ertu viss um að þú viljir núllstilla þýðingaminnið?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Núllstilling þýðingaminnis mun endanlega eyða öllum geymdum þýðingum úr því. " "Ekki er hægt að afturkalla þessa aðgerð." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "Þýð.minni" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Þýðingaminni" #: src/prefsdlg.cpp:730 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 "" "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." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Sérsniðnir þáttarar:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Sérsniðnir þáttarar:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Styður öll forritunarmál sem GNU-gettext verkfærin þekkja (PHP, C/C++, C#, " "Perl, Python, Java, JavaScript og fleiri)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Eyða þáttara" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Ertu viss um að þú viljir eyða “%s†þáttaranum?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Þáttarar" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Aðgangar" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Athuga sjálfvirkt með uppfærslur" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Beta-útgáfur meðtaldar" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta-útgáfur innihalda nýjustu eiginleika og bætingu á þeim sem fyrir voru, " "en gætu verið óstöðugri." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Uppfærslur" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Þ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." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Línuendingar:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (mælt er með þessu)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Gluggar" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Umbrjóta við:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Vernda snið fyrirliggjandi skráa" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Ãtarlegt" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Stillingar" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Undirbý strengi…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Forþýðir úr þýðingaminni…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Forþýddi %u streng" msgstr[1] "Forþýddi %u strengi" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Forþýðing…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d færsla var forþýdd." msgstr[1] "%d færslur voru forþýddar." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Þýðingarnar voru merktar eins og þær þarfnist lagfæringa vegna þess að þær " "gætu verið ónákvæmar. Þú ættir að yfirfara þær og leiðrétta ef þörf krefur." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Nákvæmar samsvaranir úr þýðingaminni" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Nálgaðar samsvaranir úr þýðingaminni" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Ekki var hægt að forþýða neinar færslur." #: src/pretranslate.cpp:218 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 "" "Þýðingaminnið inniheldur ekki neina strengi sem líkjast innihaldi þessarar " "skráar. Þýðingaminnið er aðeins nothæft til hálf-sjálfvirkra þýðinga þegar " "Poedit er búið að læra nógu mikið af þýðingum sem þú ert búinn að framkvæma " "handvirkt." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Get ekki forþýtt án frumtexta." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Forþýða" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Forþýðingar krefjast þess að frumtexti sé til staðar. Þær virka ekki ef " "einungis auðkenni eru notuð án raunverulegs texta." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Get ekki for-þýtt úr óþekktu tungumáli." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "For-þýðing krefst þess að tungumál frumtextans sé þekkt. Poedit gat ekki " "greint það í þessari skrá." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Einungis fylla inn nákvæmar samsvaranir" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Sjálfgefið eru ónákvæmar niðurstöður einnig settar inn og merktar eins og " "þær þarfnist lagfæringa. Merktu við þennan valkost til að einungis nákvæmar " "samsvaranir séu settar inn." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Ekki merkja nákvæmar samsvaranir sem ófullgerðar" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Einungis virkja þetta ef þú treystir þýðingaminninu þínu. Sjálfgefið eru " "allar samsvaranir úr þýðingaminninu merktar eins og þær þarfnist lagfæringa, " "því ætti að yfirfara þær og leiðrétta áður en þær eru notaðar." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Forþýðing finnur sjálfvirkt í þýðingaminni nákvæmar eða loðnar samsvaranir " "fyrir óþýdda strengi og setur þær inn sem þýðingar." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Villa: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d villa kom upp:" msgstr[1] "%d villur komu upp:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Villa kom upp." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d villa kom upp." msgstr[1] "%d villur komu upp." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Hætti við…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Dragðu möppur eða skrár hingað" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Dragðu möppur eða skrár hingað" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Bæta við möppum…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Bæta við möppum…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Bæta við skrám…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Bæta við skrám…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Bæta við algildistákni…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Bæta við algildistákni…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Birta í Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Birta í skráavafra" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Birta í möppu" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Slóðir" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Slóðir sem á að sleppa" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Ãtarlegar þáttunarstillingar" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Ná í minnispunkta fyrir þýðendur úr:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Athugasemdir eru með forskeytinu:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Allar athugasemdir" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Viðbótar xgettext flögg:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Aukaleg stikkorð:" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Heiti þýðingaverkefnis sem þýðingin er ætluð" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Heiti á teymi og tölvupóstfang eða vefslóð" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "t.d. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (mælt er með þessu)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Endilega vistaðu skrána fyrst. Ekki er hægt að sýsla með þennan hluta fyrr " "en það hefur verið gert." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Ãreiðanleiki frátökutákna" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Frátökutáknið “%s†vantar í þýðinguna." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Frátökutákninu “%s†er ofaukið og er ekki í upprunatexta." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Fleirtöluform þýðinga" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Ekki eru öll fleirtöluform þýdd." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Ósamræmi í stafstöðu (hástafir/lágstafir)" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Þýðingin ætti að byrja sem setning." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Þýðingin ætti að byrja á lágstaf." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Ósamræmi í bilstöfum" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Þýðingin byrjar ekki á bili." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Þýðingin byrjar með bili, en frumtextinn gerir það ekki." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Þýðinguna vantar línuskiptitákn við endann." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Þýðingin endar með línuskiptitákni, en frumtextinn gerir það ekki." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Þýðinguna vantar bil við endann." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Þýðingin endar með bili, en frumtextinn gerir það ekki." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Athuganir á greinarmerkjum" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Þýðingin ætti að enda með “%sâ€." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Þýðingin ætti ekki að enda með “%sâ€." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Þýðingin byrjar með “%sâ€, en frumtextinn endar með “%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Tölvuský" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Hreinsa valmynd" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Hreinsa valmynd" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Athugasemd:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Uppfæra" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Eyða" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Eyða athugasemdinni" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Breyta þýðingaverkefni" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Heiti verkefnis:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Velja" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Bæta möppu við á lista" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "à lagi" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Skrá" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Nýtt…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nýtt úr &POT/PO skrá…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nýtt úr &POT/PO skrá…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Opna…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Opna nýlegt" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Opna nýlegt" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Opna þýðingu á tölvuskýi…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Opna þýðingu á tölvuskýi…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Upphaf&sgluggi" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Upphaf&sgluggi" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Þýðingas&kráastjórn" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Þýðingas&kráastjórn" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Loka" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "Vi&sta" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Vist&a sem..." #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Vist&a sem..." #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Vistþýða sem MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "&Flytja út í HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Athuga með uppfærslur…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Stillingar…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "S&tillingar" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Hætta" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Hætta" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Afrita úr eintölu" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Afrita úr eintölu" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Þýðin&g þarfnast lagfæringa" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Þýðin&g þarfnast lagfæringa" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Breyta &athugasemd" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Breyta &athugasemd" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Tillögur" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Finna…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Skipta út…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Finna næsta" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Finna fyrra" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Finna og skipta út…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Finna næsta" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Finna fyrra" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Sýna &ID-auðkenni strengs" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Sýna &ID-auðkenni strengs" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Birta aðvaranir" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Birta aðvaranir" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Raða eftir s&kráaröð" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Raða eftir s&kráaröð" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Raða eftir &frumtexta" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Raða eftir &frumtexta" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "&Raða eftir þýðingu" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "&Raða eftir þýðingu" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Hópa eftir samhengi" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Hópa eftir samhengi" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Færslur með villum fyrst" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Færslur með villum fyrst" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Óþýddar &færslur fyrst" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Óþýddar &færslur fyrst" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Sýna tilvik kóða" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Sýna tilvik kóða" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Birta hliðarspjald" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Birta stöðustiku" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "Þýðin&g" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Uppfæra úr grunnkóða" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Uppfæra úr grunnkóða" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Samstilla við Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "F&or-þýða…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Sannreyna þýðingar" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Sannreyna þýðingar" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Fjarlægja þýðingar sem eru eins og í uppruna" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Henda eyddum þýðingum" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Henda eyddum þýðingum" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Eiginleikar…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Fara" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Lokið og næsta" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Lokið og næsta" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Ãður breytt" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Ãður breytt" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Fyrri þýðing" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Fyrri þýðing" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Næsta þýðing" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Næsta þýðing" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "&Fyrri ókláruð" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "&Fyrri ókláruð" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "&Næsta óklárað" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "&Næsta óklárað" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Fyrri fleirtala" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Fyrri fleirtala" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Næsta fleirtala" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Næsta fleirtala" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Hjálp á netinu" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Hjálp á netinu" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext handbók" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext handbók" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Um Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Um forritið" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Uppsetning þáttara" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Listi yfir skráaendingar aðskilið með semikommu (dæmi. *.cpp, *.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Ræsing:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Skipun til að ná í þýðingar:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Þetta er skipunin sem notuð er til að ræsa þáttarann.\n" "%o stendur fyrir úttaksheiti skráar, %K fyrir lista\n" "af stikkorðum, %F fyrir lista af inntaksskrám,\n" "%C fyrir flagg stafatöflu (sjá hér að neðan)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Atriði í lista yfir stikkorð:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Þetta mun verða viðhengt á skipanalínu, einu sinni\n" "fyrir hvert stikkorð. %k kemur í stað stikkorðsins." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Atriði í lista yfir inntaksskrár:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Þetta mun verða viðhengt á skipanalínu, einu sinni\n" "fyrir hverja inntaksskrá. %f kemur í stað skráarheitisins." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Stafatafla frumkóða:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Þetta mun verða viðhengt á skipanalínu, einungis\n" "ef upprunaleg stafatafla hefur verið gefið upp. %c kemur í stað gildis " "stafatöflunnar." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Eiginleikar þýðingar" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nafn þýðingaverkefnis og útgáfunúmer:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Tungumálateymi:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Fleirtöluform:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Nota sjálfgefnar reglur fyrir þetta tungumál" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Nota sérsniðna segð" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Læra meira um fleirtöluform" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Stafatafla:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Ãtarlegar þáttunarstillingar…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Ãtarlegar þáttunarstillingar…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Eiginleikar þýðingar" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Slóðir upprunaskráa" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Slóðir upprunaskráa" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Ná í texta úr upprunaskrám í eftirfarandi möppum:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Grunnslóð:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Stikkorð upprunaskráa" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Stikkorð upprunaskráa" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Nota þessi stikkorð (aðgerðaheiti) til að auðkenna þýðanlega strengi\n" "í upprunaskrám:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Einnig nota sjálfgefin stikkorð fyrir studd tungumál" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Læra meira um gettext lykilorð" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Opna skrá" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Vista skrá" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Sannreyna" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Athuga með villur í þýðingum" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Uppfæra úr kóða" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Uppfæra úr kóða" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Uppfæra úr grunnkóða" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Hliðarspjald" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Fyrri frumtexti" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Eldri frumtextinn (áður en hann breyttist við uppfærslu) sem þýðingin (núna " "ónákvæm) á við." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Minnispunktar fyrir þýðendur" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Athugasemd" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Bæta við athugasemd" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Bæta við athugasemd" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Eyða úr þýðingaminni" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Eyða úr þýðingaminni" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Þýðingatillögur" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Engar samsvaranir fundust" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Engar samsvaranir fundust" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Þessi strengur fannst í þýðingaminni Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Tillögur að þýðingum krefjast þess að frumtexti sé til staðar. Þær virka " "ekki ef einungis auðkenni eru notuð án raunverulegs texta." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Tillögur að þýðingum krefjast þess að tungumál frumtextans sé þekkt. Poedit " "gat ekki greint það í þessari skrá." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Ekki tókst að ræsa forrit: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX-skráin er gölluð." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Gagnagrunnur þýðingaminnis er skemmdur: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Villa í þýðingaminni: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Nota sjálfgefið tungumál)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Velja tungumál" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Veldu aðaltungumálið þitt" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Þú þarft að endurræsa Poedit til að þessi breyting taki gildi." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Ekki tókst að búa til bráðabirgðamöppu." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Það eru engar þýðingar. Mjög óvenjulegt." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Þýðanlegum færslum er ekki bætt handvirkt inn í Gettext kerfinu, heldur er " "náð í þær sjálfvirkt úr grunnkóða. Þannig eykst nákvæmni og þær eru alltaf " "uppfærðar. Þýðendur nota venjulega PO-sniðmát (POT) sem forritarar hafa " "útbúið fyrir þá." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Læra meira um GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Einfaldasta leiðin til að fylla þessa skrá með þýðingum er að uppfæra hana " "frá POT-skrá:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Uppfæra frá POT skrá" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Taka þýðanlega strengi úr POT sniðmáti sem til er fyrir." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Þú getur líka náð í þýðanlega strengi beint úr grunnkóðanum:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Ná í úr frumkóða" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Stilla útdrátt/þáttun upprunakóða í kjörstillingum." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Útgáfa %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Búa til nýtt" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Búa til nýja þýðingu út frá POT-sniðmáti." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Fletta skrám" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Opna og breyta þýðingaskrám." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Þýða verkefni á tölvuskýi" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Eigðu í samstarfi við aðra á netinu." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Nýlegar skrár" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Samstilla" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Samræma þýðinguna með Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Um %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Kjörstillingar %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Um %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Þjónustur" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Fela %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Fela annað" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Birta allt" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Hætta í %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Kjörstillingar…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Stillingar..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Stillingar..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "Virkj&a" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Virkja" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "Til &baka" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Til baka" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Hætta við" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "Hre&insa" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Hreinsa" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Afrita" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Klippa" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Klippa" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Breyta" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Hætta" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Hjálp" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nýtt" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Nýtt" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Nei" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Nei" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "à &lagi" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Opna…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Opna..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Opna..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Líma" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Líma" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Kjörstillingar" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "Endu&rtaka" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Endurlesa" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "Vi&sta sem" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Vista sem" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Velja &allt" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Velja allt" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Afturkalla" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Já" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Já" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Upp" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Niður" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Vinstri" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Hægri" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Aðvörun: " poedit-3.6.3/locales/pa.po0000644000175100001660000030566115011674364011075 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Punjabi\n" "Language: pa_IN\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: pa-IN\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "ਇਹ ਸੂਚਨਾ ਸà©à¨¨à©‡à¨¹à¨¾ ਓਹਲੇ ਕਰੋ" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "ਮà©à©œ ਨਾ ਦਿਖਾਓ" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "ਮà©à©œ ਨਾ ਦਿਖਾਓ" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "ਅੱਪਡੇਟ ਸੰਖੇਪ" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "ਬੰਦ ਕਰੋ" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "ਫ਼ਾਈਲ" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "ਨਵੀਂਆਂ ਸਤਰਾਂ" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "ਸਰੋਤ ਫ਼ਾਈਲਾਂ ਨੂੰ ਇਕੱਠਾ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "ਕੱਢੇ ਗਠਅਨà©à¨µà¨¾à¨¦à¨¾à¨‚ ਵਾਲੀ ਫ਼ਾਈਲ ਲੋਡ ਕਰਨਾ ਅਸਫ਼ਲ ਰਿਹਾ।" #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "ਇਸ ਵਿੱਚ: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "ਸਰੋਤ ਕੋਡ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "ਅਨà©à¨µà¨¾à¨¦à¨¾à¨‚ ਨੂੰ ਸਰੋਤ ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਫ਼ਾਈਲ ਦੀਆਂ ਪà©à¨°à¨¾à¨ªà¨Ÿà©€à¨†à¨‚ ਵਿੱਚ ਦੱਸੇ ਟਿਕਾਣੇ " "'ਤੇ ਕੋਈ ਕੋਡ ਨਹੀਂ ਮਿਲਿਆ।" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੱਤੀ ਗਈ।" #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "ਤà©à¨¹à¨¾à¨¡à©‡ ਕੋਲ ਫ਼ਾਈਲ ਦੀਆਂ ਪà©à¨°à¨¾à¨ªà¨Ÿà©€à¨†à¨‚ ਵਿੱਚ ਦੱਸੇ ਟਿਕਾਣੇ 'ਤੇ ਦਿੱਤੀਆਂ ਸਰੋਤ ਕੋਡ ਫ਼ਾਈਲਾਂ ਨੂੰ ਪੜà©à¨¹à¨¨ ਦੀ ਇਜਾਜ਼ਤ " "ਨਹੀਂ ਹੈ।" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "ਜੇਕਰ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਪਹਿਲਾਂ ਵੀ ਤà©à¨¹à¨¾à¨¡à©€à¨†à¨‚ ਫ਼ਾਈਲਾਂ ਤੱਕ ਜਾਣ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ, ਤਾਂ ਤà©à¨¸à©€à¨‚ ਸਿਸਟਮ ਸੈਟਿੰਗਾਂ > " "ਪਰਦੇਦਾਰੀ ਤੇ ਸà©à¨°à©±à¨–ਿਆ > ਫ਼ਾਈਲਾਂ ਅਤੇ ਫ਼ੋਲਡਰਾਂ ਵਿੱਚ ਇਹ ਇਜਾਜ਼ਤ ਦੇ ਸਕਦੇ ਹੋ।" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "ਜੇਕਰ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਪਹਿਲਾਂ ਵੀ ਤà©à¨¹à¨¾à¨¡à©€à¨†à¨‚ ਫ਼ਾਈਲਾਂ ਤੱਕ ਜਾਣ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ, ਤਾਂ ਤà©à¨¸à©€à¨‚ ਸਿਸਟਮ ਤਰਜੀਹਾਂ > " "ਸà©à¨°à©±à¨–ਿਆ ਅਤੇ ਪਰਦੇਦਾਰੀ > ਪਰਦੇਦਾਰੀ > ਫ਼ਾਈਲਾਂ ਅਤੇ ਫ਼ੋਲਡਰਾਂ ਵਿੱਚ ਇਹ ਇਜਾਜ਼ਤ ਦੇ ਸਕਦੇ ਹੋ।" #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "ਫ਼ਾਈਲ “%s†ਖੋਲà©à¨¹à©€ ਨਹੀਂ ਜਾ ਸਕੀ ਹੈ।" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਅੱਪਡੇਟ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "ਫ਼ਰਕਾਂ ਨੂੰ ਮਿਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "ਨà©à¨•ਸਦਾਰ ਸਿਰਲੇਖ: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO ਅਨà©à¨µà¨¾à¨¦ ਫਾਈਲਾਂ" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT ਅਨà©à¨µà¨¾à¨¦ ਟੈਂਪਲੇਟ" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF ਅਨà©à¨µà¨¾à¨¦ ਫ਼ਾਈਲਾਂ" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON ਅਨà©à¨µà¨¾à¨¦ ਫ਼ਾਈਲਾਂ" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "ਫਲੱਟਰ ਅਨà©à¨µà¨¾à¨¦ ਫ਼ਾਈਲਾਂ" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "ਸਾਰੀਆਂ ਅਨà©à¨µà¨¾à¨¦ ਫ਼ਾਇਲਾਂ" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "ਫਾਇਲ ਦਾ ਫਾਰਮੈਟ ਅਜਿਹਾ ਹੈ, ਜਿਸ ਨੂੰ ਪੋ-à¨à¨¡à¨¿à¨Ÿ ਪਛਾਣਦਾ ਨਹੀਂ ਹੈ।" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "ਇਹ JSON ਫ਼ਾਈਲ ਅਨà©à¨µà¨¾à¨¦ ਵਾਲੀ ਫ਼ਾਈਲ ਨਹੀਂ ਹੈ ਅਤੇ ਇਸ ਦਾ ਸੰਪਾਦਨ Poedit ਵਿੱਚ ਨਹੀਂ ਕੀਤਾ ਜਾ " "ਸਕਦਾ।" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "ਅੱਗੇ ਦਿੱਤੀ ਗੜਬੜ ਕਰਕੇ ਫ਼ਾਈਲ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਪੜà©à¨¹à¨¿à¨† ਨਹੀਂ ਜਾ ਸਕਿਆ: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "ਫ਼ਾਈਲ “%s†ਸਿਰਫ਼ ਪੜà©à¨¹à¨¨ ਲਈ ਹੈ ਅਤੇ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕਦੀ।\n" "ਇਸ ਨੂੰ ਕਿਸੇ ਵੱਖਰੇ ਨਾਂ ਨਾਲ ਸੰਭਾਲੋ।" #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "%s ਫਾਈਲ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕੀ।" #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "ਸਕਰੀਨਸ਼ਾਟ:" #: src/catalog_po.cpp:134 #, 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] "ਫ਼ਾਈਲ “%s†ਦੀਆਂ %i ਕਤਾਰਾਂ ਸਹੀ ਤਰà©à¨¹à¨¾à¨‚ ਲੋਡ ਨਹੀਂ ਹੋਈਆਂ।" #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "ਫ਼ਾਈਲ “%2$s†ਦੀ ਕਤਾਰ %1$d ਵਿੱਚ ਖਰਾਬੀ ਹੈ (ਵਾਜਬ %3$s ਡਾਟਾ ਨਹੀਂ)।" #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "ਖਰਾਬ PO ਫ਼ਾਈਲ: ਇੱਕਵਚਨ ਕਿਸਮ msgstr ਨੂੰ msgid_plural ਨਾਲ ਇਕੱਠੇ ਵਰਤਿਆ" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "ਖਰਾਬ PO ਫ਼ਾਈਲ: ਬਹà©à¨µà¨šà¨¨ ਕਿਸਮ msgstr ਨੂੰ msgid_plural ਤੋਂ ਬਿਨਾਂ ਵਰਤਿਆ" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "ਫ਼ਾਈਲ ਨੂੰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਸ਼ਾਇਦ ਇਹ ਖ਼ਰਾਬ ਹੈ।" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "ਫ਼ਾਈਲ ਲੋਡ ਕਰਨ ਵਿੱਚ ਗਲਤੀਆਂ ਸਨ। ਨਤੀਜੇ ਵਜੋਂ ਸ਼ਾਇਦ ਕà©à¨ ਡਾਟਾ ਗà©à©°à¨® ਜਾਂ ਖਰਾਬ ਹੋਵੇ।" #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "ਫਾਈਲ ਨੂੰ ਸਹੀ ਤਰà©à¨¹à¨¾à¨‚ ਫਾਰਮੇਟ ਕਰਨ ਵੇਲੇ ਖ਼ਾਮੀ ਆਈ (ਪਰ ਇਹ ਠੀਕ ਤਰà©à¨¹à¨¾à¨‚ ਸੰਭਾਲੀ ਗਈ)।" #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "ਅਨà©à¨µà¨¾à¨¦ ਦੀਆਂ ਸੈਟਿੰਗਾਂ ਮà©à¨¤à¨¾à¨¬à¨• ਫ਼ਾਈਲ “%s†ਅੱਖਰ-ਸਮੂਹ ਵਿੱਚ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕਦੀ।\n" "\n" "ਇਹ UTF-8 ਵਿੱਚ ਸੰਭਾਲੀ ਹੋਣ ਕਰਕੇ ਸੈਟਿੰਗ ਨੂੰ ਉਸ ਮà©à¨¤à¨¾à¨¬à¨• ਸੋਧਿਆ ਗਿਆ।" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "ਫ਼ਾਈਲ ਸੰਭਾਲਣ ਵੇਲੇ ਖਾਮੀ" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†ਜਾਇਜ਼ POT ਫਾਈਲ ਨਹੀਂ ਹੈ।" #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF ਫ਼ਾਈਲ ਨੂੰ ਲੋਡ ਕਰਨ ਵੇਲੇ ਗੜਬੜ ਹੋਈ: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "ਅਸਮਰਥਿਤ ਵਰਜਨ (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਸਤਰ ਵਿੱਚ ਖਰਾਬ ਮਾਰਕਅੱਪ।" #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "ਕਲਾਉਡ ਸਿੰਕ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "ਖਾਤਾ" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(ਸਾਈਨ ਇਨ ਨਹੀਂ ਹੈ)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "ਕਲਾਉਡ ਅਨà©à¨µà¨¾à¨¦ ਖੋਲà©à¨¹à©‹" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "ਖਾਤਿਆਂ ਦਾ ਇੰਤਜ਼ਾਮ ਕਰੋ" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "ਪਰੋਜੈਕਟ:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "ਭਾਸ਼ਾ:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "ਕਲਾਉਡ ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ ਇਨ ਕਰੋ" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "ਕਲਾਉਡ ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ ਇਨ ਕਰੋ" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "ਤà©à¨¹à¨¾à¨¡à©‡ ਖਾਤੇ ਵਿੱਚ ਕੋਈ ਅਨà©à¨µà¨¾à¨¦ ਪà©à¨°à©‹à¨œà©ˆà¨•ਟ ਨਹੀਂ ਹੈ।" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "ਤਾਜ਼ੇ ਅਨà©à¨µà¨¾à¨¦à¨¾à¨‚ ਨੂੰ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "%s ਵਿੱਚ ਸਾਈਨ ਇਨ ਕਰੋ" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "ਸਿੰਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "ਅਨà©à¨µà¨¾à¨¦ %s ਉੱਤੇ ਅੱਪਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "ਅਨà©à¨µà¨¾à¨¦ %s ਉੱਤੇ ਅੱਪਲੋਡ ਕਰਨ ਥਈ ਅਸਫ਼ਲ ਹੈ।" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "ਸਿੰਕ ਕਰਨ ਵਿੱਚ ਗਲਤੀ" #: src/commentdlg.cpp:48 msgid "Add" msgstr "ਜੋੜੋ" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "ਅਣਪਛਾਤੀ Crowdin ਗਲਤੀ ਹੈ।" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "ਅਧਿਕਾਰ ਨਹੀਂ ਹੈ, ਦà©à¨¬à¨¾à¨°à¨¾ ਸਾਈਨ ਇਨ ਕਰੋ।" #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "ਇਸ ਪà©à¨°à©‹à¨œà©ˆà¨•ਟ ਦੇ ਅਨà©à¨µà¨¾à¨¦ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਸà©à¨µà¨¿à¨§à¨¾ ਬੰਦ ਹੈ।" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "ਸਾਈਨ ਇਨ" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "ਸਾਈਨ ਇਨ" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "ਸਾਈਨ ਆਉਟ" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "ਸਾਈਨ ਆਉਟ" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Crowdin ਬਾਰੇ ਹੋਰ ਜਾਣੋ" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "ਪਰਮਾਣਕਿਤਾ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "ਵਰਤੋਂਕਾਰ ਜਾਣਕਾਰੀ ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Crowdin ਵਿੱਚ ਦਾਖਲ ਹੋਵੋ" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Crowdin ਨਾਲ ਸਮਕਾਲੀਕਰਨ ਅਸਫਲ ਰਿਹਾ।" #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin ਗਲਤੀ" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "ਅਨà©à¨µà¨¾à¨¦à¨¾à¨‚ ਨੂੰ ਅੱਪਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "ਕਾਪੀ ਕਰੋ(&C)" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "ਹੋਰ ਜਾਣੋ" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "ਮਦਦ(&H)" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO ਫ਼ਾਈਲਾਂ ਦਾ Poedit ਵਿੱਚ ਸਿੱਧੇ ਸੰਪਾਦਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।" #: src/edapp.cpp:733 msgid "Error opening file" msgstr "ਫਾਈਲ ਖੋਲà©à¨¹à¨£ ਦੌਰਾਨ ਗਲਤੀ" #: src/edapp.cpp:735 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 ਫ਼ਾਈਲ ਵੀ " "ਅੱਪਡੇਟ ਹੋ ਜਾਵੇਗੀ।" #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ਅਸਥਾਈ ਫ਼ਾਈਲਾਂ ਨਾ ਮਿਟਾਓ (ਡੀਬੱਗਿੰਗ ਲਈ)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "poedit:// URI ਹੈਂਡਲ ਕਰੋ" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "ਦਿੱਤੇ ਸਤਰ ਨੰਬਰ 'ਤੇ ਆਈਟਮ 'ਤੇ ਜਾਓ" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Poedit ਪà©à¨°à¨•ਿਰਿਆ ਨਾਲ ਸੰਚਾਰ ਨਹੀਂ ਹੋਇਆ।" #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "ਨਾ-ਸਾਂਭਣਯੋਗ ਅਪਵਾਦ: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਟੈਂਪਲੇਟ ਚà©à¨£à©‹" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "ਗਲਤ ਫ਼ਾਈਲ" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਫਾਈਲ ਚà©à¨£à©‹" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit ਵਰਤਣ ਲਈ ਸੌਖਾ ਅਨà©à¨µà¨¾à¨¦ ਸੰਪਾਦਕ ਹੈ।" #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "ਤà©à¨¸à©€à¨‚ Poedit ਵਿੰਡੋ ਵਿੱਚ ਇੱਕ ਤੋਂ ਵੱਧ ਫ਼ਾਈਲਾਂ ਨਹੀਂ ਸà©à©±à¨Ÿ ਸਕਦੇ।" #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "ਫਾਈਲ “%s†ਅਨà©à¨µà¨¾à¨¦ ਵਾਲੀ ਫਾਈਲ ਨਹੀਂ ਹੈ।" #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "ਫ਼ਾਈਲ “%s†ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" #: src/edframe.cpp:455 msgid "Poedit" 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "ਸ਼ਬਦ-ਜੋੜ ਜਾਂਚ ਬੰਦ ਹੈ, ਕਿਉਂਕਿ %s ਦਾ ਸ਼ਬਦਕੋਸ਼ ਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ।" #: src/edframe.cpp:871 msgid "Install" msgstr "ਇੰਸਟਾਲ ਕਰੋ" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "ਫ਼ਾਈਲ “%s†ਨੂੰ ਕਿਸੇ ਹੋਰ à¨à¨ªà¨²à©€à¨•ੇਸ਼ਨ ਨੇ ਬਦਲ ਦਿੱਤਾ ਹੈ।" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "ਫ਼ਾਈਲ ਮà©à©œ-ਲੋਡ ਕਰੋ" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "ਕੀ ਤà©à¨¸à©€à¨‚ ਡਿਸਕ ਤੋਂ ਫ਼ਾਈਲ ਮà©à©œ-ਲੋਡ ਕਰਨੀ ਹੈ? ਅਜਿਹਾ ਕਰਨ ਨਾਲ Poedit ਵਿੱਚ ਨਾ-ਸੰਭਾਲੇ ਸੰਪਾਦਨ ਖà©à©°à¨ " "ਜਾਣਗੇ।" #: src/edframe.cpp:968 msgid "Ignore" msgstr "ਅਣਗੌਲਿਆ ਕਰੋ" #: src/edframe.cpp:968 msgid "Reload File" msgstr "ਫਾਈਲ ਮà©à©œ-ਲੋਡ ਕਰੋ" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "ਫ਼ਾਈਲ ਸੋਧੀ ਗਈ। ਕੀ ਤà©à¨¸à©€à¨‚ ਤਬਦੀਲੀਆਂ ਸੰਭਾਲਣੀਆਂ ਹਨ?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "ਤਬਦੀਲੀਆਂ ਸੰਭਾਲੋ" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "ਜੇ ਤà©à¨¸à©€à¨‚ ਤਬਦੀਲੀਆਂ ਨਹੀਂ ਸੰਭਾਲਦੇ ਤਾਂ ਉਹ ਖà©à©°à¨ ਜਾਣਗੀਆਂ।" #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "ਸੰਭਾਲੋ" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "ਨਾ ਸੰਭਾਲੋ(&n)" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "ਨਾ ਸੰਭਾਲੋ" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "ਜੇਕਰ ਤà©à¨¸à©€à¨‚ ਸੰਭਾਲਦੇ ਹੋ, ਤਾਂ ਕਿਸੇ ਹੋਰ à¨à¨ªà¨²à©€à¨•ੇਸ਼ਨ ਵੱਲੋਂ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਖà©à©°à¨ ਜਾਣਗੀਆਂ।" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "ਰੱਦ ਕਰੋ" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "ਫ਼ਿਰ ਵੀ ਸੰਭਾਲੋ" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "ਫ਼ਿਰ ਵੀ ਸੰਭਾਲੋ" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "…ਵਜੋਂ ਸੰਭਾਲੋ" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "ਇੱਥੇ ਕੰਪਾਇਲ ਕਰੋ…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "ਕੰਪਾਇਲ ਕੀਤੀਆਂ ਅਨà©à¨µà¨¾à¨¦ ਫਾਈਲਾਂ" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "…HTML ਵਜੋਂ ਦਰਾਮਦ ਕਰੋ" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML ਫਾਈਲਾਂ" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "ਅੱਪਡੇਟ ਕਰਨਾ ਅਸਫ਼ਲ ਰਿਹਾ।" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "&POT ਫਾਈਲ ਤੋਂ ਅੱਪਡੇਟ…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "&POT ਫਾਈਲ ਤੋਂ ਅੱਪਡੇਟ…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "ਟਰਾਂਸਲੇਸ਼ਨ ਵਿੱਚ %d ਮਸਲਾ ਮਿਲਿਆ।" msgstr[1] "ਅਨà©à¨µà¨¾à¨¦ ਵਿੱਚ %d ਮਸਲੇ ਮਿਲੇ।" #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "ਪà©à¨°à¨®à¨¾à¨£à©€à¨•ਰਨ ਦੇ ਨਤੀਜੇ" #: src/edframe.cpp:1842 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 "" "ਖਾਮੀਆਂ ਵਾਲੇ ਇੰਦਰਾਜਾਂ ਨੂੰ ਸੂਚੀ ਵਿੱਚ ਲਾਲ ਰੰਗ ਲਗਾਇਆ ਗਿਆ। ਕਿਸੇ ਇੰਦਰਾਜ ਨੂੰ ਚà©à¨£à¨¨ ਨਾਲ ਉਸ ਵਿਚਲੀ " "ਖਾਮੀ ਦੇ ਵੇਰਵੇ ਦਿਸਣਗੇ।" #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "ਫ਼ਾਈਲ ਸà©à¨°à©±à¨–ਿਅਤ ਢੰਗ ਨਾਲ ਸੰਭਾਲੀ ਗਈ।" #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "ਫ਼ਾਈਲ ਸਹੀ ਤਰà©à¨¹à¨¾à¨‚ ਸੰਭਾਲੀ ਅਤੇ MO ਫ਼ਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਕੀਤੀ ਗਈ, ਪਰ ਸ਼ਾਇਦ ਇਹ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ " "ਨਾ ਕਰੇ।" #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "ਫ਼ਾਈਲ ਸਹੀ ਤਰà©à¨¹à¨¾à¨‚ ਸੰਭਾਲੀ ਗਈ, ਪਰ ਇਹ MO ਫ਼ਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਨਹੀਂ ਕੀਤੀ ਅਤੇ ਵਰਤੀ ਨਹੀਂ ਜਾ " "ਸਕਦੀ।" #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "ਫ਼ਾਈਲ MO ਫ਼ਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਕੀਤੀ ਗਈ, ਪਰ ਸ਼ਾਇਦ ਇਹ ਸਹੀ ਤਰà©à¨¹à¨¾à¨‚ ਕੰਮ ਨਾ ਕਰੇ।" #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "ਫ਼ਾਈਲ MO ਫ਼ਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਕੀਤੀ ਅਤੇ ਵਰਤੀ ਨਹੀਂ ਜਾ ਸਕਦੀ।" #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਵਿੱਚ ਕੋਈ ਖਾਮੀ ਨਹੀ ਲੱਭੀ।" #: src/edframe.cpp:1894 #, 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] "ਟਰਾਂਸਲੇਸ਼ਨ ਵਰਤੇ ਜਾਣ ਲਈ ਤਿਆਰ ਹੈ, ਪਰ %d à¨à¨‚ਟਰੀ ਹਾਲੇ ਟਰਾਂਸਲੇਟ ਨਹੀਂ ਹੈ।" msgstr[1] "ਟਰਾਂਸਲੇਸ਼ਨ ਵਰਤੇ ਜਾਣ ਲਈ ਤਿਆਰ ਹੈ, ਪਰ %d à¨à¨‚ਟਰੀਆਂ ਹਾਲੇ ਟਰਾਂਸਲੇਟ ਨਹੀਂ ਹਨ।" #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਵਰਤੇ ਜਾਣ ਲਈ ਤਿਆਰ ਹੈ।" #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit ਨੇ ਫ਼ਾਈਲ “%s†ਵਿਚਲੀ ਅਢà©à¨•ਵੀਂ ਸਮੱਗਰੀ ਨੂੰ ਆਪਣੇ-ਆਪ ਠੀਕ ਕੀਤਾ।" #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "ਫ਼ਾਈਲ ਵਿੱਚ ਦੂਹਰੀਆਂ ਆਈਟਮਾਂ ਹਨ, ਜੋ PO ਫ਼ਾਈਲਾਂ ਲਈ ਠੀਕ ਨਹੀਂ ਅਤੇ ਜਿਸ ਕਰਕੇ ਫ਼ਾਈਲ ਵਰਤੀ ਨਹੀਂ ਜਾ " "ਸਕਦੀ। Poedit ਨੇ ਸਮੱਸਿਆ ਠੀਕ ਕੀਤੀ, ਪਰ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਕਿਸੇ ਵੀ ਉਸ ਆਈਟਮ ਦੇ ਅਨà©à¨µà¨¾à¨¦ ਦੀ ਸਮੀਖਿਆ ਕਰਨੀ " "ਪਵੇਗੀ ਜਿਸ 'ਤੇ 'ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈ' ਦਾ ਨਿਸ਼ਾਨ ਲੱਗੇ ਅਤੇ ਲੋੜ ਮà©à¨¤à¨¾à¨¬à¨• ਉਸਨੂੰ ਠੀਕ ਕਰਨਾ ਪਵੇਗਾ।" #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਦੀ ਭਾਸ਼ਾ ਸੈੱਟ ਨਹੀਂ ਹੈ।" #: src/edframe.cpp:2317 msgid "Set Language" msgstr "ਭਾਸ਼ਾ ਦਿਓ" #: src/edframe.cpp:2317 msgid "Set language" msgstr "ਭਾਸ਼ਾ ਦਿਓ" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "ਅਨà©à¨µà¨¾à¨¦ ਦੀ ਭਾਸ਼ਾ ਸਹੀ ਤਰà©à¨¹à¨¾à¨‚ ਸੈੱਟ ਨਾ ਹੋਣ 'ਤੇ ਸà©à¨à¨¾à¨… ਨਹੀਂ ਮਿਲਣਗੇ। ਹੋਰ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ, ਜਿਵੇਂ ਕਿ ਬਹà©à¨µà¨šà¨¨ " "ਬਣਾਉਣ 'ਤੇ ਵੀ ਸ਼ਾਇਦ ਅਸਰ ਪਵੇ।" #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਦੀ ਭਾਸ਼ਾ ਅਤੇ ਸਰੋਤ ਦੀ ਭਾਸ਼ਾ ਇੱਕੋ ਹੈ।" #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "ਭਾਸ਼ਾ ਨੂੰ ਠੀਕ ਕਰੋ" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "ਭਾਸ਼ਾ ਨੂੰ ਠੀਕ ਕਰੋ" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "ਇਸ ਫ਼ਾਈਲ ਵਿੱਚ ਬਹà©à¨µà¨šà¨¨ ਵਾਲੇ ਇੰਦਰਾਜ ਹਨ, ਪਰ ਬਹà©à¨µà¨šà¨¨ ਵਾਲਾ ਸਿਰਲੇਖ ਤੈਅ ਨਹੀਂ ਹੈ।" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "ਇਸ ਫ਼ਾਈਲ ਵਿਚਲੇ ਇੰਦਰਾਜਾਂ ਦੇ ਵੱਖੋ-ਵੱਖਰੇ ਬਹà©à¨µà¨šà¨¨ ਹਨ ਜੋ ਇਸ ਫ਼ਾਈਲ ਦੇ ਬਹà©à¨µà¨šà¨¨ ਵਾਲੇ ਸਿਰਲੇਖ ਦੇ ਉਲਟ ਹੈ" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "ਬਹà©à¨µà¨šà¨¨ ਲਈ ਲੋੜੀਂਦਾ ਸਿਰਲੇਖ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "ਬਹà©à¨µà¨šà¨¨ ਸਿਰਲੇਖ (\"%s\") ਵਿੱਚ ਵਾਕ-ਵਿਉਂਤ ਖਾਮੀ।" #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "ਸਿਰਲੇਖ ਠੀਕ ਕਰੋ" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "ਇਸ ਫ਼ਾਈਲ ਵਿੱਚ ਵਰਤਿਆ ਬਹà©à¨µà¨šà¨¨ ਕਥਨ %s ਮà©à¨¤à¨¾à¨¬à¨• ਠੀਕ ਨਹੀਂ ਹੈ।" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "ਪੜਤਾਲ" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "ਕੀ ਤà©à¨¸à©€à¨‚ ਅੰਗਰੇਜ਼ੀ ਨੂੰ ਸਰੋਤ ਲਿਖਤ ਵਜੋਂ ਵਰਤਣਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "ਅੰਗਰੇਜ਼ੀ ਲੋਡ ਕਰੋ" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਕੀਤਾ: %2$d ਵਿੱਚੋਂ %1$d (%3$d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "ਬਾਕੀ: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d ਗਲਤੀ" msgstr[1] "%d ਗਲਤੀਆਂ" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d ਦਾਖਲ ਚੀਜ਼" msgstr[1] "%d ਦਾਖਲ ਚੀਜ਼ਾਂ" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (ਨਾ-ਸੰਭਾਲਿਆ)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (ਸੋਧੀ)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਫੇਲà©à¨¹: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "ਰੱਖੋ" #: src/edframe.cpp:2856 msgid "Remove" msgstr "ਹਟਾਓ" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "ਹਟਾਠਗਠਅਨà©à¨µà¨¾à¨¦ ਨੂੰ ਕੱਢੋ" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "ਕੀ ਤà©à¨¸à©€à¨‚ ਸਭ ਅਨà©à¨µà¨¾à¨¦à¨¾à¨‚ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ, ਜੋ ਕਿ ਹà©à¨£ ਵਰਤੋਂ ਯੋਗ ਨਹੀਂ ਹਨ?" #: src/edframe.cpp:2879 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 "" #: src/edframe.cpp:2883 msgid "Purge" msgstr "" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "ਸਰੋਤ ਲਿਖਤ ਤੋਂ ਕਾਪੀ ਕਰੋ" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "ਸਰੋਤ ਲਿਖਤ ਤੋਂ ਕਾਪੀ ਕਰੋ" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਮਿਟਾਓ" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਮਿਟਾਓ" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "ਟਿੱਪਣੀ ਸੋਧ" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "ਟਿੱਪਣੀ ਸੋਧੋ" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "ਕੋਡ ਮੌਜੂਦਗੀਆਂ" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "ਕੋਡ ਮੌਜੂਦਗੀਆਂ" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "ਬਾਹੀ ਓਹਲੇ ਕਰੋ" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "ਬਾਹੀ ਵੇਖਾਓ" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "ਹਾਲਤ ਪੱਟੀ ਓਹਲੇ ਕਰੋ" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "ਹਾਲਤ ਪੱਟੀ ਵੇਖਾਓ" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਸਤਰ ਦੀ ਲੰਬਾਈ: ਟਰਾਂਸਲੇਸ਼ਨ | ਸਰੋਤ" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਸਤਰ ਦੀ ਲੰਬਾਈ" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "ਸਰੋਤ ਲਿਖਤ" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "ਇੱਕ ਵਚਨ" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "ਬਹà©à¨µà¨šà¨¨" #: src/editing_area.cpp:477 msgid "Translation" msgstr "ਅਨà©à¨µà¨¾à¨¦" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "ਕੱਚਾ-ਅਨà©à¨µà¨¾à¨¦" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈ" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈ" #: src/editing_area.cpp:566 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 ਫਾਈਲ ਬਣਾਓ।" #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "ਨਵਾਂ ਅਨà©à¨µà¨¾à¨¦ ਬਣਾਓ" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "ਇਸ POT ਫਾਈਲ ਤੋਂ ਨਵੀਂ ਟਰਾਂਸਲੇਸ਼ਨ ਬਣਾਓ।" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ਸਰੋਤ ਲਿਖਤ ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "ਹਰ ਚੀਜ਼" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "ਫਾਰਮ %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "ਫਾਰਮ %i (unused)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "ਸਿਫ਼ਰ" #: src/editing_area.cpp:788 msgid "One" msgstr "ਇੱਕ" #: src/editing_area.cpp:790 msgid "Two" msgstr "ਦੋ" #: src/editing_area.cpp:804 msgid "Other" msgstr "ਹੋਰ" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "ਸਤਰ ਪਛਾਣਕਰਤਾ: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s ਫਾਰਮੈਟ" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s ਫਾਰਮੈਟ" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "ਅਨà©à¨µà¨¾à¨¦ — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ਆਈਡੀ" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "ਸਰੋਤ ਲਿਖਤ — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "ਅਣਜਾਣ ਭਾਸ਼ਾ" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "ਨੈੱਟਵਰਕ ਗਲਤੀ: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "ਅਣਪਛਾਤੀ ਗਲਤੀ" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "gettext ਸਾਰਨੀਆਂ ਵਿੱਚ ਮਿਲਾਨ ਕਰਨਾ ਅਸਫ਼ਲ ਰਿਹਾ।" #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "à¨à¨¡à©€à¨Ÿà¨° ਵਿੱਚ ਖੋਲà©à¨¹à©‹" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "à¨à¨¡à©€à¨Ÿà¨° ਵਿੱਚ ਖੋਲà©à¨¹à©‹" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "ਕੋਈ ਵਰਤੋਂ ਜਾਣਕਾਰੀ ਨਹੀਂ" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "ਸਰੋਤ ਕੋਡ ਨਹੀਂ ਮਿਲਿਆ" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "ਫਾਈਲ ਖੋਲà©à¨¹à©€ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit “%s†ਫ਼ਾਈਲ ਖੋਲà©à¨¹à¨£ ਲਈ ਅਸਮਰੱਥ ਸੀ।" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "ਲੱਭੋ" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "ਤਬਦੀਲ" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "ਚੋਣਾਂ" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "ਅੱਖਰ ਅਕਾਰ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰੋ" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "ਪਾਸਿਓ ਸਮੇਟੋ" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "ਪੂਰੇ ਸ਼ਬਦ ਹੀ" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "ਸਰੋਤ ਟੈਕਸਟ ਵਿੱਚ ਲੱਭੋ" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਵਿੱਚ ਲੱਭੋ" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "ਟਿੱਪਣੀ ਵਿੱਚ ਖੋਜ" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "ਸਾਰਿਆਂ ਨੂੰ ਬਦਲੋ(&A)" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "ਸਾਰਿਆਂ ਨੂੰ ਬਦਲੋ(&a)" #: src/findframe.cpp:150 msgid "&Replace" msgstr "ਬਦਲੋ(&R)" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< ਪਿੱਛੇ(&P)" #: src/findframe.cpp:152 msgid "&Next >" msgstr "ਅੱਗੇ(&N) >" #: src/findframe.cpp:235 msgid "String to find" msgstr "ਲੱਭਣ ਲਈ ਸਤਰ" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "ਬਦਲਵੀ ਸਤਰ" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "ਭਾਸ਼ਾ ਦਾ ਨਾਂ ਜਾਂ ਕੋਡ" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਭਾਸ਼ਾ" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਦੀ ਭਾਸ਼ਾ:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "ਨਵੀਂਆਂ ਸਤਰਾਂ" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "ਪਰੋਜੈਕਟ" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "%s ਬਾਰੇ ਹੋਰ ਜਾਣੋ" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "ਪਰੋਜੈਕਟ ਜੋੜੋ" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "ਪਰੋਜੈਕਟ ਜੋੜੋ" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "ਪੋਆਡਿਟ - ਕੈਟਾਲਾਗ ਮੈਨੇਜਰ" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "ਸੋਧੋ…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "ਨਵਾਂ ਭਾਸ਼ਾ ਅਨà©à¨µà¨¾à¨¦ ਪà©à¨°à©‹à¨œà©ˆà¨•ਟ ਬਣਾਓ" #: src/manager.cpp:145 msgid "Delete the project" msgstr "ਪਰੋਜੈਕਟ ਹਟਾਓ" #: src/manager.cpp:146 msgid "Edit the project" msgstr "ਪਰੋਜੈਕਟ ਸੋਧ" #: src/manager.cpp:176 msgid "Update all" msgstr "ਸਭ ਅੱਪਡੇਟ" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "ਪਰੋਜੈਕਟ ਵਿਚਲੀਆਂ ਸਭ ਕੈਟਾਲਾਗ ਅੱਪਡੇਟ" #: src/manager.cpp:378 msgid "Total" msgstr "ਕà©à©±à¨²" #: src/manager.cpp:379 msgid "Untrans" msgstr "ਨਾ-ਅਨà©à¨µà¨¾à¨¦" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈ" #: src/manager.cpp:381 msgid "Errors" msgstr "ਗ਼ਲਤੀਆਂ" #: src/manager.cpp:382 msgid "Last modified" msgstr "ਆਖਰੀ ਸੋਧ" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "ਡਾਇਰੈਕਟਰੀ ਚà©à¨£à©‹" #: src/manager.cpp:433 msgid "Directories:" msgstr "ਡਾਇਰੈਕਟਰੀ:" #: src/manager.cpp:503 msgid "" msgstr "<ਬੇਨਾਮ>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "" #: src/manager.cpp:540 msgid "Delete project" msgstr "ਪਰੋਜੈਕਟ ਨੂੰ ਹਟਾਓ" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" #: src/manager.cpp:571 msgid "Confirmation" msgstr "ਤਸਦੀਕ" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "ਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕਰੋ…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "ਕੈਟਲਾਗ ਮੈਨੇਜਰ" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "ਮੇਰੀ ਪਸੰਦ(&P)…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "ਸੋਧੋ(&E)" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "ਵਾਪਸ" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "ਵਾਪਿਸ ਕਰੋ" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "ਚੇਪੋ ਅਤੇ ਮਿਲਾਨ ਸਟਾਈਲ" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "ਹਟਾਓ" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "ਸ਼ਬਦ-ਜੋੜ ਅਤੇ ਵਿਆਕਰਨ" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "ਸ਼ਬਦ-ਜੋੜ ਅਤੇ ਵਿਆਕਰਨ ਵੇਖਾਓ" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "ਦਸਤਾਵੇਜ਼ ਦੀ ਹà©à¨£à©‡ ਜਾਂਚ ਕਰੋ" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "ਲਿਖਣ ਦੇ ਨਾਲ ਨਾਲ ਹੀ ਸ਼ਬਦ-ਜੋੜ ਚੈੱਕ ਕਰੋ" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "ਲਿਖਣ ਦੇ ਨਾਲ ਨਾਲ ਵਿਆਕਰਨ ਦੀ ਜਾਂਚ ਕਰੋ" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "ਆਪਣੇ-ਆਪ ਹੀ ਸ਼ਬਦ-ਜੋੜ ਠੀਕ ਕਰੋ" #: src/menus.cpp:219 msgid "Substitutions" msgstr "ਤਬਾਦਲੇ" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "ਤਬਾਦਲੇ ਦਿਖਾਓ" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "ਚà©à¨¸à¨¤ ਕਾਪੀ ਕਰਨਾ/ਚੇਪਣਾ" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "ਸਮਾਰਟ ਕੋਟ" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "ਸਮਾਰਟ ਡੈਸ਼ਾਂ" #: src/menus.cpp:226 msgid "Smart Links" msgstr "ਸਮਾਰਟ ਲਿੰਕਾਂ" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "ਲਿਖਤ ਤਬਾਦਲਾ" #: src/menus.cpp:230 msgid "Transformations" msgstr "ਟਰਾਂਸਫਰਮੇਸ਼ਨ" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "ਅੱਪਰਕੇਸ ਬਣਾਓ" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "ਲੋਅਰਕੇਸ ਬਣਾਓ" #: src/menus.cpp:234 msgid "Capitalize" msgstr "ਅੰਗਰੇਜ਼ੀ ਦੇ ਵੱਡੇ ਅੱਖਰ" #: src/menus.cpp:237 msgid "Speech" msgstr "ਸਪੀਚ" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "ਬੋਲਣਾ ਸ਼à©à¨°à©‚ ਕਰੋ" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "ਬੋਲਣਾ ਰੋਕੋ" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "ਵੇਖੋ(&V)" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "ਟੂਲਬਾਰ ਦਿਖਾਓ" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "ਟੂਲਬਾਰ ਨੂੰ ਕਸਟਮਾਈਜ਼ ਕਰੋ…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "ਪੂਰੀ ਸਕਰੀਨ ਉਤੇ ਜਾਓ" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "ਵਿੰਡੋ" #: src/menus.cpp:263 msgid "Minimize" msgstr "ਘੱਟੋ-ਘੱਟ" #: src/menus.cpp:264 msgid "Zoom" msgstr "ਜ਼ੂਮ" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "ਪੋà¨à¨¡à¨¿à¨Ÿ ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "ਸਭ ਤੋਂ ਅੱਗੇ ਲਿਆਓ" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "ਅਨà©à¨µà¨¾à¨¦à¨• ਬਾਰੇ ਜਾਣਕਾਰੀ" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "ਨਾਂ:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "ਤà©à¨¹à¨¾à¨¡à¨¾ ਨਾਂ" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "ਈਮੇਲ:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "ਤà©à¨¹à¨¾à¨¡à¨¾ ਨਾਂ ਅਤੇ ਈਮੇਲ à¨à¨¡à¨°à©ˆà©±à¨¸, ਜੋ ਹੇਠਾਂ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਨੂੰ GNU gettext ਫਾਇਲਾਂ ਵਿੱਚ Last-" "Translator ਹੈੱਡਰ ਲਈ ਵਰਤਿਆ ਜਾਵੇਗਾ।" #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "ਸੋਧਿਆ ਜਾਂਦਾ ਹੈ" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "ਸੰਭਾਲਣ ਉੱਤੇ ਆਟੋਮੈਟਿਕ ਹੀ MO ਫ਼ਾਈਲ ਕੰਪਾਈਲ ਕਰੋ" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "ਸ਼ਬਦ-ਜੋੜ ਜਾਂਚ ਕਰੋ" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "ਹਮੇਸ਼ਾ ਪਾਠ ਲਿਖਣ ਖੇਤਰ 'ਤੇ ਹੀ ਕੇਂਦਰਿਤ ਕਰੋ" #: src/prefsdlg.cpp:211 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 "" "ਸਤਰਾਂ ਦੀ ਸੂਚੀ ਕਦੇ ਕੇਂਦਰਿਤ ਨਾ ਹੋਣ ਦਿਉ। ਜੇ à¨à¨¦à¨¾à¨‚ ਹੈ ਤਾਂ ਤà©à¨¸à©€à¨‚ ਕੀਬੋਰਡ ਦੇ Ctrl- ਤੀਰ ਬਟਨਾਂ ਨਾਲ ਚੱਲ " "ਸਕਦੇ ਹੋ, ਪਰ ਤà©à¨¸à©€ Tab ਦਬਾਠਬਿਨਾਂ ਵੀ ਤà©à¨°à©°à¨¤ ਲਿਖ ਸਕਦੇ ਹੋ।" #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "ਦਿੱਖ" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "ਪਸੰਦੀਦਾ ਸੂਚੀ ਫ਼ੋਟ ਵਰਤੋਂ:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "ਪਸੰਦੀਦਾ ਪਾਠ ਖੇਤਰ ਫ਼ੋਂਟ ਵਰਤੋਂ:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "UI ਭਾਸ਼ਾ ਬਦਲੋ" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(ਵਿੰਡੋਜ਼ 8 ਜਾਂ ਨਵੀਂ ਚਾਹੀਦੀ ਹੈ)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "ਆਮ" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀ ਵਰਤੋਂ" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "…ਇੰਤਜ਼ਾਮ" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "ਜਦੋਂ ਸਰੋਤ ਤੋਂ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "TM ਤੋਂ ਕੱਚਾ ਅਨà©à¨µà¨¾à¨¦ ਕਰੋ" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "ਸੰਭਾਲੇ ਹੋਠਅਨà©à¨µà¨¾à¨¦:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "ਡਿਸਕ ਉੱਤੇ ਡਾਟਾਬੇਸ:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਫਾਈਲਾਂ ਇੰਪੋਰਟ ਕਰੋ…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਫਾਈਲਾਂ ਇੰਪੋਰਟ ਕਰੋ…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "TMX ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "TMX ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "ਮà©à©œ-ਸੈੱਟ ਕਰੋ" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਅਨà©à¨µà¨¾à¨¦ ਫਾਈਲਾਂ ਚà©à¨£à©‹" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX ਫਾਈਲਾਂ" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਇੰਪੋਰਟ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "…ਵਜੋਂ à¨à¨•ਸਪੋਰਟ" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀ" #: src/prefsdlg.cpp:730 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 "" #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "ਖਾਤੇ" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "ਆਟੋਮੈਟਿਕ ਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕਰੋ" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "ਬੀਟਾ ਵਰਜਨ ਸਮੇਤ" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "ਅੱਪਡੇਟ" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "ਲਾਈਨ ਸਮਾਪਤੀ:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "ਯੂਨੈਕਸ (ਸਿਫਾਰਸ਼ੀ)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "ਤਕਨੀਕੀ" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "" #: src/pretranslate.cpp:218 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 "" #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "ਰੱਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "ਫੋਲਡਰ ਜਾਂ ਫ਼ਾਈਲਾਂ ਇੱਥੇ ਖਿੱਚੋ" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "ਫੋਲਡਰ ਜਾਂ ਫਾਈਲਾਂ ਇੱਥੇ ਖਿੱਚੋ" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "ਫੋਲਡਰ ਜੋੜੋ…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "ਫੋਲਡਰ ਜੋੜੋ…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "ਫ਼ਾਈਲਾਂ ਜੋੜੋ…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "ਫ਼ਾਈਲਾਂ ਜੋੜੋ…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Finder ਵਿੱਚ ਦਿਖਾਓ" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "à¨à¨•ਸਪਲੋਰਰ ਵਿੱਚ ਵੇਖਾਓ" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "ਫੋਲਡਰ ਵਿੱਚ ਵੇਖਾਓ" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "ਮਾਰਗ" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "ਵਾਧੂ ਕੀਵਰਡ" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਦੇ ਪà©à¨°à©‹à¨œà©ˆà¨•ਟ ਦਾ ਨਾਂ" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "ਟੀਮ ਦਾ ਨਾਂ ਅਤੇ ਈਮੇਲ à¨à¨¡à¨°à©ˆà¨¸ ਜਾਂ URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "ਜਿਵੇਂ nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (ਸਿਫਾਰਸ਼ੀ)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਵਿੱਚੋਂ “%s†ਨਿਸ਼ਾਨ ਖà©à©°à¨à¨¿à¨† ਹੈ।" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "" #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਖਾਲੀ ਥਾਂ ਨਾਲ ਸ਼à©à¨°à©‚ ਨਹੀਂ ਹà©à©°à¨¦à¨¾ ਹੈ।" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਖਾਲੀ ਥਾਂ ਨਾਲ ਸ਼à©à¨°à©‚ ਹà©à©°à¨¦à¨¾ ਹੈ, ਪਰ ਸਰੋਤ ਲਿਖਤ ਵਿੱਚ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਦੇ ਅੰਤ ਵਿੱਚ ਨਵੀਂ-ਲਾਈਨ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਨਵੀਂ ਲਾਈਨ ਨਾਲ ਖਤਮ ਹà©à©°à¨¦à¨¾ ਹੈ, ਪਰ ਸਰੋਤ ਲਿਖਤ ਵਿੱਚ ਨਹੀਂ ਹੈ।" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਦੇ ਆਖੀਰ ਵਿੱਚ ਖਾਲੀ ਥਾਂ ਨਹੀਂ ਹੈ।" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਖਾਲੀ ਥਾਂ ਨਾਲ ਖਤਮ ਹà©à©°à¨¦à¨¾ ਹੈ, ਪਰ ਸਰੋਤ ਲਿਖਤ ਵਿੱਚ ਨਹੀਂ ਹੈ।" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "ਵਿਸ਼ਰਾਮ-ਚਿੰਨà©à¨¹ ਦੀ ਜਾਂਚ" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "ਅਨà©à¨µà¨¾à¨¦ “%s†ਨਾਲ ਖਤਮ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "ਅਨà©à¨µà¨¾à¨¦ “%s†ਨਾਲ ਖਤਮ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "ਅਨà©à¨µà¨¾à¨¦ “%s†ਨਾਲ ਖਤਮ ਹà©à©°à¨¦à¨¾ ਹੈ, ਪਰ ਸਰੋਤ ਲਿਖਤ “%s†ਨਾਲ ਖਤਮ ਨਹੀਂ ਹà©à©°à¨¦à©€ ਹੈ।" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "ਮੇਨੂ ਸਾਫ਼ ਕਰੋ" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "ਮੇਨੂ ਸਾਫ਼ ਕਰੋ" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "ਟਿੱਪਣੀ:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "ਅੱਪਡੇਟ" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "ਹਟਾਓ(&D)" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "ਟਿੱਪਣੀ ਹਟਾਓ" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "ਪਰੋਜੈਕਟ ਸੋਧੋ" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "ਪਰੋਜੈਕਟ ਨਾਂ:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "à¨à¨²à¨•" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "ਡਾਇਰੈਕਟਰੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "ਠੀਕ ਹੈ" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "ਫ਼ਾਈਲ(&F)" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "ਨਵਾਂ(&N)…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "&POT/PO ਫ਼ਾਈਲ ਤੋਂ ਨਵਾਂ…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "&POT/PO ਫ਼ਾਈਲ ਤੋਂ ਨਵਾਂ…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "ਖੋਲà©à¨¹à©‹(&O)…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "ਸੱਜਰੇ ਖੋਲà©à¨¹à©‡" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "ਸੱਜਰੇ ਖੋਲà©à¨¹à©‹" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "ਕਲਾਉਡ ਅਨà©à¨µà¨¾à¨¦ ਖੋਲà©à¨¹à©‹â€¦" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "ਕਲਾਉਡ ਅਨà©à¨µà¨¾à¨¦ ਖੋਲà©à¨¹à©‹â€¦" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "ਸ਼à©à¨°à©‚ਆਤੀ ਵਿੰਡੋ(&S)" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "ਸ਼à©à¨°à©‚ਆਤੀ ਵਿੰਡੋ(&S)" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "ਕੈਟਾਲਾਗ ਮੈਨੇਜਰ(&m)" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "ਕੈਟਾਲਾਗ ਮੈਨੇਜਰ(&M)" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "ਬੰਦ ਕਰੋ(&C)" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "ਸੰਭਾਲੋ(&S)" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "…ਵਜੋਂ ਸੰਭਾਲੋ(&a)" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "…ਵਜੋਂ ਸੰਭਾਲੋ(&A)" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "…MO ਵਜੋਂ ਕੰਪਾਈਲ ਕਰੋ" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "ਅੱਪਡੇਟਾਂ ਲਈ ਜਾਂਚ ਕਰੋ…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "ਸੈਟਿੰਗਾਂ…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "ਮੇਰੀ ਪਸੰਦ(&P)" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "ਬਾਹਰ(&x)" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "ਬਾਹਰ" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਉੱਤੇ ਕੰਮ ਕਰਨ ਵਾਲਾ ਹੈ(&w)" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਉੱਤੇ ਕੰਮ ਕਰਨ ਵਾਲਾ ਹੈ(&w)" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "ਟਿੱਪਣੀ ਸੋਧ(&c)" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "ਟਿੱਪਣੀ ਸੋਧ(&C)" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "ਸà©à¨à¨¾à¨…" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "ਲੱਭੋ(&F)…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "ਬਦਲੋ…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "ਅੱਗੇ ਲੱਭੋ" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "ਪਿੱਛੇ ਲੱਭੋ" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "…ਲੱਭੋ ਤੇ ਬਦਲੋ" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "ਅੱਗੇ ਲੱਭੋ" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "ਪਿੱਛੇ ਲੱਭੋ" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "ਚਿਤਾਵਨੀ ਦਿਖਾਓ" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "ਚਿਤਾਵਨੀ ਦਿਖਾਓ" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "ਗ਼ੈਰ-ਅਨà©à¨µà¨¾à¨¦ à¨à¨‚ਟਰੀਆਂ ਪਹਿਲਾਂ(&U)" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "ਗ਼ੈਰ-ਅਨà©à¨µà¨¾à¨¦ à¨à¨‚ਟਰੀਆਂ ਪਹਿਲਾਂ(&U)" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "ਬਾਹੀ ਵੇਖਾਓ" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "ਹਾਲਤ ਪੱਟੀ ਵੇਖਾਓ" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "ਟਰਾਂਸਲੇਸ਼ਨ(&T)" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "ਸਰੋਤ ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ(&U)" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "ਸਰੋਤ ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ(&U)" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Crowdin ਨਾਲ ਸਿੰਕ ਕਰੋ" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "ਕੱਚਾ-ਅਨà©à¨µà¨¾à¨¦(&t)…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "ਹਟਾਠਗਠਅਨà©à¨µà¨¾à¨¦ ਨੂੰ ਕੱਢੋ(&P)" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "ਹਟਾਠਗਠਅਨà©à¨µà¨¾à¨¦ ਨੂੰ ਕੱਢੋ(&P)" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "ਵਿਸ਼ੇਸ਼ਤਾ(&P)…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "ਜਾਓ(&G)" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "ਮà©à¨•ੰਮਲ ਤੇ ਅੱਗੇ(&D)" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "ਮà©à¨•ੰਮਲ ਤੇ ਅੱਗੇ(&D)" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "ਪਿਛਲਾ ਅਨà©à¨µà¨¾à¨¦(&P)" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "ਪਿਛਲਾ ਅਨà©à¨µà¨¾à¨¦(&P)" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "ਅਗਲਾ ਅਨà©à¨µà¨¾à¨¦(&N)" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "ਅਗਲਾ ਅਨà©à¨µà¨¾à¨¦(&N)" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "ਆਨਲਾਈਨ ਮਦਦ(&O)" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "ਆਨਲਾਈਨ ਮਦਦ(&O)" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext ਦਸਤਾਵੇਜ਼" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext ਦਸਤਾਵੇਜ਼" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "ਪੋà¨à¨¡à¨¿à¨Ÿ ਬਾਰੇ(&A)" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "ਇਸ ਬਾਰੇ(&A)" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "ਇਕਸਟੈਸ਼ਨਾਂ ਦੀ ਲਿਸਟ ਅਰਧ ਕਾਮਿਆਂ ਨਾਲ ਲਿਖੋ (ਜਿਵੇ ਕਿ *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "ਸਹਾਇਤਾ :" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "ਸ਼ਬਦ ਲਿਸਟ 'ਚ ਇੱਕ ਇਕਾਈ:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "ਇਹ ਇੱਕ ਵਾਰ ਕਮਾਂਡ ਲਾਇਨ ਨਾਲ ਹਰੇਕ ਇੰਪà©à©±à¨Ÿ ਫਾਇਲ ਲ਼ਈ ਜà©à¨¡à¨¼ ਜਾਵੇਗਾ।\n" "%k ਫਾਇਲ ਨਾਂ ਫੈਲਾ ਦੇਵੇਗਾ।" #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "ਇੰਪà©à©±à¨Ÿ ਫਾਇਲ ਲਿਸਟ ਵਿੱਚ ਇਕਾਈ:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "ਇਹ ਇੱਕ ਵਾਰ ਕਮਾਂਡ ਲਾਇਨ ਨਾਲ ਹਰੇਕ ਇੰਪà©à©±à¨Ÿ ਫਾਇਲ ਲਈ ਜà©à¨¡à¨¼ ਜਾਵੇਗਾ।\n" "%f ਫਾਇਲ ਨਾਂ ਫੈਲਾ ਦੇਵੇਗਾ।" #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "ਸਰੋਤ ਕੋਡ ਅੱਖਰ ਸਮੂਹ:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "ਇਹ ਇੱਕ ਵਾਰ ਕਮਾਂਡ ਲਾਇਨ ਨਾਲ ਹਰੇਕ ਇੰਪà©à©±à¨Ÿ ਫਾਇਲ ਲ਼ਈ ਜà©à¨¡à¨¼ ਜਾਵੇਗਾ।\n" "%c ਫਾਇਲ ਨਾਂ ਫੈਲਾ ਦੇਵੇਗਾ।" #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "ਪਰੋਜੈਕਟ ਨਾਂ ਅਤੇ ਵਰਜ਼ਨ:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "ਭਾਸ਼ਾ ਟੀਮ:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "ਬਹà©à¨µà¨šà¨¨ ਰੂਪ:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "ਇਹ ਭਾਸ਼ਾ ਲਈ ਡਿਫਾਲਟ ਨਿਯਮ ਵਰਤੋਂ" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "ਅੱਖਰ-ਸੈਟ :" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਵਿਸ਼ੇਸ਼ਤਾ" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "ਮà©à©±à¨– ਮਾਰਗ:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "ਸਰੋਤ ਸ਼ਬਦ" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "ਸਰੋਤ ਕੀਵਰਡ" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "gettext ਕੀਵਰਡ ਬਾਰੇ ਜਾਣੋ" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "ਫ਼ਾਈਲ ਖੋਲà©à¨¹à©‹" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "ਫ਼ਾਈਲ ਸੰਭਾਲੋ" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "ਤਸਦੀਕ ਕਰੋ" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "ਸਰੋਤ ਕੋਡ ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "ਬਾਹੀ" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "ਬਾਹੀ ਵੇਖੋ ਜਾਂ ਓਹਲੇ ਕਰੋ" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "ਪਿਛਲੀ ਸਰੋਤ ਲਿਖਤ" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "" #: src/sidebar.cpp:196 msgid "Comment" msgstr "ਟਿੱਪਣੀ" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "ਟਿੱਪਣੀ ਜੋੜੋ" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "ਟਿੱਪਣੀ ਜੋੜੋ" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀ ਵਿੱਚੋਂ ਹਟਾਓ" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀ ਵਿੱਚੋਂ ਹਟਾਓ" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "ਅਨà©à¨µà¨¾à¨¦ ਲਈ ਸà©à¨à¨¾à¨…" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "ਕੋਈ ਮੇਲ ਨਹੀਂ ਲੱਭਿਆ" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "ਕੋਈ ਮੇਲ ਨਹੀਂ ਲੱਭੇ" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "ਇਹ ਲਾਈਨ ਪੋà¨à¨¡à¨¿à¨Ÿ ਦੀ ਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀ ਵਿੱਚ ਲੱਭੀ ਸੀ।" #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "ਪà©à¨°à©‹à¨—ਰਾਮ ਚਲਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "" #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਮੈਮੋਰੀ ਗਲਤੀ: %s (%d)।" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(ਮੂਲ ਭਾਸ਼ਾ ਵਰਤੋਂ)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "ਭਾਸ਼ਾ ਚੋਣ" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "ਆਪਣੀ ਪਸੰਦ ਦੀ ਭਾਸ਼ਾ ਚà©à¨£à©‹" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰਨ ਲਈ Poedit ਨੂੰ ਮà©à©œ ਚਾਲੂ ਕਰਨਾ ਪਵੇਗਾ।" #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "ਆਰਜ਼ੀ ਡਾਇਰੈਕਟਰੀ ਬਣਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ।" #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "ਕੋਈ ਅਨà©à¨µà¨¾à¨¦ ਨਹੀਂ ਹੈ। ਇਹ ਅਸਧਾਰਨ ਹੈ।" #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "POT ਤੋਂ ਅੱਪਡੇਟ ਕਰੋ" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "" #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "%s ਵਰਜ਼ਨ" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "ਨਵਾਂ ਬਣਾਓ" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "POT ਟੈਮਪਲੇਟ ਤੋਂ ਨਵਾਂ ਅਨà©à¨µà¨¾à¨¦ ਬਣਾਓ" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "ਫਾਈਲਾਂ ਦੀ à¨à¨²à¨•" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "ਅਨà©à¨µà¨¾à¨¦ ਫਾਈਲਾਂ ਨੂੰ ਖੋਲà©à¨¹à©‹ ਅਤੇ ਸੋਧੋ" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "ਕਲਾਉਡ ਪਰੋਜੈਕਟ ਦਾ ਅਨà©à¨µà¨¾à¨¦ ਕਰੋ" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "ਸੱਜਰੀਆਂ ਫਾਈਲਾਂ" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "ਸਿੰਕ ਕਰੋ" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "%s ਬਾਰੇ" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s ਮੇਰੀ ਪਸੰਦ" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "%s ਬਾਰੇ" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "ਸਰਵਿਸਾਂ" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "%s ਨੂੰ ਲà©à¨•ਾਓ" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "ਹੋਰਾਂ ਨੂੰ ਲà©à¨•ਾਓ" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "ਸਾਰੇ ਵੇਖੋ" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "%s ਤੋਂ ਬਾਹਰ ਜਾਓ" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "ਮੇਰੀ ਪਸੰਦ…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "ਮੇਰੀ ਪਸੰਦ..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "ਮੇਰੀ ਪਸੰਦ..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "ਲਾਗੂ ਕਰੋ(&A)" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "ਲਾਗੂ ਕਰੋ" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "ਪਿੱਛੇ(&B)" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "ਪਿੱਛੇ" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "ਰੱਦ ਕਰੋ(&C)" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "ਸਾਫ਼ ਕਰੋ(&C)" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "ਸਾਫ਼ ਕਰੋ" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "ਕਾਪੀ ਕਰੋ" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "ਕੱਟੋ(&t)" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "ਕੱਟੋ" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "ਸੋਧ" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "ਬਾਹਰ(&Q)" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "ਮਦਦ" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "ਨਵਾਂ(&N)" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "ਨਵਾਂ" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "ਨਹੀਂ(&N)" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "ਨਹੀਂ" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "ਠੀਕ ਹੈ(&O)" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "ਖੋਲà©à¨¹à©‹â€¦" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "ਖੋਲà©à¨¹à©‹(&O)..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "ਖੋਲà©à¨¹à©‹â€¦" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "ਚੇਪੋ(&P)" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "ਚੇਪੋ" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "ਮੇਰੀ ਪਸੰਦ" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "ਪਰਤਾਓ(&R)" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "ਤਾਜ਼ਾ ਕਰੋ" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "ਇਸ ਵਜੋਂ ਸੰਭਾਲੋ(&S)" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "ਵਜੋਂ ਸੰਭਾਲੋ" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "ਸਭ ਚà©à¨£à©‹(&A)" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "ਸਭ ਚà©à¨£à©‹" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "ਵਾਪਿਸ ਲਵੋ(&U)" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "ਹਾਂ(&Y)" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "ਹਾਂ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "ਖੱਬੇ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "ਸੱਜੇ" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/co.mo0000644000175100001660000017636115011674363011075 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-¨O ø‘’-’J’C`’¤’1º’5ì’q"“G”“‰Ü“ f”q” ‚”G” Ք┠ù”• • •#•+• 3•=•S• i• t• •Š•¦••Ǖޕõ•ü•– ––-–C–J–O–^–m–v– – ‰–•–¤–¼–Ô–!ã–!—'—-— 4— @—M—!e—!‡—©—¿— Õ—â—!ê—! ˜!.˜!P˜r˜‰˜  ˜ª˜¯˜Ϙ#à˜ ™ ™™1™7™ =™H™_™w™™#¨™Ì™!㙚š5š#Nšrš#š±š$¹š!Þš$› %›F›W›@f›2§›Ú›2ó›-&œTœ\œ&eœ5Œœ2œ$õœ=X`hsÜJòQ=ž'ž·ž Àž©Ìž vŸ Ÿ.ŽŸ+½Ÿ1éŸ. J ] z — #² Ö í (¡,1¡^¡!|¡ž¡¼¡Õ¡Þ¡ï¡¢¢*¢1¢8¢L¢+`¢%Œ¢#²¢Ö¢ ߢê¢ £(£";£M^£ ¬£†º£A¤H¤\¤z¤ޤ&¬¤<Ó¤<¥,M¥z¥‰¥-¤¥'Ò¥ú¥¾ ¦̦Õ¦ñ¦$ §2§3:§n§$w§!œ§$¾§ã§ù§ ¨N#¨ r¨ “¨* ¨u˨LA©@Ž©Ï©æ©ü©;ªJª0\ªBª#Ъ#ôª«« 6«@«V«l««–«­« Ä« Ò«ß«ø«€ ¬¬«¬Ê¬&L­-s­3¡­ Õ­á­é­ï­®®5®J®a®x®IŒ® Ö®!÷®-¯;G¯qƒ¯õ¯ °. °3O°:ƒ°&¾°3å° ±!#±(E±An±z°±+²2²B²T²l²²²µ²Ųײè²ù²³ #³D³M³ h³t³}³Œ³’³«³&ij2ë³´§!´ÈÉ´´’µG¶+O¶{¶$™¶¾¶$ܶ·7· W·x· ·"¢·Å·(â· ¸¸ -¸7¸@¸I¸ g¸q¸=‹¸1ɸû¸¹(¹B¹K¹.`¹%¹µ¹Ĺà¹$ÿ¹$ºL*ºwºEˆºκœâº9»¹»Ì»1ß»$¼6¼ J¼W¼ u¼&¼¦¼®¼ü ؼ â¼ì¼È½нÕ½ õ½¾ !¾,¾F¾]¾t¾x¾)”¾x¾¾7¿'S¿={¿¹¿-Ø¿%À,ÀIÀMÀÑQÀ#Á!@Á bÁ+oÁ›Á!ºÁÜÁíÁ Â Â>ÂFÂNÂVÂ\ÂsЦ™ÁÂ[Ã#dÈÃSÃäÃ@÷Ã$8Ä‚]ÄfàÄGÅOÅWlÅÄÅÕÅ#ÜÅRÆSÆïYÇ8IÈ1‚È´È ÄÈ ÏÈ+ÛÈ-É5ɇGÉžÏɃnÊ òÊ ýÊ ËË01ËbË{˔˳ËÄË ÕËöË Ì Ì#Ì <Ì FÌgÌJlÌ·ÌÉÌ ÏÌÚÌðÌ ÍÍ+Í+FÍrÍ‚Í'’Í ºÍÅÍ×ÍéÍ Î4ÎDÎKÎkÎùÎ Ï Ï"Ï=ÏXÏoφÏÏ·ÏÑÏSéÏ=ÐRÐeÐ'wПÐ'·Ð2ßÐ%Ñ%8Ñ^ÑqÑ „Ñ ŽÑ›Ñ µÑÖÑðÑ Ò!Ò?ÒXÒtÒ#ŒÒ°ÒÊÒäÒýÒÓ%Ó 4ÓAÓPÓ#aÓ…Ó#Ó ÁÓ ÎÓØÓïÓ ÿÓ Ô)Ô#HÔlÔ)ŠÔ#´ÔØÔ-öÔ•$Õ.ºÕ%éÕÖ!Ö;Ö#RÖvÖ#ŠÖ®Ö ÂÖ^ÎÖ-×E×Z×lׄ×× ½×9ÞרE(Ø nØ {Ø©†ØH0Ù‘yÙ ÚÚ%/ÚUÚeÚ(€ÚB©ÚìÚ ðÚ;þÚ0:ÛkÛÖƒÛZÜRzÜFÍÜ,ÝÇAÞE ßAOßT‘ßdæßeKà'±à-Ùà4áG<ák„áaðá0RâUƒâMÙâM'ã3uã+©ãÕã&sä-šä7Èä4å;5åDqåv¶å3-æ]aæM¿æ` ç—nçfè€mègîè¡VéîøéAçê)뀹ëv:ì±ì¸ìÇì ßíî î*î@îWîvîZ’î‡íîCuï/¹ïéïð$ð­>ðìð}ñ¡ñ2ò6òJò8Qò)Šò´òÇòåòúò óó0ó-@ó0nó!Ÿó!Áóãóøó ô !ôBô_ôgô*ô¬ô7Ëô6õ*:õ!eõ#‡õ0«õ0Üõ, öx:ö'³ö Ûöçö ÷÷%÷<÷Z÷j÷)~÷¨÷¼÷Å÷?Í÷ øø1øPøpøFtøF»ørùAuù ·ùHØù†!ú¨ú ­ú »ú6Åú#üú û$,û6Qû ˆû©û®û´ûºûÂûÈûÐûØûÜûàûåûìû þû ü ü)ü1ü:üIüdüxü–ü¦ü6ºü|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-08 10:16 Last-Translator: Language-Team: Corsican Language: co_FR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: co X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (mudificatu) (micca arregistratu)%d occurrenza di testu%d occurrenze di testu%d entrata%d entrate%d entrata hè stata pretradutta.%d entrate sò state pretradutte.%d sbagliu%d sbaglii%d sbagliu hè accadutu.%d sbaglii sò accaduti.%d sbagliu hè accadutu :%d sbaglii sò accaduti :%d prublema hè statu scupertu cù e catene d’origine.%d prublemi sò stati scuperti cù e catene d’origine.%d prublema trovu in a traduzzione.%d prublemi trovi in a traduzzione.%i linea di u schedariu « %s » ùn hè micca stata caricata bè.%i linee di u schedariu « %s » ùn sò micca state caricate bè.Furmatu %sPreferenze di %sFurmatu %s%s traduzzione hè stata impurtata.%s traduzzioni sò state impurtate.&Apprupositu&Apprupositu di Poedit&Appiecà&Ritornu&Abbandunà&Spurgulà&ChjodeCu&pià&Squassà&Fattu eppò seguente&Fattu eppò seguente&Mudificà&Schedariu&Circà…&Ducumentazione GNU gettext&Ducumentazione GNU gettext&Và&Gruppà da u contestu&Gruppà da u contestuAi&utu&Novu&Novu…&Seguente >Traduzzione &SeguenteTraduzzione &seguenteI&nnò&VaiAiutu &InlineaAiutu &inlinea&Apre…&Apre…&Incullà&Preferenze&Preferenze…Traduzzione &PrecedenteTraduzzione &precedente&Pruprietà…Sp&urgulà e traduzzioni cacciateSp&urgulà e traduzzioni cacciate&Esce&Rifà&RimpiazzàA&rregistrà&Arregistrà cù u nome&Affissà l’occurrenze di testu&Affissà l’occurrenze di testu&Finestra d’accolta&Finestra d’accolta&Traduzzione&Disfà&Elementi micca tradutti in primu&Elementi micca tradutti in primu&Mudificà da u testu d’origine&Mudificà da u testu d’origine&Validà e traduzzione&Validà e traduzzione&Affissà&Sì(Impiegà a lingua predefinita)(micca cunnessu)(richiede Windows 8 o più recente)< &PrecedenteApprupositu di %sContuContiAghjunghjeAghjunghje un CummentuAghjunghje schedarii…Aghjunghje cartulari…Aghjunghje un prughjettuAghjunghje un caratteru genericu…Aghjunghje un cummentuAghjunghje u cartulare à a listaAghjunghje schedarii…Aghjunghje cartulari…Aghjunghje un prughjettuAghjunghje un caratteru genericu…Parolle chjave addiziunaleIndicadori xgettext addizziunali :EspertuParametri esperti d’estrazzione…Parametri esperti d’estrazzioneParametri esperti d’estrazzione…Tutti i schedarii di traduzzioneTutti i cummentiTutte e cateneImpiegà dinù parolle chjave predefinite per e lingue accettateDà a primura à u testu piuttostu chì à a listaUn sbagliu hè accadutu.Un elementu in a lista di schedarii d’entrata :Un elementu in a lista di e parolle chjave :AspettuAppiecàCurrispundenze apprussimative da a MdTDa veru, vulete squassà l’estrattore « %s » ?Da veru, vulete viutà a memoria di traduzzione ?Cuntrollà autumaticamente i rinnoviPruduce autumaticamente u schedariu MO à l’arregistramentuRitornuChjassu di basa :E versioni « beta » cuntenenu l’ultimi funzioni è migliuramenti ma ponu esse appena menu stabule.Mette Tuttu di FronteSchedariu PO alteratu : forma plurale msgstr impiegata senza msgid_pluralSchedariu PO alteratu : forma singulare msgstr impiegata inseme cù msgid_pluralMarca rotta in a catena di traduzzione.SfugliàNavigazioneDi manera predefinita, i resulti inesatti sò riempiuti dinù ma sò marcati « À rivede ». Attivà st’ozzione per riempie solu e currispundenze chì sò perfette.AbbandunàAbbandonu…Ùn si pò micca creà u cartulare timpurariu.Impussibule d’eseguisce u prugramma : %sÙn si pò pretraduce da una lingua scunnisciuta.Ùn si pò pretraduce senza testu d’origine.Tuttu in maiusculeA&mministratore di CataloghiA&mministratore di cataloghiGhjestiunariu di cataloghiCambià a lingua di l’interfacciaGruppu di caratteri :Verificà u ducumentu avàVerificà a gramatica cù l’ortugrafiaVerificà l’ortugrafia durante a scritturaCuntrollà e nove versioni…Circà i sbaglii in a traduzzioneCuntrollà e nove versioni…Verificà l’ortugrafiaSquassàViutà sta listaViutà a traduzzioneViutà sta listaViutà a traduzzioneChjodeNivuluOccurrenze di testuOccurrenze di testuCullaburate in linea cù d’altre persone.Racolta di i schedarii d’origine…Cumanda per estrae e traduzzioni :CummentuCummentu :I cummenti preffissati da :Trasfurmà in un schedariu MO…Compilà ver di…Schedarii di traduzzione cumpilatiSceglie l’ozzioni d’estrazzione da i schedarii d’origine in Pruprietà.CunfirmazioneCunnettate Poedit cù e piattaforme di lucalizazione di u nivulu per sincrunizà senza straziu e traduzzioni chì ci sò amministrate.CupiàCupià da singulareCupià da u testu d’origineCupià da singulareCupià da u testu d’origineCurrege l’ortugrafia autumaticamenteImpussibule di scaricà i detaglii di u prughjettu Localazy.Ùn si pò micca caricà u schedariu, forse hè dannighjatu.Ùn si pò micca arregistrà u schedariu %s.Creà una novaCreà una nova traduzzioneCreà una nova traduzzione da un mudellu POT.Creà un novu prughjettu di traduzzioniSbagliu da CrowdinCrowdin hè una piattaforma di ghjestione in linea di traduzzione è un attrezzu di traduzzione cuuperativa. Impieghemu Crowdin, ancu noi, per traduce Poedit in lingue numerose, è ci piace.&TagliàEstrattori persunalizati :Estrattori persunalizati :Persunalizà a barra d’attrezzi…TagliàDimensione di a banca di dati nant'à u dischettu :SquassàSquassà da a memoria di traduzzioneSquassà l'attrezzu d'estrazzioneSquassà da a memoria di traduzzioneSquassà u prughjettuSquassà u cummentuSquassà u prughjettuA squassatura di u prughjettu ùn squasserà micca i schedarii di traduzzione.Identificazione di e sfarenze…Cartulari :Vulete squassà u prughjettu « %s » ?Vulete ricaricà u schedariu da u discu ? I vostri cambiamenti micca arregistrati seranu persi s’è vo fate cusì.Vulete caccià tutte e traduzzioni chì sò uguale à u testu d’origine ?Vulete toglie tutte e traduzzioni chì ùn sò più impiegate ?Ùn arregistrà &miccaÙn arregistrà miccaÙn affissà piùÙn marcà micca e catene uguale cum’è « À rivede »Ùn affissà piùScaricamentu in corsu di l'ultime traduzzioni…Scaricà e traduzzioni ùn hè micca pussibule cù stu prughjettu.Sguillà quì cartulari o schedariiSguillà quì cartulari o schedarii&EsceEspurtà versu &HTML…Mudificà&Mudificà u Cummentu&Mudificà u cummentuMudificà u CummentuMudificà u cummentuMudificà u prughjettuMudificà u prughjettuMudificazioneMudificà…Indirizzu elettronicu :Modu di screnu sanuL’entrate in stu schedariu anu un contu di forme plurale sfarente chì ciò chì hè scrittu in l’intestatura di u schedariuElementi cù Sbaglii in PrimuElementi cù &sbaglii in primuEntrate cù sbaglii sò marcate di rossu in a lista. I detaglii di u sbagliu seranu videvule quandu l'entrata serà selezziunata.Sbagliu à l’apertura di u schedariuSbagliu à l’arregistramentu di u schedariuSbagliu à u caricamentu di u schedariu XLIFF : %sSbagliu : SbagliiTuttuCurrispundenze esatte da a MdTChjassi esclusiEspurtà ver di TMX…Espurtà cum’è…Espurtà versu HTML…Espurtà ver di TMX…Espurtà versu HTMLFiascu à l’espurtazione di a memoria di traduzzione ver di « %s ».Espurtazione di i traduzzioni…Estrae da i schedarii d’origineEstrae l’annutazioni per i traduttori da :Estrae testu da i schedarii d’origine in sti cartulari :Estrazzione di e catene traducevule da u schedariu %s…Estrazzione di e catene traducevule da i schedarii %s…Installazione di l’estrattoreEstrattoriFiascu di cumunicazione cù u prucessu Poedit.Fiascu per estrae e catene da u codice d’origine.Fiascu per caricà u schedariu cù e traduzzioni estratte.Fiascu per unisce i cataloghi gettext.Fiascu per mudificà a memoria di a traduzzione: %sSchedariuÙn si pò micca apre u schedariuU schedariu « %s » ùn esiste micca.U schedariu « %s » ùn hè micca un schedariu di traduzzione.U schedariu « %s » pò solu esse lettu è ùn pò micca esse arregistratu. Ci vole à arregistrallu cù un altru nome.CircàCircà seguenteCircà precedenteCircà è rimpiazzà…Circà in i cummentiCircà in i testi d'origineCircà in e traduzzioniCircà seguenteCircà precedenteCurrege a LinguaCurrege a linguaCurrege l’intestaturaCurrege a rubricaSchedarii di traduzzione FlutterForma %iForma %i (micca impiegata)GNU gettextGeneraleSchedarii HTMLAiutuPiattà a barra lateralePiattà a barra di statuPiattà stu messaghju di nutificazioneCumu funziuneghja a sincrunizazione in u nivulu ?IDS’è voi cuntinuate cusì, tutte e traduzzioni marchate cum’è cacciate seranu tolte per sempre. Ci vulerà à traducele torna s’elle sò aghjunte à l’avvene.S’è vo avete precedentemente ricusatu l’accessu à i vostri schedarii, pudete permettelu avà in e Preferenze di u sistema > Sicurità è vita privata > Cunfidenzialità > Schedarii è cartulari.S’è vo avete precedentemente ricusatu l’accessu à i vostri schedarii, pudete permettelu via i Parametri di u sistema > Cunfidenzialità è sicurità > Schedarii è cartulari.IgnuràÙn sfarenzià micca maiuscule è minusculeImpurtà à partesi di TMX…Impurtà schedarii di traduzzione…Impurtà à partesi di TMX…Impurtà schedarii di traduzzione…Impurtazione da « %s »…Fiascu à l’impurtazione di a memoria di traduzzione.Impurtazione di i traduzzioni…In : %sInchjude e versioni « beta »Maiuscule/minuscule cuntradittorieSpaziu biancu cuntradittoriuInfurmazione apprupositu di u traduttoreInstallàSchedariu inaccettevuleChjama :PrublemaPrublemiSchedarii di traduzzione JSONCunservàNome o codice di a linguaA lingua di a traduzzione hè listessa chè quella d'origine.A lingua di a traduzzione ùn hè micca definita.Lingua di a traduzzione :Scelta di a linguaSquadra di traduzzione :Lingua :Ultima mudificazionePer amparà nant’à e parolle chjave gettextPer amparà nant’à e forme pluraleSapene di piùSapene di più nant’à %sSapene di più nant'à CrowdinSapene di più nant’à GNU gettextLineaA linea %d di u schedariu « %s » hè alterata (dati %s micca accettati).Fine di linea :Lista di l’estensioni staccate da punti-virgule (i.e. *.cpp;*.h) :Caricà l’ingleseLocalazy hè una piattaforma di lucalizazione autumatizata chì permette à ognunu di traduce facilmente i so prudutti è u so cuntenutu in parechje lingue.I schedarii MO ùn ponu micca esse mudificati cù Poedit.Mette in minusculeMette in maiusculeCreà una nova traduzzione cù stu schedariu POT.Intestatura malfuttuta : « %s »Amministrà i contiUrganizà…Integrazione di e sfarenze…ImpuculìNome di prughjettu per sta traduzzioneNome :Incumpleta s&eguenteIncumpleta s&eguenteÀ rivedeÀ rivedeSbagliu di reta : %s (%d)Ùn dà mai a primura à a lista di catene. Osinnò, ci vole à impiegà e Ctrl-fleccie per navigà, ma hè ancu pussibule di scrive u testu cusì, senza appughjà nant’à Tab per cambià a primura.NovuNovu da un schedariu P&OT/PO…Catene noveNovu da un schedariu P&OT/PO…Frase noveCatene nove à traduce :Forma plurale seguenteForma plurale seguenteNòNisuna currispundenza trovaNisuna entrata ùn hè stata pretradutta.Alcuna infurmazione nant’à l’occurrenze di sta catena in u testu d’origine ùn hè stata pruvista in u schedariu.Nisuna currispundenza trovaÙn ci hè penseri cù sta traduzzione.Ùn ci hè micca prughjettu di traduzzione in u vostru contu.Nisuna infurmazione d’adopruTutte e forme plurale ùn sò micca tradutte.Micca auturizatu, autenticassi torna.Annutazioni per i traduttoriVaiUnuAttivà st’ozzione solu s’è vo site fidanciu in a qualità di a vostra MdT. Di regula, tutte e sugestioni chì venenu da a MdT sò marcate « À rivede » è devenu esse verificate prima d’impiegalle.Riempie solu e catene ugualeApre a traduzzione in u nivulu…Apre RecenteApre è mudificà schedarii di traduzzione.Apre a traduzzione in u nivuluApre a traduzzione in u nivulu…Apre u schedariuApre cù l'EditoreApre cù l'editoreApre recenteApre u schedariu di referenzaApre…Apre…OzzioniAltruIncumpleta p&recedenteIncumpleta p&recedenteSchedarii di Traduzzione POMudelli di traduzzione POTI schedarii POT sò solu mudelli è ùn cuntenenu micca traduzzione. Per fà una traduzzione, create un novu schedariu PO appughjatu nant’à u mudellu.IncullàIncullà è fà currisponde u stiluChjassiFà a mudificazione da i testi d’origine versu tutti i schedarii di u prughjettu.Permessu ricusatu.U campu di sustituzione « %s » hè assente in a traduzzione.Esattezza di i campi di sustituzioneAprite è mudificate piuttostu u schedariu PO currispondente. Quandu vo l’arregistrarete, u schedariu MO serà mudificatu dinù.In primu locu, ci vole à arregistrà u schedariu. Osinnò sta sezzione ùn pò micca esse mudificata.PluraleTraduzzioni di forma pluraleL’espressione di e forme plurale impiegata da u schedariu hè strana per a lingua %s.Forme plurale :PoeditPoedit - Ghjestiunariu di cataloghiPoedit hà currettu autumaticamente u cuntenutu gattivu in u schedariu « %s ».Poedit pò pruvà di riempie e nove catene solu da e vostre traduzzioni di stu schedariu osinnò da a memoria di traduzzione sana. L’impiegu di a MdT ùn serà micca efficiente s’ella hè guasi viota, ma serà più bona quandu ci serà parechje traduzzioni.Poedit ùn pò micca affissà u testu d’origine induve a catena hè impiegata perchè u schedariu ùn hè micca dispunibule in u loca referenzatu osinnò ghjè una referenza simbolica chì ùn appunteghja micca ver di un schedariu reale.Poedit hè un editore di traduzzione faciule à aduprà.Poedit ùn pò micca apre u schedariu « %s ».Pre-&traduce…PretraducePretraduttu%u catena pretradutta%u catene pretraduttePretraduzzione da a memoria di traduzzione…Pretraduzzione…A pretraduzzione riempie autumaticamente e catene micca tradutte da e currispundenze uguale o simile trove in a memoria di traduzzione.A pretraduzzione richiede chì u testu d’origine sia dispunibule. Ùn funziuneghja micca s’è l’identificazioni sò impiegate solu, senza u testu reale.A pretraduzzione richiede chì a lingua di u testu d’origine sia cunnisciuta. Poedit ùn pò micca determinalla in stu schedariu.PreferenzePreferenze…Preferenze…Approntu di e catene…Cunservà u furmatu di i schedarii chì esistenuForma plurale precedenteForma plurale precedenteU testu d’origine precedenteMudificatu nanzuMudificatu nanzuNome è versione di prughjettu :Nome di prughjettu :Prughjettu :PrughjettiCuntrolli di puntuazioneSpurgulàSpurgulà e traduzzioni cacciateEsceA lettura di u cuntenutu di u schedariu hà fiascata cù stu sbagliu : %sSchedarii recenteRifàAttualizàRicaricà u schedariuRicaricà u schedariuRestu : %dCacciàCaccià e traduzzioni uguale à l’origineCaccià e traduzzioni uguale à l’origineCatene cacciateCatene cacciateCatene cacciate (mai più impiegate) :Rimpiazzà&Tuttu rimpiazzà&Tuttu rimpiazzàFrasa di rimpiazzamentuRimpiazzà…L’intestatura Forme-Plurale richiesta hè assente.ViutàViutà a memoria di traduzzioneA viotatura di a memoria di traduzzione squasserà tutte e traduzzioni chì ci sò arregistrate. Ùn si puderà micca disfà st’operazione.Palisà cù FinderVerificàArregistràArregistrà &cù u nome…Arregistrà &cù u nome…Arregistrà quantunqueArregistrà quantunqueArregistrà cù u nomeArregistrà cù u nome…Arregistrà i cambiamentiArregistrà u schedariuL’arregistramentu in un altru locu ùn hè micca accettatu per i schedarii XCLOC.Catture di screnu :T&uttu selezziunàTuttu selezziunàSelezziunà i schedarii TMX à impurtàSelezziunà u cartulareSelezziunà un schedariu di traduzzioneSelezziunà i schedarii di traduzzione à impurtàSelezziunà un mudellu di traduzzioneSelezziunà a vostra lingua preferitaDefinisce a LinguaDefinisce a linguaParametriParametri…Affissà a barra lateraleAffissà Ortugrafia è GramaticaAffissà a barra di statuAffissà &ID di a catenaAffissà i SustituzioniAffissà a barra d’attrezziAffissà l’avertimentiAffissà in l’espluratoreAffissà in u cartulareAffissà o piattà a barra lateraleAffissà a barra lateraleAffissà a barra di statuAffissà &ID di a catenaAffissà l’avertimentiBarra lateraleAutenticazioneScunnettassiAutenticazioneCunnettesi à %sCunnittitevi à u contu di u nivuluAutenticassi à CrowdinCunnittitevi à u contu di u nivuluScunnettassiSingulareCupià/Incullà astutuLineette astuteLiami astutiVirgulette astute&Classificà da l’ordine di u schedariuClassificà da u testu d’&origineClassificà da a &traduzzione&Classificà da l’ordine di u schedariuClassificà da u testu d’&origineClassificà da a &traduzzioneGruppu di caratteri di u testu d’origine :L’estrattori di testu sò impiegati per truvà e catene traducevule in i schedarii di testu d’origine, è estraelle per ch’elle sianu tradutte.U testu d’origine ùn hè micca dispunibule.Ùn si pò truvà u testu d’origineTestu d’origineID di u testu d’origineTestu d'origine — %sParolle chjave di testi d’origineChjassi d’origineParolle chjave di testi d’origineChjassi d’origineDiscussioneU cuntrollu d’ortugrafia hè disattivatu, perchè u dizziunariu %s ùn hè micca installatu.Ortugrafia è GramaticaPrincipià a letturaPiantà a letturaTraduzzioni pruviste :Cuntestu di catena : %sIdentificazione di catena : %sLonghezza di catena in caratteriLonghezza di catena in caratteri : traduzzione | origineFrasa à circàI prughjetti Crowdin basati nant’à catene ùn sò micca accettati.SustituzioniSugestioniE sugestioni ùn sò micca dispunibule s’è a lingua di traduzzione ùn hè micca definita bè. D’altre funzioni, cum’è e forme plurale, ponu esse ancu affettate.U campu di sustituzione « %s » ùn hè micca in u testu d’origine.Accetteghja tutte e lingue di prugrammazione ricunnisciute da l’attrezzi GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript è altre).SincrunizàSincrunizà cù CrowdinSincrunizà a traduzzione cù CrowdinSincrunizazioneSbagliu di sincrunizazioneFiascu di a sincrunizazione cù Crowdin.Sbagliu di sintassa in l’intestatura Forme-Plurale (« %s »).MdTSchedarii TMXPiglià e catene traducevule da un mudellu POT chì esiste.Nome di a squadra è indirizzu elettronicu o URLRimpiazzamentu di testuA MdT ùn cuntene alcuna catena 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.U schedariu TMX hè malfuttutu.I cambiamenti fatti da l’altra appiecazione seranu persi s’è vo arregistrate.U schedariu ùn pò micca esse trasfurmatu in furmatu MO è impiegatu.U schedariu cuntinia elementi in doppiu, ciò ch’ùn hè micca permessu in i schedarii PO è puderia impedisce u schedariu d’esse impiegatu. Poedit hà currettu u prublema, ma ci vole à verificà e traduzzioni di l’elementi chì sò marcati « À rivede » è curregeli s’ella hè bisognu.U schedariu ùn pò micca esse arregistratu cù u gruppu di caratteri « %s » cum’è indicatu in i parametri di traduzzione. Hè statu arregistratu in UTF-8 è u parametru hè statu mudificatu.U schedariu hè statu mudificatu. Vulete arregistrà i cambiamenti ?U schedariu si trova in un furmatu micca ricunnisciutu da Poedit.U schedariu hè statu trasfurmatu in furmatu MO, ma forse ùn funziunerà micca bè.U schedariu hè statu arregistratu è trasfurmatu in furmatu MO, ma ùn puderà micca funziunà bè.U schedariu hè statu arregistratu bè, ma ùn pò micca esse trasfurmatu in furmatu MO è impiegatu.U schedariu hè statu arregistratu bè.Ùn si pò micca apre u schedariu « %s ».Ùn si pò micca arregistrà u schedariu « %s ».U schedariu « %s » hè statu mudificatu da un’altra appiecazione.U vechju testu d’origine (nanzu ch’ellu sia cambiatu) chì currisponde à a traduzzione imprecise avà.A manera a più simplice di riempie stu schedariu cù traduzzioni hè di mudificallu da un POT :A traduzzione ùn principia micca cù un spaziu.Ci hè un saltu di linea à a fine di a traduzzione, ma micca in u testu d’origine.Ci hè un spaziu à a fine di a traduzzione, ma micca in u testu d’origine.A traduzzione finisce cù « %s », ma u testu d’origine, cù « %s ».Un saltu di linea manca à a fine di a traduzzione.Un spaziu manca à a fine di a traduzzione.A traduzzione hè pronta à l’approdu, ma %d entrata ùn hè micca tradutta.A traduzzione hè pronta à l’approdu, ma %d entrate ùn sò micca tradutte.A traduzzione hè pronta à l'approdu.A traduzzione duveria finisce cù « %s ».A traduzzione ùn duveria micca finisce cù « %s ».A traduzzione duveria principià cum’è una frasa.A traduzzione duveria principià cù una lettera minuscula.A traduzzione principia cù un spaziu, ma micca u testu d’origine.E traduzzioni sò state marcate « À rivede », perchè sò forse imprecise. Ci vole à verificà a so accuratezza.Ùn ci hè micca elementi. Pare stranu st’affare.Ci hè statu un prublema durante a creazione di u schedariu (ma hè statu creatu quantunque).Un sbagliu hè accadutu à l’incaricamentu di e traduzzioni versu Localazy.Ci era sbaglii durante u caricamentu di u schedariu. Forse qualchì datu hè assente o alteratu.Sti parametri affettanu a forma interna di i schedarii PO. Accunciateli s’è vo avete una dumanda particulare, per indettu, un cuntrollu di versione.U schedariu JSON ùn hè micca un schedariu di traduzzione è ùn pò micca esse mudificatu da Poedit.St’azzione squasserà tutte e traduzzioni chì currispondenu esattamente à u testu d’origine. Ùn pò micca esse invertita.Stu schedariu cuntene entrate cù forme plurale, ma l’intestatura Forme-Plurale ùn hè micca pronta.Stu schedariu impiegheghja l’identificazioni di catena invece di u testu d’origine. Per aiutavvi, Poedit pò caricà testi inglese da u schedariu « %s ».Ghjè a cumanda impiegata per lancià l’estrattore. %o serà rimpiazzatu da u nome di schedariu d’esciuta, %K da a lista di e parolle chjave, %F da a lista di i schedarii d’entrata è %C da u gruppu di caratteri (fighjate inghjò).Sta catena hè stata trova in a memoria di traduzzione di Poedit.Què serà aghjuntu à a linea di cumanda solu s’è ci hè un gruppu di caratteri in u testu d’origine. %c serà rimpiazzatu da stu valore.Què serà aghjuntu à a linea di cumanda una volta per ogni schedariu d’entrata. %f serà rimpiazzatu da u nome di schedariu.Què serà aghjuntu à a linea di cumanda una volta per ogni parolla chjave. %k serà rimpiazzatu da a parolla chjave.TutaleTrasfurmazioniL’elementi traducevule ùn sò micca aghjunti manualmente in u sistema Gettext, ma sò estratti autumaticamente da u testu d’origine. Cusì, sò sempre attualizati è esatti. Di bona regula, i traduttori impieganu i schedarii di mudellu PO (POT) appruntati da u sviluppatore.Traduce u prughjettu di u nivuluTraduttu : %d frà %d (%d %%)TraduzzioneLingua di TraduzzioneMemoria di TraduzzioneTraduzzione « À ri&vede »Pruprietà di a traduzzioneU schedariu di traduzzione hè dighjà à livellu è alcuna catena ùn hè stata cambiata.U schedariu di traduzzione hè statu mudificatu cù %s cambiamentu.U schedariu di traduzzione hè statu mudificatu cù %s cambiamenti.A basa di dati di a memoria di traduzzione hè alterata : %s (%d).Sbagliu di a memoria di traduzzione : %s (%d).Traduzzione « À ri&vede »Pruprietà di a traduzzioneSugestioni di traduzzioneE sugestioni di traduzzione richiedenu chì u testu d’origine sia dispunibule. Ùn funziuneghjanu micca s’è l’identificazioni sò impiegate solu, senza u testu reale.E sugestioni di traduzzione richiedenu chì a lingua di u testu d’origine sia cunnisciuta. Poedit ùn pò micca determinalla in stu schedariu.Traduzzione — %sÙn si pò mudificà e traduzzioni à partesi di u testu d’origine, perchè alcunu testu ùn hè statu trovu in u locu indicatu in e pruprietà di u schedariu.DuiUTF-8 (ricumandatu)DisfàCuntenutu assente à l’ispensata in u schedariu XCLOC.Un anumalia imprevista hè accaduta : %sUnix (ricumandatu)Sbagliu Crowdin scunnisciutu.Sbagliu scunnisciutuMicca traduttuMudificàRiassuntu di e mudificazioniTuttu mudificàMudificà tutti i cataloghi di stu prughjettuMudificà tutti i cataloghi in stu prughjettu ?Mudificà da un schedariu P&OT…Mudificà da un schedariu P&OT…Mudificà da u testuMudificà da un POTMudificà da u testuMudificà da u testu d’origineRiassuntu di e mudificazioniRinnoviFiascu di a mudificazioneMudificazione di i cataloghi di prughjettuMudificazione di e traduzzioniMudificazione di l’infurmazioni di l’utilizatore…Fiascu di l’incaricamentu di e traduzzioni versu %s.Incaricamentu di e traduzzioni versu %s…Incaricamentu di e traduzzioni…Impiegà un espressione predefinitaImpiegà una grafia persunalizata per a lista :Impiegà una grafia persunalizata per i testi :Impiegà e regule predefinite per sta linguaAduprate ste parolle chjave (nomi di funzioni) per ricunnosce e catene chì sò à traduce in i schedarii d’origine :Impiegà a memoria di traduzzione (MdT)ValidazioneRisultati di a validazioneVersione %sAffissà i detaglii…Affissà i detaglii…In attesa d'autenticazione…Avertimentu : Benvenuta in PoeditQuandu i testi d’origine sò mudificatiSolu e parolle saneFinestraWindowsVi piaceria d’impiegà l’inglese per u testu d’origine ?CircunvoglieCambià di linea à :Schedarii di traduzzione XLIFFCatalogu di lucalizazione XcodeSìPudete dinù estrae e catene traducevule da i schedarii d’origine :Ùn pudete micca depone più d’un schedariu in a finestra di Poedit.Ùn avete micca u permessu di leghje i schedarii d’origine in u locu specificatu in e pruprietà di u schedariu.Ci vole à rilancià Poedit per piglià stu cambiamentu in contu.U vostru nome, cugnome, o casataI vostri cambiamenti seranu persi s’è voi ùn l’arregistrate micca.I vostri nome è indirizzu elettronicu sò solu impiegati per definisce a rubrica di l’Ultimu Traduttore in i schedarii gettext GNU.ZeruIngrandamentuÀ rivedeùn squassà micca i schedarii timpurari (per spannà)i.e. : nplurals=2; plural=(n > 1);sbagliu : currispundenze simile in u schedariuandà à l’elementu à u numeru di linea specificatumanighjà un indirizzu poedit://Alt+Ctrl+GhjòEntréeMancaDirittaMaiusc+SùaltctrlmaiuscApprupositu di %sPiattà %sPiattà l’altriPreferenze…Esce %sServiziiTuttu affissàpretraduce grazia à a MdTlingua scunnisciutaversione (%s) micca accettataavertimentu : voi@esempiu.corsica« %s » ùn hè micca un schedariu POT accettevule.poedit-3.6.3/locales/lv.mo0000644000175100001660000007237615011674364011117 Þ•Ÿ - À" Á" Í"Ø"gë"S#b# i#w#~#„#Œ#›#ª#°#¶#¿#Ó#ç#ë#ý#$$$%$7$I$M$ Q$ ^$k$t$ }$Š$š$°$Æ$Õ$ñ$ %%%8%T%m%†%%´%º%¿%Ö% ô% & &&& & ,&9& H&T& n&{&Š&“& ©&'¶&Þ&û& ' '&')F' p']{'<Ù'D([(b("i(Œ(§(¹(Ë(Ü(ï(ø( )')C)#X)|)‘) )²)Ä)Ê)å)î) ÿ) * (*5*:*M*c*v*Œ*«*Ä*Û* û* ++"+9+@+_+~+ ‘+?ž+ Þ+ ì+ù+ ,",5B,x,~, ƒ, ‘, Ÿ, ¬, ¹,Æ,×,ß,ç,î,-u"-˜-«-½- Ä-Ï- à-í-<þ-*;.0f.!—.'¹.á.æ.(/T./ƒ/ ˆ/ ’/ /´/Å/Ú/ ï/ ù/ 0 0!00080 I0U0 ]0h0 m0z0Š0©0©¬0‡V1Þ1 å1ñ12 232O2i2p2 †2§2 ¯2 ¼2È2;Í2 3&393 H3 R3`3}3 –3¡3:º3<õ3.24a4 |4†44¦4¬4½4 Î4 Ù4»ä4 5¤5½5 Ö5â5ó5666%)6O6R6V6e6t6|6„6Œ6’6§6¼6Ñ6ë6|7‚7˜7ž7n±7 8 '858<8,V8 ƒ88ž8­8Â8×8 ñ8ÿ899)9.939 ;9 G9U9 ]9 j9w9 Š9•9›9¢9 §9 ³9 ¿9 Ë9×9 ß9 ê9 ÷9 ::: >:K:e:u:…: ˜: ¥:³: Ì:Ù:é: ù:;;; ;(;;;D;M; ^; k; w;„;˜;¨;½;Ñ;á;ö; < &<2<E< V<d<Kk<·<Ì< Û<é<þ< = ='=§=(¹=â= ê=ø=+> A>K>C\>Ÿ >8@?Ry?cÌ?Q0@‚@L@]ê@mHA_¶A[BrBxBˆB ¥B±BÆBÙB2ðB"#CFC]CˆpCùCýCD D7DJD RD"]D€D™D²DÂDÑDÙDéDÿDEV6EE¤E­E ÀEËEéEúEF FF-Fm1F7ŸF ×F3áFGG.7G fG‡GžG±GÃGÖGèGûGHH0HBHUHnHH¥H!¶HÉØH¢J±J"ÁJœäJK‘K ™K ¥K¯K¶K¾KÝK üKL LL4LOLTLlL „L ‘L ›L¨L½LÒL×LÝL÷L M M )M7MHMbM|M‹MªM ÉMÔM ãM N%N=NUNlNƒNŠNN&¬NÓN æNóNúN O OO3OFO[OtOˆO›O£O¸O,ÈO õO P7P?P$FP+kP—P^¦PEQIKQ •Q Q!§QÉQåQýQR!,R NRZR.pR0ŸRÐR'ëRS.SJS^SrS{S SœS¯S¿SÛSëSòS T#T=T$TTyT—T#°TÔTäTýTUU#U@U]UoUCvU ºU ÇUÓUæU$ùU6VUV \VfV|V’V§V¼VÏV áV ïVüVW%W€EWÆWÝW÷WXXX,X5AX+wX)£X&ÍX,ôX!Y'Y#AY_eYÅYÌYàYõY ZZ5ZHZWZ lZ yZ†Z–ZŸZ ¶Z ÂZ ÎZ ÙZåZöZ [%[Ì([šõ[\™\¬\À\Þ\ò\]'].]E] b]l] |]‰]0’]Ã]Õ]å]ù]^#^!@^b^s^4^EÄ^' _#2_V_e_ ~_‰_‘_©_ Á_ Î_ÜÛ_¸`¾`Ø`ò`aa;a?a_a+a«a°a¶aÉa Üa ça òaÿab!b>bQbceb ÉbÓbòbøbr c €cŽc¤c«c6Ëc ddd"/d"Rdud”d ¨d ²d¼dÛdád ôde e"e+e;e Ke We ceoe wee“e¥e¸e ËeÙeêeþe ff-fEf$Wf|f’f¥f¼fÒféfgg.gAg Xg bg og zg‡g œg §g´g ÅgÏgÖgæghh/hLh`hxhh ¦h³hÇh ÛhçhQìh>i[ijiyii–i ¥i¯i1j!Ijkjƒj'œj6Äj ûjkEkª_k9 lJDlYlNél!8mIZmd¤my ngƒneënQoWoho „oŽoŸo±o1Æo$øop2peCp©p®pÂp$Êpïpq q)qDq^qxq‘q§q¶qÍq"âqra#r…r  r¬r ÂrÍrçrýrs ss/sP3s-„s ²s1¿sñs ÷s4t!9t[tut{t€t†t‹t‘t˜t›tŸt¤tªt±t ÁtÍtÞtŠ‹Ô;‘1)Œ»x]ň$4R%„ÒœB7^…ûËraÛÙ3-W£”èYA4Š…#¢cv’#ŒbD±l¡ëÐj´ŸFÏ|ÈuhK– t=Q3 j¯éLuZöe›;k§¬Gl?c‰W޹RIÃg` !ß{€“,•bˆ Uš\ü5ƒ—v]¿?à„N™œZsC˜‡prq2\IHUfÊí¨Q÷«ÌåâÖù8fM†6çáæ  <g1”¥ò¾•ð'‚ø°ê¼"ª$'7X}:T 5[Í_"} J6(tãý_ zÓPBGin½Oó¦a({Ñ>-zÚ–FD®S‰y‡©wÝM.¸¶pŸÜ~Á³VØde>T€î™iõì/ï)º×H+¤O*ôäžKoPh*S›“9‹²&  @Õ[!.|2L‚0N%J<Ž`,·^dÄXEš þ µos†=9—YÞ’À0n~Æ8xƒ&Cmž@­yÿ‘ÎñmAwú+kEÉÇ:/˜qV (modified) (unsaved)%d error%d errors%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Preferences&About&About Poedit&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Save&Save as&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountsAddAdd CommentAdd Files…Add Folders…Add commentAdd directory to the listAdd files…Add folders…AdvancedAll Translation FilesAll commentsAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAutomatically check for updatesAutomatically compile MO file when savingBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Broken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBrowseCancelCannot create temporary directory.Cannot execute program: %sCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClear TranslationClear translationCloseCollecting source files…Comment:Compile to MO…Compile to…Compiled Translation FilesConfirmationCopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t save file %s.Create new translationCreate new translations projectCrowdin errorCustomize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete from translation memoryDelete the projectDirectories:Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t show againDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Entries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileErrorsEverythingExport To TMX…Export as…Export to TMX…Extract text from source files in the following directories:Failed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the headerForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageIDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInformation about the translatorInstallInvalid fileInvocation:KeepLanguage of the translation is the same as source language.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).List of extensions separated by semicolons (e.g. *.cpp;*.h):MO files can’t be directly edited in Poedit.Malformed header: “%sâ€Manage…Merging differences…MinimizeName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo matches foundNot authorized, please sign in again.OKOneOpen in EditorOpen in editorOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPermission denied.Please open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.PluralPlural forms:PoeditPoedit - Catalogs managerPoedit is an easy to use translation editor.PreferencesPreferences...Preferences…Previous Plural FormPrevious plural formProject name and version:Project name:Project:PurgePurge deleted translationsQuitRedoRefreshReload FileRemaining: %dReplaceReplace &AllReplace &allReplacement stringReplace…ResetReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSelect &AllSelect AllSelect directorySelect your preferred languageShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to CrowdinSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code not available.Source textSource text — %sSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String to findSubstitutionsSuggestionsSupports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).Sync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMX FilesText ReplacementThe changes made by the other application will be lost if you save.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.There was a problem formatting the file nicely (but it was saved all right).There were errors when loading the file. Some data may be missing or corrupted as the result.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation propertiesTranslation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)UntransUpdate allUpdate all catalogs in the projectUpdate from &POT File…Update from &POT file…Update from POTUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations…Use these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Whole words onlyWindowWindowsWrap aroundXLIFF Translation FilesYesYou don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Zerocolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);handle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemPreferences...macOS menu itemQuit %sunknown language“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Latvian Language: lv_LV MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2; X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: lv X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (modificÄ“ts) (nesaglabÄts)%d kļūdas%d kļūda%d kļūdas%i rindiņas failÄ "%s" netika ielÄdÄ“tas pareizi.%i rindiņa failÄ "%s" netika ielÄdÄ“ta pareizi.%i rindiņas failÄ "%s" netika ielÄdÄ“tas pareizi.%s iestatÄ«jumiP&ar...P&ar PoeditAi&zvÄ“rtKopÄ“t&DzÄ“stPa&beigt un pÄriet uz nÄkamoPa&beigt un pÄriet uz nÄkamoR&ediģēt&Fails&Atrast…&GNU gettext rokasgrÄmata&GNU gettext rokasgrÄmata&Iet&GrupÄ“t pÄ“c konteksta&GrupÄ“t pÄ“c konteksta&PalÄ«dzÄ«ba&Jauns…&NÄkamais >&NÄkamais tulkojums&NÄkamais tulkojums&NÄ“&Labi&TieÅ¡saistes palÄ«dzÄ«ba&TieÅ¡saistes palÄ«dzÄ«ba&AtvÄ“rt...&AtvÄ“rt…&IestatÄ«jumi&IestatÄ«jumi…I&priekšējais tulkojumsI&priekšējais tulkojums&RekvizÄ«ti…IztÄ«rÄ«t &dzÄ“stos tulkojumus&IztÄ«rÄ«t dzÄ“stos tulkojumus&SaglabÄt&SaglabÄt kÄVispirms neizt&ulkotos ierakstusVispirms neizt&ulkotos ierakstusAtja&unot no avota kodaAtja&unot no avota koda&PÄrbaudÄ«t tulkojumu&PÄrbaudÄ«t tulkojumu&Skats&JÄ(Lietot noklusÄ“juma valodu)(nepiecieÅ¡ama Windows 8 vai jaunÄka)< Ie&priekšējaisPar %sKontiPievienotPievienot komentÄruPievienot failus…Pievienot mapes…Pievienot komentÄruPievienot mapi sarakstamPievienot failus…Pievienot mapes…PapilduVisi tulkojumu failiVisi komentÄriVienmÄ“r fokusÄ“ties uz teksta ievades laukuVienums ievades failu sarakstÄ:Vienums atslÄ“gvÄrdu sarakstÄ:IzskatsLietotAutomÄtiski meklÄ“t atjauninÄjumusSaglabÄjot automÄtiski kompilÄ“t MO failuBÄzes ceļš:Beta versijÄs ir jaunas funkcijas un uzlabojumi, taÄu tÄs var bÅ«t nedaudz mazÄk stabilas.BojÄts PO fails: daudzskaitļa forma msgstr lietota bez msgid_pluralBojÄts PO fails: vienskaitļa forma msgstr lietota kopÄ ar msgid_pluralPÄrlÅ«kotAtceltNevar izveidot pagaidu datu mapi.Nevar palaist programmu: %sKatalogu &pÄrvaldnieksKatalogu &pÄrvaldnieksKatalogu pÄrvaldnieksMainÄ«t lietojumprogrammas valoduSimbolkopa:PÄrbaudÄ«t dokumentuPÄrbaudÄ«t gramatiku kopÄ ar pareizrakstÄ«buPÄrbaudÄ«t pareizrakstÄ«bu rakstīšanas laikÄMeklÄ“t atjauninÄjumus…PÄrbaudÄ«t, vai tulkojumÄ nav kļūduMeklÄ“t atjauninÄjumus…PÄrbaudÄ«t pareizrakstÄ«buNotÄ«rÄ«t tulkojumuNotÄ«rÄ«t tulkojumuAizvÄ“rtVÄc avota datnes…KomentÄrs:KompilÄ“t uz MO…KompilÄ“t uz…KompilÄ“tie tulkojuma failiApstiprinÄjumsKopÄ“tKopÄ“t vienskaitļa formuKopÄ“t no avota tekstaKopÄ“t vienskaitļa formuKopÄ“t no avota tekstaIzlabot pareizrakstÄ«bu automÄtiskiNevarÄ“ja saglabÄt failu %s.Izveidot jaunu tulkojumuIzveidot jaunu tulkoÅ¡anas projektuCrowdin kļūdaPielÄgot rÄ«ku joslu…IzgrieztDatubÄzes lielums:IzdzÄ“stDzÄ“st no tulkojumu atmiņasDzÄ“st no tulkojumu atmiņasIzdzÄ“st projektuMapes:Vai vÄ“laties izņemt visus tulkojumus, kas vairs netiek izmantoti?&NesaglabÄtNesaglabÄtTurpmÄk nerÄdÄ«tTurpmÄk nerÄdÄ«tLejupielÄdÄ“t jaunÄko tulkojumu…ŠajÄ projektÄ tulkojumu lejupielÄde ir atspÄ“jota.I&zietRediģētRediģēt &komentÄruRediģēt &komentÄruRediģēt komentÄruRediģēt komentÄruRediģēt projektuRediģēt projekuRediģēšanaRediģēt…E-pasts:Vispirms ierakstus ar kļūdÄmVispirms ierakstus ar kļūdÄmIeraksti ar kļūdÄm tika izdalÄ«ti sarkanÄ krÄsÄ. Ja izvÄ“lÄ“ties tÄdu ierakstu, tiks parÄdÄ«ta informÄcija par kļūdu.Kļūda, atverot failuKļūda saglabÄjot failuKļūdasVisiEksportÄ“t uz TMX…EksportÄ“t kÄ…EksportÄ“t uz TMX…Izvilkt tekstu no avotu failiem sekojoÅ¡ajÄs mapÄ“s:KomunikÄcija ar Poedit procesu neizdevÄs.Kļūda ielÄdÄ“jot failu ar tulkojumiem.NeizdevÄs apvienot gettext katalogus.NeizdevÄs atjauninÄt tulkojumu atmiņu: %sFailsFails “%s†nepastÄv.Fails “%s†nav tulkojuma fails.Fails "%s" ir tikai lasÄms un nevar tikt saglabÄts. LÅ«dzu saglabÄjiet to ar citu nosaukumu.AtrastMeklÄ“t komentÄrosAtrast iepriekšējoAtrast un aizstÄt…MeklÄ“t komentÄrosMeklÄ“t avota tekstÄMeklÄ“t tulkojumÄAtrast nÄkamoAtrast iepriekšējoLabot valoduLabot valoduSalabot galveniForma %iForma %i (neizmantota)GNU gettextVispÄrÄ«giHTML failiPalÄ«dzÄ«baSlÄ“pt sÄnjosluSlÄ“pt statusa josluNerÄdÄ«t Å¡o paziņojumuIDJa jÅ«s turpinÄsiet ar iztÄ«rīšanu, visi tulkojumi, kas atzÄ«mÄ“ti kÄ dzÄ“sti, tiks pilnÄ«bÄ izņemti. IespÄ“jams, ka vÄ“lÄk tie jums bÅ«s jÄtulko vÄ“lreiz, ja tie vÄ“lÄk tiks pievienoti atpakaļ.Ja agrÄk tika atteikts piekļuve failiem, to var atjaunot SistÄ“mas iestatÄ«jumi > Drošība un konfidencialitÄte > KonfidencialitÄte > Faili un mapes.IgnorÄ“tIgnorÄ“t reÄ£istruImportÄ“t no TMX…ImportÄ“t tulkojuma failus…ImportÄ“t no TMX…ImportÄ“t tulkojuma failus…ImportÄ“ tulkojumus…Uz: %sIekļaut beta versijasInfoermÄcija par tulkotÄjuInstalÄ“tNederÄ«gs failsIzsaukÅ¡ana:PaturÄ“tTulkojuma valoda ir tÄda pati kÄ avota valoda.Tulkojuma valoda:Valodas izvÄ“leTulkotÄju komanda:Valoda:PÄ“dÄ“jo reizi modificÄ“tsVairÄk par gettext atslÄ“gvÄrdiemVairÄk par daudzskaitļa formÄmUzzinÄt vairÄkUzzinÄt vairak par CrowdinRinda %d failÄ "%s" ir bojÄta (nederÄ«gi %s dati).PaplaÅ¡inÄjumu saraksts, atdalÄ«ts ar semikoliem (piem., *.cpp;*.h):MO failu nevar tieÅ¡i rediģēt Poedit.Nepareizi veidota galvene: “%sâ€PÄrvaldÄ«t…Apvieno atšķirÄ«bas…MinimizÄ“tVÄrds:NÄ&kamais nepabeigtaisNÄ&kamais nepabeigtaisJÄpÄrbaudaJÄpÄrbaudaNekad neļaut virkņu sarakstam pÄrņemt fokusu. Ja aktivizÄ“ts, jums jÄlieto Ctrl-bultiņas tastatÅ«ras navigÄcijai, bet jÅ«s varat arÄ« rakstÄ«t tekstu nekavÄ“joties, nenospiežot Tab taustiņu, lai mainÄ«tu fokusu.JaunsJauns no &POT/PO faila…Jauns no &POT/PO faila…Jaunas virknesNÄkamÄ daudzskaitļa formaNÄkamÄ daudzskaitļa formaNÄ“Nav atrasta neviena atbilstÄ«baNav atrasta neviena atbilstÄ«baNoraidÄ«ts, lÅ«dzu pierakstÄ«ties no jauna.LabiViensAtvÄ“rt redaktorÄAtvÄ“rt redaktorÄAtvÄ“rt...AtvÄ“rt…IestatÄ«jumiCitsIep&riekÅ¡ejais nepabeigtaisIep&riekÅ¡ejais nepabeigtaisPO tulkojumu failiPOT tulkojumu failiPOT faili ir tikai veidnes, kas nesatur tulkojumus. Lai tulkotu, izveidojiet no tÄ jaunu PO failu.IelÄ«mÄ“tIelÄ«mÄ“t un pieskaņot stilamCeļiPiekļuve aizliegta.LÅ«dzu, atveriet un rediģējiet atbilstoÅ¡o PO failu tÄ vietÄ. SaglabÄjot to, tiks atjauninÄts arÄ« MO fails.DaudzskaitlisDaudzskaitļa formas:PoeditPoedit - katalogu pÄrvaldnieksPoedit ir vienkÄrÅ¡i izmantojams tulkojumu redaktors.IestatÄ«jumiIestatÄ«jumi...IestatÄ«jumi…IepriekšējÄ daudzskaitļa formaIepriekšējÄ daudzskaitļa formaProjekta nosaukums un versija:Projekta nosaukums:Projekts:IztÄ«rÄ«t&IztÄ«rÄ«t dzÄ“stos tulkojumusIzietAtcelt atsaukÅ¡anuAtsvaidzinÄtPÄrlÄdÄ“t failuAtlikuÅ¡i: %dAizstÄt&AizstÄt visus&AizstÄt visusAizstÄt arAizstÄt…AtiestatÄ«tSkatÄ«tSaglabÄtSaglabÄt &kÄ…SaglabÄt &kÄ…Vienalga saglabÄtVienalga saglabÄtSaglabÄt kÄSaglabÄt kÄ…SaglabÄt izmaiņas&AtlasÄ«t visuAtlasÄ«t visuIzvÄ“lieties mapiAtlasÄ«t vÄ“lamo valoduRÄdÄ«t sÄnjosluRÄdÄ«t pareizrakstÄ«bu un gramatikuRÄdÄ«t statusa josluRÄdÄ«t rindas &IDRÄdÄ«t aizvietoÅ¡anasParÄdÄ«t rÄ«ku josluRÄdÄ«t brÄ«dinÄjumusRÄdÄ«t vai slÄ“pt sÄnjosluRÄdÄ«t sÄnjosluRÄdÄ«t statusa josluRÄdÄ«t rindas &IDRÄdÄ«t brÄ«dinÄjumusSÄnjoslaPieslÄ“gtiesIzlogotiesPieslÄ“gtiesPieslÄ“gties CrowdinIzlogotiesVienskaitlisGudrs Copy/PasteDomuzÄ«meSaitesFigÅ«rpÄ“diņasKÄrtot pÄ“c &faila secÄ«basKÄrtot pÄ“c a&votaKÄrtot pÄ“c &tulkojumaKÄrtot pÄ“c &faila secÄ«basKÄrtot pÄ“c a&votaKÄrtot pÄ“c &tulkojumaPirmkoda simbolkopa:SÄkumkods nav pieejams.Avota tekstsAvota teksts — %sAvotu atslÄ“gvÄrdiAvotu ceļiRunaPareizrakstÄ«bas pÄrbaude ir atslÄ“gta, jo nav instalÄ“ta %s valodas vÄrdnÄ«ca.PareizrakstÄ«ba un gramatikaSÄkt izrunÄtBeigt izrunÄtSaglabÄti tulkojumi:AtrastAizvietoÅ¡anasIeteikumiAtbalsta visas programmēšanas valodas, kuras atpazÄ«st GNU gettext rÄ«ki (PHP, C/C++, C#, Perl, Python, Java, JavaScript u.c.).SinhronizÄ“t ar CrowdinSinhronizÄ“t tulkojumu ar CrowdinNotiek sinhronizēšanaSinhronizÄcijas kļūdaSinhronizēšana ar Crowdin neizdevÄs.Sintakses kļūda daudzskaitļa formu galvenÄ“ ("%s").TMX failiTeksta aizstÄÅ¡anaSaglabÄjot failu citu programmu ieviestÄs izmaiņas tiks zaudÄ“tas.Failu nevar saglabÄt "%s" kodÄ“jumÄ, kÄ norÄdÄ«ts kataloga iestatÄ«jumos. Tas tÄ vietÄ tika saglabÄts UTF-8 kodÄ“jumÄ un iestatÄ«jums tika attiecÄ«gi izmainÄ«ts.Fails tika izmainÄ«ts. Vai vÄ“laties saglabÄt izmaiņas?Fails tika sakompilÄ“ts MO formÄtÄ, bet visticamÄk darbosies nekorekti.Fails tika saglabÄts un kompilÄ“ts MO formÄtÄ, bet iespÄ“jams, ka darbosies nekorekti.Fails bija saglabÄts, bet to neizdevÄs nokompilÄ“t MO formÄtÄ un izmantot.Fails veiksmÄ«gi tika saglabÄts.RadÄs kļūda formatÄ“jot failu (bet tomÄ“r tika veiksmÄ«gi saglabÄts).RadÄs kļūdas ielÄdÄ“jot failu. RezultÄtÄ daži dati varÄ“tu bÅ«t bojÄti vai varÄ“tu iztrÅ«kt.Å is vienums tiks pievienots komandrindai tikai tad, ja bÅ«s doda pirmkoda simbolkopa. %c atbilst simbolkopas vÄ“rtÄ«bai.Å is vienums tiks pievienots komandrindai, vienreiz katram ievades failam. %f atbilst faila nosaukumam.Å is vienums tiks pievienots komandrindai, vienreiz katram atslÄ“gvÄrdam. %k atbilst atslÄ“gvÄrdam.KopÄTransformÄcijasIztulkoti: %d no %d (%d %%)TulkojumsTulkojuma valodaTulkojumu atmiņaTulkojuma rekvizÄ«tiTulkojumu atmiņas datubÄze ir bojÄta: %s (%d).Tulkojumu atmiņas kļūda: %s (%d).Tulkojuma rekvizÄ«tiTulkojums — %sTulkojums nevar tikt jauninÄts no sÄkumkoda, jo kods nav atrasts norÄdÄ«tajos failu IestatÄ«jumos.DiviUTF-8 (ieteicamais)AtsauktNeapstrÄdÄts izņēmums notika: %sUnix (ieteicamais)NeiztulkAtjaunot visusAtjaunot visus katalogus Å¡ajÄ projektÄAtjaunot no &POT faila…Atjaunot no &POT faila…AtjauninÄt no POT failaAtjaunot kopsavilkumuAtjauninÄjumiNeizdevÄs atjauninÄtJauninÄt tulkojumusAtjauno lietotÄja informÄciju…AugÅ¡upielÄdÄ“ tulkojumus…Lietot Å¡os atslÄ“gvÄrdus (funkciju nosaukumus), lai atpazÄ«tu tulkojamÄs virknes avota failos:Izmantot tulkojumu atmiņuPÄrbaudÄ«tPÄrbaudes rezultÄtsVersija %sGaida autentifikÄciju…Tikai veselus vÄrdusLogsWindowsMeklÄ“t visÄXLIFF tulkojumu datnesJÄJums nav tiesÄ«bu sÄkumkoda failu piekļuvei norÄdÄ«tajos failu IestatÄ«jumos.RestartÄ“t Poedit, lai novÄ“rot Å¡o izmaiņu.JÅ«su vÄrdsJa nesaglabÄsiet izmaiņas, tÄs tiks zaudÄ“tas.NulleJÄpÄrbaudaneizdzÄ“st pagaidu failus (atkļūdoÅ¡anas nolÅ«kos)piem. nplurals=2; plural=(n > 1);rÄ«koties ar poedit://URICtrl+DownEnterLeftRightShift+UpaltctrlshiftPar %sIestatÄ«jumi...Iziet no %snezinÄma valoda“%s†nav derÄ«gs POT fails.poedit-3.6.3/locales/el.po0000644000175100001660000034362515011674363011076 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-05-13 10:16\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: el\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "ΑπόκÏυψη Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος ειδοποίησης" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Îα μην εμφανιστεί ξανά" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Îα μην εμφανιστεί ξανά" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "ΠεÏίληψη ενημέÏωσης" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "ΠεÏίληψη ενημέÏωσης" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Κλείσιμο" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Ζητήματα" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "ΑÏχείο" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "ΓÏαμμή" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Ζήτημα" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Îέες συμβολοσειÏές" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Îέες συμβολοσειÏές" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "ΚαταÏγημένες συμβολοσειÏές" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "ΚαταÏγημένες συμβολοσειÏές" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Συλλογή αÏχείων Ï€Ïοέλευσης…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Εξαγωγή συμβολοσειÏών Ï€Ïος μετάφÏαση από %s αÏχείο…" msgstr[1] "Εξαγωγή συμβολοσειÏών Ï€Ïος μετάφÏαση από %s αÏχεία…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Αποτυχία φόÏτωσης αÏχείου με εξαχθείσες μεταφÏάσεις." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Στο: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Ο πηγαίος κώδικας δεν είναι διαθέσιμος." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Δεν ήταν δυνατή η ενημέÏωση των μεταφÏάσεων από τον πηγαίο κώδικα, επειδή " "δεν βÏέθηκε κώδικας στην καθοÏισμένη τοποθεσία των ιδιοτήτων του αÏχείου." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Δεν επιτÏέπεται η Ï€Ïόσβαση." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Δεν έχετε την άδεια να διαβάσετε αÏχεία πηγαίου κώδικα από την τοποθεσία που " "καθοÏίζεται στις ιδιότητες του αÏχείου." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Αν αÏνηθήκατε στο παÏελθόν την Ï€Ïόσβαση στα αÏχεία σας, μποÏείτε να την " "επιτÏέψετε στις Ρυθμίσεις συστήματος > Ασφάλεια και απόÏÏητο > ΑÏχεία και " "φάκελοι." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Αν αÏνηθήκατε στο παÏελθόν την Ï€Ïόσβαση στα αÏχεία σας, μποÏείτε να την " "επιτÏέψετε στις ΠÏοτιμήσεις συστήματος > Ασφάλεια & απόÏÏητο > ΑπόÏÏητο > " "ΑÏχεία & φάκελοι." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Αποτυχία εξαγωγής συμβολοσειÏών από τον πηγαίο κώδικα." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Το αÏχείο \"%s\" δεν μπόÏεσε να ανοίξει." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "ΕνημέÏωση μεταφÏάσεων" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "ΠÏοσδιοÏισμός διαφοÏών…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Συγχώνευση διαφοÏών…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Το αÏχείο μεταφÏάσεων είναι ήδη ενημεÏωμένο, δεν έγιναν αλλαγές στις " "συμβολοσειÏές." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Το αÏχείο μεταφÏάσεων ενημεÏώθηκε με %s αλλαγή." msgstr[1] "Το αÏχείο μεταφÏάσεων ενημεÏώθηκε με %s αλλαγές." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Îέες συμβολοσειÏές Ï€Ïος μετάφÏαση:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "ΚαταÏγημένες συμβολοσειÏές (δεν χÏησιμοποιοÏνται πλέον):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "Εντοπίστηκε %d ζήτημα με τις αÏχικές συμβολοσειÏές." msgstr[1] "Εντοπίστηκαν %d ζητήματα με τις αÏχικές συμβολοσειÏές." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "ΠÏοβολή λεπτομεÏειών…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "ΠÏοβολή λεπτομεÏειών…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "ΠαÏαμοÏφωμένη κεφαλίδα: «%s»" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "ΑÏχεία μετάφÏασης PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "ΠÏότυπα μετάφÏασης POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "ΑÏχεία μετάφÏασης XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Κατάλογος μετάφÏασης Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "ΑÏχεία μετάφÏασης JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "ΑÏχεία ΜετάφÏασης Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Όλα τα αÏχεία μετάφÏασης" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Το αÏχείο είναι σε μοÏφή που δεν αναγνωÏίζεται από το Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Αυτό το αÏχείο JSON δεν είναι αÏχείο μεταφÏάσεων και δεν μποÏεί να " "επεξεÏγαστεί στο Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Η ανάγνωση πεÏιεχομένου αÏχείου απέτυχε με το ακόλουθο σφάλμα: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "ΑÏχείο %s είναι μόνο για ανάγνωση και δεν μποÏεί να αποθηκευτεί.\n" " ΠαÏακαλώ αποθηκεÏστε το με διαφοÏετικό όνομα." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Δεν ήταν δυνατή η αποθήκευση του αÏχείου %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Στιγμιότυπα οθόνης:" #: src/catalog_po.cpp:134 #, 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[1] "%i γÏαμμές του αÏχείου “%s†δεν φοÏτώθηκαν σωστά." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "" "Η γÏαμμή %d του αÏχείου “%s†είναι κατεστÏαμμένη (μη έγκυÏα δεδομένα %s)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "ΚατεστÏαμμένο αÏχείο PO: η μοÏφή ÎµÎ½Î¹ÎºÎ¿Ï msgstr χÏησιμοποιείται μαζί με το " "msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "ΚατεστÏαμμένο αÏχείο PO: το msgstr μοÏφής Ï€Î»Î·Î¸Ï…Î½Ï„Î¹ÎºÎ¿Ï Ï‡Ïησιμοποιείται χωÏίς " "msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Δεν ήταν δυνατή η φόÏτωση του αÏχείου, πιθανώς είναι κατεστÏαμμένο." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "ΠαÏουσιάστηκαν σφάλματα κατά τη φόÏτωση του αÏχείου. Ως αποτέλεσμα, οÏισμένα " "δεδομένα ενδέχεται να λείπουν ή να είναι κατεστÏαμμένα." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "ΠαÏουσιάστηκε Ï€Ïόβλημα με τη σωστή μοÏφοποίηση του αÏχείου (αλλά " "αποθηκεÏτηκε σωστά)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Δεν ήταν δυνατή η αποθήκευση του αÏχείου στο σÏνολο χαÏακτήÏων “%s†όπως " "οÏίζουν οι Ïυθμίσεις μετάφÏασης.\n" "\n" "Αντ' αυτοÏ, αποθηκεÏτηκε σε UTF-8 και η ÏÏθμιση Ï„Ïοποποιήθηκε αναλόγως." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Σφάλμα αποθήκευσης αÏχείου" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "Το “%s†δεν είναι έγκυÏο αÏχείο POT." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "ΑπÏοσδόκητη απουσία πεÏιεχομένου στο αÏχείο XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" "Η αποθήκευση σε διαφοÏετική τοποθεσία δεν υποστηÏίζεται για αÏχεία XCLOC." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Σφάλμα κατά τη φόÏτωση του αÏχείου XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "μη υποστηÏιζόμενη έκδοση (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "ΚατεστÏαμμένη σήμανση στη συμβολοσειÏά μετάφÏασης." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Συνδέστε το Poedit με υποστηÏιζόμενες πλατφόÏμες μετάφÏασης cloud για να " "συγχÏονίζετε απÏόσκοπτα τις μεταφÏάσεις που διαχειÏίζεστε σε αυτές." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Πώς λειτουÏγεί ο συγχÏονισμός στο Cloud;" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "ΛογαÏιασμός" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(Δεν έχετε συνδεθεί)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Άνοιγμα Cloud μετάφÏασης" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "ΔιαχείÏιση λογαÏιασμών" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "ΈÏγο:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Γλώσσα:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Συνδεθείτε στον λογαÏιασμό Cloud" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Συνδεθείτε στο λογαÏιασμό cloud" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Δεν υπάÏχουν μεταφÏαστικά έÏγα στο λογαÏιασμό σας." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Λήψη τελευταίων μεταφÏάσεων…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Συνδεθείτε στο %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "ΣυγχÏονισμός" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "ΜεταφόÏτωση μεταφÏάσεων στο %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Η μεταφόÏτωση μεταφÏάσεων στο %s απέτυχε." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Σφάλμα συγχÏονισμοÏ" #: src/commentdlg.cpp:48 msgid "Add" msgstr "ΠÏοσθήκη" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Άγνωστο σφάλμα Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Δεν επιτÏέπεται, ΠαÏακαλοÏμε συνδεθείτε ξανά." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Δεν υποστηÏίζονται έÏγα του Crowdin που βασίζονται σε συμβολοσειÏές." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Η λήψη μεταφÏάσεων είναι απενεÏγοποιημένη για αυτό το έÏγο." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "ΣÏνδεση" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "ΣÏνδεση" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "ΑποσÏνδεση" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "ΑποσÏνδεση" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Μάθετε πεÏισσότεÏα σχετικά με το Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Το Crowdin είναι μια διαδικτυακή πλατφόÏμα διαχείÏισης μεταφÏάσεων και ένα " "εÏγαλείο συνεÏγατικών μεταφÏάσεων. ΧÏησιμοποιοÏμε κι εμείς το Crowdin για τη " "μετάφÏαση του Poedit σε πολλές γλώσσες και το λατÏεÏουμε." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Αναμονή για έλεγχο ταυτότητας…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "ΕνημέÏωση των πληÏοφοÏιών χÏήστη…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "ΣÏνδεση στο Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Ο συγχÏονισμός με το Crowdin απέτυχε." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Σφάλμα Crodwin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "ΜεταφόÏτωση μεταφÏάσεων…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&ΑντιγÏαφή" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Μάθετε πεÏισσότεÏα" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Βοήθεια" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Τα αÏχεία MO δεν μποÏοÏν να επεξεÏγαστοÏν απευθείας στο Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Σφάλμα ανοίγματος αÏχείου" #: src/edapp.cpp:735 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." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "μη διαγÏάψεις Ï€ÏοσωÏινά αÏχεία (γι' αποσφαλμάτωση)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "χειÏίσου ένα poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "μετάβαση στο στοιχείο, στο δεδομένο αÏιθμό γÏαμμής" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Αδυναμία επικοινωνίας με τη διεÏγασία Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "ΠαÏουσιάστηκε ανεπίλυτη εξαίÏεση: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Επιλογή Ï€ÏοτÏπου μετάφÏασης" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Μη έγκυÏο αÏχείο" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Επιλογή αÏχείου μετάφÏασης" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Το Poedit είναι ένας εÏκολος στη χÏήση επεξεÏγαστής μεταφÏάσεων." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Δεν μποÏείτε να σÏÏετε παÏαπάνω από ένα αÏχείο στο παÏάθυÏο Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Το αÏχείο “%s†δεν είναι αÏχείο μετάφÏασης." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Το αÏχείο “%s†δεν υπάÏχει." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Ο οÏθογÏαφικός έλεγχος είναι απενεÏγοποιημένος, επειδή το λεξικό για %s δεν " "είναι εγκατεστημένο." #: src/edframe.cpp:871 msgid "Install" msgstr "Εγκατάσταση" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Το αÏχείο “%s†έχει Ï„Ïοποποιηθεί από μια άλλη εφαÏμογή." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "ΕπαναφόÏτωση αÏχείου" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Θέλετε να φοÏτώσετε εκ νέου το αÏχείο από τον δίσκο; Αν το κάνετε, θα χαθοÏν " "οι μη αποθηκευμένες αλλαγές σας στο Poedit." #: src/edframe.cpp:968 msgid "Ignore" msgstr "ΠαÏάβλεψη" #: src/edframe.cpp:968 msgid "Reload File" msgstr "ΕπαναφόÏτωση αÏχείου" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Το αÏχείο έχει Ï„Ïοποποιηθεί. Θέλετε να αποθηκεÏσετε τις αλλαγές;" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Αποθήκευση αλλαγών" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Οι αλλαγές σας θα χαθοÏν εάν δεν τις αποθηκεÏσετε." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Αποθήκευση" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&ΧωÏίς αποθήκευση" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "ΧωÏίς αποθήκευση" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Οι αλλαγές που έγιναν από την άλλη εφαÏμογή θα χαθοÏν αν κάνετε αποθήκευση." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "ΑκÏÏωση" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Αποθήκευση οπωσδήποτε" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Αποθήκευση οπωσδήποτε" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Αποθήκευση ως…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Μεταγλώττιση σε…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Μεταγλωττισμένα αÏχεία μετάφÏασης" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Εξαγωγή σε HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "ΑÏχεία HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Εξαγωγή σε HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Η ενημέÏωση απέτυχε" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Άνοιγμα αÏχείου αναφοÏάς" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "ΕνημέÏωση από αÏχείο &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "ΕνημέÏωση από αÏχείο &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Î’Ïέθηκε %d ζήτημα στην μετάφÏαση." msgstr[1] "Î’Ïέθηκαν %d ζητήματα στην μετάφÏαση." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Αποτέλεσμα επικÏÏωσης" #: src/edframe.cpp:1842 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 "" "Οι θέσεις με σφάλματα έχουν επισημανθεί με κόκκινο στην λίστα. Οι " "λεπτομέÏειες του σφάλματος θα εμφανιστοÏν, όταν επιλέξεις τη συγκεκÏιμένη " "θέση." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Το αÏχείο αποθηκεÏτηκε με ασφάλεια." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Το αÏχείο σώθηκε με ασφάλεια και μεταγλωττίστηκε σε μοÏφή MO, αλλά κατά πάσα " "πιθανότητα δεν θα λειτουÏγήσει σωστά." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Το αÏχείο αποθηκεÏθηκε επιτυχώς, όμως δεν μποÏεί να γίνει σÏνθεση του " "αÏχείου σε μοÏφή MO, ώστε, μετά, να χÏησιμοποιηθεί." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Το αÏχείο μεταγλωττίστηκε σε μοÏφή MO, αλλά κατά πάσα πιθανότητα δεν θα " "λειτουÏγήσει σωστά." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "" "Αυτό το αÏχείο δεν μποÏεί να μεταγλωττιστεί σε μοÏφή MO και να " "χÏησιμοποιηθεί." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Δεν βÏέθηκε κανένα Ï€Ïόβλημα στην μετάφÏαση." #: src/edframe.cpp:1894 #, 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] "" "Η μετάφÏαση είναι έτοιμη για χÏήση, αλλά %d καταχώÏηση δεν έχει μεταφÏαστεί " "ακόμα." msgstr[1] "" "Η μετάφÏαση είναι έτοιμη για χÏήση, αλλά %d καταχωÏήσεις δεν έχουν " "μεταφÏαστεί ακόμα." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Η μετάφÏαση είναι έτοιμη Ï€Ïος χÏήση." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Το Poedit διόÏθωσε αυτόματα το μη έγκυÏο πεÏιεχόμενο στο αÏχείο “%sâ€." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Το αÏχείο πεÏιέχει αντίγÏαφα στοιχεία, το οποίο δεν επιτÏέπεται στα αÏχεία " "PO και θα αποτÏέψει το αÏχείο από το να χÏησιμοποιηθεί. Το Poedit διόÏθωσε " "το θέμα, αλλά θα Ï€Ïέπει να επανεξετάσετε τις μεταφÏάσεις οποιουδήποτε " "στοιχείου έχει επισημανθεί ότι χÏειάζεται δουλειά και να το διοÏθώσετε εάν " "είναι απαÏαίτητο." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Δεν έχει οÏιστεί η γλώσσα της μετάφÏασης." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "ΟÏισμός γλώσσας" #: src/edframe.cpp:2317 msgid "Set language" msgstr "ΟÏισμός γλώσσας" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Οι υποδείξεις δεν είναι διαθέσιμες αν η γλώσσα μετάφÏασης δεν έχει οÏιστεί " "σωστά. Άλλες λειτουÏγίες, όπως ο πληθυντικός, μποÏεί επίσης να επηÏεαστοÏν." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Η γλώσσα μετάφÏασης είναι η ίδια όπως η πηγαία γλώσσα." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "ΔιόÏθωση γλώσσας" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "ΔιόÏθωση γλώσσας" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Αυτό το αÏχείο πεÏιέχει καταχωÏήσεις με πληθυντικοÏÏ‚ αÏιθμοÏÏ‚, αλλά δεν " "είναι Ïυθμισμένη η κεφαλίδα \"Plural-Forms\" του." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Οι καταχωÏήσεις σε αυτό το αÏχείο έχουν διαφοÏετικό αÏιθμό μοÏφών " "Ï€Î»Î·Î¸Ï…Î½Ï„Î¹ÎºÎ¿Ï Î±Ï€ÏŒ αυτόν που αναφέÏει η κεφαλίδα \"Plural-Forms\" του αÏχείου" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Λείπει η απαιτοÏμενη κεφαλίδα «Plural-Forms»." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Σφάλμα σÏνταξης στην κεφαλίδα \"Plural-Forms\" (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "ΕπιδιόÏθωση της κεφαλίδας" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "Η έκφÏαση των μοÏφών Ï€Î»Î·Î¸Ï…Î½Ï„Î¹ÎºÎ¿Ï Ï„Î¿Ï… αÏχείου είναι ασυνήθιστη για τα %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Επισκόπηση" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Θέλετε να χÏησιμοποιήσετε αγγλικά για το πηγαίο κείμενο;" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Αυτό το αÏχείο χÏησιμοποιεί αναγνωÏιστικά συμβολοσειÏάς αντί για πηγαίο " "κείμενο. Το Poedit μποÏεί να φοÏτώσει αγγλικά κείμενα από το αÏχείο “%s†για " "εσάς." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "ΦόÏτωση αγγλικών" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "ΜεταφÏάστηκαν: %d από %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Απομένουν: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d σφάλμα" msgstr[1] "%d σφάλματα" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d καταχώÏηση" msgstr[1] "%d καταχωÏήσεις" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (μη αποθηκευμένο)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (Ï„Ïοποποιημένο)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Αδυναμία ενημέÏωσης της μεταφÏαστικής μνήμης: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Δεν ήταν δυνατή η αποθήκευση του αÏχείου «%s»." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "ΑφαίÏεση μεταφÏάσεων όμοιων με το αÏχικό κείμενο" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Θέλετε να αφαιÏέσετε όλες τις μεταφÏάσεις που είναι ίδιες με το αÏχικό " "κείμενο;" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Αυτή η ενέÏγεια θα διαγÏάψει τυχόν μεταφÏάσεις που ταιÏιάζουν ακÏιβώς με το " "αÏχικό κείμενο. Δεν είναι δυνατή η αναίÏεση." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "ΔιατήÏηση" #: src/edframe.cpp:2856 msgid "Remove" msgstr "ΑφαίÏεση" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Ε&κκαθάÏιση διαγÏαμμένων μεταφÏάσεων" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "" "Θα ήθελες να αφαιÏεθοÏν όλες οι μεταφÏάσεις, οι οποίες έπαψαν να " "χÏησιμοποιοÏνται;" #: src/edframe.cpp:2879 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" "Θα Ï€Ïέπει να ξανακάνεις τις μεταφÏάσεις, από την αÏχή, αν Ï€ÏοστεθοÏν ξανά " "στο μέλλον." #: src/edframe.cpp:2883 msgid "Purge" msgstr "ΕκκαθάÏιση" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "ΑντιγÏαφή από αÏχικό κείμενο" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "ΑντιγÏαφή από αÏχικό κείμενο" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "ΕκκαθάÏιση μετάφÏασης" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "ΕκκαθάÏιση μετάφÏασης" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "ΕπεξεÏγασία σχολίου" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "ΕπεξεÏγασία σχολίου" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Εμφανίσεις κώδικα" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Εμφανίσεις κώδικα" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "ΑπόκÏυψη πλευÏικής μπάÏας" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Εμφάνιση πλευÏικής μπάÏας" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "ΑπόκÏυψη γÏαμμής κατάστασης" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Εμφάνιση γÏαμμής κατάστασης" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Μήκος συμβολοσειÏάς σε χαÏακτήÏες: μετάφÏαση | αÏχική" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Μήκος συμβολοσειÏάς σε χαÏακτήÏες" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "ΑÏχικό κείμενο" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Ενικός" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Πληθυντικός" #: src/editing_area.cpp:477 msgid "Translation" msgstr "ΜετάφÏαση" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "ΠÏο-μεταφÏασμένο" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "ΧÏειάζεται δουλειά" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "ΧÏειάζεται δουλειά" #: src/editing_area.cpp:566 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 που βασίζεται " "στο Ï€Ïότυπο." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "ΔημιουÏγία νέας μετάφÏασης" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "ΔημιουÏγία νέας μετάφÏασης από αυτό το αÏχείο POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ΑναγνωÏιστικό πηγαίου κειμένου" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Τα πάντα" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "ΜοÏφή %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "ΜοÏφή %i (αχÏησιμοποίητη)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Μηδέν" #: src/editing_area.cpp:788 msgid "One" msgstr "Ένα" #: src/editing_area.cpp:790 msgid "Two" msgstr "ΔÏο" #: src/editing_area.cpp:804 msgid "Other" msgstr "Άλλο" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "ΠεÏιεχόμενο συμβολοσειÏάς: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "ΑναγνωÏιστικό συμβολοσειÏάς: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "ΜοÏφή %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "ΜοÏφή %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "ΜετάφÏαση — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "ΑÏχικό κείμενο — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "άγνωστη γλώσσα" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Σφάλμα δικτÏου: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Άγνωστο σφάλμα" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Απέτυχε η συγχώνευση καταλόγων gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Άνοιγμα στο εÏγαλείο επεξεÏγασίας" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Άνοιγμα στο εÏγαλείο επεξεÏγασίας" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Δεν παÏέχεται καμία πληÏοφοÏία στο αÏχείο για τις εμφανίσεις αυτής της " "συμβολοσειÏάς στον πηγαίο κώδικα." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Καμία πληÏοφοÏία χÏήσης" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d εμφάνιση κώδικα" msgstr[1] "%d εμφανίσεις κώδικα" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Δεν βÏέθηκε πηγαίος κώδικας" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Το Poedit δεν μποÏεί να εμφανίσει τον πηγαίο κώδικα όπου χÏησιμοποιείται η " "συμβολοσειÏά, επειδή το αÏχείο είτε δεν είναι διαθέσιμο στην αναφεÏόμενη " "τοποθεσία, είτε Ï€Ïόκειται για συμβολική αναφοÏά που δεν δείχνει σε " "Ï€Ïαγματικό αÏχείο." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Αδυναμία ανοίγματος αÏχείου" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Το Poedit δεν μπόÏεσε να ανοίξει το αÏχείο \"%s\"." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "ΕÏÏεση" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Αντικατάσταση" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Επιλογές" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "ΠαÏάβλεψη πεζών-κεφαλαίων" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "ΕπιστÏοφή στην αÏχή" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Μόνο ολόκληÏες λέξεις" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "ΕÏÏεση στα πηγαία κείμενα" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "ΕÏÏεση στις μεταφÏάσεις" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "ΕÏÏεση στα σχόλια" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Αντικατάσταση &όλων" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Αντικατάσταση &όλων" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Αντικατάσταση" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &ΠÏοηγοÏμενο" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Επόμενο >" #: src/findframe.cpp:235 msgid "String to find" msgstr "ΣυμβολοσειÏά Ï€Ïος εÏÏεση" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "ΣυμβολοσειÏά αντικατάστασης" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "Ï€Ïοειδοποίηση: " #: src/gexecute.cpp:171 msgid "error: " msgstr "σφάλμα: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Όνομα γλώσσας ή κωδικός" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Γλώσσα μετάφÏασης" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Γλώσσα της μετάφÏασης:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Όλες οι συμβολοσειÏές" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Δεν ήταν δυνατή η λήψη λεπτομεÏειών έÏγου από το Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "ΠÏοέκυψε σφάλμα κατά τη μεταφόÏτωση μεταφÏάσεων στο Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "ΈÏγα" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Μάθετε πεÏισσότεÏα για το %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Το Localazy είναι μια εξαιÏετικά αυτοματοποιημένη πλατφόÏμα μετάφÏασης που " "επιτÏέπει σε οποιονδήποτε να μεταφÏάσει εÏκολα τα Ï€Ïοϊόντα και το " "πεÏιεχόμενό του σε πολλαπλές γλώσσες." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "ΠÏοσθήκη έÏγου" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "ΠÏοσθήκη έÏγου" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - ΔιαχείÏιση καταλόγων" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "ΕπεξεÏγασία…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "ΔημιουÏγία νέου έÏγου μετάφÏασης" #: src/manager.cpp:145 msgid "Delete the project" msgstr "ΔιαγÏαφή του έÏγου" #: src/manager.cpp:146 msgid "Edit the project" msgstr "ΕπεξεÏγασία του έÏγου" #: src/manager.cpp:176 msgid "Update all" msgstr "ΕνημέÏωση όλων" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "ΕνημέÏωση όλων των καταλόγων στο έÏγο" #: src/manager.cpp:378 msgid "Total" msgstr "ΣÏνολο" #: src/manager.cpp:379 msgid "Untrans" msgstr "Μη μεταφÏασμένο" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "ΧÏειάζεται δουλειά" #: src/manager.cpp:381 msgid "Errors" msgstr "Σφάλματα" #: src/manager.cpp:382 msgid "Last modified" msgstr "Τελευταία Ï„Ïοποποίηση" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Επιλογή καταλόγου" #: src/manager.cpp:433 msgid "Directories:" msgstr "Κατάλογοι:" #: src/manager.cpp:503 msgid "" msgstr "<χωÏίς όνομα>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Θέλετε να διαγÏάψετε το έÏγο “%sâ€;" #: src/manager.cpp:540 msgid "Delete project" msgstr "ΔιαγÏαφή έÏγου" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Η διαγÏαφή του έÏγου δεν θα διαγÏάψει κανένα αÏχείο μετάφÏασης." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Επιβεβαίωση" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "ΕνημέÏωση όλων των καταλόγων Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… έÏγου;" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Εκτελεί ενημέÏωση από τον πηγαίο κώδικα σε όλα τα αÏχεία του έÏγου." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "ΕνημέÏωση καταλόγων έÏγων" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Έλεγχος για ενημεÏώσεις…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "ΔιαχείÏιση καταλόγων" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&ΠÏοτιμήσεις…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&ΕπεξεÏγασία" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "ΑναίÏεση" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Επανάληψη" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Επικόλληση και αντιστοίχιση στυλ" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "ΔιαγÏαφή" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "ΟÏθογÏαφία και γÏαμματική" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Εμφάνιση οÏθογÏαφίας και γÏαμματικής" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Έλεγχος εγγÏάφου τώÏα" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Έλεγχος οÏθογÏαφίας κατά την πληκτÏολόγηση" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Έλεγχος γÏαμματικής με οÏθογÏαφία" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Αυτόματη διόÏθωση οÏθογÏαφίας" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Αντικαταστάσεις" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Εμφάνιση των Αντικαταστάσεων" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Έξυπνη αντιγÏαφή/επικόλληση" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Έξυπνα εισαγωγικά" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Έξυπνες παÏλες" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Έξυπνοι σÏνδεσμοι" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Αντικατάσταση κειμένου" #: src/menus.cpp:230 msgid "Transformations" msgstr "Μετασχηματισμοί" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "ΜετατÏοπή σε Κεφαλαία" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "ΜετατÏοπή σε Πεζά" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Κεφαλαιοποίηση" #: src/menus.cpp:237 msgid "Speech" msgstr "Ομιλία" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "ΈναÏξη ομιλίας" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Διακοπή ομιλίας" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&ΠÏοβολή" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Εμφάνιση γÏαμμής εÏγαλείων" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "ΠÏοσαÏμογή γÏαμμής εÏγαλείων…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "ΠλήÏης οθόνη" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "ΠαÏάθυÏο" #: src/menus.cpp:263 msgid "Minimize" msgstr "Ελαχιστοποίηση" #: src/menus.cpp:264 msgid "Zoom" msgstr "Ζουμ" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Καλώς ήÏθες στο Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "ΜεταφοÏά όλων στο Ï€Ïοσκήνιο" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "ΠληÏοφοÏίες σχετικά με τον μεταφÏαστή" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Όνομα:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Το όνομά σας" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Email:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Το όνομα και η διεÏθυνση email σας χÏησιμοποιοÏνται μόνο για τον οÏισμό της " "επικεφαλίδας \"Last-Translator\" στα αÏχεία GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "ΕπεξεÏγασία" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Αυτόματη μεταγλώττιση αÏχείου MO κατά την αποθήκευση" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Έλεγχος οÏθογÏαφίας" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Πάντα αλλαγή εστίασης στο πεδίο εισόδου κειμένου" #: src/prefsdlg.cpp:211 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 "" "Ποτέ μην αφήνετε τη λίστα των στίχων να εστιαστεί. Αν ενεÏγοποιηθεί, Ï€Ïέπει " "να χÏησιμοποιήσετε το Ctrl-βελάκια για πλοήγηση μέσω πληκτÏολογίου, αλλά " "μποÏείτε επίσης να πληκτÏολογήσετε κείμενο αμέσως, χωÏίς να χÏειαστεί να " "πατήσετε το πλήκτÏο Tab για αλλαγή εστίασης." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Εμφάνιση" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "ΧÏήση Ï€ÏοσαÏμοσμένης γÏαμματοσειÏάς λιστών:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "ΧÏήση Ï€ÏοσαÏμοσμένης γÏαμματοσειÏάς πεδίων κειμένου:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Αλλαγή γλώσσας πεÏιβάλλοντος εÏγασίας" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(απαιτεί Windows 8 ή νεότεÏα)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Γενικά" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "ΧÏήση μεταφÏαστικής μνήμης" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "ΔιαχείÏιση…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Κατά την ενημέÏωση από πηγές" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "ασαφή αντιστοιχία στον φάκελο" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "Ï€Ïο-μετάφÏαση από τη Μετ.Μνήμη" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Το Poedit μποÏεί να Ï€Ïοσπαθήσει να συμπληÏώσει νέες καταχωÏήσεις μόνο από " "Ï€ÏοηγοÏμενες μεταφÏάσεις στο αÏχείο ή από ολόκληÏη την μνήμη μετάφÏασης. Η " "χÏήση της Μνήμης ΜετάφÏασης δεν θα είναι Ï€Î¿Î»Ï Î±Ï€Î¿Ï„ÎµÎ»ÎµÏƒÎ¼Î±Ï„Î¹ÎºÎ® εάν είναι " "σχεδόν άδεια, αλλά θα γίνει καλÏτεÏη όσο Ï€Ïοσθέτετε πεÏισσότεÏες μεταφÏάσεις " "σε αυτή." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Αποθηκευμένες μεταφÏάσεις:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Μέγεθος βάσης δεδομένων στο δίσκο:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Εισαγωγή αÏχείων μετάφÏασης…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Εισαγωγή αÏχείων μετάφÏασης…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Εισαγωγή από TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Εισαγωγή από TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Εξαγωγή σε TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Εξαγωγή σε TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "ΕπαναφοÏά" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Επέλεξε τα αÏχεία μετάφÏασης Ï€Ïος εισαγωγή" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Επιλέξτε αÏχεία TMX για εισαγωγή" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "ΑÏχεία TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Εισαγωγή μεταφÏάσεων…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Η εισαγωγή μεταφÏαστικής μνήμης απέτυχε." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Εισαγωγή από «%s»…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "Εισήχθη %s μετάφÏαση." msgstr[1] "Εισήχθησαν %s μεταφÏάσεις." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Εξαγωγή ως…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Εξαγωγή μεταφÏάσεων…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Αποτυχία εξαγωγής μεταφÏαστικής μνήμης στο “%sâ€." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "ΕπαναφοÏά μεταφÏαστικής μνήμης" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Είστε σίγουÏοι ότι θέλετε να επαναφέÏετε την μνήμη μεταφÏάσεων;" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Η επαναφοÏά της μνήμης μεταφÏάσεων θα διαγÏάψει αμετάκλητα όλες τις " "αποθηκευμένες μεταφÏάσεις από αυτήν. Δεν μποÏείτε να αναιÏέσετε αυτή τη " "λειτουÏγία." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "ΜΜ" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "ΜεταφÏαστική μνήμη" #: src/prefsdlg.cpp:730 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 "" "Τα εÏγαλεία εξαγωγής πηγαίου κώδικα χÏησιμοποιοÏνται για την εÏÏεση και την " "εξαγωγή μεταφÏάσιμων συμβολοσειÏών από τα αÏχεία πηγαίου κώδικα ώστε να " "μποÏέσουν να μεταφÏαστοÏν." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "ΠÏοσαÏμοσμένα εÏγαλεία εξαγωγής:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "ΠÏοσαÏμοσμένα εÏγαλεία εξαγωγής:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "ΥποστηÏίζει όλες τις γλώσσες Ï€ÏογÏÎ±Î¼Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï Ï€Î¿Ï… αναγνωÏίζονται από τα " "εÏγαλεία GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript και " "άλλες)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "ΔιαγÏαφή εÏγαλείου εξαγωγής" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Θέλετε σίγουÏα να διαγÏάψετε το εÏγαλείο εξαγωγής \"%s\";" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "ΕÏγαλεία εξαγωγής" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "ΛογαÏιασμοί" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Αυτόματος έλεγχος για ενημεÏώσεις" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "ΣυμπεÏίληψη εκδόσεων beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Οι εκδόσεις beta πεÏιέχουν τις πιο Ï€Ïόσφατες λειτουÏγίες και βελτιώσεις, " "αλλά μποÏεί να είναι λιγότεÏο σταθεÏές." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "ΕνημεÏώσεις" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Αυτές οι Ïυθμίσεις επηÏεάζουν την εσωτεÏική μοÏφοποίηση των αÏχείων PO. " "ΠÏοσαÏμόστε τις αν έχετε ειδικές απαιτήσεις Ï€.χ. λόγω ελέγχου έκδοσης." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Καταλήξεις γÏαμμής:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (Ï€Ïοτείνεται)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Αναδίπλωση σε:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "ΔιατήÏηση μοÏφοποίησης υπαÏχόντων αÏχείων" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "ΣÏνθετα" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Ρυθμίσεις" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "ΠÏοετοιμασία συμβολοσειÏών…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "ΠÏο-μετάφÏαση από τη μεταφÏαστική μνήμη…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "ΠÏο-μεταφÏασμένη συμβολοσειÏά %u" msgstr[1] "ΠÏο-μεταφÏασμένες συμβολοσειÏές %u" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "ΠÏο-μετάφÏαση…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d καταχώÏηση Ï€Ïο-μεταφÏάστηκε." msgstr[1] "%d καταχωÏήσεις Ï€Ïο-μεταφÏάστηκαν." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Οι μεταφÏάσεις επισημάνθηκαν ως \"απαιτεί εÏγασία\", επειδή μποÏεί να είναι " "ανακÏιβείς. Θα Ï€Ïέπει να τις εξετάσετε για την οÏθότητα τους." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "ΑκÏιβείς αντιστοιχίες από τη ΜΜ" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "ΠαÏαπλήσιες αντιστοιχίες από ΜΜ" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Οι καταχωÏήσεις δεν μπόÏεσαν να Ï€Ïο-μεταφÏαστοÏν." #: src/pretranslate.cpp:218 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 μάθει αÏκετά από αÏχεία που έχετε μεταφÏάσει με " "μη αυτόματο Ï„Ïόπο." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Δεν είναι δυνατή η Ï€Ïο-μετάφÏαση χωÏίς πηγαίο κείμενο." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "ΠÏο-μετάφÏαση" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Η Ï€ÏομετάφÏαση απαιτεί να είναι διαθέσιμο το αÏχικό κείμενο. Δεν λειτουÏγεί " "αν χÏησιμοποιοÏνται μόνο αναγνωÏιστικά χωÏίς το Ï€Ïαγματικό κείμενο." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Δεν είναι δυνατή η Ï€ÏομετάφÏαση από άγνωστη γλώσσα." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Η Ï€ÏομετάφÏαση απαιτεί να είναι γνωστή η γλώσσα του αÏÏ‡Î¹ÎºÎ¿Ï ÎºÎµÎ¹Î¼Î­Î½Î¿Ï…. Το " "Poedit δεν μπόÏεσε να την ανιχνεÏσει σε αυτό το αÏχείο." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "ΣυμπληÏώστε μόνο ακÏιβείς αντιστοιχίες" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Από Ï€Ïοεπιλογή, πεÏιλαμβάνονται επίσης ανακÏιβή αποτελέσματα, αλλά " "επισημαίνονται με την ετικέτα «ΧÏειάζεται δουλειά». ΕνεÏγοποιήστε αυτήν την " "επιλογή για να συμπεÏιλαμβάνονται μόνο τέλειες αντιστοιχίες." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Μην επισημάνετε ακÏιβείς αντιστοιχίες ως χÏειάζεται δουλειά" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "ΕνεÏγοποιήστε μόνο εάν εμπιστεÏεστε την ποιότητα της μνήμης μεταφÏάσεων σας. " "Από Ï€Ïοεπιλογή, όλες οι αντιστοιχίες από την Μνήμη ΜεταφÏάσεων " "επισημαίνονται ως \"απαιτεί εÏγασία\" και Ï€Ïέπει να θεωÏηθοÏν Ï€Ïιν την χÏήση." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Η Ï€Ïο-μετάφÏαση βÏίσκει αυτόματα ακÏιβείς ή ασαφείς αντιστοιχίες για " "αμετάφÏαστες συμβολοσειÏές στην μνήμη μεταφÏάσεων και συμπληÏώνει τις " "μεταφÏάσεις τους." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Σφάλμα: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "ΠÏοέκυψε %d σφάλμα:" msgstr[1] "ΠÏοέκυψαν %d σφάλματα:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "ΠÏοέκυψε σφάλμα." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "ΠÏοέκυψε %d σφάλμα." msgstr[1] "ΠÏοέκυψαν %d σφάλματα." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "ΑκÏÏωση…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "ΣÏÏετε φακέλους ή αÏχεία εδώ" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "ΣÏÏετε φακέλους ή αÏχεία εδώ" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "ΠÏοσθήκη φακέλων…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "ΠÏοσθήκη φακέλων…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "ΠÏοσθήκη αÏχείων…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "ΠÏοσθήκη αÏχείων…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "ΠÏοσθήκη χαÏακτήÏα αναπλήÏωσης…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "ΠÏοσθήκη χαÏακτήÏα αναπλήÏωσης…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Αποκάλυψη στο Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Εμφάνιση στην ΕξεÏεÏνηση" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Εμφάνιση στο φάκελο" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "ΔιαδÏομές" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "ΕξαιÏοÏμενες διαδÏομές" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "ΣÏνθετες Ïυθμίσεις εξαγωγής" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Εξαγωγή σημειώσεων για μεταφÏαστές από:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Σχόλια με Ï€Ïόθεμα:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Όλα τα σχόλια" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "ΕπιπÏόσθετες ετικέτες xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "ΕπιπÏόσθετες λέξεις-κλειδιά" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Το όνομα του έÏγου για το οποίο είναι η μετάφÏαση" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Όνομα ομάδας και διεÏθυνση email ή διεÏθυνση URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "Ï€.χ. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (Ï€Ïοτείνεται)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "ΠαÏακαλώ αποθήκευσε αυτό το αÏχείο, Ï€Ïώτα, ώστε να μποÏεί να γίνει, μετά, " "επεξεÏγασία Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… τμήματος." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "ΟÏθότητα συμβόλων υποκατάστασης" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Το σÏμβολο υποκατάστασης «%s» λείπει από τη μετάφÏαση." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "ΠεÏιττό σÏμβολο υποκατάστασης «%s» που δεν υπάÏχει στο αÏχικό κείμενο." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "ΜεταφÏάσεις πληθυντικοÏ" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Δεν είναι όλες οι μοÏφές Ï€Î»Î·Î¸Ï…Î½Ï„Î¹ÎºÎ¿Ï Î¼ÎµÏ„Î±Ï†Ïασμένες." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Ασυμφωνία κεφαλαίων/πεζών" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Η μετάφÏαση Ï€Ïέπει να ξεκινά ως μία Ï€Ïόταση." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Η μετάφÏαση θα Ï€Ïέπει να ξεκινά με πεζό χαÏακτήÏα." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Ασυμφωνία ÎºÎµÎ½Î¿Ï Î´Î¹Î±ÏƒÏ„Î®Î¼Î±Ï„Î¿Ï‚" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Η μετάφÏαση δεν ξεκινά με κενό." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Η μετάφÏαση ξεκινά με κενό, αλλά το πηγαίο κείμενο όχι." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Απουσιάζει νέα γÏαμμή στο τέλος της μετάφÏασης." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Η μετάφÏαση τελειώνει με νέα γÏαμμή, σε αντίθεση με το αÏχικό κείμενο." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Στην μετάφÏαση λείπει ένα κενό στο τέλος." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Η μετάφÏαση τελειώνει με κενό, αλλά το πηγαίο κείμενο όχι." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Έλεγχοι" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Η μετάφÏαση θα Ï€Ïέπει να τελειώνει με %s." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Η μετάφÏαση δεν Ï€Ïέπει να τελειώνει με \"%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Η μετάφÏαση τελειώνει με %s, αλλά το πηγαίο κείμενο τελειώνει με %s." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Cloud" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Απαλοιφή μενοÏ" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Απαλοιφή μενοÏ" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Σχόλιο:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "ΕνημέÏωση" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&ΔιαγÏαφή" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "ΔιαγÏαφή του σχολίου" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "ΕπεξεÏγασία έÏγου" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Όνομα έÏγου:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Αναζήτηση" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "ΠÏοσθήκη φακέλου στη λίστα" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&ΑÏχείο" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Îέο…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Îέο από αÏχείο &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Îέο από αÏχείο &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Άνοιγμα…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Άνοιγμα Ï€Ïόσφατου" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Άνοιγμα Ï€Ïόσφατου" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Άνοιγμα μετάφÏασης από το cloud…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Άνοιγμα μετάφÏασης από το cloud…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&ΠαÏάθυÏο εκκίνησης" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&ΠαÏάθυÏο εκκίνησης" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&ΔιαχείÏιση καταλόγων" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&ΔιαχείÏιση καταλόγων" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Κλείσιμο" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Αποθήκευση" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Αποθήκευση &ως…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Αποθήκευση &ως…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Μεταγλώττιση σε MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "Ε&ξαγωγή σε HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Έλεγχος για ενημεÏώσεις…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Ρυθμίσεις…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&ΠÏοτιμήσεις" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "Έ&ξοδος" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Έξοδος" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "ΑντιγÏαφή από ενικό" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "ΑντιγÏαφή από ενικό" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Η μετάφÏαση είναι α&νέτοιμη" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Η ΜετάφÏαση Είναι Α&νέτοιμη" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "ΕπεξεÏγασία &σχολίου" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "ΕπεξεÏγασία &σχολίου" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "ΠÏοτάσεις" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&ΕÏÏεση…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Αντικατάσταση…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "ΕÏÏεση επόμενου" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "ΕÏÏεση Ï€ÏοηγοÏμενου" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "ΕÏÏεση και αντικατάσταση…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "ΕÏÏεση επόμενου" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "ΕÏÏεση Ï€ÏοηγοÏμενου" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Εμφάνιση αναγνωÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï &συμβολοσειÏάς" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Εμφάνιση αναγνωÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï &συμβολοσειÏάς" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "ΠÏοβολή Ï€Ïοειδοποιήσεων" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "ΠÏοβολή Ï€Ïοειδοποιήσεων" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Ταξινόμηση κατά σειÏά &αÏχείων" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Ταξινόμηση κατά σειÏά &αÏχείων" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Ταξινόμηση κατά &πηγή" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Ταξινόμηση κατά &πηγή" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Ταξινόμηση κατά &μετάφÏαση" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Ταξινόμηση κατά &μετάφÏαση" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "Ομαδοποίηση κατά &συμφÏαζόμενα" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "Ομαδοποίηση κατά &συμφÏαζόμενα" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "ΚαταχωÏήσεις με σφάλματα Ï€Ïώτες" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "ΚαταχωÏήσεις με σφάλματα Ï€Ïώτες" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "ΠÏώτα οι &αμετάφÏαστες καταχωÏήσεις" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "ΠÏώτα οι &ΑμετάφÏαστες ΚαταχωÏήσεις" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&ΠÏοβολή εμφανίσεων κώδικα" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&ΠÏοβολή εμφανίσεων κώδικα" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Εμφάνιση πλευÏικής γÏαμμής" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Εμφάνιση γÏαμμής κατάστασης" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&ΜετάφÏαση" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&ΕνημέÏωση από πηγαίο κώδικα" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&ΕνημέÏωση από πηγαίο κώδικα" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "ΣυγχÏονισμός με το Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "ΠÏο-&μετάφÏαση…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "Επι&κÏÏωση μεταφÏάσεων" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "Επι&κÏÏωση μεταφÏάσεων" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "ΑφαίÏεση μεταφÏάσεων όμοιων με το αÏχικό κείμενο" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "Ε&κκαθάÏιση των διαγÏαμμένων μεταφÏάσεων" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "Ε&κκαθάÏιση των ΔιαγÏαμμένων ΜεταφÏάσεων" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Ιδιότητες…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Μετάβαση" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Τέλος και επόμενο" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Τέλος και επόμενο" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "ΠÏοηγουμένως επεξεÏγασμένο" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "ΠÏοηγουμένως ΕπεξεÏγάστηκε" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&ΠÏοηγοÏμενη μετάφÏαση" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&ΠÏοηγοÏμενη μετάφÏαση" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Επόμενη μετάφÏαση" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Επόμενη μετάφÏαση" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "&ΠÏοηγοÏμενο ατελές" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "&ΠÏοηγοÏμενο ατελές" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "&Επόμενο ατελές" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "&Επόμενο ατελές" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "ΠÏοηγοÏμενη μοÏφή πληθυντικοÏ" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "ΠÏοηγοÏμενη μοÏφή πληθυντικοÏ" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Επόμενη μοÏφή πληθυντικοÏ" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Επόμενη μοÏφή πληθυντικοÏ" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Διαδικτυακή βοήθεια" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Διαδικτυακή βοήθεια" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&Οδηγίες χÏήσης του GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&Οδηγίες χÏήσης του GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Σχετικά με το Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Σχετικά" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "ΡÏθμιση εÏγαλείου εξαγωγής" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Η λίστα των επεκτάσεων χωÏίζεται από άνω τελείες (πχ *.cpp · *.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Κλήση:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Εντολή εξαγωγής μεταφÏάσεων:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Αυτή είναι η εντολή εκτέλεσης του εÏγαλείου εξαγωγής.\n" "Το %o αναπτÏσσει το όνομα του αÏχείου εξόδου, το %K τη λίστα\n" "των λέξεων-κλειδιών, το %F τη λίστα των αÏχείων εισόδου,\n" "το %C τη σημαία του συνόλου χαÏακτήÏων (βλέπε παÏακάτω)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Ένα αντικείμενο στη λίστα των λέξεων κλειδιών:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Αυτό θα Ï€ÏοσαÏτηθεί στη γÏαμμή εντολών μία φοÏά\n" "για κάθε λέξη κλειδί. Το %k αναπτÏσσει τη λέξη κλειδί." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Ένα αντικείμενο στη λίστα των αÏχείων εισαγωγής:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Αυτό θα Ï€ÏοσαÏτηθεί στη γÏαμμή εντολών μία φοÏά\n" "για κάθε αÏχείο εισόδου. Το %f αναπτÏσσει το όνομα αÏχείου." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "ΣÏνολο χαÏακτήÏων πηγαίου κώδικα:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Αυτό θα Ï€ÏοσαÏτηθεί στη γÏαμμή εντολών μόνο αν δοθεί\n" "το σÏνολο χαÏακτήÏων πηγαίου κώδικα. Το %c αναπτÏσσει την τιμή του συνόλου " "χαÏακτήÏων." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Ιδιότητες μετάφÏασης" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Όνομα και έκδοση έÏγου:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Ομάδα μετάφÏασης:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "ΜοÏφές πληθυντικοÏ:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "ΧÏήση Ï€Ïοεπιλεγμένων κανόνων για αυτή τη γλώσσα" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "ΧÏήση Ï€ÏοσαÏμοσμένων εκφÏάσεων" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Μάθετε για τις μοÏφές πληθυντικοÏ" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "ΣÏνολο χαÏακτήÏων:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "ΣÏνθετες Ïυθμίσεις εξαγωγής…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "ΣÏνθετες Ïυθμίσεις εξαγωγής…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Ιδιότητες μετάφÏασης" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "ΔιαδÏομές πηγών" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "ΔιαδÏομές πηγών" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Εξαγωγή του κειμένου από τα πηγαία αÏχεία στους ακόλουθους φακέλους:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "ΔιαδÏομή βάσης:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Λέξεις-κλειδιά πηγών" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Λέξεις-κλειδιά πηγών" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "ΧÏήση αυτών των λέξεων κλειδιών (ονόματα συναÏτήσεων) Ï€Ïος αναγνώÏιση " "μεταφÏάσιμων στίχων\n" "στα πηγαία αÏχεία:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" "ΧÏησιμοποιήστε επίσης τις Ï€Ïοεπιλεγμένες λέξεις-κλειδιά για υποστηÏιζόμενες " "γλώσσες" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Μάθετε για τις λέξεις-κλειδιά του gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Άνοιγμα αÏχείου" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Αποθήκευση αÏχείου" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "ΕπικÏÏωση" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Έλεγχος λαθών στη μετάφÏαση" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "ΕνημέÏωση από κώδικα" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "ΕνημέÏωση από κώδικα" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "ΕνημέÏωση από πηγαίο κώδικα" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "ΠλευÏικό πάνελ" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Εμφάνιση ή απόκÏυψη πλευÏικής γÏαμμής" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "ΠÏοηγοÏμενο αÏχικό κείμενο" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Το παλιό αÏχικό κείμενο (Ï€Ïιν από την αλλαγή κατά την ενημέÏωση) που " "αντιστοιχεί στην πλέον ανακÏιβή μετάφÏαση." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Σημειώσεις για μεταφÏαστές" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Σχόλιο" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "ΠÏοσθήκη σχολίου" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "ΠÏοσθήκη σχολίου" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "ΔιαγÏαφή από μεταφÏαστική μνήμη" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "ΔιαγÏαφή από μεταφÏαστική μνήμη" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "ΠÏοτάσεις μετάφÏασης" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Δεν βÏέθηκαν αντιστοιχίες" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Δεν βÏέθηκαν αντιστοιχίες" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Αυτή η συμβολοσειÏά βÏέθηκε στη μεταφÏαστική μνήμη του Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Οι Ï€Ïοτάσεις μετάφÏασης απαιτοÏν να είναι διαθέσιμο το αÏχικό κείμενο. Δεν " "λειτουÏγοÏν αν χÏησιμοποιοÏνται μόνο αναγνωÏιστικά χωÏίς το Ï€Ïαγματικό " "κείμενο." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Οι Ï€Ïοτάσεις μετάφÏασης απαιτοÏν να είναι γνωστή η γλώσσα του αÏÏ‡Î¹ÎºÎ¿Ï " "κειμένου. Το Poedit δεν μπόÏεσε να την ανιχνεÏσει σε αυτό το αÏχείο." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Αδυναμία εκτέλεσης Ï€ÏογÏάμματος: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Το αÏχείο TMX είναι παÏαμοÏφωμένο." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Η βάση δεδομένων μεταφÏαστικής μνήμης είναι κατεστÏαμμένη: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Σφάλμα μεταφÏαστικής μνήμης: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(ΧÏήση Ï€Ïοεπιλεγμένης γλώσσας)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Επιλογή γλώσσας" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Επιλέξτε την Ï€Ïοτιμώμενη γλώσσα σας" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "" "ΠÏέπει να γίνει επανεκκίνηση του Poedit, ώστε αυτή η αλλαγή να έχει επίδÏαση." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Αδυναμία δημιουÏγίας του φακέλου των Ï€ÏοσωÏινών αÏχείων." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Δεν υπάÏχουν μεταφÏάσεις. Αυτό είναι ασυνήθιστο." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Οι καταχωÏήσεις Ï€Ïος μετάφÏαση δεν Ï€Ïοστίθενται χειÏοκίνητα στο σÏστημα " "Gettext, αλλά εξάγονται αυτόματα από τον πηγαίο κώδικα. Με αυτόν τον Ï„Ïόπο, " "παÏαμένουν ενημεÏωμένες και ακÏιβείς. Οι μεταφÏαστές χÏησιμοποιοÏν συνήθως " "τα Ï€Ïότυπα αÏχεία PO (POT) που Ï€Ïοετοιμάζει ο Ï€ÏογÏαμματιστής." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Μάθετε πεÏισσότεÏα για το GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Ο απλοÏστεÏος Ï„Ïόπος για να συμπληÏώσετε αυτό το αÏχείο με μεταφÏάσεις είναι " "η ενημέÏωση από ένα POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "ΕνημέÏωση από το αÏχείο POΤ" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "ΠάÏε μεταφÏάσιμους στίχους από ένα υπάÏχον Ï€Ïότυπο .POT." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "ΜποÏείς, επίσης να εξάγεις μεταφÏάσιμους στίχους, κατευθείαν από τον πηγαίο " "κώδικα:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Εξαγωγή από τις πηγές" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "ΡÏθμισε την εξαγωγή του πηγαίου κώδικα στις Ιδιότητες." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Έκδοση %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "ΔημιουÏγία νέας" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "ΔημιουÏγία νέας μετάφÏασης από Ï€Ïότυπο POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Αναζήτηση αÏχείων" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Άνοιγμα και επεξεÏγασία αÏχείων μετάφÏασης." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "ΜετάφÏαση έÏγου από το cloud" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "ΣυνεÏγαστείτε με άλλα άτομα σε απευθείας σÏνδεση." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "ΠÏόσφατα αÏχεία" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "ΣυγχÏονισμός" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "ΣυγχÏονισμός μετάφÏασης με το Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Σχετικά με το %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "ΠÏοτιμήσεις %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Σχετικά με το %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "ΥπηÏεσίες" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "ΑπόκÏυψη %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "ΑπόκÏυψη άλλων" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Εμφάνιση όλων" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Κλείσιμο %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "ΠÏοτιμήσεις…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "ΠÏοτιμήσεις..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "ΠÏοτιμήσεις..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&ΕφαÏμογή" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "ΕφαÏμογή" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Πίσω" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Πίσω" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&ΑκÏÏωση" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Απαλοιφή" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Απαλοιφή" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "ΑντιγÏαφή" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Απο&κοπή" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Αποκοπή" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "ΕπεξεÏγασία" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Έξοδος" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Βοήθεια" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Îέα" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Îέα" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Όχι" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Όχι" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Άνοιγμα…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Άνοιγμα..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Άνοιγμα..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Επικόλληση" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Επικόλληση" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "ΠÏοτιμήσεις" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Επανάληψη" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Ανανέωση" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Αποθήκευση ως" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Αποθήκευση ως" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Επιλογή ÏŒ&λων" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Επιλογή όλων" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&ΑναίÏεση" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Îαι" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Îαι" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Πάνω" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Κάτω" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "ΑÏιστεÏά" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Δεξιά" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "ΠÏοειδοποίηση: " poedit-3.6.3/locales/kab.mo0000644000175100001660000014436715011674364011233 Þ•~ Uü'P5 Q5 ]5&h55<£5à5Jó5g>6 ¦6°6 ¿6É6 Ð6Þ6å6ë6ó6ú67777-73797B7V7j7n7€7’7˜77¥7­7¿7Ñ7Õ7 Ù7 æ7ó7ü78 88)8?8U8d8€8œ8¢8¨8±8·8À8×8 î8 ü8 99999U9n9‡9ž9µ9»9À9×9 õ9 : :::%: ): 5:B: Q:]: m:y: “: : ¯:»:Ë:ß:ú:;#;@;`; v; ƒ;1;'Á;é;< <+<71<6i< <)À<ê< ï<]ú<X=<k=D¨=$í=> >&> ->";>^> y>„>–>¨>¹>Ì>Õ>è>? ?#5?Y?n?}? ƒ?Ž?  ?«?½?Ã?Ô?å? @!@)@2@J@ [@i@/„@ ´@Á@Æ@Ù@ï@AA17AiA ‚AA)¤AÎA îAüABB'BYkY }Y‹Y2šY*ÍYøYŽ Z šZ¦ZµZÄZ%ÙZÿZ[)[>[P[b[ |[Š[“[œ[¯[µ[Ð[ Õ[â[ç[ ï[ û[ \\\ $\ 1\>\ Q\(\\…\‹\z¤\]0]7] <] H] T] `]l] t] ] Œ] –] £] ¯]º]Õ]æ]"þ]!^=^ \^ i^v^ ^ ‹^˜^²^Â^Ò^ å^ ò^__ _ 9_F_V_ f_t_|_„__ •_£_¼_Ï_è_ñ_ú_ ` ` $`1`E`U`j`~`Ž`£`†¸`?aZa pa|a‹aža ¯a½a ÎaÜaKãa/bDb Sbabvb1’bÄb Ób ábŽíb=|cºc:d?d(Qdzd ‚dd+­dÙd Üd8æd"eBeÂSefC1f8ufî®fŸg8=hRvhcÉhQ-ii'ši:ÂilýiPjj-»jCéjA-kKok0»k.ìkŽl!ªl)Ìl-öl+$m8PmC‰muÍm,CnLpn]½n…oJ¡o[ìo«Hp7ôpm,q_šq[úqVr\rlr ‰r•rªr½rÕr2ìr"sBsZsqs‰sˆœs%t)t=t Btctvtt•t œt"§t$Êtïtu!u2uBuSukuzu‚u’u¨uÅuåuÿuv+v#HvVlvÃvÚvãv övww1wLw]wdw.lw ›w§w°wÈwHÌw5xmKx7¹x ñx3ûxa/y‘y–y›y.¸y çyz$zDz[zmz€z’z¥z·zÊzÞzîzÿz{${={U{q{{¨{Á{Ú{ð{||!*|ªL|÷}~.~M~-j~˜~A·~uù~ oy ‰“ ˜¤©²ºÂÈÏ Õ ãñù€ €!€9€>€S€h€q€ z€ …€’€¥€¸€½€Á€Û€õ€ý€   *< NXu’˜ Ÿ© ±¼Õî‚ ‚‚"$‚"G‚j‚†‚¤‚µ‚ ǂтՂñ‚ƒ ƒ)ƒ1ƒ :ƒEƒ Iƒ Uƒcƒ sƒƒ ˜ƒ¤ƒ ¼ƒʃ Úƒèƒÿƒ„6„#>„ b„#ƒ„§„ ¼„ Ê„@Ö„)…'A…'i… ‘…›…1 …;Ò…†''†O†X†kh†#Ô†Gø†Q@‡(’‡»‡ ‡Ї ׇ"⇈ ˆ9ˆNˆcˆxˆ‘ˆ¨ˆ!»ˆ!݈ÿˆ‰-‰=‰O‰ V‰c‰ s‰€‰‰•‰¨‰»‰׉ö‰þ‰Š"Š 3ŠAŠ,XŠ…ŠŠ“Š£Š¾ŠΊéŠ1‹#8‹\‹m‹-‰‹#·‹Û‹î‹ô‹ŒŒ6Œ';ŒcŒhŒ ‚ŒŒ©Œ ¸Œ ÅŒ5ÒŒ 'ƒ:;¾ú ŽŽ37ŽkމŽ(¨Ž%ÑŽ%÷Ž$+;JYhw † š¡rº"-"Psó‘--‘ [‘g‘k‘ƒ‘ •‘£‘»‘0Í‘þ‘’'’3G’{’ ’*—’-Â’*ð’+“G“N“f“+“g«“” ” %”0”A”U”q” ‚” ” 𔍔 ·” Ä” є۔ ø”• •••3•I•_•³b• –†·–>—B—Y—h———©—¿—Æ—1Û— ˜$˜9˜?˜Q˜Y˜p˜v˜5’˜$Ș혙™$™-™*>™"i™ Œ™—™ª™™CÝ™!šE6š|š>ŒšËšèš)›)+›U› g›q››˜›±›·›Í› ä› ñ›þ› *HZsŒ/¨WØ0žHž`ž-wž,¥žÒžæžéžÂïž&²ŸÙŸ$èŸ   + > M T  [ f n ‚ – ª ˆÄ  M¡X¡w¡D¡Ä¡9סa¢Qs¢Å¢Ë¢Pé¢:£N£U£>s£²£¼Â¤0¥&°¥×¥ë¥ý¥A¦'T¦|¦“¦ $§ /§ =§K§`§~§•§¬§§Õ§è§¨¨ ¨(¨<¨C¨`¨f¨y¨¨ˆ¨œ¨ °¨½¨¨ ˨Ù¨ï¨ ©*© :©G©†g©î©ÿ©ª ª ª)ª<ª Oª Yªfª wª…ª žª¨ª±ª Ъܪ$òª«1« K« Y« g« r«€«•«´«Ê«Û«î« ¬¬!¬5¬T¬i¬¬ ¬›¬«¬°¬¶¬ »¬Ȭã¬õ¬­­­5­J­Z­i­‚­‘­ ­¹­È­*×­Š® ® ®®Ï®ß®ô® ¯#¯6¯N¯a¯@i¯ª¯ įЯ߯ù¯/°E° X°e°—l°N±sS±DZͱâ±²²²38²l² o²9z²*´²ß²¥ó²%™³;¿³Bû³Ô>´­µ8Áµ@úµZ;¶Y–¶ ð¶%·)7·_a·JÁ· ¸A-¸6o¸A¦¸2è¸'¹‡C¹˹"æ¹) º#3º.Wº6†ºf½º'$»?L»YŒ»væ»M]¼c«¼Å½0սо_‘¾kñ¾]¿d¿l¿Š¿“¿¥¿·¿Í¿5Þ¿&À;ÀQÀbÀsÀƒÀÁ ÁÁ*%ÁPÁdÁ‚Á–Á Á¨Á"ÈÁëÁÂÂ0Â?ÂR oÂ|㥬ÂÇÂãÂ÷ÂÃ+&Ã&RÃryÃìÃÄ ÄÄ'Ä;Ä MÄnÄĉÄ4‘ÄÆÄËÄäÄûÄVþÄJUÅv Å@ÆXÆ=kÆk©ÆÇÇ "Ç+/Ç#[ÇÇ(ŸÇÈÇãÇèÇîÇöÇ ûÇÈ ÈÈÈÈ"È(È0È 8È EÈ SÈ _ÈkÈtȉțȹÈ&ÐÈODò|âŸ`mTóúcêY÷'LcКºCǤEêÛ.ûw¥1«IÅ‘þ.ˆ BN6ÊB± C ¬öÚÊžÆËG5»t\µ…éõ3Ö %tÖ‰|œØ½3~*Ya[gŸ£õ•‡dž@†¿ —x6m}4ÑËÃDjy·cý]ºžF…T»pðŠÜvɸIÄUA€Àyˆ:­¡°÷{!#þ[•¾+a¯s*ý×M™p{ÈÒH/jòðHÄ<¦®= ±½z¡QôiÞ$irWVU„l°ßìY#XÉ‚è6­à‘'§LÚà¢)\=ùÏ"–W~i/ÌÙ&n´.ÀJµÿü08(ù&¼`ób{NªÎ8n²S`ø4¬*ÿOÝü‡r-„¢20x˜/(NÜ^ÆPÈ;«:äÓãëduø“éì–d1ïgC Á7hq´]á?o)kX³úe“H,;e¾Œs‹hMz€Þ+’O>”ZlKâA<Ñ5¤w-í—ÕMvf o¹,LÃ!"u_‚+ng\t2˜V%?îåñ ®ïœZíV¨X¸Z’¦ä²? }©Ž×5|ç-4x<Ýfs>Rëk,³ 0Qlzª ƒF Û9›R# d3 ôUEWDhÎÅ(©~qæ·Sj¹Tš@ÁáŒÍ¯¼7@KQßæ$S$¥ Âñ=qÌ:v)9IJ 7w upeÙÏb›^û1öf]¶k‹ØråÓ%JFã£>GÔaRÐîK!èÍ"}Š”§Õ8¨Ò_PybB¿Ô_92 E^PmŽ'oAçG ƒ¶[;‰&™ (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesCancelCancelling…Cannot create temporary directory.Cannot execute program: %sCapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCode OccurrencesCode occurrencesCollecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationCopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageIDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishMO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen RecentOpen and edit translation files.Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Please open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.UntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Kabyle Language: kab_KAB MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: kab X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (yettwabeddel) (ur yettwasekles ara)%d n tummant n tengalt%d n tummanin n tengalt%d n unekcum%d n yinekcumen%d n unekcum iÄur.%d n yinekcumen ÄÄuren.%d n tuccá¸a%d n tuccá¸iwin%d n wugur i d-nufa di tsuqilt.%d n wuguren i d-nufa di tsuqilt.%i n yizirig n ufaylu “%s†ur d-yuli ara akken iwata.%i n yizirigen n ufaylu “%s†ur d-ulin ara akken iwata.Amasal %sIsmenyifen n %sAmasal %sÆ”efÆ”ef PoeditSnesTuÉ£alin&Sefsex&Sfeá¸&Mdel&NÉ£el&KkesSnes u kemmelSnes u kemmel&ẒregAfa&yluNadi…Adlisfus n &GNU gettextAdlisfus n &GNU gettext&DduSe&grew s twennaá¸tSe&grew s twennaá¸t&Tallelt&AmaynutAmaynut…Ɣer &sdat >Tasuqilt tuá¸firtTasuqilt tuá¸firt&Ala&IHTallelt É£ef uẓeá¸á¸aTallelt É£ef uẓeá¸á¸a&Ldi...&Ldi…Sen&á¹­eá¸IsmenyifenIsmenyifen…Tasu&qilt tuzwirtTasu&qilt tuzwirtIraten…SfeḠtisuqilin yettwakksenSfeḠtisuqilin yettwakksenFfeÉ£Err-&dSe&mselsi&Sekles&Sekles am&Sken tummanin n tengalt&Sken tummanin n tengaltAsfaylu n tazwaraAsfaylu n tazwara&TasuqiltSe&fsexZwir inekcumen ur nettwasuqqel araZwir inekcumen ur nettwasuqqel ara&Leqqem seg tengalt aÉ£balu&Leqqem seg tengalt taÉ£balutSentem tisuqilinSeÉ£bel tisuqilinTa&muÉ£li&Ih(Seqdec tutlayt n lexá¹£as)(yesra Windows 8 neÉ£ amaynut)< &Æ”er deffirÆ”ef %sAmiá¸anImiá¸anenRnuRnu awennitRnu ifuyla…Rnu ikaramen…Rnu asenfaá¹›Rnu asekkil awsiyan…Rnu awennitRnu akaram É£er tebdartRnu ifuyla…Rnu ikaramen…Rnu asenfaá¹›Rnu asekkil awsiyan…Awalen yufraren imernanenInamalen-nniá¸en n sgettxt:AnaẓiIÉ£ewwaá¹›en inaẓiyen n tussfa…IÉ£ewwaá¹›en inaẓiyen n tussfaIÉ£ewwaá¹›en inaẓiyen n tussfa…Akk ifuyla n tsuqiltAkk iwennitenAkk izrirenSeqdec daÉ£en awalen yufraren n lexá¹£as i tutlayin yettwadehlenYalas ssermad taÉ£zut n usekcem n uá¸risAferdis di tebdart n yifuyla n unekcum:Aferdis si tebdart n yismawen yufraren:TimeẓriSnesS tidett tebÉ£iḠad tekkseḠamassaf “%sâ€?D tidett tebÉ£iḠad talseḠawennez n tkatut n tsuqilit?Anadi awurman n yileqmanAsefsu awurman n ufaylu MO deg weseklesTuÉ£alinAbrid azaduran:Ileqman biá¹­a gebren tiwuriwin timaynutin akked usnerni aneggaru, acu kan zemren ad ilin xuṣṣen arkad.SÉ›eddi kulec É£er uÉ£awas amezwaruAfaylu PO yerreẓ: talÉ£a n usget msgstr tettwaseqdec war msgid_pluralAfaylu PO yerreẓ: talÉ£a n usuf msgstr tettwaseqdec lwaḥid akked msgid_pluralTicreá¸t yerrẓen deg uzrar n tsuqilt.SniremSnirem ifuylaSefsexAsefsex…D awezÉ£i asnulfu n ukaram akudan.Ulamek aselkem n wahil: %sSelket s asekkil ameqranAmsefrak n yikaramenAmsefrak n yikaramenAmsefrak n yikaramenBeddel tutlayt n ugrudemTagrumma n yisekkilen:Senqed isemli turaSelken taÉ£dirawt akked tajerrumtSelken taÉ£dirawt di lawan n tiraNadi ileqman…Selken tuccá¸iwin di tsuqiltNadi ileqman…Senqed taÉ£dirawtSfeá¸SfeḠumuÉ£SfeḠtasuqiltSfeḠumuÉ£SfeḠtasuqiltMdelTummanin n tengaltTummanin n tengaltAlqaḠn ifuyla iÉ£bula…Anezá¸ay i tussfa n tsuqilin:AwennitAwennit:Iwenniten ibeddun s uzwir:Sefsu É£er MO…Sefsu É£er…Afaylu n tsuqilt yefsaSwel tussfa n tengalt taÉ£balut deg yiraten.AsentemNÉ£elNÉ£el seg wasufNÉ£el seg weá¸ris aÉ£baluNÉ£el seg wasufNÉ£el seg weá¸ris aÉ£baluAseÉ£ti awurman n teÉ£dirawtD awezÉ£i asali n ufaylu, izmer ad yili yerreẓ.Ur izmira ara ad isekles afaylu %s.Snulfu-d amaynutSnulfu-d tasuqilt tamaynuttSnulfu-d tasuqilt tamaynutt si tneÉ£ruft POT.Snulfu-d asenfar amaynut n tsuqilinTuccá¸a n Crowdin&GzemImassafen yugnen:Imassafen udmawanen:Sagen afeggag n yifecka…GzemTiddi n uzadur n yisefka É£ef uá¸ebsi:KkesKkes seg tkatut n tsuqiltKkes amassafKkes seg tkatut n tsuqiltKkes asenfaá¹›Kkes awennitKkes asenfarTukksa n usenfaá¹› ur tettekkes ara ifuyla n tsuqilt.Ikaramen:TebÉ£iḠad tekseḠasenfar “%sâ€?TebÉ£iḠad talseḠasali n ufaylu seg uá¸ebsi? Tiẓrigin-inek·inem ur nettwaskels ara di Poedit ad á¹›uḥent ma tkemmeleá¸.TebÉ£iḠad tekkseḠtisuqilin merra ur nettwaseqdac ara?Ur sseklas a&raUr sseklas araUr d-skan ara tikelt-nniá¸enUr cerreḠara tisuqilin tiseddiyin d timewẓiyinUr d-skan ara tikelt-nniá¸enAsider n tsuqilin tineggura…Asider n tsuqilin yensa deg usenfar-agi.ZuÉ£er ikaramen neÉ£ ifuyla É£er dagiZuÉ£er ikaramen neÉ£ ifuyla É£er dagiFf&eɣẒreg&Ẓreg awennitẒreg awennitẒreg awennitẒreg awennitẒreg asenfarẒreg asenfarAsiẓregẒreg…Imayl:Æeddi s agdil aÄÄuranInekcumen deg ukaram-agi sÉ›an amá¸an n talÉ£iwin n wesget i yemgarraden É£ef wayen i d-yeqqar inixf Plural-FormsZwir inekcumen yesÉ›an tuccá¸iwinZwir inekcumen yesÉ›an tuccá¸iwinInekcumen yesÉ›an tuccá¸iwin ttucerá¸en s uzeggaÉ£ di tebdart. Isalan É£ef É£ef tuccá¸a ad d-baben mi ara tferneḠanekcum.Tuccá¸a deg ulday n ufayluTuccá¸a deg usekles n ufayluTella-d tuccá¸a deg usali n ufaylu XLIFF: %sTuccá¸iwinAkkIberdan ur nettekki araSifeḠar TMX…SifeḠam…SifeḠs talÉ£a HTM…SifeḠar TMX…Taktert n tkatut n tsuqilt si "%s" ur yeddi ara.AsifeḠn tsuqilin…Ssef seg yiÉ£bulaKkes-d tilÉ£a i yimsuqqelen si:Ssef aá¸ris seg yifuyla iÉ£bula deg yikaramen-agi:Asbeddi n umassafImassafenTuccá¸a di teÉ£walt akked usekker Poedit.Ulamek asali n ufaylu s tsuqilin yettwassfen.Tuccá¸a deg wesmezdi n yikaramen gettext.Aleqqem n tkatut n tsuqilt ur yeddi ara: %sAfayluAfaylu ulamek ara yeldiAfaylu “%s†ulac-it.Afaylu “%s†maÄÄi d afaylu n tsuqilt.Afaylu “%s†i tÉ£uri kan ihi ur tezmireḠara ad t-teskelseá¸. Ttxil-k skels-it s yisem-nniá¸en.NadiNadi uá¸firNadi uzwirNadi semselsi…Nadi deg yiwennitenNadi deg yiá¸risen iÉ£bulaNadi di tsuqilinNadi uá¸firNadi uzwirSÉ£ti tutlaytSeÉ£ti tutlaytSeÉ£ti inixfSeÉ£ti inixfTalÉ£a %iSeg %i (ur tettwaseqdac ara)GNU gettextAmatuIfuyla HTMLTalleltFfer afeggag n yidisFfer afeggag n waddadFfer izen-agi n ulÉ£uIDMa tkemmeleḠasizdeg, tisuqilin merra i yettwacerá¸en amzun ttwakksent ad ttwakksent i lebda. Asmi ara tebÉ£uḠad tent-ternuḠilaq ak ad tent-tesuqqeleḠtikkelt-nniá¸en.Ma tugiḠyakan anekcum É£er yifuyla-inek, tzemreḠad t-tsirgeḠdi Tinefrunin n unagraw > TaÉ£ellist akked tbaá¸nit > Tabaá¸nit > Ifuyla akked yikaramen.Ma tugiḠyakan adduf É£er yisefka-inek•inem, tzemreḠad t-tsirgeḠdi IÉ£ewwaren > Tabaá¸nit & TaÉ£ellist > Ifuyla & Ikaramen.TtuTtu tajá¹›ut n usekkilKter si TMX…Kter ifuyla n tsuqilt…Kter si TMX…Kter ifuyla n tsuqilt…Taktert n tsuqilin…Di: %sSeddu ileqman biá¹­aAsekkil ameqran/asekkil amecá¹­uḥ ur mtawan araTallunt ur teǧhid araIsalan É£ef umsuqqelSbeddAfaylu d armeÉ£tuTiÉ£ri:Ifuyla n tsuqqilt JSONEǧǧIsem n tutlayt neÉ£ tangaltTutlayt n tsuqilt kifkif-itt akked tutlayt taÉ£balut.Tutlayt n tsuqilt ur tettusbadu ara.Tutlayt n tsuqilt:Afran n tutlaytTarbaÉ›t n tutlayt:Tutlayt:Abeddel aneggaruIssin ugar É£ef wawalen yufraren n gettextẒer ugar É£ef talÉ£iwin n wesgetIssin ugarIssin ugar É£ef %sIssin ugar É£ef CrowdinLmed ugar É£ef GNU gettextIzirig %d n ufaylu '%s'  yerreẓ (isefka n %s maÄÄi d imeÉ£ta).Taggara n yizirigen:Tabdart n yiseÉ£zaf berzen s tenqiá¸t ticcert (amedya. *.cpp;*.h) :Sali-d taglizitIfuyla MO ur tezmireḠara ad ten-tẓergeḠsrid di Poedit.Selket s asekkil amecá¹­uḥSelket s asekkil ameqranEg tasuqilt tamaynutt seg ufaylu-agi POT.Inixf ur yemsil ara akken iwata: “%sâ€Sefrek imiá¸anenSefrek…Asdukkel n wayen yimgaraden…SimẓiIsem n usenfar n tsuqiltIsem:Uá¸fir ur nemmid araUá¸fir ur nemmidt araYesra amahilYesra amahilWerǧin ad teǧǧeḠtabdart n yizraren ad tawi asaá¸as. Ma yermed, isefk ad tesqedceḠtiqeffalin Ctrl-tineccabin iwakken ad tinigeḠs unasiw maca tzemreḠdaÉ£en ad tsekcmeḠsrid aá¸ris, war ma tessdeḠtaqeffalt Tab iwakken ad tbeddeleḠasaá¸as.AmaynutAmaynut seg ufaylu &POT/PO…Amaynut seg ufaylu &POT/PO…Izraren imaynutenTalÉ£a n usget tuá¸firtTalÉ£a n usget tuá¸firtAlaUr d-nufi ara tinmeÉ£raUlac inekcumen i yzemren ad tusuqqelen s uzwer.Ulac talÉ£ut É£ef tummanin n uzrar-agi di tengalt taÉ£balut i d-yettunefken deg ufaylu.Ur d-nufi ara tinmeÉ£raUlac uguren di tsuqilt.Ulac talÉ£ut n useqdecTalÉ£iwin n usget ur ttwasuqqelent ara merra.Ur yurig ara, ttxil-k qqen tikkelt-nniá¸en.Tamawt i yemsuqqlenIhYiwenSermed kan ma yella tetḥeqqeqeḠbelli takatut n tsuqilt inek tgerrez. S lexá¹£as akk tinmeÉ£ra n tkatut n tsuqilt ad ttwacerá¸en srant amahil yerna ilaq ad ttwaceggerent send aseqdec-nnsen.AÄÄaá¹› kan ayen yemá¹£adan s tseddiLdin melmi kanLdi yerna siẓreg ifuyla n tsuqilt.Ldi afayluLdi deg wemaẓragLdi deg wemaẓragLdin melmi kanLdi...Ldi…TinefruninWayeá¸Uzwir ur nemmid araUzwir ur nemmid araIfuyla n tsuqilt POTineÉ£rufin n tsuqilt POTIfuyla POT d tineÉ£rufin kan ur sÉ›in ara kra n tsuqilin. Iwakken ad tgeḠtasuqilt, snulfu-d afaylu amaynut PO yebnan É£ef tneÉ£ruft.Sená¹­eá¸Sená¹­eḠs uḥraz n uÉ£anibIberdanAd yeg aleqqem si tengalt taÉ£balut i yifuyla meṛṛa n usenfaá¹›.Tasiregt tettwagi.Tallunt yettwaḥeṛṛan “%s†txuṣṣ di tsuqilt.Ttxil-k ldi u ẓreg afaylu PO anmeÉ£ray. Mi ara t-teskelseá¸, afaylu MO ad yettwaleqqem daÉ£en.Ttxil-k sekles qbel afaylu. Ur tezmireḠara ad tẓergeḠtanegzumt-agi uqbel.AsgetTisuqilin n talÉ£iwin n usgetTinfaliyin n talÉ£iwin n wesget i yesseqdec ufaylu-agi ulac-itent di tnumi n %s.TalÉ£iwin n wesget:PoeditPoedit - Amsefrak n yikaramenPoedit yeseÉ£ti i yiman-is agbur armeÉ£tu deg ufaylu “%sâ€.Poedit yezmer ad yeÉ›reḠad yaÄÄar inekcumen imaynuten, anagar si tsuqilin tuzwirin n ufaylu-agi neÉ£ si tkatut n tsuqilt. Aseqdec n tkatut n tsuqilt ur k-ineffeÉ› ara ma ur teÄÄur ara. Iwakken takatut-inek n tsuqilt ad tgerrez ilaq ad s-ternuḠaá¹­as n tsuqilin.Poedit ur yezmir ara ad d-isken tangalt taÉ£balut anida yettwaseqdec uzrar, acku afaylu yezmer ur yewjid ara deg wadig yettwamlen neÉ£ d tamselÉ£ut tazamulant ur nettawi ara s afaylu ilaw.Poedit d amaẓrag n tsuqilin yeshel i weseqdec.Poedit igguma ad ildi afaylu “%sâ€.Tasuqilt tuzwirt…Tasuqqilt tuzwirtYettwasuqqel s uzwer%u n uzrar yettwasuqqel s uzwer%u n yizraren ttwasuqqlen s uzwerTasuqilt tuzwirt si tkatut n tsuqilt…Tasuqilt tuzwirt…Asuqqel s uzwer awurman yettaf di tkatut n tsuqilt tinmeÉ£ra tiseddiyin neÉ£ timewẓiyin i yinekcumen ur nettwasuqqel ara iwakken ad ten-yaÄÄar.IsmenyifenIsmenyifen...Ismenyifen…Aheggi n yizraren…Ḥrez amsal n yifuyla yellanTalÉ£a n usget tuzwirtTalÉ£a n usget tuzwirtAá¸ris aÉ£balu uzwirYettwaẓreg yakanYettwaẓreg yakanIsem akked lqem n usenfar:Isem n usenfar:Asenfar:Isenfaá¹›enAsenqed n usenqeá¸Sfeá¸SfeḠtisuqilin yettwakksenFfeÉ£Ifuyla n melmi kanErr-dSismeá¸Ales asali n ufayluAles asali n ufayluYeggra-d: %dKkesSemselsiSemselsi &akkSemselsi i &meṛṛaIzraren n usemselsiSemselsi…Inixf Plural-Forms i yettwasran ixuṣṣ.Ales awennezAles awennez n tkatut n tsuqiltAlus n uwennez n tkatut n tsuqilt ad yesfeḠi lebda tisuqilin i yettwaḥerzen degs. Tamhelt-agi ur tesÉ›i ara tuÉ£alin É£er deffir.Askan deg unaramCeggerSeklesSekles s am…Sekles am…Sekles akken ibÉ£uSekles akken ibÉ£uSekles amSekles am…Sekles ibeddilenSekles afayluTuá¹­á¹­fiwin n wegdil :&Fren akkFren akkFren yifuyla TMX ara tketreá¸Fren akaramFren afaylu n tsuqiltFren yifuyla n tsuqilt ara tketreá¸Fren taneÉ£ruft n tsuqiltFren tutlayt-ik tamenyiftSbadu tutlaytSbadu tutlaytIÉ£ewwarenIÉ£ewwaren…Sken afeggag n yidisSken taÉ£dirawt akked tjerrumtSken afeggag n waddadSken &ID n uzrarSken yisemselsiyenSken afeggag n yifeckaSken ilÉ£aSken deg wenaramBeqqeḠdeg ukaramSken neÉ£ ffer afeggag n yidisSken afeggag n yidisSken afeggag n waddadSken &ID n uzrarSken ilÉ£aAfeggag n yidisQqenFfeÉ£QqenQqen É£er %sQqen É£er umiá¸an n cloudQqen É£er CrowdinQqen É£er umiá¸an n cloudFfeÉ£AsufAnÉ£el/Asená¹­eḠamegzuTijerriá¸in timegzaIseÉ£wan imegzaTuccar timegzaFren s umizzwer n ufayluFren s uÉ£baluFren s tsuqiltFren s umizzwer n ufayluFren s uÉ£baluFren s tsuqiltTagrumma n yisekkilen n tengalt taÉ£balut:Imassafen n tengalt taÉ£balut seqdacen-ten i wenadi di tengalt taÉ£balut É£ef izraren n tsuqilt iwakken ad ttwassfen yerna ad ttwasuqqlen.Tangalt taÉ£balut ur tewjid ara.Tangalt taÉ£balut ur tettwaf araAá¸ris aÉ£baluID n uá¸ris aÉ£baluAá¸ris aÉ£balu — %sAwalen yufraren iÉ£bulaIberdan n yiÉ£bulaAwalen yufraren iÉ£bulaIberdan n yiÉ£bulaMmeslayAseÉ£ti n teÉ£dirawt yensa, acku amawal i %s ur yettwasbedd ara.TaÉ£dirawt akked tjerrumtBdu ameslayḤbes ameslayTisuqilin yettwaḥerzen:TeÉ£zi n uzrar s yisekkilenTeÉ£zi n uzrar s yisekkilen: tasuqilt | aÉ£baluAzrar ara tnadiá¸IsemselsiyenIsumarIsumar ur ttawjaden ara ma yella tutlayt n tsuqilt ur tettusbadu ara akken iwata. Ayagi, yezmer ad iḥaz timeẓliyin-nniá¸en, am talÉ£iwin n wesget.Tallunt yettwaḥeṛṛan n zzyada “%s†ur nelli ara deg uá¸ris aÉ£balu.Idehhel timeslayin merra n usihel n yifecka GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript d wiyaá¸).MtawiAmtawi akked CrowdinMtawi tisuqilin akked CrowdinAmtawiTuccá¸a n umtawiAmtawi akked Crowdin yerreẓ.Tuccá¸a n tseddast deg yinixf Plural-Forms ("%s").MTIfuyla TMXAwi-d izraren ara yettwasuqqelen si tneÉ£ruft POT yellan.Isem n terbaÉ›t akked tansa imayl neÉ£ URLAsemselsi n uá¸risTakatut n tsuqilt ur tegbir ara izraren yugdan agbur n ufaylu-agi. Ayagi yettili-d i tsuqilin tizgen-aymaniyin mi ara yelmed Poedit seg yifuyla yettwasuqqlen s ufus.Afaylu TMX ur yemsil ara akken iwata.Ibeddilen ixdem usnas-nniá¸en ad á¹›uḥen ma teskelseá¸.Afaylu ur yezmir ara ad yefsu É£er umasal MO neÉ£ ad yettwaseqdec.Afaylu yesÉ›a iferdisen usligen, ayen i yegedlen deg yifuyla PO u yettqerriÉ› asqedc n ufaylu. Poedit yefra ugur, maca ilaq ad tselkeneḠtisuqilin i yettwacerá¸en d timewẓiyin u ad tent-teseÉ£tiḠma yelaq.Afaylu ulamek ara yettwasekles s tegrumma n yisekkilen “%s†am wakken yettwamla deg yiÉ£ewwaren n tsuqilt. yettwasekles UTF-8 deg umá¸iq yerna iÉ£ewwaren ttwabeddelen.Afaylu yettwabeddel. TebÉ£iḠad teskelseḠibeddilen?Afaylu yefsa É£er umasal MO, maca wissen ma ad yeddu akken ilaq.Afaylu yettwasekles s tÉ£ellist u yefsa É£er umasal MO, maca wissen ma ad iddu akken ilaq.Afaylu yettwasekles s tÉ£ellist, ur yezmir ara yefsu É£er umasal MO neÉ£ ad yettwaseqdec.Afaylu yettwasekles s tÉ£ellist.Afaylu “%s†ulamek ara yettwaldi.Afaylu “%s†ibeddel-it usna-nniá¸en.AÉ£balu n uá¸ris aqbuá¹› (send ad yettwabeddel deg uleqqem) ukud tenmeÉ£ra tsuqilt tamewẓit.Ma tebÉ£iḠad taÄÄareḠafaylu-agi s sshala leqqem-it seg ufaylu POT:Tasuqilt ur tebdi ara s tallunt.Tasuqilt tfukk s wengaz n ujerriá¸, ma d aá¸ris aÉ£balu xaá¹­i.Tasuqilt tfukk s tallunt, ma d aá¸ris aÉ£balu xaá¹­i.Tasuqilt tfukk s “%sâ€, maca aá¸ris aÉ£balu ifukk s “%sâ€.Ixuṣṣ wengaz n ujerriḠdi tagarra n tsuqilt.Txuṣṣ tallunt di taggara n tsuqilt.Tasuqilt tewjed i wseqdec, maca %d n unekcum ur yettwasuqqel ara.Tasuqilt tewjed i wseqdec, maca, %d n yinekcumen ur ttwasuqqelen ara.Tasuqilt tewjed i wseqdec.Tasuqilt ilaq ad tfakk s “%sâ€.Tasuqilt ur ilaq ara ad tfakk s “%sâ€.Tasuqilt isefk ad tebdu am tefyirt.Tasuqilt isefk ad tebdu s usekkil amecá¹­uḥ.Tasuqilt tabda s tallunt, ma d aá¸ris aÉ£balu xaá¹­i.Tisuqilin ttwacerá¸ent srant amahil, acku zemrent ad ilint d timewẓiyin. Ilaq ad tent-teceggereá¸.Ulac tisuqilin. Ayagi ulac-it di tnumi.Yella wugur deg umsal n ufaylu (maca yettwasekles akken iwata).Tella-d tuccá¸a deg usali n ufaylu. Kra n yisefka zemren ad xaṣṣen neÉ£ ad rreẓen.IÉ£ewwaren-agi ad beddelen amsal adigan n yifuyla PO. Sgaddi-iten ma tesÉ›iḠisrayen ulmisen, amedya asenqed n lqem.JSON agi maÄÄi d afaylu n tsuqilin yerna ulamek ara yettwaẓreg di Poedit.Afaylu-agi yesÉ›a inekcumen s talÉ£iwin n usget, maca ur yesÉ›i ara inixef Plural-Forms ittusewlen.Attaya tnezá¸ayt i yesekkaren amassaf. %o ad yeẓel É£er yisem n ufaylu n tuffÉ£a, %K ad ibeqqeḠawalen yufraren, %F ad ibeqqeḠifuyla n unekcum, %C i tegrumma n yisekkilen (ẓer uksar-agi).Azrar-agi nufat-id di tkatut n tsuqilt n Poedit.Ayagi ad yettwarez É£er yizirig n tnezá¸ayt ma yella kan tangalt taÉ£balut tettunefk-d. %c ad yeẓel É£er wazal n tegrumma n yisekkilen.Yettwager deg yizirig n tnezá¸ayt tikkelt i yal afaylu n unekcum. %f ad yeẓel isem n ufaylu.Wagi ad yettwarez É£er yizirig n tnezá¸ayt tikkelt i yal awal yufraren. %k ad yeẓel É£er wawal yufraren.AÉ£rudAselketTasuqilt n: %d seg %d (%d %%)TasuqiltTutlayt n tsuqiltTakatut n tsuqiltTasuqilt tesra amahilIraten n tsuqiltAzadur n yisefka n tkatut n tsuqil texseá¹›: %s (%d).Tuccá¸a di tkatut n tsuqilt: %s (%d).Tasuqilt tesra amahilIraten n tsuqiltIsumar n tsuqiltTasuqilt — %sTisuqilin ulamek ara ttwaleqqement si tengalt taÉ£balut, acku ur nufi ara tangalt deg wadig i d-yettunefken deg yiraten n ufaylu.SinUTF-8 (yettwasemter)SefsexTeá¸ra-d tsureft ur nettwassefrak ara: %sUnix (yettwasemter)Tuccá¸a tarussint n Crowdin.Ur yettwasuqqel araLeqqemLeqqem AkkLeqqem ikaramen merra n usenfarLeqqem ikaramen merra n usenfar-a?Leqqem seg ufaylu POT…Leqqem seg ufaylu POT…Leqqem seg tengaltLeqqem seg POTLeqqem seg tengaltLeqqem seg tengalt taÉ£balutLeqqem agzulIleqmanAleqqem yecceá¸Aleqqem n tsuqilinAleqqem n telÉ£ut n useqdac…Asali n tsuqilin É£er %s…Asili n tsuqilin…Seqdec tanfalit yugnenSeqdec tasefsit yugnen:Seqdec tasefsit yugnen i tÉ£ezza n uá¸ris:Seqdec alugen n lexá¹£as n tutlayt-agiSeqdec awalen-agi yufraren (ismawen n twura) iwakken ad tÉ›eqleḠizraren ara yettwasuqqelen deg yifuyla iÉ£bula:Seqdec takatut n tsuqiltSeÉ£belIgmaḠn usentemLqem %sAraǧu n usesteb…Ansuf É£er PoeditMi ara yili uleqqem seg yiÉ£bulaAwalen ummiden kanAsfayluWindowsTebÉ£iḠad tesqedceḠtaglizit i uá¸ris aÉ£balu?QfelTuÉ£alin s ajerriḠdi:Ifuyla n tsuqilt XLIFFIhTzemreḠdaÉ£en ad d-tekkseḠizraren ara yettwasuqqelen srid seg tengalt taÉ£balut:Ur tezmireḠar ad tserseḠugar n yiwen n ufaylu deg wesfaylu n Poedit.Ur tesÉ›iḠara tisirag akken ad teÉ£reḠifuyla n tengalt taÉ£balut deg wadig i d-yettunefken deg yiraten n ufaylu.Yessefk ad talseḠtanekra n Poedit akken ad yeddu ubeddil-agi.Isem n tmagit-inekIbeddilen-ik (im) ad ruḥen ma yella ur ten-teskelseḠara.Isem-ik akked tansa-inek imayl ad ttwasqedcen kan i wesbadu n yinixf Last-Translator n yifuyla GNU gettext.IlemSimÉ£urYesra amahilur ttekkes ara ifuyla ikudanen (i weseÉ£ti)amedya. nplurals=2; plural=(n > 1);taÄÄart ittemcabin deg ufayluddu s aferdis deg yizirig i d-ittunefkensefrek URI n poedit:// URIAlt+Ctrl+AkessarKcemAzelmaá¸AyfusShift+AsawenaltctrlshiftÆ”ef %sFfer %sFfer wiyaá¸Ismenyifen...FfeÉ£ si %sImeẓluyenSken akksuqqel s uzwer si TMtutlayt tarussintlqem-gi ur yettwadel ara (%s)keÄÄ·kem@amedya.com“%s†maÄÄi d afaylu POT ameÉ£tu.poedit-3.6.3/locales/id.mo0000644000175100001660000016206515011674363011064 Þ•µÄ¡l+ð9 ñ9 ý9&:/:<C:€:&“:&º:Já:g,; ”;ž; ­;;·;ó; ú;<<<<$<+<1<9<H<W<]<c<l<€<”<˜<ª<¼<Â<Ç<Ï<×<é<û<ÿ< = ==&=/= 6=C=S=i==Ž=ª=Æ=Ì=Ò=Û=á=ê=> > &> 4>A>G>c>>˜>±>È>ß>å>ê>?? /? ;?E?N?V?_? c? o?|? ‹?—? §?³? Í?Ú? é?õ?@@4@=@]@z@š@ °@ ½@1É@'û@#A6ASA mAxA7~A6¶AíA) B7B ‘Y‘l‘ ‘ ‹‘"•‘"¸‘Û‘ö‘’)’A’H’L’ b’+p’ œ’ ª’ ·’Â’Ç’Ì’Ó’ã’ô’ ““&“6“T“e“ v“„“—“«“Ó&Ò“#ù“&”D”\”k”>z”&¹”à”#ó”• 7•B•0K•8|•#µ•/Ù• – –T–q–?…–JÅ–'—8— ?—šM—è—î—%ý— #˜<D˜/˜ ±˜¼˜͘Þ˜î˜ ý˜ ™ $™E™a™"y™œ™ ´™ ™Ì™Û™ð™ÿ™šš š0š'@šhš&†š­š ¶šÀšÙš êšøš6› M›yX›Ò›Ø›ò› œ#œ:œ-Yœ)‡œ±œ ќۜ&ðœ3ÂEžž&ž<žWž`ž}žƒž ž ±ž Òžßž îžAûž =Ÿ(HŸoqŸOáŸC1  u  ƒ ‘ ;§ ã ù 4¡ J¡ k¡Œ¡”¡¬¡´¡Æ¡Ø¡é¡ú¡ ¢ ¢ (¢3¢:¢bL¢¯¢Ë¢‡ê¢r££$°£ Õ£ᣠç£ñ£¤¤+¤=¤N¤+a¤¤¦¤&º¤5á¤>¥V¥ k¥)w¥6¡¥)Ø¥(¦+¦2¦L¦+c¦Y¦é¦î¦þ¦§ §4§K§a§q§§‘§¡§±§Á§ Û§ç§ ¨¨ ¨¨'¨>¨#W¨${¨ ¨Á£¨že©”ª™ª¡ª»ªͪèªúª«",«O«g«p«&„«««Ë«è«ï« ¬ ¬¬¬ 1¬=¬,S¬ €¬¡¬´¬ ìϬ׬"è¬ ­(­!>­%`­)†­°­4¶­ë­;ú­6®©J®1ô®&¯:¯2N¯¯ ”¯  ¯­¯ ȯ,Ó¯°°&° F° S°`°º|°7±<±X± t±±š±²±¸±+ѱaý±_²*x²;£²ß²'þ²$&³K³h³k³¨p³´8´P´*h´“´¨´ À´Ì´â´ø´µµ µ%µ-µMµmµ‚µ™µ*¶1¶J¶BO¶ ’¶% ¶ƶlض<E·‚·ˆ·B · ã·ñ·ø·H¸Z¸Ðc¹74º&lº“º ¦º³ºĺ'ߺ»¤»vÀ»j7¼ ¢¼ ­¼ »¼ɼ(Þ¼½½7½N½c½x½ ½œ½¤½«½½Ƚæ½-í½¾ 0¾:¾C¾U¾g¾p¾#v¾(š¾þ ɾ Ö¾ã¾õ¾*þ¾)¿/¿ˆG¿пç¿î¿õ¿À À 'À3ÀBÀTÀ eÀsÀ „À ‘À"ÀÀÀÐÀ)èÀÁ+Á EÁ QÁ ]Á hÁvÁ‹Á«ÁÂÁ×ÁìÁÂÂ/Â%FÂl˜­ ÂÂÍÂÓÂÚ àÂìÂÿÂÃ#Ã*Ã2ÃFà ZÃfÃyÙòÃÏÃïÃÄ%Ä ?ÄàÄüÄ Å$Å3ÅFÅ XÅdÅ {ŇÅFŽÅÕÅ ëÅøÅÆÆ1ÆGÆ2eƘÆ/¬Æ ÜÆçÆŠíÆ5xdž®Ç 5È@È$ZÈ ÈÈ" È0ÃÈôÈ ÷ÈIÉ"LÉoÉÉ~ÉHÊIZÊ<¤ÊùáÊ«ÛË;‡Ì4ÃÌPøÌgIÍT±ÍÎ"#Î,FÎesÎpÙÎ-JÏ?xÏ9¸ÏGòÏ':Ð%bÐEˆÐÎÐ&éÐ,Ñ,=Ñ3jÑ?žÑÞÑ&^ÒT…Ò5ÚÒLÓ“]ÓHñÓl:Ô_§ÔsÕÂ{Õ4>Ö|sÖaðÖ]R×°× ¶×!Ã×åØ!þØ Ù+Ù=ÙPÙpÙ,„Ù%±Ù×Ù÷Ù Ú|Úm™ÚÛ€ÛšÛžÛ±Û$·ÛÜÛ#îÛÜ*Ü0Ü9Ü#HÜ(lܕܵÜÕÜèÜúÜ Ý'Ý :ÝDÝVÝqÝ#ˆÝ"¬ÝÏÝîÝ Þ(ÞCÞ"cÞq†ÞøÞ ßß,ß5ßJß aßn߇ߦ߹ßÁß>Éßà à$à<à]?àEàpãà3Tá ˆá<’ákÏá;â?â Câ3Pâ „â ¥â±â0Éâúâããã#ã)ã.ã4ã;ã@ãDãIã OãZãiã ã ã—ãŸã¯ãÉãÜã öãä!ä¶ž7%ª[Fm&-Ybñ®™­ Ù<•20üBn¬O†áWÐúqhzO±*¤1•4 ï:÷¾ZSø¼Œ–H®’A}‹Î3¦€JRòbß.OJXqå9èCêT_pÏ‘N|W+Wº­¢µ e…ÑUÅ’x`ÇBk ,¥ÈL(D‰£¯Ô¨;=²~JPè;Ë0ÒŒ‘ʼn/‚xR†« ÖÚ˜,aqã˜#ÊpÓ;z[°Š”2ÞQ ¯„s mf‚3€V±Yµˆ±ìÆ@ÿþe&!¤ ö¨?i+U]…¡8vFaFu>Š@»à^º¨4»?”H ô†“ CžÂëíªƒLr-Õ#ÇûuÞ"ßü_ "™ô)"›8$|I nµcùg^hc>gT²rÙÝ­d!—¦. T¢õD8=€~sY¢úë/ÜØò<)ÒáoÚf(@îóàél¸i —°1Ñ:>³,½œˆ®¹]•ã¿&¯GGr¶‡y‹6?³o˜õ‰]ƒýGuw.™'tl©Žç„QŽe‹K©›·ÿ£ä²ן*7!‡ÐAÓ<ky6z”y¬øù¡ESÍŸ´›NÂÈ9’ƒ¸N žBw¿Ho%Àìl©ʳ½`X “¥24E¼56œPä({Ûf_cMKŒ¹\QªZ· sRé' þÍ[§b=M…Ì¡Cæv5jSŠÁ¬V–DÁ0X/ÏM«ðdP} nØx%h¾¦aÎ9ˆîÔE^û‚Û `Ì}¥|Ë7£tï‡L„óêÕâ3Ö§Ü\-Ækå×dôýÄZÄšU$gðš*IÃv«ŽmpVI‘)°ñçöíA'jw1š~¤5œâ+À#É{KjÉ“:\æŸÝ–i${´—÷§ t (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-19 10:16 Last-Translator: Language-Team: Indonesian Language: id_ID MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: id X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (telah diubah) (belum disimpan)%d kemunculan kode%d entri%d entri dipraterjemahkan.%d kesalahan%d kesalahan terjadi.%d kesalahan terjadi:%d masalah pada terjemahan ditemukan.%i baris dari berkas "%s" tidak dimuat dengan benar.Format %sPreferensi %sFormat %s%s terjemahan diimpor.Ihw&alTent&ang PoeditTer&apkanMun&dur&Batal&Bersihkan&Tutup&Salin&Hapus&Beres dan Berikutnya&Beres dan berikutnya&Sunting&Berkas&Cari…Manual gettext &GNUManual gettext &GNU&Lompat&Kelompokkan Menurut Konteks&Kelompokkan menurut konteks&Bantuan&Baru&Baru…Berikut&nya >Terjemahan Sela&njutnyaTerjemahan sela&njutnya&Tidak&OKBantuan &DaringBantuan &daring&Buka...&Buka…Tem&pel&Preferensi&Preferensi…Terjemahan Se&belumnyaTerjemahan se&belumnya&Properti…Buang Terjemahan Yang Diha&pusBuang terjemahan yang diha&pus&KeluarJadi &Lagi&Gantikan&Simpan&Simpan sebagaiTampilkan &Kemunculan KodeTampilkan &kemunculan kode&Jendela Awal Mula&Jendela awal mula&Terjemahan&BatalkanEntri Bel&um Diterjemahkan Di AwalEntri bel&um diterjemahkan di awalPerbar&ui dari Kode SumberPerbar&ui dari kode sumber&Validasikan Terjemahan&Validasikan terjemahan&Lihat&Ya(Pakai bahasa bawaan)(tidak masuk)(memerlukan Windows 8 atau yang lebih baru)< Se&belumnyaTentang %sAkunAkunTambahTambah KomentarTambah Berkas…Tambah Folder…Tambah ProyekTambah Wildcard…Tambah komentarTambahkan direktori ke daftarTambah berkas…Tambah folder…Tambah proyekTambah wildcard…Kata kunci tambahanFlag xgettext tambahan:Tingkat lanjutPengaturan Ekstraksi Tingkat Lanjut…Pengaturan ekstraksi tingkat lanjutPengaturan ekstraksi tingkat lanjut…Semua Berkas TerjemahanSemua komentarSeluruh stringJuga menggunakan kata kunci default untuk bahasa yang didukungSelalu ubah fokus ke ruas masukan teksTerjadi kesalahan.Satu item di daftar berkas masukan:Satu item di daftar kata kunci:PenampilanTerapkanAnda yakin Anda ingin menghapus ekstraktor "%s"?Apakah Anda yakin Anda ingin me-reset memori terjemahan?Secara otomatis memeriksa pembaruanOtomatis mengkompilasi berkas MO saat menyimpanMundurPath dasar:Versi beta berisi fitur terbaru dan perbaikan, tetapi mungkin sedikit kurang stabil.Bawa Semua ke DepanBerkas PO rusak: msgstr bentuk jamak dipakai tanpa msgid_pluralBerkas PO rusak: msgstr bentuk tunggal dipakai bersama dengan msgid_pluralMarkup yang rusak di string terjemahan.RambanRamban berkasSecara baku, hasil yang tidak akurat juga disertakan, tapi ditandai sebagai perlu diperbaiki. Centang opsi ini untuk hanya menyertakan kecocokan sempurna.BatalMembatalkan…Tak bisa membuat direktori sementara.Tak bisa menjalankan program: %sTidak bisa mempraterjemahkan dari bahasa yang tidak dikenal.Tidak bisa mempraterjemahkan tanpa teks sumber.Kapitalkan&Manajer Katalog&Manajer katalogManajer KatalogUbah bahasa UISet karakter:Periksa Dokumen SekarangPeriksa Tata Bahasa Dengan EjaanPeriksa Ejaan Saat MengetikPeriksa Pemutakhiran…Periksa kesalahan dalam terjemahanPeriksa pemutakhiran…Periksa ejaanBersihkanBersihkan MenuBersihkan TerjemahanBersihkan menuBersihkan terjemahanTutupCloudKemunculan KodeKemunculan kodeBerkolaborasi dengan orang lain daring.Mengumpulkan berkas sumber…Perintah untuk mengekstrak terjemahan:KomentarKomentar:Komentar diawali dengan:Kompail ke MO…Kompail ke…Berkas Terjemahan DikompilasiAtur konfigurasi ekstraksi kode sumber dalam Properti.KonfirmasiHubungkan Poedit dengan platform pelokalan awan yang didukung untuk menyinkronkan terjemahan yang dikelola dengan lancar.SalinSalin Dari Bentuk TunggalSalin dari Teks SumberSalin dari bentuk tunggalSalin dari teks sumberPerbaiki Ejaan Secara OtomatisTidak bisa mengunduh rincian proyek Localazy.Tidak dapat memuat berkas, mungkin rusak.Tidak bisa menyimpan berkas %s.Buat baruBuat terjemahan baruBuat terjemahan baru dari templat POT.Buat projek terjemahan baruKesalahan CrowdinCrowdin adalah platform manajemen penerjemahan daring dan alat penerjemahan kolaboratif. Kami sendiri menggunakan Crowdin untuk menerjemahkan Poedit ke dalam banyak bahasa, dan kami menyukainya.Po&tongPengekstraksi Ubahan:Pengekstraksi ubahan:Menyesuaikan Bilah Alat…MemotongUkuran basis data pada disk:HapusHapus Dari Memori TerjemahanHapus ekstraktorMenghapus dari memori terjemahanHapus proyekHapus komentarHapus projekMenghapus proyek tidak akan menghapus sebarang berkas terjemahan.Direktori:Apakah Anda ingin menghapus proyek "%s"?Apakah Anda ingin memuat ulang berkas dari diska? Suntingan Anda dalam Poedit yang belum tersimpan akan hilang.Apakah Anda ingin menghapus seluruh terjemahan yang identik dengan teks sumber?Apakah Anda ingin menghapus semua terjemahan yang tak dipakai lagi?Jangan simpanJangan SimpanJangan Tampilkan LagiJangan tandai yang cocok persis sebagai perlu tindak lanjutJangan tampilkan lagiUnduh terjemahan terbaru…Mengunduh terjemahan dinonaktifkan dalam proyek ini.Seret Folder atau Berkas Ke SiniSeret folder atau berkas ke sini&KeluarE&kspor sebagai HTML…SuntingSunting &KomentarSunting &komentarSunting KomentarSunting komentarSunting projekMenyunting projekPenyuntinganSunting…Surel:Masuk Layar PenuhEntri dalam berkas ini memilik cacah bentuk jamak yang berbeda dengan apa kata header Plural-FormsEntri dengan Kesalahan DuluEntri dengan kesalahan di awalEntri dengan kesalahan ditandai dengan warna merah dalam daftar. Rincian kesalahan akan ditampilkan ketika Anda memilih entri tersebut.Kesalahan saat membuka berkasKesalahan saat menyimpan berkasMasalah saat memuat berkas XLIFF: %sKesalahan: GalatSegalanyaPath yang dikecualikanEkspor Ke TMX…Ekspor sebagai…Ekspor ke HTML…Ekspor ke TMX…Mengekspor ke HTMLMengekspor memori terjemahan ke "%s" gagal.Mengekspor terjemahan…Ekstrak dari sumberEkstrak catatan untuk penerjemah dari:Ekstrak teks dari berkas sumber di direktori berikut:Mengekstrak untaian yang dapat diterjemahkan dari %s berkas…Penyiapan ekstraktorPengekstrakGagal berkomunikasi dengan proses Poedit.Gagal memuat berkas dengan terjemahan yang terekstrak.Gagal menggabung katalog-katalog gettext.Gagal memperbarui ingatan terjemahan: %sBerkasBerkas tidak dapat dibukaBerkas "%s" tidak ada.Berkas "%s" bukan sebuah berkas terjemahan.Berkas "%s" hanya bisa dibaca dan tidak bisa disimpan. Harap simpan dengan nama berbeda.CariCari BerikutnyaCari SebelumnyaCari dan Ganti…Cari dalam komentarCari dalam teks sumberCari dalam terjemahanCari berikutnyaCari sebelumnyaPerbaiki BahasaPerbaiki bahasaPerbaiki HeaderPerbaiki headerBerkas Terjemahan FlutterFormulir %iBentuk %i (tidak terpakai)GNU gettextUmumBerkas HTMLBantuanSembunyikan Bilah SisiSembunyikan Bilah StatusSembunyikan pesan pemberitahuan iniBagaimana sinkronisasi awan bekerja?IDBila Anda meneruskan pembersihan, semua terjemahan yang ditandai sebagai terhapus akan dibuang secara permanen. Anda mesti menerjemahkan ulang bila mereka ditambahkan kembali di masa mendatang.Bila Anda sebelumnya ditolak mengakses berkas-berkas Anda, Anda dapat mengizinkannya dalam Preferensi Sistem > Keamanan & Privasi > Privasi > Berkas & Folder.Bila Anda sebelumnya ditolak mengakses berkas-berkas Anda, Anda dapat mengizinkannya dalam Pengaturan Sistem > Keamanan & Privasi > Berkas & Folder.AbaikanAbaikan besar kecil hurufImpor Dari TMX…Impor Berkas Terjemahan…Impor dari TMX…Impor berkas terjemahan…Mengimpor dari "%s"…Gagal mengimpor memori terjemahan.Mengimpor terjemahan…Pada: %sTermasuk versi betaHuruf besar/kecil yang tidak konsistenWhitespace yang tidak konsistenInformasi tentang penerjemahInstalBerkas tak validInvokasi:MasalahMasalahBerkas Terjemahan JSONPertahankanNama atau kode bahasaBahasa terjemahan sama dengan bahasa sumber.Bahasa terjemahan belum dipilih.Bahasa terjemahan:Pilihan bahasaTim bahasa:Bahasa:Terakhir berubahBelajar tentang kata kunci gettextBelajar tentang bentuk jamakPelajari lebih lanjutPelajari lebih lanjut mengenai %sPelajari lebih lanjut tentang CrowdinPelajari lebih lanjut tentang GNU gettextBarisBaris %d dari berkas "%s" rusak (data %s tak valid).Akhiran baris:Daftar ekstensi dipisah dengan titik koma (mis. *.cpp;*.h):Muat Bahasa InggrisLocalazy adalah platform pelokalan yang sangat terotomasi yang mengizinkan siapa pun menerjemahkan produk-produk dan konten mereka ke dalam beberapa bahasa secara mudah.Berkas MO tak dapat langsung disunting di Poedit.Jadikan Huruf KecilJadikan Huruf BesarMembuat suatu terjemahan baru dari berkas POT ini.Header cacat: "%s"Kelola akunMengelola…Menggabungkan perbedaan…MinimalkanTerjemahan ini untuk projek bernama tersebutNama:Belum Diterjemahkan Berikutn&yaBelum diterjemahkan berikutn&yaBelum TuntasBelum tuntasKesalahan jaringan: %s (%d)Jangan pernah memfokuskan ke daftar kalimat. Jika diaktifkan gunakan Ctrl-panah keyboard untuk navigasi tapi juga dapat dituliskan secara langsung, tanpa menekan Tab untuk merubah fokus.BaruBaru Dari Berkas &POT/PO…Baru dari berkas &POT/PO…Kalimat baruBentuk Jamak SelanjutnyaBentuk jamak berikutnyaTidakTak Ditemukan Yang CocokTidak ada entri yang bisa dipraterjemahkan.Tidak ada informasi tentang kemunculan string ini dalam kode sumber yang disediakan dalam berkas.Tak ditemukan yang cocokTidak ditemukan masalah dengan terjemahan.Tidak ada proyek terjemahan yang terdaftar dalam akun Anda.Tidak ada informasi penggunaanTidak semua bentuk jamak diterjemahkan.Tidak berwenang, silakan masuk lagi.Catatan bagi para penerjemahOKSatuHanya fungsikan jika Anda mempercayai kualitas TM Anda. Secara default, semua kecocokan dari TM ditandai sebagai perlu tindak lanjut dan mesti ditinjau sebelum dipakai.Hanya mengisi yang sama persisBuka Terjemahan Awan…Buka Yang Baru-baru IniBuka dan sunting berkas-berkas terjemahan.Buka terjemahan awanBuka terjemahan awan…Buka berkasBuka Dalam PenyuntingBuka dalam penyuntingBuka yang baru-baru iniBuka...Buka…OpsiLainnyaBelum Dite&rjemahkan SebelumnyaBelum dite&rjemahkan sebelumnyaBerkas Terjemahan POTemplat Terjemahan POTBerkas POT hanya templat dan tidak memuat terjemahan apapun. Untuk membuat suatu terjemahan, buatlah sebuah berkas PO baru berbasis templat itu.TempelTempel dan Cocokkan GayaPathLakukan pembaruan dari kode sumber pada semua berkas dalam proyek.Izin ditolak.Pewakil "%s" kurang dalam terjemahan.Kebenaran pewakilSilakan membuka dan menyunting berkas PO yang sesuai. Ketika Anda menyimpan, berkas MO juga akan diperbarui.Harap simpan dulu. Seksi ini tak bisa disunting sebelum itu.JamakTerjemahan bentuk jamakEkspresi bentuk jamak yang dipakai oleh berkas tidak umum bagi %s.Bentuk jamak:PoeditPoedit - Manajer katalogPoedit secara otomatis memperbaiki isi yang tak valid dalam berkas "%s".Poedit dapat mencoba untuk mengisi entri baru dari terjemahan sebelumnya dalam file atau dari memori seluruh terjemahan Anda. Menggunakan TM tidak akan sangat efektif jika memang mendekati kosong, tapi itu akan membaik untuk Anda menambahkan terjemahan kedalamnya.Poedit tidak dapat menampilkan kode sumber dimana string dipakai, karena berkas mungkin tidak tersedia dalam lokasi yang dirujuk atau itu adalah suatu acuan simbolik yang tidak menunjuk ke suatu berkas nyata.Poedit adalah penyunting terjemahan yang mudah dipakai.Poedit tidak bisa membuka berkas "%s".Pra&terjemahkan…Pra-terjemahDipraterjemahkanDipraterjemahkan %u stringPra-terjemah dari ingatan terjemahan…Memraterjemahkan…Pra-terjemahan secara otomatis menemukan kecocokan persis atau ragu untuk kalimat yang belum diterjemahkan dalam memori terjemahan dan mengisikan terjemahan mereka.Praterjemahan memerlukan ketersediaan teks sumber. Itu tidak bekerja bila yang dipakai hanya ID tanpa teks sebenarnya.Praterjemahan memerlukan dikenalnya bahasa teks sumber. Poedit tidak bisa mendeteksi itu dalam berkas ini.PreferensiPreferensi...Preferensi…Menyiapkan string…Pertahankan format berkas yang sudah adaBentuk Jamak SebelumnyaBentuk jamak sebelumnyaTeks sumber sebelumnyaSuntingan SebelumnyaSuntingan sebelumnyaNama dan versi projek:Nama projek:Proyek:ProyekPemeriksaan tanda bacaBuangBuang terjemahan yang dihapusKeluarGagal membaca isi berkas dengan kesalahan: %sBerkas baru-baru iniJadi LagiSegarkanMuat Ulang BerkasMuat ulang berkasSisa: %dHapusBuang Terjemahan Sama-dengan-SumberBuang terjemahan yang sama dengan sumberGantiGanti Semu&aGanti semu&aKalimat penggantiGanti…Kurang tajuk Plural-Forms yang diperlukan.ResetReset memori terjemahanMe-reset memori terjemahan akan menghapus seterusnya semua terjemahan yang disimpan darinya. Anda tidak dapat membatalkan operasian ini.Ungkapkan dalam FinderTinjauSimpanSimp&an Sebagai…Simpan seb&agai…Simpan SajaSimpan sajaSimpan sebagaiSimpan sebagai…Simpan perubahanSimpan berkasTangkapan layar:Pilih Semu&aPilih SemuaPilih berkas TMX yang akan diimporPilih direktoriPilih berkas terjemahanPilih berkas terjemahan yang akan diimporPilih templat terjemahanPilih bahasa yang disukaiAtur bahasaAtur bahasaPengaturanPengaturan…Tampilkan Bilah SisiTampilkan Ejaan dan Tata BahasaTampilkan Bilah StatusTampilkan &ID StringTampilkan SubstitusiTampilkan Bilah AlatTampilkan PeringatanTampilkan dalam ExplorerTampilkan dalam FolderTampilkan atau sembunyikan bilah sisiTampilkan bilah sisiTampilkan bilah statusTampilkan &ID stringTampilkan peringatanBilah SisiMasukKeluarMasukMasuk ke %sMasuk ke Akun AwanMasuk ke CrowdinMasuk ke akun awanKeluarTunggalSalin/Tempel CerdasGaris Hubung CerdasTaut CerdasTanda Kutip CerdasUrutkan Berdasar Urutan &BerkasUrutkan Berdasar &SumberUrutkan Berdasar &TerjemahanUrutkan berdasar urutan &berkasUrutkan berdasar &sumberUrutkan berdasar &terjemahanSet karakter kode sumber:Pengekstrak kode sumber digunakan untuk menemukan kalimat yang dapat diterjemahkan dalam berkas kode sumber dan mengekstrak mereka sehingga dapat diterjemahkan.Kode sumber tidak tersedia.Kode sumber tidak ditemukanTeks sumberID teks sumberTeks sumber — %sKata Kunci SumberPath SumberKata-kata kunci sumberPath sumberPidatoPemeriksaan ejaan dinonaktifkan, karena kamus untuk %s tidak diinstal.Ejaan dan Tata BahasaMulai BicaraBerhenti BicaraTerjemahan tersimpan:Konteks string: %sIdentifier string: %sPanjang string dalam karakterPanjang string dalam karakter: terjemahan | sumberKalimat yang dicariProyek Crowdin berbasis untaian tidak didukung.SubstitusiSaranSaran tidak tersedia jika bahasa terjemahan tidak diatur dengan benar. Fitur lainnya, seperti bentuk jamak, mungkin akan terpengaruh juga.Pewakil berlebih "%s" yang tak ada dalam teks sumber.Mendukung semua bahasa pemrograman yang dikenali oleh alat GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript dan lain-lain).SelaraskanSelaraskan dengan CrowdinSelaraskan terjemahan dengan CrowdinMenyelaraskanGalat penyelarasanPenyelarasan dengan Crowdin gagal.Kesalahan sintaks di header Plural-Forms ("%s").TMBerkas TMXAmbil kalimat-kalimat yang dapat diterjemahkan dari templat POT yang ada.URL atau alamat surel dan nama timTeks PenggantiTM tidak mengandung string apapun yang mirip dengan isi dari berkas ini. Ini hanya efektif untuk penerjemahan semi otomatis setelah Poedit belajar cukup dari berkas yang Anda terjemahkan secara manual.Berkas TMX cacat.Perubahan yang dibuat oleh aplikasi lain akan hilang bila Anda menyimpan.Berkas tak dapat dikompail ke dalam format MO dan digunakan.Berkas memuat butir-butir duplikat, yang tak diijinkan dalam berkas PO dan akan mencegah berkas dipakai. Poedit memperbaiki masalah ini, tapi Anda mesti meninjau terjemahan yang ditandai sebagai perlu tindak lanjut dan memperbaiki mereka bila perlu.Berkas tak bisa disimpan dalam set karakter "%s" sebagaimana dinyatakan dalam pengaturan terjemahan. Sebagai gantinya itu disimpan dalam UTF-8 dan pengaturan disesuaikan.Berkas telah diubah. Apakah Anda ingin menyimpan perubahan?Berkas dalam format yang tidak dikenali oleh Poedit.Berkas telah dikompail ke format MO, tapi mungkin tak akan bekerja dengan benar.File disimpan dengan aman dan dikompail ke format MO, tapi itu mungkin tidak akan bekerja dengan benar.Berkas disimpan secara aman, tapi tak bisa dikompail ke dalam format MO dan dipakai.Berkas disimpan dengan aman.Berkas “%s†tidak bisa dibuka.Berkas "%s" telah diubah oleh aplikasi lain.Teks sumber lama (sebelum berubah selama pemutakhiran) yang berkaitan dengan terjemahan kurang tepat.Cara paling sederhana untuk memenuhi berkas ini dengan terjemahan adalah dengan memutakhirkannya dari suatu POT:Terjemahan tidak diawali dengan sebuah spasi.Terjemahan berakhir dengan ganti baris, tapi teks sumber tidak.Terjemahan berakhir dengan spasi, tapi teks sumber tidak.Terjemahan berakhir dengan "%s", tapi teks sumber berakhir dengan "%s".Terjemahan kurang ganti baris di akhir.Terjemahan kekurangan spasi di akhir.Terjemahan siap untuk digunakan, tetapi %d entri belum diterjemahkan.Terjemahan siap digunakan.Terjemahan harus berakhir dengan "%s".Terjemahan tidak boleh berakhir dengan "%s".Terjemahan harus mulai sebagai satu kalimat.Terjemahan harus mulai dengan karakter huruf kecil.Terjemahan diawali dengan sebuah spasi, tapi teks sumber tidak.Terjemahan ditandai sebagai perlu tindak lanjut, karena mereka mungkin tidak akurat. Anda mesti meninjau benar tidaknya mereka.Tidak ada terjemahan. Itu tidak biasa.Ada masalah pemformatan berkas secara rapi (tapi berkas telah disimpan secara baik).Ada kesalahan saat mengunggah terjemahan ke Localazy.Ada kesalahan ketika memuat berkas. Sebagian data mungkin hilang atau rusak.Pengaturan ini mempengaruhi pemformatan internal berkas PO. Sesuaikan mereka jika Anda memiliki persyaratan tertentu misalnya karena kontrol versi.Berkas JSON ini bukan berkas terjemahan dan tidak bisa diubah di Poedit.Aksi ini akan menghapus sebarang terjemahan yang cocok eksak dengan teks sumber. Ini tidak dapat dibatalkan.Berkas punya entri dengan bentuk jamak, tapi tak punya header Plural-Forms yang terkonfigurasi.Berkas ini memakai ID string bukan teks sumber. Poedit bisa memuat teks bahasa Inggris dari berkas "%s" untuk Anda.Ini adalah perintah yang dipakai untuk meluncurkan pengekstrak. %o diubah ke nama berkas keluaran, %K ke daftar kata kunci, %F ke daftar berkas masukan, %C ke flag set karakter (lihat di bawah).String ini ditemukan dalam memori terjemahan Poedit.Ini akan dilampirkan ke baris perintah hanya jika sumber kode set karakter telah diberikan. %c diubah ke nilai set karakter.Ini akan dilampirkan ke baris perintah sekali untuk tiap berkas masukan. %f diubah ke nama berkasIni akan dilampirkan ke baris perintah sekali untuk tiap kata kunci. %k diubah ke kata kunci.TotalTransformasiEntri-entri yang dapat diterjemahkan tidak ditambahkan secara manual dalam sistem Gettext, tapi diekstrak secara otomatis dari kode sumber. Dengan cara ini, mereka tetap mutakhir dan akurat. Penerjemah biasanya memakai berkas templat PO (POTs) yang disiapkan untuk mereka oleh pengembang.Terjemahkan proyek cloudDiterjemahkan: %d dari %d (%d %%)TerjemahanBahasa TerjemahanIngatan TerjemahanTerjemahan Perlu Tindak &LanjutProperti TerjemahanBasis data memori terjemahan rusak: %s (%d).Kesalahan memori terjemahan: %s (%d).Terjemahan perlu tindak &lanjutProperti terjemahanSaran terjemahanSaran terjemahan memerlukan ketersediaan teks sumber. Mereka tidak bekerja bila yang dipakai hanya ID tanpa teks sebenarnya.Saran terjemahan memerlukan dikenalnya bahasa teks sumber. Poedit tidak bisa mendeteksi itu dalam berkas ini.Terjemahan — %sTerjemahan tidak dapat diperbarui dari kode sumber, karena kode tidak ditemukan di lokasi yang dinyatakan dalam Properti berkas.DuaUTF-8 (disarankan)BatalEksepsi tidak tertangani terjadi: %sUnix (disarankan)Masalah Crowdin yang tak diketahui.Kesalahan tidak dikenalBelumPerbaruiPerbarui semuaPerbarui semua katalog dalam projekPerbarui semua katalog dalam proyek ini?Mutakhirkan dari Berkas &POT…Mutakhirkan dari berkas &POT…Perbarui dari KodePerbarui dari POTPerbarui dari kodePerbarui dari kode sumberPerbarui rangkumanPembaruanGagal MemperbaruiMemperbarui katalog proyekMemperbarui terjemahanMemutakhirkan informasi pengguna…Mengunggah terjemahan ke %s gagal.Mengunggah terjemahan ke %s…Mengunggah terjemahan…Gunakan ekspresi pilihan sendiriGunakan fon daftar khusus:Gunakan fon bidang teks khusus:Pakai aturan baku untuk bahasa iniGunakan kata-kata kunci ini (nama-nama fungsi) untuk mengenali kalimat yang dapat diterjemahkan di berkas sumber:Pakai ingatan terjemahanValidasikanHasil validasiVersi %sTampilkan Rincian…Menunggu otentikasi…Peringatan: Selamat Datang di PoeditKetika memperbarui dari sumberHanya kata lengkapJendelaWindowsMaukah Anda menggunakan Bahasa Inggris sebagai teks sumbernya?Ulang dari awalTekuk pada:Berkas Terjemahan XLIFFYaAnda juga dapat mengekstrak string yang dapat diterjemahkan secara langsung dari kode sumber:Anda tak bisa menjatuhkan lebih dari satu berkas pada jendela Poedit.Anda tidak punya izin untuk membaca berkas-berkas kode sumber dari lokasi yang dinyatakan dalam Properti berkas.Jalankan ulang Poedit agar efek perubahan terlihat.Nama AndaPerubahan yang Anda buat akan hilang bila tidak Anda simpan.Nama dan alamat surel Anda hanya digunakan untuk menetapkan header Last-Translator dari berkas gettext GNU.NolZumBelum Tuntasjangan hapus berkas sementara (untuk pengawakutuan)mis. nplurals=2; plural=(n > 1);kesalahan: fuzzy cocok dengan filepergi ke butir pada nomor baris yang didiberikanmenangani URI poedit://Alt+Ctrl+TurunEnterKiriKananShift+NaikaltctrlshiftTentang %sSembunyikan %sSembunyikan Yang LainPreferensi...Keluar %sLayananTampilkan Semuapra-menerjemahkan dari TMbahasa tak dikenalversi tidak didukung (%s)peringatan: anda@contoh.com"%s" bukan berkas POT yang valid.poedit-3.6.3/locales/oc.po0000644000175100001660000025070715011674364011076 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Occitan\n" "Language: oc_FR\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: oc\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Amagar aqueste messatge de notificacion" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Afichar pas mai" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Afichar pas mai" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Resumit de la mesa a jorn" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Tampar" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Fichièr" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Cadenas novèlas" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Collècta dels fichièrs font…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "" #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Dins : %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Còdi font indisponible." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Permission refusada." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Actualizacion de las traduccions" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Integracion dels cambiaments..." #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Entèsta mal formada : « %s »" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Fichièrs de traduccion PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Modèls de traduccion POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Fichièrs de traduccion XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Fichièrs de traduccion JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Fichièrs de traduccion Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Totes los fichièrs de traduccion" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Lo fichièr « %s » es en lectura sola e pòt pas èsser enregistrat.\n" "Enregistratz-lo jos un nom diferent." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Impossible d'enregistrar lo fichièr %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "" #: src/catalog_po.cpp:134 #, 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 linha del fichièr « %s » es pas estada cargada corrèctament." msgstr[1] "%i linhas del fichièr « %s » son pas estadas cargadas corrèctament." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "La linha %d del fichièr '%s' es corrompuda (donadas %s invalidas)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "I a agut un problèma al moment del formatatge del fichièr (mas es estat " "enregistrat corrèctament)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Error en enregistrant lo fichièr" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "« %s » es pas un fichièr POT valid." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Balisatge copat dins la cadena de traduccion." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Compte" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(non connectat)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Gerir los comptes" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projècte :" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Lenga :" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Telecargament de las darrièras traduccions..." #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Se connectar a %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sincronizacion" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Mandadís de las traduccions a %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Error de sincronizacion" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Apondre" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Pas autorizat, connectatz-vos tornamai." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "" "Lo telecargament de las traduccions es desactivat dins aqueste projècte." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "S'identificar" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "S'identificar" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Se desconnectar" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Se desconnectar" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Ne saber mai sus Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "En espèra d'autentificacion..." #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Mesa a jorn de las informacions de l'utilizaire..." #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Connectatz-vos sus Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "La sincronizacion amb Crowdin a fracassat." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Error Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Telecargament de las traduccions..." #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Copiar" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Ne saber mai" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Ajuda" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Los fichièrs MO pòdon pas èsser modificats dirèctament dins Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Error a la dobertura del fichièr" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Dobrissètz e editar lo fichièr PO correspondent. Quand l'enregistraretz, lo " "fichièr MO serà mes a jorn tanben." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "suprimir pas los fichièrs temporaris (per fins de desbugar)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "gerís una URI de poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Impossible de comunicar amb los processus de Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Una excepcion pas gerida s'es produita : %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Causir modèl de traduccion" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Fichièr invalid" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Causir fichièr de traduccion" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit es un logicial de traduccion de bon utilizar." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "" "Es impossible de depausar mai d'un fichièr a l'encòp dins la fenèstra de " "Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Lo fichièr « %s » es pas un fichièr de traduccion." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Lo fichièr « %s » existís pas." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "La verificacion ortografica es desactivada, perque lo diccionari pel %s es " "pas installat." #: src/edframe.cpp:871 msgid "Install" msgstr "Installar" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Una autra aplicacion a modificat lo fichièr « %s »." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Recargar lo fichièr" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignorar" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Recargar fichièr" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Enregistrar las modificacions" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Vòstras modificacions seràn perdudas se las enregistratz pas." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Enregistrar" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "E&nregistrar pas" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Enregistrar pas" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Anullar" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Enregistrar malgrat tot" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Enregistrar malgrat tot" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Enregistrar jos..." #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Compilacion..." #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Fichièrs de traduccion compilats" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Exportar en HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Fichièrs HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Fracàs de la mesa a jorn" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Actualizar a partir d’un fichièr &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Actualizar a partir d’un fichièr &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d problèma dins la traduccion." msgstr[1] "%d problèmas dins la traduccion." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Resultats de la validacion" #: src/edframe.cpp:1842 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 "" "Las entradas amb d'errors son estadas marcadas en roge dins la lista. Los " "detalhs de l'error s'aficharàn quand seleccionaretz aqueste tipe d'entrada." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Lo fichièr es estat enregistrat en tota seguretat." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Lo fichièr es estat enregistrat en tota seguretat e compilat al format MO, " "mas foncionarà probablament pas corrèctament." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Lo fichièr es estat enregistrat en tota seguretat, mas pòt pas èsser " "compilat al format MO ni èsser utilizat." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Lo fichièr es estat compilat al format MO, mas foncionarà probablament pas " "corrèctament." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Lo fichièr pòt pas èsser compilat al format MO e èsser utilizat." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Cap de problèma pas trobat dins la traduccion." #: src/edframe.cpp:1894 #, 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] "" "La traduccion es prèsta a èsser utilizada, mas %d entrada es pas encara " "traduita." msgstr[1] "" "La traduccion es prèsta a èsser utilizada, mas %d entrada es pas encara " "traduita." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "La traduccion es prèsta a èsser utilizada." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "Poedit a corregit automaticament lo contengut invalid del fichièr \"%s\"." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Lo fichièr conteniá d'elements en doble, aquò es pas permés dins los " "fichièrs PO e empachariá son utilizacion. Poedit a reglat aqueste problèma, " "mas vos caldriá repassar las traduccions de totes los elements marcats coma " "aproximatius e las corregir se necessari." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "La lenga de traduccion es pas definida." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Definir la lenga" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Definir la lenga" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Las suggestions son pas disponiblas se la lenga de traduccion es pas " "definida. Las autras foncionalitats, coma los plurals, pòdon èsser afectadas " "tanben." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "La lenga de traduccion es identica a la lenga font." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Corregir la lenga" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Corregir la lenga" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "L'entèsta Plural requesida es absenta." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Error de sintaxi dins l'entèsta Plural (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Corregir l'entèsta" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Corregir l'entèsta" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Repassar" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduit : %d de %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Que demòra : %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d error" msgstr[1] "%d errors" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrada" msgstr[1] "%d entradas" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (pas salvat)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (modificat)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Fracàs de la mesa a jorn de la memòria de traduccion : %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Conservar" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Escafar las traduccions suprimidas" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Volètz suprimir totas las traduccions que son pas mai utilizadas ?" #: src/edframe.cpp:2879 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 "" "En contunhant lo netejatge, totas las traduccions marcadas coma suprimidas " "seràn escafadas definitivament. Caldrà recomençar la traduccion se son " "apondudas tornamai." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Escafar" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Copiar dempuèi lo tèxte font" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Copiar dempuèi lo tèxte font" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Escafar la traduccion" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Escafar la traduccion" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Modificar lo comentari" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Modificar lo comentari" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Ocurréncias al còdi" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Ocurréncias al còdi" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Amagar lo panèl lateral" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Afichar lo panèl lateral" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Amagar la barra d'estat" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Afichar la barra d'estat" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Longor de la cadena en caractèrs" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Tèxte font" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singular" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plural" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Traduccion" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pretraduit" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Trabalh necessari" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "De repassar" #: src/editing_area.cpp:566 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 fichièrs POT son pas que de modèls e contenon pas de traduccions. \n" "Per far una traduccion, creatz un novèl fichièr PO a partir del modèl." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Crear una novèla traduccion" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Far una nòva traduccion a partir d’aqueste fichièr POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Tot" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Formulari %i (non utilizat)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Zèro" #: src/editing_area.cpp:788 msgid "One" msgstr "Un" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dos" #: src/editing_area.cpp:804 msgid "Other" msgstr "Autre" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "format %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Traduccion — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Tèxte font — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "lenga desconeguda" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Error desconeguda" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Fracàs de la fusion dels catalògs gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Dobrir dins l’Editor" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Dobrir dins l’Editor" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Cap d’informacion d’utilizacion" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "%d ocurréncias del còdi" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Còdi font pas trobat" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Lo fichièr pòt pas èsser dobèrt" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit a pas pogut dobrir lo fichièr « %s »." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Trobar" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Remplaçar" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opcions" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignorar la cassa" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Boclar" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Mots entièrs unicament" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Trobar dins los tèxtes fonts" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Trobar dins las traduccions" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Trobar dins los comentaris" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Remplaçar &tot" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Remplaçar &tot" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Remplaçar" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Precedenta" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Seguenta >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Cadena de recercar" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Cadena de remplaçament" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Nom o còdi de la lenga" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Lenga de traduccion" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Lenga de la traduccion :" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Totas las cadenas" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projèctes" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Ne saber mai sus %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Gestionari dels catalògs" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Edicion…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Crear un novèl projècte de traduccion" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Suprimir aqueste projècte" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Modificar lo projècte" #: src/manager.cpp:176 msgid "Update all" msgstr "Tot metre a jorn" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Metre a jorn totes los catalògs del projècte" #: src/manager.cpp:378 msgid "Total" msgstr "Total" #: src/manager.cpp:379 msgid "Untrans" msgstr "Pas traduit" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Trabalh necessari" #: src/manager.cpp:381 msgid "Errors" msgstr "Errors" #: src/manager.cpp:382 msgid "Last modified" msgstr "Darrièr cambiament" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Causir un repertòri" #: src/manager.cpp:433 msgid "Directories:" msgstr "Repertòris :" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Volètz suprimir lo projècte « %s » ?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Suprimir lo projècte" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" #: src/manager.cpp:571 msgid "Confirmation" msgstr "Confirmacion" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Recèrca de las mesas a jorn..." #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Gestionari de catalògs" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Preferéncias…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Editar" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Anullar" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Refar" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Pegar en conservant la mesa en forma" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Suprimir" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Ortografia e Gramatica" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Afichar l'ortografia e la gramatica" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Verificar lo document ara" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Verificar l'ortografia al moment de la picada" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Verificar la gramatica amb l’ortografia" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Corregir l’ortografia automaticament" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Substitucions" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Afichar las substitucions" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Copiar/pegar intelligent" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Verguetas intelligentas" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Jonhents intelligents" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Ligams intelligents" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Tèxte de remplaçament" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformacions" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Metre en majusculas" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Metre en minusculas" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Metre en majuscula" #: src/menus.cpp:237 msgid "Speech" msgstr "Dictar" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Començar de parlar" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Començar de parlar" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Afichatge" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Afichar la barra d'aisinas" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Personalizar la barra d'aisinas..." #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Passar en mòde ecran complèt" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Fenèstra" #: src/menus.cpp:263 msgid "Minimize" msgstr "Reduire" #: src/menus.cpp:264 msgid "Zoom" msgstr "Agrandir" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Benvenguda dins Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Tot passar al primièr plan" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informacions sul traductor" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nom :" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Vòstre nom" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Email :" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Vòstre nom e vòstra adreça e-mail son utilizats unicament per definir " "l'entèsta Last-Translator dels fichièrs de GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Cambiaments" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Compilar automaticament lo fichier MO al moment de l'enregistrament" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Verificar l’ortografia" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Activar totjorn la zòna de picada del tèxte" #: src/prefsdlg.cpp:211 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 "" "Daissar pas jamai la man a la lista de las cadenas. Quand es activada, cal " "utilizar las tòcas Ctrl + Naut/Bas de navigacion, mas podètz tanben picar lo " "tèxte dirèctament sens que vos calga utilizar la tòca de tabulacion per " "activar la zòna de traduccion." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Aparéncia" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Utilizar una polissa personalizada :" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Utilizar una polissa personalizada pels camps de tèxte :" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Cambiar la lenga de l'interfàcia" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(necessita Windows 8 o mai recent)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "General" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Utilizar la memòria de traduccion" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Gerir…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Al moment de l’actualizacion dempuèi las fonts" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "emplenatge aprox. amb lo fichièr" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pretraduire amb la MT" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Traduccions emmagazinadas :" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Talha de la basa de donadas sul disc :" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importar de fichièrs de traduccion…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importar de fichièrs de traduccion…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Import de TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Import de TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Exportar en TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Export en TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Reïnicializar" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Seleccionar los fichièrs de traduccion d'importar" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Seleccionatz los fichièrs TMX d’importar" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Fichièrs TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Importacion de las traduccions…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exportar..." #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Export de las traduccions…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Reïnicializar la memòria de traduccion" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Sètz segur que volètz reïnicializar la memòria de traduccion ?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "La reïnicializacion de la memòria de traduccion suprimirà definitivament " "totas las traductions que i son emmagazinadas. Aquesta operacion es " "irreversibla." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "MT" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Memòria de traduccion" #: src/prefsdlg.cpp:730 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 "" "Los extractors de còdi font son utilizats per recercar e extraire las " "cadenas tradusiblas dels fichièrs del còdi font per fin de las traduire." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Suprimir l'extractor" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Sètz segur que volètz suprimir l'extractor «%s » ?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extractors" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Comptes" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Recercar automaticament las mesas a jorn" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Inclure las versions bèta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Las versions bèta contenon las darrièras novetats e melhoraments, mas pòdon " "èsser un pauc mens establas." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Mesas a jorn" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Aqueles paramètres modifican la mesa en forma intèrna dels fichièrs PO. " "Ajustatz-las se avètz d'exigéncias especificas, per exemple en rason del " "contraròtle de version." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Fins de linha :" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (recomandat)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Passar a la linha a :" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Preservar lo formatatge dels fichièrs existents" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Avançats" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Paramètres" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Preparacion de las cadenas…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Pre-traduccion via memòria de traduccion…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u cadena de tèxte pre-traducha" msgstr[1] "%u cadenas de tèxte pretraduchas" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Pretraduccion…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "" #: src/pretranslate.cpp:218 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 "" "La MT conten pas cap de cadena identica al contengut d'aqueste fichièr. Es " "efectiu unicament per de traduccions semi-automaticas aprèp que Poedit aja " "aprés pro de fichièrs traduits manualament." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pretraduction" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Completar unicament las correspondéncias exactas" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Anullacion…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Apondre dossièrs…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Apondre dossièrs…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Apondre fichièrs…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Apondre fichièrs…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Camins" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Camins excluses" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Totes los comentaris" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Mots claus suplementaris" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Nom del projècte de traduccion" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p. ex. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomandat)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "D'en primièr, enregistratz lo fichièr. Aquesta seccion pòt pas èsser " "modificada abans." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Correccion dels marcadors de contengut" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Lo marcador « %s » es absent de la traduccion." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Marcador de sobra « %s » qu’es pas dins lo tèxt font." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Formula del plural" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Totes los plurals son pas traduches." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Inconsisténcia majusculas/minisculas" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "La traduccion deu començar amb una minuscula." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Inconsisténcia dels espacis" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "La traduccion comença pas per un espaci." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "La traduccion començar per un espaci alara que lo tèxte font non." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Manca un espaci a la fin de la traduccion." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Verificacions de pontuacion" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "La traduccion deu acabar amb « %s »." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "La traduccion deu pas acabar amb « %s »." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "La traduccion se termina amb « %s » mentre que lo tèxt font s’acabar amb " "« %s »." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Escafar lo menú" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Escafar lo menú" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Comentari :" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Actualizar" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Suprimir" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Suprimir lo comentari" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Modificar lo projècte" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nom del projècte :" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Percórrer" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Apondre un repertòri a la lista" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "D'acòrdi" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Fichièr" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Novèl…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Novèl a partir d'un fichièr &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Novèl a partir d'un fichièr &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Dobrir…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Dobèrts recentament" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Dobèrts recentament" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Fenèstra d’aviada" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Fenèstra d’aviada" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Gestion dels &catalògs" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Gestion dels &catalògs" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Tampar" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Enregistrar" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Enregistrar jos…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Enregistrar jos…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Compilar en MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Recèrca de las mesas a jorn…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Paramètres…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Preferéncias" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Quitar" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Quitar" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Copiar del singular" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Copiar del singular" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Traduccion necessitant una &revision" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Traduccion necessitant una &revision" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Modificar lo &comentari" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Modificar lo &comentari" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Suggestions" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Recercar…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Remplaçar…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Cercar lo seguent" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Trobar lo precedent" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Recercar e remplaçar…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Cercar lo seguent" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Cercar lo precedent" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Afichar l’&ID de la cadena" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Afichar l’&ID de la cadena" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Afichar los avertiments" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Afichar los avertiments" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Triar per &fichièr" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Triar per &Fichièr" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Triar per &font" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Triar per &Font" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Triar per &traduccion" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Triar per &Traduccion" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Gropar per contèxte" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Gropar per Contèxte" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Entradas amb errors d'en primièr" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Entradas amb Errors d'en primièr" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Entradas &pas traduitas d'en primièr" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Entradas &pas Traduitas d'en Primièr" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Mostrar las occurréncias del còdi" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Mostrar las occurréncias del còdi" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Afichar lo panèl lateral" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Afichar la barra d'estat" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Traduccion" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Actualizar a partir del còdi font" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Actualizar a partir del còdi font" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sincronizar amb Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pre-&traduccion…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validar las traduccions" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validar las traduccions" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Escafar las traduccions suprimidas" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Escafar las traduccions suprimidas" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Proprietats…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "A&viar" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Aplicar e contunhar" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Aplicar e contunhar" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Modificat anteriorament" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Modificat anteriorament" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Traduccion &precedenta" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Traduccion &precedenta" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Traduccion segue&nta" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Traduccion segue&nta" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Incomplèt p&recedent" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Incomplèt p&recedent" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Incomplèt seguen&t" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Incomplèt seguen&t" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Forma plural precedenta" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Forma plural precedenta" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Forma plurala seguenta" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Forma plurala seguenta" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Ajuda en linha" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Ajuda en linha" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Manual de &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Manual de &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&A prepaus de Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&A prepaus" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Installacion de l'extractor" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "" "Lista de las extensions separadas per de punts-virgulas (ex. *.cpp;*.h) :" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Apèl :" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Comanda per extraire de traduccions :" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Aquí las comandas qu'avian l'extractor.\n" "%o : espandir al nom del fichièr de sortida,\n" "%K : far la lista dels mots claus,\n" "%F : far la lista dels fichièrs d'entrada,\n" "%C : jòc de caractèrs (veire çaijós)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Un element de la lista dels mots claus :" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Inserit dins la linha de comanda per cada\n" "mot clau. %k : lo mot clau." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Un element de la lista dels fichièrs d'entrada :" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Inserit dins la linha de comanda per cada\n" "fichièr d'entrada. %f : nom del fichièr." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Jòc de caractèrs del còdi font :" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Inserit dins la linha de comanda quand lo còdi de jòc de\n" "caractèrs de la font es provesit. %c s'espandís a la valor del jòc de " "caractèrs." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Proprietats de traduccion" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nom e version del projècte :" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Equipa de lenga :" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Formas pluralas :" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Utilizar las règlas per defaut d'aquesta lenga" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Utilizar una expression personalizada" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Ne saber mai sus las formas pluralas" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Jòc de caractèrs :" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Proprietats de traduccion" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Camins de las fonts" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Extraire lo tèxte dels fichièrs fonts dins los repertòris seguents :" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Camin de basa :" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Mots claus fonts" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Utilizar aquestes mots claus (noms de foncions) per reconéisser las cadenas\n" "tradusiblas dins los fichièrs fonts :" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Ne saber mai suls mots claus gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Dobrir fichièr" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Enregistrar fichièr" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validar" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Verificar las errors dins la traduccion" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Metre a jorn a partir del còdi" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Metre a jorn a partir del còdi" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Metre a jorn a partir del còdi font" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Panèl lateral" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Afichar o amagar lo panèl lateral" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Tèxte font precedent" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Nòtas pels traductors" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Comentari" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Apondre un comentari" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Apondre un comentari" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Escafar de la memòria de traduccion" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Escafar de la memòria de traduccion" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Suggestions de traduccion" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Cap de correspondéncia pas trobada" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Cap de Correspondéncia pas trobada" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "" "Aquesta cadena es estada trobada dins la memòria de traduccion de Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Impossible d'executar lo programa : %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Lo fichièr de TMX es mal formatat." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Utilizar la lenga per defaut)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Seleccion de lenga" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Seleccionatz vòstra lenga de preferéncia" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Vos cal reaviar Poedit per qu'aqueste cambiament prenga efièit." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Impossible de crear lo repertòri temporari." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "I a pas cap de traduccions. Es pas corrent." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Metre a jorn dempuèi un POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Utilizar las cadenas tradusiblas d'un modèl POT existent." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Tanben podètz extraire las cadenas tradusiblas dirèctament a partir del còdi " "font :" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Extraire dempuèi las fonts" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Configurar l’extraccion de còdi font dins las Proprietats." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Version %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Crear novèl" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Crear una traduccion novèla a partir d’un modèl POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Percórrer los fichièrs" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Fichièrs recents" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sincronizar" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sincronizar la traduccion amb Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "A prepaus de %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Preferéncias de %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "A prepaus de %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Servicis" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Amagar %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Amagar los autres" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Afichar tot" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Quitar %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Preferéncias..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Preferéncias..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferéncias..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Aplicar" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Aplicar" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Tornar" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Tornar" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Anullar" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Escafar" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Escafar" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Copiar" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Talhar" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Talhar" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Modificar" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Quitar" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Ajuda" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Novèl" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Novèl" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Non" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Non" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&D'acòrdi" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Dobrir…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "D&obrir..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Dobrir..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Pegar" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Pegar" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Preferéncias" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Restablir" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Actualizar" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Enregistrar jos" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Enregistrar jos" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Seleccionar &tot" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Seleccionar tot" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "An&ullar" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "Ã’&c" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ã’c" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Maj+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Entrada" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Naut" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Bas" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Esquèrra" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Drech" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "maj" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/ar.mo0000644000175100001660000017173415011674363011075 Þ•}Uì'@5 A5 M5&X55<“5Ð5Jã5g.6 –6 6 ¯6¹6 À6Î6Õ6Û6ã6ê6ñ6÷6ÿ677#7)727F7Z7^7p7‚7ˆ77•77¯7Á7Å7 É7 Ö7ã7ì7õ7 ü7 88/8E8T8p8Œ8’8˜8¡8§8°8Ç8 Þ8 ì8 ú89 9)9E9^9w9Ž9¥9«9°9Ç9×9 õ9 : :::%: ): 5:B:Q: a:m: ‡:”:£:³:Ç:â:ë: ;(;H; ^;1k;';Å;â; ü;<7 <6E<|<)œ<Æ< Ë<]Ö<4=<G=D„=$É=î= õ=> >">:> U>`>r>„>•>¨>±>Ä>à>ü>#?5?J?Y? _?j? |?‡?™?Ÿ?°?Á? Ü?ý?@@&@ 7@E@/`@ @k@ AA!A7AJA`A1A±A ÊAÕA)ìAB 6BDBIB\BoB„BˆBŸB¦BÅBÖBõBCC;*C fC'sC^›C?úC :D HDUD*hD“D"¦D5ÉDÿDE5E;E @E NE \E iE vEƒE”EœE¤E«Ef½E$F>FuXFÎFáF"óFG G(G7G HGUGgG0xG©GÃG#ØG<üG9H IH*TH0H!°H'ÒHúHÿHI(4IT]I²I ·I ÁIÏIãIôI J J (J 6J CJPJ_JnJˆJJ ¡J­J µJÀJ ÅJÒJâJKK©K‡ÈKzPLËL ÒLÞLñL M M} ;H+]b‰€ì€JñV<‚Ý“ƒ q…{… …—…Ÿ… ®… º… Ä… Ð… Ú… ä… î…#ø…#† @† L† V†$a†$†† «†¹†Ô† ï† ý† ‡‡"(‡"K‡n‡ t‡€‡›‡ ¶‡ Ç ·؇è‡"ÿ‡""ˆEˆ-Tˆ-‚ˆ °ˆ¼ˆ ĈÒˆÚˆ!ëˆ: ‰H‰[‰r‰ „‰6‰6ljþ‰Š.:Š.iŠ˜Š Š0¨Š%ÙŠ*ÿŠ*‹>‹ R‹\‹e‹ v‹‹—‹²‹Ï‹ë‹/Œ1ŒLŒiŒ6Œ#¸Œ ÜŒ/éŒ,/F$v›pµJ&Ž3qŽ=¥Ž ㎠ðŽ0ûŽ<,1i5›ÑÚ“õ'‰W±O ‘8Y‘ ’‘‘µ‘¾‘4Ù‘*’9’O’n’’ «’Ì’"ã’"“1)“"[“/~“#®“Ò“ ê“õ“ ”%”;”U”^”t”0Š”)»” å”ð”,•/•C•$V•H{•Ä•ªÍ•x–'–'§–'Ï–÷–$—3<—"p—“—§—3Æ—)ú—$˜>˜F˜e˜%„˜ª˜3±˜å˜%%.™T™j™™?™™Ù™,陬šKÚ›!› 3›VT› «›)Ì›Cö›4:œ4oœ ¤œ ®œ¹œÔœïœ #;S d$r—›¶)Rž)|ž˜¦ž?Ÿ#_Ÿ'ƒŸ «Ÿ ¶Ÿ#ğ蟠 , 8F   Ÿ 4À jõ `¡|¡1‘¡Fá7 ¢1B¢t¢}¢(¢*Æ¢nñ¢`£g£€£"™£"¼£ ߣ ¤!¤>¤[¤o¤ƒ¤Ÿ¤»¤Ù¤&ë¤ ¥¥'¥ 9¥(F¥o¥+Ž¥5º¥ð¥áÿ¥Ýá¦Ì¿§ Œ¨ —¨¸¨+Ó¨ÿ¨+©"F©i©r©,‹©'¸©$੪ª+ª?ª Zª7eª(ªƪߪõª ««U0«'†«®«Í«6í«V$¬{¬a–¬Qø¬+J­+v­8¢­'Û­® ®'-®U®?^® ž®)ª®)Ô®þ®-¯SB¯–°Ÿ°¿°ß°(ý°(&±O±T±7h±p ±²8%²C^²A¢²-ä²1³!D³ f³q³Ñz³3L´€´.˜´&Ç´ î´ü´µ4µ Hµ Rµ \µiµ)rµ)œµƵåµ™¶Ÿ¶$¦¶˶bܶ?·$V·{··s ¸ ”¸$Ÿ¸gĸ,¹ C¹3Q¹Z…¹˜๠y»K…¼0Ѽ!½$½>½õX½?N¾Ž¾à©¾Š¿™¿«¿%ÿ<é¿(&À(OÀxÀ—À´À%ÑÀ÷ÀÁ"ÁAÁ,JÁ wÁH‚ÁËÁéÁ ðÁ ûÁ Â= RÂ_Âx‘«ÂA½ÂÿÂ"â+ÃÎÃáÃêÃñÃÄÄ3ÄMÄ]ÄpÄ‹ÄIJÄÇÄ*ÛÄÅÅ99ÅsÅ"’ŵÅÉÅÝÅ(ïÅ9ÆRÆ(qÆ!šÆ"¼Æ߯ùÆÇ65Ç(lÇ•Ç(´ÇÝÇ÷ÇÈÈ'È!.È2PÈ ƒÈ2¤È×È àÈíÈÉÉ$0É(UÉ~ÉšÉ(¸ÉáÉýÉ.ÊÚJÊ0%Ë*VËË ™Ë.ºËéË.Ì4Ì PÌN]̬ÌÊÌàÌ$öÌ%ÍDA͆ͣͺ;ÏÍUŽÎâäÎÇÏÐÏ1íÏÐ9Ð2VÐG‰ÐÑÐëÐJüÐVGÑžÑùºÑ´ÒtÉÒU>Ó3”ÓìÈÔEµÕ8ûÕa4Ö‚–Öm×,‡×%´×?ÚצØ[ÁØ7ÙgUÙl½ÙY*ÚF„Ú9ËÚ§Û1­Ý6ßÝ:Þ1QÞ8ƒÞc¼Þœ ß;½ßƒùß‹}༠áWÆáâ1¯âPáã2äyÂä‡<åÄåÓå+èåæ%æ=æ'YææFæ/äæ'ç<çXçxçªç ;èFè [è7fèžè!ºèÜè ôèÿè8éSLé é¿é3Þéê3$ê%Xê~ê˜ê­êÅê-áê-ë(=ëfë*…ë*°ë7Ûë9ìÀMì(í7í@íVí hí‰í+¢íÎí íí øí[î _îmî|î˜î{ŸîEï¤aïHðOð3XðŒð*ñ1ñ:ñBPñ)“ñ+½ñBéñ',òTòZòcòiòrò{ò‚ò‹òò”ò šò¤ò´òÊò ÜòêòùòF óRó!fóˆó3¨óÿPDñàž`kTòúaéY{&aLdÏ™¹CƤ‹Eè·Ú.ûu¥1«JÄý,‰ (N5ÉBœ° A «ôÙÉÅÊF4ºr\´…çó3Õ $u‡zœõ¼2Y`[gŸ£ô•ˆƆ@„¾ — v6l~3ÐûÊÂChw¶cý]¹žFƒTºoï‹ÚtÈ·IÃU?~¿z†9¡¯öy!#þZ“½)a®t)üÕN˜n|ÇÑH/iðîIÃ;¦­< °¼{ QòhÝ$jqWVU‚mÞëXXÈ€æ‚4¬}ß‘e¦KØÞ¡(\;÷Î"–W}g.Ë×%o³-¿K´þú/8&ù%»`ñÖzBN©Í6mÁ±S_—ö2¬*ÿOÛü…s,„¢2.w˜-(OÛ^ÅPÇ:ª:ãÒáêbsø‘èê”/íeC À7fr³\ß=m'jX²øf“G*;c½q‰@xÜ+’O<”YjJáM€<Ð5£v-ì•Ô‡Lud p¸,M !v^*lh[s0–V$>íäï ­î›ZëV¨÷Z¥â±? |¨ŒÖ3}å+4y:Ügr>>él+² 0Rkyª E Ù8›R"d1 óUD»DiÍÄ'©|oå¶Sk¸Tš?ÀàŠÌ®ƒ6LQÝä#S#¤ Áð=pË8w)9HIHW5xtq¯eØŽÎcš^ù0õf]µiŒ×MpãÒ%JFâ¢=GÓbRÏìK!çÌ"{ˆ’§Ô7§Ñ_Qxb@¾Ó_7A1 E]PnŽ'n AæGŸBµ[9Š&™ (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesCancelCancelling…Cannot create temporary directory.Cannot execute program: %sCapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCode OccurrencesCode occurrencesCollecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen RecentOpen and edit translation files.Open cloud translationOpen fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:Punctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.UntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Arabic Language: ar_SA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: ar X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (معدّل) (غير محÙوظ)%d تكرار التعليمات البرمجية%d تكرار التعليمات البرمجية%d تكرار التعليمات البرمجية%d تكرار التعليمات البرمجية%d تكرار التعليمات البرمجية%d أحداث التعليمات البرمجيةلا مدخلاتمدخلة واحدةمدخلتان%d مدخلات%d مدخلة%d مدخلةلا مدخلات ØªÙØ±Ø¬Ù…ت مسبقًا.ØªÙØ±Ø¬Ù…ت مدخلة واحدة مسبقًا.ØªÙØ±Ø¬Ù…ت مدخلتين مسبقًا.ØªÙØ±Ø¬Ù…ت %d مدخلات مسبقًا.ØªÙØ±Ø¬Ù…ت %d مدخلة مسبقًا.ØªÙØ±Ø¬Ù…ت %d مدخلة مسبقًا.لا أخطاءخطأ واحدخطآن%d أخطاء%d خطأ%d خطألم ÙŠÙØ¹Ø«Ø± على مشاكل مع التّرجمات.Ø¹ÙØ«Ø± على مشكلة واحدة مع التّرجمات.Ø¹ÙØ«Ø± على مشكلتين مع التّرجمات.Ø¹ÙØ«Ø± على %d مشاكل مع التّرجمات.Ø¹ÙØ«Ø± على %d مشكلة مع التّرجمات.Ø¹ÙØ«Ø± على %d مشكلة مع التّرجمات.%i سطر مل٠““%sâ€â€ لم يتم تحميله بشكل صحيح.%i سطر المل٠““%sâ€â€ لم يتم تحميله بشكل صحيح.%i سطر المل٠““%sâ€â€ لم يتم تحميله بشكل صحيح.%i سطر المل٠““%sâ€â€ لم يتم تحميله بشكل صحيح.%i سطر المل٠““%sâ€â€ لم يتم تحميله بشكل صحيح.%i آسطر المل٠““%sâ€â€ لم يتم تحميله بشكل صحيح.نسق %sØªÙØ¶ÙŠÙ„ات %sنسق %s&عنْ&عنْ Poeditت&طبيق&رجوعأل&غاءام&سحأ&غلقا&نسخا&حذÙ&تمّت وإلى التّالية&تمّت وإلى التّاليةت&حرير&ملÙÙ‘&بحث…كتيّب &غنو ØºÙØªâ€‹ØªÙƒØ³ØªÙƒØªÙŠÙ‘ب &غنو ØºÙØªâ€‹ØªÙƒØ³Øª&انتقال&جمّع بالسّياق&جمّع بالسّياقم&ساعدة&جديد&جديد…ال&تّالية >التّرجمة ال&تّاليةالتّرجمة ال&تّالية&لا&مواÙقمساعدة &شبكيّةمساعدة &شبكيّةا&ÙØªØ­...&ÙØªØ­â€¦Ø£&لصقت&ÙØ¶ÙŠÙ„ات&Ø§Ù„ØªÙØ¶ÙŠÙ„ات…التّرجمة ال&سّابقةالتّرجمة ال&سّابقة&خصائص…ن&ظّ٠التّرجمات Ø§Ù„Ù…Ø­Ø°ÙˆÙØ©Ù†&ظّ٠التّرجمات Ø§Ù„Ù…Ø­Ø°ÙˆÙØ©Ø¥&نهاءأ&عدا&ستبدل&Ø­ÙØ¸&Ø­ÙØ¸ باسم&إظهار أحداث الكود&إظهار أحداث التعليمات البرمجية&بدء Ù†Ø§ÙØ°Ø©&بدء Ø§Ù„Ù†Ø§ÙØ°Ø©&التّرجمةترا&جعالمدخلات &غير المترجمة أوّلًاالمدخلات &غير المترجمة أوّلًاتحديث من &Ù…ØµØ§Ø¯Ø±ÙØªØ­Ø¯ÙŠØ« من &Ù…ØµØ§Ø¯Ø±ÙØª&حقّق من سلامة التّرجماتت&حقّق من سلامة التّرجمات&عرضن&عم(استخدم اللغة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠÙ‘Ø©)(لم يتم تسجيل الدخول)(يتطلّب «وندوز» 8 وأحدث)< ال&سّابقة<غير معنون>عنْ %sØ­Ø³Ø§Ø¨Ø§Ù„Ø­Ø³Ø§Ø¨Ø§ØªØ¥Ø¶Ø§ÙØ©Ø¥Ø¶Ø§ÙØ© ØªØ¹Ù„ÙŠÙ‚Ø¥Ø¶Ø§ÙØ© ملÙÙ‘Ø§Øªâ€¦Ø¥Ø¶Ø§ÙØ© Ù…Ø¬Ù„Ù‘Ø¯Ø§Øªâ€¦Ø¥Ø¶Ø§ÙØ© Ø­Ø±Ù Ø¨Ø¯Ù„â€¦Ø¥Ø¶Ø§ÙØ© ØªØ¹Ù„ÙŠÙ‚Ø¥Ø¶Ø§ÙØ© الدّليل إلى Ø§Ù„Ù‚Ø§Ø¦Ù…Ø©Ø¥Ø¶Ø§ÙØ© ملÙÙ‘Ø§Øªâ€¦Ø¥Ø¶Ø§ÙØ© مجلّدات…أض٠حر٠بدل…الكلمات Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘Ø© الإضاÙيّةرايات xgettext إضاÙيّة:متقدّمإعدادات استخراج متقدّمة…إعدادات استخراج متقدّمةإعدادات استخراج متقدّمة…كلّ ملÙّات التّرجمةكل التّعليقاتاستخدم أيضًا الكلمات Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘Ø© Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠÙ‘Ø© للّغات المدعومةغيّر دائمًا التّركيز إلى حقل إدخال النصّعنصر ÙÙŠ قائمة ملÙّات الدّخل:عنصر ÙÙŠ قائمة الكلمات Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘Ø©:المظهرتطبيقأمتأكّد من حذ٠مستخرج «%s»؟أمتأكّد من تصÙير ذاكرة التّرجمة؟التمس آليًّا عن التّحديثاتصرّ٠آليًّا مل٠‎.mo عند Ø§Ù„Ø­ÙØ¸Ø±Ø¬ÙˆØ¹Ø§Ù„مسار الأساس:نسخ بيتا تحوي المزايا الجديدة الأخيرة مع التّحسينات، لكن قد تكون أقلّ استقرارًا.اجلب الكلّ إلى الأمامملÙÙ‘ PO معطوب: Ø§Ø³ØªÙØ®Ø¯Ù…ت صيغة الجمع msgstr دون msgid_pluralمل٠PO المكسور: نموذج وحيد يستخدم مع msgid_multiuralخطأ ÙÙŠ الترميز ÙÙŠ جملة الترجمة.تصÙÙ‘Ø­ØªØµÙØ­ Ø§Ù„Ù…Ù„ÙØ§ØªØ£Ù„ØºÙØ¬Ø§Ø±Ù الإلغاء…تعذّر إنشاء الدّليل المؤقّت.تعذّر تنÙيذ البرنامج: %sكبّر الحروÙÙ…&دير الكتالوجاتم&دير الكتالوجاتمدير الكتالوجاتتغيير لغة الواجهةطقم المحارÙ:تدقيق المستند الآنتدقيق إملائي ونحويتدقيق إملائي أثناء الكتابةالتمس التّحديثات…تحقّق الأخطاء ÙÙŠ التّرجمةتحقق من التحديثات…دقّق الإملاءتنظيÙمسح القائمةتنظي٠الترجمةمسح القائمةتنظي٠الترجمةأغلقأحداث الكودأحداث الكودجاري تجميع ملÙّات المصدر…أمر استخراج التّرجمات:تعليقالتّعليق:التعليقات Ø§Ù„Ù…ÙØ¨ØªØ¯Ø£Ø© بâ€:جمع الى MO…صرّ٠إلى…ملÙّات ترجمة Ù…ØµØ±Ù‘ÙØ©Ø§Ø¶Ø¨Ø· استخراج الكود المصدريّ ÙÙŠ الخصائص.أكّدتوصيل Poedit مع منصات التوطين السحابية المدعومة لمزامنة الترجمات التي تتم إدارتها عليها بسلاسة.نسخنسخ من الصيغة Ø§Ù„Ù…ÙØ±Ø¯Ø©Ø§Ù†Ø³Ø® من النّصّ المصدرنسخ من الصيغة Ø§Ù„Ù…ÙØ±Ø¯Ø©Ù†Ø³Ø® من نص المصدريصحّح الإملاء آليًّاتعذر تحميل Ø§Ù„Ù…Ù„ÙØŒ ربما تالÙ.تعذّر Ø­ÙØ¸ الملÙÙ‘ %s.إنشاء جديدأنشئ ترجمة جديدةإنشاء ترجمة جديدة من قالب POT.أنشئ مشروع ترجمات جديدخطأ «كراودÙن»&قصّمستخرجات مخصّصة:مستخرجات مخصّصة:تخصيص شريط الأدوات…قصّحجم قاعدة البيانات ÙÙŠ القرص:Ø§Ø­Ø°ÙØ­Ø°Ù من ذاكرة الترجمةاحذ٠المستخرجحذ٠من ذاكرة الترجمةحذ٠المشروعحذÙ التعليقاحذ٠المشروعحذ٠المشروع لن يحذ٠أي Ù…Ù„ÙØ§Øª ترجمة.الأدلّة:هل تريد حذ٠المشروع «%s»؟هل تريد إعادة تحميل المل٠من القرص؟ سيتم Ùقدان تعديلاتك غير المحÙوظة ÙÙŠ «محرّر Po» إذا ÙØ¹Ù„ت ذلك.أتريد إزالة كلّ التّرجمات غير المستخدمة؟عدم Ø§Ù„Ø­ÙØ¸Ø¹Ø¯Ù… Ø§Ù„Ø­ÙØ¸Ø¹Ø¯Ù… العرض مجدّدًالا تعلّم المطابقات التّامّة بÙâ€â€ØªØ­ØªØ§Ø¬ عملًا“عدم العرض مجدّدًاينزّل أحدث Ø§Ù„ØªÙ‘Ø±Ø¬Ù…Ø§Øªâ€¦Ø¹ÙØ·Ùّل تنزيل التّرجمات لهذا المشروع.اسحب المجلدات أو Ø§Ù„Ù…Ù„ÙØ§Øª هنااسحب المجلدات أو Ø§Ù„Ù…Ù„ÙØ§Øª هناأ&Ù†Ù‡ÙØªØ­Ø±ÙŠØ±ØªØ­Ø±ÙŠØ± الت&عليقتحرير الت&عليقتحرير التعليقتحرير التعليقحرّر المشروعحرّر المشروعالتّحريرتحرير…البريد الإلكترونيّ:ادخل ملء الشّاشةالإدخالات ÙÙŠ هذا المل٠لها صيغ معدودة Ù…Ø®ØªÙ„ÙØ© مما يقوله ترويسة الأشكال المتعددة Ù„Ù„Ù…Ù„ÙØ§Ù„مدخلات مع أخطاء أولاالمدخلات مع أخطاء أولاالمدخلات بأخطاء عÙلّمت بالأحمر ÙÙŠ القائمة. ستظهر ØªÙØ§ØµÙŠÙ„ الخطأ عندما تختار مدخلة ما.خطأ ÙÙŠ ÙØªØ­ الملÙّخطأ أثناء Ø­ÙØ¸ Ø§Ù„Ù…Ù„ÙØ®Ø·Ø£ ÙÙŠ تحميل مل٠XLIFF: %sأخطاءكلّ شيءالمسارات المستثناةتصدير إلى TMX ...صدّر Ùƒâ€â€¦ØµØ¯Ù‘ر إلى HTML…تصدير إلى TMX ...ÙØ´Ù„ تصدير ذاكرة الترجمة إلى "%s".تصدير الترجمات ...استخرج من المصادراستخرج ملاحظات المترجمين من:استخرج النّصوص من الملÙّات المصدريّة ÙÙŠ الأدلّة التّالية:إعداد Ø§Ù„Ù…Ø³ØªØ®Ø±Ø¬Ø§Ù„Ù…Ø³ØªØ®Ø±Ø¬Ø§ØªÙØ´Ù„ الاتّصال مع عمليّة Poedit.ÙØ´Ù„ تحميل المل٠مع الترجمات المستخرجة.ÙØ´Ù„ دمج كاتالوجات Â«ØºÙØªâ€ŒØªÙƒØ³ØªÂ».ÙØ´Ù„ تحديث ذاكرة التّرجمة: %sملÙّلا يمكن ÙØªØ­ Ø§Ù„Ù…Ù„ÙØ§Ù„ملÙÙ‘ â€%s“ غير موجود.المل٠"%s" ليس مل٠ترجمة. الملÙÙ‘ â€%s“ للقراءة Ùقط ولا يمكن Ø­ÙØ¸Ù‡. رجاء Ø§Ø­ÙØ¸Ù‡ باسم مختلÙ.بحثبحث عن التاليبحث عن السابقإيجاد والاستبدال…البحث ÙÙŠ التعليقاتالبحث نصوص المصدرالبحث ÙÙŠ الترجماتابحث عن التّاليابحث عن السّابقأصلح اللغةأصلح اللغةأصلح التّرويسةأصلح Ø§Ù„ØªÙ‘Ø±ÙˆÙŠØ³Ø©Ù…Ù„ÙØ§Øª ترجمة Flutterالصّيغة %iالنموذج%i (غير مستخدم)GNU gettextعامّملÙّات HTMLمساعدةأخÙ٠الشّريط الجانبيّأخÙ٠شريط Ø§Ù„Ø­Ø§Ù„Ø©Ø¥Ø®ÙØ§Ø¡ رسالة التنبيه هذهكيÙية عمل المزامنة Ø§Ù„Ø³Ø­Ø§Ø¨ÙŠØ©ØŸØ§Ù„Ù…Ø¹Ø±Ù‘ÙØ¥Ù† تابعت مع Ø§Ù„ØªÙ‘Ù†Ø¸ÙŠÙØŒ Ø³ØªÙØ²Ø§Ù„ كلّ التّرجمات المعلّمة بÙâ€â€Ù…Ø­Ø°ÙˆÙØ©â€œ نهائيًّا. ستستطيع ترجمتها مجدّدًا إن Ø£ÙØ¶ÙŠÙت ÙÙŠ المستقبل.إذا كنت قد منعت من الوصول إلى Ù…Ù„ÙØ§ØªÙƒØŒ يمكنك السماح به ÙÙŠ ØªÙØ¶ÙŠÙ„ات النظام > الحماية والخصوصية > الخصوصية > Ø§Ù„Ù…Ù„ÙØ§Øª والمجلدات.إذا كنت قد منعت من الوصول إلى Ù…Ù„ÙØ§ØªÙƒØŒ يمكنك السماح بذلك ÙÙŠ إعدادات النظام > الخصوصية والأمان > Ø§Ù„Ù…Ù„ÙØ§Øª والمجلدات.تجاهلتجاهل حالة Ø§Ù„Ø£Ø­Ø±ÙØ§Ø³ØªÙŠØ±Ø§Ø¯ من TMX…استيراد Ù…Ù„ÙØ§Øª الترجمة…استيراد من TMX…استيراد Ù…Ù„ÙØ§Øª الترجمة…يستورد التّرجمات…ÙÙŠ: %sضمّن نسخ بيتاحالة أعلى/أسÙÙ„ غير Ù…ØªØ³Ù‚Ø©Ù…Ø³Ø§ÙØ© بيضاء غير متسقةمعلومات حول المترجمثبّتالملÙÙ‘ غير صالحالاستدعاء:Ù…Ù„ÙØ§Øª ترجمة JSONأبقهالغة التّرجمة Ù†ÙØ³Ù‡Ø§ لغة المصدر.لغة التّرجمة لم ØªÙØ¶Ø¨Ø·.لغة التّرجمة:حدّد Ø§Ù„Ù„Ù‘ØºØ©ÙØ±ÙŠÙ‚ التّرجمة:اللّغة:آخر تعديلتعلّم المزيد عن كلمات Â«ØºÙØªâ€Œâ€‹ØªÙƒØ³ØªÂ» Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘ةتعلّم حول صيغ المعدوداطّلع على Ø§Ù„Ù…Ø²ÙŠØ¯Ù…Ø¹Ø±ÙØ© المزيد عن %sاطّلع على المزيد عن «كراودÙن»السطر %d من المل٠“%s†معطوب (بيانات %s غير صالحة).نهايات الأسطر:قائمة الامتدادات Ù…ÙØµÙˆÙ„Ø© بÙواصل منقوطة (مثلًا ‎*.cpp;*.h):لا يمكن تحرير ملÙّات MO مباشرةً ÙÙŠ «محرÙّر Po».اجعلها بحالة أحر٠صغيرةاجعلها بحالة أحر٠كبيرةإنشاء ترجمة جديدة من مل٠POT هذا.التّرويسة ÙØ§Ø³Ø¯Ø©: â€%s“إدارة الحساباتإدارة…جاري دمج Ø§Ù„Ø§Ø®ØªÙ„Ø§ÙØ§Øªâ€¦ØµØºÙ‘راسم المشروع الذي تكون التّرجمات لهالاسم:غير المنتهية ال&تّاليةغير المنتهية ال&تّاليةتحتاج عملًاتحتاج المزيد من الانتباهلا تدع قائمة السلاسل تأخذ التّركيز أبدًا. إن ÙÙØ¹Ù‘Ù„ØŒ عليك استخدام Ù…ÙØªØ§Ø­ Ctrl مع الأسهم للتّنقّل عبر لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­. يمكنك هكذا طباعة النصّ مباشرةً دون الحاجة إلى ضغط Ù…ÙØªØ§Ø­ Tab لتغيير التّركيز.جديدمل٠جديد من &POT/PO…مل٠جديد من &POT/PO…السلاسل الجديدةصيغة المعدود التّاليةصيغة المعدود التّاليةلالا مطابقاتلا مدخلات يمكن ترجمتها مسبقًا.لا توجد معلومات حول تواتر هذه السلسلة ÙÙŠ Ø´ÙØ±Ø© المصدر ÙÙŠ الملÙ.لا مطابقاتلم ÙŠÙØ¹Ø«Ø± على مشاكل مع التّرجمة.لا توجد مشروعات ترجمة مدرجة ÙÙŠ حسابك.لم يتم العثور على معلومات الاستخداملم ØªÙØªØ±Ø¬Ù… كلّ صيغ الجموع.غير مستوثق، رجاء Ù„ÙØ¬ ثانية.ملاحظات Ù„Ù„Ù…ØªØ±Ø¬Ù…ÙŠÙ†Ø­Ø³Ù†Ù‹Ø§ÙˆØ§Ø­Ø¯ÙØ¹Ù‘له Ùقط إن كنت تثق بجودة TM. Ø§ÙØªØ±Ø§Ø¶ÙŠÙ‹Ù‘ا، كلّ المطابقات من TM ØªÙØ¹Ù„ّم بÙâ€â€ØªØ­ØªØ§Ø¬ عملًا“ ويجب مراجعتها قبل استخدامها.املأ Ùقط المطابقات Ø§Ù„ØªÙ‘Ø§Ù…Ù‘Ø©Ø§ÙØªØ­ Ø§Ù„Ø£Ø®ÙŠØ±Ø©ÙØªØ­ وتحرير Ù…Ù„ÙØ§Øª الترجمة.ÙØªØ­ الترجمة Ø§Ù„Ø³Ø­Ø§Ø¨ÙŠØ©ÙØªØ­ Ù…Ù„ÙØ§Ùتح ÙÙŠ Ø§Ù„Ù…Ø­Ø±Ù‘Ø±ÙØªØ­ ÙÙŠ Ø§Ù„Ù…Ø­Ø±Ù‘Ø±ÙØªØ­ Ø§Ù„Ø£Ø­Ø¯Ø«ÙØªØ­...ÙØªØ­â€¦Ø®ÙŠØ§Ø±Ø§ØªØ£Ø®Ø±Ù‰ØºÙŠØ± المنتهية ال&سّابقةغير المنتهية ال&سّابقةملÙّات PO ترجميّةملÙّات POT قالبيّةملÙّات POT ما هي إلّا قوالب لا تحوي ترجمات. لبدء الترجمة، أنشئ ملÙÙ‘ PO مبنيّ على القالب.لصقلصق ومطابقة التنسيقالمساراتإجراء تحديث من رمز المصدر على جميع Ø§Ù„Ù…Ù„ÙØ§Øª ÙÙŠ المشروع.الإذن مرÙوض.المكون "%s" غير مترجم.صحة المكونالرجاء ÙØªØ­ مل٠PO المقابل والقيام بتحريره عوض ذلك. عند Ø§Ù„Ø­ÙØ¸ØŒ Ø³ÙŠÙØ­Ø¯Ù‘Ø« مل٠MO كذلك.رجاء Ø§Ø­ÙØ¸ الملÙÙ‘ أوّلًا. لا يمكن تحرير هذا القسم حتّى ذلك الحين.الجمعترجمات بصيغة الجموعتعبير أشكال المعدود المستخدم من قبل المل٠غير معتاد لـ %s.صيغ المعدود:محرّر Po«محرÙّر Po» - مدير الكتالوجاتلقد أصلح Poedit محتوى غير صالح تلقائيا ÙÙŠ المل٠â€%s“.يمكن Ù„â€Â«Ù…حرÙّر Po» محاولة ملء المدخلات الجديدة Ùقط من التّرجمات السّابقة ÙÙŠ الملÙÙ‘ أو من ذاكرة التّرجمة كلّها. استخدام ذاكرة التّرجمة لن يكون ÙØ¹Ù‘الًا جديًّا إن كانت شبه ÙØ§Ø±ØºØ©ØŒ ولكنّها ستصبح Ø£ÙØ¶Ù„ متى ما أض٠ترجمات أخرى إليها.لا يستطيع تحرير Poedit إظهار Ø´ÙØ±Ø© المصدر حيث يتم استخدام السلسلة، لأن المل٠إما غير Ù…ØªÙˆÙØ± ÙÙŠ الموقع المشار إليه أو أنه مرجع رمزي لا يشير إلى مل٠حقيقي.«محرÙّر Po» هو محرّر ترجمات سهل الاستخدام.تعذر على Poedit ÙØªØ­ المل٠«%s».الترجمة &Ø§Ù„Ù…Ø³Ø¨Ù‚Ø©â€¦ØªÙØ±Ø¬Ù…ت Ù…Ø³Ø¨Ù‚Ù‹Ø§ØªÙØ±Ø¬Ù…ت مسبقًالم ÙŠÙØªØ±Ø¬Ù… أيّ مقطع Ù…Ø³Ø¨Ù‚Ù‹Ø§ØªÙØ±Ø¬Ù… مقطع واحد Ù…Ø³Ø¨Ù‚Ù‹Ø§ØªÙØ±Ø¬Ù… مقطعين Ù…Ø³Ø¨Ù‚Ù‹Ø§ØªÙØ±Ø¬Ù…ت %u مقاطع Ù…Ø³Ø¨Ù‚Ù‹Ø§ØªÙØ±Ø¬Ù…ت %u مقطعًا Ù…Ø³Ø¨Ù‚Ù‹Ø§ØªÙØ±Ø¬Ù…ت %u مقطع مسبقًاالترجمة المسبقة من ذاكرة الترجمة...يترجم مسبقًا…التّرجمة مسبقًا تبحث آليًّا عن المطابقات التّامّة أو الغبشة للسّلاسل غير المترجمة، وذلك ÙÙŠ ذاكرة التّرجمة لملء التّرجمات.ØªÙØ¶ÙŠÙ„Ø§ØªØªÙØ¶ÙŠÙ„ات...Ø§Ù„ØªÙ‘ÙØ¶ÙŠÙ„ات…جار٠إعداد Ø§Ù„Ù…Ù‚Ø§Ø·Ø¹â€¦Ø­Ø§ÙØ¸ على تنسيق الملÙّات الموجودةصيغة المعدود السّابقةصيغة المعدود السّابقةنص المصدر السابقتم تعديله سابقاتم تعديله سابقااسم المشروع وإصداره:اسم المشروع:المشروع:ÙØ­Øµ علامات الترقيمنظّÙنظّ٠التّرجمات Ø§Ù„Ù…Ø­Ø°ÙˆÙØ©Ø¥Ù†Ù‡Ø§Ø¡Ùشل قراءة محتوى المل٠مع الخطأ التالي: %sØ§Ù„Ù…Ù„ÙØ§Øª الأخيرةأعدتحديثإعادة تحميل Ø§Ù„Ù…Ù„ÙØ¥Ø¹Ø§Ø¯Ø© تحميل Ø§Ù„Ù…Ù„ÙØ§Ù„متبقّي: %dاستبدلاستبدل ال&كلّاستبدل ال&كلّنصّ الاستبدالاستبدال…ترويسة صيغ المعدود المطلوبة Ù…Ùقودة.صÙّرصÙّر ذاكرة الترجمةتصÙير ذاكرة الترجمة سيحذ٠كلّ التّرجمات المخزّنة منها إلى الأبد. لا عودة عن هذه العمليّة.كش٠ÙÙŠ FinderØ±Ø§Ø¬Ø¹Ø­ÙØ¸Ø­Ùظ &Ø¨Ø§Ø³Ù…â€¦Ø­ÙØ¸ &Ø¨Ø§Ø³Ù…â€¦Ø­ÙØ¸ على أي Ø­Ø§Ù„Ø­ÙØ¸ على أي Ø­Ø§Ù„Ø­ÙØ¸ Ø¨Ø§Ø³Ù…Ø­ÙØ¸ Ø¨Ø§Ø³Ù…â€¦Ø­ÙØ¸ التغييرات Ø­ÙØ¸ الملÙلقطات شاشة:تحديد الك&لتحديد الكلحدد Ù…Ù„ÙØ§Øª TMX لاستيرادهااختر دليلًاحدد مل٠الترجمةاختر Ù…Ù„ÙØ§Øª التّرجمة لاستيرادهاحدد قالب الترجمةاختر لغتك Ø§Ù„Ù…ÙØ¶Ù‘لةاضبط اللغةاضبط اللغةإعدادات…أظهر الشّريط الجانبيّإظهار التدقيق الإملائي والنحويأظهر شريط الحالةإظهار السلسلة ومعر٠ID&إظهار الاستبدالاتإظهار شريط الأدواتعرض التحذيراتأظهر ÙÙŠ المتصÙّحإظهار ÙÙŠ المجلدأظهر الشّريط الجانبيّ أو أخÙهأظهر الشّريط الجانبيّأظهر شريط الحالةإظهار السلسلة ومعر٠ID&عرض التحذيراتالشّريط Ø§Ù„Ø¬Ø§Ù†Ø¨ÙŠÙ‘Ù„ÙØ¬Ø§Ø®Ø±Ø¬Ù„ÙØ¬ØªØ³Ø¬ÙŠÙ„ الدخول إلى %sتسجيل الدخول إلى حساب Ø³Ø­Ø§Ø¨ÙŠÙ„ÙØ¬ إلى «كراودÙن»تسجيل الدخول إلى حساب Ø³Ø­Ø§Ø¨ÙŠØ§Ø®Ø±Ø¬Ø§Ù„Ù…ÙØ±Ø¯Ù†Ø³Ø®/لصق Ø°ÙƒÙŠÙ‘Ø´ÙØ±ÙŽØ· ذكيّةروابط ذكيّةعلامات اقتباس Ø°ÙƒÙŠÙ‘Ø©ÙØ±Ø² حسب &ترتيب Ø§Ù„Ù…Ù„ÙØ§ØªÙرز حسب ال&Ù…ØµØ¯Ø±ÙØ±Ø² حسب ال&ØªØ±Ø¬Ù…Ø©ÙØ±Ø² حسب &ترتيب Ø§Ù„Ù…Ù„ÙØ§ØªÙرز حسب ال&Ù…ØµØ¯Ø±ÙØ±Ø² حسب ال&ترجمةطقم محار٠الكود المصدريّ:ØªÙØ³ØªØ®Ø¯Ù… مستخرجات الكود المصدريّ للبحث عن السّلاسل القابلة للتّرجمة ÙÙŠ ملÙّات الكود المصدريّ واستخراجها ليمكن ترجمتها.الكود المصدريّ غير متوÙّر.لم ÙŠÙØ¹Ø«Ø± على كود المصدرالنصّ المصدرالنّصّ المصدر — %sكلمات المصادر Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘ةمسارات المصادركلمات المصادر Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘ةمسارات المصادرالنّطقتدقيق الإملاء معطّل لأنّ قاموس %s غير مثبّت.الإملاء والنّحوابدأ النّطقأوق٠النّطقالتّرجمات المخزّنة:طول المقطع ÙÙŠ Ø§Ù„Ø£Ø­Ø±ÙØ·ÙˆÙ„ المقطع ÙÙŠ الأحرÙ: الترجمة مصدرالنّص للبحث عنهالاستبدالاتالاقتراحاتالاقتراحات لا تتوÙّر إن لم تضبط لغة التّرجمة ضبطًا صحيحًا. الميزات الأخرى (كصيغ المعدود) قد تتأثّر أيضًا.المكون الغير ضروري “%s†لا يوجد ÙÙŠ النص الأصلي.يدعم كلّ لغات البرمجة التي تتعرّ٠عليها أدوات غنو â€ŒØºÙØªâ€Œâ€ŒØªÙƒØ³Øª (PHPØŒ وسي/سي++ØŒ وسي#ØŒ وبيرل، وبايثون، ÙˆØ¬Ø§ÙØ§ØŒ ÙˆØ¬Ø§ÙØ§Ø³ÙƒØ±Ø¨Øª وغيرها).زامنزامن مع كراودÙنزامن التّرجمة مع «كراودÙن»جار٠المزامنةخطأ ÙÙŠ Ø§Ù„Ù…Ø²Ø§Ù…Ù†Ø©ÙØ´Ù„ت المزامنة مع «كراودÙن».خطأ صياغيّ ÙÙŠ ترويسة صيغ المعدود (â€%s“).ذاكرة الترجمةملÙّات TMXØ®ÙØ° السّلاسل التّرجميّة من قالب POT موجود.اسم Ø§Ù„ÙØ±ÙŠÙ‚ وعنوان البريد الإلكتروني أو عنوان URLاستبدال النّصّلا تحوي TM أيّة سلاسة مشابهة لمحتوى الملÙÙ‘. هي ÙØ¹Ù‘الة Ùقط للتّرجمات شبه الآليّة بعد أن يتعلّم Poedit ÙƒÙØ§ÙŠØ©Ù‹ من الملÙّات التي تترجمها يدويًّا.مل٠TMX تالÙ.التغييرات التي أجرتها التطبيقات الأخرى سو٠تضيع إذا قمت Ø¨Ø§Ù„Ø­ÙØ¸.تعذّر تصري٠الملÙÙ‘ إلى نسق MO Ùلا يمكن استخدامه.يحوي الملÙÙ‘ عناصر مكرّرة وذلك غير مسموح ÙÙŠ ملÙّات PO وسيمنع استخدام الملÙÙ‘. أصلح Poedit المشكلة، ولكن عليك مراجعة ترجمات العناصر المعلّمة Ùƒâ€â€ØªØ­ØªØ§Ø¬ عملًا“ وتصحيحها إن لزم.تعذّر Ø­ÙØ¸ المÙÙ„ÙÙ‘ بطقم المحار٠"%s" كما هو محدّد ÙÙŠ إعدادات الترجمة. Ø­ÙÙÙØ¸ الملÙÙ‘ بترميز UTF-8 بدلًا من ذلك ÙˆØ¹ÙØ¯Ù‘Ù„ الإعداد ÙˆÙقًا لذلك.تم تعديل الملÙ. هل تريد Ø­ÙØ¸ التغييرات؟المل٠بصيغة لم يتعر٠عليها Poedit.ØµÙØ±Ù‘٠الملÙÙ‘ إلى نسق MO لكنّ ربما لن يعمل عملًا صحيحًا.Ø­ÙÙØ¸ الملÙÙ‘ Ø­ÙØ¸Ù‹Ø§ آمنًا ÙˆØµÙØ±Ù‘٠إلى نسق MOØŒ لكنّه قد لا يعمل عملًا صحيحًا.Ø­ÙÙØ¸ الملÙÙ‘ Ø­ÙØ¸Ù‹Ø§ آمنًا، لكن ÙØ´Ù„ تصريÙÙ‡ إلى نسق MO واستخدامه.Ø­ÙÙØ¸ الملÙÙ‘ Ø­ÙØ¸Ù‹Ø§ آمنًا.لا يمكن ÙØªØ­ المل٠"%s".تم تغيير المل٠"%s" بواسطة تطبيق آخر.نصّ المصدر القديم (قبل أن يتغيّر أثناء التحديث) الذي تقابله التّرجمة غير الدّقيقة الحاليّة.أبسط طريقة لملء هذا المل٠بالترجمة هي تحديثه من POT:يجب ألّا تبدأ التّرجمة Ø¨Ù…Ø³Ø§ÙØ©.انتهت التّرجمة Ø¨Ù…Ø³Ø§ÙØ©ØŒ ولكنّ النّصّ المصدر لم ينته٠بها.انتهت التّرجمة بسطر جديد، ولكنّ النّصّ المصدر لم ينته٠بها.تنتهي الترجمة بـ "%s" ØŒ لكن النص المصدر ينتهي بـ "%s".ينقص التّرجمة سطرًا جديدًا ÙÙŠ نهايتها.ينقص التّرجمة Ù…Ø³Ø§ÙØ© ÙÙŠ نهايتها.التّرجمة جاهزة لاستخدامها، ولا توجد مدخلات بحاجة إلى ترجمة.التّرجمة جاهزة لاستخدامها، لكن توجد مدخلة واحدة بحاجة إلى ترجمة.التّرجمة جاهزة لاستخدامها، لكن توجد مدخلتين بحاجة إلى الترجمة.التّرجمة جاهزة لاستخدامها، لكن توجد %d مدخلات بحاجة إلى ترجمة.التّرجمة جاهزة لاستخدامها، لكن توجد %d مدخلة بحاجة إلى ترجمة.التّرجمة جاهزة لاستخدامها، لكن توجد %d مدخلة بحاجة إلى ترجمة.التّرجمة جاهزة لاستخدامها.يجب أن تنتهي التّرجمة بâ€â€%s“.يجب ألّا تنتهي التّرجمة بâ€â€%s“.يجب أن تبدأ التّرجمة كجملة.يجب أن تبدأ التّرجمة بحر٠صغير.بدأت التّرجمة Ø¨Ù…Ø³Ø§ÙØ©ØŒ ولكنّ النّصّ المصدر لم يبدأ بها.عÙلّمت التّرجمات بâ€â€ØªØ­ØªØ§Ø¬ عملًا“، لأنّها قد تكون غير دقيقة. عليك مراجعتها لتصحيحها.ليست هناك ترجمات. هذا غير طبيعيّ.حدثت مشكلة أثناء تنسيق الملÙÙ‘ تنسيقًا جميلًا (لكنّه Ø­ÙÙÙØ¸ Ø­ÙØ¸Ù‹Ø§ صحيحًا).حدثت أخطاء عند تحميل الملÙ. قد تكون بعض البيانات Ù…Ùقودة أو معطوبة نتيجة لذلك.تؤثّر هذه الإعدادات على تنسيق ملÙّات PO الدّاخليّ. عدّلها إن أردت متطلّبات محدّدة كالتّحكّم بالإصدارات.مل٠JSON هذا ليس مل٠ترجمات ولا يمكن تعديله ÙÙŠ Poedit.يحتوي هذا المل٠على إدخالات مع نماذج معدودة، ولكن ليس لديه ترويسة أشكال متعددة.ÙŠÙØ³ØªØ®Ø¯Ù… هذا الأمر لإطلاق المستخرج. ÙŠÙوسّع ‎%o إلى اسم ملÙÙ‘ الخرج، و‎%K إلى قائمة الكلمات Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘ة، و‎%F إلى قائمة ملÙّات الدّخل، و‎%C إلى راية طقم المحار٠(طالع أدناه).Ø¹ÙØ«Ø± على السّلسلة ÙÙŠ ذاكرة ترجمة «محرÙّر Po».Ø³ÙŠÙØ±ÙÙ‚ هذا بسطر الأمر Ùقط إن Ø£ÙØ¹Ø·ÙŠ Ø·Ù‚Ù… المحارÙ. ÙŠÙوسّع ‎%c إلى قيمة طقم المحارÙ.Ø³ÙŠÙØ±ÙÙ‚ هذا بسطر الأمر مرّة لكلّ ملÙÙ‘ دخل. ÙŠÙوسّع ‎%f إلى اسم الملÙÙ‘.Ø³ÙŠÙØ±ÙÙ‚ هذا بسطر الأمر مرّة لكلّ ملÙÙ‘ دخل. ÙŠÙوسّع ‎%K إلى الكلمة Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘Ø©.Ø§Ù„Ù…Ø¬Ù…ÙˆØ¹Ø§Ù„ØªÙ‘Ø­ÙˆÙŠÙ„Ø§ØªØ§Ù„Ù…ÙØªØ±Ø¬ÙŽÙ…Ø©: %d من %d â€(%d %%)التّرجمةلغة التّرجمةذاكرة التّرجمةتحتاج التّرجمة &عملًاخصائص التّرجمةقاعدة بيانات ذاكرة الترجمة ØªØ§Ù„ÙØ©: %s (%d).خطأ ÙÙŠ ذاكرة الترجمة: %s (%d).تحتاج التّرجمة &عملًاخصائص التّرجمةاقتراحات الترجمةالتّرجمة — %sتعذر تحديث الترجمات من رمز المصدر، لأنه لم يتم العثور على رمز ÙÙŠ الموقع المحدد ÙÙŠ خصائص الملÙ.إثنانUTF-8 (مستحسن)تراجعحدث خطأ لا يمكن التّعامل معه: %sÙŠÙÙ†Ùكس (مستحسن)خطأ Crowdin غير معروÙ.غير المترجمةتحديثحدّث الكلّحدّث كلّ الكتالوجات ÙÙŠ المشروعهل تريد تحديث جميع الكتالوجات ÙÙŠ هذا المشروع؟تحديث من مل٠&POT…تحديث من مل٠&POT…تحديث من التعليمات البرمجيةحدّث من POTتحديث من التعليمات البرمجيةتحديث من Ø´ÙØ±Ø© المصدرملخص Ø§Ù„ØªÙ‘Ø­Ø¯ÙŠØ«Ø§Ù„ØªÙ‘Ø­Ø¯ÙŠØ«Ø§ØªÙØ´Ù„ التّحديثتحديث الترجماتيحدّث معلومات Ø§Ù„Ù…Ø³ØªØ®Ø¯Ù…â€¦ÙØ´Ù„ تحميل الترجمات إلى %s.تحميل الترجمات إلى %sâ€¦ÙŠØ±ÙØ¹ التّرجمات…استخدم تعبيرًا مخصّصًااستخدم خطّ قوائم مخصّص:استخدم خطّ حقول النّصوص مخصّص:استخدم قواعد اللغة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠÙ‘ةاستخدم الكلمات Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ‘Ø© هذه (أسماء الدّوال) للتعرّ٠على السلاسل القابلة للتّرجمة ÙÙŠ Ø§Ù„Ù…Ù„ÙØ§Øª المصدريّة:استخدم ذاكرة التّرجمةتحققنتائج Ø§Ù„ÙØ­ØµØ§Ù„نّسخة %sينتظر الاستيثاق…مرحبًا ÙÙŠ Poeditعند التّحديث من المصادركامل الكلمات ÙÙ‚Ø·Ù†Ø§ÙØ°Ø©ÙˆÙ†Ø¯ÙˆØ²Ù‡Ù„ ترغب ÙÙŠ استخدام اللغة الإنجليزية للنص المصدري؟لÙÙ‘ حوللÙÙ‘ عند:Ù…Ù„ÙØ§Øª ترجمة XLIFFنعميمكنك أيضًا استخراج السّلاسل التّرجميّة مباشرةً من الكود المصدريّ:لا يمكنك إسقاط أكثر من مل٠واحد ÙÙŠ Poedit.ليس لديك الصلاحية لقراءة Ù…Ù„ÙØ§Øª التعليمات البرمجية المصدر من الموقع المحدد ÙÙŠ خصائص الملÙ.عليك إعادة تشغيل Poedit لتطبيق التّعديلات.اسمكستÙقد تعديلاتك إن لم ØªØ­ÙØ¸Ù‡Ø§.ÙŠÙØ³ØªØ®Ø¯Ù… اسمك وبريدك الإلكترونيّ Ùقط لضبط ترويسة â€Ø¢Ø®Ø± مترجم“ لملÙّات «غنو ØºÙØªâ€ŒØªÙƒØ³ØªÂ».ØµÙØ±Ù‚رّبتحتاج عملًالا تحذ٠الملÙّات المؤقّتة (للتّنقيح)مثلًا nplurals=2; plural=(n > 1);‎مطابقة غبشة داخل الملÙّانتقل إلى العنصر ÙÙŠ رقم السطر المعينتعامل مع معرّ٠poedit://‎Ctrl+أسÙÙ„EnterشماليمينShift+أعلىaltctrlshiftعنْ %sأخÙ٠«%s»أخÙÙ Ø§Ù„Ø¨Ù‚ÙŠØ©ØªÙØ¶ÙŠÙ„ات...إنهاء %sالخدماتأظهر الكلاحصل على ترجمة سابقة من ذاكرة التّرجمةلغة مجهولةإصدار غير مدعوم (%s)بريدك الإلكترونيالملÙÙ‘ â€%s“ ليس ملÙÙ‘ POT صالح.poedit-3.6.3/locales/hy.po0000644000175100001660000032110515011674363011103 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Armenian\n" "Language: hy_AM\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: hy-AM\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Ô¹Õ¡Ö„ÖÕ¶Õ¥Õ¬ Õ®Õ¡Õ¶Õ¸Ö‚ÖÕ¸Ö‚Õ´Õ¨" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ô±ÕµÕ¬Ö‡Õ½ Õ¹ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ô±ÕµÕ¬Ö‡Õ½ Õ¹ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¸Ö‚Õ´Õ¶Õ¥Ö€Õ« Õ¡Õ´ÖƒÕ¸ÖƒÕ¸Ö‚Õ´" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Õ“Õ¡Õ¯Õ¥Õ¬" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Õ†Õ«Õ·Ö„" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Õ†Õ¸Ö€ Õ¿Õ¸Õ²" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Õ€Õ¡Õ¾Õ¡Ö„Õ¸Ö‚Õ´ Õ§ Õ¡Õ²Õ¢ÕµÕ¸Ö‚Ö€ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨..." #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ¥Õ²Õ¡Õ¾ Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Õ¤Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¾Õ¡Õ® Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¥Õ¶Ö€Õ« Õ¶Õ«Õ·Ö„Õ¨:" #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "%s-Õ¸Ö‚Õ´" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ¨ Õ°Õ¡Õ½Õ¡Õ¶Õ¥Õ¬Õ« Õ¹Õ§" #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¹Õ¥Õ¶ Õ¯Õ¡Ö€Õ¸Õ² Õ©Õ¡Ö€Õ´Õ¡ÖÕ¾Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¡ÕµÕ¬Õ¡Õ£Ö€Õ«Ö, Ö„Õ¡Õ¶Õ« Õ¸Ö€ Õ¡ÕµÕ¶ Õ¹Õ« " "Õ£Õ¿Õ¶Õ¾Õ¥Õ¬ Õ¶Õ«Õ·Ö„Õ« Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´:" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Ô¹Õ¸Ö‚ÕµÕ¬Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ´Õ¥Ö€ÕªÕ¾Õ¡Õ® Õ§" #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Ô´Õ¸Ö‚Ö„ Õ©Õ¸Ö‚ÕµÕ¬Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¹Õ¸Ö‚Õ¥Õ¶Ö„ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ« Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´ Õ°Õ¡Õ¿Õ¯Õ¸Ö€Õ¸Õ·Õ¾Õ¡Õ® Õ¿Õ¥Õ²Õ«Ö " "Õ¯Õ¡Ö€Õ¤Õ¡Õ¬Õ¸Ö‚ Õ¥Õ¬Õ¡Õ¯Õ¥Õ¿Õ¡ÕµÕ«Õ¶ Õ¡ÕµÕ¬Õ¡Õ£Õ«Ö€Õ« Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨:" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "ÔµÕ©Õ¥ Õ¶Õ¡Õ­Õ¯Õ«Õ¶Õ¸Ö‚Õ´ Õ´Õ¥Ö€ÕªÕ¸Ö‚Õ´ Õ¥Ö„ Õ½Õ¿Õ¡ÖÕ¥Õ¬ Õ´Õ¡Õ¿Õ¹Õ¥Õ¬Õ¸Ö‚ Õ±Õ¥Ö€ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨, Õ¡ÕºÕ¡ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ " "Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¥Õ¬ Õ¡ÕµÕ¶ Õ€Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£Õ« Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€ » Ô±Õ¶Õ¾Õ¿Õ¡Õ¶Õ£Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Ö‡ Õ£Õ¡Õ²Õ¿Õ¶Õ«Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ » " "Õ†Õ«Õ·Ö„Õ¥Ö€ Ö‡ ÕºÕ¡Õ¶Õ¡Õ¯Õ¶Õ¥Ö€-Õ¸Ö‚Õ´:" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "ÔµÕ©Õ¥ Õ¶Õ¡Õ­Õ¯Õ«Õ¶Õ¸Ö‚Õ´ Õ´Õ¥Ö€ÕªÕ¸Ö‚Õ´ Õ¥Ö„ Õ½Õ¿Õ¡ÖÕ¥Õ¬ Õ´Õ¡Õ¿Õ¹Õ¥Õ¬Õ¸Ö‚ Õ±Õ¥Ö€ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨, Õ¡ÕºÕ¡ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ " "Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¥Õ¬ Õ¡ÕµÕ¶ Õ€Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£Õ« Õ¶Õ¡Õ­Õ¡ÕºÕ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€ > Ô±Õ¶Õ¾Õ¿Õ¡Õ¶Õ£Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¥Ö‚ " "Ô³Õ¡Õ²Õ¿Õ¶Õ«Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ > Ô³Õ¡Õ²Õ¿Õ«Õ¶Õ«Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ > Õ†Õ«Õ·Ö„ Õ¥Ö‚ ÕºÕ¡Õ¶Õ¡Õ¯Õ¶Õ¥Ö€-Õ¸Ö‚Õ´:" #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "“%s†ֆայլի Õ¢Õ¡ÖÕ¸Ö‚Õ´Õ¨ Õ¹Õ°Õ¡Õ»Õ¸Õ²Õ¾Õ¥ÖÖ‰" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ©Õ¡Ö€Õ´Õ¡ÖÕ¸Ö‚Õ´" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "ÕÕ¡Ö€Õ¢Õ¥Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ±Õ¸Ö‚Õ¬Õ¾Õ¸Ö‚Õ´ են…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Ô±ÕµÕ¬Õ¡Õ¯Õ¥Ö€ÕºÕ¾Õ¡Õ® '%s' Õ£Õ¬Õ­Õ¡Õ£Õ«Ö€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ«Õ·Ö„Õ¥Ö€" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ«Õ·Ö„Õ¥Ö€" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ«Õ·Ö„Õ¥Ö€" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Ö†Õ¡ÕµÕ¬Õ¥Ö€" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Ö†Õ¡ÕµÕ¬Õ¥Ö€" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¢Õ¸Õ¬Õ¸Ö€ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Õ‰Õ°Õ¡Õ»Õ¸Õ²Õ¾Õ¥Ö Poedit-Õ« Õ¯Õ¸Õ²Õ´Õ«Ö Õ¸Ö€Õ¸Õ·Õ¥Õ¬ Ö†Õ¡ÕµÕ¬Õ« Õ±Ö‡Õ¡Õ¹Õ¡ÖƒÕ¨:" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Ô±ÕµÕ½ JSON Ö†Õ¡ÕµÕ¬Õ¨ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Ö†Õ¡ÕµÕ¬ Õ¹Õ§ Ö‡ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Poedit-Õ¸Ö‚Õ´:" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Õ–Õ¡ÕµÕ¬Õ« Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¨Õ¶Õ©Õ¥Ö€ÖÕ¸Ö‚Õ´Õ¨ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö Õ°Õ¥Õ¿Ö‡ÕµÕ¡Õ¬ Õ½Õ­Õ¡Õ¬Õ¸Õ¾. %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "«%s» Õ¶Õ«Õ·Ö„Õ¨ Õ´Õ«Õ¡ÕµÕ¶ Õ¯Õ¡Ö€Õ¤Õ¡Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ Õ§ Õ¥Ö‚ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ¡ÕµÕ¶ ÕºÕ¡Õ°Õ¥Õ¬:\n" "ÕŠÕ¡Õ°Õ¥Ö„ Õ¡ÕµÕ¶ Õ¡ÕµÕ¬ Õ¡Õ¶Õ¸Ö‚Õ¶Õ¸Õ¾:" #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ ÕºÕ¡Õ°Õ¥Õ¬ %s Õ¶Õ«Õ·Ö„Õ¨:" #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Ô·Õ¯Ö€Õ¡Õ¶Õ« Õ°Õ¡Õ¶Õ¸Ö‚ÕµÕ©" #: src/catalog_po.cpp:134 #, 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] "«%2$s» Õ¶Õ«Õ·Ö„Õ« %1$i Õ¿Õ¸Õ²Õ¨ Õ³Õ«Õ·Õ¿ Õ¹Õ§ Õ¢Õ¥Õ¼Õ¶Õ¾Õ¥Õ¬." msgstr[1] "«%2$s» Õ¶Õ«Õ·Ö„Õ« %1$i Õ¿Õ¸Õ²Õ¥Ö€Õ¨ Õ³Õ«Õ·Õ¿ Õ¹Õ¥Õ¶ Õ¢Õ¥Õ¼Õ¶Õ¾Õ¥Õ¬." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "%d Õ¿Õ¸Õ²Õ« '%s' Õ¶Õ«Õ·Ö„Õ¨ Õ¾Õ¶Õ¡Õ½Õ¾Õ¡Õ® Õ§ (Õ¡Õ¶Õ¾Õ¡Õ¾Õ¥Ö€ %s Õ¿Õ¾ÕµÕ¡Õ¬):" #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "ÕŽÕ¶Õ¡Õ½Õ¾Õ¡Õ® PO Õ¶Õ«Õ·Ö„. Õ¥Õ¦Õ¡Õ¯Õ« msgstr Õ±Õ¥Ö‚Õ¨ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ® Õ§ msgid_plural-Õ« Õ°Õ¥Õ¿" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "ÕŽÕ¶Õ¡Õ½Õ¾Õ¡Õ® PO Õ¶Õ«Õ·Ö„. Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« msgstr Õ±Õ¥Ö‚Õ¨ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ® Õ§ Õ¡Õ¼Õ¡Õ¶Ö msgid_plural-Õ«" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Õ‰Õ°Õ¡Õ»Õ¸Õ²Õ¾Õ¥Ö Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Ö†Õ¡ÕµÕ¬Õ¨, Õ°Õ¡Õ¾Õ¡Õ¶Õ¡Õ¢Õ¡Ö€ Õ¡ÕµÕ¶ Õ¾Õ¶Õ¡Õ½Õ¾Õ¡Õ® Õ§:" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "ÕÕ­Õ¡Õ¬Õ Õ¶Õ«Õ·Ö„Õ¨ Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬Õ«Õ½: ÕˆÖ€Õ¸Õ· Õ¿Õ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö€Õ¨, Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ§, Õ¢Õ¡ÖÕ¡Õ¯Õ¡ÕµÕ¸Ö‚Õ´ Õ¥Õ¶ Õ¯Õ¡Õ´ Õ¾Õ¶Õ¡Õ½Õ¾Õ¡Õ® " "Õ¥Õ¶:" #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "Õ†Õ«Õ·Ö„Õ¨ Õ¶Õ¸Ö€Õ´Õ¡Õ¬ Õ±Õ¥Ö‚Õ¡Õ¹Õ¡ÖƒÕ¥Õ¬Õ¸Ö‚ Õ­Õ¶Õ¤Õ«Ö€ (Õ¢Õ¡ÕµÖ Õ¡ÕµÕ¶ Õ°Õ¡Õ»Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ ÕºÕ¡Õ°Õ¾Õ¥Õ¬ Õ§):" #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¥Õ¬ Ö†Õ¡ÕµÕ¬Õ¨ «%s» Õ£Ö€Õ¡Õ¶Õ·Õ¡Õ¶Õ¸Õ¾, Õ¸Ö€ÕºÕ¥Õ½ Õ°Õ¡Õ¿Õ¯Õ¸Ö€Õ¸Õ·Õ¾Õ¡Õ® Õ§ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ " "Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¸Ö‚Õ´:\n" "\n" "Õ“Õ¸Õ­Õ¡Ö€Õ¥Õ¶Õ¨Õ Õ¡ÕµÕ¶ ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¾Õ¥Õ¬ Õ§ UTF-8-Õ¸Õ¾ Ö‡ Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¡Õ¢Õ¡Ö€ Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¨ ÖƒÕ¸ÖƒÕ¸Õ­Õ¾Õ¥Õ¬ " "Õ§:" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Õ†Õ«Õ·Ö„Õ¨ ÕºÕ¡Õ°Õ¥Õ¬Õ¸Ö‚ Õ½Õ­Õ¡Õ¬" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "'%s'-Õ¨ Õ¾Õ¡Õ¾Õ¥Ö€ POT Õ¶Õ«Õ·Ö„ Õ¹Õ§:" #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF Ö†Õ¡ÕµÕ¬Õ« Õ¢Õ¥Õ¼Õ¶Õ´Õ¡Õ¶ Õ¨Õ¶Õ©Õ¡ÖÖ„Õ« Õ­Õ¶Õ¤Õ«Ö€. %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "Õ¹Õ¡Õ»Õ¡Õ¯ÖÕ¾Õ¸Õ² Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯ (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Ô¿Õ¸Õ¿Ö€Õ¾Õ¡Õ® Õ¶Õ·Õ¡Ö€Õ¯Õ¸Ö‚Õ´ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¿Õ¸Õ²Õ¸Ö‚Õ´:" #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Ô¿Õ¡ÕºÕ¡Õ¯ÖÕ¥Õ¬ Poedit-Õ¶ Õ¡Õ»Õ¡Õ¯ÖÕ¾Õ¸Õ² Õ¡Õ´ÕºÕ« Õ¿Õ¥Õ²Õ¡ÕµÕ¶Õ¡ÖÕ´Õ¡Õ¶ Õ°Õ¡Ö€Õ©Õ¡Õ¯Õ¶Õ¥Ö€Õ« Õ°Õ¥Õ¿Õ Õ¤Ö€Õ¡Õ¶ÖÖ„Õ¸Ö‚Õ´ " "Õ¯Õ¡Õ¼Õ¡Õ¾Õ¡Ö€Õ¾Õ¸Õ² Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¡Õ¶Õ¶Õ¯Õ¡Õ¿ Õ°Õ¡Õ´Õ¡ÕªÕ¡Õ´Õ¥ÖÕ¶Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€:" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Ô»Õ¶Õ¹ÕºÕ¥ÕžÕ½ Õ§ Õ¡Õ·Õ­Õ¡Õ¿Õ¸Ö‚Õ´ Õ¡Õ´ÕºÕ« Õ°Õ¡Õ´Õ¡ÕªÕ¡Õ´Õ¥ÖÕ¸Ö‚Õ´Õ¨:" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Õ€Õ¡Õ·Õ«Õ¾" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(Õ´Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¡Õ® Õ¹Õ§)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Ô²Õ¡ÖÕ¥Õ¬ Õ¡Õ´ÕºÕ« Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Ô¿Õ¡Õ¼Õ¡Õ¾Õ¡Ö€Õ¥Õ¬ Õ°Õ¡Õ·Õ«Õ¾Õ¶Õ¥Ö€Õ¨" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Õ†Õ¡Õ­Õ¡Õ£Õ«Õ®Õ" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Ô¼Õ¥Õ¦Õ¸Ö‚Õ¶Õ" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Õ„Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ¡Õ´ÕºÕ« Õ°Õ¡Õ·Õ«Õ¾" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Õ„Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ¡Õ´ÕºÕ« Õ°Õ¡Õ·Õ«Õ¾" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ¡Õ­Õ¡Õ£Õ®Õ¥Ö€ ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¡Õ£Ö€Õ¾Õ¡Õ® Õ¹Õ¥Õ¶ Õ±Õ¥Ö€ Õ°Õ¡Õ·Õ¾Õ¸Ö‚Õ´:" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Õ†Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¸Ö‚Õ´ Õ§ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨..." #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Õ„Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Õ¬ %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Õ€Õ¡Õ´Õ¡ÕªÕ¡Õ´Õ¥ÖÕ¸Ö‚Õ´" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ¾Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¸Ö‚Õ´ %s..." #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ¾Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¸Ö‚Õ´Õ¨ %s Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö:" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Õ€Õ¡Õ´Õ¡ÕªÕ¡Õ´Õ¥ÖÕ´Õ¡Õ¶ Õ½Õ­Õ¡Õ¬" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Crowdin-Õ« Õ¡Õ¶Õ°Õ¡ÕµÕ¿ Õ½Õ­Õ¡Õ¬ " #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Ô»Õ½Õ¯Õ¸Ö€Õ¸Õ·Õ¸Ö‚Õ´ Õ¹Õ¯Õ¡, Õ¯Ö€Õ¯Õ«Õ¶ Õ´Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Ö„:" #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ¶Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¸Ö‚Õ´Õ¨ Õ¡Õ¶Õ»Õ¡Õ¿Õ¡Õ® Õ§ Õ¡ÕµÕ½ Õ¶Õ¡Õ­Õ¡Õ£Õ®Õ« Õ°Õ¡Õ´Õ¡Ö€:" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Õ„Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Õ¬" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Õ„Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Õ¬" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Ô´Õ¸Ö‚Ö€Õ½ Õ£Ö€Õ¾Õ¥Õ¬" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Ô´Õ¸Ö‚Ö€Õ½ Õ£Ö€Õ¾Õ¥Õ¬" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Õ„Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¥Ö€ Crowdin-Õ« Õ´Õ¡Õ½Õ«Õ¶" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "ÕÕºÕ¡Õ½Õ¸Ö‚Õ´ Õ§ Õ«Õ½Õ¯Õ¸Ö€Õ¸Õ·Õ´Õ¡Õ¶..." #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¸Ö‚Õ´ Õ§ Ö…Õ£Õ¿Õ¾Õ¸Õ²Õ« Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨..." #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Õ„Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Õ¬ Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Õ€Õ¡Õ´Õ¡ÕªÕ¡Õ´Õ¥ÖÕ¸Ö‚Õ´Õ¨ Crowdin-Õ« Õ°Õ¥Õ¿ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö:" #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin-Õ« Õ½Õ­Õ¡Õ¬" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ¾Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¸Ö‚Õ´.." #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&ÕŠÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Õ„Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¥Ö€" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Õ•Õ£Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨ Õ¹Õ¥Õ¶ Õ¯Õ¡Ö€Õ¸Õ² Õ¸Ö‚Õ²Õ²Õ¡Õ¯Õ«Õ¸Ö€Õ¥Õ¶ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¾Õ¥Õ¬ Poedit-Õ¸Ö‚Õ´:" #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Õ†Õ«Õ·Ö„Õ¨ Õ¢Õ¡ÖÕ¥Õ¬Õ¸Ö‚ Õ½Õ­Õ¡Õ¬" #: src/edapp.cpp:735 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 Õ¶Õ«Õ·Ö„Õ¨ Õ¯Õ©Õ¡Ö€Õ´Õ¡ÖÕ¾Õ«:" #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "Õ¹Õ»Õ¶Õ»Õ¥Õ¬ ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ¡Õ¾Õ¸Ö€ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨ (Õ¾Ö€Õ«ÕºÕ¡Õ¦Õ¥Ö€Õ®Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "handle a poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "Õ¡Õ¶ÖÕ¶Õ¥Õ¬ Õ´Õ«Õ¸Ö‚ÕµÕ©Õ«Õ Õ¿Õ¸Õ²Õ« Õ¿Ö€Õ¾Õ¡Õ® Õ°Õ¡Õ´Õ¡Ö€Õ¸Õ¾" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ¯ÖÕ¥Õ¬ Poedit-Õ« Õ¨Õ¶Õ©Õ¡ÖÖ„Õ¨:" #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ô±Õ¶Õ°Õ¡ÕµÕ¿ Õ¢Õ¡ÖÕ¡Õ¼Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶. %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Ô¸Õ¶Õ¿Ö€Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ±Õ¥Ö‚Õ¡Õ¶Õ´Õ¸Ö‚Õ·Õ¨" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Ô±Õ¶Õ¾Õ¡Õ¾Õ¥Ö€ Õ¶Õ«Õ·Ö„" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Ô¸Õ¶Õ¿Ö€Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ«Õ·Ö„Õ¨" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit-Õ¨ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ¤ÕµÕ¸Ö‚Ö€Õ«Õ¶ Õ­Õ´Õ¢Õ¡Õ£Õ«Ö€ Õ§:" #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Õ‰Õ¥Ö„ Õ¯Õ¡Ö€Õ¸Õ² Õ£ÖÕ¥Õ¬ Õ´Õ¥Õ¯ Õ¶Õ«Õ·Ö„Õ«Ö Õ¡Õ¾Õ¥Õ¬Õ« Poedit-Õ« ÕºÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶Õ¸Ö‚Õ´:" #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "“%s†նիշքը Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ«Õ·Ö„ Õ¹Õ§:" #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "«%s» Õ¶Õ«Õ·Ö„Õ¨ Õ£Õ¸ÕµÕ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¹Õ¸Ö‚Õ¶Õ«:" #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "ÕˆÖ‚Õ²Õ²Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ½Õ¿Õ¸Ö‚Õ£Õ¸Ö‚Õ´Õ¨ Õ¡Õ¶Õ»Õ¡Õ¿Õ¾Õ¡Õ® Õ§, Ö„Õ¡Õ¶Õ« Õ¸Ö€ Õ¢Õ¡Õ¼Õ¡Ö€Õ¡Õ¶Õ¨ %s-Õ« Õ°Õ¡Õ´Õ¡Ö€ Õ¿Õ¥Õ²Õ¡Õ¤Ö€Õ¾Õ¡Õ® Õ¹Õ§:" #: src/edframe.cpp:871 msgid "Install" msgstr "ÕÕ¥Õ²Õ¡Õ¤Ö€Õ¥Õ¬" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "«%s» Õ¶Õ«Õ·Ö„Õ¨ ÖƒÕ¸Õ­Õ¾Õ¥Õ¬ Õ§ Õ¡ÕµÕ¬ Õ®Ö€Õ¡Õ£Ö€Õ« Õ¯Õ¸Õ²Õ´Õ«Ö:" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Ô¿Ö€Õ¯Õ«Õ¶ Ô²Õ¥Õ¼Õ¶Õ¥Õ¬ Õ†Õ«Õ·Ö„Õ¨" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Õ‘Õ¡Õ¶Õ¯Õ¡Õ¶Õ¸ÕžÖ‚Õ´ Õ¥Ö„ Õ¯Ö€Õ¯Õ«Õ¶ Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Õ¶Õ«Õ·Ö„Õ¨ Õ°Õ«Õ·Õ¡Õ½Õ¡Ö€Ö„Õ«Ö: Ô±ÕµÕ¤ Õ¤Õ¥ÕºÖ„Õ¸Ö‚Õ´ Poedit-Õ¸Ö‚Õ´ " "Õ¹ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¾Õ¡Õ® Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¯Õ¯Õ¸Ö€ÖÕ¶Õ¥Ö„:" #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ô±Õ¶Õ¿Õ¥Õ½Õ¥Õ¬" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Ô¿Ö€Õ¯Õ«Õ¶ Ô²Õ¥Õ¼Õ¶Õ¥Õ¬ Õ†Õ«Õ·Ö„Õ¨" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Õ†Õ«Õ·Ö„Õ¨ ÖƒÕ¸ÖƒÕ¸Õ­Õ¾Õ¥Õ¬ Õ§: ÕŠÕ¡Õ°Õ¥ÕžÕ¬ ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨:" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "ÕŠÕ¡Õ°Õ¥Õ¬ ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "ÔµÕ©Õ¥ Õ¹ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¥Ö„ ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨, Õ¡ÕºÕ¡ Õ¯Õ¯Õ¸Ö€ÖÕ¶Õ¥Ö„ Õ¤Ö€Õ¡Õ¶Ö„:" #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "ÕŠÕ¡Õ°Õ¥Õ¬" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Õ‰&ÕºÕ¡Õ°Õ¥Õ¬" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Õ‰ÕºÕ¡Õ°Õ¥Õ¬" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "ÕŠÕ¡Õ°Õ¥Õ¬Õ¸Ö‚ Õ¤Õ¥ÕºÖ„Õ¸Ö‚Õ´ Õ¡ÕµÕ¬ Õ®Ö€Õ¡Õ£Ö€Õ« Õ¯Õ¸Õ²Õ´Õ«Ö Õ¯Õ¡Õ¿Õ¡Ö€Õ¾Õ¡Õ® ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¯Õ¯Õ¸Ö€ÖÕ¶Õ¥Ö„:" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Õ‰Õ¥Õ²Õ¡Ö€Õ¯Õ¥Õ¬" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Ô±ÕµÕ¤Õ¸Ö‚Õ°Õ¡Õ¶Õ¤Õ¥Ö€Õ±, ÕºÕ¡Õ°Õ¥Õ¬" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Ô±ÕµÕ¤Õ¸Ö‚Õ°Õ¡Õ¶Õ¤Õ¥Ö€Õ±, ÕºÕ¡Õ°Õ¥Õ¬" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "ÕŠÕ¡Õ°Õ¥Õ¬ որպես…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Ô¿Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¥Õ¬ Õ¡Õ¼Õ" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¯Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¾Õ¡Õ® Õ¶Õ«Õ·Ö„Õ¥Ö€" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML Õ¶Õ«Õ·Ö„Õ¥Ö€" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¸Ö‚Õ´Õ¨ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ &POT Õ¶Õ«Õ·Ö„Õ«Ö…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ &POT Õ¶Õ«Õ·Ö„Õ«Ö…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d Õ­Õ¶Õ¤Õ«Ö€ Õ§ Õ°Õ¡ÕµÕ¿Õ¶Õ¡Õ¢Õ¥Ö€Õ¾Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¸Ö‚Õ´:" msgstr[1] "%d Õ­Õ¶Õ¤Õ«Ö€Õ¶Õ¥Ö€ Õ¥Õ¶ Õ°Õ¡ÕµÕ¿Õ¶Õ¡Õ¢Õ¥Ö€Õ¾Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¸Ö‚Õ´:" #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "ÕŽÕ¡Õ¾Õ¥Ö€Õ¡ÖÕ´Õ¡Õ¶ Õ¡Ö€Õ¤ÕµÕ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€" #: src/edframe.cpp:1842 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 "" "ÕÕ­Õ¡Õ¬Õ¶Õ¥Ö€Õ¸Õ¾ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ ÖÕ¡Õ¶Õ¯Õ¸Ö‚Õ´ Õ¶Õ·Õ¾Õ¡Õ® Õ¥Õ¶ Õ¯Õ¡Ö€Õ´Õ«Ö€ Õ£Õ¸Ö‚ÕµÕ¶Õ¸Õ¾: ÕÕ­Õ¡Õ¬Õ« Õ´Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¥Ö€Õ¨ " "Õ¯ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¾Õ¥Õ¶, Õ¥Ö€Õ¢ Õ¨Õ¶Õ¿Ö€Õ¥Ö„ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¨:" #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Õ†Õ«Õ·Ö„Õ¨ Õ¡Õ¶Õ¾Õ¿Õ¡Õ¶Õ£ ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¾Õ¥Õ¬ Õ§:" #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Õ†Õ«Õ·Ö„Õ¨ Õ¡Õ¶Õ¾Õ¿Õ¡Õ¶Õ£ ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¾Õ¥Õ¬ Õ§ Õ¥Ö‚ Õ¯Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¾Õ¥Õ¬ Õ§ MO Õ±Õ¥Ö‚Õ¡Õ¹Õ¡ÖƒÕ«, Õ¢Õ¡ÕµÖ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ§ " "Õ¶Õ¸Ö€Õ´Õ¡Õ¬ Õ¹Õ¡Õ·Õ­Õ¡Õ¿Õ«:" #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Õ†Õ«Õ·Ö„Õ¨ Õ¡Õ¶Õ¾Õ¿Õ¡Õ¶Õ£ ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¾Õ¥Õ¬ Õ§, Õ¢Õ¡ÕµÖ Õ¹Õ« Õ¯Õ¡Ö€Õ¸Õ² Õ¯Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¾Õ¥Õ¬ MO Õ±Õ¥Ö‚Õ¡Õ¹Õ¡ÖƒÕ« Õ¥Ö‚ " "Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¥Õ¬:" #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "Õ†Õ«Õ·Ö„Õ¨ Õ¯Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¾Õ¥Õ¬ Õ§ MO Õ±Õ¥Ö‚Õ¡Õ¹Õ¡ÖƒÕ«, Õ¢Õ¡ÕµÖ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ§ Õ¶Õ¸Ö€Õ´Õ¡Õ¬ Õ¹Õ¡Õ·Õ­Õ¡Õ¿Õ«:" #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Õ†Õ«Õ·Ö„Õ¨ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ¯Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¥Õ¬ MO Õ±Õ¥Ö‚Õ¡Õ¹Õ¡ÖƒÕ« Õ¥Ö‚ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬:" #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ¥Õ¿ Õ¯Õ¡ÕºÕ¾Õ¡Õ® Õ­Õ¶Õ¤Õ«Ö€Õ¶Õ¥Ö€ Õ¹Õ¯Õ¡Õ¶:" #: src/edframe.cpp:1894 #, 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] "" "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¡Õ¿Ö€Õ¡Õ½Õ¿ Õ§ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€, Õ¢Õ¡ÕµÖ %d Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´ Õ¤Õ¥Õ¼ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ® " "Õ¹Õ§:" msgstr[1] "" "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¡Õ¿Ö€Õ¡Õ½Õ¿ Õ§ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€, Õ¢Õ¡ÕµÖ %d Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€ Õ¤Õ¥Õ¼ " "Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ® Õ¹Õ¥Õ¶:" #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¡Õ¿Ö€Õ¡Õ½Õ¿ Õ§:" #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit-Õ¨ Õ«Õ¶Ö„Õ¶Õ¡Õ¢Õ¡Ö€ Õ¸Ö‚Õ²Õ²Õ¥Õ¬ Õ§ Õ½Õ­Õ¡Õ¬ Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ «%s» Õ¶Õ«Õ·Ö„Õ¸Ö‚Õ´:" #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Õ†Õ«Õ·Ö„Õ¨ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ§ Õ¯Ö€Õ¯Õ¶Ö…Ö€Õ«Õ¶Õ¡Õ¯ Õ´Õ«Õ¸Ö‚ÕµÕ©Õ¶Õ¥Ö€, Õ¸Ö€Õ¸Õ¶Ö„ Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¾Õ¡Õ® Õ¹Õ¥Õ¶ PO Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¸Ö‚Õ´ " "Õ¥Ö‚ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Õ¶ Õ¯Õ¡Õ¶Õ­Õ¥Õ¬ Õ¶Õ«Õ·Ö„Õ« Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¸Ö‚Õ´Õ¨: Poedit-Õ¨ Õ¸Ö‚Õ²Õ²Õ¥Õ¬ Õ§ Õ¡ÕµÕ¤ Õ­Õ¶Õ¤Õ«Ö€Õ¨, Õ¢Õ¡ÕµÖ " "Õ¤Õ¸Ö‚Ö„ ÕºÕ¥Õ¿Ö„ Õ§ Õ½Õ¿Õ¸Ö‚Õ£Õ¥Ö„ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨, Õ¸Ö€Õ¸Õ¶Ö„ Õ¶Õ·Õ¾Õ¡Õ® Õ¥Õ¶ Õ¸Ö€ÕºÕ¥Õ½ Õ¸Õ¹ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¥Ö‚ " "Õ¡Õ¶Õ°Ö€Õ¡ÕªÕ¥Õ·Õ¿Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¤Õ¥ÕºÖ„Õ¸Ö‚Õ´ Õ¸Ö‚Õ²Õ²Õ¥Ö„ Õ¤Ö€Õ¡Õ¶Ö„:" #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ Õ¶Õ·Õ¾Õ¡Õ® Õ¹Õ§:" #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Õ†Õ·Õ¥Õ¬ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Õ†Õ·Õ¥Õ¬ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Ô±Õ¼Õ¡Õ»Õ¡Ö€Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ°Õ¡Õ½Õ¡Õ¶Õ¥Õ¬Õ« Õ¹Õ¥Õ¶, Õ¥Õ©Õ¥ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¸Õ² Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ Õ¶Õ¸Ö€Õ´Õ¡Õ¬ Õ¶Õ·Õ¾Õ¡Õ® Õ¹Õ§: Ô±ÕµÕ¬ " "ÕµÕ¸Ö‚Ö€Õ¡Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€, Õ«Õ¶Õ¹ÕºÕ¥Õ½ Ö…Ö€Õ«Õ¶Õ¡Õ¯Õ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€Õ¨, Õ¯Õ¡Ö€Õ¸Õ² Õ¥Õ¶ Õ¡Õ¦Õ¤Õ¾Õ¥Õ¬:" #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ Õ¶Õ¸Ö‚ÕµÕ¶Õ¶ Õ§, Õ«Õ¶Õ¹ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ¨:" #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "ÕˆÖ‚Õ²Õ²Õ¥Õ¬ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "ÕˆÖ‚Õ²Õ²Õ¥Õ¬ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Ô±ÕµÕ½ Õ¶Õ«Õ·Ö„Õ¨ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ©Õ¾Õ¸Õ¾ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€ Õ¸Ö‚Õ¶Õ«, Õ¢Õ¡ÕµÖ Õ¯Õ¡Õ¦Õ´Õ¡Õ±Õ¥Ö‚Õ¾Õ¡Õ® Õ¹Õ§ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ« " "Õ§Õ»Õ¡Õ£Õ¬Õ¸Ö‚Õ­Õ¨:" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Ô±ÕµÕ½ Õ¶Õ«Õ·Ö„Õ¸Ö‚Õ´ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¸Ö‚Õ¶Õ¥Õ¶ Õ¡ÕµÕ¬ Õ±Õ¥Ö‚, Ö„Õ¡Õ¶ Õ¡Õ½Õ¾Õ¡Õ® Õ§ Õ¶Õ«Õ·Ö„Õ« Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€Õ« " "Õ§Õ»Õ¡Õ£Õ¬Õ­Õ¸Ö‚Õ´" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "ÕŠÕ¡Õ°Õ¡Õ¶Õ»Õ¾Õ¸Õ² Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ« Õ£Õ¬Õ­Õ¡Õ£Õ«Ö€Õ¨ Õ¢Õ¡ÖÕ¡Õ¯Õ¡ÕµÕ¸Ö‚Õ´ Õ§" #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Õ‡Õ¡Ö€Õ¡Õ°ÕµÕ¸Ö‚Õ½Õ¡Õ¯Õ¡Õ¶ Õ½Õ­Õ¡Õ¬ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€Õ« Õ£Õ¬Õ­Õ¡Õ£Ö€Õ¸Ö‚Õ´ (\"%s\"):" #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "ÕˆÖ‚Õ²Õ²Õ¥Õ¬ Õ£Õ¬Õ­Õ¡Õ£Õ«Ö€Õ¨" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Õ•Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ® Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€Õ« Õ¡Ö€Õ¿Õ¡Õ°Õ¡ÕµÕ¿Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¡Õ¶Õ½Õ¸Õ¾Õ¸Ö€ Õ¥Õ¶ %s-Õ« Õ°Õ¡Õ´Õ¡Ö€:" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "ÕŽÕ¥Ö€Õ¡Õ¶Õ¡ÕµÕ¥Õ¬" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Ô¿ÖÕ¡Õ¶Õ¯Õ¡Õ¶Õ¡ÕžÖ„ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ¡Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶Õ¨ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ²Õ¢ÕµÕ¸Ö‚Ö€ Õ¿Õ¥Ö„Õ½Õ¿Õ« Õ°Õ¡Õ´Õ¡Ö€:" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Ô±ÕµÕ½ Ö†Õ¡ÕµÕ¬Õ¨ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ« ÖƒÕ¸Õ­Õ¡Ö€Õ¥Õ¶ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¸Ö‚Õ´ Õ§ Õ¿Õ¸Õ²Õ« ID-Õ¶Õ¥Ö€: Poedit-Õ¨ " "Õ¯Õ¡Ö€Õ¸Õ² Õ§ Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Õ¡Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¶Õ¥Ö€Õ¨ “%s†ֆայլիÖ:" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Ô²Õ¥Õ¼Õ¶Õ¥Õ¬ Õ¡Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ® Õ§Õ %d-Õ¨ %d-Õ«Ö (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Õ„Õ¶Õ¸Ö‚Õ´ Õ§Õ %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d Õ½Õ­Õ¡Õ¬" msgstr[1] "%d Õ½Õ­Õ¡Õ¬" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´" msgstr[1] "%d Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr "(Õ¹ÕºÕ¡Õ°Õ¾Õ¡Õ®)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr "(ÖƒÕ¸ÖƒÕ¸Õ­Õ¾Õ¡Õ®)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ¥Õ²Õ¡Õ¾ Õ©Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨. %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "ÕŠÕ¡Õ°Õ¥Õ¬" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Õ„Õ¡Ö„Ö€Õ¥Õ¬ Õ»Õ¶Õ»Õ¾Õ¡Õ® Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Õ€Õ¥Õ¼Õ¡ÖÕ¶Õ¥ÕžÕ¬ Õ¢Õ¸Õ¬Õ¸Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨, Õ¸Ö€Õ¸Õ¶Ö„ Õ¡ÕµÕ¬Õ¥Ö‚Õ½ Õ¹Õ¥Õ¶ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¸Ö‚Õ´:" #: src/edframe.cpp:2879 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 "" "ÔµÕ©Õ¥ Õ·Õ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¥Ö„ Õ´Õ¡Ö„Ö€Õ¥Õ¬, Õ¡ÕºÕ¡ Õ¶Õ·Õ¾Õ¡Õ® Õ¢Õ¸Õ¬Õ¸Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¯Õ»Õ¶Õ»Õ¾Õ¥Õ¶ Õ¡Õ¶Õ¾Õ¥Ö€Õ¡Õ¤Õ¡Ö€Õ±:" #: src/edframe.cpp:2883 msgid "Purge" msgstr "Õ„Õ¡Ö„Ö€Õ¥Õ¬" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "ÕŠÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ«Ö" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "ÕŠÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ«Ö" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Õ„Õ¡Ö„Ö€Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Õ„Õ¡Ö„Ö€Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Ô±ÕµÕ¬Õ¡Õ£Ö€Õ« Õ¤Õ¥ÕºÖ„Õ¥Ö€" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Ô±ÕµÕ¬Õ¡Õ£Ö€Õ« Õ¤Õ¥ÕºÖ„Õ¥Ö€" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Ô¹Õ¡Ö„ÖÕ¶Õ¥Õ¬ Õ¯Õ¸Õ²Õ¡Õ£Õ¸Õ¿Õ«Õ¶" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯Õ¸Õ²Õ¡Õ£Õ¸Õ¿Õ«Õ¶" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Ô¹Õ¡Ö„ÖÕ¶Õ¥Õ¬ ÕŽÕ«Õ³Õ¡Õ¯Õ« Õ£Õ¸Õ¿Õ«Õ¶" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ ÕŽÕ«Õ³Õ¡Õ¯Õ« Õ£Õ¸Õ¿Õ«Õ¶" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "ÕÕ¸Õ²Õ« Õ¥Ö€Õ¯Õ¡Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¶Õ«Õ·Õ¥Ö€Õ¸Õ¾. Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ | Õ¡Õ²Õ¢ÕµÕ¸Ö‚Ö€" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "ÕÕ¸Õ²Õ« Õ¥Ö€Õ¯Õ¡Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¶Õ«Õ·Õ¥Ö€Õ¸Õ¾" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "ÔµÕ¦Õ¡Õ¯Õ«" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Õ€Õ¸Õ£Õ¶Õ¡Õ¯Õ«" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ®" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "ÕŽÕ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¹Õ§" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "ÕŽÕ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¹Õ§" #: src/editing_area.cpp:566 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 Õ¶Õ«Õ·Ö„:" #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¶Õ¸Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Õ†Õ¸Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¡ÕµÕ½ POT Õ¶Õ«Õ·Ö„Õ«Ö:" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Ô±Õ²Õ¢ÕµÕ¸Ö‚Ö€Õ« Õ¿Õ¥Ö„Õ½Õ¿Õ« ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Ô±Õ´Õ¥Õ¶Õ¨" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "%i-Õ«Ö" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "ÕÕ¥Ö‚ %i (Õ¹Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ®)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Ô¶Ö€Õ¸" #: src/editing_area.cpp:788 msgid "One" msgstr "Õ„Õ¥Õ¯" #: src/editing_area.cpp:790 msgid "Two" msgstr "ÔµÖ€Õ¯Õ¸Ö‚" #: src/editing_area.cpp:804 msgid "Other" msgstr "Ô±ÕµÕ¬" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Ô¼Õ¡Ö€Õ« Õ°Õ¡Õ´Õ¡Õ¿Õ¥Ö„Õ½Õ¿Õ %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Ô¼Õ¡Ö€Õ« Õ¶Õ¸Ö‚ÕµÕ¶Õ¡ÖÕ¸Ö‚ÖÕ«Õ¹Õ %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s Õ±Õ¥Ö‚Õ¡Õ¹Õ¡Öƒ" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s Õ±Õ¥Ö‚Õ¡Õ¹Õ¡Öƒ" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ â€” %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ— %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "Õ¡Õ¶Õ°Õ¡ÕµÕ¿ Õ¬Õ¥Õ¦Õ¸Ö‚" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ¥Õ²Õ¡Õ¾ Õ±Õ¸Ö‚Õ¬Õ¥Õ¬ gettext Õ£Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ¨:" #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Ô²Õ¡ÖÕ¥Õ¬ Ô½Õ´Õ¢Õ¡Õ£Ö€Õ«Õ¹Õ¸Õ¾" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Ô²Õ¡ÖÕ¥Õ¬ Ô½Õ´Õ¢Õ¡Õ£Ö€Õ«Õ¹Õ¸Õ¾" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Õ‰Õ¯Õ¡ Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¡ÕµÕ½ Õ¿Õ¸Õ²Õ¥Ö€Õ« Õ¤Õ¥ÕºÖ„Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€ Õ¶Õ«Õ·Ö„Õ¸Ö‚Õ´ Õ¿Ö€Õ¡Õ´Õ¡Õ¤Ö€Õ¾Õ¡Õ® Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ " "Õ¯Õ¸Õ¤Õ¸Ö‚Õ´:" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Õ‰Õ¯Õ¡ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ´Õ¡Õ¶ Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d Õ¯Õ¸Õ¤Õ« Õ¤Õ¥ÕºÖ„" msgstr[1] "%d Õ¯Õ¸Õ¤Õ« Õ¤Õ¥ÕºÖ„Õ¥Ö€" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Õ„Õ¥Õ¯Õ¶Õ¡Ö€Õ¯Õ¡ÕµÕ«Õ¶ Õ¯Õ¸Õ¤Õ¨ Õ¹Õ« Õ£Õ¿Õ¶Õ¾Õ¥Õ¬" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit-Õ¨ Õ¹Õ« Õ¯Õ¡Ö€Õ¸Õ² ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ¨, Õ¸Ö€Õ¿Õ¥Õ² Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ® Õ§ Õ¿Õ¸Õ²Õ¨, Ö„Õ¡Õ¶Õ« " "Õ¸Ö€ Õ¶Õ«Õ·Ö„Õ¨ Õ¯Õ¡Õ´ Õ´Õ¡Õ¿Õ¹Õ¥Õ¬Õ« Õ¹Õ§ Õ°Õ²Õ¾Õ¸Õ² Õ¿Õ¥Õ²Õ¸Ö‚Õ´, Õ¯Õ¡Õ´ Õ¡ÕµÕ¶ Õ¶Õ·Õ¡Õ¶Õ¡ÕµÕ«Õ¶ Õ°Õ²Õ¸Ö‚Õ´ Õ§, Õ¸Ö€Õ¨ Õ¹Õ« " "Õ´Õ¡Õ¿Õ¶Õ¡Õ¶Õ·Õ¸Ö‚Õ´ Õ«Ö€Õ¡Õ¯Õ¡Õ¶ Õ¶Õ«Õ·Ö„Õ«:" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Õ†Õ«Õ·Ö„Õ¨ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ¢Õ¡ÖÕ¥Õ¬" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit-Õ¨ Õ¹Õ¯Õ¡Ö€Õ¸Õ²Õ¡ÖÕ¡Õ¾ Õ¢Õ¡ÖÕ¥Õ¬ “%s†նիշքը:" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Ô³Õ¿Õ¶Õ¥Õ¬" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Õ“Õ¸Õ­Õ¡Ö€Õ«Õ¶Õ¥Õ¬" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Ô¸Õ¶Õ¿Ö€Õ¡Õ¶Ö„Õ¶Õ¥Ö€" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ô±Õ¶Õ¿Õ¥Õ½Õ¥Õ¬ Õ£Ö€Õ¡Õ¶ÖÕ¡Õ¿Õ¥Õ²Õ«Õ¶" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Ô¾Õ¡Õ¬Õ¥Õ¬ Õ·Õ¸Ö‚Ö€Õ»Õ¨" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Õ„Õ«Õ¡ÕµÕ¶ Õ¡Õ´Õ¢Õ¸Õ²Õ» Õ¢Õ¡Õ¼Õ¨" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Ô³Õ¿Õ¶Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¸Ö‚Õ´" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Ô³Õ¿Õ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Ô³Õ¿Õ¶Õ¥Õ¬ Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Õ“Õ¸Õ­Õ¡Ö€Õ«Õ¶Õ¥Õ¬ &Õ¢Õ¸Õ¬Õ¸Ö€Õ¨" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Õ“Õ¸Õ­Õ¡Ö€Õ«Õ¶Õ¥Õ¬ &Õ¢Õ¸Õ¬Õ¸Ö€Õ¨" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Õ“Õ¸Õ­Õ¡Ö€Õ«Õ¶Õ¥Õ¬" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "« &Õ†Õ¡Õ­Õ¸Ö€Õ¤" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Õ€Õ¡Õ»Õ¸Ö€Õ¤ »" #: src/findframe.cpp:235 msgid "String to find" msgstr "Ô»Õ¶Õ¹ ÖƒÕ¶Õ¿Ö€Õ¥Õ¬" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Ô»Õ¶Õ¹Õ¸Õ¾ ÖƒÕ¸Õ­Õ¡Ö€Õ«Õ¶Õ¥Õ¬" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Ô¼Õ¥Õ¦Õ¾Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨ Õ¯Õ¡Õ´ Õ¯Õ¸Õ¤Õ¨" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶Õ" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Ô²Õ¸Õ¬Õ¸Ö€ Õ¿Õ¸Õ²Õ¥Ö€Õ¨" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Ô±Õ¶Õ°Õ¶Õ¡Ö€ Õ§ Õ¶Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Localazy Õ¶Õ¡Õ­Õ¡Õ£Õ®Õ« Õ´Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¥Ö€Õ¨:" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "ÕÕ­Õ¡Õ¬Õ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Localazy Õ¶Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬Õ«Õ½:" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Õ†Õ¡Õ­Õ¡Õ£Õ®Õ¥Ö€" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Ô»Õ´Õ¡Õ¶Õ¡Õ¬ Õ¡Õ¾Õ¥Õ¬Õ«Õ¶ %s-Õ« Õ´Õ¡Õ½Õ«Õ¶" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy-Õ¨ Õ¾Õ¥Ö€Õ«Õ¶ Õ¡Õ½Õ¿Õ«Õ³Õ¡Õ¶ Õ«Õ¶Ö„Õ¶Õ¡Õ·Õ­Õ¡Õ¿ Õ¿Õ¥Õ²Õ¡ÕµÕ¶Õ¡ÖÕ´Õ¡Õ¶ Õ°Õ¡Ö€Õ©Õ¡Õ¯ Õ§, Õ¸Ö€Õ¨ ÖÕ¡Õ¶Õ¯Õ¡ÖÕ¡Õ® Õ¡Õ¶Õ±Õ« " "Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ§ Õ¿Õ¡Õ¬Õ«Õ½ Õ°Õ¥Õ·Õ¿Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬ Õ«Ö€ Õ¡Ö€Õ¿Õ¡Õ¤Ö€Õ¡Õ¶Ö„Õ¨ Ö‡ " "Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¿Õ¡Ö€Õ¢Õ¥Ö€ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶Õ¥Ö€Õ¸Õ¾:" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit-Õ« Ô³Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ« Õ¯Õ¡Õ¼Õ¡Õ¾Õ¡Ö€" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Խմբագրել…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ¸Ö€ Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Õ‹Õ¶Õ»Õ¥Õ¬ Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®Õ¨" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®Õ¨" #: src/manager.cpp:176 msgid "Update all" msgstr "Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€ Õ£Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ¨ Õ¶Õ¡Õ­Õ¡Õ£Õ®Õ¸Ö‚Õ´" #: src/manager.cpp:378 msgid "Total" msgstr "Ô¸Õ¶Õ¤Õ¡Õ´Õ¥Õ¶Õ¨" #: src/manager.cpp:379 msgid "Untrans" msgstr "Õ‰Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ®" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "ÕŽÕ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¹Õ§" #: src/manager.cpp:381 msgid "Errors" msgstr "ÕÕ­Õ¡Õ¬Õ¶Õ¥Ö€" #: src/manager.cpp:382 msgid "Last modified" msgstr "ÕŽÕ¥Ö€Õ»Õ«Õ¶ ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ´Õ¨" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Ô¸Õ¶Õ¿Ö€Õ¥Õ¬ Õ£Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¨" #: src/manager.cpp:433 msgid "Directories:" msgstr "Ô³Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€." #: src/manager.cpp:503 msgid "" msgstr "<Õ¡Õ¶Õ¡Õ¶Õ¸Ö‚Õ¶>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Õ‘Õ¡Õ¶Õ¯Õ¡Õ¶Õ¸ÕžÖ‚Õ´ Õ¥Ö„ Õ»Õ¶Õ»Õ¥Õ¬ “%s†նախագիծը:" #: src/manager.cpp:540 msgid "Delete project" msgstr "Õ‹Õ¶Õ»Õ¥Õ¬ Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®Õ¨" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Ô¾Ö€Õ¡Õ£Õ«Ö€Õ¨ Õ»Õ¶Õ»Õ¥Õ¬Õ¸Õ¾Õ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¸Ö€Õ¥Ö‚Õ§ Õ¶Õ«Õ·Ö„Õ¥Ö€ Õ¹Õ¥Õ¶ Õ»Õ¶Õ»Õ¾Õ«Ö‰" #: src/manager.cpp:571 msgid "Confirmation" msgstr "Õ€Õ¡Õ½Õ¿Õ¡Õ¿Õ¸Ö‚Õ´" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Ô±Ö€Õ¤Õ«Õ¡Õ¯Õ¡Õ¶Õ¡ÖÕ¶Õ¥ÕžÕ¬ Õ¢Õ¸Õ¬Õ¸Ö€ Õ£Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ¨ Õ¡ÕµÕ½ Õ¶Õ¡Õ­Õ¡Õ£Õ®Õ¸Ö‚Õ´Ö‰" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Ô¾Ö€Õ¡Õ£Ö€Õ« Õ¢Õ¸Õ¬Õ¸Ö€ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ« Õ¾Ö€Õ¡ Õ¯Õ¡Õ¿Õ¡Ö€Õ¸Ö‚Õ´ Õ§ Õ¡Ö€Õ¤Õ«Õ¡ÖÕ¸Ö‚Õ´ Õ¡Õ²Õ¢ÕµÕ¸Ö‚Ö€Õ« Õ¡ÕµÕ¬Õ¡Õ£Ö€Õ«Ö:" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ©Õ¡Ö€Õ´Õ¡Öումները…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Ô³Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ« Õ¯Õ¡Õ¼Õ¡Õ¾Õ¡Ö€" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Նախապատվություններ…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Õ€Õ¥Õ¿Õ¡Ö€Õ¯Õ¥Õ¬" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "ÕŽÕ¥Ö€Õ¡Ö€Õ¯Õ¥Õ¬" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "ÕÕ¥Õ²Õ¡Õ¤Ö€Õ¥Õ¬ Õ¥Ö‚ Õ¨Õ½Õ¿ Õ¸Õ³Õ«" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Õ‹Õ¶Õ»Õ¥Õ¬" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "ÕˆÖ‚Õ²Õ²Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¥Ö‚ Ö„Õ¥Ö€Õ¡Õ¯Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¸Ö‚Õ²Õ²Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¥Ö‚ Ö„Õ¥Ö€Õ¡Õ¯Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ¸Ö‚Õ²Õ©Õ¨" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ¸Ö‚Õ²Õ²Õ¡Õ£Ö€Õ¸Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ´Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Õ¬Õ«Õ½" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Ö„Õ¥Ö€Õ¡Õ¯Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ´Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Õ¬Õ«Õ½" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Ô»Õ¶Ö„Õ¶Õ¡Õ¢Õ¡Ö€ Õ¸Ö‚Õ²Õ²Õ¥Õ¬" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Õ“Õ¸Õ­Õ¡Ö€Õ«Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ ÖƒÕ¸Õ­Õ¡Ö€Õ«Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Ô½Õ¥Õ¬Õ¡ÖÕ« ÕºÕ¡Õ¿Õ³Õ¥Õ¶Õ¸Ö‚Õ´/Õ¿Õ¥Õ²Õ¡Õ¤Ö€Õ¸Ö‚Õ´" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Ô½Õ¥Õ¬Õ¡ÖÕ« Õ®Õ¥Õ¬Õ¡Õ¡Õ¹Õ¡Õ¯Õ¥Ö€Õ¿Õ¶Õ¥Ö€" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Ô½Õ¥Õ¬Õ¡ÖÕ« Õ£Õ®Õ¥Ö€" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Ô½Õ¥Õ¬Õ¡ÖÕ« Õ°Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Ô³Ö€Õ¾Õ¡Õ®Ö„Õ« ÖƒÕ¸Õ­Õ¡Ö€Õ«Õ¶Õ¸Ö‚Õ´" #: src/menus.cpp:230 msgid "Transformations" msgstr "Õ“Õ¸Õ­Õ¡Õ¯Õ¥Ö€ÕºÕ¸Ö‚Õ´" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Ô´Õ¡Ö€Õ±Õ¶Õ¥Õ¬ Õ´Õ¥Õ®Õ¡Õ¿Õ¡Õ¼" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Ô´Õ¡Ö€Õ±Õ¶Õ¥Õ¬ ÖƒÕ¸Ö„Ö€Õ¡Õ¿Õ¡Õ¼" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Ô³Õ¬Õ­Õ¡Õ¿Õ¡Õ¼Õ¡ÖÕ¥Õ¬" #: src/menus.cpp:237 msgid "Speech" msgstr "Ô½Õ¸Õ½Ö„" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "ÕÕ¯Õ½Õ¥Õ¬ Õ¡Ö€Õ¿Õ¡Õ½Õ¡Õ¶Õ¥Õ¬" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Ô¸Õ¶Õ¤Õ°Õ¡Õ¿Õ¥Õ¬ Õ¡Ö€Õ¿Õ¡Õ½Õ¡Õ¶Õ¸Ö‚Õ´Õ¨" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&ÕÕ¥Õ½Ö„" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Ô³Õ¸Ö€Õ®Õ«Ö„Õ¡Õ£Õ¸Õ¿Õ«Õ¶" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Ô¿Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ£Õ¸Ö€Õ®Õ«Ö„Õ¡Õ£Õ¸Õ¿Õ«Õ¶..." #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Ô¼Ö€Õ¡Õ§Õ¯Ö€Õ¡Õ¶" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "ÕŠÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶" #: src/menus.cpp:263 msgid "Minimize" msgstr "Õ†Õ¾Õ¡Õ¦Õ¥ÖÕ¶Õ¥Õ¬" #: src/menus.cpp:264 msgid "Zoom" msgstr "Õ‰Õ¡ÖƒÕ¸Ö€Õ¸Õ·Õ¥Õ¬" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Ô²Õ¡Ö€Õ« Õ£Õ¡Õ¬Õ¸Ö‚Õ½Õ¿ Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "ÕŠÕ¡Õ°Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨ Õ¡Õ¼Õ»Õ¥Ö‚Õ¸Ö‚Õ´" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "ÕÕ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Õ²Õ« Õ´Õ¡Õ½Õ«Õ¶" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Ô±Õ¶Õ¸Ö‚Õ¶Õ" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "ÕÕ¥Ö€ Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Ô·Õ¬. ÖƒÕ¸Õ½Õ¿Õ" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "Õ¤Õ¸Ö‚Ö„@Ö…Ö€Õ«Õ¶Õ¡Õ¯.Õ°Õ¡Õµ" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "ÕÕ¥Ö€ Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨ Õ¥Ö‚ Õ§Õ¬. ÖƒÕ¸Õ½Õ¿Õ¨ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¥Õ¬Õ¸Ö‚ Õ¥Õ¶ Õ´Õ«Õ¡ÕµÕ¶ GNU gettext Õ¶Õ«Õ·Ö„Õ¥Ö€Õ« " "Õ£Õ¬Õ­Õ¡Õ£Ö€Õ¥Ö€Õ¸Ö‚Õ´Õ ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬Õ¸Ö‚ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Õ²Õ«Õ¶:" #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "ÕŠÕ¡Õ°Õ¥Õ¬Õ«Õ½ Õ«Õ¶Ö„Õ¶Õ¡Õ¢Õ¡Ö€ Õ¯Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¥Õ¬ MO Õ¶Õ«Õ·Ö„" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ¸Ö‚Õ²Õ²Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Ô´Õ¡Õ·Õ¿Õ¨ Õ´Õ«Õ·Õ¿ Õ¡Õ¯Õ¿Õ«Õ¾ Õ¤Õ¡Ö€Õ±Õ¶Õ¥Õ¬Õ Õ£Ö€Õ¾Õ¡Õ®Ö„ Õ´Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€" #: src/prefsdlg.cpp:211 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 "" "ÔµÖ€Õ¢Õ¥Ö„ Õ¡Õ¯Õ¿Õ«Õ¾ Õ¹Õ« Õ¤Õ¡Ö€Õ±Õ¶Õ« Õ¿Õ¸Õ²Õ¥Ö€Õ¸Õ¾ ÖÕ¡Õ¶Õ¯Õ¥Ö€Õ¨: ÔµÕ©Õ¥ Õ´Õ«Õ¡ÖÕ¾Õ¡Õ® Õ§, Õ¡ÕºÕ¡ ÕºÕ¥Õ¿Ö„ Õ§ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Ö„ " "Õ½Õ¿Õ¥Õ²Õ¶Õ¡Õ·Õ¡Ö€Õ« Ctrl+Õ½Õ¬Õ¡Ö„Õ¶Õ¥Ö€Õ¨, Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¶Õ¡Õ¥Ö‚ Õ´Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Õ¬ Õ¡Õ¶Õ´Õ«Õ»Õ¡ÕºÕ¥Õ½Õ Õ¡Õ¼Õ¡Õ¶Ö Tab-Õ« " "Õ´Õ«Õ»Õ¸ÖÕ¸Õ¾ Õ¡Õ¼Õ¡Õ»Õ¶Õ¡Õ°Õ¥Ö€Õ©Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÖƒÕ¸Õ­Õ¥Õ¬Õ¸Ö‚:" #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "ÕÕ¥Õ½Ö„" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Õ‘Õ¡Õ¶Õ¯Õ« Õ¿Õ¡Õ¼Õ¡Õ¿Õ¥Õ½Õ¡Õ¯Õ¨." #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Ô³Ö€Õ¾Õ¡Õ®Ö„Õ« Õ¿Õ¡Õ¼Õ¡Õ¿Õ¥Õ½Õ¡Õ¯Õ¨." #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Õ“Õ¸Õ­Õ¥Õ¬ OÕ„-Õ« Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ (Õ•Õ£Õ¿Õ¾Õ¸Õ²Õ« Õ„Õ«Õ»Õ¥Ö€Õ¥Õ½)" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¸Ö‚Õ´ Õ§ Windows 8 Õ¯Õ¡Õ´ Õ¡Õ¾Õ¥Õ¬Õ« Õ¶Õ¸Ö€Õ¨)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Ô³Õ¬Õ­Õ¡Õ¾Õ¸Ö€" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Õ•Õ£Õ¿. Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Կառավարել…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ«Ö Õ¡Ö€Õ¤Õ«Õ¡ÖÕ¶Õ¥Õ¬Õ«Õ½" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "Õ¸Õ¹ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶Õ« Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´ Õ¶Õ«Õ·Ö„Õ¸Ö‚Õ´" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "Õ¶Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬ TM-Õ«Ö" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit-Õ¨ Õ¯Õ¡Ö€Õ¸Õ² Õ§ ÖƒÕ¸Ö€Õ±Õ¥Õ¬ Õ¬Ö€Õ¡ÖÕ¶Õ¥Õ¬ Õ¶Õ¸Ö€ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ´Õ«Õ¡ÕµÕ¶ Õ¶Õ¡Õ­Õ¸Ö€Õ¤ " "Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ«Ö Õ¡ÕµÕ½ Õ¶Õ«Õ·Ö„Õ¸Ö‚Õ´ Õ¯Õ¡Õ´ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ±Õ¥Ö€ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ«Ö: TM-Õ« " "Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¸Ö‚Õ´Õ¨ Õ¡Ö€Õ¤ÕµÕ¸Ö‚Õ¶Õ¡Õ¾Õ¥Õ¿ Õ¹Õ« Õ¬Õ«Õ¶Õ«, Õ¥Õ©Õ¥ Õ¡ÕµÕ¶ Õ£Ö€Õ¥Õ©Õ¥ Õ¤Õ¡Õ¿Õ¡Ö€Õ¯ Õ§, Õ¢Õ¡ÕµÖ Õ¯Õ¬Õ¡Õ¾Õ¡Ö€Õ¯Õ¾Õ« " "Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€ Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬Õ¸Ö‚ Õ¨Õ¶Õ©Õ¡ÖÖ„Õ¸Ö‚Õ´:" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "ÕŠÕ¡Õ°Õ¾Õ¡Õ® Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Õ‡Õ¿Õ¥Õ´Õ¡Ö€Õ¡Õ¶Õ« Õ¹Õ¡ÖƒÕ¨Õ" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Õ†Õ¥Ö€Õ´Õ¸Ö‚Õ®Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ ֆայլերը…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Õ†Õ¥Ö€Õ´Õ¸Ö‚Õ®Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ ֆայլերը…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Õ†Õ¥Ö€Õ´Õ¸Ö‚Õ®Õ¥Õ¬ TMX-Õ«Ö…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Õ†Õ¥Ö€Õ´Õ¸Ö‚Õ®Õ¥Õ¬ TMX-Õ«Ö…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Ô±Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ¥Õ¬ TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Ô±Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ¥Õ¬ TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "ÕŽÕ¥Ö€Õ¡Õ¯Õ¡ÕµÕ¥Õ¬" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Ô¸Õ¶Õ¿Ö€Õ¥Ö„ Õ¶Õ¥Ö€Õ´Õ¸Ö‚Õ®Õ¾Õ¸Õ² Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Ô¸Õ¶Õ¿Ö€Õ¥Ö„ TMX Ö†Õ¡ÕµÕ¬Õ¥Ö€Õ¨Õ Õ¶Õ¥Ö€Õ´Õ¸Ö‚Õ®Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX Õ¶Õ«Õ·Ö„Õ¥Ö€" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« ներմուծում…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Ô±Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ¥Õ¬ որպես…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« արտահանում…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¡Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ¸Ö‚Õ´Õ¨ “%s†ձախողվեÖ:" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "ÕŽÕ¥Ö€Õ¡Õ¯Õ¡ÕµÕ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "ÕŽÕ¥Ö€Õ¡Õ¯Õ¡ÕµÕ¥ÕžÕ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¾Õ¥Ö€Õ¡Õ¯Õ¡ÕµÕ¸Ö‚Õ´Õ¨ Õ¡Õ¶Õ¾Õ¥Ö€Õ¡Õ¤Õ¡Ö€Õ± Õ¯Õ»Õ¶Õ»Õ« Õ¢Õ¸Õ¬Õ¸Ö€ " "Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨:" #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "Ô¹Õ€" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ (Ô¹Õ€)" #: src/prefsdlg.cpp:730 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 "" "ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ« Õ¡Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ«Õ¹Õ¶Õ¥Ö€Õ¨ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¸Ö‚Õ´ Õ¥Õ¶ Õ£Õ¿Õ¶Õ¥Õ¬Õ¸Ö‚ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¸Õ² Õ¿Õ¸Õ²Õ¥Ö€ " "Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ« Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¸Ö‚Õ´ Õ¥Ö‚ Õ¤Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¥Õ¬Õ¸Ö‚ Õ¤Ö€Õ¡Õ¶Ö„, Õ¸Ö€ÕºÕ¥Õ½Õ¦Õ« Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¬Õ«Õ¶Õ« " "Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬:" #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Ô¸Õ¶Õ¿Ö€Õ¸Õ¾Õ« Õ¤Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¸Ö‚Õ´." #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Ô¸Õ¶Õ¿Ö€Õ¸Õ¾Õ« Õ¤Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¸Ö‚Õ´." #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Ô±Õ»Õ¡Õ¯ÖÕ¸Ö‚Õ´ Õ§ Õ®Ö€Õ¡Õ£Ö€Õ¡Õ¾Õ¸Ö€Õ´Õ¡Õ¶ Õ¢Õ¸Õ¬Õ¸Ö€ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶Õ¥Ö€Õ¨Õ Õ³Õ¡Õ¶Õ¡Õ¹Õ¾Õ¡Õ® GNU gettext Õ£Õ¸Ö€Õ®Õ«Ö„Õ¶Õ¥Ö€Õ« " "Õ¯Õ¸Õ²Õ´Õ«Ö (PHP, C/C++, C#, Perl, Python, Java, JavaScript Õ¥Ö‚ Õ¡ÕµÕ¬Õ¶):" #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Õ‹Õ¶Õ»Õ¥Õ¬ Õ¡Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ«Õ¹Õ¨" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Õ‹Õ¶Õ»Õ¥ÕžÕ¬ “%s†արտահանիչը:" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Ô±Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ«Õ¹Õ¶Õ¥Ö€" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Õ€Õ¡Õ·Õ«Õ¾Õ¶Õ¥Ö€" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Ô»Õ¶Ö„Õ¶Õ¡Õ¢Õ¡Ö€ Õ½Õ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ©Õ¡Ö€Õ´Õ¡ÖÕ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Õ†Õ¥Ö€Õ¡Õ¼ÕµÕ¡Õ¬ Õ¢Õ¥Õ¿Õ¡ Õ¾Õ¡Ö€Õ¯Õ¡Õ®Õ¨" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Ô²Õ¥Õ¿Õ¡ Õ¾Õ¡Ö€Õ¯Õ¡Õ®Õ¨ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ§ Õ¡Õ´Õ¥Õ¶Õ¡Õ¾Õ¥Ö€Õ»Õ«Õ¶ ÕµÕ¸Ö‚Ö€Õ¡Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¥Ö‚ " "Õ¬Õ¡Õ¾Õ¡Ö€Õ¯Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨, Õ¢Õ¡ÕµÖ Õ¯Õ¡Ö€Õ¸Õ² Õ§ Õ¯Õ¡ÕµÕ¸Ö‚Õ¶ Õ¹Õ¡Õ·Õ­Õ¡Õ¿Õ¥Õ¬:" #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¸Ö‚Õ´Õ¶Õ¥Ö€" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Ô±ÕµÕ½ Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¾Õ¥Ö€Õ¡Õ¢Õ¥Ö€Õ¸Ö‚Õ´ Õ¥Õ¶ PO Ö†Õ¡ÕµÕ¬Õ¥Ö€Õ« Õ¶Õ¥Ö€Ö„Õ«Õ¶ Õ±Ö‡Õ¡Õ¹Õ¡ÖƒÕ´Õ¡Õ¶Õ¨: Õ€Õ¡Ö€Õ´Õ¡Ö€Õ¥ÖÖ€Õ¥Ö„ " "Õ¤Ö€Õ¡Õ¶Ö„, Õ¥Õ©Õ¥ Õ¸Ö‚Õ¶Õ¥Ö„ Õ¸Ö€Õ¸Õ·Õ¡Õ¯Õ« ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¶Õ¥Ö€, Õ«Õ¶Õ¹ÕºÕ¥Õ½ Ö…Ö€Õ«Õ¶Õ¡Õ¯Õ Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯Õ« Õ¯Õ¡Õ¼Õ¡Õ¾Õ¡Ö€Õ¸Ö‚Õ´:" #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "ÕÕ¸Õ²Õ« Õ¡Õ¾Õ¡Ö€Õ¿." #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (Õ­Õ¸Ö€Õ°Õ¸Ö‚Ö€Õ¤ Õ§ Õ¿Ö€Õ¾Õ¸Ö‚Õ´)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "ÕÕ¸Õ²Õ¡Õ¤Õ¡Ö€Õ±Õ¨Õ" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "ÕŠÕ¡Õ°Õ¥Õ¬ Õ¡Õ¼Õ¯Õ¡ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ« Õ±Õ¥Ö‚Õ¡Õ¹Õ¡ÖƒÕ¸Ö‚Õ´Õ¨" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Ô¸Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¾Õ¡Õ®" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "ÕÕ¸Õ²Õ¥Ö€Õ« նախապատրաստում…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ«Ö…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ® %u Õ¿Õ¸Õ²" msgstr[1] "Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ® %u Õ¿Õ¸Õ²Õ¥Ö€" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶..." #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¨ Õ¶Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¥Õ¬ Õ§:" msgstr[1] "%d Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¶Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¥Õ¬ Õ¥Õ¶:" #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¶Õ·Õ¾Õ¥Õ¬ Õ¥Õ¶ Õ¸Ö€ÕºÕ¥Õ½ Õ¸Õ¹ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶, Ö„Õ¡Õ¶Õ« Õ¸Ö€ Õ¤Ö€Õ¡Õ¶Ö„, Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ§, " "Õ³Õ«Õ·Õ¿ Õ¹Õ¥Õ¶: Ô´Õ¸Ö‚Ö„ ÕºÕ¥Õ¿Ö„ Õ§ Õ½Õ¿Õ¸Ö‚Õ£Õ¥Ö„ Õ¤Ö€Õ¡Õ¶Ö„:" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€ Õ¹Õ¯Õ¡Õ¶" #: src/pretranslate.cpp:218 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-Õ¨ Õ½Õ¸Õ¾Õ¸Ö€Õ¸Ö‚Õ´ Õ§ Õ´Õ¥Õ® Ö„Õ¡Õ¶Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ " "Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€, Õ¸Ö€Õ¸Õ¶Ö„ Õ¤Õ¸Ö‚Ö„ Õ±Õ¥Õ¼Ö„Õ¸Õ¾ Õ¥Ö„ Õ¯Õ¡Õ¿Õ¡Ö€Õ¥Õ¬:" #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Ô±Õ¼Õ¡Õ¶Ö Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ« Õ¡Õ¶Õ°Õ¶Õ¡Ö€ Õ§ Õ¶Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬:" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¸Ö‚Õ´ Õ§, Õ¸Ö€ Õ´Õ¡Õ¿Õ¹Õ¥Õ¬Õ« Õ¬Õ«Õ¶Õ« Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨: Ô±ÕµÕ¶ Õ¹Õ« " "Õ¡Õ·Õ­Õ¡Õ¿Õ«, Õ¥Õ©Õ¥ Õ«Ö€Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ« ÖƒÕ¸Õ­Õ¡Ö€Õ¥Õ¶ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¥Õ¶ Õ´Õ«Õ¡ÕµÕ¶ ID-Õ¶Õ¥Ö€:" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ¶Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬ Õ¡Õ¶Õ°Õ¡ÕµÕ¿ Õ¬Õ¥Õ¦Õ¾Õ«Ö:" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¸Ö‚Õ´ Õ§, Õ¸Ö€ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ« Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ Õ°Õ¡ÕµÕ¿Õ¶Õ« Õ¬Õ«Õ¶Õ«: " "Poedit-Õ¨ Õ¹Õ« Õ¯Õ¡Ö€Õ¸Õ²Õ¡Õ¶Õ¸Ö‚Õ´ Õ°Õ¡ÕµÕ¿Õ¶Õ¡Õ¢Õ¥Ö€Õ¥Õ¬ Õ¡ÕµÕ¶ Õ¿Õ¾ÕµÕ¡Õ¬ Ö†Õ¡ÕµÕ¬Õ¸Ö‚Õ´:" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Ô¼ÖÕ¶Õ¥Õ¬ Õ´Õ«Õ¡ÕµÕ¶ Õ³Õ«Õ·Õ¿ Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¸Õ¾" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¤Õ«Ö€ Õ¸Õ¹ Õ³Õ«Õ·Õ¿ Õ¡Ö€Õ¤ÕµÕ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€Õ¨ Õ¶Õ¸Ö‚ÕµÕ¶ÕºÕ¥Õ½ Õ¶Õ¥Ö€Õ¡Õ¼Õ¾Õ¡Õ® Õ¥Õ¶, Õ¢Õ¡ÕµÖ Õ¶Õ·Õ¾Õ¡Õ® Õ¸Ö€ÕºÕ¥Õ½ Õ¸Õ¹ " "Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶: Ô¸Õ¶Õ¿Ö€Õ¥Ö„ Õ¡ÕµÕ½ Õ¨Õ¶Õ¿Ö€Õ¡Õ¶Ö„Õ¨Õ Õ´Õ«Õ¡ÕµÕ¶ Õ³Õ«Õ·Õ¿ Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¶Õ¥Ö€Õ¡Õ¼Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ¶Õ¡Ö€:" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Õ‰Õ¶Õ·Õ¥Õ¬ Õ³Õ«Õ·Õ¿ Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¸Ö€ÕºÕ¥Õ½ Õ¸Õ¹ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Õ„Õ«Õ¡ÖÖ€Õ¥Ö„, Õ¥Õ©Õ¥ Õ´Õ«Õ¡ÕµÕ¶ Õ¾Õ½Õ¿Õ¡Õ°Õ¸Ö‚Õ´ Õ¥Ö„ Õ±Õ¥Ö€ TM-Õ« Õ¸Ö€Õ¡Õ¯Õ«Õ¶: Ô¸Õ½Õ¿ Õ¬Õ¼Õ¥Õ¬ÕµÕ¡ÕµÕ¶Õ«, TM-Õ«Ö Õ¢Õ¸Õ¬Õ¸Ö€ " "Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¯Õ¶Õ·Õ¾Õ¥Õ¶ Õ¸Ö€ÕºÕ¥Õ½ Õ¸Õ¹ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¡Õ·Õ­Õ¡Õ¿Õ¡Õ¶Ö„ Õ¥Ö‚ ÕºÕ¥Õ¿Ö„ Õ§ Õ½Õ¿Õ¸Ö‚Õ£Õ¾Õ¥Õ¶:" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ«Õ¶Ö„Õ¶Õ¡Õ¢Õ¡Ö€ Õ£Õ¿Õ¶Õ¸Ö‚Õ´ Õ§ Õ³Õ«Õ·Õ¿ Õ¯Õ¡Õ´ Õ¸Õ¹ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ " "Õ¹Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ® Õ¿Õ¸Õ²Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¸Ö‚Õ´ Õ¥Ö‚ Õ¬ÖÕ¶Õ¸Ö‚Õ´ Õ§ Õ¤Ö€Õ¡Õ¶Ö " "Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´:" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Չեղարկում…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Ô³ÖÕ¥Õ¬ ÕºÕ¡Õ¶Õ¡Õ¯Õ¶Õ¥Ö€Õ¨ Õ¯Õ¡Õ´ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨ Õ¡ÕµÕ½Õ¿Õ¥Õ²" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Ô³ÖÕ¥Õ¬ ÕºÕ¡Õ¶Õ¡Õ¯Õ¶Õ¥Ö€Õ¨ Õ¯Õ¡Õ´ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨ Õ¡ÕµÕ½Õ¿Õ¥Õ²" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ թղթապանակներ…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ թղթապանակներ…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ նիշքեր…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ նիշքեր…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ դերանշան…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ դերանշան…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Ô²Õ¡ÖÕ¡Õ°Õ¡ÕµÕ¿Õ¥Õ¬ ÕˆÖ€Õ¸Õ¶Õ«Õ¹Õ¸Ö‚Õ´" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ†Õ«Õ·Ö„Õ¡Õ­Õ¸Ö‚ÕµÕ¦Õ¸Ö‚Õ´" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ ÕºÕ¡Õ¶Õ¡Õ¯Õ¸Ö‚Õ´" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "ÕˆÖ‚Õ²Õ«Õ¶Õ¥Ö€" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Ô²Õ¡ÖÕ¡Õ¼Õ¾Õ¡Õ® Õ¸Ö‚Õ²Õ«Õ¶Õ¥Ö€" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Ô´Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¥Õ¬Õ¸Ö‚ Õ¨Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¾Õ¡Õ® Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Ô´Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¥Õ¬ Õ¶Õ·Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ«Õ¹Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€ Õ°Õ¥Õ¿Õ¥Ö‚ÕµÕ¡Õ¬Õ«ÖÕ" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Õ„Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€ Õ¶Õ¡Õ­Õ¡Õ¶Õ®Õ¡Õ¶ÖÕ¸Õ¾Õ" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Ô²Õ¸Õ¬Õ¸Ö€ Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Ô¼Ö€Õ¡ÖÕ¸Ö‚ÖÕ«Õ¹ xgettext Õ¤Ö€Õ¸Õ·Õ¡Õ¯Õ¶Õ¥Ö€." #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Ô¼Ö€Õ¡ÖÕ¸Ö‚ÖÕ«Õ¹ Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ¥Ö€" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ¡Õ­Õ¡Õ£Õ®Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Ô¹Õ«Õ´Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨ Õ¥Ö‚ Õ§Õ¬. ÖƒÕ¸Õ½Õ¿Õ¨ Õ¯Õ¡Õ´ URL-Õ¶" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "Ö…Ö€Õ«Õ¶Õ¡Õ¯Õ nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (Õ­Õ¸Ö€Õ°Õ¸Ö‚Ö€Õ¤ Õ§ Õ¿Ö€Õ¾Õ¸Ö‚Õ´)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "Ô½Õ¶Õ¤Ö€Õ¸Ö‚Õ´ Õ¥Õ¶Ö„ Õ¶Õ¡Õ­ ÕºÕ¡Õ°Õ¥Õ¬ Õ¶Õ«Õ·Ö„Õ¨:" #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "ÕÕ¥Õ²Õ¡ÕºÕ¡Õ°Õ¶Õ¥Ö€Õ« Õ³Õ«Õ·Õ¿ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¸Ö‚Õ´Õ¨" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ´Õ¥Õ» Õ¢Õ¡ÖÕ¡Õ¯Õ¡ÕµÕ¸Ö‚Õ´ Õ§ “%s†տեղապահը:" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Ô¼Ö€Õ¡ÖÕ¸Ö‚ÖÕ«Õ¹ “%s†տեղապահ, Õ¸Ö€Õ¨ Õ¹Õ¯Õ¡ Õ¢Õ¶Ö…Ö€Õ«Õ¶Õ¡Õ¯ Õ¿Õ¥Ö„Õ½Õ¿Õ¸Ö‚Õ´:" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Õ€Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ©Õ¾Õ¸Õ¾ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "ÕˆÕ¹ Õ¢Õ¸Õ¬Õ¸Ö€ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€Õ¶ Õ¥Õ¶ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ®:" #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Ô±Õ¶Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶ Õ´Õ¥Õ®Õ¡/ÖƒÕ¸Ö„Ö€Õ¡Õ¿Õ¡Õ¼" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¥Õ¿Ö„ Õ§ Õ½Õ¯Õ½Õ« Õ¸Ö€ÕºÕ¥Õ½ Õ¶Õ¡Õ­Õ¡Õ¤Õ¡Õ½Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶:" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Õ†Õ¡Õ­Õ¡Õ¤Õ¡Õ½Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¥Õ¿Ö„ Õ§ Õ½Õ¯Õ½Õ¾Õ« ÖƒÕ¸Ö„Ö€Õ¡Õ¿Õ¡Õ¼ Õ£Ö€Õ¡Õ¶Õ·Õ¡Õ¶Õ¸Õ¾:" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Ô±Õ¶Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶ Õ½ÕºÕ«Õ¿Õ¡Õ¯ Õ¿Õ¡Ö€Õ¡Õ®Ö„" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¹Õ« Õ½Õ¯Õ½Õ¾Õ¸Ö‚Õ´ Õ¢Õ¡ÖÕ¡Õ¿Õ¸Õ¾:" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ½Õ¯Õ½Õ¾Õ¸Ö‚Õ´ Õ§ Õ¢Õ¡ÖÕ¡Õ¿Õ¸Õ¾, Õ¢Õ¡ÕµÖ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨Õ Õ¸Õ¹:" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¸Ö‚Õ´ Õ¢Õ¡Ö Õ§ Õ©Õ¸Õ²Õ¶Õ¾Õ¡Õ® Õ¶Õ¸Ö€ Õ¿Õ¸Õ²Õ¨ Õ¾Õ¥Ö€Õ»Õ¸Ö‚Õ´:" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¾Õ¥Ö€Õ»Õ¡Õ¶Õ¸Ö‚Õ´ Õ§ Õ¶Õ¸Ö€ Õ¿Õ¸Õ²Õ¸Õ¾, Õ¢Õ¡ÕµÖ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨Õ Õ¸Õ¹:" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¾Õ¥Ö€Õ»Õ¸Ö‚Õ´ Õ¢Õ¡ÖÕ¡Õ¯Õ¡ÕµÕ¸Ö‚Õ´ Õ§ Õ¢Õ¡ÖÕ¡Õ¿Õ¨:" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¾Õ¥Ö€Õ»Õ¡Õ¶Õ¸Ö‚Õ´ Õ§ Õ¢Õ¡ÖÕ¡Õ¿Õ¸Õ¾, Õ¢Õ¡ÕµÖ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨Õ Õ¸Õ¹:" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Ô¿Õ¥Õ¿Õ¡Õ¤Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ½Õ¿Õ¸Ö‚Õ£Õ¸Ö‚Õ´" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¥Õ¿Ö„ Õ§ Õ¡Õ¾Õ¡Ö€Õ¿Õ¾Õ« «%s»-Õ¸Õ¾:" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¹ÕºÕ¥Õ¿Ö„ Õ§ Õ¡Õ¾Õ¡Ö€Õ¿Õ¾Õ« «%s»-Õ¸Õ¾:" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¾Õ¥Ö€Õ»Õ¡Õ¶Õ¸Ö‚Õ´ Õ§ “%sâ€-Õ¸Õ¾, Õ¢Õ¡ÕµÖ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨ Õ¾Õ¥Ö€Õ»Õ¡Õ¶Õ¸Ö‚Õ´ Õ§ “%sâ€-" "Õ¸Õ¾:" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Õ„Õ¡Ö„Ö€Õ¥Õ¬ ÖÕ¡Õ¶Õ¯Õ¨" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Õ„Õ¡Ö„Ö€Õ¥Õ¬ ÖÕ¡Õ¶Õ¯Õ¨" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Õ„Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶." #: src/resources/comment.xrc:33 msgid "Update" msgstr "Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Õ‹Õ¶Õ»Õ¥Õ¬" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Õ‹Õ¶Õ»Õ¥Õ¬ Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®Õ¨" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Õ†Õ¡Õ­Õ¡Õ£Õ®Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨." #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Ô¸Õ¶Õ¿Ö€Õ¥Õ¬" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Ô³Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¨ Õ°Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ ÖÕ¡Õ¶Õ¯Õ¸Ö‚Õ´" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Ô¼Õ¡Õ¾" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Õ†Õ«Õ·Ö„" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Նոր…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Õ†Õ¸Ö€ &POT/PO Õ¶Õ«Õ·Ö„Õ«Ö…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Õ†Õ¸Ö€ &POT/PO Õ¶Õ«Õ·Ö„Õ«Ö…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Ô²Õ¡Öել…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Ô²Õ¡ÖÕ¥Õ¬ Õ¾Õ¥Ö€Õ»Õ«Õ¶Õ¨" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Ô²Õ¡ÖÕ¥Õ¬ Õ¾Õ¥Ö€Õ»Õ«Õ¶Õ¨" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Ô²Õ¡ÖÕ¥Õ¬ Õ¡Õ´ÕºÕ« Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶..." #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Ô²Õ¡ÖÕ¥Õ¬ Õ¡Õ´ÕºÕ« Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶..." #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Õ„Õ¥Õ¯Õ¶Õ¡Ö€Õ¯Õ¡ÕµÕ«Õ¶ ÕºÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Õ„Õ¥Õ¯Õ¶Õ¡Ö€Õ¯Õ¡ÕµÕ«Õ¶ ÕºÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Ô³Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ« &Õ¯Õ¡Õ¼Õ¡Õ¾Õ¡Ö€" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Ô³Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ« &Õ¯Õ¡Õ¼Õ¡Õ¾Õ¡Ö€" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Õ“Õ¡Õ¯Õ¥Õ¬" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&ÕŠÕ¡Õ°Õ¥Õ¬" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "ÕŠÕ¡Õ°Õ¥Õ¬ &որպես…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "ÕŠÕ¡Õ°Õ¥Õ¬ &որպես…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Ô¿Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¥Õ¬ MO-ի…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ©Õ¡Ö€Õ´Õ¡Öումները…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Կայանքներ…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Õ†Õ¡Õ­Õ¡ÕºÕ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "Õ“&Õ¡Õ¯Õ¥Õ¬" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Õ“Õ¡Õ¯Õ¥Õ¬" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "ÕŠÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ«Õ«Ö" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "ÕŠÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬ Õ¥Õ¦Õ¡Õ¯Õ«Õ«Ö" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ &Õ¹Õ§" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ &Õ¹Õ§" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ &Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ &Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Ô±Õ¼Õ¡Õ»Õ¡Ö€Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Գտնել…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Փոխարինել…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Ô³Õ¿Õ¶Õ¥Õ¬ Õ°Õ¡Õ»Õ¸Ö€Õ¤Õ¨" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Ô³Õ¿Õ¶Õ¥Õ¬ Õ¶Õ¡Õ­Õ¸Ö€Õ¤Õ¨" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Ô³Õ¿Õ¶Õ¥Õ¬ Õ¥Ö‚ փոխարինել…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Ô³Õ¿Õ¶Õ¥Õ¬ Õ°Õ¡Õ»Õ¸Ö€Õ¤Õ¨" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Ô³Õ¿Õ¶Õ¥Õ¬ Õ¶Õ¡Õ­Õ¸Ö€Õ¤Õ¨" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¿Õ¸Õ²Õ« &ID-Õ«Õ¶" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¿Õ¸Õ²Õ« &ID-Õ«Õ¶" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¦Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¦Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ &Õ¶Õ«Õ·Ö„Õ« Õ¯Õ¡Ö€Õ£Õ«" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ &Õ¶Õ«Õ·Ö„Õ« Õ¯Õ¡Ö€Õ£Õ«" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ &Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ«" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ &Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ«" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ &Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ &Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ Õ°Õ¡Õ´Õ¡Õ£Ö€Õ¾Õ¡Õ®Ö„Õ«" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ Õ°Õ¡Õ´Õ¡Õ£Ö€Õ¾Õ¡Õ®Ö„Õ«" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Õ†Õ¡Õ­ Õ½Õ­Õ¡Õ¬Õ¶Õ¥Ö€Õ¸Õ¾ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Õ†Õ¡Õ­ Õ½Õ­Õ¡Õ¬Õ¶Õ¥Ö€Õ¸Õ¾ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Õ†Õ¡Õ­ Õ¹Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ®Õ¶Õ¥Ö€Õ¨" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Õ†Õ¡Õ­ Õ¹Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ®Õ¶Õ¥Ö€Õ¨" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯Õ¸Õ¤Õ« Õ¤Õ¥ÕºÖ„Õ¥Ö€Õ¨" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯Õ¸Õ¤Õ« Õ¤Õ¥ÕºÖ„Õ¥Ö€Õ¨" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯Õ¸Õ²Õ¡Õ£Õ¸Õ¿Õ«Õ¶" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¾Õ«Õ³Õ¡Õ¯Õ« Õ£Õ¸Õ¿Õ«Õ¶" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Ô±Ö€Õ¤Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ«Ö" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Ô±Ö€Õ¤Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ«Ö" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Õ€Õ´ÕªÕ´ Crowdin-Õ« Õ°Õ¥Õ¿" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Õ†Õ¡Õ­Õ¡&թարգմանություն…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&ÕŽÕ¡Õ¾Õ¥Ö€Õ¡ÖÕ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&ÕŽÕ¡Õ¾Õ¥Ö€Õ¡ÖÕ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Õ„Õ¡Ö„Ö€Õ¥Õ¬ Õ»Õ¶Õ»Õ¾Õ¡Õ® Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Õ„Õ¡Ö„Ö€Õ¥Õ¬ Õ»Õ¶Õ»Õ¾Õ¡Õ® Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Հատկություններ…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Ô±Õ¶ÖÕ¶Õ¥Õ¬" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&ÕŠÕ¡Õ¿Ö€Õ¡Õ½Õ¿ Õ§ Õ¥Ö‚ Õ°Õ¡Õ»Õ¸Ö€Õ¤Õ¨" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&ÕŠÕ¡Õ¿Ö€Õ¡Õ½Õ¿ Õ§ Õ¥Ö‚ Õ°Õ¡Õ»Õ¸Ö€Õ¤Õ¨" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Õ†Õ¡Õ­Õ¯Õ«Õ¶Õ¸Ö‚Õ´ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¾Õ¡Õ®" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Õ†Õ¡Õ­Õ¯Õ«Õ¶Õ¸Ö‚Õ´ Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¾Õ¡Õ®" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Õ†Õ¡Õ­Õ¸Ö€Õ¤ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Õ†Õ¡Õ­Õ¸Ö€Õ¤ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Õ€Õ¡Õ»Õ¸Ö€Õ¤ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Õ€Õ¡Õ»Õ¸Ö€Õ¤ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Õ†&Õ¡Õ­Õ¸Ö€Õ¤ Õ¡Õ¶Õ¡Õ¾Õ¡Ö€Õ¿Õ¨" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Õ†&Õ¡Õ­Õ¸Ö€Õ¤ Õ¡Õ¶Õ¡Õ¾Õ¡Ö€Õ¿Õ¨" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Õ€Õ¡Õ»&Õ¸Ö€Õ¤ Õ¡Õ¶Õ¡Õ¾Õ¡Ö€Õ¿Õ¨" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Õ€Õ¡Õ»&Õ¸Ö€Õ¤ Õ¡Õ¶Õ¡Õ¾Õ¡Ö€Õ¿Õ¨" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Õ†Õ¡Õ­Õ¸Ö€Õ¤ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ«Õ¶" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Õ†Õ¡Õ­Õ¸Ö€Õ¤ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ«Õ¶" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Õ€Õ¡Õ»Õ¸Ö€Õ¤ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ«Õ¶" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Õ€Õ¡Õ»Õ¸Ö€Õ¤ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ«Õ¶" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Ô±Õ¼ÖÕ¡Õ¶Ö Ö…Õ£Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Ô±Õ¼ÖÕ¡Õ¶Ö Ö…Õ£Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext-Õ« Õ±Õ¥Õ¼Õ¶Õ¡Ö€Õ¯" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext-Õ« Õ±Õ¥Õ¼Õ¶Õ¡Ö€Õ¯" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "Poedit-Õ« &Õ´Õ¡Õ½Õ«Õ¶" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Ô¾Ö€Õ¡Õ£Ö€Õ« Õ´Õ¡Õ½Õ«Õ¶" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Ô±Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ«Õ¹Õ« Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Ô¸Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ« ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¨Õ Õ¡Õ¼Õ¡Õ¶Õ±Õ¶Õ¡ÖÕ¾Õ¡Õ® Õ¯Õ¥Õ¿-Õ½Õ¿Õ¸Ö€Õ¡Õ¯Õ¥Õ¿Õ¸Õ¾ (Ö…Ö€.Õ *.cpp;*.h)." #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Ô¿Õ¡Õ¶Õ¹." #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¤Õ¸Ö‚Ö€Õ½ Õ°Õ¡Õ¶Õ¥Õ¬Õ¸Ö‚ Õ°Ö€Õ¡Õ´Õ¡Õ¶." #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ô±ÕµÕ½ Õ°Ö€Õ¡Õ´Õ¡Õ¶Õ¨ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¸Ö‚Õ´ Õ§ Õ¢Õ¡ÖÕ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ Õ¡Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ«Õ¹Õ¨:\n" "%o-Õ¨ Õ¯Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¾Õ« Õ¡Ö€Õ¿Õ¡Õ®Õ¾Õ¸Õ² Õ¶Õ«Õ·Ö„Õ« Õ¡Õ¶Õ¾Õ¡Õ¶Õ¨, %K-Õ¨Õ\n" "Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ« ÖÕ¡Õ¶Õ¯Õ«Õ¶, %F-Õ¨Õ Õ¶Õ¥Ö€Õ¡Õ®Õ¾Õ¸Õ² Õ¶Õ«Õ·Ö„Õ¥Ö€Õ« ÖÕ¡Õ¶Õ¯Õ«Õ¶,\n" "%C-Õ¨Õ Õ¯Õ¸Õ¤Õ¡Õ¾Õ¸Ö€Õ´Õ¡Õ¶ Õ¤Ö€Õ¸Õ·Õ¡Õ¯Õ«Õ¶ (Õ¿Õ¥Õ½ Õ½Õ¿Õ¸Ö€Õ¥Ö‚):" #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Õ„Õ«Õ¡Õ¾Õ¸Ö€Õ Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ¥Ö€Õ« ÖÕ¡Õ¶Õ¯Õ¸Ö‚Õ´." #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "ÕÕ¡ Õ¯Õ¯ÖÕ¾Õ« Õ°Ö€Õ¡Õ´Õ¡Õ¶Õ« Õ¿Õ¸Õ²Õ«Õ¶ Õ´Õ¥Õ¯ Õ¡Õ¶Õ£Õ¡Õ´Õ\n" "ÕµÕ¸Ö‚Ö€Õ¡Ö„Õ¡Õ¶Õ¹ÕµÕ¸Ö‚Ö€ Õ½Õ¿Õ¥Õ²Õ¶Õ¡Õ·Õ¡Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€: %k-Õ¨ Õ¯Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¾Õ« Õ½Õ¿Õ¥Õ²Õ¶Õ¡Õ·Õ¡Ö€Õ«Õ¶:" #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Õ„Õ«Õ¡Õ¾Õ¸Ö€Õ¨ Õ¶Õ¥Ö€Õ¡Õ®Õ¾Õ¡Õ® Õ¶Õ«Õ·Ö„Õ¥Ö€Õ« ÖÕ¡Õ¶Õ¯Õ¸Ö‚Õ´ Õ§." #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "ÕÕ¡ Õ¯Õ¯ÖÕ¾Õ« Õ°Ö€Õ¡Õ´Õ¡Õ¶Õ« Õ¿Õ¸Õ²Õ«Õ¶ Õ´Õ¥Õ¯ Õ¡Õ¶Õ£Õ¡Õ´Õ\n" "ÕµÕ¸Ö‚Ö€Õ¡Ö„Õ¡Õ¶Õ¹ÕµÕ¸Ö‚Ö€ Õ½Õ¿Õ¥Õ²Õ¶Õ¡Õ·Õ¡Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€: %f-Õ¨ Õ¯Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¾Õ« Õ¶Õ«Õ·Ö„Õ« Õ¡Õ¶Õ¾Õ¡Õ¶Õ¨:" #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ« Õ£Ö€Õ¡Õ¶Õ·Õ¡Õ¶Õ¨Õ" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "ÕÕ¡ Õ¯Õ¯ÖÕ¾Õ« Õ°Ö€Õ¡Õ´Õ¡Õ¶Õ« Õ¿Õ¸Õ²Õ«Õ¶,\n" "Õ¥Õ©Õ¥ Õ´Õ«Õ¡ÕµÕ¶ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´ Õ§ Õ¿Ö€Õ¾Õ¡Õ®: %c-Õ¨ Õ¯Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¾Õ« Õ¯Õ¸Õ¤Õ¡Õ¾Õ¸Ö€Õ´Õ¡Õ¶ Õ¡Ö€ÕªÕ¥Ö„Õ«Õ¶:" #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Õ†Õ¡Õ­Õ¡Õ£Õ®Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨ Õ¥Ö‚ Õ¿Õ¡Ö€Õ¢Õ¥Õ¡Õ¯Õ¨." #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Ô¼Õ¥Õ¦Õ¾Õ« Õ©Õ«Õ´Õ¨." #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Õ€Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€." #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Õ•Õ£Õ¿. Õ¡ÕµÕ½ Õ¬Õ¥Õ¦Õ¾Õ« Õ®Ö€Õ¡Õ£Ö€Õ¡ÕµÕ«Õ¶ Õ¯Õ¡Õ¶Õ¸Õ¶Õ¶Õ¥Ö€Õ¨" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Õ•Õ£Õ¿. Õ°Õ¡Ö€Õ´Õ¡Ö€Õ¥ÖÕ¾Õ¡Õ® Õ¡Ö€Õ¿Õ¡Õ°Õ¡ÕµÕ¿Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Õ„Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¥Ö€ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€Õ« Õ´Õ¡Õ½Õ«Õ¶" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Ô±ÕµÕ¬Õ¡Õ£Õ«Ö€Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´." #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Ô´Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¥Õ¬Õ¸Ö‚ Õ¨Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¾Õ¡Õ® կարգավորումներ…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Ô´Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¥Õ¬Õ¸Ö‚ Õ¨Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¾Õ¡Õ® կարգավորումներ…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ¶Õ¥Ö€Õ« Õ¸Ö‚Õ²Õ«Õ¶Õ¥Ö€Õ¨" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¸Ö‚Õ²Õ«Õ¶Õ¥Ö€" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Õ€Õ¡Õ¶Õ¥Õ¬ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¶Õ«Õ·Ö„Õ«Ö Õ°Õ¥Õ¿Õ¥Ö‚ÕµÕ¡Õ¬ Õ¿Õ¥Õ²Õ¸Ö‚Õ´Õ" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Õ€Õ«Õ´Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¸Ö‚Õ²Õ«Õ¶." #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ¶Õ¥Ö€Õ« Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ¥Ö€Õ¨" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ« Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ¥Ö€" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Õ•Õ£Õ¿. Õ¡ÕµÕ½ Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ¥Ö€Õ¨ (Õ£Õ¸Ö€Õ®Õ¡Õ¼Õ¸Ö‚ÕµÕ©Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨)Õ Õ³Õ¡Õ¶Õ¡Õ¹Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¸Õ² " "Õ¿Õ¸Õ²Õ¥Ö€Õ¨\n" "Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¶Õ«Õ·Ö„Õ¸Ö‚Õ´." #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Õ†Õ¡Õ¥Ö‚ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Ö„ Õ¬Õ¼Õ¥Õ¬ÕµÕ¡ÕµÕ¶ Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ¥Ö€Õ Õ¡Õ»Õ¡Õ¯ÖÕ¾Õ¸Õ² Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Õ„Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¥Ö€ gettext Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ« Õ´Õ¡Õ½Õ«Õ¶" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Ô²Õ¡ÖÕ¥Õ¬ Õ¶Õ«Õ·Ö„Õ¨" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "ÕŠÕ¡Õ°Õ¥Õ¬ Õ¶Õ«Õ·Ö„Õ¨" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "ÕŽÕ¡Õ¾Õ¥Ö€Õ¡ÖÕ¶Õ¥Õ¬" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ½Õ­Õ¡Õ¬Õ¶Õ¥Ö€Õ¨" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Ô±Ö€Õ¤Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ¡ÕµÕ¬Õ¡Õ£Ö€Õ«Ö" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Ô±Ö€Õ¤Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ¯Õ¸Õ¤Õ«Ö" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Ô±Ö€Õ¤Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ«Ö" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Ô¿Õ¸Õ²Õ¡Õ£Õ¸Õ¿Õ«" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯Õ¡Õ´ Õ©Õ¡Ö„ÖÕ¶Õ¥Õ¬ Õ¯Õ¸Õ²Õ¡Õ£Õ¸Õ¿Õ«Õ¶" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Õ†Õ¡Õ­Õ¸Ö€Õ¤ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Õ€Õ«Õ¶ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨ (Õ´Õ«Õ¶Õ¹Õ¥Ö‚ Õ¡Ö€Õ¤Õ«Õ¡ÖÕ´Õ¡Õ¶ Õ¨Õ¶Õ©Õ¡ÖÖ„Õ¸Ö‚Õ´ Õ¤Ö€Õ¡ ÖƒÕ¸Õ­Õ¾Õ¥Õ¬Õ¨), Õ¸Ö€Õ¨ Õ¡ÕµÕªÕ´ Õ¸Õ¹ " "Õ³Õ«Õ·Õ¿ Õ§:" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Õ†Õ·Õ¸Ö‚Õ´ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Õ²Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Õ„Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Õ‹Õ¶Õ»Õ¥Õ¬ Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ«Ö" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Õ‹Õ¶Õ»Õ¥Õ¬ Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ«Ö" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¡Õ¼Õ¡Õ»Õ¡Ö€Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Õ‰Õ¯Õ¡Õ¶ Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Õ‰Õ¯Õ¡Õ¶ Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Ô±ÕµÕ½ Õ¿Õ¸Õ²Õ¨ Õ£Õ¿Õ¶Õ¾Õ¥Õ¬ Õ§ Poedit-Õ« Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¸Ö‚Õ´:" #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¸Ö‚Õ´ Õ§, Õ¸Ö€ Õ´Õ¡Õ¿Õ¹Õ¥Õ¬Õ« Õ¬Õ«Õ¶Õ« Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨: Ô±ÕµÕ¶ Õ¹Õ« " "Õ¡Õ·Õ­Õ¡Õ¿Õ«, Õ¥Õ©Õ¥ Õ«Ö€Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ« ÖƒÕ¸Õ­Õ¡Ö€Õ¥Õ¶ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¥Õ¶ Õ´Õ«Õ¡ÕµÕ¶ ID-Õ¶Õ¥Ö€:" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¡Õ¼Õ¡Õ»Õ¡Ö€Õ¯Õ¶Õ¥Ö€Õ¨ ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¸Ö‚Õ´ Õ¥Õ¶, Õ¸Ö€ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ« Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ Õ°Õ¡ÕµÕ¿Õ¶Õ« " "Õ¬Õ«Õ¶Õ«: Poedit-Õ¨ Õ¹Õ« Õ¯Õ¡Ö€Õ¸Õ²Õ¡Õ¶Õ¸Ö‚Õ´ Õ°Õ¡ÕµÕ¿Õ¶Õ¡Õ¢Õ¥Ö€Õ¥Õ¬ Õ¡ÕµÕ¶ Õ¿Õ¾ÕµÕ¡Õ¬ Ö†Õ¡ÕµÕ¬Õ¸Ö‚Õ´:" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ¯Õ¡Õ¿Õ¡Ö€Õ¥Õ¬ %s Õ®Ö€Õ¡Õ£Õ«Ö€Õ¨" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX Õ¶Õ«Õ·Ö„Õ¨ Õ¡ÕµÕ¬Õ¡Õ¯Õ¥Ö€ÕºÕ¾Õ¡Õ® Õ§" #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ·Õ¿Õ¥Õ´Õ¡Ö€Õ¡Õ¶Õ¨ Õ¾Õ¶Õ¡Õ½Õ¾Õ¡Õ® Õ§Õ %s (%d):" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ½Õ­Õ¡Õ¬. %s (%d):" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Õ•Õ£Õ¿. Õ¬Õ¼Õ¥Õ¬ÕµÕ¡ÕµÕ¶ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Ô¼Õ¥Õ¦Õ¾Õ« Õ¨Õ¶Õ¿Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Ô¸Õ¶Õ¿Ö€Õ¥Ö„ ÕÕ¥Ö€ Õ¶Õ¡Õ­Õ¨Õ¶Õ¿Ö€Õ¡Õ® Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Ô¿Õ«Ö€Õ¡Õ¼Ö†Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ ÕºÕ¥Õ¿Ö„ Õ§ Õ¾Õ¥Ö€Õ¡Õ£Õ¸Ö€Õ®Õ¡Ö€Õ¯Õ¥Ö„ Poedit-Õ¨" #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ¥Õ²Õ¡Õ¾ Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬ ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ¡Õ¾Õ¸Ö€ Õ£Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯:" #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€ Õ¹Õ¯Õ¡Õ¶: Ô´Õ¡ Õ¶Õ¸Ö€Õ´Õ¡Õ¬ Õ¹Õ§:" #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Õ¾ Õ¡ÕµÕ½ Õ¶Õ«Õ·Ö„Õ¨ Õ¬Ö€Õ¡ÖÕ¶Õ¥Õ¬Õ¸Ö‚ Õ¡Õ´Õ¥Õ¶Õ¡ÕºÕ¡Ö€Õ¦ Õ±Õ¥Ö‚Õ¨ Õ¡ÕµÕ¶ POT Õ¶Õ«Õ·Ö„Õ«Ö " "Õ©Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬Õ¶ Õ§." #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ POT-Õ«Ö" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "ÕŽÕ¥Ö€ÖÕ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¸Õ² Õ¿Õ¸Õ²Õ¥Ö€Õ¨ Õ¡Õ¼Õ¯Õ¡ POT Õ¶Õ´Õ¸Ö‚Õ·Õ«Ö:" #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Ô¿Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¶Õ¡Õ¥Ö‚ Õ°Õ¡Õ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¸Õ² Õ¿Õ¸Õ²Õ¥Ö€Õ¨ Õ¡Õ¶Õ´Õ«Õ»Õ¡Õ¯Õ¡Õ¶Õ¸Ö€Õ¥Õ¶ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¡ÕµÕ¬Õ¡Õ£Ö€Õ«Ö." #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Õ€Õ¡Õ¶Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¡ÕµÕ¬Õ¡Õ£Ö€Õ«Ö" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Ô¿Õ¡Õ¦Õ´Õ¡Õ±Õ¥Ö‚Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ« Õ¤Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¸Ö‚Õ´Õ¨ Õ€Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´:" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "ÕŽÕ¡Ö€Õ¯Õ¡Õ®Õ %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¶Õ¸Ö€Õ¨" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¶Õ¸Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ POT Õ±Õ¥Ö‚Õ¡Õ¶Õ´Õ¸Ö‚Õ·Õ«Ö:" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Ô´Õ«Õ¿Õ¥Õ¬ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Ô²Õ¡ÖÕ¥Õ¬ Õ¥Ö‚ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨:" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬ Õ¡Õ´ÕºÕ« Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Õ€Õ¡Õ´Õ¡Õ£Õ¸Ö€Õ®Õ¡Õ¯ÖÕ¥Õ¬ Õ¡ÕµÕ¬ Õ´Õ¡Ö€Õ¤Õ¯Õ¡Õ¶Ö Õ°Õ¥Õ¿ Õ¡Õ¼ÖÕ¡Õ¶Ö:" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "ÕŽÕ¥Ö€Õ»Õ«Õ¶ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Õ€Õ´ÕªÕ´" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Õ€Õ¡Õ´Õ¡ÕªÕ¡Õ´Õ¥ÖÕ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Crowdin-Õ«Õ¶" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "%s-Õ« Õ´Õ¡Õ½Õ«Õ¶" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s-Õ« Õ¶Õ¡Õ­Õ¡ÕºÕ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "%s-Õ« Õ´Õ¡Õ½Õ«Õ¶" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Ô¾Õ¡Õ¼Õ¡ÕµÕ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Ô¹Õ¡Ö„ÖÕ¶Õ¥Õ¬ %s-Õ¨" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Ô¹Õ¡Ö„ÖÕ¶Õ¥Õ¬ Õ¸Ö‚Ö€Õ«Õ·Õ¶Õ¥Ö€Õ¨" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Õ“Õ¡Õ¯Õ¥Õ¬ %s-Õ¨" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Նախապատվություններ…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Õ†Õ¡Õ­Õ¡ÕºÕ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Õ†Õ¡Õ­Õ¡ÕºÕ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Ô³Õ¸Ö€Õ®Õ¡Õ¤Ö€Õ¥Õ¬" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Ô³Õ¸Ö€Õ®Õ¡Õ¤Ö€Õ¥Õ¬" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Õ€Õ¥Õ¿" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Õ€Õ¥Õ¿" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Õ‰Õ¥Õ²Õ¡Ö€Õ¯Õ¥Õ¬" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Õ„Õ¡Ö„Ö€Õ¥Õ¬" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Õ„Õ¡Ö„Ö€Õ¥Õ¬" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "ÕŠÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Ô¿Õ¿Ö€Õ¥&Õ¬" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Ô¿Õ¿Ö€Õ¥Õ¬" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Õ“Õ¡Õ¯Õ¥Õ¬" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Õ•Õ£Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Õ†Õ¸Ö€" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Õ†Õ¸Ö€" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&ÕˆÕ¹" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "ÕˆÕ¹" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Ô¼Õ¡Õ¾" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Ô²Õ¡Öել…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Ô²Õ¡ÖÕ¥Õ¬..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Ô²Õ¡ÖÕ¥Õ¬..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&ÕÕ¥Õ²Õ¡Õ¤Ö€Õ¥Õ¬" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "ÕÕ¥Õ²Õ¡Õ¤Ö€Õ¥Õ¬" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Õ†Õ¡Õ­Õ¡ÕºÕ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Ô¿Ö€Õ¯Õ¶Õ¡Õ¯Õ¥Õ¬" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&ÕŠÕ¡Õ°Õ¥Õ¬ Õ¸Ö€ÕºÕ¥Õ½" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "ÕŠÕ¡Õ°Õ¥Õ¬ Õ¸Ö€ÕºÕ¥Õ½" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Õ†Õ·Õ¥Õ¬ &Õ¢Õ¸Õ¬Õ¸Ö€Õ¨" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Õ†Õ·Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Õ€Õ¥Õ¿Õ¡Ö€Õ¯Õ¥Õ¬" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Ô±ÕµÕ¸" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ô±ÕµÕ¸" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "ÕÕ¡Õ­" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Ô±Õ»" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/sq.mo0000644000175100001660000017212015011674351011101 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-©Où‘’"’:’DJ’’$¢’$Ç’Mì’E:“w€“ ø“” ”3 ”T”Y”h” q”{” „””—” ”¨”·” Æ” Ò” Ü”æ”ü” ••6•P•Y•_• h•s•†•™••¡•·• Í• וá• é•÷•–"–<–E–e–…––––¥– ¬–¶–Ë–à–ñ– — ——6—V—u—”—¬—Ä—Ë—Ï—í—˜˜ /˜ :˜D˜L˜T˜ [˜i˜{˜‹˜'š˜ ˜Θç˜ù˜ ™'™@™T™m™'|™$¤™'É™ñ™š šE+š9qš«š$¾š"ãš› ››63›9j›%¤›-Ê›ø› œsœ‚œNšœWéœ&A hr´„9žAž(Pž yžDšž6ßžŸ/ŸIŸcŸ|Ÿ šŸ¤Ÿ*ÀŸ'럠%3 Y y  “  ¯ Å × í ô  ÷  ¡1¡ E¡#f¡Š¡‘¡™¡³¡É¡"Ú¡/ý¡-¢5¢µ¢½¢Õ¢ï¢£!£0?£7p£¨£Ä£Ó£-ì£!¤<¤ÐL¤¥$¥?¥Z¥r¥$z¥Ÿ¥&¦¥Í¥&०¦(¦C9¦}¦ ™¦#£¦rǦE:§7€§ ¸§ ħϧAã§%¨)9¨Dc¨!¨¨!ʨì¨ñ¨ ©©(©;©O©a©t© ‰© “©¡©#¨©pÌ©=ªWªŠqª!üª«(8«a«i« p«z«—«°«Æ«Ù«ñ«¬>¬X¬u¬'¬;µ¬tñ¬f­ ~­/ˆ­1¸­>ê­/)®8Y®’®›®±®3Юn¯s¯ x¯†¯›¯¶¯ǯݯ ñ¯ÿ¯°%° 6° D°R°m°v° ’°ž° °°½°ŰÚ°÷°%±;±±>±ð±ŠŽ² ³/%³U³k³‹³¡³Á³0Þ³´,´3´(J´"s´–´ ´´¾´Ô´Ý´å´î´µ µ8!µ(Zµƒµ˜µ «µ·µ¿µ#Óµ)÷µ!¶4¶!P¶%r¶˜¶SŸ¶ó¶?·D·¡V·8ø·1¸O¸3n¸¢¸¾¸Ó¸㸠ü¸1¹9¹@¹U¹ j¹ t¹~¹”¹—ºœº¹ºɺæº&öº»7»Q»T»-m»S›»ï»&¼//¼_¼.|¼+«¼×¼ò¼õ¼±ú¼'¬½Ô½î½(¾.¾E¾ _¾l¾€¾”¾«¾þ̾վ޾澿¿0¿F¿ä¿ì¿ÀEÀVÀ-eÀ“À…¬ÀY2ÁŒÁ”ÁR°ÁÂÂ!ÂD<ÂGÂÀÉÃJŠÄ9ÕÄÅ)Å<ÅGTÅ?œÅÜÅ¢íÅnÆlÿÆ lÇyljǙÇ'³ÇÛÇúÇÈ3ÈHÈ]ÈyÈ‰È’È›È ¯È¹ÈØÈ>ßÈÉ0É 8ÉCÉXÉmÉ}É!‚É!¤ÉÆÉ×É(èÉ ÊÊ4ÊIÊ\Ê)mÊ—Ê"žÊ ÁÊbË tˀˆ˕ˤ˷ËÊË ÓËáËòËEÌ HÌUÌhÌ&|Ì£Ì ¹Ì-ÚÌÍ*'ÍRÍbÍ rÍ }Í‹Í  ÍÁÍÞÍîÍ ÎÎ"Î6Î!GÎiÎ|ΕΥΠ·ÎÄÎÉÎÏÎÔÎèÎþÎÏ%Ï+Ï4ÏMÏhÏ|ϓϲÏÊÏæÏÐÐ9СNÐðÐ Ñ Ñ-Ñ=ÑQÑfÑwÑŒÑÑa¥ÑÒ"Ò7ÒKÒgÒzÒ‘Ò,«ÒØÒ.ïÒ Ó ,Óž6ÓCÕÓ|Ô –Ô¤Ô/ÀÔ ðÔýÔ%Õ,7ÕdÕ gÕAsÕ%µÕÛÕÜïÕ!ÌÖHîÖ>7×v×””Ø5)Ù9_ÙY™ÙlóÙR`Ú³ÚËÚ!ëÚ? Û‚MÛ{ÐÛ)LÜCvÜ8ºÜKóÜ9?Ý.yÝ¡¨Ý'JÞ/rÞ3¢Þ2ÖÞ; ß4Eß|zß,÷ßQ$à;và|²à¦/áYÖá{0âX¬â„ãÇŠã:Rä~är åråòå ûåæç"2ç Uç_çqç‡ççX¯çjèMsè$Áèæèüèéz#éožéê|êœêŸê¸ê*Àê(ëêë,ëFë Wë aëoëŠë)žë7Èë$ì$%ìJìbì}ì•ì³ì ÍìÛì$òì!í09í(jí!“íµíÐíéí- î17îmiî×î õîï ï%ï8ï!Kïmïvï!Žï°ïÈïÐï/Øï ðð1ðJðcðIfðB°ð\óð?Pñ ñ4šñmÏñ=òBò Gò4Qò!†ò¨ò-°ò1Þòó*ó/ó5ó:ó@óEóKóRóUóYó^ó dó nóxó‹ó ›ó §ó ±ó ¾óßóñó ôô-"ô|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Albanian Language: sq_AL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: sq X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (i ndryshuar) (i paruajtur)%d hasje në kod%d hasje në kod %d zë%d zëraU përkthye paraprakisht %d zë.U përkthyen paraprakisht %d zëra.%d gabim%d gabimeNdodhi %d gabim.Ndodhën %d gabime.Ndodhi %d gabim:Ndodhën %d gabime:U pikas %d problem me vargjet burim.U pikasën %d probleme me vargjet burim.U gjet %d problem te përkthimi.U gjetën %d probleme te përkthimi.%i rresht i kartelës “%s†s’u ngarkua saktësisht.%i rreshta të kartelës “%s†s’u ngarkuan saktësisht.Format %sParapëlqime mbi %sFormat %sU importua %s përkthim.U importuan %s përkthime.&Mbi&Mbi Poedit-in&Zbatoje&Mbrapsht&Anuloje&Spastroje&Mbylle&Kopjoje&Fshije&U bë, Tjetri&U bë, tjetri&Përpunoni&Kartelë&Gjeni…Doracaku &GNU gettextDoracaku &GNU gettext&Lëvizje&Grupoji Sipas Kontekstit&Grupoji sipas kontekstit&NdihmëE &reE &re…&Pasuesi >Përkthimi &PasuesPërkthimi &pasues&Jo&OKNdihmë Në &InternetNdihmë në &Internet&Hapni…&Hapni…&Ngjite&Parapëlqime&Parapëlqime…Përkthimi i &MëparshëmPërkthimi i &mëparshëm&Veti…&Spastroji Përkthimet e Fshira&Spastroji përkthimet e fshira&Mbylle&Ribëje&Zëvendësoje&Ruaje&Ruaje si&Shfaq Hasje Në Kod&Shfaq hasje në kodDritare &NisjejeDritare &nisjeje&Përkthim&ZhbëjeSë Pari Zërat e &PapërkthyerSë pari zërat e &papërkthyer&Përditësoje prej Kodi Burim&Përditësoje prej kodi burim&Vleftësoni Përkthime&Vleftësoni përkthime&Parje&Po(Përdor gjuhë parazgjedhje)(pa bërë hyrjen)(lyp Windows 8 ose më të ri)< I &mëparshmiMbi %s-inLlogariLlogariShtojeShtoni KomentShtoni Kartela…Shtoni Dosje…Shtoni ProjektShtoni Shenja të Gjithëpushtetshme…Shto komentShtoni drejtori te listaShtoni kartela…Shtoni dosje…Shtoni projektShtoni shenja të gjithëpushtetshme…Fjalëkyçe shtesëShenja xgettext shtesë:Të mëtejshmeRregullime të Thelluara Përftimesh…Rregullime të thelluara përftimeshRregullime të thelluara përftimesh…Krejt Kartelat e PërkthimitKrejt komentetKrejt vargjetVeç kësaj, përdor fjalëkyçe parazgjedhje për gjuhët e mbuluaraNdryshoje përherë fokusin për te fushë futjeje tekstiNdodhi një gabim.Një zë në listë futje kartelash:Një zë në listë fjalëkyçesh:DukjeZbatojePërkime të përafërt nga TMJeni i sigurt se doni të fshihet përftuesi “%sâ€?Jeni i sigurt se doni të zerohet kujtesa e përkthimeve?Kontrollo vetvetiu për përditësimeGjatë daljes, përpilo vetvetiu kartelën MOMbrapshtShteg bazë:Versionet beta përmbajnë veçoritë dhe përmirësimet më të reja, por mund të jenë më pak të qëndrueshme.Sill Gjithçka PërparaKartelë PO e dëmtuar: vargje mesazhesh në shumës përdorur pa msgid_pluralKartelë PO e dëmtuar: vargje mesazhesh në njëjës përdorur bashkë me msgid_pluralMarkup i dëmtuar në varg përkthimi.ShfletoniShfletoni kartelaSi parazgjedhje, përfshihen edhe përfundime jo të përpikta, por me shenjën se duan punë. Që të përfshihen vetëm përputhje të përpikta, i vini shenjë kësaj mundësie.AnulojePo anulohet…S’krijohet dot drejtori e përkohshme.S’përmbushet dot programi: %sS’mund të bëhet përkthim paraprak prej një gjuhe të panjohur.S’mund të bëhet përkthim paraprak pa tekst burim.Shkronja e parë e madhe&Përgjegjës Katalogësh&Përgjegjës katalogëshPërgjegjës KatalogëshNdryshoni gjuhën për UI-nëShkronja:Kontrolloje Dokumentin TaniKontrollojini Gramatikën Me DrejtshkriminKontrolloji Drejtshkrimin Teksa ShtypetKontrollo për Përditësime…Kontrolloni për gabime te përkthimiKontrollo për përditësime…Kontrolloji drejtshkriminSpastrojeSpastroje MenunëSpastroje PërkthiminSpastroje menunëSpastroje përkthiminMbylleReHasje Në KodHasje në kodBashkëpunoni me persona të tjerë në internet.Po grumbullohen kartela burim…Urdhër për përftim përkthimesh:KomentKoment:Komente të paraprira me:Përpilojeni si MO…Përpiloje te…Kartela Përkthimi të PërpiluaraFormësoni përftim nga kodi burim, te Vetitë.RipohimLidheni Poedit-in me platforma përkthimi në re që mbulon, për njëkohësim të pacen përkthimesh të administruara në to.KopjojeKopjoje Prej NjëjësitKopjoje prej Teksti BurimKopjoje prej njëjësitKopjoje prej teksti burimNdreqe Vetvetiu DrejtshkriminS’u shkakrkuan dot hollësi projekti Localazy.S’u ngarkua dot kartela, ka gjasa të jetë dëmtuar.S’u ruajt dot kartela %s.Krijoni të riKrijoni përkthim të riKrijoni përkthim të ri nga një gjedhe POT.Krijoni projekt të ri përkthimiGabim Crowdin-iCrowdin është një platformë internetore administrii përkthimesh dhe një mjet përkthimesh në bashkëpunim. Ne vetë e përdorim Crowdin-in për përkthimin e Poedit-it në mjaft gjuhë dhe e duam fort.&PrijePërftues të Përshtatur:Përftues të përshtatur:Përshtateni Panelin…PrijeniMadhësi baze të dhënash në disk:FshijeFshije Prej Kujtesës së PërkthimeveFshije përftuesinFshije prej kujtesës së përkthimeveFshije projektinFshije komentinFshije projektinFshirja e projektit s’do të fshijë ndonjë kartelë përkthimi.Po përcaktohet dallimet…Drejtori:Doni të fshihet projekti “%sâ€?Doni të ringarkohet kartela prej disku? Nëse e bëni, përpunimet tuaja të paruajtura në Poedit do të humbin.Doni të hiqen krejt përkthimet që janë identike me tekstin burim?Doni të hiqen krejt përkthimet që s’përdoren më?&Mos e ruajMos e RuajMos e Shfaq SërishPërputhjeve të përpikta mos u vër shenjë si të lypnin punëMos e shfaq sërishPo shkarkohen përkthimet më të reja…Shkarkimi i përkthimeve është i çaktivizuar për këtë projekt.Tërhiqni Këtu Dosje ose KartelaTërhiqni këtu dosje ose kartela&DilE&ksportoje si HTML…PërpunoniPërpunoni &KomentinPërpunoni &komentPërpunoni KomentinPërpunoni komentPërpunoni projektPërpunoni projektinPërpunimPërpunoni…Email:Kaloni Në Gjendjen Sa Krejt EkraniZërat në këtë kartelë kanë forma shumësi të ndryshme nga çka tregohet te fusha Plural-Forms e katalogutSë Pari Zërat me GabimeSë pari zërat me gabimeZë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ë.Gabim gjatë hapjes së kartelësGabim në ruajtje karteleGabim teksa ngarkohej kartelë XLIFF: %sGabim: GabimeGjithçkaPërkim të përpikta nga TMShtigje të përjashtuarEksportoni Në TMX…Eksportojeni si…Eksportojeni si HTML…Eksportoni në TMX…Eksportim si HTMLEksportimi i kujtesës së përkthimeve në “%s†dështoi.Po eksportohen përkthime…Përftoji prej burimeshPërfto shënime për përkthyesin nga:Përfto tekst prej kartelash burim nga drejtoritë vijuese:Po përftohen vargje të përkthyeshëm nga %s kartelë…Po përftohen vargje të përkthyeshëm nga %s kartela…Rregullim i përftuesitPërftuesS’u arrit të komunikohej me procesin Poedit.S’u arrit të përftohen vargje nga kodi burim.S’u arrit të ngarkohej kartela me përkthimet e përftuara.S’u arrit të përziheshin katalogë gettext.S’u arrit të përditësohej kujtesë përkthimesh: %sKartelëKartela s’hapet dotKartela “%s†s’ekziston.Kartela “%s†s’është kartelë përkthimesh.Kartela “%s†është vetëm për lexim dhe s’mund të ruhet. Ju lutemi, ruajeni nën një emër tjetër.GjejGjej PasuesinGjej të MëparshminGjeni dhe Zëvendësoni…Gjej në komenteGjej në tekste burimGjej në përkthimeGjej pasuesinGjej të mëparshminNdreqeni GjuhënNdreqeni gjuhënNdreqni KryetNdreqni kryetKartela Flutter PërkthimiForma %iFormular %i (i papërdorur)GNU gettextTë përgjithshmeKartela HTMLNdihmëFshihe AnështyllënFshihe Shtyllën e GjendjeveFshihe këtë mesazh njoftimiSi funksionon njëkohësimi me renë?IDNëse vazhdoni me spastrimin, krejt përkthimet e shënuara si të fshira do të hiqen përgjithmonë. Do t’ju duhet t’i ripërktheni, nëse shtohen sërish në të ardhmen.Nëse ju është mohuar më herët hyrje te kartelat tuaja, mund ta lejoni që nga Parapëlqime Sistemi > Siguri & Privatësi > Privatësi > Kartela & Dosje.Nëse keni mohuar më parë hyrje te kartelat tuaja, mundeni ta lejoni që nga Rregullime Sistemi > Privatësi & Siguri > Kartela & Dosje.ShpërfilleShpërfille shkrimin me të madhe/me të vogëlImportoni Prej TMX…Importoni Kartela Përkthimi…Importoni prej TMX…Importoni kartela përkthimi…Po importoht nga “%sâ€â€¦Importimi i kujtesës së përkthimeve dështoi.Po importohen përkthimet…Te: %sPërfshi versione betaShkronja të mëdha/të vogla jo njësojHapësira të zbrazëta jo njësojTë dhëna rreth përkthyesitInstalojeKartelë e pavlefshmeThirrje:ProblemProblemeKartela JSON PërkthimiMbajiEmër ose kode gjuheGjuha e përkthimit është e njëjtë me gjuhën burim.S’është caktuar gjuha e përkthimit.Gjuha e përkthimit:Përzgjedhje gjuheEkip gjuhe:Gjuhë:Ndryshuar së fundiMësoni rreth fjalëkyçesh gettextMësoni më tepër rreth formash shumësiMësoni më tepërMësoni më tepër rreth %sMësoni më tepër mbi Crowdin-inMësoni më tepër mbi GNU gettext-inRreshtRreshti %d i kartelës “%s†është i dëmtuar (pa të dhëna %s të vlefshme).Funde rreshtash:Listë zgjatimesh, të ndarë me pikëpresje (p.sh. *.cpp;*.h):Ngarko anglishtenLocalazy është një platformë shumë e automatizuar përkthimesh që i lejon kujtdo të përkthejë produktet dhe lëndën e vet kollaj në gjuhë të shumta.Kartelat MO s’mund të përpunohen drejt e në Poedit.Kaloje në Shkronja të VoglaKaloje në Shkronja të MëdhaKrijoni një përkthim të ri nga kjo kartelë POT.Krye e keqformuar: “%sâ€Administroni llogariAdministroni…Po përzihen dallimet…MinimizojeEmri i projektit për të cilin bëhet përkthimiEmër:Pas&uesi i PambaruarPas&uesi i pambaruarLyp PunëLyp punëGabim rrjeti: %s (%d)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.E reE re prej Kartele &POT/PO…Vargje të RinjE re prej kartele &POT/PO…Vargje të rinjVargje të rinj për t’u përkthyer:Forma Pasuese e ShumësitForma pasuese e shumësitJoS’u Gjetën PërputhjeS’u përkthye dot paraprakisht ndonjë zë.Te kartela s’është dhënë informacion mbi hasjet e këtij vargu te kodi burim.S’u gjetën përputhjeS’u gjetën probleme me përkthimin.Në llogarinë tuaj s’ka projekte përkthimi.S’ka të dhëna përdorimiS’janë përkthyer krejt format e shumësit.Jo i autorizuar, ju lutemi, ribëni hyrjen.Shënime për përkthyesitOKNjëAktivizojeni vetëm nëse besoni në cilësinë e KP-së suaj. Si parazgjedhje, krejt përputhjet prej KP-së shënohen si të turbullta dhe do të duheshin marrë në shqyrtim.Plotëso vetëm përputhjet e përpiktaHapni Përkthim Në Re…Hap Një Nga të RejatHapni dhe përpunoni kartela përkthimi.Hapni përkthim në reHapni përkthim në re…Hap kartelëHape në PërpunuesHape në përpunuesHap një nga të rejatHap kartelë referencëHapni…Hapni…MundësiTjetërI më&parshmi i PambaruarI më&parshmi i pambaruarKartela Përkthimi POGjedhe Përkthimi POTKartelat POT janë thjesht gjedhe dhe s’përmbajnë ndonjë përkthim. Që të bëni një përkthim, krijoni një kartelë të re PO të bazuar te gjedhja.NgjitniNgjite dhe Përputhi StilinShtigjeKryen përditësim që nga kodi burim mbi krejt kartelat te projekti.Leje e mohuar.Në përkthim mungon vendmbajtësja “%sâ€.Saktësi vendmbajtëseshJu lutemi, në vend të kësaj, hapni dhe përpunoni kartelën përgjegjëse PO. Kur ta ruani, do të përditësohet edhe kartela MO.Ju lutemi, së pari ruajeni kartelën. Kjo pjesë s’mund të përpunohet para ruajtjes.ShumësPërkthime formash shumësiShprehja për forma shumësi e përdorur nga kartela është e pazakontë për %s.Forma shumësi:PoeditPoedit - Përgjegjës katalogëshPoedit-i ndreqi vetvetiu lëndë të pavlefshme te kartela “%sâ€.Poedit-i mund të provojë të plotësojë zëra të rinj që nga përkthime të dikurshme vetëm prej kartelës, ose prej krejt kujtesës së përkthimit. Përdorimi i KP-së s’do të jetë kushedi çë i efektshëm, nëse kjo është thuajse e zbrazët, por do të përmirësohet, dora-dorës që shtoni përkthime në të.Poedit-i s’mund të shfaqë kod burim ku është përdorur vargu, ngaqë kartela ose s’gjendet në vendin e treguar, ose është një lidhje simbolike që nuk shpie te një kartelë reale.Poedit është një përpunues përkthimesh i lehtë për t’u përdorur.Poedit-i s’qe në gjendje të hapë kartelën “%sâ€.Përkthe p&araprakisht…Përkthim paraprakPërkthyer paraprakisht%u varg i përkthyer paraprakisht%u vargje të përkthyer paraprakishtPo bëhet përkthim paraprak prej kujtesës së përkthimeve…Parapërkthim…Parapërkthimi gjen në kujtesën e përkthimeve përputhje të sakta ose të përafërta për vargje përkthimesh dhe i plotëson ato në kutizën e përkthimit.Përkthimi paraprak lyp prani të tekstit burim. S’funksionon, nëse përdoren vetëm ID, pa tekstin faktik.Përkthimi paraprak lyp që gjuha e tekstit burim të njihet. Poedit-i s’e pikasi dot në këtë kartelë.ParapëlqimeParapëlqime…Parapëlqime…Po përgatiten vargjet…Ruaje formatimin e kartelave ekzistueseForma e Mëparshme e ShumësitForma e mëparshme e shumësitTeksti burim i dikurshëmPërpunuar Më ParëPërpunuar më parëEmër dhe version projekti:Emër projekti:Projekt:ProjekteKontrolle pikësimiSpastrojiSpastroji përkthimet e fshiraMbylleLeximi i lëndës së kartelës dështoi me gabimin vijues: %sKartela së fundiRibëjeRifreskojeRingarkoje KartelënRingarkoje kartelënTë mbetura: %dHiqiHiq Përkthime Njësoj-Me-BuriminHiq përkthime njësoj-me-buriminVargje të HequrVargje të hequrVargje të hequr (jo më të përdorur):ZëvendësojeZëvendësoji &KrejtZëvendësoji &krejtVarg zëvendësimiZëvendësoni…I mungon krye e domosdoshme Plural-Forms.ZerojeTë zerohet kujtesa e përkthimeveZerimi i kujtesës së përkthimit do të shkaktojë fshirjen, pa prapakthim, të krejt përkthimeve të depozituara në të. Këtë veprim s’mund ta zhbëni.Shfaqe në FinderShqyrtojeniRuajeRuajeni &Si…Ruajeni &si…Ruaje, Sido QoftëRuaje, sido qoftëRuaje siRuajeni si…Ruaji ndryshimetRuaje kartelënPër kartela XCLOC nuk mbulohet ruajtje në një vendndodhje tjetër.Foto ekrani:Përzgjidhe &KrejtPërzgjidheni KrejtPërzgjidhni kartela TMX për importimPërzgjidhni drejtoriPërzgjidhni kartelë përkthimiPërzgjidhni kartela përkthimi për importimPërzgjidhni gjedhe përkthimiPërzgjidhni gjuhën tuaj të parapëlqyerCaktoni GjuhënCaktoni gjuhënRregullimeRregullime…Shfaqe AnështyllënShfaq Drejtshkrim dhe GramatikëShfaqe Shtyllën e GjendjeveShfaq &ID VarguShfaq ZëvendësimeShfaq PanelinShfaq SinjalizimeShfaqe në ExplorerShfaqe në DosjeShfaqni ose fshihni anështyllënShfaq anështyllëShfaq shtyllë gjendjeshShfaq &ID varguShfaq sinjalizimeAnështyllëHyniDilniHyniBëni hyrjen në %sHyni në Llogari RejeHyni në CrowdinHyni në llogari rejeDilniNjëjësKopjim/Ngjitje e MençurVija Ndarëse të MençuraLidhje të MençuraThonjëza të MençuraRenditi sipas Rendi &KartelashRenditi sipas &BurimeshRenditi sipas &PërkthimeshRenditi sipas rendi &kartelashRenditi sipas &burimeshRenditi sipas &përkthimeshShkronja kodi burim: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.Pa kod burim të gatshëm.S’u gjet kod burimTeksti burimID teksti burimTeksti burim — %sFjalëkyçe BurimeshShtigje BurimeshFjalëkyçe burimeshShtigje burimeshE folurKontrolli i drejtshkrimit është i çaktivizuar, ngaqë fjalori për %s s’është i instaluar.Drejtshkrim dhe GramatikëFilloni të FolurënNdalni të FolurënPërkthime të depozituara:Kontekst vargu: %sIdentifikues vargu: %sGjatësi vargu në shenjaGjatësi vargu në shenja: përkthim | burimVarg për t’u gjeturNuk mbulohen projekte Crowdin me bazë vargje.ZëvendësimeSugjerimeS’jepen sugjerime, në rast se gjuha e përkthimi s’është caktuar saktë. Kjo mund të prekë edhe veçori të tjera, format e shumësit, për shembull.Vendmbajtëse e tepërt “%s†që s’gjendet në tekstin burim.Mbulon krejt gjuhët e programimit të pranuara nga mjete GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript, etj).NjëkohësojeNjëkohësoje me Crowdin-inNjëkohësojeni përkthimin me atë në CrowdinNjëkohësimGabim njëkohësimiNjëkohësimi me Crowdin-in dështoi.Gabim sintakse te kryet Plural-Forms ("%s").KPKartela TMXMerri vargjet e përkthyeshëm prej një gjedheje POT ekzistuese.Emër ekipi dhe adresë email ose URLZëvendësim TekstiKP-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 të grumbullojë mjaftueshëm lëndë prej kartelave që përktheni dorazi.Kartela TMX është e keqformuar.Ndryshimet e bëra nga aplikacioni tjetër do të humbin, nëse e ruani.Kartela s’përpilohet dot në formatin MO dhe të përdoret.Kartela përmbante zëra të përsëdytur, çka në kartelat PO s’lejohet dhe mund të pengojë përdorimin e kartelës. Poedit e ndreqi problemin, por do të duhej që të shqyrtonit përkthimet e cilitdo zë të shënuar si i turbullt dhe t’i ndreqni ato, në qoftë e nevojshme.Kartela s’u ruajt dot nën shkronjat “%s†e treguara në rregullime përkthimi. U ruajt nën UTF-8 dhe rregullimi u ndryshua për përputhje.Kartela është ndryshuar. Doni të ruhen ndryshimet?Kartela është në një format jo të njohur nga Poedit.Kartela u përpilua nën formatin MO, por sipas gjasash s’do të funksionojë si duhet.Kartela u ruajt pa cen dhe u përpilua nën formatin MO, por sipas gjasash s’do të funksionojë si duhet.Kartela u ruajt pa cen, por s’përpilohet dot në formatin MO dhe të përdoret.Kartela u ruajt pa cen.Kartela “%s†s’u hap dot.S’u ruajt dot kartela “%sâ€.Kartela “%s†është ndryshuar nga një tjetër aplikacion.Teksti burim i dikurshëm (përpara se të ndryshohej gjatë një përditësimi) të cilit i takon përkthimi tanimë jo i saktë.Rruga më e lehtë për të plotësuar këtë kartelë me vargje për përkthim është të përditësohet prej një POT-i:Përkthimi nuk fillon me një hapësirë.Përkthimi përfundon me një simbol rreshti të ri, por jo burimi.Përkthimi përfundon me një hapësirë, por jo burimi.Përkthimi përfundon me “%sâ€, por teksti burim përfundon me “%sâ€.Përkthimit i mungon një simbol rreshti të ri në fund.Përkthimit i mungon një hapësirë në fund.Përkthimi është gati për përdorim, por %d zë është ende i papërkthyer.Përkthimi është gati për përdorim, por %d zëra janë ende të papërkthyer.Përkthimi është gati për përdorim.Përkthimi duhet të mbarojë me një “%sâ€.Përkthimi s’duhet të mbarojë me një “%sâ€.Përkthimi duhet të fillojë me një togfjalësh.Përkthimi duhet të fillojë me një shkronjë të vogël.Përkthimi fillon me një hapësirë, por jo burimi.Përkthimet janë shënuar si të turbullta, ngaqë mund të jenë të pasakta. Do të duhej t’u kontrollonit saktësinë.S’ka përkthime. Kjo është e pazakontë.Pati një problem me formatimin si duhet të kartelës (por u ruajt në rregull).Pati një gabim, teksa ngarkoheshin përkthime te Localazy.Pati gabime gjatë ngarkimit të kartelës. Për pasojë, disa nga të dhënat mund të kenë humbur ose të jenë dëmtuar.Këto rregullime prekin formatim të brendshëm të kartelave PO. Prekini nëse keni domosdoshmëri specifike, për shembull, për shkak sistemi kontrolli versionesh.Kjo kartelë JSON s’është kartelë përkthimi dhe s’mund të përpunohet me Poedit.Ky veprim do të heqë çfarëdo përkthimesh që përputhen saktësisht me tekstin burim. Ky veprim s’mund të zhbëhet.Kjo kartelë ka zëra me forma shumësi, por s’ka të formësuar fushën Plural-Forms.Kjo kartelë përdoru ID vargjesh, në vend se tekst burim. Poedit-i mund të ngakojë për ju tekste anglisht nga kartela “%sâ€.Ky është urdhri i përdorur për të nisur përtypësin. %o bëhet emri i kartelës përfundim, %K lista e fjalëkyçeve, %F lista e kartelave hyrëse, %C simboli i shkronjave (shihni më poshtë).Ky varg u gjet në kujtesën e përkthimeve të Poedit-it.Kjo do t’i bashkëngjitet rreshtit të urdhrave vetëm nëse janë dhënë shkronja kodi burim. %c bëhet emri i shkronjave.Kjo do t’i bashkëngjitet rreshtit të urdhrave një herë për çdo kartelë hyrje. %f bëhet emri i kartelës.Kjo do t’i bashkëngjitet rreshtit të urdhrave një herë për çdo fjalëkyç. %k bëhet vlera e fjalëkyçit.GjithsejShndërrimeZërat e përkthyeshëm s’shtohet dorazi te sistemit Gettext, por përftohen automatikisht nga kodi burim. Në këtë mënyrë mbesin të përditësuar dhe të përpiktë. Përkthyesit zakonisht përdorin kartela gjedhe PO (POT-e) të përgatitur për ta nga zhvilluesi.Përktheni projekt në reTë përkthyera: %d nga %d (%d %%)PërkthimGjuhë PërkthimiKujtesë PërkthimeshPërkthimi Lyp &PunëVeti PërkthimeshKartela e përkthimit është tashmë e përditësuar, s’u bënë ndryshime te vargje.Kartelë përkthimi qe përditësuar me %s ndryshim.Kartelë përkthimi qe përditësuar me %s ndryshime.Baza e të dhënave të kujtesës së përkthimeve është dëmtuar: %s (%d).Gabim kujtese përkthimesh: %s (%d).Përkthimi lyp &punëVeti përkthimeshSugjerime përkthimiSugjerimet e përkthimeve lypin praninë e tekstit burim. S’funksionojnë, nëse përdoren vetëm ID, pa tekstin faktik.Sugjerime përkthimi lypin që gjuha e tekstit burim të njihet. Poedit-i s’e pikasi dot në këtë kartelë.Përkthim — %sS’u përditësuan dot përkthimet që prej kodit burim, ngaqë s’u gjet kod në vendin e treguar te Vetitë e kartelës.DyUTF-8 (e këshillueshme)ZhbëjePapritmas mungon lëndë te kartela XCLOC.Ndodhi një përjashtim i patrajtuar: %sUnix (e këshillueshme)Gabim Crowdin i panjohur.Gabim i panjohurPapërkthPërditësojePërmbledhje PërditësimiPërditësoji krejtPërditëso tërë katalogët në projektTë përditësohen krejt katalogët në këtë projekt?Përditësojeni prej Kartele &POT…Përditësojeni prej kartele &POT…Përditësoje prej KodiPërditësojeni prej POT-iPërditësoje prej kodiPërditësoje prej kodi burimPërditëso përmbledhjenPërditësimePërditësimi dështoiPo përditësohen katalogë projektiPërditësim kartelash përkthimiPo përditësohen të dhëna mbi përdoruesin…Ngarkimi i përkthimeve në %s dështoi.Po ngarkohen përkthime në %s…Po ngarkohen përkthime…Përdor shprehje vetjakePërdor shkronja vetjake liste:Përdor shkronja vetjake për fusha tekstesh:Për këtë gjuhë përdor rregullat parazgjedhjePërdorini këta fjalëkyçe (emra funksionesh) për të dalluar vargje të përkthyeshëm te kartelat burim:Përdor kujtesë përkthimeshVleftësojePërfundime vleftësimiVersioni %sShihni Hollësi…Shihni hollësi…Po pritet për mirëfilltësim…Kujdes: Mirë se vini te PoeditKur përditësohet që nga burimiVetëm fjalë të plotaDritareWindowsDoni të përdoret anglishtja për tekst burim?MbështilleMbështille në gjatësinë:Kartela XLIFF PërkthimiKatalog Xcode PërkthimiPoMund të përftoni vargje të përkthyeshëm edhe drejt e nga kodi burim:S’mund të jepni më tepër se një kartelë te dritarja Poedit.S’keni leje të lexoni kartela burim prej vendndodhjes së treguar te Vetitë e kartelës.Duhet të rinisni Poedit-in, pa të hyjnë në fuqi ndryshimet.Emri JuajNdryshimet tuaja do të humbasin, nëse s’i ruani.Emri dhe email-i juaj përdoren vetëm për të plotësuar fushën Last-Translator të kartelave GNU gettext.ZeroZoomLyp Punëmos fshi kartela të përkohshme (për diagnostikim)p.sh. nplurals=2; plural=(n > 1);gabim: plotëso përputhje të turbullta nga kartelashko tek objekti në rreshtin me numrin e dhënëtrajto një URI poedit://Alt+Ctrl+DownENTERLeftRightShift+UpaltctrlshiftMbi %s-inFshihe %sFshihi të TjerëtParapëlqime…Mbylleni %sShërbimeShfaqi Krejtpërkthe paraprakisht prej KP-jegjuhë e panjohurversion i pambuluar (%s)kujdes: ju@example.com“%s†s’është kartelë POT e vlefshme.poedit-3.6.3/locales/ko.mo0000644000175100001660000017300515011674364011076 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !- O ð‘ý‘’ +’*8’ c’#p’#”’:¸’-ó’N!“ p“ z“ „“ Ž“ ¯“º“ Ì“ ד â“ í“ û“ ” ”!”!>” `” k” v”„”ž” ¸”ÔØ” í”û”• (•5•G• Y• g•r•Š• ¢• °•¾•Ï•á•ö•– –((–(Q– z–ˆ– š– ¨–³–Ò–ò–—!— 0—;—%M—%s—$™—$¾—ã—õ— ˜˜˜1˜J˜ d˜ q˜ {˜…˜Œ˜“˜ š˜¨˜¹˜ʘÞ˜ ø˜ ™'™8™I™]™w™ˆ™£™$ª™Ï™$ä™ š š,š5=š+sšŸš½šÝš ùš›% ›C0›4t›©›(Ä›í›ô›cœgœGxœCÀœ1 6C×W/ž 6ž/Dž.tž;£ž=ßž Ÿ*ŸEŸ`ŸwŸ’Ÿ¡Ÿ¶Ÿ$ÑŸöŸ  " 9  J T e v ‡ ˜  Ÿ ¬ Á EÖ ¡8¡ T¡b¡"j¡¡ ¡º¡5Õ¡ ¢œ¢¯¢¶¢Ë¢ã¢ø¢£O.£I~£(È£ñ£¤,¤!D¤f¤¾u¤4¥%E¥%k¥!‘¥ ³¥'À¥è¥ï¥ÿ¥¦*¦ >¦L¦K`¦¬¦ Ħ2Ò¦z§?€§IÀ§ ¨"¨6¨HQ¨š¨!µ¨Eר8©8V© ©©¹©À©Ò© ä© ò©ªª (ª 3ª =ªHªƒcªçª«%«µ«Ϋ$㫬¬¬%¬ E¬S¬j¬‡¬Ÿ¬¶¬+Ϭû¬­#0­HT­;­Ù­ô­7®8@®Ky®2Å®;ø®4¯;¯ Z¯1{¯g­¯° ° *°8°L°`°~° ’°  ° ®° ¼° ʰ ذæ° þ° ± !±-± 4± @±J±b±}±1™±˱—α³f²³¨³¯³óݳû³´$3´8X´‘´¬´¾´ Ó´!ô´µ'µ.µ?µGµNµUµhµyµ/•µ.ŵôµ ¶ ¶¶ %¶(3¶\¶w¶ˆ¶¢¶»¶ضbܶ?·@R·“·ª§·<R¸¸¦¸0½¸î¸ ¹ ¹!¹ 9¹C¹^¹f¹{¹ ¹ ž¹¬¹×ɹ ¡º(¬º Õº(㺠»»3»H» ]»g»3‚»T¶»# ¼!/¼2Q¼„¼5™¼;ϼ ½½ ½ó'½-¾I¾g¾(|¾¥¾À¾ ޾쾿¿/¿ D¿ N¿X¿_¿f¿{¿¿¡¿¡³¿ UÀ%bÀˆÀVÀæÀ?Á!DÁwfÁeÞÁDÂKÂU`¶ÂÅÂÌÂQìÂF>ê…Ä80Å5iÅŸÅ ´ÅÂÅ ÓÅ<ôÅ1ÆÂFÆŸ ÇŠ©Ç4È ;È EÈOÈgȃȘȭÈÅÈÚÈïÈÉ #É 1É>ÉSÉ$ZÉ ÉF‰É ÐÉ ÞÉ èÉöÉÊ ,Ê:Ê!AÊ!cÊ…Ê™Ê2­Ê àÊêÊÿÊË %Ë12Ë dËnˆŒËÌ$Ì+Ì!2Ì!TÌv̞̹̊Ì×Ì ìÌHúÌ CÍQÍ cÍ'q͙ͭÍ*ÂÍíÍÎ Î +Î9Î @ÎJÎbÎ~ΖήÎÃÎ ØÎæÎ úÎ0Ï9ÏWÏoÏ ‡Ï•Ï ¦Ï °Ï ½ÏÇÏ ×ÏøÏ) Ð 7ÐDÐKÐiÐВУиÐÍÐâÐ÷Ð Ñ!Ñ•>ÑÔÑóÑÒ "Ò,ÒDÒ UÒcÒ tÒ ‚ÒUŒÒâÒ÷ÒÓÓ+Ó@ÓQÓ/pÓ ÓK±Ó ýÓ Ô³ÔJÆÔ‹Õ Õ§Õ¹Õ ÕÕãÕ+ôÕ+ ÖLÖ aÖJlÖ)·ÖáÖäõÖ$Ú×Eÿ×+EØáqصSÙR Ú9\Ú_–ÚyöÚXpÛ*ÉÛ$ôÛ*ÜJDÜjÜjúÜ7eÝUÝMóÝIAÞ/‹Þ.»Þ]êÞ.Hß.wß3¦ß1Úß1 àL>à†‹à3áhFáN¯árþáŽqâYãvZãnÑãŽ@äÎÏä@žå†ßåffæZÍæ(ç/ç16ç hè.‰è¸è ¿èÍèæè éXé5lé7¢éÚéîé ê êŸ)êÉê Wëeëçëëë úëGì%Pì vì„ì£ì ¹ì ÃìÐìåì4ùìJ.í$yí$žíÃíÝíøí î3î GîTî)hî’î$ªî5Ïîï"ï!=ï)_ï7‰ï"ÁïkäïPð lð yð ‡ð‘ð¨ð¿ðÔðÝðûðñ.ñ 2ñ4<ñqñ†ñ™ñ­ñÊñTÎñP#òitòIÞò(ó;/óskóßóãó êó*øó #ôDôMô5eô›ô°ôµô»ôÀôÆôËôÑôØôÛôßôäô êô ôôõõ *õ 7õ Aõ%Oõuõ‹õ«õ´õ;Éõ|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-08 10:16 Last-Translator: Language-Team: Korean Language: ko_KR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: ko X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (수정함) (저장하지 않ìŒ)코드 %d회 나타남항목 %d개항목 %d개를 사전 번역했습니다.오류 %d개오류 %dê±´ì´ ë‚˜íƒ€ë‚¬ìŠµë‹ˆë‹¤.오류 %dê±´ì´ ë‚˜íƒ€ë‚¬ìŠµë‹ˆë‹¤:ì›ë³¸ 문ìžì—´ì—서 문제 %dê±´ì„ íƒì§€í–ˆìŠµë‹ˆë‹¤.번역ì—서 문제 %d개를 찾았습니다.“%2$s†파ì¼ì˜ %1$i번째 ì¤„ì„ ì œëŒ€ë¡œ 불러오지 못했습니다.%s 형ì‹%s 설정%s 형ì‹%s ë²ˆì—­ì„ ê°€ì ¸ì™”ìŠµë‹ˆë‹¤.ì •ë³´(&A)Poedit ì •ë³´(&A)ì ìš©(&A)뒤로(&B)취소(&C)지우기(&C)닫기(&C)복사(&C)ì‚­ì œ(&D)ëë‚´ê³  다ìŒìœ¼ë¡œ ì§„í–‰(&D)ëë‚´ê³  다ìŒìœ¼ë¡œ ì§„í–‰(&D)편집(&E)파ì¼(&F)찾기(&F)…GNU gettext 설명서(&G)GNU gettext 설명서(&G)ì´ë™(&G)ìƒíƒœë³„ 모ìŒ(&G)ìƒíƒœë³„ 모ìŒ(&G)ë„움ë§(&H)새로 만들기(&N)새로 만들기(&N)…다ìŒ(&N) >ë‹¤ìŒ ë²ˆì—­(&N)ë‹¤ìŒ ë²ˆì—­(&N)아니요(&N)확ì¸(&O)온ë¼ì¸ ë„움ë§(&O)온ë¼ì¸ ë„움ë§(&O)열기(&O)...열기(&O)…붙여넣기(&P)기본 설정(&P)기본 설정(&P)...ì´ì „ 번역(&P)ì´ì „ 번역(&P)ì†ì„±(&P)…삭제한 ë²ˆì—­ì„ ì™„ì „ížˆ 제거(&P)삭제한 ë²ˆì—­ì„ ì™„ì „ížˆ 제거(&P)ë내기(&Q)다시 실행(&R)바꾸기(&R)저장(&S)다른 ì´ë¦„으로 저장(&S)코드 출현 횟수 표시(&S)코드 출현 횟수 표시(&S)시작 ì°½(&S)시작 ì°½(&S)번역(&T)실행 취소(&U)번역하지 ì•Šì€ í•­ëª© 먼저(&U)번역하지 ì•Šì€ í•­ëª© 먼저(&U)소스 코드ì—서 ì—…ë°ì´íЏ(&U)소스 코드ì—서 ì—…ë°ì´íЏ(&U)번역 ê²€ì¦(&V)번역 ê²€ì¦(&V)보기(&V)예(&Y)(기본 언어 사용)(로그ì¸í•˜ì§€ 않ìŒ)(Windows 8 ì´ìƒ í•„ìš”)< ì´ì „(&P)%s ì •ë³´ê³„ì •ê³„ì •ì¶”ê°€ì£¼ì„ ì¶”ê°€íŒŒì¼ ì¶”ê°€â€¦í´ë” 추가…프로ì íЏ 추가와ì¼ë“œì¹´ë“œ ì¶”ê°€â€¦ì£¼ì„ ì¶”ê°€ë””ë ‰í„°ë¦¬ë¥¼ 목ë¡ì— ì¶”ê°€íŒŒì¼ ì¶”ê°€â€¦í´ë” 추가…프로ì íЏ 추가와ì¼ë“œì¹´ë“œ 추가…추가 키워드xgettext 추가 플래그:고급고급 확장 프로그램 설정…고급 추출 설정고급 확장 프로그램 설정…모든 번역 파ì¼ëª¨ë“  주ì„모든 문ìžì—´ì§€ì›ë˜ëŠ” ì–¸ì–´ì˜ ê¸°ë³¸ 키워드 ë˜í•œ ì‚¬ìš©í•­ìƒ í¬ì»¤ìŠ¤ë¥¼ ìž…ë ¥ 창으로 옮김오류가 나타났습니다.ìž…ë ¥ íŒŒì¼ ëª©ë¡ì˜ 항목:키워드 목ë¡ì˜ 항목:모양새ì ìš©ë²ˆì—­ 기억 장소와 유사 ì¼ì¹˜ì •ë§ë¡œ “%s†추출 í”„ë¡œê·¸ëž¨ì„ ì‚­ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?번역 기억 장소를 초기화하시겠습니까?ì—…ë°ì´íЏ ìžë™ 확ì¸ì €ìž¥í•  때 MO íŒŒì¼ ìžë™ 컴파ì¼ë’¤ë¡œê¸°ë³¸ 경로:베타 버전ì—는 최신 기능과 개선 ì‚¬í•­ì´ ìžˆì§€ë§Œ, ëœ ì•ˆì •ì ì¼ 수 있습니다.ëª¨ë‘ ì•žìœ¼ë¡œPO íŒŒì¼ ì˜¤ë¥˜: msgid_plural ì—†ì´ ì‚¬ìš©í•œ 복수 형ì‹ì˜ msgstrPO íŒŒì¼ ì˜¤ë¥˜: msgid_pluralì„ ì‚¬ìš©í•œ 단수 형ì‹ì˜ msgstr번역 문ìžì—´ì˜ 마í¬ì—…ì´ ê¹¨ì¡ŒìŠµë‹ˆë‹¤.ì°¾ì•„ë³´ê¸°íŒŒì¼ ì°¾ì•„ë³´ê¸°ê¸°ë³¸ì ìœ¼ë¡œ, 부정확한 ê²°ê³¼ë„ ë“¤ì–´ìžˆì„ ìˆ˜ 있지만, 해당 ë¶€ë¶„ì€ ìž‘ì—…ì´ í•„ìš”í•œ ìƒíƒœë¡œ 표시합니다. 완전히 ì¼ì¹˜í•˜ëŠ” 결과를 ë„£ì„ ê²½ìš°ì—ë§Œ ì´ ì˜µì…˜ì„ í‘œì‹œí•˜ì„¸ìš”.취소취소 중…임시 디렉터리를 만들 수 없습니다.í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•  수 없습니다: %s알 수 없는 언어를 사전 번역할 수 없습니다.ì›ë¬¸ ì—†ì´ëŠ” 사전 ë²ˆì—­ì„ ì§„í–‰í•  수 없습니다.대문ìží™”카탈로그 관리ìž(&M)카탈로그 관리ìž(&M)카탈로그 관리ìžì‚¬ìš©ìž 언어 ë°”ê¾¸ê¸°ë¬¸ìž ì§‘í•©:지금 문서 검사맞춤법과 문법 검사입력하는 ë™ì•ˆ 맞춤법 검사업ë°ì´íЏ 확ì¸â€¦ë²ˆì—­ 오류 검사업ë°ì´íЏ 확ì¸â€¦ë§žì¶¤ë²• 검사지우기메뉴 지우기번역 지우기메뉴 지우기번역 지우기닫기í´ë¼ìš°ë“œì½”드 출현 횟수코드 출현 횟수다른 번역가와 온ë¼ì¸ì—서 ê³µë™ ë²ˆì—­ì„ ì§„í–‰í•©ë‹ˆë‹¤.소스 íŒŒì¼ ìˆ˜ì§‘ ì¤‘â€¦ë²ˆì—­ì„ ì¶”ì¶œí•  명령:참고 설명주ì„:ë‹¤ìŒ ì ‘ë‘부를 ë¶™ì¸ ì£¼ì„:MO로 컴파ì¼â€¦ë‹¤ìŒìœ¼ë¡œ 컴파ì¼â€¦ì»´íŒŒì¼í•œ 번역 파ì¼ì†ì„±ì—서 소스 코드 ì¶”ì¶œì„ ì„¤ì •í•©ë‹ˆë‹¤.확ì¸poeditì—서 ì§€ì›í•˜ëŠ” í´ë¼ìš°ë“œ 기반 지역화 플랫í¼ì—서 관리하는 ë²ˆì—­ì„ ê°ìª½ê°™ì´ ë™ê¸°í™”하려면 플랫í¼ì— 연결합니다.복사단수 표현 복사ì›ë³¸ í…스트 복사단수 표현 복사ì›ë³¸ í…스트 복사ìžë™ìœ¼ë¡œ 맞춤법 êµì •로컬레ì´ì§€ 프로ì íЏ 세부 정보를 다운로드할 수 없습니다.파ì¼ì„ 불러오지 못했습니다. ì†ìƒë˜ì—ˆì„ 수 있습니다.%s 파ì¼ì„ 저장할 수 없습니다.새로 만들기새 번역 만들기POT ì–‘ì‹ì—서 새 ë²ˆì—­ì„ ë§Œë“­ë‹ˆë‹¤.새 번역 프로ì íЏ 만들기Crowdin 오류í¬ë¼ìš°ë“œì¸ì€ 온ë¼ì¸ 번역 관리 플랫í¼ì´ë©° 협업 번역 ë„구입니다. Poedit ë²ˆì—­ì˜ ë‹¤êµ­ì–´ ë²ˆì—­ì— í¬ë¼ìš°ë“œì¸ì„ 활용하며, ì´ ë°©ì‹ì„ 좋아합니다.잘ë¼ë‚´ê¸°(&T)ì‚¬ìš©ìž ì§€ì • 추출 프로그램:ì‚¬ìš©ìž ì§€ì • 추출 프로그램:ë„구 ëª¨ìŒ ì‚¬ìš©ìž ì§€ì •â€¦ìž˜ë¼ë‚´ê¸°ë””스í¬ì˜ ë°ì´í„°ë² ì´ìФ í¬ê¸°:ì‚­ì œTMì—서 삭제추출 프로그램 ì‚­ì œTMì—서 삭제프로ì íЏ 삭제설명 삭제프로ì íЏ 삭제프로ì íЏ ì‚­ì œ ë™ìž‘ì€ ë²ˆì—­ 파ì¼ì„ 삭제하지는 않습니다차ì´ì  ë¹„êµ ì¤‘â€¦ë””ë ‰í„°ë¦¬:“%s†프로ì íŠ¸ë¥¼ 삭제하시겠습니까?디스í¬ì—서 파ì¼ì„ 다시 불러올까요? poeditì—서 편집했지만 저장하지 ì•Šì€ ë‚´ìš©ì„ ìžƒìŠµë‹ˆë‹¤.ì›ë³¸ 문ìžì—´ê³¼ ë™ì¼í•œ 모든 ë²ˆì—­ì„ ì œê±°í• ê¹Œìš”?ë” ì´ìƒ 사용하지 않는 모든 ë²ˆì—­ì„ ì œê±°í•˜ì‹œê² ìŠµë‹ˆê¹Œ?저장하지 않ìŒ(&N)저장하지 않ìŒë‹¤ì‹œ 표시하지 않ìŒì •확하게 ì¼ì¹˜í•˜ëŠ” ë‚´ìš©ì€ ìž‘ì—… 필요로 표시하지 않기다시 표시하지 않ìŒìµœì‹  번역 다운로드 ì¤‘â€¦ì´ í”„ë¡œì íЏì—서는 ë²ˆì—­ì„ ë‹¤ìš´ë¡œë“œí•  수 없습니다.í´ë” ë˜ëŠ” 파ì¼ì„ ì—¬ê¸°ì— ëŒì–´ë‹¤ 놓으세요í´ë” ë˜ëŠ” 파ì¼ì„ ì—¬ê¸°ì— ëŒì–´ë‹¤ 놓으세요나가기(&X)HTML로 내보내기(&X)â€¦íŽ¸ì§‘ì£¼ì„ íŽ¸ì§‘(&C)ì£¼ì„ íŽ¸ì§‘(&C)ì£¼ì„ íŽ¸ì§‘ì£¼ì„ íŽ¸ì§‘í”„ë¡œì íЏ 편집프로ì íЏ 편집편집 중수정…ì´ë©”ì¼:ì „ì²´ 화면ìƒíƒœ ì§„ìž…ì´ íŒŒì¼ì˜ í•­ëª©ì€ íŒŒì¼ì˜ Plural-Forms í—¤ë”ì— ëª…ì‹œí•œ 서수 í˜•ì‹ ì¹´ìš´íŠ¸ì™€ 다른 ê°’ì„ ê°€ì§€ê³  있습니다.오류 í•­ëª©ì„ ìš°ì„  표시오류 í•­ëª©ì„ ìš°ì„  표시오류가 있는 í•­ëª©ì€ ë¶‰ì€ìƒ‰ìœ¼ë¡œ 표시했습니다. ìžì„¸í•œ 오류 ë‚´ìš©ì€ ê°ê°ì˜ í•­ëª©ì„ ì„ íƒí–ˆì„ 때 나타납니다.íŒŒì¼ ì—¬ëŠ” 중 ì˜¤ë¥˜íŒŒì¼ ì €ìž¥ 오류XLIFF íŒŒì¼ ë¶ˆëŸ¬ì˜¤ê¸° 오류: %s오류: 오류모ë‘번역 기억 장소와 완전 ì¼ì¹˜ì œì™¸ 경로TMX로 내보내기…다ìŒìœ¼ë¡œ 내보내기…HTML로 내보내기…TMX로 내보내기…HTML로 내보내는 중"%s" TM ë‚´ë³´ë‚´ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.번역 내보내는 중…소스ì—서 가져오기번역 참고 ì£¼ì„ ì¶”ì¶œ 대ìƒ:ë‹¤ìŒ ë””ë ‰í„°ë¦¬ì˜ ì†ŒìŠ¤ 파ì¼ì—서 í…스트를 추출합니다:%s 파ì¼ì—서 번역 가능 문ìžì—´ 가져오는 중…추출 프로그램 설정추출 프로그램Poedit í”„ë¡œì„¸ìŠ¤ì™€ì˜ í†µì‹ ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.소스 ì½”ë“œì˜ ë¬¸ìžì—´ ì¶”ì¶œì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.추출한 ë²ˆì—­ì´ ë“¤ì–´ìžˆëŠ” íŒŒì¼ ë¶ˆëŸ¬ì˜¤ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.gettext 카탈로그 ë³‘í•©ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.번역 기억 장소 ì—…ë°ì´íŠ¸ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: %s파ì¼íŒŒì¼ì„ ì—´ 수 없습니다“%s†파ì¼ì´ 없습니다.“%s†파ì¼ì€ 번역 파ì¼ì´ 아닙니다.“%s†파ì¼ì€ ì½ê¸° ì „ìš©ì´ë©° 저장할 수 없습니다. 다른 ì´ë¦„으로 저장하세요.ì°¾ê¸°ë‹¤ìŒ ì°¾ê¸°ì´ì „ 찾기찾고 바꾸기…주ì„ì—서 찾기ì›ë³¸ 문ìžì—´ì—서 찾기번역ì—서 ì°¾ê¸°ë‹¤ìŒ ì°¾ê¸°ì´ì „ 찾기언어 수정언어 ìˆ˜ì •í—¤ë” ìˆ˜ì •í—¤ë” ìˆ˜ì •í”Œë£¨í„° 번역 파ì¼%i번 ì–‘ì‹ì–‘ì‹ %i (미사용)GNU gettextì¼ë°˜HTML 파ì¼ë„움ë§ê°€ìž¥ìžë¦¬ ì°½ 숨김ìƒíƒœ 표시줄 ìˆ¨ê¸°ê¸°ì´ ì•Œë¦¼ 메시지 숨김í´ë¼ìš°ë“œ ë™ìž‘ì„ ì–´ë–»ê²Œ 처리할까요?IDê³„ì† ì œê±°ë¥¼ 진행하면 ì‚­ì œ 표시한 모든 ë²ˆì—­ì„ ì™„ì „ížˆ 제거합니다. 다ìŒì— 다시 추가하면 다시 번역해야 합니다.íŒŒì¼ ì ‘ê·¼ ê¶Œí•œì„ ì˜ˆì „ì— ê±°ë¶€í–ˆë˜ ì ì´ 있었다면, 시스템 설정 > 보안 ë° ê°œì¸ì •ë³´ > ê°œì¸ì •ë³´ > íŒŒì¼ ë° í´ë”ì—서 허용할 수 있습니다.ì´ì „ì— íŒŒì¼ ì ‘ê·¼ì„ ê±°ë¶€í–ˆë‹¤ë©´, 시스템 설정 > ê°œì¸ì •ë³´ ë° ë³´ì•ˆ > íŒŒì¼ ë° í´ë” ì—서 허용할 수 있습니다.ë¬´ì‹œëŒ€ì†Œë¬¸ìž ë¬´ì‹œTMXì—서 가져오기…번역 íŒŒì¼ ê°€ì ¸ì˜¤ê¸°â€¦TMXì—서 가져오기…번역 íŒŒì¼ ê°€ì ¸ì˜¤ê¸°â€¦â€œ%sâ€(ì—)서 가져오는 중…번역 기억 장소 ê°€ì ¸ì˜¤ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.번역 가져오는 ì¤‘â€¦íŒŒì¼ ìœ„ì¹˜: %s베타 버전 í¬í•¨ì¼ì¹˜í•˜ì§€ 않는 대소문ìžì¼ì¹˜í•˜ì§€ 않는 공백 문ìžë²ˆì—­ìž ì •ë³´ì„¤ì¹˜ìž˜ëª»ëœ íŒŒì¼ì‹¤í–‰:문제문제JSON 번역 파ì¼ê·¸ëŒ€ë¡œ 유지언어 ì´ë¦„ ë˜ëŠ” 코드번역 언어가 ì›ë³¸ 언어와 같습니다.번역 언어를 설정하지 않았습니다.번역 언어:언어 ì„ íƒì–¸ì–´ 팀:언어:최종 편집gettext í‚¤ì›Œë“œì— ëŒ€í•´ 알아보기서수 í˜•ì‹ ì•Œì•„ë³´ê¸°ë” ì•Œì•„ë³´ê¸°%s ìžì„¸ížˆ 알아보기Crowdin ë” ì•Œì•„ë³´ê¸°GNU gettext ë” ì•Œì•„ë³´ê¸°ì„ â€œ%2$s†파ì¼ì˜ %1$d번째 ì¤„ì´ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤ (올바르지 ì•Šì€ %3$s ë°ì´í„°).í–‰ 종결 문ìž:세미콜론(;)으로 구분한 í™•ìž¥ìž ëª©ë¡(예 *.cpp;*.h):ì˜ì–´ 불러오기로컬레ì´ì§€ëŠ” 누구ì—게든 ìžì‹ ì˜ 제품과 ë‚´ìš©ë¬¼ì„ ì—¬ëŸ¬ 언어로 번역하는 ê³¼ì •ì„ ìƒë‹¹ 부분 ìžë™í™”해주는 지역화 플랫í¼ìž…니다.MO 파ì¼ì€ Poeditì—서 ì§ì ‘ 편집할 수 없습니다.소문ìžë¡œ 만들기대문ìžë¡œ ë§Œë“¤ê¸°ì´ POT 파ì¼ë¡œ 새 ë²ˆì—­ì„ ìž‘ì„±í•©ë‹ˆë‹¤.ìž˜ëª»ëœ í—¤ë”: “%sâ€ê³„ì • 관리관리…차ì´ì  병합 중…최소화번역 프로ì íЏ ì´ë¦„ì´ë¦„:ë‹¤ìŒ ë¯¸ì™„ë£Œ(&X)ë‹¤ìŒ ë¯¸ì™„ë£Œ(&X)작업 필요작업 í•„ìš”ë„¤íŠ¸ì›Œí¬ ì˜¤ë¥˜: %s (%d)문ìžì—´ 목ë¡ì— í¬ì»¤ìŠ¤ê°€ 가지 않게 합니다. ì´ ìƒíƒœì—서는 키보드 ìƒì˜ Ctrl-화살표를 눌러 ì´ë™í•œ 후 문ìžì—´ì„ 편집해야 합니다. 탭 키를 누르실 필요는 없습니다.새 파ì¼POT/PO 파ì¼ë¡œ 새로 만들기(&P)...새 문ìžì—´POT/PO 파ì¼ë¡œ 새로 만들기(&P)...새 문ìžì—´ë²ˆì—­í•  새 문ìžì—´:ë‹¤ìŒ ë³µìˆ˜ í˜•íƒœë‹¤ìŒ ë³µìˆ˜ 형태아니요ì¼ì¹˜í•˜ëŠ” ê²°ê³¼ ì—†ìŒì‚¬ì „ 번역할 수 있는 í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤.ì´ íŒŒì¼ì— 언급한 소스 코드ì—서 문ìžì—´ 출현 ì •ë³´ê°€ 없습니다.ì¼ì¹˜í•˜ëŠ” 결과가 ì—†ìŠµë‹ˆë‹¤ë²ˆì—­ì— ë¬¸ì œê°€ 없습니다.ì´ ê³„ì •ì— ë²ˆì—­ 프로ì íŠ¸ê°€ 없습니다.사용 ì •ë³´ ì—†ìŒëª¨ë“  서수 형ì‹ì´ 번역ë˜ì§€ 않았습니다.ì¸ì¦í•˜ì§€ 않았습니다. 다시 로그ì¸í•˜ì‹­ì‹œì˜¤.번역 참고확ì¸í•˜ë‚˜ê¸°ë³¸ 설정으로는 번역 기억 장소ì—서 가져온 모든 ì¼ì¹˜ í•­ëª©ì€ ìž‘ì—… í•„ìš” 항목으로 표시하여 활용 ì „ì— ê²€í† í•´ì•¼ 합니다. 번역 기억 장소 í’ˆì§ˆì„ ì‹ ë¢°í•˜ëŠ” 경우ì—ë§Œ ì´ ì„¤ì •ì„ ì¼œì„¸ìš”.정확하게 ì¼ì¹˜í•˜ëŠ” 내용만 채우기í´ë¼ìš°ë“œ 번역 열기…최근 íŒŒì¼ ì—´ê¸°ë²ˆì—­ 파ì¼ì„ ì—´ì–´ 편집합니다.í´ë¼ìš°ë“œ 번역 열기í´ë¼ìš°ë“œ 번역 ì—´ê¸°â€¦íŒŒì¼ ì—´ê¸°íŽ¸ì§‘ê¸°ì—서 열기편집기ì—서 열기최근 íŒŒì¼ ì—´ê¸°ì°¸ì¡° íŒŒì¼ ì—´ê¸°ì—´ê¸°...열기…옵션기타ì´ì „ 미완료(&R)ì´ì „ 미완료(&R)PO 번역 파ì¼POT 번역 ì–‘ì‹POT 파ì¼ì€ ì–‘ì‹ì¼ ë¿ì´ë©° ì–´ë–¤ 번역 ë‚´ìš©ë„ ë“¤ì–´ìžˆì§€ 않습니다. 번역하려면 ì´ ì–‘ì‹ì„ 기반으로 새 PO 파ì¼ì„ 만드십시오.붙여넣기붙여넣기 ë° ì¼ì¹˜ ë¹„êµ ë°©ì‹ê²½ë¡œì´ 프로ì íŠ¸ì˜ ëª¨ë“  소스 코드 파ì¼ì—서 ì—…ë°ì´íŠ¸ë¥¼ 수행합니다.ê¶Œí•œì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤.ìžë¦¬ í‘œì‹œìž "%s"ê°€ 번역문ì—서 누ë½ë˜ì—ˆìŠµë‹ˆë‹¤.ìžë¦¬ í‘œì‹œìž ì •í™•ì„± 검토대신 관련 PO 파ì¼ì„ ì—´ì–´ 편집하십시오. 저장하면, 마찬가지로 MO 파ì¼ë„ ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤.먼저 파ì¼ì„ 저장하세요. 저장하기 전까지는 ì´ êµ¬ì—­ì„ íŽ¸ì§‘í•  수 없습니다.복수복수 í˜•ì‹ ë²ˆì—­íŒŒì¼ì—서 사용하는 %s ì–¸ì–´ì˜ ì„œìˆ˜ í˜•ì‹ í‘œí˜„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤.복수 형태:PoeditPoedit - 카탈로그 관리ìžPoeditê°€ “%s†파ì¼ì˜ ìž˜ëª»ëœ ë‚´ìš©ì„ ìžë™ìœ¼ë¡œ 수정했습니다.Poeditì€ í•´ë‹¹ 파ì¼ì˜ ì´ì „ ë²ˆì—­ë§Œì„ í™œìš©í•˜ê±°ë‚˜ 보유한 번역 기억 장소 전체를 활용하여 새 항목 채우기를 시ë„í•  수 있습니다. 번역 기억 장소가 ê±°ì˜ ë¹„ì–´ ìžˆì„ ê²½ìš° 효율ì ì´ì§€ëŠ” 않지만, ë²ˆì—­ì„ ë” ë§Žì´ ì €ìž¥í•˜ë©´ ì¢‹ì€ ê²°ê³¼ë¥¼ ì–»ì„ ìˆ˜ 있습니다.poeditì—서는 문ìžì—´ì„ 활용하는 참조 ìœ„ì¹˜ì— íŒŒì¼ì´ 없거나 실제 파ì¼ì´ 아닌 심볼릭 참조여서 소스 코드를 나타낼 수 없습니다.Poedit는 사용하기 쉬운 번역 편집기입니다.poeditì—서 “%s†파ì¼ì„ ì—´ 수 없습니다.사전 번역(&T)…사전 번역사전 번역함사전 번역한 문ìžì—´ %u개번역 기억 장소ì—서 번역 미리 가져오는 중…사전 번역 중…사전 ë²ˆì—­ì€ ë²ˆì—­ 기억 장소ì—서 번역하지 ì•Šì€ ë¬¸ìžì—´ê³¼ 정확한 항목 ë˜ëŠ” 모호한 항목과 ì¼ì¹˜í•˜ëŠ” ë²ˆì—­ì„ ìžë™ìœ¼ë¡œ 찾아 번역 ë‚´ìš©ì„ ì±„ì›ë‹ˆë‹¤.ì›ë¬¸ì´ 주어져야 사전 번역 ê¸°ëŠ¥ì„ ì´ìš©í•  수 있습니다. 실제 í…스트가 아닌 IDë§Œ 있는 경우 ìž‘ì—…ì„ ì‹¤í–‰í•  수 없습니다.사전 번역 작업시 ì›ë³¸ ë‚´ìš©ì˜ ì–¸ì–´ë¥¼ 알아야 합니다. Poeditì—서 ì´ íŒŒì¼ì˜ 언어를 확ì¸í•˜ì§€ 못했습니다.설정설정…설정…문ìžì—´ 준비 중…기존 íŒŒì¼ ì„œì‹ ìœ ì§€ì´ì „ 복수 형태ì´ì „ 복수 형태ì´ì „ ì›ë³¸ í…스트ì´ì „ 편집 항목ì´ì „ 편집 항목프로ì íЏ ì´ë¦„ê³¼ 버전:프로ì íЏ ì´ë¦„:프로ì íЏ:프로ì íŠ¸ë¬¸ìž¥ 부호 검사제거삭제한 ë²ˆì—­ì„ ì™„ì „ížˆ 제거ëë‚´ê¸°ë‹¤ìŒ ì˜¤ë¥˜ë¡œ ì¸í•´ íŒŒì¼ ë‚´ìš© ì½ê¸°ì— 실패했습니다: %s최근 파ì¼ìž¬ì‹¤í–‰ìƒˆë¡œ ê³ ì¹¨íŒŒì¼ ë‹¤ì‹œ ë¶ˆëŸ¬ì˜¤ê¸°íŒŒì¼ ë‹¤ì‹œ 불러오기남ìŒ: %d개제거ì›ë³¸ê³¼ ë™ì¼í•œ 번역 제거ì›ë³¸ê³¼ ë™ì¼í•œ 번역 ì œê±°ì œê±°ëœ ë¬¸ìžì—´ì œê±°ëœ 문ìžì—´ì œê±°ëœ 문ìžì—´ (ë” ì´ìƒ ì“°ì´ì§€ 않ìŒ):ë°”ê¾¸ê¸°ëª¨ë‘ ë°”ê¾¸ê¸°(&A)ëª¨ë‘ ë°”ê¾¸ê¸°(&A)바꿀 문ìžì—´ë°”꾸기…필요한 Plural-Forms í—¤ë”ê°€ 빠졌습니다.초기화번역 기억장소 초기화번역 기억장소를 초기화하면 저장한 모든 ë²ˆì—­ì„ ì™„ì „ížˆ 삭제합니다. ì´ ë™ìž‘ì€ ì·¨ì†Œí•  수 없습니다.Finderì— í‘œì‹œê²€í† ì €ìž¥ë‹¤ë¥¸ ì´ë¦„으로 저장(&A)…다른 ì´ë¦„으로 저장(&A)…무시하고 저장무시하고 저장다른 ì´ë¦„으로 ì €ìž¥ë‹¤ìŒ ì´ë¦„으로 ì €ìž¥â€¦ë°”ë€ ë‚´ìš© ì €ìž¥íŒŒì¼ ì €ìž¥XCLOC 파ì¼ì€ 다른 ìœ„ì¹˜ë¡œì˜ ì €ìž¥ì„ ì§€ì›í•˜ì§€ 않습니다.스í¬ë¦°ìƒ·:ëª¨ë‘ ì„ íƒ(&A)ëª¨ë‘ ì„ íƒê°€ì ¸ì˜¬ TMX 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”디렉터리 ì„ íƒë²ˆì—­ íŒŒì¼ ì„ íƒê°€ì ¸ì˜¬ 번역 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”번역 ì–‘ì‹ ì„ íƒì„ í˜¸í•˜ëŠ” 언어 ì„ íƒì–¸ì–´ 설정언어 설정설정설정…가장ìžë¦¬ ì°½ 표시맞춤법 ë° ë¬¸ë²• 표시ìƒíƒœ 표시줄 표시문ìžì—´ ID 표시(&I)대체 항목 표시ë„구 ëª¨ìŒ í‘œì‹œê²½ê³  표시íƒìƒ‰ê¸°ì— 표시í´ë” 보기가장ìžë¦¬ ì°½ì„ í‘œì‹œí•˜ê±°ë‚˜ 숨ê¹ë‹ˆë‹¤ê°€ìž¥ìžë¦¬ 표시줄 표시ìƒíƒœ 표시줄 표시문ìžì—´ ID 표시(&I)경고 표시가장ìžë¦¬ 창로그ì¸ë¡œê·¸ì•„웃로그ì¸%sì— ë¡œê·¸ì¸í´ë¼ìš°ë“œ ê³„ì •ì— ë¡œê·¸ì¸Crowdinì— ë¡œê·¸ì¸í´ë¼ìš°ë“œ ê³„ì •ì— ë¡œê·¸ì¸í•©ë‹ˆë‹¤ë¡œê·¸ì•„웃단수스마트 복사/붙여넣기스마트 대시 입력스마트 ë§í¬ìŠ¤ë§ˆíŠ¸ ì¸ìš©íŒŒì¼ìˆœ ì •ë ¬(&F)ì›ë³¸ìˆœ ì •ë ¬(&S)번역순 ì •ë ¬(&T)파ì¼ìˆœ ì •ë ¬(&F)ì›ë³¸ìˆœ ì •ë ¬(&S)번역순 ì •ë ¬(&T)소스 코드 ë¬¸ìž ì§‘í•©:소스 코드 추출 í”„ë¡œê·¸ëž¨ì€ ì†ŒìŠ¤ 코드 파ì¼ì—서 번역할 수 있는 문ìžì—´ì„ 찾고 추출하여 번역할 수 있게 합니다.소스 코드가 없습니다.소스 코드가 없습니다ì›ë³¸ í…스트ì›ë¬¸ IDì›ë³¸ í…스트 — %s소스 키워드소스 경로소스 키워드소스 경로ë§í•˜ê¸°%s 언어 ì‚¬ì „ì„ ì„¤ì¹˜í•˜ì§€ 않아 맞춤법 검사를 비활성화했습니다.맞춤법 ë° ë¬¸ë²•ë§í•˜ê¸° 시작ë§í•˜ê¸° 중지저장한 번역:문ìžì—´ 문맥: %s문ìžì—´ ID: %së¬¸ìž ë‹¨ìœ„ 문ìžì—´ 길ì´ë¬¸ìž 단위 문ìžì—´ 길ì´: 번역 | ì›ë³¸ì°¾ì„ 문ìžì—´ë¬¸ìžì—´ 기반 í¬ë¼ìš°ë“œì¸ 프로ì íŠ¸ë¥¼ ì§€ì›í•˜ì§€ 않습니다.대체 항목제안번역 언어를 올바르게 ì„ íƒí•˜ì§€ 않으면 제안 ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 없습니다. 서수 í˜•ì‹ ê°™ì€ ê¸°ëŠ¥ë„ ë§ˆì°¬ê°€ì§€ë¡œ ì˜í–¥ì„ ë°›ì„ ìˆ˜ 있습니다.ì›ë¬¸ì— 없는 "%s" ìžë¦¬ 표시ìžê°€ ë²ˆì—­ë¬¸ì— ë“¤ì–´ê°”ìŠµë‹ˆë‹¤.GNU gettext ë„구ì—서 ì¸ì‹í•˜ëŠ” 모든 í”„ë¡œê·¸ëž˜ë° ì–¸ì–´(PHP, C/C++, C#, Perl, Python, Java, JavaScript 등)를 ì§€ì›í•©ë‹ˆë‹¤.ë™ê¸°í™”Crowdin ë™ê¸°í™”Crowdinê³¼ 번역 ë™ê¸°í™”ë™ê¸°í™” 중ë™ê¸°í™” 오류Crowdinê³¼ ë™ê¸°í™”ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.Plural-Forms í—¤ë”("%s")ì— ë¬¸ë²• 오류.번역 기억 장소TMX 파ì¼ê¸°ì¡´ POT ì–‘ì‹ì—서 번역할 수 있는 문ìžì—´ì„ 가져옵니다.팀 ì´ë¦„ê³¼ ì´ë©”ì¼ ì£¼ì†Œ ë˜ëŠ” URLí…스트 ë°”ê¾¸ê¸°ì´ íŒŒì¼ì˜ 내용과 유사한 ì–´ë–¤ 문ìžì—´ë„ 번역 기억 ìž¥ì†Œì— ì—†ìŠµë‹ˆë‹¤. poeditì—서는 ì§ì ‘ 번역한 파ì¼ì˜ ë‚´ìš©ì„ ì¶©ë¶„ížˆ 학습한 후ì—야 ë°˜ìžë™ ë²ˆì—­ì˜ ê²°ê³¼ê°€ 제대로 나옵니다.TMX 파ì¼ì´ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤.저장하면 다른 프로그램ì—서 바꾼 ë‚´ìš©ì„ ìžƒìŠµë‹ˆë‹¤.MO 파ì¼ë¡œ 컴파ì¼í•  수 없습니다.PO 파ì¼ì—서 허용하지 않는 중복 í•­ëª©ì´ ìžˆì–´ íŒŒì¼ í™œìš©ì„ ë§‰ì•˜ìŠµë‹ˆë‹¤. Poeditì—서 문제를 해결했지만 필요한 경우 작업할 í•­ëª©ì„ í‘œì‹œí•´ë‘” ë¶€ë¶„ì˜ ë²ˆì—­ì„ ê²€í† í•´ì•¼í•©ë‹ˆë‹¤.ì´ íŒŒì¼ì€ 번역 설정ì—서 지정한 “%sâ€ ë¬¸ìž ì§‘í•©ìœ¼ë¡œ 저장할 수 없습니다. 대신 UTF-8로 저장했으며 ì´ì— ë”°ë¼ ì„¤ì • ê°’ë„ ìˆ˜ì •í–ˆìŠµë‹ˆë‹¤.파ì¼ì˜ ë‚´ìš©ì„ ìˆ˜ì •í–ˆìŠµë‹ˆë‹¤. ë°”ë€ ë‚´ìš©ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?Poeditì—서 ì¸ì‹í•  수 없는 íŒŒì¼ í˜•ì‹ìž…니다.MO 형ì‹ìœ¼ë¡œ 파ì¼ì„ 컴파ì¼í–ˆì§€ë§Œ 올바르게 ìž‘ë™í•˜ì§€ ì•Šì„ ìˆ˜ 있습니다.파ì¼ì„ 안전하게 저장하고 MO 형ì‹ìœ¼ë¡œ 컴파ì¼í–ˆì§€ë§Œ 올바르게 ìž‘ë™í•˜ì§€ ì•Šì„ ìˆ˜ 있습니다.파ì¼ì„ 안전하게 저장했지만 MO 형ì‹ìœ¼ë¡œ 컴파ì¼í•  수 없었습니다.파ì¼ì„ 안전하게 저장했습니다."%s" 파ì¼ì„ ì—´ 수 없습니다."%s" 파ì¼ì„ 저장할 수 없습니다.다른 프로그램ì—서 “%s†파ì¼ì˜ ë‚´ìš©ì„ ë°”ê¾¸ì—ˆìŠµë‹ˆë‹¤.부정확한 ë²ˆì—­ì„ ì±„ì›Œë‘”, ì—…ë°ì´íŠ¸í•˜ì—¬ 바뀌기 ì „ì˜ ì˜¤ëž˜ëœ ì›ë³¸ í…스트입니다.ì´ íŒŒì¼ì˜ ë²ˆì—­ì„ ì±„ìš°ëŠ” 가장 간단한 ë°©ë²•ì€ POTì—서 ì—…ë°ì´íŠ¸í•˜ëŠ” 방법입니다:ë²ˆì—­ë¬¸ì´ ê³µë°±ìœ¼ë¡œ 시작하지 않았습니다.ë²ˆì—­ë¬¸ì˜ ëì€ ì¤„ ë°”ê¿ˆì´ ë˜ë‚˜ ì›ë¬¸ì€ 줄 ë°”ê¿ˆì´ ë˜ì§€ 않습니다.번역문 ë§ˆì§€ë§‰ì— ê³µë°±ì´ ìžˆìœ¼ë‚˜, ì›ë¬¸ì€ 그렇지 않습니다.ë²ˆì—­ë¬¸ì€ "%s"(으)로 ë나나, ì›ë¬¸ì€ "%s"(으)로 ë납니다.ë²ˆì—­ë¬¸ì˜ ëì— ì¤„ ë°”ê¿ˆì´ ì—†ìŠµë‹ˆë‹¤.번역문 ë§ˆì§€ë§‰ì— ê³µë°±ì´ ì—†ìŠµë‹ˆë‹¤.ë²ˆì—­ì„ ì‚¬ìš©í•  준비가 ë˜ì§€ë§Œ, ì•„ì§ í•­ëª© %d개를 번역하지 않았습니다.ë²ˆì—­ì„ ì‚¬ìš©í•  준비가 ë˜ì—ˆìŠµë‹ˆë‹¤.ë²ˆì—­ë¬¸ì€ "%s"(으)로 ë나야 합니다.ë²ˆì—­ë¬¸ì€ "%s"로 ë나지 ë§ì•„야 합니다.ë²ˆì—­ë¬¸ì€ ë¬¸ìž¥ì²˜ëŸ¼ 시작해야 합니다.ë²ˆì—­ë¬¸ì€ ì†Œë¬¸ìžë¡œ 시작해야 합니다.ë²ˆì—­ë¬¸ì´ ê³µë°±ìœ¼ë¡œ 시작했으나, ì›ë¬¸ì€ 그렇지 않습니다.ë¶€ì •í™•í• ì§€ë„ ëª¨ë¥´ëŠ” ë²ˆì—­ì„ '작업 í•„ìš”'로 표시했습니다. 정확성 여부를 검토하시는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.ë²ˆì—­ì´ ì—†ìŠµë‹ˆë‹¤. í”한 ì¼ì€ 아니네요.íŒŒì¼ êµ¬ì¡°ë¥¼ 다듬는 중 문제가 ë°œìƒí–ˆìŠµë‹ˆë‹¤(하지만 문제 ì—†ì´ ì €ìž¥í–ˆìŠµë‹ˆë‹¤).로컬레ì´ì§€ë¡œ ë²ˆì—­ì„ ì—…ë¡œë“œí•˜ëŠ” 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤.파ì¼ì„ 불러올 때 오류가 있었습니다. ë°ì´í„° ì¼ë¶€ê°€ 빠지거나 ê¹¨ì¡Œì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.ì´ ì„¤ì •ì€ PO íŒŒì¼ ë‚´ë¶€ 형ì‹ì— ì˜í–¥ì„ ì¤ë‹ˆë‹¤. 버전 관리 ë“±ì˜ íŠ¹ë³„í•œ í•„ìš”ì„±ì´ ìžˆë‹¤ë©´ ê°’ì„ ì„¤ì •í•˜ì‹­ì‹œì˜¤.ì´ JSON 파ì¼ì€ 번역 파ì¼ì´ 아니므로 Poeditì—서 편집할 수 없습니다.ì´ ë™ìž‘ì€ ì›ë³¸ 문ìžì—´ê³¼ 정확히 ì¼ì¹˜í•˜ëŠ” ë²ˆì—­ì„ ëª¨ë‘ ì‚­ì œí•©ë‹ˆë‹¤. ë˜ëŒë¦´ 수 없습니다.ì´ íŒŒì¼ì—는 서수 í˜•ì‹ í•­ëª©ì´ ë“¤ì–´ìžˆìœ¼ë‚˜ 서수 í˜•ì‹ í—¤ë”를 구성하지 않았습니다.파ì¼ì´ ì›ë¬¸ 대신 문ìžì—´ ID를 ì´ìš©í•˜ê³  있습니다. Poeditì—서 "%s" 파ì¼ì˜ ì˜ì–´ í…스트를 불러올 수 있습니다.ì´ ëª…ë ¹ì€ ì¶”ì¶œ í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•  때 사용합니다. %o는 출력 파ì¼ì˜ ì´ë¦„, %K는 키워드 목ë¡, %F는 ìž…ë ¥ íŒŒì¼ ëª©ë¡, %C는 ë¬¸ìž ì§‘í•© 플래그 입니다(하단 참조).ì´ ë¬¸ìžì—´ì€ Poeditì˜ ë²ˆì—­ 기억 ìž¥ì†Œì— ìžˆìŠµë‹ˆë‹¤.소스 코드 ë¬¸ìž ì§‘í•©ì„ ì§€ì •í–ˆì„ ê²½ìš°ì—ë§Œ ëª…ë ¹ì¤„ì— ë¶™ì¼ ìˆ˜ 있습니다. %c는 ë¬¸ìž ì§‘í•©ì„ ì˜ë¯¸í•©ë‹ˆë‹¤.ê° ìž…ë ¥ íŒŒì¼ ëª…ë ¹ì¤„ì— í•˜ë‚˜ ë¶™ì¼ ìˆ˜ 있습니다. %f는 íŒŒì¼ ì´ë¦„ì„ ì˜ë¯¸í•©ë‹ˆë‹¤.키워드 ëª…ë ¹ì¤„ì— í•˜ë‚˜ ë¶™ì¼ ìˆ˜ 있습니다. %k는 키워드를 ì˜ë¯¸í•©ë‹ˆë‹¤.전체변환번역 가능한 í•­ëª©ì€ Gettext 시스템ì—서 별ë„로 추가하지 않는 대신 소스코드ì—서 ìžë™ìœ¼ë¡œ 추출합니다. ì´ ë°©ë²•ìœ¼ë¡œ 최신 버전으로 정확하게 유지할 수 있습니다. 번역ìžë“¤ì€ 보통 개발ìžë“¤ì´ 준비한 PO ì–‘ì‹ íŒŒì¼(POT)를 사용합니다.í´ë¼ìš°ë“œ 프로ì íЏ 번역번역함: 문장 %2$dê°œ 중 %1$dê°œ (%3$d%%)번역번역 언어번역 기억 장소(TM)ìž‘ì—…ì´ í•„ìš”í•œ 번역(&W)번역 ì†ì„±ë²ˆì—­ 파ì¼ì´ ì´ë¯¸ 최신 ìƒíƒœì´ë©°, 문ìžì—´ì— 변경 ì‚¬í•­ì´ ì—†ìŠµë‹ˆë‹¤.번역 파ì¼ì— ë°”ë€ ë‚´ìš©ì´ %sê±´ 있습니다.TM ë°ì´í„°ë² ì´ìŠ¤ê°€ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤: %s(%d).TM 오류: %s (%d).ìž‘ì—…ì´ í•„ìš”í•œ 번역(&W)번역 ì†ì„±ë²ˆì—­ 제안ì›ë¬¸ì´ 주어져야 번역 제안 ê¸°ëŠ¥ì„ ì´ìš©í•  수 있습니다. 실제 í…스트가 아닌 IDë§Œ 있는 경우 ìž‘ì—…ì„ ì‹¤í–‰í•  수 없습니다.번역 제안 기능ì—서 ì›ë³¸ ë‚´ìš©ì˜ ì–¸ì–´ë¥¼ 알아야 합니다. Poeditì—서 ì´ íŒŒì¼ì˜ 언어를 확ì¸í•˜ì§€ 못했습니다.번역 — %síŒŒì¼ ì†ì„±ì—서 지정한 ìœ„ì¹˜ì— ì½”ë“œê°€ 없어, 소스 코드ì—서 번역 í•­ëª©ì„ ìƒˆë¡œ 가져올 수 없습니다.둘UTF-8 (추천)실행 취소XCLOC 파ì¼ì—서 예ìƒì¹˜ 못한 콘í…츠가 누ë½ë˜ì—ˆìŠµë‹ˆë‹¤.처리하지 못한 오류 ë°œìƒ: %sUnix (추천)알 수 없는 Crowdin 오류.알 수 없는 오류미번역업ë°ì´íŠ¸ë³€ê²½ 사항 ìš”ì•½ëª¨ë‘ ì—…ë°ì´íŠ¸ì´ í”„ë¡œì íŠ¸ì˜ ëª¨ë“  카탈로그 ì—…ë°ì´íŠ¸ì´ í”„ë¡œì íŠ¸ì˜ ëª¨ë“  카탈로그를 ì—…ë°ì´íŠ¸í•˜ì‹œê² ìŠµë‹ˆê¹Œ?POT 파ì¼ì—서 ì—…ë°ì´íЏ(&P)…POT 파ì¼ì—서 ì—…ë°ì´íЏ(&P)…코드ì—서 ì—…ë°ì´íЏPOT 파ì¼ë¡œ ì—…ë°ì´íŠ¸ì½”ë“œì—서 ì—…ë°ì´íŠ¸ì†ŒìŠ¤ 코드ì—서 ì—…ë°ì´íŠ¸ì—…ë°ì´íЏ 요약업ë°ì´íŠ¸ì—…ë°ì´íЏ 실패프로ì íЏ 카탈로그 ì—…ë°ì´íŠ¸ì¤‘ë²ˆì—­ ì—…ë°ì´íЏ ì¤‘ì‚¬ìš©ìž ì •ë³´ ì—…ë°ì´íЏ 중…%s(으)ë¡œì˜ ë²ˆì—­ ì—…ë¡œë“œì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.%sì— ë²ˆì—­ 업로드중…번역 ì—…ë°ì´íЏ ì¤‘â€¦ì‚¬ìš©ìž ì •ì˜ í‘œí˜„ì‹ ì‚¬ìš©ëª©ë¡ì— ì‚¬ìš©ìž ì§€ì • 글꼴 사용:í…스트 ìž…ë ¥ ì°½ì— ì‚¬ìš©ìž ì§€ì • 글꼴 사용:ì´ ì–¸ì–´ì— ê¸°ë³¸ 규칙 ì‚¬ìš©ë‹¤ìŒ í‚¤ì›Œë“œ(함수 ì´ë¦„)를 사용하여 소스 파ì¼ì—서 번역할 문ìžì—´ì„ ì¸ì‹í•©ë‹ˆë‹¤:번역 기억 장소 사용검ì¦í•˜ê¸°ê²€ì¦ 결과버전 %s세부정보 보기…세부정보 보기…ì¸ì¦ 대기 중…경고: Poeditì— ìž˜ 오셨습니다ì›ë³¸ ì—…ë°ì´íЏ ë°©ì‹ë‹¨ì–´ 단위로 검색창윈ë„ìš°ì˜ì–´ë¥¼ ì›ë¬¸ 언어로 사용하시겠습니까?ìžë™ 줄 바꾸기줄 바꿈 위치:XLIFF 번역 파ì¼Xcode 현지화 카탈로그예소스 코드ì—서 ì§ì ‘ 번역 가능 문ìžì—´ì„ 가져올 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤:Poedit 윈ë„ìš°ì— í•˜ë‚˜ë¥¼ 초과하는 í•­ëª©ì„ ë“œë¡­í•  수 없습니다.íŒŒì¼ ì†ì„±ì˜ 지정 위치ì—서 소스 코드 파ì¼ì„ 불러올 수 있는 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤.ë°”ë€ ë‚´ìš©ì„ ë°˜ì˜í•˜ë ¤ë©´ Poeditì„ ë‹¤ì‹œ 시작해야 합니다.ì´ë¦„저장하지 않으면 ë°”ë€ ë‚´ìš©ì„ ìžƒì–´ë²„ë¦½ë‹ˆë‹¤.ì´ë¦„ ë° ì „ìžë©”ì¼ ì£¼ì†ŒëŠ” GNU gettext 파ì¼ì˜ Last-Translator í—¤ë”를 설정할 때만 사용합니다.ì˜í™•대작업 필요임시 íŒŒì¼ ì‚­ì œ 안함 (디버깅용)예: nplurals=2; plural=(n > 1);오류: 파ì¼ë‚´ í¼ì§€ ì¼ì¹˜ìž…력한 줄 ìˆ˜ì— í•´ë‹¹ë˜ëŠ” 항목으로 ì´ë™poedit:// URI 처리Alt+Ctrl+DownEnterLeftRightShift+Upaltctrlshift%s ì •ë³´%s 숨기기다른 항목 숨기기기본 설정...%s ëë‚´ê¸°ì„œë¹„ìŠ¤ëª¨ë‘ í‘œì‹œë²ˆì—­ 기억 ìž¥ì†Œì˜ ì‚¬ì „ 번역알 수 없는 언어지ì›í•˜ì§€ 않는 버전 (%s)경고: gdhong@website.co.kr“%s†파ì¼ì€ ì •ìƒì ì¸ POT 파ì¼ì´ 아닙니다.poedit-3.6.3/locales/it.po0000644000175100001660000027021015011674363011077 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: it\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Nascondi questo messaggio di notifica" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Non mostrare più" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Non mostrare più" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Aggiorna riassunto" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Aggiorna riepilogo" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Chiudi" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problemi" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "File" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Riga" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problema" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Nuove stringhe" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Nuove stringhe" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Stringhe rimosse" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Stringhe rimosse" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Raccolta dei file sorgente…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Estrazione stringhe traducibili dal file %s…" msgstr[1] "Estrazione stringhe traducibili dai file %s…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Impossibile caricare il file con le traduzioni estratte." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "In: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Codice sorgente non disponibile." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Impossibile aggiornare le traduzioni dal codice sorgente, perché non è stato " "trovato alcun codice nella posizione specificata nelle Proprietà del file." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Permesso negato." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Non hai le autorizzazioni per leggere i file di codice sorgente dalla " "posizione specificata nelle Proprietà del file." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Se, precedentemente, hai negato l'accesso ai tuoi file, puoi consentirlo in " "Impostazioni di Sistema > Privacy e Sicurezza > File e Cartelle." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Se precedentemente hai negato l'accesso ai tuoi file, puoi consentirlo in " "Preferenze di Sistema > Sicurezza e Privacy > Privacy > File e Cartelle." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Estrazione delle stringhe dal codice sorgente non riuscita." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Il file %s non può essere aperto." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Aggiornamento traduzioni" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Determinazione differenze…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Unione delle differenze…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Il file di traduzione è già aggiornato, non sono state apportate modifiche " "alle stringe." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Il file di traduzione è stato aggiornato con %s modifica." msgstr[1] "Il file di traduzione è stato aggiornato con %s modifiche." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Nuove stringhe da tradurre:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Stringhe rimosse (non più usate):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "Rilevato %d problema con la stringa sorgente." msgstr[1] "Rilevati %d problemi con la stringa sorgente." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Vedi dettagli…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Vedi dettagli…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Intestazione malformata: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "File di traduzione PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Modelli di traduzione POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "File di traduzione XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Catalogo localizzazione Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "File di traduzione JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "File di traduzione Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Tutti i file di traduzione" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Il file è in un formato non riconosciuto da Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Questo file JSON non è un file traduzioni e non può essere modificato in " "Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "La lettura del contenuto del file non è riuscita. Errore: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Il file \"%s\" è in sola lettura e non può essere salvato.\n" "Salvarlo con un nome diverso." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Impossibile salvare il file %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Schermate:" #: src/catalog_po.cpp:134 #, 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 linea del file “%s†non è stata caricata correttamente." msgstr[1] "%i linee del file “%s†non sono state caricate correttamente." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "La riga %d del file “%s†è corrotta (dati %s non validi)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "File PO corrotto: forma msgstr singolare usata con msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "File PO corrotto: forma msgstr plurale usata senza msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Impossibile caricare il file, probabilmente è danneggiato." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Si sono verificati degli errori caricando il file. Alcuni dati potrebbero " "mancare o esser corrotti come risultato." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Si è verificato un problema nella formattazione del file (ma è stato salvato " "correttamente)" #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Impossibile salvare il file nella serie di caratteri “%s†come specificato " "nelle impostazioni traduzione.\n" "\n" "Invece, è stato salvato in UTF-8 e l'impostazione è stata modificata di " "conseguenza." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Errore durante il salvataggio del file" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "\"%s\" non è un file POT valido." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Contenuto inaspettatamente mancante nel file XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" "Il salvataggio in una posizione diversa non è supportato per i file XCLOC." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Errore durante il caricamento del file XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "versione non supportata (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Marcatore corrotto nella stringa traduzione." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Collega Poedit con piattaforme di localizzazione cloud supportate per " "sincronizzare senza problemi le traduzioni gestite su di esse." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Come funziona la sincronizzazione cloud?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Account" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(non registrato)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Apri traduzione cloud" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Gestisci account" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Progetto:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Lingua:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Accedi all'account cloud" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Accedi all'account cloud" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Nell'account non è elencato nessun progetto." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Download versione aggiornata traduzione…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Accedi a %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sincronizzazione" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Caricamento traduzioni in %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Caricamento traduzioni in '%s' non riuscito." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Errore di sincronizzazione" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Aggiungi" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Errore Crowdin sconosciuto." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Non autorizzato. È necessario autenticarsi per procedere, grazie." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "I progetti Crowdin basati su stringhe non sono supportati." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Il download delle traduzioni è disabilitato in questo progetto." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Autenticati" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Accedi" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Disconnettiti" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Disconnetti" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Scopri di più su Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin è una piattaforma di gestione delle traduzioni online e uno " "strumento di traduzione collaborativa. Usiamo Crowdin noi stessi per " "tradurre Poedit in molte lingue." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Autenticazione…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Aggiornamento informazioni utente…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Accedi a Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Sincronizzazione con Crowdin fallita." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Errore di Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Aggiornamento traduzioni…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Copia" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Scopri di più" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Aiuto" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "I file MO non possono essere modificati direttamente con Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Errore durante l'apertura del file" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Sei pregato piuttosto d'aprire e modificare il file PO corrispondente. " "Salvandolo, il file MO sarà anch'esso aggiornato." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "non eliminare i file temporanei (per il debug)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "gestisce un URI poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "vai all'elemento al numero di riga dato" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Errore di comunicazione con il processo di Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Si è verificata un'eccezione non gestita: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Seleziona il modello traduzione" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "File non valido" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Seleziona il file traduzione" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit è un editor per traduzioni semplice da utilizzare." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Impossibile trascinare più file nella finestra di Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Il file “%s†non è un file traduzione." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Il file \"%s\" non esiste." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Il controllo ortografico è disabilitato poiché il dizionario %s non è " "installato." #: src/edframe.cpp:871 msgid "Install" msgstr "Installa" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Il file “%s†è stato modificato da un'altra applicazione." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Ricarica il file" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Vuoi ricaricare il file dal disco? Le tue modifiche non salvate in Poedit " "saranno perse se lo fai." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignora" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Ricarica il File" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "" "Il file è stato modificato.\n" "Vuoi salvare le modifiche?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Salva le modifiche" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Le modifiche saranno perse se non le salvi." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Salva" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Non salvare" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Non salvare" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Le modifiche effettuate dall'altra applicazione saranno perse se salvi." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Annulla" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Salva Comunque" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Salva comunque" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Salva come…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Compila in…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "File traduzione compilati" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Esporta in HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "FIle HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Esportazione in HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Aggiornamento non riuscito" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Apri file di riferimento" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Aggiorna da file &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Aggiorna da file &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d problema trovato nella traduzione." msgstr[1] "Sono stati trovati %d problemi nella traduzione." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Risultati della convalida" #: src/edframe.cpp:1842 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 "" "Le voci con errori sono state marcate in rosso nell'elenco. I dettagli " "dell'errore saranno visualizzati quando selezionerai una determinata voce." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Il file è stato correttamente salvato." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Il file è stato salvato e compilato nel formato MO, ma potrebbe non " "funzionare correttamente." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Il file è stato salvato, ma non può essere compilato nel formato MO e " "utilizzato." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Il file è stato compilato nel formato MO, ma probabilmente non funzionerà " "correttamente." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Il file non può essere compilato nel formato MO e usato." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Nessun problema trovato nella traduzione." #: src/edframe.cpp:1894 #, 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] "" "La traduzione è pronta all'uso, ma la voce %d non è ancora tradotta." msgstr[1] "" "La traduzione è pronta all'uso, ma le voci %d non sono ancora tradotte." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "La traduzione è pronta per l'uso." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "Poedit correggerà automaticamente il contenuto non valido nel file \"%s\"." #: src/edframe.cpp:2299 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 needing work 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 correggerle se necessario." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "La lingua traduzione non è impostata." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Imposta lingua" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 traduzione non è impostata " "correttamente.\n" "Anche altre caratteristiche, come i plurali, possono presentare dei problemi." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "La lingua del file traduzione è la stessa lingua del file sorgente." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Correggi la lingua" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Correggi la lingua" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Questo file contiene voci con forme plurali, ma non ha un'intestazione delle " "Forme Plurali configurata." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Le voci in questo file hanno un diverso conteggio delle forme plurali da " "quanto detto dall'intestazione delle Forme Plurali del file" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Manca l'intestazione richiesta per i plurali." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Errore di sintassi nell'intestazione delle forme plurali (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Correggi l'intestazione" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Correggi l'intestazione" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "L'espressione delle forme plurali usata dal file è insolita per %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Revisiona" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Vuoi usare l'inglese per il testo sorgente?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Questo file utilizza ID stringa invece del testo sorgente. \n" "Poedit può caricare testi in inglese dal file “%sâ€." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Carica inglese" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Tradotti: %d di %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Rimanenti: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d errore" msgstr[1] "%d errori" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d voce" msgstr[1] "%d voci" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (non salvato)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (modificato)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Impossibile aggiornare la memoria traduzione: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Il file %s non può essere salvato." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Rimuovi traduzioni identiche a sorgente" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Vuoi rimuovere tutte le traduzioni identiche al testo sorgente?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Questa azione eliminerà tutte le traduzioni che corrispondono esattamente al " "testo di origine. Questo non può essere annullato." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Mantieni" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Rimuovi" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Rimuovi le traduzioni eliminate" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "" "Vuoi rimuovere dalla memoria traduzione tutte le traduzioni non più " "utilizzate?" #: src/edframe.cpp:2879 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 si continua nella pulizia, tutte le traduzioni segnate come eliminate " "verranno rimosse definitivamente. Se esse verranno nuovamente aggiunte in " "futuro sarà necessario tradurle nuovamente." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Rimuovi" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Copia dal testo sorgente" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Copia dal testo sorgente" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Cancella traduzione" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Cancella traduzione" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Modifica commento" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Modifica commento" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Occorrenze del Codice" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Occorrenze del codice" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Nascondi barra laterale" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Mostra barra laterale" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Nascondi barra di stato" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Visualizza barra di stato" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Lunghezza stringa in caratteri: traduzione | sorgente" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Lunghezza della stringa in caratteri" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Testo sorgente" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singolare" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plurale" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Traduzione" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pre-tradotta" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Necessita Verifica" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Richiede verifica" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Crea una nuova traduzione" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Crea una nuova traduzione da questo file POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID testo sorgente" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Qualsiasi" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Forma %i (inutilizzata)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Zero" #: src/editing_area.cpp:788 msgid "One" msgstr "Uno" #: src/editing_area.cpp:790 msgid "Two" msgstr "Due" #: src/editing_area.cpp:804 msgid "Other" msgstr "Altro" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Contesto stringa: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identificatore stringa: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Formato %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "formato %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Traduzione — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Testo sorgente — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "lingua sconosciuta" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Errore di rete: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Errore sconosciuto" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Impossibile unire i cataloghi gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Apri nell'editor" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Apri nell'editor" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Nessun'informazione sulle occorrenze di questa stringa nel codice sorgente " "fornita nel file." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Nessun'informazione d'uso" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d occorrenza del codice" msgstr[1] "%d occorrenze del codice" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Codice sorgente non trovato" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit non può visualizzare il codice sorgente in cui è usata la stringa, " "perché il file non è disponibile nel percorso indicato o è un riferimento " "simbolico che non punta ad un file reale." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Impossibile aprire il file" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit non è riuscito ad aprire il file “%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Trova" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Sostituisci" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opzioni" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignora maiuscole" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Torna su se raggiungi la fine" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Solo parole intere" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Trova nel testo sorgente" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Trova nella traduzione" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Trova nei commenti" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Sostituisci t&utto" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Sostituisci t&utto" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Sostituisci" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Indietro" #: src/findframe.cpp:152 msgid "&Next >" msgstr "Ava&nti >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Stringa da trovare" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Stringa di sostituzione" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "avviso: " #: src/gexecute.cpp:171 msgid "error: " msgstr "errore: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Nome o codice lingua" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Lingua della traduzione" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Lingua della traduzione:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Tutte le stringhe" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Impossibile scaricare i dettagli del progetto Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" "Si è verificato un errore durante il caricamento delle traduzioni in " "Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Progetti" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Scopri di più su %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy è una piattaforma di localizzazione altamente automatizzata che " "consente a chiunque di tradurre facilmente i prodotti e contenuti in più " "lingue." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Aggiungi progetto" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Aggiungi progetto" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Gestore cataloghi" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Modifica…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Crea nuovo progetto di traduzione" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Elimina il progetto" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Modifica il progetto" #: src/manager.cpp:176 msgid "Update all" msgstr "Aggiorna tutto" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Aggiorna tutti i cataloghi nel progetto" #: src/manager.cpp:378 msgid "Total" msgstr "Totale" #: src/manager.cpp:379 msgid "Untrans" msgstr "Non tradotte" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Necessita Verifica" #: src/manager.cpp:381 msgid "Errors" msgstr "Errori" #: src/manager.cpp:382 msgid "Last modified" msgstr "Ultima modifica" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Seleziona la cartella" #: src/manager.cpp:433 msgid "Directories:" msgstr "Cartelle:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Vuoi eliminare il progetto “%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Elimina il progetto" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Eliminare il progetto non eliminerà alcun file traduzione." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Conferma" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Aggiornare tutti i cataloghi in questo progetto?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" "Esegue l'aggiornamento dal codice sorgente per tutti i file del progetto." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Aggiornamento cataloghi progetto" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Verifica Aggiornamenti…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Gestore cataloghi" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Preferenze…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Modifica" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Annulla" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Ripeti" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Incolla e verifica corrispondenze stile" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Elimina" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Ortografia e Grammatica" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Visualizza ortografia e grammatica" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Verifica ora il documento" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Controllo ortografico durante la digitazione" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Verifica grammatica ed ortografia" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Correggi automaticamente l'ortografia" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Sostituzioni" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Visualizza sostituzioni " #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Copia/incolla rapido" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Virgolette Smart" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Trattini veloci" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Collegamenti rapidi" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Sostituzione testo" #: src/menus.cpp:230 msgid "Transformations" msgstr "Trasformazioni" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Trasforma in maiuscolo" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Trasforma in minuscolo" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Rendi maiuscolo" #: src/menus.cpp:237 msgid "Speech" msgstr "Voce" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Avvia parlato" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Ferma parlato" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Visualizza" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Mostra la barra degli strumenti" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Personalizza la barra degli strumenti…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Modalità a schermo intero" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Finestra" #: src/menus.cpp:263 msgid "Minimize" msgstr "Riduci a icona" #: src/menus.cpp:264 msgid "Zoom" msgstr "Ingrandisci" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Benvenuto in Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Mostra tutto in primo piano" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informazioni sul traduttore" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nome:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Il tuo nome" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Email:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Il tuo nome e indirizzo email sono usati solo per impostare l'intestazione " "dell'ultimo traduttore dei file GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Modifica" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Compila automaticamente il file MO durante il salvataggio" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Controllo ortografico" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Posiziona sempre il cursore nel campo di immissione del testo" #: src/prefsdlg.cpp:211 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 "" "Non permettere mai che nella lista delle stringhe si posizioni " "automaticamente il cursore. Se abilitato, è necessario usare Ctrl-frecce " "direzionali per la navigazione con la tastiera, ma è anche possibile " "scrivere il testo immediatamente, senza dover premere Tab per posizionare il " "cursore." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Aspetto" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Font personalizzato per gli elenchi:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Usa un carattere personalizzato per i campi di testo:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Cambia la lingua dell'interfaccia" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(richiede Windows 8 o successivo)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Generale" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Usa la memoria di traduzione" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Gestione…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Quando aggiorni dai sorgenti" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "corrispondenza parziale nel file" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pre-traduci dalla MT" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit può tentare di riempire in nuove voci da sole traduzioni precedenti " "nel file o dalla tua memoria traduzione.\n" "Usa solo la MT potrebbe non essere molto efficace, se è quasi vuota, ma sarà " "meglio se si aggiungono altre traduzioni." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Traduzioni memorizzate:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Dimensione database sul disco:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importazione dei file della traduzione…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importazione dei file della traduzione…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importazione da TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importazione da TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Esportazione in TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Esporta in TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Resetta" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Seleziona i file di traduzione da importare" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Seleziona i file TMX da importare" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "File TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Importazione traduzioni…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Importazione memoria di traduzione non riuscita." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importazione da %s…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s traduzione importata." msgstr[1] "%s traduzioni Importate." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Esporta come…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Esportazione traduzioni…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "L'esportazione della memoria traduzione in \"%s\" è fallita." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Azzera la memoria di traduzione" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Sei sicuro di voler azzerare la memoria di traduzione?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "L'azzeramento della memoria eliminerà in modo irrimediabile tutte le " "traduzioni. Non puoi annullare questa operazione dopo averla eseguita." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "MT" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Memoria di traduzione (TM)" #: src/prefsdlg.cpp:730 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 "" "Gli estrattori di codice sorgente vengono utilizzati per trovare stringhe di " "testo nei file di codice sorgente ed estrarle in modo che possano essere " "tradotte." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Estrattori personalizzati:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Estrattori personalizzati:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Supporta tutti i linguaggi di programmazione riconosciuti dagli strumenti di " "GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript e altri)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Elimina estrattore" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Sei sicuro di voler eliminare l'estrattore \"%s\"?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Estrattori" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Account" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Controlla automaticamente gli aggiornamenti" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Includi versioni beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Le versioni beta contengono le ultime novità e miglioramenti, ma possono " "essere meno stabili." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Aggiornamenti" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Queste impostazioni influenzano la formattazione interna dei file PO.\n" "Modificale se hai requisiti specifici, ad esempio a causa del controllo " "versione." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Terminazioni di riga:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (consigliato)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "A capo a:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Non modificare la formattazione dei file" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Avanzate" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Impostazioni" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Preparando le stringhe…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Pretraduzione dalla memoria traduzione…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u stringa pre-tradotta" msgstr[1] "%u stringhe pre-tradotte" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Pre-traduzione in corso…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d elemento è stato pre-tradotto." msgstr[1] "%d elementi sono stati pre-tradotti." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Le traduzioni erano state segnate come non verificate, perché non accurate. " "Devi verificarne la correttezza." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Corrispondenze esatte dalla MdT" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Corrispondenze approssimative dalla MdT" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Nessun elemento è stato pre-tradotto." #: src/pretranslate.cpp:218 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 "" "La MT non contiene nessuna stringa simile al contenuto di questo file. È " "efficace per traduzioni semi-automatiche solo dopo che Poedit impara " "abbastanza dai file che hai tradotto manualmente." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Impossibile pretradurre senza testo sorgente." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pre-traduzione" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "La pre-traduzione richiede che sia disponibile il testo sorgente. \n" "Non funziona se vengono utilizzati solo ID senza il testo effettivo." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Impossibile pre-tradurre da una lingua sconosciuta." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "La pre-traduzione richiede che la lingua del testo sorgente sia " "conosciuta. \n" "Poedit non è riuscito a rilevarlo in questo file." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Riempi solo quelle con corrispondenza esatta" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Per impostazione predefinita, vengono inclusi anche i risultati imprecisi, " "ma contrassegnati come da elaborare. \n" "Seleziona questa opzione per includere solo le corrispondenze esatte." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Non segnare le corrispondenze esatte come 'Da verificare'" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Abilitala solo se ti fidi della qualità della MT. In modo predefinito tutte " "le corrispondenze dalla MT sono segnate come 'Da verificare' e devono essere " "controllate." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "La Pre-traduzione trova automaticamente nella memoria traduzione le " "corrispondenze esatte o da verificare per le stringhe non tradotte e le " "riempie con le loro traduzioni." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Errore: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d errore sopravvenuto:" msgstr[1] "%d errori sopravvenuti:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Un errore sopravvenuto." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d errore sopravvenuto." msgstr[1] "%d errori sopravvenuti." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Annullando…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Trascina Qui Cartelle o File" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Trascina qui cartelle o file" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Aggiungi Cartelle…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Aggiungi cartelle…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Aggiungi file…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Aggiungi file…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Aggiungi carattere jolly…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Aggiungi carattere jolly…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Rivela nel Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Visualizza in Explorer" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Visualizza nella cartella" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Percorsi" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Percorsi esclusi" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Impostazioni di estrazione avanzate" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Estrai le note per i traduttori da:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Commenti preceduti da:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Tutti i commenti" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Attributi xgettext aggiuntivi:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Parole chiave aggiuntive" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Nome del progetto per la traduzione" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Nome e indirizzo email della squadra o URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "esempio. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (consigliato)" #: src/propertiesdlg.cpp:976 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." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Correttezza dei segnaposto" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Il segnaposto \"%s\" è mancante dalla traduzione." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Il segnaposto superfluo \"%s\" non è presente nel testo sorgente." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Traduzioni della forma plurale" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Non tutte le forme plurali sono tradotte." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Maiuscole/minuscole inconsistenti" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "La traduzione dovrebbe iniziare come una frase." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "La traduzione dovrebbe iniziare con un carattere minuscolo." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Spazio bianco inconsistente" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "La traduzione non inizia con uno spazio." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "La traduzione inizia con uno spazio, ma non il testo sorgente." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Manca un fine riga alla fine della traduzione." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "La traduzione termina con un fine riga, ma non il testo sorgente." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Manca uno spazio alla fine della traduzione." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "La traduzione termina con uno spazio, ma non il testo sorgente." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Controlli di punteggiatura" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "La traduzione dovrebbe terminare con \"%s\"." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "La traduzione non dovrebbe terminare con \"%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "La traduzione termina con \"%s\", ma il testo sorgente termina con \"%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Rete" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Azzera elenco voci file recenti" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Azzera elenco voci file recenti" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Commento:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Aggiornamento" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Elimina" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Elimina il commento" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Modifica progetto" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nome del progetto:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Sfoglia" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Aggiungi cartella all'elenco" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&File" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Nuovo…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nuovo da file &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nuovo da file &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Apri…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Apri recente" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Apri recente" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Apri traduzione cloud…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Apri traduzione cloud…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Finestra d'avvio" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Finestra d'Avvio" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Gestore dei cataloghi" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Gestore cataloghi" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Chiudi" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Salva" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "S&alva come…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "S&alva come…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Compila in MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&sporta in HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Verifica aggiornamenti…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Impostazioni…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Preferenze" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "E&sci" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Esci" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Copia dal singolare" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Copia dal singolare" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "La traduzione richiede una &verifica" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "La traduzione richiede una &verifica" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Modifica il &commento" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Modifica &Commento" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Suggerimenti" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "Trova…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Sostituisci…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Trova successivo" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Trova precedente" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Trova e sostituisci…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Trova successivo" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Trova precedente" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Visualizza &ID stringa" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Visualizza &ID stringa" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Mostra avvisi" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Mostra avvisi" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Ordina per ordine &file" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Ordina per ordine &file" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Ordina per &sorgente" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Ordina per &sorgente" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Ordina per &traduzione" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Ordina per &traduzione" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Raggruppa per contesto" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Raggruppa per contesto" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Prima le voci con errori" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Prima le voci con errori" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Prima le voci non tradotte" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Prima voci non tradotte" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "Visualizza occorrenze codice" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "Visualizza occorrenze codice" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Visualizza barra laterale" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Visualizza barra di stato" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "Traduzione" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Aggiorna dal codice sorgente" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Aggiorna dal codice sorgente" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sincronizza con Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pre-&traduci…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Verifica traduzioni" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "Verifica traduzioni" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Rimuovi traduzioni identiche a sorgente" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Rimuovi traduzioni eliminate" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Rimuovi traduzioni eliminate" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Proprietà…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Vai" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Applica e prosegui" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Applica e prosegui" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Modificato precedentemente" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Modificato precedentemente" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Traduzione &precedente" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Traduzione &precedente" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Traduzione &successiva" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Traduzione &successiva" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Non tradotta p&recedente" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Non tradotta p&recedente" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Non tradotta &successiva" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Non tradotta &successiva" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Forma plurale precedente" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Forma plurale precedente" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Forma plurale successiva" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Forma plurale successiva" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Guida in linea" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Guida in linea" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Documentazione &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Documentazione &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "Inform&azioni su Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "Inform&azioni" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Installazione di estrattore" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Elenco di estensioni separate da punto e virgola (ad es. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Invocazione:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Comando per estrarre le traduzioni:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Questo è il comando usato per avviare l'estrattore.\n" "%o rappresenta il nome del file in uscita, %K l'elenco\n" "delle parole chiave, %F l'elenco dei file di input,\n" "%C l'opzione dell'insieme di caratteri (vedi sotto)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Oggetto nell'elenco delle parole chiave:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Sarà accodato alla riga di comando una volta\n" "per ogni parola chiave. %k rappresenta la parola chiave." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Oggetto nell'elenco dei file di input:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Verrà aggiunto alla riga di comando un volta\n" "per ogni file di input. %f rappresenta il nome del file." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Codifica dei caratteri del codice sorgente:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Verrà aggiunto alla riga di comando solo se è specificato\n" "il set di caratteri del sorgente. %c rappresenta il valore del set di di " "caratteri." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Proprietà della traduzione" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nome e versione del progetto:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Squadra di traduzione:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Forme plurali:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Usa regole predefinite per questa lingua" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Usa espressione personalizzata" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Scopri di più sulle forme plurali" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Set di caratteri:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Impostazioni di estrazione avanzate…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Impostazioni di estrazione avanzate…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Proprietà traduzione" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Percorsi dei sorgenti" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Percorsi sorgente" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Estrai testo dai file sorgenti nelle seguenti cartelle:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Percorso base:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Parole chiave sorgenti" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Chiavi ricerca sorgente" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Usa queste parole chiave (nomi delle funzioni) per riconoscere le stringhe\n" "traducibili nei file sorgenti:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Usa anche parole chiave predefinite per le lingue supportate" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Scopri di più sulle parole chiave gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Apri file" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Salva file" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Verifica" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Controlla gli errori nella traduzione" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Aggiorna dal codice" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Aggiorna dal codice" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Aggiorna dal codice sorgente" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Barra laterale" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Visualizza/nascondi la barra laterale" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Testo sorgente precedente" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Il vecchio testo sorgente (prima della modifica durante un aggiornamento) " "che corrisponde alla traduzione non verificata." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Note per traduttori" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Commento" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Aggiungi commento" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Aggiungi commento" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Cancella dalla memoria di traduzione" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Cancella dalla memoria di traduzione" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Suggerimenti traduzione" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Nessuna corrispondenza trovata" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Nessuna corrispondenza trovata" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Nella memoria traduzione è stata trovata questa stringa." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "I suggerimenti traduzione richiedono che sia disponibile il testo " "sorgente. \n" "Non funzionano se vengono utilizzati solo ID senza il testo effettivo." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "I suggerimenti traduzione richiedono che la lingua del testo sorgente sia " "conosciuta. \n" "Poedit non è stato in grado di rilevare la lingua in questo file." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Impossibile eseguire il programma: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Il file TMX presenta anomalie." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Il database della memoria traduzione è danneggiato: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Errore nella memoria traduzione: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Utilizza la lingua predefinita)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Selezione della lingua" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Seleziona la lingua preferita" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Riavvia Poedit affinché questo cambiamento abbia effetto." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Impossibile creare la cartella temporanea." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Non ci sono traduzioni, questo è strano." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Le voci traducibili non sono aggiunte manualmente al sistema Gettext, ma " "sono estratte automaticamente dal codice sorgente. In questo modo, rimangono " "aggiornate e accurate. I traduttori usano tipicamente i file di modello PO " "(POT) preparati per loro dallo sviluppatore." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Scopri di più su GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Il modo più semplice per compilare questo file con le traduzioni è " "aggiornarlo da un POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Aggiorna da file POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Estrai le stringhe da tradurre da un modello POT esistente." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Puoi anche estrarre stringhe da tradurre direttamente dal codice sorgente:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Estrai dai sorgenti" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Configura estrazione codice sorgente in Proprietà." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versione %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Crea nuovo" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Crea nuova traduzione dal modello POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Naviga file" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Apri e modifica i file traduzione." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Traduci progetto cloud" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Collabora online con altre persone." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "File recenti" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sincronizza" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sincronizza la traduzione con Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Riguardo %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Preferenze di %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Informaz. su %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Servizi" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Nascondi %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Nascondi altri" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Mostra tutto" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Esci da %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Preferenze…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Preferenze..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferenze..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Applica" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Applica" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Indietro" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Indietro" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Annulla" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Rimuovi" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Rimuovi" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Copia" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Taglia" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Taglia" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Modifica" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Esci" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Aiuto" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nuovo" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Nuovo" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&No" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "No" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Apri…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Apri..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Apri..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Incolla" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Incolla" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Preferenze" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Ripeti" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Aggiorna" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Salva come" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Salva come" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Seleziona &tutto" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Seleziona tutto" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Annulla" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Sì" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Sì" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Maiusc+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Invio" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Su" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Giù" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Sinistra" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Destra" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "maiusc" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Avviso: " poedit-3.6.3/locales/et.po0000644000175100001660000026165015011674363011103 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-05-11 10:16\n" "Last-Translator: \n" "Language-Team: Estonian\n" "Language: et_EE\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: et\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Peida see teatis" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ära näita uuesti" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ära kuva uuesti" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Viimased muudatused" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Uuendamise kokkuvõte" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Sulge" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Probleemid" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Fail" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Rida" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Probleem" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Uus string" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Uued tekstid" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Eemaldatud stringid" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Eemaldatud stringid" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Lähtefailide kogumine…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Tõlgitavate tekstide eraldamine failist %s…" msgstr[1] "Tõlgitavate tekstide eraldamine failidest %s…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Eemaldatud tõlgetega faili ei õnnestunud laadida." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Failis: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Lähtekood pole saadaval." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Tõlked ei saanud värskendada lähtekoodist, sest faili omadustes määratud " "kaustast ei leitud koodi." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Õigused puuduvad." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Sul pole õiguseid lähtekoodi failide lugemiseks kataloogi omadustes määratud " "failide asukohas." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Kui keelasite varem juurdepääsu oma failidele, saate selle lubada menüüs " "Süsteemi sätted > Privaatsus ja turvalisus > Failid ja kaustad." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Kui sa ei andnud eelnevalt ligipääsu oma failidele, siis saad selle sisse " "lülitada kohast System Preferences > Security & Privacy > Privacy > Files & " "Folders." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Stringi lisamine lähtekoodi ebaõnnestus." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Faili \"%s\" ei saa avada." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Tõlgete uuendamine" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Erinevuste tuvastamine…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Erinevuste ühendamine…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "Tõlkefail on juba uuendatud, muutuseid tõlkes ei ole tehtud." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Tõlkefailis on uuendatud %s tõlge." msgstr[1] "Tõlkefailis on uuendatud %s tõlget." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Uus tõlkimist vajav string:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Eemaldatud string (enam ei ole kasutuses):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "%d probleem leiti lähtekoodis." msgstr[1] "%d probleemi leiti lähtekoodis." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Vaata üksikasju…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Vaata üksikasju…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Vigane päis: \"%s\"" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO tõlkefailid" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT tõlkemallid" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF tõlkefailid" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode lokaliseerimise kataloog" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON-i tõlkefailid" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutteri tõlkefailid" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Kõik tõlkefailid" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Fail on formaadis mida Poedit ei toeta." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "See JSON-i fail ei ole tõlkefail ja seda ei saa redideerida Poeditis." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Faili sisu lugemine katkes jrgmise vea tõttu: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Fail \"%s\" on kirjutuskaitstud ja seda ei uudetud salvestada.\n" "Palun salvesta fail mõne teise nimega." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Faili %s pole võimalik salvestada." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Ekraanipildid:" #: src/catalog_po.cpp:134 #, 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 rida failis \"%s\" mis ei ole laetud korrektselt." msgstr[1] "%i rida failis \"%s\" mis ei ole laetud korrektselt." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Rida %d failis \"%s\" on vigane (ei ole kehtivad %s andmed)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Katkine PO-fail: ainsuse vorm msgstr, mida kasutatakse koos mitmusega " "msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Katkenud PO-fail: mitmuse vorm msgstr, mida kasutatakse ilma mitmuseta " "msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Ei saadud laadida faili, see on tõenäoliselt vigane." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Mõned vead tekkisid kausta laadimisel. Mõned andmed on puudu või vigase " "tulemusega." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "Faili kauni vormindusega tekkis viga (kuid see salvestati edukalt)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Kataloogi polnud võimalik salvestada märgistikus \"%s\", nagu oli märgitud " "kataloogi seadetes.\n" "\n" "See salvestati hoopis UTF-8 märgistikus ja muudeti ka vastavat sätet." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Tõrge faili salvestamisel" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "'%s' pole korrektne POT fail." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "XCLOC failis puudub ootuspärane sisu." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "XCLOC failid ei toeta erinevatesse kohtadesse salvestamist." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF faili laadimise viga: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "toetamata versioon (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Katkestatud märgistus tõlkestringis." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Ühenda Poedit toetatud pilve tõlkimise platvormidega, et sujuvalt " "sünkroonida neil hallatavaid tõlkeid." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Kuidas pilvega sünkimine töötab?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Konto" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(pole sisse loginud)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Ava pilvetõlge" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Halda kontosid" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekt:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Keel:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Logi pilvekontole sisse" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Logi pilvekontole sisse" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Teie kontol pole ühtegi tõlkeprojekti." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Viimaste tõlgete allalaadimine…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Logige sisse rakendusse %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sünkroniseerimine" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Tõlgete üleslaadimine %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Tõlgete üleslaadimine kohta %s ebaõnnestus." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Sünkrooniseerimise tõrge" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Lisa" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Tundmatu Crowdini viga." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Pole lubatud, palun logi uuesti sisse." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Srringidel põhinevad Corwdini projektid pole toetatud." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Tõlgete allalaadimine on selles projektis keelatud." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Logi sisse" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Logi sisse" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Logi Välja" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Logi välja" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Lisateave Crowdini kohta" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin on veebipõhine tõlgete haldamise platform ja kollektiivse tõlkimise " "tööriist. Kasutame ka ise Crowdinit, et tõlkida Poedit paljudesse keeltese " "ning me armastame seda." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Autentimise ootamine…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Kasutaja info uuendamine…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Logi Crowdinisse sisse" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Crowdiniga sünkronimine ebaõnnestus." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdini tõrge" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Tõlgete üles laadimine…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopeeri" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Uuri lähemalt" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "A&bi" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO faile ei saa otse Poeditis muuta." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Tõrge faili avamisel" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Palun ava hoopis vastav PO fail. Kui sa selle salvestad, siis uuendatakse ka " "MO faili." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ajutisi faile ei kustutata (silumiseks)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "poedit:// URL-i käsitlemine" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "mine antud real olevale kirjele" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Poediti protsessiga suhtlemine ebaõnnestus." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Erand, millega ei osatud midagi peale hakata: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Vali tõlkemall" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Vigane fail" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Vali tõlke fail" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit on lihtne tõlkimise abivahend." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Poedit aknasse saab lohistada vaid ühe faili." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Fail “%s†ei ole tõlke fail." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Faili \"%s\" pole olemas." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Õigekirjakontroll on keelatud, kuna %s sõnastikku pole paigaldatud." #: src/edframe.cpp:871 msgid "Install" msgstr "Paigalda" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Faili “%s†on teise rakenduse poolt muudetud." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Laadi fail uuesti" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Kas soovite faili kettalt uuesti laadida? Teie salvestamata muudatused " "Poeditis lähevad kaotsi." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignoreeri" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Lae fail uuesti" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Faili on muudetud. Kas soovid muudatusi salvestada?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Salvesta muudatused" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Tehtud muudatused lähevad kaotsi, kui neid ei salvestata." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Salvesta" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ära salvesta" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ära salvesta" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "Teise rakenduse tehtud muudatused lähevad salvestamisel kaduma." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Katkesta" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Salvesta ikkagi" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Salvesta ikkagi" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Salvesta kui…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Kompileeri…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Kompileeritud tõlkefailid" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Ekspordi HTML-ina…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML-failid" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Ekspordi HTML-ina" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Uuendamine ebaõnnestus" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Ava viite fail" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Uuenda &POT failist…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Uuenda &POT failist…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Tõlkest leiti %d probleem." msgstr[1] "Tõlkest leiti %d probleemi." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Kontrolli tulemused" #: src/edframe.cpp:1842 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 "" "Vigadega tekstid märgiti loendis punasega. Vea üksikasju kuvatakse teksti " "märkimisel." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Fail on salvestatud." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Fail salvestati ja kompileeriti MO vormingusse, aga tõenäoliselt see vorming " "ei tööta korrektselt." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Fail salvestati edukalt, kuid seda polnud võimalik kompileerida MO " "vormingusse ning kasutusele võtta." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Fail kompileeriti MO vormingusse, aga tõenäoliselt see ei tööta korrektselt." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Faili ei saa kasutada ja MO failiks kompileerida." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Tõlgetest ei leitud vigu." #: src/edframe.cpp:1894 #, 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] "Tõlge on kasutamiseks valmis, kuid %d kirjet pole veel tõlgitud." msgstr[1] "Tõlge on kasutamiseks valmis, kuid %d kirjet pole veel tõlgitud." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Tõlge on kasutamiseks valmis." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit parandas automaatselt vigase sisu failis “%sâ€." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Selles failis oli topelt sissekanne, mis pole PO failides lubatud ning see " "takistab selle faili kasutamist. Poedit parandas selle probleemi, aga sa " "peaksid vaatama üle tõlked, mille juures on märge, et 'Vajab tööd' ning " "vajaduse korral neid parandama." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Tõlke keel on määramata." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Määra keel" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Määra keel" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Soovitused pole saadaval, kui tõlkekeel pole õigesti seadistatud. See võib " "mõjutada ka teisi funktsioone nagu näiteks mitmuse vormid." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Tõlke keel on sama kui lähtekeel." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Paranda keel" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Paranda keel" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Kataloogis on tekste mitmusvormidega, kuid sel pole Plural-Forms päist " "seadistatud." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Nii nagu mitmuse vormi päises öeldud, loetakse selles failis mitmuse vorme " "erinevalt" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Vajalik päis Plural-Forms (mitmusvormid) puudub." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Süntaksi viga Plural-Forms päises (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Paranda päis" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Paranda päis" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "Mitmuse vormide avaldis, mida fail kasutab, on faili %s jaoks ebatavaline." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Vaata üle" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Kas soovid lähteteksti jaoks kasutada inglise keelt?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "See fail kasutab lähteteksti asemel stringi ID-sid. Poedit saab laadida " "ingliskeelseid tekste failist „%sâ€." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Lae inglise keelest" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Tõlgitud: %d / %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Jäänud: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d viga" msgstr[1] "%d viga" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d kirje" msgstr[1] "%d kirjet" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (salvestamata)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (muudetud)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Tõlkemälu uuendamine ebaõnnestus: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Faili \"%s\" ei saa salvestada." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Eemaldage allikaga samad tõlked" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Kas soovite eemaldada kõik lähtetekstiga seotud tõlked?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "See toiming kustutab kõik tõlked, mis vastavad täpselt lähtetekstile. Seda " "ei saa tagasi võtta." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Säilita" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Eemalda" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Kustutatud tõlgete puhastamine" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Kas tahad eemaldada tõlked, mida enam ei kasutata?" #: src/edframe.cpp:2879 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 "" "Kui sa jätkad puhastamisega, eemaldatakse kõik kustutatuks märgitud tõlked " "lõplikult. Kui need kunagi uuesti lisatakse, pead need uuesti tõlkima." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Puhasta" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Lähteteksti kopeerimine" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopeeri lähtetekst" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Juhtklahv+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Tõlke eemaldamine" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Eemalda tõlge" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Kommentaari muutmine" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Kommentaari muutmine" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Koodi esinemised" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Koodi esinemised" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Peida külgriba" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Näita külgriba" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Peida olekuriba" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Näita olekuriba" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Stringi pikkus tähemärkides: tõlge | allikas" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Stringi pikkus tähemärkides" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Originaaltekst" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Ainsus" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Mitmus" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Tõlge" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Eel-tõlge" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Vajab tööd" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Vajab tööd" #: src/editing_area.cpp:566 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 failid on ainult mallid ja neis endis pole mingeid tõlkeid.\n" "Tõlke tegemiseks loo palun selle malli põhjal uus PO fail." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Loo uus tõlge" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Tehke sellest POT failist uus tõlge." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Lähteteksti ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Kõik" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "%i vorm" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Vorm %i (kasutamata)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Null" #: src/editing_area.cpp:788 msgid "One" msgstr "Üks" #: src/editing_area.cpp:790 msgid "Two" msgstr "Kaks" #: src/editing_area.cpp:804 msgid "Other" msgstr "Muu" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Stringi kontekst: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Stringi identifikaator: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s formaadis" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s formaadis" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Tõlge — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Lähtetekst — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "tundmatu keel" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Võrguviga: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Tundmatu viga" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Viga teksti ühildumisel antud kataloogis." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Ava redaktoris" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Ava redaktoris" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "Failis pole teavet selle stringi esinemise kohta lähtekoodis." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Kasutamise infot pole" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d koodi esinemine" msgstr[1] "%d koodi esinemist" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Lähtekoodi ei leitud" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit ei saa lähtekoodi näidata seal, kus stringi kasutatakse, kuna fail " "pole kas viidatud asukohas saadaval või on see sümboolne viide, mis ei osuta " "tegelikule failile." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Faili ei saa avada" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit ei saanud faili “%s†avada." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Leia" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Asenda" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Valikud" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignoreeri tähesuurust" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Alusta otsast peale" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Ainult terved sõnad" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Otsi lähtetekstidest" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Otsi tõlgetest" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Otsitakse kommentaaridest" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "&Asenda kõik" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "&Asenda kõik" #: src/findframe.cpp:150 msgid "&Replace" msgstr "A&senda" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Eelmine" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Järgmine >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Otsisõna" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Asenda sellega" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "hoiatusi: " #: src/gexecute.cpp:171 msgid "error: " msgstr "vigu: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Keele nimi või kood" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Tõlkekeel" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Keel, millesse tõlgitakse:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Kõik stringid" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Localazy projekti üksikasade allalaadimine ebaõnnestus." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Tõlgete Localazysse üleslaadimisel tekkis tõrge." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projektid" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Lisateave %s kohta" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy on kõrgelt automatiseeritud lokaliseerimisplatvorm, mis võimaldab " "kõigil oma tooteid ja sisu hõlpsalt mitmesse keelde tõlkida." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Lisa projekt" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Lisa projekt" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Kataloogihaldur" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Redigeeri…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Loo uus tõlkeprojekt" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Kustuta projekt" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Projekti muutmine" #: src/manager.cpp:176 msgid "Update all" msgstr "Uuenda kõik" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Uuenda kõiki projekti katalooge" #: src/manager.cpp:378 msgid "Total" msgstr "Kokku" #: src/manager.cpp:379 msgid "Untrans" msgstr "Tõlkimata" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Vajab tööd" #: src/manager.cpp:381 msgid "Errors" msgstr "Vead" #: src/manager.cpp:382 msgid "Last modified" msgstr "Viimati muudetud" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Kataloogi valimine" #: src/manager.cpp:433 msgid "Directories:" msgstr "Kataloogid:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Kas soovite projekti “%s†kustutada?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Kustuta projekt" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Projekti kustutamine ei kustuta ühtegi tõlkefaili." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Kinnitus" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Kas värskendada selle projekti kõiki katalooge?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Värskendab lähtekoodist kõiki projekti faile." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Projekti kataloogide uuendamine" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Uuenduste kontroll…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Kataloogide haldamine" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Eelistused…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Redigeerimine" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Taasta" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Korda" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Aseta ja sobita stiil" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Kustuta" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Õigekiri ja grammatika" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Näita õigekirja ja grammatikat" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Kontrolli dokumenti kohe" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Kontrolli õigekirja kirjutamise ajal" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Kontrolli grammatikat koos õigekirja kontrollimisega" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Paranda õigekirja automaatselt" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Asendused" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Näita asendusi" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Nutikas kopeerimine ja asetamine" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Nutikad jutumärkid" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Nutikad mõttekriipsud" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Nutikad lingid" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Teksti asendamine" #: src/menus.cpp:230 msgid "Transformations" msgstr "Teisendused" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Tee suurtähtedeks" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Tee väiketähtedeks" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Suure algus tähega" #: src/menus.cpp:237 msgid "Speech" msgstr "Kõne" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Alusta rääkimist" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Lõpeta rääkimine" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Vaade" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Näita tööriistariba" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Kohanda tööriistariba…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Aktiveeri täisekraan" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Aken" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimeeri" #: src/menus.cpp:264 msgid "Zoom" msgstr "Suurendus" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Tere tulemast Poediti" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Too kõik ette" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Info tõlkija kohta" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nimi:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Sinu nimi" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-post:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "sina@n2ide.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Sinu nime ja e-posti kasutatakse ainult viimase tõlkija kohal GNU gettext " "failide päises." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Muutmine" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Salvestamisel luuakse automaatselt MO fail" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Kontrolli õigekirja" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Fookus on alati tekstisisestusväljal" #: src/prefsdlg.cpp:211 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 "" "Ära luba tekstinimekirjal fookust haarata. Kui sisse lülitatud, pead " "kasutama klaviatuuriga navigeerimiseks Ctrl-nooli, kuid teksti võib " "sisestada ka vahetult, ilma Tab-klahviga fookust vahetamata." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Välimus" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Kasuta kohandatud loend fonti:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Kasuta kohandatud teksti väljade fonti:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Muuda kasutajaliidese keelt" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(nõuab Windows 8 või uuemat)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Üldine" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Kasuta tõlkemälu" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Halda…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Allikatest uuendamisel" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "hägus vaste failis" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "eel-tõlge tõlkemälust" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit võib proovida täita uusi sissekandeid ainult eelmistest tõlgetest " "failis või kogu sinu tõlkemälust. Tõlkemälu kasutamine pole väga tõhus, kui " "see on veel peaaegu tühi, aga kui sa lisad sinna jooksvalt tõlkeid, siis see " "muutub ajaga üha paremaks." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Salvestatud tõlked:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Andmebaasi suurus kettal:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Impordi tõlkefailid…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Impordi tõlkefailid…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Impordi TMX-ist…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Impordi TMX-ist…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Ekspordi TMX-i…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Ekspordi TMX-i…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Lähtesta" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Vali tõlkefailid, mida importida" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Valige importimiseks TMX-failid" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX-failid" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Tõlgete importimine…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Tõlkemälu importimine ebaõnnestus." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importimine “%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s tõlge imporditi." msgstr[1] "%s tõlget imporditi." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Ekspordi kui…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Tõlgete eksportimine…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "“%s†tõlkemälusse eksportimine ebaõnnestus." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Nulli tõlkemälu" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Oled sa kindel, et soovid tõlkemälu nullida?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Tõlkemälu nullimine kustutab sellest pöördumatult kõik tõlked. Seda tegevust " "ei saa tagasi võtta." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Tõlkemälu" #: src/prefsdlg.cpp:730 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ähtekoodi ekstraktoreid kasutatakse tõlgitavate tekstide leidmiseks " "lähtekoodist ning nende väljavalimiseks nii, et neid saaks tõlkida." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Kohandatud Ekstraktorid:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Kohandatud ekstraktorid:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Toetab kõiki programmeerimiskeeli, mida GNU gettext tööriistad ära tunnevad " "(PHP, C/C++, C#, Perl, Python, Java, JavaScript ja muud)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Kustuta ekstraktor" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Oled sa kindel, et soovid kustutada ekstraktorit “%sâ€?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Ekstraktorid" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Kontod" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Kontrolli automaatselt uuendusi automaatselt" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Kaasa beetaversioonid" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beetaversioonides on uuemad funktsioonid ja täiendused, aga nad ei pruugi " "olla nii stabiilsed." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Uuendused" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Need seaded mõjutavad PO failide vormingut. Muuda neid, kui sul on mingid " "spetsiifilised nõuded nagu näiteks versioonikontroll." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Realõpud:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (soovituslik)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Reamurdmine:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Säilite olemasolevate failide vorming" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Lisavalikud" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Seaded" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Tekstide ettevalmistamine…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Eeltõlke tegemine tõlkemälust…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Eeltõlgitud %u tekst" msgstr[1] "Eeltõlgitud %u tekstid" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Eel-tõlkimine…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d sissekanne eeltõlgiti." msgstr[1] "%d sissekannet eeltõlgiti." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Tõlgetele lisati märge 'Vajab tööd', kuna need võivad olla ebatäpsed. Need " "vajavad inimese poolt üle kontrollimist." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Täpsed vasted tõlkemälust" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Ligikaudsed vasted tõlkemälust" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Ühtegi sissekannet ei saanud eel-tõlkida." #: src/pretranslate.cpp:218 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 "" "Selles tõlkemälus pole ühtegi tõlkevastet, mis oleks selle faili sisuga " "sarnane. See on poolautomaatseks tõlkimiseks tõhus pärast seda kui Poedit " "õpib failidest, mida oled ise käsitsi tõlkinud." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Ei saa eeltõlkida ilma lähtetekstita." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Eel-tõlge" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Eeltõlke jaoks on vaja lähteteksti olemasolu. See ei tööta, kui kasutatakse " "ainult ID-sid ilma tegeliku tekstita." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Tundmatust keelest ei saa eeltõlget teha." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Eeltõlge eeldab, et lähteteksti keel on teada. Poedit ei suutnud selles " "failis lähtekeelt tuvastada." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Täida ainult täpsed vasted" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Vaikimisi kaasatakse ka ebatäpsed tulemused, kuid need märgitakse kui tööd " "vajavateks. Märkige see valik, et lisada ainult täiuslikud vasted." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Ära märgi täpseid vasteid tööd vajavateks tõlgeteks" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Vali see ainult siis, kui usaldad oma tõlkemälu kvaliteeti. Kõigile " "tõlkemälust võetud tõlkevastetele lisatakse märge 'Vajab tööd' ning need " "peaks enne kasutamist üle vaatama." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Eeltõlge leiab teksti jaoks täpsed või tööd vajavad tõlkevasted tõlkemälust " "üles ning täidab tõlgete lahtrid." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Viga: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "Esines %d viga:" msgstr[1] "Esines %d viga:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Esines viga." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "Esines %d viga." msgstr[1] "Esines %d viga." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Tühistamine…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Lohista kaustad või failid siia" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Lohista kaustad või failid siia" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Lisa kaustad…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Lisa kaustad…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Lisa failid…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Lisa failid…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Lisa metamärk…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Lisa metamärk…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Leia Finderis" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Näita Exploreris" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Näita kaustas" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Rajad" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Välja jäetud kaustateed" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Ekstraktori seaded" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Võta märkmed tõlkijatele selle sildi järelt:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Kommentaarid eesliitega:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Kõik kommentaarid" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Täiendavad xgettext lipud:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Täiendavad märksõnad" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Tõlgitava projekti nimi" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Meeskonna nimi ja e-posti aadress või link" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "nt. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (soovituslik)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Palun salvesta esmalt fail. Seda sektsiooni ei saa enne salvestamist muuta." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Kohatäite õigsus" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Tõlkes puudub kohatäide „%sâ€." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Üleliigne kohatäide „%sâ€, mida lähtetekstis pole." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Mitmuse vorm tõlkes" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Kõik mitmuse vormid pole tõlgitud." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Vastuoluline suur/väike täht" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Tõlge peaks algama nagu lause." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Tõlge peaks algama väiketähega." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Ebajärjekindel tühik" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Tõlge ei alga tühikuga." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Tõlge algab tühikuga, aga lähtekeeles seal tühikut pole." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Tõlke lõpus puudub uue rea märk." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Tõlge lõpeb uue rea märgiga, aga lähtekeeles seda seal pole." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Tõlke lõpus puudub tühik." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Tõlge lõpeb tühikuga, aga lähteteksti lõpus tühikut pole." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Kirjavahemärkide kontrollid" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Tõlke peab lõppema \"%s\"-ga." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Tõlke ei peaks lõppema \"%s\"-ga." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Tõlke lõpus on “%sâ€, aga lähteteksti lõpus on “%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Pilv" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Tühjenda menüü" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Tühjenda menüü" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Kommentaar:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Uuenda" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "K&ustuta" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Kustuta kommentaar" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Projekti muutmine" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Projekti nimetus:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Lehitse" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Lisa kataloog nimistusse" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Fail" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Uus…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Uus & POT/PO-failist…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Uus & POT/PO-failist…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Ava…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Ava hiljutised" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Ava hiljutine" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Ava pilvetõlge…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Ava pilvetõlge…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Ava aken" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Ava aken" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Kataloogihaldur" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Kataloogihaldur" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "Su&lge" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Salvesta" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Salvesta &kui…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Salvesta &kui…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Kompileeri MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&kspordi HTML-ina…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Uuenduste kontroll…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Sätted…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Eelistused" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Välju" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Lõpeta" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopeeri ainsusest" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopeeri ainsusest" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Tõlge vajab veel &tööd" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Tõlge vajab veel &tööd" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Redigeeri ko&mmentaari" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Muuda &kommentaari" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Soovitused" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Otsi…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Asenda…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Leia järgmine" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Leia eelmine" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Otsi ja asenda…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Leia järgmine" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Leia eelmine" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Näita teksti ID-d" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Näita teksti ID-d" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Näita hoiatusi" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Näita hoiatusi" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Sortimine &failide järgi" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Sortimine &failide järgi" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Sortimine &lähteteksti järgi" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Sortimine &lähteteksti järgi" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Sortimine &tõlke järgi" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Sortimine &tõlke järgi" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Rühmita konteksti järgi" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Rühmita konteksti järgi" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Vigadega sissekanded eespool" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Vigadega sissekanded eespool" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Tõlkimata tekstid eespool" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Tõlkimata tekstid &eespool" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Näita koodi esinemised" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Näita koodi esinemised" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Näita külgriba" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Näita olekuriba" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Tõlge" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Uuenda lähtekoodist" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Uuenda lähtekoodist" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sünkroonimine Crowdiniga" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Eel-tõlge…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Kontrolli tõlkeid" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Kontrolli tõlkeid" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Eemaldage samad kui tõlke allikas olevad" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Puhasta kustutatud tõlked" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Puhasta kustutatud tõlgetest" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Omadused…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Liikumine" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Valmis, järgmine" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Valmis, järgmine" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Varem redigeeritud" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Varem redigeeritud" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Eelmine tõlge" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Eelmine tõlge" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Järgmine tõlge" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Järgmine tõlge" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Eel&mine lõpetamata" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Eel&mine lõpetamata" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Järgmine &lõpetamata" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Järgmine &lõpetamata" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Eelmine mitmusevorm" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Eelmine mitmusevorm" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Järgmine mitmusevorm" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Järgmine mitmusevorm" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Veebiabi" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Veebiabi" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "& GNU gettext juhend" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "& GNU gettext juhend" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Poeditist" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Programmist" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Ekstraktori seadistamine" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Laiendite nimistu, eraldaja semikoolon (nt *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Käivitamine:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Käsk tõlgete välja valimiseks:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Seda käsku kasutatakse parseri käivitamiseks.\n" "%o asendatakse väljundfaili nimega, %K võtmesõnade\n" "loeteluga, %F sisendfailide loeteluga,\n" "%C märgistiku lipuga (vaata allpool)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Liige võtmesõnade nimistus:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "See lisatakse käsureale üks kord iga võtmesõna\n" "kohta. %k asendatakse võtmesõnaga." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Liige sisendfailide nimistus:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "See lisatakse käsureale üks kord iga sisendfaili\n" "kohta. %f asendatakse sisendfaili nimega." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Lähtekoodi märgistik:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "See lisatakse käsureale ainult siis, kui on toodud algteksti\n" "märgistik. %c asendatakse märgistiku väärtusega." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Tõlke omadused" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Projekti nimi ja versioon:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Keele meeskond:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Mitmuse vormid:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Kasuta selle keele jaoks vaikimisi reegleid" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Kasuta kohandatud väljendeid" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Mitmuse vormide kohta lähemalt uurimine" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Märgistik:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Ekstraktori lisaseaded…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Ekstraktori lisaseaded…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Tõlke omadused" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Lähtekoodi asukohad" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Otsingurajad" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Teksti otsitakse järgnevates kataloogides asuvast lähtekoodist:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Baasrada:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Lähtekoodi märksõnad" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Lähtekoodi võtmesõnad" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Kasuta neid võtmesõnu (funktsioonide nimesid) leidmaks lähtekoodist\n" "tõlgitavaid sõnesid:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Kasuta toetatud keelte jaoks vaikimisi klaviatuuri" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Vaata lisainfot Gettexti märksõnade kohta" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Ava fail" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Salvesta fail" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Kontrolli" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Tõlkest vigade otsimine" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Uuenda lähtekoodist" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Uuenda lähtekoodist" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Uuenda lähtekoodist" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Külgriba" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Näita või peida külgriba" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Eelmine lähtetekst" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Vana lähtekood (enne, kui seda uuendamise käigus värskendati), millele " "nüüdseks aegunud tõlge vastab." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Märkused tõlkijate jaoks" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Kommentaar" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Lisa kommentaar" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Lisa kommentaar" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Kustuta tõlkemälust" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Kustuta tõlkemälust" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Tõlkesoovitused" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Vasteid ei leitud" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Vasteid ei leitud" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "See tekst leiti Poediti tõlkemälust." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Tõlkesoovitused eeldavad, et lähtetekst on saadaval. Need ei tööta, kui " "kasutatakse ainult ID-sid ilma tegeliku tekstita." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Tõlkesoovitused nõuavad, et lähteteksti keel oleks teada. Poedit ei suutnud " "selles failis lähtekeelt tuvastada." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Programmi pole võimalik käivitada: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX fail on vigaselt vormindatud." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Tõlkemälu on kahjustada saanud: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Tõlkemälu viga: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Kasuta vaikekeelt)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Keelevalik" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Vali enda meeliskeel" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Selle muudatuse jõustumiseks peab Poedit-i taaskäivitama." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Pole võimalik luua ajutist kataloogi." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Ühtegi tõlget pole. See on küll ebatavaline." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Tõlgitavaid sissekandeid ei lisata käsitsi Gettext süsteemi, vaid need " "ekstraktitakse automaatselt lähtekoodist. Sellisel moel püsivad need " "ajakohaste ja täpsetena. Tõlkijad kasutavad tavaliselt arendaja poolt " "valmistatud PO faile (POTs)." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Vaata insainfot GNU gettexti kohta" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Lihtsaim viis selle faili täitmiseks tõlgetega on selle uuendamine POT " "failist:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Uuenda POT failist" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Tõlgitavad failid olemasolevast POT failist." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Tõlgitavaid stringe saab ka otse lähtekoodist välja otsida:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Ekstrakti lähtekoodist" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Seadista lähtekoodi ekstraktimist omadustest." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versioon %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Loo uus" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Loo POT-mallist uus tõlkefail." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Sirvi faile" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Ava ja muuda tõlkefaile." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Tõlgi projekti pilves" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Tee teistega veebis koostööd." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Hiljutised failid" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sünkroonimine" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sünkrooni tõlge Crowdiniga" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Programmist %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s Eelistused" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Programmist %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Teenused" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Peida %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Peida teised" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Kuva kõik" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Lõpeta %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Eelistused…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Eelistused..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Eelistused..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Rakenda" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Rakenda" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "Tagasi" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Tagasi" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "Katkesta" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "Tühjenda" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Tühjenda" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopeeri" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Lõik&a" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Lõika" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Muuda" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "Lõpeta" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Abi" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Uus" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Uus" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Nr" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ei" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Ava…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Avamine..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "&Ava..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Aseta" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Aseta" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Eelistused" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Tee uuesti" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Värskenda" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "Salvesta kui" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Salvesta kui" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "V&ali kõik" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Vali kõik" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Võta tagasi" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "Jah" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Jah" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Muuteklahv+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Tõstuklahv+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Sisestusklahv" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Üles" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Alla" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Vasak" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Parem" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "muuteklahv" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "tõstuklahv ehk registriklahv" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Hoiatus: " poedit-3.6.3/locales/cs.mo0000644000175100001660000017361415011674363011077 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-ÁO ’ ’P,’/}’­’!=“R_“R²“Ú”à”Ûp• L–W– f–~q– ð–ü– —— —(— 1— ;—G—O—a—s—|— „——§— ¿—É—â— û—˜ ˜ ˜#˜5˜G˜K˜O˜b˜ u˜ ƒ˜‘˜ š˜¦˜µ˜˘á˜ð˜ ™"™)™ 9™C™ L™Z™u™ ™ ž™ ¬™¶™$½™$â™"š"*šMšdš {š‡šŒšžš%±šך æš óš››››*›=›P›`›€›“›°›Û֛曜œ ?œ"Kœnœ"Žœ±œÏœäœA÷œ,9f%w#ÁÈ)Ñ)û,%ž/Rž0‚ž³ž¹ždËž0ŸDLŸJ‘Ÿ$ÜŸ    ´ Ô  Û /è !¡5:¡6p¡§¡¾¡Ò¡æ¡ ù¡¢¢,¢"D¢g¢+¢«¢âØ¢à¢ñ¢££"£+£1£B£'S£3{£!¯£ Ñ£ Ü£&裤$¤"6¤NY¤ ¨¤•³¤ I¥T¥ n¥¥ ©¥Ê¥3é¥6¦T¦m¦}¦(–¦$¿¦ 䦬ò¦Ÿ§¨§§ܧø§¨¨¨:¨K¨j¨|¨‘¨=£¨ᨠý¨" ©m,©Qš©8ì© %ª 1ª<ª8Tªª)¥ª7Ϫ&«&.«U«\«s«{««£«¶«É«Ù«é« ñ«ü«¬l ¬¬¬¬‰Ë¬)U­­)Ÿ­É­Ñ­×­%Ü­®®'®:®Q®f®/|®¬®"Ë®)î®@¯Y¯]° s°%~°9¤°8Þ°-±2E±x±±–±(²±eÛ±A²H²W²j²²—²µ²ʲÙ² ì² ú²³³,³G³P³ g³s³ {³ ˆ³“³«³ó$Û³´Å´›É´eµ õµÿµ¶ .¶O¶ c¶„¶)£¶Ͷì¶ñ¶% ·%2·X· r·· ·· ¦·°·È·Ñ·,é·¸6¸G¸V¸m¸t¸*…¸°¸иâ¸ù¸¹5¹A=¹¹<¹̹‘á¹0sº¤º¼º.Õº»$» 5»B» \».j»™»¡»¸»Ï»á»ó»ê ¼ô¼ú¼½%½@½P½m½„½›½ž½+¸½\ä½A¾/[¾B‹¾ξ+í¾9¿S¿o¿r¿õx¿"nÀ‘À°À*ÍÀøÀÁ3ÁDÁXÁlÁ€Á žÁ «Á ¸ÁÂÁËÁæÁ—/ÂÇÂÏÂìÂHòÂ;Ã,OÃ|Ã}›ÃDÄ^ÄfÄDÄÄÄÔÄÛÄ:÷Ä-2ÅÈ`Æ()Ç$RÇwÇŒÇÇ|¯Ç.,È#[È‘È}ÉgÉ ÷É ÊÊÊ,8ÊeʀʛʴÊÔÊôÊ ËË'Ë0ËEËLËeË:nË©Ë»Ë ÁËÎËäË úË Ì3Ì3DÌxÌÌ0¦Ì×ÌàÌïÌ þÌ Í2ÍJÍRÍœoÍ Î Î,Î4ÎEÎVÎfÎ v΃Γ΢ÎG±ÎùÎ Ï Ï%ÏBÏTÏ6oϦÏÀÏÛÏêÏ ùÏ ÐÐ,ÐJÐdÐ|ЎШмÐÖÐ%éÐÑ)ÑCÑ[ÑoÑ€Ñ ÑœÑ«Ñ$ÀÑåÑ$ÿÑ $Ò 1Ò!;Ò]ÒnÒ}Ò"ŽÒ!±ÒÓÒ"íÒ!Ó2ÓLÓ—fÓ!þÓ Ô=ÔLÔaÔwÔˆÔÔ®ÔÃÔUÓÔ)Õ>ÕVÕoÕ„ÕšÕ·Õ.ÔÕÖ@ÖWÖ`Ö”hÖHýÖxF׿×Î×!ç× Ø!Ø&5Ø7\Ø”Ø —Ø=£Ø)áØ ÙÓÙîÙ> ÚQHÚ šÚ¤¤Û+IÜ#uÜV™ÜlðÜY]Ý·Ý ×Ý'øÝ- ÞyNÞXÈÞ%!ßHGß?ßGÐß*à!Cà=eà#£á(Çá*ðá&â,BâCoâs³â6'ãJ^ã9©ãdãã‰HäFÒäxåQ’å{äåÑ`æ;2çnçzÿç~zèùè é  éê5êRê[êkê€êœêI±êÒûê7Îë$ì+ìGì\ìƒnìhòì[í‘kíýíîî,î#Hîlîî™î ©î ´îÁî×î)öî* ïKïjï‰ïžï¹ï!Îïðï ðð &ðGð&^ð,…ð ²ðÓðîð$ñ+,ñ+Xñw„ñüñ ò'ò:òCò[òsò Žò›ò(®ò×òçòìò/ôò'$ó LóXóqóŠóQŽó:àógô?ƒô Ãô2Ðôrõvõ{õŽõ+ õ'Ìõôõ$üõ&!öHö`öeököqöwö~ö†öö”ö˜öö £ö ±ö»ö Ëö Ùöåö íö'ûö#÷3÷ M÷ Z÷#h÷|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Czech Language: cs_CZ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3; X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: cs X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (zmÄ›nÄ›no) (neuloženo)%d výskyt v kódu%d výskyty v kódu%d výskytů v kódu%d výskytů v kódu%d položka%d položky%d položek%d položekByla pÅ™ed-pÅ™eložena %d položka.Byly pÅ™ed-pÅ™eloženy %d položky.Bylo pÅ™ed-pÅ™eloženo %d položek.Bylo pÅ™ed-pÅ™eloženo %d položek.%d chyba%d chyby%d chyb%d chybDoÅ¡lo k %d chybÄ›.DoÅ¡lo k %d chybám.DoÅ¡lo k %d chybám.DoÅ¡lo k %d chybám.DoÅ¡lo k %d chybÄ›:DoÅ¡lo k %d chybám:DoÅ¡lo k %d chybám:DoÅ¡lo k %d chybám:Byl zjiÅ¡tÄ›n %d problém se zdrojovými Å™etÄ›zci.Byly zjiÅ¡tÄ›ny %d problémy se zdrojovými Å™etÄ›zci.Byly zjiÅ¡tÄ›no %d problémů se zdrojovými Å™etÄ›zci.Byly zjiÅ¡tÄ›no %d problémů se zdrojovými Å™etÄ›zci.Nalezen %d problém s pÅ™ekladem.Nalezeny %d problémy s pÅ™ekladem.Nalezeno %d problémů s pÅ™ekladem.Nalezeno %d problémů s pÅ™ekladem.%i řádek souboru „%s“ nebyl naÄten správnÄ›.%i řádky souboru „%s“ nebyly naÄteny správnÄ›.%i řádků souboru „%s“ nebylo naÄteno správnÄ›.%i řádků souboru „%s“ nebylo naÄteno správnÄ›.%s formátNastavení %su%s formátByl importován %s pÅ™eklad.Byly importovány %s pÅ™eklady.Byly importováno %s pÅ™ekladů.Byly importováno %s pÅ™ekladů.&O aplikaci&O aplikaci Poedit&Použít&ZpÄ›t&Storno&Vymazat&Zavřít&Kopírovat&Smazat&Hotovo a další&Hotovo a dalšíÚpra&vy&Soubor&Najít…Dokumentace GNU gettextDokumentace GNU gettextPÅ™e&jítS&eskupit podle kontextuS&eskupit podle kontextu&NápovÄ›da&Nový&Nový…&Další >&Další pÅ™eklad&Další pÅ™ekladN&e&OK&NápovÄ›da online&NápovÄ›da online&Otevřít...&Otevřít…&VložitNasta&veníNasta&vení…&PÅ™edchozí pÅ™eklad&PÅ™edchozí pÅ™eklad&Vlastnosti…&Smazat staré pÅ™eklady&Smazat staré pÅ™eklady&KonecP&rovést znovuNah&radit&UložitUložit &jako&Zobrazit výskyty v kódu&Zobrazit výskyty v kóduÚvodní oknoÚvodní okno&PÅ™eklad&ZpÄ›t&NepÅ™eložené položky jako první&NepÅ™eložené položky jako první&Aktualizovat ze zdrojového kódu&Aktualizovat ze zdrojového kódu&Zkontrolovat pÅ™eklad&Zkontrolovat pÅ™eklad&Zobrazení&Ano(výchozí jazyk)(napÅ™ihlášený)(vyžaduje Windows 8 nebo novÄ›jší)< &PÅ™edchozíO aplikaci %sÚÄetÚÄtyPÅ™idatPÅ™idat komentářPÅ™idat soubory…PÅ™idat složky…PÅ™idat projektPÅ™idat zástupný Å™etÄ›zec…PÅ™idat komentářPÅ™idat adresář do seznamuPÅ™idat soubory…PÅ™idat složky…PÅ™idat projektPÅ™idat zástupný Å™etÄ›zec…Další klíÄová slovaDalší parametry pro xgettext:PokroÄiléPokroÄilá nastavení extrakce…PokroÄilá nastavení extrakcePokroÄilá nastavení extrakce…VÅ¡echny pÅ™ekladové souboryVÅ¡echny komentářeVÅ¡echny Å™etÄ›zcePoužít také výchozí klíÄová slova pro podporované jazykyVždy zaměřovat vstupní pole pro pÅ™ekladDoÅ¡lo k chybÄ›.Položka seznamu vstupních souborů:Položka seznamu klíÄových slov:VzhledPoužítPÅ™ibližné shody z pÅ™ekladové pamÄ›tiOpravdu chcete „%s“ extraktor smazat?Opravdu chcete pÅ™ekladovou paměť vymazat?Automaticky kontrolovat dostupnost aktualizacíPÅ™i uložení automaticky zkompilovat MO souborZpÄ›tZákladní cesta:Beta verze obsahují nejnovÄ›jší funkce a vylepÅ¡ení, ale mohou mít problémy se spolehlivostí.PÅ™enést vÅ¡e do popÅ™edíŠpatný katalog: verze msgstr pro plurál použita bez msgid_pluralÅ patný katalog: verze msgstr pro singulár použita spolu s msgid_pluralNeplatné znaÄky v textu pÅ™ekladu.ProcházetProcházet souboryVe výchozím nastavení jsou zahrnuty i nepÅ™esné výsledky, ale jsou oznaÄeny jako vyžadující pozornost. ZaÅ¡krtnÄ›te tuto volbu, pokud chcete zahrnout pouze pÅ™esné shody.StornoUkonÄuji…Nelze vytvoÅ™it adresář na doÄasné soubory.Není možné spustit program: %sNení možné pÅ™ed-pÅ™ekládat z neznámého jazyka.Bez zdrojového textu není možné pÅ™ed-pÅ™ekládat.První písmena velkáSprávce &katalogůSprávce &katalogůSprávce katalogůZmÄ›nit jazykZnaková sada:Zkontrolovat dokumentKontrolovat i gramatikuKontrolovat pravopis bÄ›hem psaníVyhledat aktualizace…Zkontrolovat, zda pÅ™eklad neobsahuje chybyVyhledat aktualizace…Kontrolovat pravopisVymazatVyprázdnit menuSmazat pÅ™ekladVyprázdnit menuSmazat pÅ™ekladZavřítCloudVýskyty v kóduVýskyty v kóduSpolupracujte s dalšími lidmi online.Probíhá shromažÄování zdrojových souborů…Příkaz pro extrakci pÅ™ekladů:KomentářKomentář:Komentáře zaÄínající Å™etÄ›zcem:Zkompilovat do MO…Zkompilovat do…Zkompilované pÅ™ekladové souboryParametry pro extrakci ze zdrojového kódu nastavte ve Vlastnostech katalogu.PotvrzeníPropojte Poedit s podporovanými cloudovými lokalizaÄními platformami a bezproblémovÄ› synchronizujte pÅ™eklady, které jsou na nich spravovány.KopírovatZkopírovat ze singuláruZkopírovat ze zdrojového textuZkopírovat ze singuláruZkopírovat ze zdrojového textuAutomaticky opravovat pravopisNepodaÅ™ilo se stáhnout detaily projektu Localazy.Nelze naÄíst soubor, pravdÄ›podobnÄ› je poÅ¡kozený.Soubor %s nelze uložit.VytvoÅ™it novýVytvoÅ™it nový pÅ™ekladVytvoÅ™te nový pÅ™eklad z Å¡ablony POT.VytvoÅ™it nový pÅ™ekladový projektCrowdin chybaCrowdin je online platforma pro správu pÅ™ekladů a nástroj pro kolaborativní pÅ™eklad. Sami používáme Crowdin k pÅ™ekladu Poeditu do mnoha jazyků a máme jej rádi.Vyjmou&tUživatelské extraktory:Uživatelské extraktory:Upravit panel nástrojů…VyjmoutVelikost databáze:SmazatVymazat z pÅ™ekladové pamÄ›tiSmazat extraktorVymazat z pÅ™ekladové pamÄ›tiOdstranit projektOdstranit komentářOdstranit projektOdstranÄ›ní projektu nesmaže žádné pÅ™ekladové soubory.Zjišťování rozdílů…Adresáře:Chcete odstranit projekt „%s“?Chcete soubor znovu naÄíst z disku? Pokud tak uÄiníte, vaÅ¡e neuložené úpravy v Poedit budou ztraceny.Chcete odstranit vÅ¡echny pÅ™eklady, které jsou identické se zdrojovým textem?Chcete odstranit vÅ¡echny již nepoužívané pÅ™eklady?&NeukládatNeukládatPříštÄ› nezobrazovatPÅ™esné shody neoznaÄovat jako vyžadující pozornostPříštÄ› nezobrazovatStahování nejnovÄ›jších pÅ™ekladů…Stahování pÅ™ekladů je pro tento projekt zakázáno.Sem pÅ™etáhnÄ›te složky nebo souborySem pÅ™etáhnÄ›te složky nebo soubory&KonecE&xportovat do HTML…UpravitUpravit &komentářUpravit &komentářUpravit komentářUpravit komentářUpravit projektUpravit projektEditaceUpravit…E-mail:Zobrazit na celou obrazovkuU položek v souboru je použit jiný poÄet forem plurálu, než jaký je nastaven v hlaviÄce Plural-FormsPoložky s chybami jako prvníPoložky s chybami jako prvníPoložky obsahující chyby byly v seznamu zvýraznÄ›ny Äervenou barvou. Podrobnosti o chybÄ› se zobrazí po vybrání chybné položky.PÅ™i otevírání souboru doÅ¡lo k chybÄ›Chyba pÅ™i ukládání souboruChyba pÅ™i naÄítání souboru XLIFF: %sChyba: ChybyVÅ¡ePÅ™esné shody z pÅ™ekladové pamÄ›tiIgnorovat cestyExportovat do TMX…Exportovat jako…E&xportovat do HTML…Exportovat do TMX…Exportování do HTMLExport pÅ™ekladové pamÄ›ti do „%s“ selhal.Probíhá export pÅ™ekladů…Extrahovat ze zdrojových souborůExtrahovat poznámky pro pÅ™ekladatele z:Extrahovat text ze zdrojových souborů v tÄ›chto adresářích:Probíhá extrakce pÅ™eložitelných Å™etÄ›zců z %s souboru…Probíhá extrakce pÅ™eložitelných Å™etÄ›zců ze %s souborů…Probíhá extrakce pÅ™eložitelných Å™etÄ›zců z %s souborů…Probíhá extrakce pÅ™eložitelných Å™etÄ›zců z %s souborů…Nastavení extraktoruExtraktoryNelze komunikovat s procesem Poeditu.NepodaÅ™ilo se extrahovat Å™etÄ›zce ze zdrojového kódu.NepodaÅ™ilo se naÄíst soubor s rozbalenými pÅ™eklady.SluÄování gettext katalogů se nezdaÅ™ilo.Aktualizace pÅ™ekladové pamÄ›ti se nezdaÅ™ila: %sSouborSoubor nelze otevřítSoubor „%s“ neexistuje.Soubor „%s“ není soubor pÅ™ekladů.Soubor „%s“ je jen pro Ätení a není možné jej pÅ™epsat. Uložte katalog pod jiným názvem.NajítNajít dalšíNajít pÅ™edchozíNajít a nahradit…Hledat v komentáříchHledat ve zdrojových textechHledat v pÅ™ekladechNajít dalšíNajít pÅ™edchozíOpravit jazykOpravit jazykOpravit hlaviÄkuOpravit hlaviÄkuSoubory pÅ™ekladů FlutterForma %iForma %i (nepoužitá)GNU gettextObecnéSoubory HTMLNápovÄ›daSkrýt postranní panelSkrýt stavový řádekSchovat toto oznámeníJak funguje synchronizace do cloudu?IDPokud budete pokraÄovat, vÅ¡echny pÅ™eklady oznaÄené jako smazané budou natrvalo odstranÄ›ny. Pokud budou přísluÅ¡né Å™etÄ›zce pozdÄ›ji pÅ™idány zpÄ›t, tak je budete muset znovu pÅ™eložit.Pokud jste dříve odepÅ™eli přístup k souborům, můžete jej povolit v PÅ™edvolby systému > ZabezpeÄení a soukromí > Soukromí > Soubory a složky.Pokud jste dříve odepÅ™eli přístup k souborům, můžete jej povolit v Nastavení systému > Soukromí a zabezpeÄení > Soubory a složky.IgnorovatIgnorovat velikost písmenImportovat z TMX…Importovat soubory pÅ™ekladů…Importovat z TMX…Importovat soubory pÅ™ekladů…Probíhá import z „%s“…Import pÅ™ekladové pamÄ›ti se nezdaÅ™il.Probíhá import pÅ™ekladů…V %sUpozorňovat na beta verzeNekonzistentní malá/velká písmenaNekonzistentní mezery a bílé znakyInformace o pÅ™ekladateliNainstalovatNeplatný souborSpuÅ¡tÄ›ní:ProblémProblémySoubory pÅ™ekladů JSONPonechatNázev nebo kód jazykaJazyk pÅ™ekladu je shodný s jazykem zdroje.Jazyk pÅ™ekladu není nastaven.Jazyk pÅ™ekladu:VýbÄ›r jazykaPÅ™ekladatelský tým:Jazyk:Poslední zmÄ›naPodrobnosti o klíÄových slovech gettextPodrobnosti o formách pluráluDalší informaceDalší informace o %sDalší informace o CrowdinDalší informace o GNU gettextŘádekŘádek %d souboru „%s“ je poÅ¡kozený (neplatná data v %s).Konce řádků:Seznam přípon oddÄ›lených stÅ™edníky (napÅ™. *.cpp;*.h):NaÄíst angliÄtinuLocalazy je vysoce automatizovaná lokalizaÄní platforma, která umožňuje komukoli snadno pÅ™ekládat své produkty a obsah do více jazyků.Poedit nepodporuje přímou úpravu MO souborů.VÅ¡echna písmena maláVÅ¡echna písmena velkáVytvoÅ™it nový pÅ™eklad z tohoto POT souboru.PoÅ¡kozená hlaviÄka: „%s“Spravovat úÄtySpravovat…SluÄování rozdílů…MinimalizovatNázev projektu, pro který je pÅ™eklad urÄenJméno:Další &nedokonÄenáDalší &nedokonÄenáVyžaduje úpravyVyžaduje úpravyChyba sítÄ›: %s (%d)Nikdy nezaměří seznam s Å™etÄ›zci. Pokud je tato volba aktivní, je k pohybu v seznamu Å™etÄ›zců pomocí klávesnice nutné použít Ctrl+Å¡ipky. Na druhou stranu ale umožňuje rovnou zaÄít psát text, bez nutnosti maÄkat Tab.NovýNový z &POT/PO souboru…Nové Å™etÄ›zceNový z &POT/PO souboru…Nové Å™etÄ›zceNové Å™etÄ›zce k pÅ™ekladu:Další forma pluráluDalší forma pluráluNeNenalezena žádná shodaNebyly pÅ™ed-pÅ™eloženy žádné položky.V souboru nejsou uvedeny žádné informace o výskytu tohoto Å™etÄ›zce ve zdrojovém kódu.Nenalezena žádná shodaV pÅ™ekladu nebyly nalezeny žádné problémy.Ve vaÅ¡em úÄtu nemáte nastaveny žádné pÅ™ekladové projekty.Žádné informace o použitíNejsou pÅ™eloženy vÅ¡echny formy plurálu.NedostateÄná oprávnÄ›ní, zkuste se znovu pÅ™ihlásit.Poznámky pro pÅ™ekladateleOKJedenPovolte pouze pokud důvěřujete kvalitÄ› použité pÅ™ekladové pamÄ›ti. Ve výchozím nastavení jsou vÅ¡echny pÅ™eklady doplnÄ›né z pÅ™ekladové pamÄ›ti oznaÄeny jako vyžadující pozornost a mÄ›ly by být pÅ™ed použitím zkontrolovány.Doplnit pouze pÅ™i pÅ™esné shodÄ›Otevřít pÅ™eklad z cloudu…Otevřít poslední položkuOtevÅ™ete a editujte pÅ™ekladové soubory.Otevřít pÅ™eklad z clouduOtevřít pÅ™eklad z cloudu…Otevřít souborOtevřít v editoruOtevřít v editoruOtevřít nedávnéOtevřít referenÄní souborOtevřít...Otevřít…MožnostiOstatníPÅ™edchozí ne&dokonÄenáPÅ™edchozí ne&dokonÄenáSoubory pÅ™ekladů POÅ ablony pÅ™ekladů POTSoubory POT jsou jen Å¡ablony a samy o sobÄ› neobsahují žádné pÅ™eklady. Pro vytvoÅ™ení pÅ™ekladu vytvoÅ™te na základÄ› Å¡ablony nový PO soubor.VložitVložit a pÅ™izpůsobit stylCestyProvede aktualizaci ze zdrojového kódu na vÅ¡ech souborech v projektu.Přístup odepÅ™en.V pÅ™ekladu chybí zástupný znak „%s“.Správnost zástupných znakůMísto toho otevÅ™ete a upravte odpovídající soubor PO. Poté co ho uložíte, bude automaticky aktualizován i soubor MO.Nejdříve soubor uložte, jinak nebude možné tuto sekci editovat.PlurálPÅ™eklady forem pluráluVýraz pro formy plurálu používá pro jazyk %s nezvyklý formát.Formy plurálu:PoeditPoedit - správce katalogůPoedit automaticky opravil chybný obsah souboru „%s“.Poedit se může pokusit pÅ™edvyplnit nové položky s pomocí pÅ™edchozích pÅ™ekladů v souboru, nebo s pomocí celé vaší pÅ™ekladové pamÄ›ti. Použití pÅ™ekladové pamÄ›ti nebude ze zaÄátku příliÅ¡ efektivní, ale jak jí postupnÄ› naplníte pÅ™eklady, bude se její efektivita zlepÅ¡ovat.Poedit nemůže zobrazit zdrojový kód, kde se používá Å™etÄ›zec, protože soubor není k dispozici v odkazovaném umístÄ›ní, nebo je to symbolický odkaz, který neukazuje na skuteÄný soubor.Poedit je jednoduchý editor pÅ™ekladů.Poedit nemohl otevřít soubor "%s".PÅ™ed-pÅ™eloži&t…PÅ™ed-pÅ™eložitPÅ™ed-pÅ™eloženoPÅ™ed-pÅ™eložen %u Å™etÄ›zecPÅ™ed-pÅ™eloženy %u Å™etÄ›zcePÅ™ed-pÅ™eloženo %u Å™etÄ›zcůPÅ™ed-pÅ™eloženo %u Å™etÄ›zcůPÅ™ed-pÅ™ekládání z pÅ™ekladové pamÄ›ti…Probíhá pÅ™edběžný pÅ™eklad…PÅ™ed-pÅ™eklad automaticky vyhledá pÅ™esné a pÅ™ibližné shody pro nepÅ™eložené Å™etÄ›zce v pÅ™ekladové pamÄ›ti a vyplní jejich pÅ™eklady.PÅ™ed-pÅ™eklad vyžaduje, aby byl k dispozici zdrojový text. Nefunguje, pokud jsou použity pouze ID bez skuteÄného textu.PÅ™ed-pÅ™eložení vyžaduje znalost zdrojového jazyka. Poedit jej v tomto souboru nedokázal zjistit.PÅ™edvolbyPÅ™edvolby...Nasta&vení…Příprava Å™etÄ›zců…Zachovat stávající formátování souboruPÅ™edchozí forma pluráluPÅ™edchozí forma pluráluPůvodní zdrojový textPÅ™edchozí editovaný pÅ™ekladPÅ™edchozí editovaný pÅ™ekladNázev a verze projektu:Název projektu:Projekt:ProjektyKontroly interpunkceSmazat&Smazat staré pÅ™ekladyUkonÄitÄŒtení obsahu souboru selhalo s následující chybou: %sNedávné souboryZnovuAktualizovatZnovu naÄíst souborZnovu naÄíst souborZbývá: %dOdstranitOdstranit pÅ™eklady identické se zdrojovým textemOdstranit pÅ™eklady identické se zdrojovým textemOdstranÄ›né Å™etÄ›zceOdstranÄ›né Å™etÄ›zceOdstranÄ›né Å™etÄ›zce (již se nepoužívají):NahraditN&ahradit vÅ¡eN&ahradit vÅ¡eNahradit zaNa&hradit…V hlaviÄce chybí povinná položka Plural-Forms.VymazatVymazat pÅ™ekladovou paměťVymazáním pÅ™ekladové pamÄ›ti nenávratnÄ› smažete vÅ¡echny v ní uložené pÅ™eklady. Po provedení této akce už neexistuje žádná možnost obnovy.Ukázat ve FinderuZkontrolovatUložitUložit j&ako…Uložit j&ako…PÅ™esto uložitPÅ™esto uložitUložit jakoUložit jako…Uložit zmÄ›nyUložit souborUkládání do jiného umístÄ›ní není u souborů XCLOC podporováno.Snímky obrazovky:Vybr&at vÅ¡eVybrat vÅ¡eVybrat soubory TMX k importuVyberte adresářVybrat soubor s pÅ™eklademVyberte pÅ™ekladové soubory, které chcete importovatVybrat Å¡ablonu pÅ™ekladuVyberte preferovaný jazykNastavit jazykNastavit jazykNastaveníNastavení…Zobrazit postranní panelZobrazit pravopis a gramatikuZobrazit stavový řádekZobrazit &ID Å™etÄ›zcůZobrazit náhradyZobrazit panel nástrojůZobrazit varováníUkázat v PrůzkumníkoviUkázat ve složceZobrazit nebo skrýt postranní panelZobrazit postranní panelZobrazit stavový řádekZobrazit &ID Å™etÄ›zcůZobrazit varováníPostranní panelPÅ™ihlásit seOdhlásit sePÅ™ihlásit sePÅ™ihlásit se do %sPÅ™ihlásit se do cloudového úÄtuPÅ™ihlásit se do CrowdinPÅ™ihlásit se do cloudového úÄtuOdhlásit seSingulárChytré kopírování/vkládáníChytré pomlÄkyChytré odkazyChytré uvozovkySeÅ™adit podle poÅ™adí v &souboruSeÅ™adit podle &zdrojového textuSeÅ™adit podle &pÅ™ekladuSeÅ™adit podle poÅ™adí v &souboruSeÅ™adit podle &zdrojového textuSeÅ™adit podle &pÅ™ekladuZnaková sada zdrojáků:Extraktory zdrojového kódu slouží k vyhledání pÅ™eložitelných Å™etÄ›zců v souborech zdrojového kódu a jejich extrakci pro úÄely pÅ™ekladu.Zdrojový kód není k dispozici.Zdrojový kód nebyl nalezenZdrojový textID zdrojového textuZdrojový text — %sKlíÄová slovaProhledávané cestyKlíÄová slovaProhledávané cestyPÅ™edÄítáníKontrola pravopisu je zakázána, protože slovník pro jazyk %s není nainstalován.Pravopis a gramatikaSpustit pÅ™edÄítáníUkonÄit pÅ™edÄítáníUložené pÅ™eklady:Kontext Å™etÄ›zce: %sIdentifikátor Å™etÄ›zce: %sDélka Å™etÄ›zce ve znacíchDélka Å™etÄ›zce ve znacích: pÅ™eklad | zdrojHledaný Å™etÄ›zecProjekty Crowdin založené na Å™etÄ›zcích nejsou podporovány.NáhradyNávrhyPokud 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.NadbyteÄný zástupný znak „%s“, který není ve zdrojovém textu.Podporuje vÅ¡echny jazyky podporované nástroji GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript a další).SynchronizovatSynchronizovat s CrowdinSynchronizovat pÅ™eklad s CrowdinProbíhá synchronizaceChyba synchronizaceSynchronizace s Crowdin se nezdaÅ™ila.Syntaktická chyba v hlaviÄce Plural-Forms („%s“).TMSoubory TMXNaÄte pÅ™eložitelné Å™etÄ›zce z existující POT Å¡ablony.Název týmu a e-mailová adresa nebo URLNáhrady textuPÅ™ekladová paměť neobsahuje žádné texty podobné obsahu tohoto souboru. Poloautomaticky je schopna efektivnÄ› pÅ™ekládat teprve poté, co se Poedit nauÄí dostatek dat z ruÄnÄ› pÅ™eložených souborů.TMX soubor je poÅ¡kozený.ZmÄ›ny provedené jinou aplikací budou po uložení ztraceny.Soubor se nepodaÅ™ilo zkompilovat do formátu MO a není tak možné ho použít.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 vyžadující pozornost a v případÄ› potÅ™eby je opravit.Katalog nemohl být uložen ve znakové sadÄ› „%s“ zadané ve vlastnostech katalogu. Místo toho byl uložen v UTF-8 a nastavení bylo přísluÅ¡nÄ› zmÄ›nÄ›no.Soubor byl zmÄ›nÄ›n. Chcete uložit zmÄ›ny?Poedit nerozpoznal formát souboru.Soubor byl zkompilován do formátu MO, ale pravdÄ›podobnÄ› nebude pracovat správnÄ›.Soubor byl úspěšnÄ› uložen a zkompilován do formátu MO, ale pravdÄ›podobnÄ› nebude fungovat správnÄ›.Soubor byl úspěšnÄ› uložen, ale nepůjde jej zkompilovat do formátu MO a používat.Soubor byl úspěšnÄ› uložen.Soubor „%s“ nelze otevřít.Soubor „%s“ se nepodaÅ™ilo uložit.Soubor „%s“ byl zmÄ›nÄ›n jinou aplikací.Původní zdrojový text (než byl pÅ™i aktualizaci zmÄ›nÄ›n), kterému odpovídá použitý a nyní nepÅ™esný pÅ™eklad.Nejjednodušším způsobem naplnÄ›ní tohoto souboru je jeho aktualizace z POT souboru:Na zaÄátku pÅ™ekladu chybí mezera.Na konci pÅ™ekladu je odřádkování, které není ve zdrojovém textu.Na konci pÅ™ekladu je mezera, která není ve zdrojovém textu.PÅ™eklad je ukonÄen „%s“, ale zdrojový text je ukonÄen „%s“.Na konci pÅ™ekladu chybí odřádkování.Na konci pÅ™ekladu chybí mezera.PÅ™eklad je pÅ™ipraven k použití, ale %d položka jeÅ¡tÄ› není pÅ™eložená.PÅ™eklad je pÅ™ipraven k použití, ale %d položky jeÅ¡tÄ› nejsou pÅ™eloženy.PÅ™eklad je pÅ™ipraven k použití, ale %d položek jeÅ¡tÄ› není pÅ™eloženo.PÅ™eklad je pÅ™ipraven k použití, ale %d položek jeÅ¡tÄ› není pÅ™eloženo.PÅ™eklad je pÅ™ipraven k použití.PÅ™eklad by mÄ›l být ukonÄen „%s“.PÅ™eklad by nemÄ›l být ukonÄen „%s“.PÅ™eklad by mÄ›l zaÄínat jako vÄ›ta.PÅ™eklad by mÄ›l zaÄínat malým písmenem.Na zaÄátku pÅ™ekladu je mezera, která není ve zdrojovém textu.PÅ™eklady byly oznaÄeny jako vyžadující pozornost, protože mohou být nepÅ™esné. MÄ›li byste je zkontrolovat.V souboru nejsou žádné pÅ™eklady. To je neobvyklé.PÅ™i formátování souboru doÅ¡lo k chybÄ› (ale byl úspěšnÄ› uložen).PÅ™i nahrávání pÅ™ekladů do Localazy doÅ¡lo k chybÄ›.PÅ™i naÄítání katalogu doÅ¡lo k chybÄ›. NÄ›které pÅ™eklady mohou chybÄ›t nebo být poÅ¡kozené.Tato nastavení ovlivňují formátování PO souborů. Upravte je pokud máte specifické požadavky například kvůli správÄ› verzí.Tento JSON soubor neobsahuje pÅ™eklady a nelze jej v Poeditu editovat.Tato akce odstraní vÅ¡echny pÅ™eklady, které jsou pÅ™esnÄ› stejné jako zdrojový text. Tuto akci nelze vrátit zpÄ›t.V katalogu jsou položky s plurály, ale není nastavená hlaviÄka Plural-Forms.Tento soubor používá ID Å™etÄ›zců místo zdrojového textu. Poedit může naÄíst anglické texty ze souboru „%s“.Tento příkaz bude použit ke spuÅ¡tÄ›ní extraktoru. %o bude nahrazeno názvem výstupního souboru, %K seznamem klíÄových slov, %F seznamem vstupních souborů a %C parametrem znakové sady (viz níže).Tento Å™etÄ›zec byl nalezen v pÅ™ekladové pamÄ›ti Poeditu.Tento parametr bude do příkazové řádky vložen jen pokud byla zadána znaková sada zdrojových souborů. %c bude nahrazeno znakovou sadou.Tento parametr bude do příkazové řádky vložen jednou pro každý vstupní soubor. %f bude nahrazeno názvem souboru.Tento parametr bude do příkazové řádky vložen jednou pro každé klíÄové slovo. %k bude nahrazeno klíÄovým slovem.CelkemTransformacePÅ™i použití systému gettext nejsou položky pÅ™ekladu pÅ™idávány ruÄnÄ›, ale jsou automaticky extrahovány ze zdrojového kódu. Tak zůstávají aktuální a pÅ™esné. PÅ™ekladatelé vÄ›tÅ¡inou používají PO Å¡ablony (soubory POT) pÅ™ipravené vývojáři.PÅ™eložit cloudový projektPÅ™eloženo: %d z %d (%d %%)PÅ™ekladJazyk pÅ™ekladuPÅ™ekladová paměť&PÅ™eklad vyžaduje úpravyVlastnosti pÅ™ekladuPÅ™ekladový soubor je již aktuální, žádné Å™etÄ›zce se nezmÄ›nily.PÅ™ekladový soubor byl aktualizován s %s zmÄ›nou.PÅ™ekladový soubor byl aktualizován s %s zmÄ›nami.PÅ™ekladový soubor byl aktualizován s %s zmÄ›nami.PÅ™ekladový soubor byl aktualizován s %s zmÄ›nami.Databáze pÅ™ekladové pamÄ›ti je poÅ¡kozená: %s (%d).Chyba pÅ™ekladové pamÄ›ti: %s (%d).&PÅ™eklad vyžaduje úpravyVlastnosti pÅ™ekladuNávrhy pÅ™ekladuNávrhy pÅ™ekladů vyžadují, aby byl k dispozici zdrojový text. Nefungují, pokud jsou použity pouze ID bez skuteÄného textu.Návrhy pÅ™ekladů vyžadují znalost zdrojového jazyka. Poedit jej v tomto souboru nedokázal zjistit.PÅ™eklad — %sPÅ™eklady nebylo možné aktualizovat ze zdrojového kódu, protože v umístÄ›ní uvedeném ve Vlastnostech souboru nebyl nalezen žádný kód.DvaUTF-8 (doporuÄeno)ZpÄ›tV souboru XCLOC neoÄekávanÄ› chybí obsah.DoÅ¡lo k neoÅ¡etÅ™ené výjimce: %sUnix (doporuÄeno)Neznámá chyba Crowdinu.Neznámá chybaNepÅ™eložAktualizovatVýsledek aktualizaceAktualizovat vÅ¡echny katalogyAktualizovat vÅ¡echny katalogy v projektuAktualizovat vÅ¡echny katalogy v projektu?Aktualizovat z &POT souboru…Aktualizovat z &POT souboru…Aktualizovat z kóduAktualizovat z POT souboruAktualizovat z kóduAktualizovat ze zdrojového kóduVýsledek aktualizaceAktualizaceAktualizace selhalaAktualizace katalogů v projektuAktualizace pÅ™ekladůAktualizace informací o uživateli…Odesílání pÅ™ekladů do %s se nezdaÅ™ilo.Odesílání pÅ™ekladů do %s…Odesílání pÅ™ekladů…Použít vlastní výrazPoužít vlastní písmo pro seznam:Použít vlastní písmo pro textová pole:Použít výchozí pravidla pro tento jazykUvedená klíÄová slova (názvy funkcí) se použijí k rozeznání pÅ™eložitelných Å™etÄ›zců ve zdrojovém kódu:Použít pÅ™ekladovou paměťZkontrolovatVýsledky kontrolyVerze %sZobrazit podrobnosti…Zobrazit podrobnosti…Čekání na ověření…Varování: Vítá vás PoeditPÅ™i aktualizaci ze zdrojových souborůJen celá slovaOknoWindowsChcete použít angliÄtinu pro zdrojový text?Po dosažení konce hledat od zaÄátkuZalomit po:Soubory pÅ™ekladů XLIFFKatalog pÅ™ekladů XcodeAnoPÅ™eložitelné Å™etÄ›zce můžete také extrahovat přímo ze zdrojového kódu:Na okno Poeditu nelze pÅ™etáhnou více než jeden soubor.Nemáte oprávnÄ›ní Äíst soubory zdrojového kódu z umístÄ›ní uvedeného ve vlastnostech souboru.Tato zmÄ›na se projeví až po opÄ›tovném spuÅ¡tÄ›ní Poeditu.VaÅ¡e jménoPokud je neuložíte, pÅ™ijdete o vÅ¡echny zmÄ›ny.VaÅ¡e jméno a e-mail budou použity pouze k nastavení položky Last-Translator v hlaviÄce souborů GNU gettext.NulaPÅ™epnout velikostVyžaduje úpravynemazat doÄasné soubory (kvůli ladÄ›ní)například nplurals=2; plural=(n > 1);chyba: použít podobné položky v souborupÅ™ejít na položku na daném řádkuzpracovat poedit:// URIAlt+Ctrl+DolůEnterDolevaDopravaShift+NahorualtctrlshiftO aplikaci %sSkrýt %sSkrýt ostatníPÅ™edvolby...UkonÄit %sSlužbyZobrazit vÅ¡epÅ™ed-pÅ™eložit z pÅ™ekladové pamÄ›tineznámý jazyknepodporovaná verze (%s)varování: vy@example.czPOT soubor „%s“ je poÅ¡kozený.poedit-3.6.3/locales/ckb.mo0000644000175100001660000006331415011674363011224 Þ•:ì £¼H IU \jqwŽ£©­³¸ÀÒ ä ñþ $:PlˆŽ”š¶ÒØï  ) - 9F Ua {ˆ— '¶Þû 7 6X¯ ´¿ÒÙ à"î,>Pcl‡™«±ÌÕ ðý.E esx‘˜©¼ Ï?Ü  ) < "O 5r ¨ ® ³ Á Ï Ü é ö !!!(! ;! F!S!<m! ª!0µ!!æ!"( "6" ;" E"S"d" y" ƒ" ‘" ž"«"º"É"Ñ" Ù"ä" é"ö"#%#©(#Ò#Ù# ï#$ $%$(*$S$p$ ƒ$ $ ›$¦$<¿$.ü$+% F%P%g%p%v%‡% ˜% £%»®%j&n&‡&  &¬&%¯&Õ&Ø& Ü&è&÷& '''"'*'0'E'Z'o'‰'( (&(n9(¨(¯(¶(,Ð( ý( ) )&)5)D) ^)l)u){)–)›) ) ¨) ´)Â)Ê)Ð)é)ð)õ) ý) * * !*,*=* \* i* v*ƒ* “* * ¹*Æ*Ö*Þ*æ*ï*÷* +++0+@+U+i+y+Ž+£+ ¾+Ê+Ý+ î+ü+K,O, ^,l,~, †,”,+±,Ý,!à,L-mO-_½-[.y.. œ.¨.½.Ð.ã.ç.û.// /"%/H/W/_/o/…/¢/¼/VÒ/ )040R0d0u0|0„0œ07 0 Ø03â0a1x1}1‚1.Ÿ1Î1å1ø1 22/2B2V2f2w2‰2œ2µ2Ñ2ð2 3!3³<3ð455 +595S55c55™5Ï5 á5í5õ56 6676V6s66£6 ¶6Â6Ü6û6=7=X7 –7¢7 ½7CÉ7C 8 Q80]8;Ž8Ê8ß8 ó899 -9"N9q919 ¿9"à9:.:LG:E”:8Ú: ;U ;Sv;7Ê;<<%.< T<_<z<?˜<=Ø<(=(?=h=~=)•=¿=!Ô=!ö= >9%> _>@m>®>Ç>=à>=?.\?A‹?Í? à?3ê?@'@!6@X@v@–@gª@A.A,AA=nA\¬A B!B(:B(cB'ŒB'´B%ÜB)C,CECdC4wC¬CÀC4ÛCfDwDtŽDDE HE7SE‹EœEºE*ØE*F.FLFjFF)˜F)ÂF ìFøFGG#"G"FGGiG±GI´GþH$I,:IgI"zII5®IäI%ýI #J!-JOJ2eJY˜JnòJ)aK‹K*£KÎKåK$íK$L(7L(`L“‰LN:$N:_NšN ºNYÅNO(O/O.MO.|O«OÉOÛOíO P$P$;P"`P'ƒPî«P šQ¥Q(¶QÖßQ¶R»R0ÂRuóRiSS™S²SÎS"êS T "T.T@ET†T —T¢T!·T ÙTæTõT4 U?U_UyU%™U8¿U"øU!V$=V;bVžV¸V#ÒV$öV2W5NW#„W$¨WÍWÞWõWX#X?XNX.UX%„X+ªX.ÖX%Y++Y#WY5{Y±YÅY%äY% Z0Zw9Z ±Z%¿Z(åZ[/#[KS[KŸ[ë[Bî[Œ1\ž\ª„]¤/^ Ô^(ß^_!_=_[_s_z_™_°_Î_!ã_L` R`s`0ˆ`/¹`Ié`,3a1`aÜ’a ob,}bªbÉbèb÷b%ÿb%cŽ.c ½c[Ëc·'dßdæd(ýdI&e2pe£e©eÅeËeÒeÛeâeüeff f f@f\f{f4—f†w‘›#0.Ã.€D#r/À®[õµ3²´5ôâÕ¾í÷É16Ê*«‹'c 2ë¶¼gXߦ) %ý S"å W¹ö(ïÑ*·9˜Ù?t§úÄn‰Q4èÍø)ÌÖš&\Ø$Ÿ‡ƒ^ MkbÛ¿ùA­×VeŒvÓ ’ÐaZ—= BŽûçº4q¡îñfó¨_J¯]ŠÇ|8Ú1 >Ë,Ož,2yæ ¬:ÜNi3Å~0Ï/„j³!p°¢ÿ©5»:Iþ+ (äÎG7UTéP7ªx6Ý;H+½9`Á¤lu™hÞ$'œð-êá}£<F&  ¥{R… 8òÒÆÔz!¸%“CK숔dL–"±•‚m@sEÈü-ãàoY (modified)&About&About Poedit&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Go&Help&New&New…&Next Translation&Next translation&Online Help&Online help&Open...&Open…&Paste&Preferences&Previous Translation&Previous translation&Purge Deleted Translations&Purge deleted translations&Redo&Save&Undo&Untranslated Entries First&Untranslated entries first&View(Use default language)(requires Windows 8 or newer)About %sAccountsAddAdd CommentAdd Files…Add Folders…Add commentAdd directory to the listAdd files…Add folders…AdvancedAll Translation FilesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesBackBase path:Bring All to FrontBrowseCancelCancelling…Cannot create temporary directory.Cannot execute program: %sCatalogs &ManagerCatalogs &managerChange UI languageCharset:Check for Updates…ClearClear TranslationClear translationCloseCollecting source files…Comment:Compiled Translation FilesConfirmationCopyCopy from Source TextCopy from source textCreate new translationCreate new translations projectCrowdin errorCu&tCustomize Toolbar…CutDeleteDelete extractorDelete the commentDelete the projectDirectories:Do you want to remove all translations that are no longer used?Don’t SaveDon’t Show AgainDon’t show againDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEmail:Enter Full ScreenError opening fileEverythingExport as…Exporting translations…Extract text from source files in the following directories:ExtractorsFailed to load file with extracted translations.Failed to merge gettext catalogs.FileFile “%s†is not a translation file.FindFind NextFind PreviousFind in commentsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerForm %iGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageIDIf 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.IgnoreInclude beta versionsInformation about the translatorInstallInvalid fileKeepLanguage of the translation isn’t set.Language of the translation:Language selectionLanguage:Last modifiedLearn moreLearn more about CrowdinList of extensions separated by semicolons (e.g. *.cpp;*.h):MO files can’t be directly edited in Poedit.Malformed header: “%sâ€Manage…Merging differences…MinimizeName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNoNot authorized, please sign in again.OKOneOpen RecentOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePathsPermission denied.Please open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.PluralPoeditPoedit - Catalogs managerPoedit is an easy to use translation editor.Pre-translatePre-translatedPreferencesPreferences...Preferences…Project name and version:Project name:Project:PurgePurge deleted translationsQuitRedoRefreshReload FileRemaining: %dReplaceResetReset translation memoryReviewSaveSave asSave as…Save changesSelect &AllSelect AllSelect directorySelect your preferred languageSet LanguageSet languageShow SidebarShow Status BarShow ToolbarShow or hide the sidebarShow sidebarShow status barSidebarSign InSign OutSign inSign in to CrowdinSign outSingularSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code not available.Source textSource text — %sSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Start SpeakingStop SpeakingSync with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMThe translation is ready for use.There was a problem formatting the file nicely (but it was saved all right).This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation — %sTwoUTF-8 (recommended)UndoUnix (recommended)UpdateUpdate allUpdate all catalogs in the projectUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations…Use custom list font:Use these keywords (function names) to recognize translatable strings in source files:Version %sWaiting for authentication…Welcome to PoeditWhole words onlyWindowWindowsXLIFF Translation FilesYesYou must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)handle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemShow Allunknown language“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Sorani (Kurdish) Language: ckb_IR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: ckb X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (گۆڕدراو)&دەربارە&Poedit دەربارەی&داخستن&لەبەرگرتنەوە&سڕینەوە&جێبەجێکراو Ùˆ بچۆ دانەی دواتر&جێبەجێکراو Ùˆ بچۆ دانەی دواتر&دەستکاری&Ù¾Û•Ú•Ú¯Û•&بڕۆ&یارمەتی&نوێ&نوێ…&وەرگێڕانی دواتر&وەرگێڕانی دواتر&یارمەتی سەرهێڵ&یارمەتی سەرهێڵ&کردنەوە...&کردنەوە…&دانان&سازکارییەکان&وەرگێڕانی پێشتر&وەرگێڕانی پێشتر&پاکژکردنەوەی وەرگێڕانە سڕاوەکان&پاکژکردنەوەی وەرگێڕانە سڕاوەکان&دواتر&پاشەکەوت کردن&پێشتر&سەرەتا وەرنەگێڕدراوە تێئاخنراوەکان&سەرەتا وەرنەگێڕدراوە تێئاخنراوەکان&بینین(زمانی بنەڕەتی بەکاربهێنە)(پێویستی بە ویندۆزی Ù¨ یان نوێترە)<ناونەنراو>دەربارەی %sهەژمارزیادکردننووسینی لێدوانزیادکردنی پەڕگە…زیادکردنی Ùۆڵدەر…نووسینی لێدوانزیادکردنی پێڕست بۆ لیستەکەزیادکردنی پەڕگە…زیادکردنی Ùۆڵدەر…پەرەسەندووهەموو ÙØ§ÛŒÙ„ەکانی وەرگێڕانهەمیشە سەرنج بگۆڕە بۆ خانەی تێئاخنینی دەقدانەیەک Ù„Û• لیستەی تێئاخنینی پەڕگەکان:دانەیەک Ù„Û• لیستەی وشەکلیلەکان:ڕووکارئایا دڵنیایت Ù„Û• سڕینەوەی دەرهێنەری “%s†extractor؟ئایا دڵنیایت Ù„Û• Ø³ÙØ±Ú©Ø±Ø¯Ù†Û•ÙˆÛ•ÛŒ بیرگەی وەرگێڕان؟پشکنین بۆ نوێکردنەوە بەخۆکاریبڕۆدواوەڕێچکەی بنچینە:گشتی بۆ Ù¾ÛŽØ´Û•ÙˆÛ• بهێنەگەڕانهەڵوەشاندنەوەهەڵوەشاندنەوە…ناتوانرێت پێڕستی کاتی دروست بکرێت.ناتوانرێت پرۆگرام جێبەجێ بکرێت: %sسازکاریی &کەتەلۆگەکانسازکاریی &کەتەلۆگەکانگۆڕینی زمانKoma tîpan (Charset):پشکنین بۆ نوێکردنەوە…پاککردنەوەسڕینەوەی وەرگێڕانسڕینەوەی وەرگێڕانداخستنکۆکردنەوەی پەڕگەکانی سەرچاوە…لێدوان:ÙØ§ÛŒÙ„Û• وەرگێڕدراوە بەراوردکراوەکاندڵنیاییپێدانلەبەرگرتنەوەلەبەرگرتنەوەی Ù„Û• دەقی ژێدەرەکەوەلەبەرگرتنەوەی Ù„Û• دەقی ژێدەرەکەوەدروستکردنی وەرگێڕانی نوێدروستکردنی پرۆژەیەکی نوێی وەرگێڕانهەڵەی Crowdinبڕ&ینڕێکخستنی شریتی ئامرازەکان…بڕینسڕینەوەسڕینەوەی دەرهێنەرسڕینەوەی لێدوانسڕینەوەی پرۆژەکەپێڕستەکان:دەتەوێت هەموو ئەو وەرگێڕانە لاببەیت Ú©Û• چیتر بەکارنایەن؟پاشەکەوتی Ù…Û•Ú©Û•Don’t Show Againدووبارە پیشانی مەدەرەوەدابەزاندنی دوایین وەرگێرانەکان…لە پڕۆژەیەدا دابەزاندنی وەڕگێرانەکان لەکار خراوە.چوو&نەدەرەوەدەستکاریکردندەستکاریکردنی &لێدواندەستکاریکردنی &لێدواندەستکاریکردنی لێدواندەستکاریکردنی لێدواندەستکاریکردنی پرۆژەدەستکاریکردنی پرۆژەکەدەستکاریکردنپۆستی ئەلکترۆنی:Ù¾Ú• بە شاشەهەڵە هەیە Ù„Û• کردنەوەی ÙØ§ÛŒÙ„داهەموو شتێکهەناردن ÙˆÛ•Ú©Ùˆ...هەناردەکردنی وەرگێڕانەکان...دەرهێنانی دەق Ù„Û• پەڕگەکانی ژێدەرەوە Ù„Û• پێڕستەکانی دادێ:دەهێنەرەکاننەتوانرا ÙØ§ÛŒÙ„Û•Ú©Û• Ù„Û•Ú¯Û•Úµ وەرگێڕانە دەرهێندراوەکان بخوێندرێنەوە.لکاندنی کەتەلۆگەکان سەرکەوتوو نەبوو.Ù¾Û•Ú•Ú¯Û•Ù¾Û•Ú•Ú¯Û•ÛŒ "%s" Ù¾Û•Ú•Ú¯Û•ÛŒ وەرگیڕان نیە.دۆزینەوەدۆزینەوەی دواتردۆزینەوەی پێشتردۆزینەوە Ù„Û• لێدوانەکاندۆزینەوە Ù„Û• وەرگێڕاندادۆزینەوەی دواتردۆزینەوەی پێشترزمان چاک بکەزمان چاک بکەچاککردنەوەی ناوونیشانچاککردنەوەی ناوونیشانÙÛ†Ú•Ù… %iگشتیپەڕگەی HTMLیارمەتیشاردنەوەی لاتەنیشتشارنەوەی شریتی دۆخشاردنەوەی ئەم پەیامی ئاگادارکردنەوەیەIDئەگەر بەردەوام بیت Ù„Û•Ú¯Û•Úµ بەرکەنارخستن،هەموو ئەو وەرگێڕدراوانەی نیشانەکراون ÙˆÛ•Ú©Ùˆ سڕدراوە بە یەکجاریی لادەبرێن.ئەو کات دەبێت دووبارە وەریان بگێڕیتەوە ئەگەر زیادکران Ù„Û• داهاتوودا.Ùەرامۆشکردنهەروەها وەشانی بیتازانیاری دەربارەی وەرگێڕدابەزاندنجۆری ÙØ§ÛŒÙ„ نادروستەهێشتنەوەزمانی وەرگیڕان دیارینەکراوە.زمانی وەرگێڕ:هەڵبژاردنەکانی زمانزمان:دوایین گۆڕانکارییزیاتر بزانەCrowdin زانیاری زیاتر دەربارەیلیستێک Ù„Û• extensions جیاکرانەتەوە بە خاڵبۆر (e.g. *.cpp;*.h):ناتواندرێت راستەوخۆ پەڕەگەکانی MO Ù„Û• ناو Poedit دەستکاری بکرێت.ناونیشانی ناتەواو: '%sâ€Ø¨Û•ڕێوەبردن...لکاندنی جیاوازییەکان…بچوککردنەوەناو:تەواو&نەکراوی دواترتەواو&نەکراوی دواترپێویستی بە دەستکارییەپێویستی بە دەستکارییەهەرگیز Ù…Û•Ù‡ÛŽÚµÛ• لیستێک Ù„Û• زنجیرەنووسەکان سەرنج ببەن.ئەگەر چالاککرا،پێویستە Ctrl- Ùˆ ئاراستەکان بەکاربهێنیت بۆ ڕێنیشاندەرەکانی تەختەکلیل بەڵام دەشتوانیت بەخێرایی دەق بنووسیت بە بێ ئەوەی کرتە لەسەر تاب بکەیت بۆ گۆڕینی سەرنج.نوێنوێکردنەوە Ù„Û• Ù¾Û•Ú•Ú¯Û•ÛŒ &POT/PO ـەوە…نوێکردنەوە Ù„Û• Ù¾Û•Ú•Ú¯Û•ÛŒ &POT/PO ـەوە…زنجیرەنووسەی نوێنەخێردەسەڵاتی Ù¾ÛŽÙ‰ نەدراوە، تكايە دووبارە بڕۆ ژوورەوە.باشەیەککردنەوەی دوایینکردنەوە Ù„Û• دەستکاریکەرداکردنەوە Ù„Û• دەستکاریکەرداکردنەوەی دوایینکردنەوە…کردنەوە...هەڵبژاردنەکانجۆری ترتەواو&نەکراوی پێشووتەواو&نەکراوی پێشووبوخچەی وەڕگێرانی POتێمپلەتى وەرگێڕانی POTÙØ§ÙŠÙ„Ù‰ POT تەنها تێمپلەتن Ùˆ هیچ وەرگێڕان Ù„Û• خۆيان ناگرن. وەرگێڕان دروەست دەکەن، پەڕگەیەکی PO ÛŒ نوێ دروست بكە لەسەر بنەماى تێمپلەتەكە.دانانڕێچکەکانڕێگەپێدان ڕەتکرایەوە.تکایە Ù¾Û•Ú•Ú¯Û•ÛŒ PO دووبارە بکەرەوە Ùˆ دەستکاری بکە Ù„Û• جیاتی ئەمە. کاتێک تۆ پاشەکەوتی دەکەیت, پەرگەی MO بە باشی نوێ دەبێتەوە.Ú©Û†PoeditPoedit - سازکاریی کەتەلۆگەکانPoedit دەستکاریکەرێکی سادە Ùˆ ئاسان Ù„Û• بەکارهێنانە بۆ وەرگێڕانەکان.Ù¾ÛŽØ´-وەرگێڕانپێش-وەرگێڕانهەڵبژاردەکانهەڵبژاردەکان...هەڵبژاردەکان...ناو Ùˆ وەشانی پرۆژە:ناوی پرۆژە:Ù¾Ú•Û†Ú˜Û•:پاکژکردنەوەپاکژکردنەوەی وەرگێڕانە سڕدراوەکانوازهێنانپێشترنوێکردنەوەبارکردنەوەی پەڕگەماوە: %dØ¬ÛŽÚ¯Û†Ú•ÛŒÙ†Ú•ÛŽÚ©Ø®Ø³ØªÙ†Û•ÙˆÛ•Ø³ÙØ±Ú©Ø±Ø¯Ù†Û•ÙˆÛ•ÛŒ بیرگەی وەرگێڕانچاو پیاخشاندنەوەپاشەکەوت کردنپاشەکەوتکردن وەکپاشەکەوت کردن وەکو…پاشەکەوت کردنی گۆڕانکارییەکاندیاریکردنی &هەموویدیاریکردنی هەموویپێڕست دەستنیشان بکەزمانی پەسەندکراوت دەستنیشان بکەڕێکخستنی زمانڕێکخستنی زمانپیشاندانی لاتەنیشتپیشاندانی شریتی دۆخپیشاندانی شریتی ئامرازەکانپیشاندان Ùˆ شارنەوەی لاتەنیشتپیشاندانی لاتەنیشتپیشاندانی شریتی دۆخلاتەنیشتچونەژوورەوەدەرچوونچونەژوورەوەCrowdin چونەژوورەوە بۆدەرچوونتاکڕێکخستن بەپێی &ڕیزی پەڕگەڕێکخستن بەپێی &ژێدەرڕێکخستن بەپێی &وەرگێڕانڕێکخستن بەپێی &ڕیزی پەڕگەڕێکخستن بەپێی &ژێدەرڕێکخستن بەپێی &وەرگێڕانهێڵکاری کۆدی ژێدەر:کۆدی سەرچاوە کراوە بوونی نیە.دەقی ژێدەرسەرچاوەی دەق — %sژێدەرەکانی کلیلەوشەژێدەرەکانی ڕێچکەکاندەنگهەڵەگری زمانەوەانی ناچالاکە چونکە Ùەرهەنگ نامە بۆ %s دانەمەزراوە.قسە بکەراوەستاندنی قشەکردنCrowdin هاوکاتکردن Ù„Û•Ú¯Û•Úµ هاوکاتگەریهەڵە ڕوویدا Ù„Û• هاوکاتکردنهەماهەنگ کردن Ù„Û•Ú¯Û•Úµ Crowdin سەرکەوتوو نەبوو.Ù‡Û•ÚµÛ•ÛŒ ڕستەکار Ù„Û• ناوونیشانی ÙÛ†Ú•Ù…ÛŒ Ú©Û† ("%s").TMوەرگێڕانەکە ئامادەیە بۆ بەکارهێنان.کێشەیەک ڕوویدا Ù„Û• کاتی بەمەرجکردنی Ù¾Û•Ú•Ú¯Û•Ú©Û•(بەڵام هەرچۆنێک بێت پاشەکەوتکرا).ئەمە هاوپێچ دەکرێت بۆ دێڕی Ùەرمان تەنیا ئەگەر کۆدی هێڵکاریی ژێدەر درابوو. %c ÙØ±Ø§Ø§ÙˆØ§Ù†ÛŒ دەکات بۆ نرخی هێڵکاریی.ئەمە هاوپێچ دەکرێت بۆ دێڕی Ùەرمی یەکجار بۆ هەر پەڕگەیەکی تێچوو. %f ÙØ±Ø§ÙˆØ§Ù†ÛŒ دەکات بۆ ناوی Ù¾Û•Ú•Ú¯Û•.ئەمە هاوپێچ دەکرێت بۆ دێڕی Ùەرمی یەکجار بۆ هەر کلیلەوشەیەک. %k ÙØ±Ø§ÙˆØ§Ù†ÛŒ دەکات بۆ کلیلەوشەکە.هەموووەرگێڕدراو: %d Ù„Û• %d (%d %%)وەرگێڕانەکانزمانی وەرگێڕانبیرگەی وەرگێڕانوەرگێڕان — %sدووUTF-8 (پێشنیارکراو)پووچکردنەوەUnix (پێشنیارکراو)نوێکردنەوەنوێکردنەوەی هەموونوێکردنەوەی هەموو کەتەلۆگەکان Ù„Û• پرۆژەکەکورتە نوێ بکەرەوەنوێکردنەوەنوێکردنەوە سەرکەوتو نەبوونوێکردنەوەی وەرگێڕانەکاننوێکردنەوەی زانیارییەکانی بەکارهێنەر…بەرزکردنەوەی وەرگێران…بەکارهێنانی Ùۆنتی تایبەتی:ئەم کلیلەوشانە بەکاربهێنە(ناوی نەخشەکان) بۆ ناسینەوەی ئەو زنجیرەنووسانەی دەتوانرێت وەربگێڕدرێت Ù„Û• پەڕگەکانی ژێدەرەکە:وەشان %sچاوەڕوانی ڕێگەپێدانبە…Poedit بەخێربێیت بۆتەنیا گشت وشەکانپەنجەرەWindowsÙ¾Û•Ú•Ú¯Û•ÛŒ وەرگێڕانی XLIFFبەڵێپێویستە دووبارە Poedit دەستپێبکەیتەوە بۆ ئەوەی گۆڕانکارییەکان شوێنی خۆیان بگرن.ناوی تۆگۆڕانکارییەکانت دەÙەوتێت ئەگەر پاشەکەوتی نەکەیت.ناوەکەت Ùˆ پۆستی ئەلکترۆنییەکەت تەنها بۆ ئەوە بەکاردێت Ú©Û• کۆتا-وەرگێڕ دیاریدەکات Ù„Û• Ù¾Û•Ú•Ú¯Û•ÛŒ وەرگێڕان.Ø³ÙØ±Ù†Ø²ÛŒÚ©Ø®Ø³ØªÙ†Û•وەپێویستی بە دەستکارییەپەڕگە کاتییەکان مەسڕەوە(بۆ ڕاستکردنەوە)هەڵسوکەوت بکە Ù„Û•Ú¯Û•Úµ poedit:// URICtrl+دوگمەی خوارەوەEnterچەپڕاستShift+دوگمەی سەرەوەaltctrlshiftدەربارەی %sئەوانی تر بشارەوەهەڵبژاردەکان...هەمووی پیشان بدەزمانی نەزانراو“%s' پەڕگەیەکی دروستی POT نییە.poedit-3.6.3/locales/ca.po0000644000175100001660000026376615011674363011070 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Catalan\n" "Language: ca_ES\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: ca\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Amaga aquesta notificació" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "No tornis a mostrar-ho" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "No tornis a mostrar-ho" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Resum de l’actualització" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Tanca" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Fitxer" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Cadenes noves" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "S’estan recopilant els fitxers de codi font…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "No s’ha pogut carregar el fitxer amb les traduccions extretes." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "A: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "El codi font no és disponible." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Les traduccions no es podran actualitzar des del codi font perquè no s’ha " "trobat codi a la ubicació especificada a les propietats del fitxer." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "S’hi ha denegat el permís." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "No teniu permís per a llegir els fitxers de codi font des de la ubicació " "especificada a les propietats del fitxer." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Si anteriorment heu denegat l'accés als vostres fitxers, podeu permetre-ho a " "Configuració del sistema > Privadesa i seguretat > Fitxers i carpetes." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Si heu denegat prèviament accès als vostres fitxers, podeu permetre-ho a les " "Preferències del sistema â–¸ Seguretat i privacitat â–¸ Privacitat â–¸ Carpetes i " "fitxers." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "No s’ha pogut obrir el fitxer «%s»." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "S’estan actualitzant les traduccions" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "S’estan fusionant les diferències…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "El format de la capçalera és incorrecte: «%s»" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Fitxers de traducció PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Plantilles de traducció .POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Fitxers de traducció XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Fitxers de traducció JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Fitxers de traducció del Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Tots els fitxers de traducció" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "El fitxer és en un format que el Poedit no reconeix." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Aquest fitxer JSON no és de traduccions i no es pot editar amb el Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Ha fallat la lectura del fitxer amb l’error següent: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "El fitxer «%s» és només de lectura i no es pot desar.\n" "Hauríeu de desar-lo amb un altre nom." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "No s’ha pogut desar el fitxer %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Captures de pantalla:" #: src/catalog_po.cpp:134 #, 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] "No s’ha carregat %i línia del fitxer «%s» correctament." msgstr[1] "No s’han carregat %i línies del fitxer «%s» correctament." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "La línia %d del fitxer «%s» està malmesa (dades %s no vàlids)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "El fitxer PO és malmès: la forma singular del msgstr s’ha fet servir " "conjuntament amb msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "El fitxer PO és malmès: la forma plural del msgstr s’ha fet servir sense " "msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "No s’ha pogut carregar el fitxer; és probable que estigui malmès." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "S’han produït errors en carregar el fitxer. És possible que manquin algunes " "dades o que estiguin malmeses." #: src/catalog_po.cpp:1289 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 " "correctament)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "No s’ha pogut desar el fitxer en el joc de caràcters «%s» com s’especifica " "en la configuració de traducció.\n" "\n" "Se n’ha desat en UTF-8 i el paràmetre s’ha modificat en conseqüència." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "S’ha produït un error en desar el fitxer" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "«%s» no és un fitxer POT vàlid." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "S’ha produït un error en carregar el fitxer XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "no s’admet la versió (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Etiquetatge incorrecte en la cadena de la traducció." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Com funciona la sincronització amb el núvol?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Compte" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Obre una traducció al núvol" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Gestiona els comptes" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projecte:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Llengua:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "No hi ha cap projecte de traducció enumerat al vostre compte." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "S’estan baixant les traduccions més recents…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sincronització" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "S’ha produït un error de sincronització" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Afegeix" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "S’ha produït un error desconegut al Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "No s’ha autoritzat l’acció. Inicieu una sessió de nou." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Aquest projecte ha inhabilitat les baixades de traduccions." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Inicia la sessió" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Inicia la sessió" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Finalitza la sessió" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Finalitza la sessió" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Més informació sobre el Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "S’està esperant l’autenticació…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "S’està actualitzant la informació de l’usuari…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Inicia la sessió al Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "La sincronització amb el Crowdin ha fallat." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Error del Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "S’estan pujant les traduccions…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Copia" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Més informació" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Ajuda" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Els fitxers MO no es poden editar directament al Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "S’ha produït un error en obrir el fitxer" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Obriu i editeu el fitxer .po corresponent en el seu lloc. Quan ho deseu, el " "fitxer .mo s’actualitzarà." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "no suprimeixis els fitxers temporals (per a la depuració)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "gestiona un URI poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "vés a l’element al número de línia donat" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Ha fallat la comunicació amb el procès del Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "S’ha produït una excepció no controlada: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Seleccioneu la plantilla de traducció" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "El fitxer no és vàlid" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Seleccioneu el fitxer de traducció" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "El Poedit és un editor de traduccions fàcil d’utilitzar." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "No podeu deixar anar més d’un fitxer a la finestra del Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "El fitxer «%s» no és de traducció." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "El fitxer «%s» no existeix." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "La correcció ortogràfica está inhabilitada perquè no s’ha instal·lat el " "diccionari de l’idioma %s." #: src/edframe.cpp:871 msgid "Install" msgstr "Instal·la" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "S’ha modificat el fitxer «%s» amb una altra aplicació." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Torna a carregar el fitxer" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Voleu tornar a carregar el fitxer des del disc? Els canvis sense desar del " "Poedit es perdran si ho feu." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignora" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Torna a carregar el fitxer" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "S’ha modificat el fitxer. Voleu desar els canvis?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Desa els canvis" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Els canvis es perdran si no els deseu." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Desa" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&No ho desis" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "No ho desis" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "Els canvis fets per l’altra aplicació es perdran si deseu." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Cancel·la" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Desa igualment" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Desa igualment" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Anomena i desa…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Compila com a…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Fitxers de traducció compilats" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Exporta com a HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Fitxers HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "L’actualització ha fallat" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Actualitza des d’un fitxer &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Actualitza des d’un fitxer &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "S’ha trobat %d problema amb la traducció." msgstr[1] "S’han trobat %d problemes amb la traducció." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Resultats de la validació" #: src/edframe.cpp:1842 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 "" "Les entrades amb errors s’han marcat en vermell a la llista. Els detalls de " "l’error es mostraran quan seleccioneu l’entrada." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "El fitxer s’ha desat amb seguretat." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "El fitxer s’ha desat amb seguretat i compilat en el format MO, però és " "probable que no en funcioni correctament." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "El fitxer s’ha desat amb seguretat, però no es pot compilar i usar en el " "format MO." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "El fitxer s’ha compilat en el format MO, però probablement no funcionarà " "correctament." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "No és possible compilar el fitxer en el format MO per a utilitzar-lo." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "No s’ha trobat cap problema amb la traducció." #: src/edframe.cpp:1894 #, 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] "" "La traducció ja és a punt per a fer-se servir, però encara no s’ha traduït " "%d cadena." msgstr[1] "" "La traducció ja és a punt per a fer-se servir, però encara no s’han traduït " "%d cadenes." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "La traducció ja és a punt i podeu utilitzar-la." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "El Poedit ha corregit automàticament el contingut no vàlid al fitxer «%s»." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "El fitxer contenia elements duplicats. Això no es permet als fitxers PO; en " "cas contrari el fitxer no es podria fer servir. El Poedit ha corregit el " "problema, però hauríeu de revisar les traduccions de qualssevol elements " "marcats com a difusos i corregir-les si cal." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "No s’ha establert la llengua de la traducció." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Estableix la llengua" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Estableix la llengua" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 seran disponibles si no es defineix la llengua de " "traducció correctament. Altres funcions, com ara les formes dels plurals, " "també poden resultar afectades." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "La llengua de traducció es la mateixa que la de partida." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Corregeix l’idioma" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Corregeix l’idioma" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Aquest fitxer té entrades amb formes plurals, però no té la capçalera Plural-" "Forms configurada." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Les entrades d’aquest fitxer tenen un nombre total de formes plurals " "diferent del que diu la capçalera Plural-Forms del fitxer" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Falta la capçalera necessària «Plural-Forms»." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Hi ha un error de sintaxis a la capçalera Plural-Forms («%s»)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Corregeix la capçalera" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Corregeix la capçalera" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "L’expressió de formes plurals usada pel fitxer és inusual per al %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Repassa" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Voleu utilitzar anglès com a text de partida?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Aquest fitxer usa identificadors de cadena en comptes de text de partida. El " "Poedit pot carregar textos en anglès des del fitxer «%s» per vós." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Carrega l’anglès" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduït: %d/%d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Resten: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d error" msgstr[1] "%d errors" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrada" msgstr[1] "%d entrades" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (no desat)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (modificat)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Ha fallat l’actualització de la memòria de traducció: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Mantingues-les" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Elimina" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Purga les traduccions suprimides" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Voleu suprimir totes les traduccions que ja no s’utilitzen?" #: src/edframe.cpp:2879 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 "" "Si continueu amb la purga, totes les traduccions marcades com a suprimides " "s’eliminaran permanentment. Si continueu amb la supressió, les haureu de " "traduir de nou en cas que es tornin a afegir en un futur." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Purga-les" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Copia del text de partida" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Copia del text de partida" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Neteja la traducció" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Neteja la traducció" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Edita el comentari" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Edita el comentari" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Ocurrències al codi" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Ocurrències al codi" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Amaga la barra lateral" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Mostra la barra lateral" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Amaga la barra d’estat" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Mostra la barra d’estat" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Llargària de la cadena en caràcters: traducció | original" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Longitud de la cadena en caràcters" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Text de partida" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singular" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plural" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Traducció" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pretraduïda" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Cal revisar" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Cal revisar" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Crea una traducció nova" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Feu una traducció nova a partir d’aquest fitxer POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Id. del text de partida" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Tot" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Forma %i (no utilitzada)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Zero" #: src/editing_area.cpp:788 msgid "One" msgstr "Un" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dos" #: src/editing_area.cpp:804 msgid "Other" msgstr "Altres" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Context de la cadena: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identificador de la cadena: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Format %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Traducció — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "Id." #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Text de partida — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "idioma desconegut" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "No s’han pogut fusionar els catàlegs del gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Obre en l’editor" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Obre en l’editor" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Al fitxer no es proporciona cap informació de les aparicions d'aquesta " "cadena al codi font." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "No s'ha trobat informació sobre l'ús" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d ocurrència al codi" msgstr[1] "%d ocurrències al codi" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "No s’ha trobat el codi font" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "El Poedit no pot mostrar el codi font on es fa servir la cadena, ja sigui " "perquè el fitxer no està disponible al lloc referit o perquè és una " "referència simbòlica que no apunta a cap fitxer real." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "No es pot obrir el fitxer" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "El Poedit no ha pogut obrir el fitxer «%s»." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Troba" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Substitueix" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opcions" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignora majúscules/minúscules" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Continua la cerca des de l’inici" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Només les paraules senceres" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Troba als texts de partida" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Troba a les traduccions" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Cerca als comentaris" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Reemplaça-ho &tot" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Reemplaça-ho &tot" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Reemplaça" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Anterior" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Següent >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Cadena a trobar" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Cadena de substitució" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Nom o codi de llengua" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Llengua de la traducció" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Llengua de la traducció:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Totes les cadenes" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "No s’han pogut baixar els detalls del projecte al Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projectes" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Més informació quant al %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "El Localazy és una plataforma de regionalització altament automatitzada que " "permet qualsevol persona de traduir productes i continguts a diverses " "llengües de manera fàcil." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Afegeix un projecte" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Afegeix un projecte" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit. Gestor de catàlegs" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Edita…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Crea un projecte de traduccions nou" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Suprimeix el projecte" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Edita el projecte" #: src/manager.cpp:176 msgid "Update all" msgstr "Actualitza-ho tot" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Actualitza tots els catàlegs del projecte" #: src/manager.cpp:378 msgid "Total" msgstr "Total" #: src/manager.cpp:379 msgid "Untrans" msgstr "No traduïdes" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Cal revisar" #: src/manager.cpp:381 msgid "Errors" msgstr "Errors" #: src/manager.cpp:382 msgid "Last modified" msgstr "Darrera modificació" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Seleccioneu la carpeta" #: src/manager.cpp:433 msgid "Directories:" msgstr "Directoris:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Voleu suprimir el projecte «%s»?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Suprimeix el projecte" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Si suprimiu el projecte no es perdrà cap fitxer de traducció." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Confirmació" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Voleu actualitzar tots els catàlegs del projecte?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" "Efectua una actualització a partir del codi font per a tots els fitxers del " "projecte." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Comprova si hi ha actualitzacions…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Gestor de catàlegs" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Preferències…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Edita" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Desfés" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Refés" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Enganxa amb el mateix estil" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Suprimeix" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Ortografia i gramàtica" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Mostra l’ortografia i la gramàtica" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Comprova el document ara" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Comprova l’ortografia mentre s’escriu" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Comprova la gramàtica amb l’ortografia" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Corregeix l’ortografia automàticament" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Substitucions" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Mostra les substitucions" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Copia/enganxa intel·ligentment" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Cometes tipogràfiques" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Guions intel·ligents" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Enllaços intel·ligents" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Substitució del text" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformacions" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Converteix a majúscules" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Converteix a minúscules" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Majúscules inicials" #: src/menus.cpp:237 msgid "Speech" msgstr "Veu" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Inicia la veu" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Atura la veu" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Visualitza" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Mostra la barra d’eines" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Personalitza la barra d’eines…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Pantalla sencera" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Finestra" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimitza" #: src/menus.cpp:264 msgid "Zoom" msgstr "Escala" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Benvingut/uda al Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Envia tot al capdavant" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informació sobre el traductor" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nom:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "El vostre nom" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Adreça electrònica:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "vós@exemple.cat" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "El vostre nom i adreça electrònica s’utilitzen només per a establir el valor " "de la capçalera «Last-Translator» als fitxers de GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Edició" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Compila el fitxer MO automàticament en desar" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Comprova l’ortografia" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Canvia sempre el focus al camp d'introducció de text" #: src/prefsdlg.cpp:211 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 "" "Mai permetis que el llistat de cadenes obtingui el focus. Si està habilitat, " "haureu d'emprar les Ctrl+fletxes per la navegació amb el teclat, però també " "podreu escriure immediatament sense haver de prémer Tab per a canviar el " "focus." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Aparença" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Lletra personalitzada per a les llistes:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Lletra personalitzada per als camps de text:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Canvia l’idioma de la interfície" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(cal el Windows 8 o més recent)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "General" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Utilitza la memòria de traducció" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Gestiona…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "En actualitzar des del codi font" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "inclou-hi concordances aproximades" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pretradueix des de l’MT" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "El Poedit pot intentar emplenar entrades noves només des de traduccions " "prèvies en el fitxer o des de la vostra memòria completa de traduccions. " "Utilitzar l’MT no serà gaire efectiu si la memòria està pràcticament buida, " "però millorarà a mesura que hi afegiu traduccions noves." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Traduccions emmagatzemades:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Mida de la base de dades al disc:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importa fitxers de traducció…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importa fitxers de traducció…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importa des de TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importa des de TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Exporta com a TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Exporta com a TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Reinicialitza" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Seleccioneu els fitxers de traducció que s’han d’importar" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Seleccioneu els fitxers TMX que s’han d’importar" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Fitxers TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "S’estan important les traduccions…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exporta com a…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "S’estan exportant les traduccions…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Ha fallat l’exportació de la memòria de traducció cap a «%s»." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Esborra la memòria de traduccions" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Esteu segur que voleu reinicialitzar la memòria de traduccions?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Restablir la memòria de traducció irrevocablement en suprimirà totes les " "traduccions emmagatzemades. No podeu desfer aquesta operació." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "MT" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Memòria de traducció" #: src/prefsdlg.cpp:730 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 "" "Els extractors de codi font s’utilitzen per a trobar cadenes traduïbles dins " "els fitxers de codi font i extreure-les de manera que es puguin traduir." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Extractors personalitzats:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Extractors personalitzats:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Admet tots els llenguatges de programació que les eines del GNU gettext " "reconeixen (PHP, C/C++, C#, Perl, Python, Java, JavaScript, entre d’altres)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Suprimeix l’extractor" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Esteu segur que voleu suprimir l’extractor «%s»?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extractors" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Comptes" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Comprova si hi ha actualitzacions automàticament" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Inclou les versions beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Les versions beta contenen les funcionalitats i millores més recents, però " "poden ser una mica menys estables." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Actualitzacions" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Aquests ajusts afecten el format intern dels fitxers PO. Ajusteu-los si " "teniu requisits específics, per exemple, pel control de versions." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Finals de línies:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (recomanat)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Ajusta a:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Preserva la formatació dels fitxers existents" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Avançades" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Paràmetres" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "S’estan preparant les cadenes…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "S’està pretraduint a partir de la memòria de traducció…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "S’ha pretraduït %u cadena" msgstr[1] "S’han pretraduït %u cadenes" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "S’està pretraduint…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "S’ha pretraduït %d entrada." msgstr[1] "S’han pretraduït %d entrades." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Les traduccions s’han marcat per a revisar, ja que poden ser inexactes. " "Hauríeu de revisar-les per a garantir-ne la correctesa." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "No s’ha pogut pretraduir cap entrada." #: src/pretranslate.cpp:218 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 "" "L’MT no conté cap cadena similar al contingut d’aquest fitxer. Només en serà " "efectiva per a traduccions semiautomàtiques quan el Poedit hagi après prou " "dels fitxers que traduïu manualment." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "No es pot pretraduir sense text font." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pretradueix" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Únicament emplena les coincidències exactes" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "No marquis les coincidències exactes com a difuses" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Habiliteu-la només si confieu en la qualitat de l’MT. Per defecte, totes les " "coincidències de l’MT es marquen com a difuses i es deuen revisar." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "La traducció prèvia detecta automàticament coincidències exactes o " "aproximades de cadenes sense traduir en la memòria de traducció i n’omple " "les traduccions." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "S’està cancel·lant…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Deixeu anar carpetes o fitxers aquí" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Deixeu anar carpetes o fitxers aquí" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Afegeix carpetes…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Afegeix carpetes…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Afegeix fitxers…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Afegeix fitxers…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Afegeix un comodí…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Afegeix un comodí…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Mostra al Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Mostra a l’Explorador" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Mostra a la carpeta" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Camins" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Camins exclosos" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Paràmetres d’extracció avançats" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Extreu les notes per a traductors des de:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Comentaris prefixats per:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Tots els comentaris" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Senyaladors addicionals de l’xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Paraules clau addicionals" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Nom del projecte pel qual és la traducció" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Nom de l’equip i adreça electrònica o URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p. ex., nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomanat)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "Deseu el fitxer primer. No es pot editar aquesta secció fins llavors." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Traduccions de formes plurals" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "No s’han traduït totes les formes dels plurals." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Inconsistència de majúscules/minúscules" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "La traducció ha de començar com una frase." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "La traducció ha de començar amb un caràcter en minúscula." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Espai en blanc inconsistent" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "La traducció no comença amb un espai." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "La traducció comença amb un espai, però el text de partida no." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "A la traducció hi falta un salt de línia al final." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "La traducció acaba amb un salt de línia, però el text de partida no." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "A la traducció hi falta un espai al final." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "La traducció acaba amb un espai, però el text de partida no." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Comprovacions de puntuació" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "La traducció ha d’acabar amb «%s»." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "La traducció no ha d’acabar amb «%s»." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "La traducció acaba amb «%s», però el text de partida acaba amb «%s»." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Neteja el menú" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Neteja el menú" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Comentari:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Actualitza" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Suprimeix" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Suprimeix el comentari" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Edita el projecte" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nom del projecte:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Navega" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Afegeix el directori a la llista" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "D’acord" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Fitxer" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Nova…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nova a partir d’un fitxer &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nova a partir d’un fitxer &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Obre…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Obre recents" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Obre recents" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Obre una traducció al núvol…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Obre una traducció al núvol…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Finestra d’&inici" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Finestra d’&inici" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Gestor de catàlegs" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Gestor de catàlegs" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Tanca" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Desa" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "&Anomena i desa…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "&Anomena i desa…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Compila com a MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Comprova si hi ha actualitzacions…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Configuració…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Preferències" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Surt" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Surt" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Copia del singular" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Copia del singular" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Cal &revisar la traducció" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Cal &revisar la traducció" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "&Edita el comentari" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "&Edita el comentari" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Suggeriments" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Cerca…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Reemplaça…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Cerca el següent" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Cerca l’anterior" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Cerca i reemplaça…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Cerca el següent" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Cerca l’anterior" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Mostra l’&identificador de la cadena" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Mostra l’&identificador de la cadena" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Mostra els advertiments" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Mostra els advertiments" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "&Ordena per ordre de fitxer" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Ordena per &ordre de fitxer" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Ordena per &font" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Ordena per &font" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Ordena per &traducció" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Ordena per &traducció" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "A&grupa pel context" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "A&grupa pel context" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Primer les entrades amb errors" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Primer les entrades amb errors" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Primer les entrades no traduïdes" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Primer les entrades no traduïdes" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Mostra ocurrències del codi" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Mostra ocurrències del codi" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Mostra la barra lateral" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Mostra la barra d’estat" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Traducció" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "Actualitza des del codi &font" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "Actualitza des del codi &font" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sincronitza amb el Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pre&tradueix…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Valida les traduccions" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Valida les traduccions" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Purga les traduccions suprimides" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Purga les traduccions suprimides" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Propietats…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Navega" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Fet; següent" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Fet; següent" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Editada anteriorment" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Editada anteriorment" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Traducció &anterior" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Traducció &anterior" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Traducció &següent" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Traducció &següent" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Ante&rior no finalitzada" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Ante&rior no finalitzada" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "&Següent no finalitzada" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "&Següent no finalitzada" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Forma plural anterior" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Forma plural anterior" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Forma plural següent" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Forma plural següent" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Ajuda en línia" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Ajuda en línia" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Manual del &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Manual del &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Quant al Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Quant a" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Paràmetres de l’extractor" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Llistat d’extensions separades per punt i coma (p. ex. *.cpp,*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Invocació:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Ordre d’extracció de les traduccions:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Aquesta és l’ordre emprada per a iniciar l’extractor.\n" "%o s’expandeix al nom del fitxer de sortida, %K al llistat\n" "de paraules clau, %F al llistat de fitxers de sortida,\n" "%C al joc de caràcters (vegeu-ho més avall)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Un element de la llista de paraules clau:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Això s'adjuntarà a la línia d'ordres un cop\n" "per cada paraula clau. %k s'expandeix a la paraula clau." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Un element de la llista dels fitxers d'entrada:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Això s'adjuntarà a la línia d'ordres un cop\n" "per cada fitxer de sortida. %f s'expandeix al nom del fitxer." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Joc de caràcters del codi font:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Això s’adjuntarà a la línia d’ordres\n" "només si s’ha especificat el joc de caràcters d’origen. %c s’expandeix al " "valor del joc de caràcters." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Propietats de la traducció" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nom i versió del projecte:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Equip de traducció:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Formes dels plurals:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Fes servir les regles per defecte d’aquesta llengua" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Utilitza una expressió personalitzada" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Informació sobre les formes dels plurals" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Joc de caràcters:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Paràmetres d’extracció avançats…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Paràmetres d’extracció avançats…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Propietats de la traducció" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Camins de les fonts" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Camins de les fonts" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Extreu el text dels fitxers font dels següents directoris:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Camí base:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Paraules claus de les fonts" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Paraules clau de fonts" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Usa aquestes paraules clau (noms de funcions) per a reconèixer les\n" "cadenes traduïbles en els fitxers de codi font:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Utilitza també les paraules clau per defecte a les llengües admeses" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Més informació sobre les paraules clau del gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Obre el fitxer" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Desa el fitxer" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Valida" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Comprova si hi ha errors a la traducció" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Actualitza des del codi" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Actualitza des del codi" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Actualitza des del codi font" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Barra lateral" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Text font previ" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "El text de partida antic (abans que canviés durant una actualització) al " "qual correspon la traducció ara inexacta." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Notes per als traductors" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Comentari" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Afegeix un comentari" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Afegeix un comentari" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Suprimeix de la memòria de traducció" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Suprimeix de la memòria de traducció" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Suggeriments de traducció" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "No s’han trobat coincidències" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "No s’han trobat coincidències" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "S'ha trobat aquesta cadena en la memòria de traducció del Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "No es pot executar el programa: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "El fitxer TMX no és formatat correctament." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "La base de dades de la memòria de traducció és malmesa: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Hi ha un error a la memòria de traducció: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Utilitza la llengua per defecte)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Selecció de llengua" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Trieu la vostra llengua preferida" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Heu de reiniciar el Poedit perquè aquest canvi tingui efecte." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "No s’ha pogut crear el directori temporal." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "No hi ha traduccions. Això es inusual." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "La manera més senzilla d’omplir aquest fitxer amb traduccions es actualitzar-" "lo des d’un POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Actualitza des del POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Pren cadenes traduïbles d'una plantilla POT existent." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "També podeu extreure cadenes traduïbles directament del codi font:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Extreu des de les fonts" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Configureu l’extracció de codi font a Propietats." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versió %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Crea’n un de nou" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Crea una traducció nova a partir d’una plantilla POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Navega pels fitxers" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Obriu i editeu fitxers de traducció." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Fitxers recents" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sincronitza" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sincronitza la traducció amb el Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Quant al %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Preferències del %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Quant al %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Serveis" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Amaga el %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Amaga la resta" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Mostra-ho tot" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Surt del %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Preferències…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Preferències..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferències..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Aplica" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Aplica" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Enrere" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Enrere" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Cancel·la" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Neteja" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Neteja" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Copia" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Re&talla" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Retalla" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Edita" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Surt" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Ajuda" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nou" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Nou" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&No" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "No" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&D’acord" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Obre…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Obre…" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Obre…" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Enganxa" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Enganxa" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Preferències" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Refés" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Actualitza" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "Anomena i de&sa" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Anomena i desa" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Selecciona-ho &tot" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Selecciona-ho tot" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Desfés" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Sí" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Sí" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Maj+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Retorn" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Amunt" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Avall" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Esquerra" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Dreta" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "maj" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/tr.po0000644000175100001660000026724215011674230011114 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-26 10:16\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Bu uyarı iletisini gizle" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Bir Daha Gösterme" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Bir daha gösterme" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Güncelleme Özeti" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Güncelleme özeti" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Kapat" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Sorunlar" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Dosya" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Satır" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Sorun" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Yeni Dizgeler" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Yeni dizgeler" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Kaldırılmış Dizgeler" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Kaldırılmış dizgeler" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Kaynak dosyalar toplanıyor…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "%s dosyadan çevrilebilir dizgeler çıkarılıyor…" msgstr[1] "%s dosyadan çevrilebilir dizgeler çıkarılıyor…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Çıkarılan çevirilerle dosyayı yükleme baÅŸarısız." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Åžurada: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Kaynak kodu kullanılabilir deÄŸil." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Çeviriler kaynak kodundan güncellenemedi, çünkü dosyanın Özelliklerinde " "belirtilen konumda hiç kod bulunamadı." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "İzin reddedildi." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Dosyanın Özelliklerinde belirtilen konumdan kaynak kod dosyalarını okuma " "izniniz yok." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "EÄŸer dosyalarınıza eriÅŸimi daha önce reddettiyseniz, Sistem Ayarları > " "Gizlilik ve Güvenlik > Dosyalar ve Klasörler’de bu dosyaya izin " "verebilirsiniz." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "EÄŸer dosyalarınıza eriÅŸimi daha önce reddettiyseniz, Sistem Tercihleri > " "Güvenlik ve Gizlilik > Gizlilik > Dosyalar ve Klasörler’de bu dosyaya izin " "verebilirsiniz." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Kaynak kodundan dizgelerin çıkarılması baÅŸarısız oldu." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "“%s†dosyası açılamadı." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Çeviriler güncelleniyor" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Farklılıkları belirleniyor…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Farklılıklar birleÅŸtiriliyor…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "Çeviri dosyası zaten güncel, dizgelerde deÄŸiÅŸiklik yapılmadı." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Çeviri dosyası %s deÄŸiÅŸiklik ile güncellendi." msgstr[1] "Çeviri dosyası %s deÄŸiÅŸiklik ile güncellendi." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Çevrilecek yeni dizgeler:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Kaldırılmış dizgeler (artık kullanılmıyor):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "Kaynak dizgelerle ilgili %d sorun tespit edildi." msgstr[1] "Kaynak dizgelerle ilgili %d sorun tespit edildi." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Ayrıntıları Görüntüle…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Ayrıntıları görüntüle…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Hatalı oluÅŸturulmuÅŸ baÅŸlık: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO Çeviri Dosyaları" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT Çeviri Åžablonları" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF Çeviri Dosyaları" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode YerelleÅŸtirme KataloÄŸu" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON Çeviri Dosyaları" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter Çeviri Dosyaları" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Tüm Çeviri Dosyaları" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Dosya, Poedit tarafından tanınmayan bir biçimde." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "Bu JSON dosyası bir çeviri dosyası deÄŸil ve Poedit’te düzenlenemez." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Dosya içeriÄŸini okuma ÅŸu hata ile baÅŸarısız oldu: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "“%s†dosyası salt okunur olduÄŸundan kaydedilemez.\n" "Lütfen farklı bir ad ile kaydedin." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "%s dosyası kaydedilemedi." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Ekran Görüntüleri:" #: src/catalog_po.cpp:134 #, 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 satır “%s†dosyasından doÄŸru olarak yüklenmedi." msgstr[1] "%i satır “%s†dosyasından doÄŸru olarak yüklenmedi." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Satır %d, “%s†dosyasında bozulmuÅŸ (%s verisi geçerli deÄŸil)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Bozuk PO dosyası: tekil biçim msgstr, msgid_plural ile birlikte kullanılmış" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Bozuk PO dosyası: çoÄŸul biçim msgstr, msgid_plural olmadan kullanılmış" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Dosya yüklenemedi, muhtemelen zarar görmüş." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Dosya yüklenirken hatalar oldu. Sonuç olarak bazı veriler eksik veya " "bozulmuÅŸ olabilir." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Dosyanın güzel bir ÅŸekilde biçimlendirilmesinde bir sorun oldu (ama sorunsuz " "kaydedildi)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Dosya, çeviri ayarlarında belirtildiÄŸi gibi “%s†karakter kümesine " "kaydedilemedi.\n" "\n" "Bunun yerine UTF-8 olarak kaydedildi ve ayar buna göre deÄŸiÅŸtirildi." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Dosya kaydedilirken hata oldu" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†geçerli bir POT dosyası deÄŸil." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "XCLOC dosyasında beklenmedik bir ÅŸekilde eksik içerik." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Farklı bir konuma kaydetmek XCLOC dosyaları için desteklenmiyor." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF dosyası yüklenirken hata oldu: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "desteklenmeyen sürüm (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Çeviri dizgesinde bozuk iÅŸaretleme." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Üzerinde yönetilen çevirileri sorunsuz bir ÅŸekilde eÅŸitlemek için Poedit’i " "desteklenen bulut yerelleÅŸtirme platformlarına baÄŸlayın." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Bulut eÅŸitleme nasıl çalışır?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Hesap" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(giriÅŸ yapılmadı)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Bulut çeviriyi aç" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Hesapları yönet" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Proje:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Dil:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Bulut Hesabına GiriÅŸ Yapın" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Bulut hesabına giriÅŸ yapın" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Hesabınızda listelenen çeviri projeleri yok." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "En son çeviriler indiriliyor…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "%s için giriÅŸ yapın" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "EÅŸitleniyor" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Çeviriler %s üzerine yükleniyor…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Çevirilerin %s üzerine yüklenmesi baÅŸarısız oldu." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "EÅŸitleme hatası" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Ekle" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Bilinmeyen Crowdin hatası." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Yetkiniz yok, lütfen tekrar giriÅŸ yapın." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Dizge tabanlı Crowdin projeleri desteklenmiyor." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Bu projede çevirilerin indirilmesi etkisizleÅŸtirildi." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "GiriÅŸ Yap" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "GiriÅŸ yap" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Çıkış Yap" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Çıkış yap" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Crowdin hakkında daha fazla bilgi edinin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin, çevrimiçi çeviri yönetim platformu ve iÅŸbirliÄŸine dayalı çeviri " "aracıdır. Poedit’i birçok dile çevirmek için kendimiz Crowdin’i kullanıyoruz " "ve onu seviyoruz." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Kimlik doÄŸrulaması için bekleniyor…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Kullanıcı bilgileri güncelleniyor…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Crowdin'e giriÅŸ yapın" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Crowdin ile eÅŸitleme baÅŸarısız oldu." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin hatası" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Çeviriler gönderiliyor…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopyala" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Daha fazla bilgi edinin" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Yardım" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO dosyaları doÄŸrudan Poedit içinde düzenlenemez." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Dosya açılırken hata oldu" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Lütfen bunun yerine ilgili PO dosyasını açın ve düzenleyin. KaydettiÄŸinizde, " "MO dosyası da güncellenecektir." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "geçici dosyaları silme (hata ayıklama için)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "Bir poedit:// URI'si kullan" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "verilen satır numarasındaki öğeye git" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Poedit iÅŸlemi ile iletiÅŸim kurma baÅŸarısız." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Beklenmeyen bir hata oluÅŸtu: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Çeviri ÅŸablonunu seçin" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Geçersiz dosya" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Çeviri dosyasını seçin" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit kullanımı kolay bir çeviri düzenleyicisidir." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Poedit penceresine birden fazla dosyayı sürükleyip bırakamazsınız." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "“%s†dosyası bir çeviri dosyası deÄŸil." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "“%s†dosyası yok." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "%s için sözlük yüklü olmadığından yazım denetimi etkisizleÅŸtirildi." #: src/edframe.cpp:871 msgid "Install" msgstr "Yükle" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "“%s†dosyası baÅŸka bir uygulama tarafından deÄŸiÅŸtirildi." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Dosyayı yeniden yükle" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Dosyayı diskten yeniden yüklemek istiyor musunuz? Bunu yaparsanız " "Poedit’teki kaydedilmemiÅŸ düzenlemeleriniz kaybolacaktır." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Yoksay" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Dosyayı Yeniden Yükle" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Dosya deÄŸiÅŸtirildi. DeÄŸiÅŸiklikleri kaydetmek istiyor musunuz?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "DeÄŸiÅŸiklikleri kaydet" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "EÄŸer kaydetmezseniz yaptığınız deÄŸiÅŸiklikler kaybolacaktır." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Kaydet" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Kaydet&me" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Kaydetme" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Kaydederseniz diÄŸer uygulama tarafından yapılan deÄŸiÅŸiklikler kaybolacaktır." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "İptal" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Yine de Kaydet" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Yine de kaydet" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Farklı kaydet…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Åžuna derle…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "DerlenmiÅŸ Çeviri Dosyaları" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "HTML’ye aktar…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML Dosyaları" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "HTML’ye aktarılıyor" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Güncelleme baÅŸarısız oldu" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "BaÅŸvurma dosyasını aç" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "&POT Dosyasından Güncelle…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "&POT dosyasından güncelle…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Çeviride %d sorun bulundu." msgstr[1] "Çeviride %d sorun bulundu." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "DoÄŸrulama sonuçları" #: src/edframe.cpp:1842 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 "" "Hatalı giriÅŸler listede kırmızı renkle iÅŸaretlendi. Hatanın ayrıntıları " "böyle bir giriÅŸi seçtiÄŸinizde gösterilecektir." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Dosya güvenli bir ÅŸekilde kaydedildi." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Dosya güvenli bir ÅŸekilde kaydedildi ve MO biçiminde derlendi, ancak büyük " "olasılıkla doÄŸru olarak çalışmayacak." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Dosya güvenli bir ÅŸekilde kaydedildi, ancak MO biçiminde derlenemez ve " "kullanılamaz." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Dosya, MO biçiminde derlendi, ancak büyük olasılıkla doÄŸru olarak " "çalışmayacak." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Dosya, MO biçiminde derlenemez ve kullanılamaz." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Çeviri ile ilgili hiç sorun bulunmadı." #: src/edframe.cpp:1894 #, 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] "Çeviri kullanıma hazır, ancak henüz %d dizge çevrilmemiÅŸ." msgstr[1] "Çeviri kullanıma hazır, ancak henüz %d dizge çevrilmemiÅŸ." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Çeviri kullanıma hazır." #: src/edframe.cpp:2294 #, 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." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Dosyada, PO dosyalarında izin verilmeyen ve dosyanın kullanılmasını " "engelleyen birbirinin kopyası olan ögeler var. Poedit sorunu düzeltti, ancak " "çalışma gerekiyor olarak iÅŸaretlenen her bir ögenin çevirisini gözden " "geçirmeli ve gerekirse düzeltmelisiniz." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Çeviri dili ayarlı deÄŸil." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Dili ayarla" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Çeviri dili kaynak dil ile aynı." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Dili Düzelt" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Dili düzelt" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Bu dosya çoÄŸul biçimleri olan giriÅŸlere sahip, ancak ÇoÄŸul-Biçimli baÅŸlık " "yapılandırılmamış." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Bu dosyadaki giriÅŸler, dosyanın ÇoÄŸul-Biçim baÅŸlığında belirtilen sayıdan " "farklı çoÄŸul biçimlere sahip" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Gereken ÇoÄŸul-Biçin baÅŸlık bilgisi eksik." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "ÇoÄŸul-Biçim baÅŸlığında sözdizimi hatası (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "BaÅŸlığı Düzelt" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "BaÅŸlığı düzelt" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Dosya 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 file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Gözden geçir" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Kaynak metin için İngilizce kullanmak ister misiniz?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Bu dosya, kaynak metin yerine dizge kodlarını kullanır. Poedit İngilizce " "metinleri sizin için “%s†dosyasından yükleyebilir." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "İngilizce Yükle" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Çevrilen: %d / %d (%%%d)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Kalan: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d hata" msgstr[1] "%d hata" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d dizge" msgstr[1] "%d dizge" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (kaydedilmedi)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (deÄŸiÅŸtirildi)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "BaÅŸarısız olan çeviri belleÄŸi güncellemesi: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "“%s†dosyası kaydedilemedi." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Kaynakla aynı çevirileri kaldır" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Kaynak metinle aynı olan tüm çevirileri kaldırmak istiyor musunuz?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Bu eylem, kaynak metinle tam olarak eÅŸleÅŸen tüm çevirileri silecek. Bu geri " "alınamaz." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Tut" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Kaldır" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "SilinmiÅŸ çevirileri temizle" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "" "Artık kullanılmayan tüm çevirileri kaldırmak istediÄŸinize emin misiniz?" #: src/edframe.cpp:2879 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 "" "Temizleyerek devam ederseniz, silinmek üzere iÅŸaretlenmiÅŸ tüm çeviriler " "kalıcı olarak kaldırılacaktır. Gelecekte bunlar geri eklenirse, tekrar " "çevirmek zorunda kalacaksınız." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Temizle" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Kaynak metinden kopyala" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kaynak Metinden Kopyala" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Çeviriyi temizle" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Çeviriyi Temizle" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Açıklamayı düzenle" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Açıklamayı Düzenle" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Kod OluÅŸumları" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Kod oluÅŸumları" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Kenar ÇubuÄŸunu Gizle" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Kenar ÇubuÄŸunu Göster" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Durum ÇubuÄŸunu Gizle" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Durum ÇubuÄŸunu Göster" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Karakter olarak dizge uzunluÄŸu: çeviri | kaynak" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Karakter olarak dizge uzunluÄŸu" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Kaynak metin" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Tekil" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "ÇoÄŸul" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Çeviri" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Ön çeviri yapılmış" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Çalışma Gerekli" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Çalışma gerekli" #: src/editing_area.cpp:566 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 kendi baÅŸlarına herhangi bir çeviri " "içermezler.\n" "Bir çeviri yapmak için ÅŸablonu temel alan yeni bir PO dosyası oluÅŸturun." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Yeni çeviri oluÅŸtur" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Bu POT dosyasından yeni bir çeviri yapın." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Kaynak metin kimliÄŸi" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Her ÅŸey" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Biçim %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Form %i (kullanılmamış)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Sıfır" #: src/editing_area.cpp:788 msgid "One" msgstr "Bir" #: src/editing_area.cpp:790 msgid "Two" msgstr "İki" #: src/editing_area.cpp:804 msgid "Other" msgstr "DiÄŸer" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Dizge baÄŸlamı: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Dizge tanımlayıcısı: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s Biçimi" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s biçimi" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Çeviri — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "Kod" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Kaynak metin — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "bilinmeyen dil" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "AÄŸ hatası: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Bilinmeyen hata" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Gettext kataloglarını birleÅŸtirme baÅŸarısız." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Düzenleyicide Aç" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Düzenleyicide aç" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Dosyada bu dizgenin kaynak kodundaki oluÅŸumları hakkında saÄŸlanan hiç bilgi " "yok." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Kullanım bilgisi yok" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kod oluÅŸumu" msgstr[1] "%d kod oluÅŸumu" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Kaynak kodu bulunamadı" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit, dizgenin kullanıldığı kaynak kodu gösteremiyor, çünkü dosya ya " "baÅŸvurulan konumda mevcut deÄŸil ya da gerçek bir dosyayı göstermeyen " "sembolik bir baÅŸvurma." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Dosya açılamadı" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit “%s†dosyasını açamadı." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Bul" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "DeÄŸiÅŸtir" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Seçenekler" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Büyük/küçük harf yoksay" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Sona gelince baÅŸtan devam et" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Kelimelere aynen uyanları bul" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Kaynak metinlerde bul" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Çevirilerde bul" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Açıklamalarda bul" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "&Tümünü DeÄŸiÅŸtir" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "&Tümünü deÄŸiÅŸtir" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&DeÄŸiÅŸtir" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< Ön&ceki" #: src/findframe.cpp:152 msgid "&Next >" msgstr "So&nraki >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Bulunacak dizge" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "DeÄŸiÅŸtirilecek dizge" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "uyarı: " #: src/gexecute.cpp:171 msgid "error: " msgstr "hata: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Dil adı veya kodu" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Çeviri Dili" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Çeviri dili:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Tüm dizgeler" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Localazy proje ayrıntıları indirilemedi." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Çeviriler Localazy’e yüklenirken bir hata oldu." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projeler" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "%s hakkında daha fazla bilgi edinin" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy, herkesin ürünlerini ve içeriÄŸini birden çok dile kolayca " "çevirmesini saÄŸlayan, yüksek düzeyde otomatikleÅŸtirilmiÅŸ bir yerelleÅŸtirme " "platformudur." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Proje Ekle" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Proje ekle" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Katalog yöneticisi" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Düzenle…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Yeni çeviri projesi oluÅŸtur" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Projeyi sil" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Projeyi düzenle" #: src/manager.cpp:176 msgid "Update all" msgstr "Tümünü güncelle" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Projedeki tüm katalogları güncelle" #: src/manager.cpp:378 msgid "Total" msgstr "Toplam" #: src/manager.cpp:379 msgid "Untrans" msgstr "ÇevrilmemiÅŸ" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Çalışma Gerekli" #: src/manager.cpp:381 msgid "Errors" msgstr "Hatalar" #: src/manager.cpp:382 msgid "Last modified" msgstr "Son deÄŸiÅŸiklik" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Dizin seçin" #: src/manager.cpp:433 msgid "Directories:" msgstr "Dizinler:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "“%s†projesini silmek istiyor musunuz?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Projeyi sil" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Projeyi silmek herhangi bir çeviri dosyasını silmeyecek." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Onaylama" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Bu projedeki tüm kataloglar güncellensin mi?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Projedeki tüm dosyalarda kaynak kodundan güncelleme gerçekleÅŸtirir." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Proje katalogları güncelleniyor" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Güncellemeleri Denetle…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Katalog Yöneticisi" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Tercihler…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "Düz&en" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Geri al" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Yinele" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Stili Yapıştır ve EÅŸleÅŸtir" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Sil" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Yazım ve Dilbilgisi" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Yazım ve Dilbilgisini Göster" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Belgeyi Åžimdi Denetle" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Yazarken Yazım Denetimi Yap" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Yazım ile Dilbilgisi Denetimi Yap" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Yazımı Otomatik Olarak Düzelt" #: src/menus.cpp:219 msgid "Substitutions" msgstr "DeÄŸiÅŸimler" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "DeÄŸiÅŸimleri Göster" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Akıllı Kopyala/Yapıştır" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Akıllı Tırnaklar" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Akıllı Tireler" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Akıllı BaÄŸlantılar" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Metin DeÄŸiÅŸimi" #: src/menus.cpp:230 msgid "Transformations" msgstr "Dönüşümler" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Büyük Harf Yap" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Küçük Harf Yap" #: src/menus.cpp:234 msgid "Capitalize" msgstr "BaÅŸ Harfleri Büyük Yap" #: src/menus.cpp:237 msgid "Speech" msgstr "KonuÅŸma" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "KonuÅŸmayı BaÅŸlat" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "KonuÅŸmayı Durdur" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Görünüm" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Araç ÇubuÄŸunu Göster" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Araç ÇubuÄŸunu ÖzelleÅŸtir…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Tam Ekrana Geç" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Pencere" #: src/menus.cpp:263 msgid "Minimize" msgstr "Simge Durumuna Küçült" #: src/menus.cpp:264 msgid "Zoom" msgstr "YakınlaÅŸtır" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Poedit’e HoÅŸgeldin" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Tümünü Öne Getir" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Çevirmen hakkında bilgi" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Adı:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Adınız" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-posta:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "siz@ornek.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Adınız ve e-postanız sadece GNU gettext dosyalarının Last-Translator\n" "üst bilgisini ayarlamak için kullanılır." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Düzenleme" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Kaydederken MO dosyasını otomatik olarak derle" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Yazım denetimi yap" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "İmleç hep çeviri alanına odaklansın" #: src/prefsdlg.cpp:211 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 "" "Bu seçenek etkinleÅŸtirildiÄŸinde, imleç asla dizge listesine odaklanmaz. " "Böylece odağı deÄŸiÅŸtirmek için sekme (Tab) tuÅŸuna basmadan çeviriyi hemen " "yazabilirsiniz. Gezinmek için Ctrl-AÅŸağı/Yukarı ok tuÅŸlarını kullanmalısınız." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Görünüş" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Özel liste yazı tipini kullan:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Özel metin alanları yazı tipini kullan:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Arayüz dilini deÄŸiÅŸtir" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 ya da üzeri gerekir)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Genel" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Çeviri belleÄŸini kullan" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Yönet…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Kaynaklardan güncellerken" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "dosya içinde belirsiz olarak eÅŸle" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "çeviri belleÄŸinden ön çeviri yap" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit yeni kayıtları yalnız dosyadaki önceki çevirilerden ya da tüm çeviri " "belleÄŸinden doldurmayı deneyebilir. Çeviri BelleÄŸi fazla dolu deÄŸil ise " "etkin kullanılamayabilir. Ancak çeviri sayısı arttıkça etkinliÄŸi artar." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Saklanan çeviri:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Diskteki veritabanı boyutu:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Çeviri Dosyalarını İçe Aktar…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Çeviri dosyalarını içe aktar…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "TMX’ten İçe Aktar…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "TMX’ten içe aktar…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "TMX’e Aktar…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "TMX’e aktar…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Sıfırla" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "İçe aktarılacak çeviri dosyalarını seçin" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "İçe aktarılacak TMX dosyalarını seç" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX Dosyaları" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Çeviriler içe aktarılıyor…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Çeviri belleÄŸini içe aktarma baÅŸarısız oldu." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "“%s†dosyasından içe aktarılıyor…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s çeviri içe aktarıldı." msgstr[1] "%s çeviri içe aktarıldı." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Dışa farklı aktar…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Çeviriler dışa aktarılıyor…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "“%s†dosyasına çeviri belleÄŸini aktarma baÅŸarısız oldu." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Çeviri belleÄŸini sıfırla" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Çeviri belleÄŸini sıfırlamak istediÄŸinize emin misiniz?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Çeviri belleÄŸini sıfırlama tüm saklanan çevirileri geri dönülmez bir ÅŸekilde " "bundan silecek. Bu iÅŸlemi geri alamazsınız." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "ÇBelleÄŸi" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Çeviri BelleÄŸi" #: src/prefsdlg.cpp:730 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 "" "Kaynak kodu çıkarıcıları kaynak kodu dosyalarında çevrilebilir dizgeleri " "bulmak ve onları çıkarmak için kullanılır böylece bunlar çevrilebilir." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Özel Çıkarıcılar:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Özel çıkarıcılar:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "GNU gettext araçları (PHP, C/C++, C#, Perl, Python, Java, JavaScript ve " "diÄŸerleri) tarafından tanınan tüm programlama dillerini destekler." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Çıkarıcıyı sil" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "“%s†çıkarıcısını silmek istediÄŸinize emin misiniz?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Çıkarıcılar" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Hesaplar" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Güncellemeleri otomatik olarak denetle" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Beta sürümleri dahil et" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta sürümlerinde en son özellikler ve geliÅŸtirmeler bulunur, ancak daha az " "kararlı olabilirler." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Güncellemeler" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Bu ayarlar PO dosyalarının iç biçimlendirmesini etkiler. ÖrneÄŸin sürüm " "denetimi nedeniyle özel gereksinimleriniz varsa, bunları ayarlayın." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Satır sonları:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (önerilir)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Kaydırma yeri:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Var olan dosyaların biçimini koru" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "GeliÅŸmiÅŸ" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Ayarlar" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Dizgeler hazırlanıyor…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Çeviri belleÄŸinden ön çeviri…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u dizgenin ön çevirisi yapıldı" msgstr[1] "%u dizgenin ön çevirisi yapıldı" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Ön çeviri yapılıyor…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d dizgenin ön çevirisi yapıldı." msgstr[1] "%d dizgenin ön çevirisi yapıldı." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Çeviriler yetersiz olduÄŸundan üzerinde çalışma gerekiyor olarak iÅŸaretlendi. " "Bu çevirilerin doÄŸruluÄŸunu gözden geçirmelisiniz." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "ÇB’den tam eÅŸleÅŸmeler" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "ÇB’den yaklaşık eÅŸleÅŸmeler" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Herhangi bir kayıt için ön çeviri yapılamadı." #: src/pretranslate.cpp:218 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 "" "Çeviri belleÄŸi bu dosyanın içeriÄŸine uygun herhangi bir dizge içermiyor. El " "ile yaptığınız çeviriler Poedit tarafından yeterince öğrenildikten sonra " "yarı otomatik çeviriler etkili olur." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Kaynak metin olmadan ön çeviri yapılamaz." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Ön Çeviri" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Ön çeviri, kaynak metnin mevcut olmasını gerektirir. Yalnızca asıl metin " "içermeyen kodlar kullanılırsa çalışmaz." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Bilinmeyen dilden ön çeviri yapılamaz." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Ön çeviri, kaynak metnin dilinin bilinmesini gerektirir. Poedit bu dosyada " "bunu tespit edemedi." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Sadece tam eÅŸleÅŸmeleri doldur" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Varsayılan olarak, doÄŸru olmayan sonuçlar da dahil edilir, ancak çalışma " "gerekiyor olarak iÅŸaretlenir. Yalnızca mükemmel eÅŸleÅŸmeleri dahil etmek için " "bu seçeneÄŸi iÅŸaretleyin." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Tam eÅŸleÅŸmeleri çalışma gerekiyor olarak iÅŸaretleme" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Bu seçeneÄŸi yalnız Çeviri BelleÄŸinizin kalitesine güveniyorsanız " "etkinleÅŸtirin. Varsayılan olarak, Çeviri BelleÄŸinden alınan tüm eÅŸleÅŸmeler " "çalışma gerekiyor olarak iÅŸaretlenir ve kullanılmadan önce gözden " "geçirilmelidir." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Ön çeviri, çevrilmemiÅŸ dizgeleri için Çeviri BelleÄŸindeki tam ya da belirsiz " "olan eÅŸleÅŸmeleri otomatik olarak bularak çevirileri doldurur." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Hata: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d hata meydana geldi:" msgstr[1] "%d hata meydana geldi:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Bir hata meydana geldi." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d hata meydana geldi." msgstr[1] "%d hata meydana geldi." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "İptal ediliyor…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Klasörleri veya Dosyaları Buraya Sürükleyin" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Klasörleri veya dosyaları buraya sürükleyin" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Klasörleri Ekle…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Klasörleri ekle…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Dosyaları Ekle…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Dosyaları ekle…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Joker Karakter Ekle…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Joker karakter ekle…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Finder’da Göster" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Gezgin’de Göster" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Klasörde Göster" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Yollar" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Hariç tutulan yollar" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "GeliÅŸmiÅŸ çıkarma ayarları" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Çevirmenler için çıkarma notlarının yeri:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Yorumların ön eki:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Tüm açıklamalar" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Ek xgettext iÅŸaretleri:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Ek anahtar kelimeler" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Çevirisi yapılan projenin adı" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Takım adı ve e-posta adresi veya URL’si" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "örn. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (önerilir)" #: src/propertiesdlg.cpp:976 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." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Yer tutucuların doÄŸruluÄŸu" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "“%s†yer tutucusu çeviride eksik." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Kaynak metinde olmayan gereksiz yer tutucu “%sâ€." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "ÇoÄŸul biçim çevirileri" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Tüm çoÄŸul biçimler çevrilmedi." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Tutarsız büyük/küçük harf" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Çeviri bir cümle olarak baÅŸlamalı." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Çeviri bir küçük harf karakteri ile baÅŸlamalı." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Tutarsız boÅŸluk" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Çeviri bir boÅŸluk ile baÅŸlamıyor." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Çeviri bir boÅŸluk ile baÅŸlıyor, ancak kaynak metin baÅŸlamıyor." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Çevirinin sonunda yeni bir satır baÅŸlangıcı eksik." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" "Çeviri yeni bir satır baÅŸlangıcı ile bitiyor, ancak kaynak metin bitmiyor." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Çevirinin sonunda bir boÅŸluk eksik." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Çeviri bir boÅŸluk ile bitiyor, ancak kaynak metin bitmiyor." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Noktalama denetimleri" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Çeviri “%s†ile bitmeli." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Çeviri “%s†ile bitmemeli." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Çeviri “%s†ile bitiyor, ancak kaynak metin “%s†ile bitiyor." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Bulut" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Menüyü Temizle" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Menüyü temizle" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Açıklama:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Güncelle" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Sil" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Açıklamayı sil" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Projeyi düzenle" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Proje adı:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Gözat" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Dizini listeye ekle" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Tamam" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Dosya" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Yeni…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "&POT/PO dosyasından oluÅŸtur…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "&POT/PO Dosyasından OluÅŸtur…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Aç…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Son Kullanılanları Aç" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "En sonunucuyu aç" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Bulut çeviriyi aç…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Bulut Çeviriyi Aç…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Pencereyi &baÅŸlat" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Pencereyi &BaÅŸlat" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Katalog yöneticisi" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Katalog Yöneticisi" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Kapat" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "Kay&det" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "&Farklı kaydet…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "&Farklı Kaydet…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "MO olarak Derle…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "HTML’ye a&ktar…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Güncellemeleri denetle…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Ayarlar…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Tercihler" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "Çı&kış" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Çık" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Tekilden kopyala" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Tekilden Kopyala" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Çalışma &gereken çeviri" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Çalışma &Gereken Çeviri" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Açıklamayı dü&zenle" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Açıklamayı Dü&zenle" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Öneriler" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Bul…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "DeÄŸiÅŸtir…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Sonrakini bul" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Öncekini bul" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Bul ve DeÄŸiÅŸtir…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Sonrakini Bul" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Öncekini Bul" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Dizge &kodunu göster" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Dizge &Kodunu Göster" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Uyarıları göster" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Uyarıları Göster" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "&Dosya düzenine göre sırala" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "&Dosya Düzenine göre Sırala" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "&KaynaÄŸa göre sırala" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "&KaynaÄŸa göre Sırala" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Çeviriye &göre sırala" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Çeviriye &göre Sırala" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "BaÄŸlama göre &grupla" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "BaÄŸlama Göre &Grupla" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Hataları olan dizgeler en üstte" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Hataları Olan Dizgeler En Üstte" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Ç&evrilmemiÅŸ dizgeler en üstte" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Ç&evrilmemiÅŸ Dizgeler En Üstte" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "Kod oluÅŸumlarını &göster" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "Kod OluÅŸumlarını &Göster" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Kenar çubuÄŸunu göster" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Durum çubuÄŸunu göster" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "Çe&viri" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "Kaynak kodundan gü&ncelle" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "Kaynak Kodundan Gü&ncelle" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Crowdin ile eÅŸitle" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Ön çe&viri yap…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "Çevirileri &doÄŸrula" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "Çevirileri &DoÄŸrula" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Kaynakla Aynı Çevirileri Kaldır" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "Silin&miÅŸ çevirileri temizle" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "Silin&miÅŸ Çevirileri Temizle" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "Ö&zellikler…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "G&it" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Tamamla ve sonrakine geç" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Tamamla ve Sonrakine Geç" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Önceden düzenlenmiÅŸ" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Önceden DüzenlenmiÅŸ" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Ön&ceki çeviri" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Ön&ceki Çeviri" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Sonraki çeviri" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Sonraki Çeviri" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Ö&nceki tamamlanmamış" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Ö&nceki Tamamlanmamış" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "S&onraki tamamlanmamış" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "S&onraki Tamamlanmamış" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Önceki çoÄŸul biçim" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Önceki ÇoÄŸul Biçim" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Sonraki çoÄŸul biçim" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Sonraki ÇoÄŸul Biçim" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Çe&vrimiçi yardım" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Çe&vrimiçi Yardım" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext kılavuzu" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext Kılavuzu" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "Poedit H&akkında" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "H&akkında" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Çıkarıcı kurulumu" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Noktalı virgülle ayrılmış uzantılar listesi (örn. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "ÇaÄŸrı:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Çevirileri çıkarmak için komut:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Bu, çıkarıcıyı çalıştırmak için kullanılan komuttur.\n" "%o çıktı dosyası adına, %K anahtar kelimelerin listesine,\n" "%F girdi dosyalarının listesine, %C karakter kümesi\n" "iÅŸaretine dönüşür (aÅŸağıya bakınız)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Anahtar kelimeler listesindeki bir öğe:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Bu, her anahtar kelime için bir kez komut satırına\n" "eklenecektir. %k anahtar kelimeyi yazar." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Girdi dosyaları listesindeki bir öğe:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Bu, her girdi dosyası için bir kez komut satırına\n" "eklenecektir. %f dosya adını yazar." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Kaynak kod karakter kümesi:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Kaynak kodu karakter kümesi verildiyse,\n" "bu komut satırına eklenecektir.\n" "%c karakter kümesi deÄŸerini yazar." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Çeviri Özellikleri" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Proje adı ve sürümü:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Dil takımı:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "ÇoÄŸul biçimler:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Bu dil için varsayılan kuralları kullan" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Özel ifade kullan" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "ÇoÄŸul biçimler hakkında bilgi edinin" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Karakter kümesi:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "GeliÅŸmiÅŸ Çıkarma Ayarları…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "GeliÅŸmiÅŸ çıkarma ayarları…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Çeviri özellikleri" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Kaynak Yolları" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Kaynak yolları" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Kaynak dosyalardan metinleri ÅŸurada belirtilen dizinlere çıkar:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Temel yol:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Kaynak Anahtar Kelimeleri" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Kaynak anahtar kelimeleri" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Kaynak dosyalardaki çevrilebilir dizgeleri tanımak için,\n" "ÅŸu anahtar kelimeleri (iÅŸlev adları) kullan:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Desteklenen diller için varsayılan anahtar kelimeleri de kullan" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Gettext anahtar kelimeleri hakkında bilgi edinin" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Dosya aç" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Dosyayı kaydet" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "DoÄŸrula" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Çeviri içindeki hataları denetle" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Koddan güncelle" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Koddan Güncelle" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Kaynak kodundan güncelle" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Kenar çubuÄŸu" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Önceki kaynak metin" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Belirsiz çevirinin karşılık geldiÄŸi eski kaynak metin (bir güncelleme " "sırasında deÄŸiÅŸtirilmeden önce)." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Çevirmenler için notlar" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Açıklama" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Açıklama ekle" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Açıklama Ekle" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Çeviri BelleÄŸinden Sil" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Çeviri belleÄŸinden sil" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Çeviri önerileri" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "EÅŸleÅŸme bulunamadı" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "EÅŸleÅŸme bulunamadı" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Bu dizge Poedit’in çeviri belleÄŸinde bulundu." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Çeviri önerileri, kaynak metnin mevcut olmasını gerektirir. Yalnızca asıl " "metin içermeyen kodlar kullanılırsa çalışmazlar." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Çeviri önerileri, kaynak metnin dilinin bilinmesini gerektirir. Poedit bu " "dosyada bunu tespit edemedi." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Program çalıştırılamıyor: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX dosyası hatalı oluÅŸturulmuÅŸ." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Çeviri belleÄŸi veritabanı bozulmuÅŸ: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Çeviri belleÄŸi hatası: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Varsayılan dili kullan)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Dil seçimi" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Tercih ettiÄŸiniz dili seçin" #: src/uilang.cpp:263 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." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Geçici dizin oluÅŸturulamıyor." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Herhangi bir çeviri bulunamadı. Bu durum normal deÄŸil." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Çevrilebilir giriÅŸler Gettext sistemine el ile eklenmez, ancak kaynak " "kodundan otomatik olarak çıkarılır. Bu yolla, güncel ve doÄŸru kalırlar. " "Çevirmenler genellikle geliÅŸtirici tarafından hazırlanan PO ÅŸablon " "dosyalarını (POT’ları) kullanırlar." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "GNU gettext hakkında daha fazla bilgi edinin" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Bu dosyayı çevirilerle doldurmanın en kolay yolu bir POT dosyasından " "güncellemektir:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "POT dosyasından güncelle" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Çevrilebilir dizgeleri var olan bir POT ÅŸablonundan alın." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Çevrilebilir dizgeleri doÄŸrudan kaynak kodundan çıkarabilirsiniz:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Kaynaklardan çıkar" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Özellikler’de kaynak kod çıkarmayı yapılandırın." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Sürüm %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Yeni oluÅŸtur" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "POT ÅŸablonundan yeni çeviri oluÅŸturun." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Dosyalara gözat" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Çeviri dosyalarını açın ve düzenleyin." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Bulut projeyi çevir" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Çevrimiçi olarak diÄŸer kiÅŸilerle iÅŸbirliÄŸi yapın." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Son dosyalar" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "EÅŸitle" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Çeviriyi Crowdin ile eÅŸitle" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "%s Hakkında" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s Tercihleri" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "%s Hakkında" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Hizmetler" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "%s’i Gizle" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "DiÄŸerlerini Gizle" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Tümünü Göster" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "%s’ten Çık" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Tercihler…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Tercihler..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Tercihler..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Uygula" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Uygula" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Geri" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Geri" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "İ&ptal" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Temizle" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Temizle" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopyala" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Kes" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Kes" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Düzenle" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "Çı&k" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Yardım" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Yeni" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Yeni" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Hayır" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Hayır" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Tamam" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Aç…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Aç..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Aç..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "Ya&pıştır" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Yapıştır" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Tercihler" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Yinele" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Yenile" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Farklı kaydet" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Farklı kaydet" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "&Tümünü Seç" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Tümünü Seç" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Geri Al" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Evet" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Evet" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Yukarı Ok" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "AÅŸağı Ok" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Sol" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "SaÄŸ" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Uyarı: " poedit-3.6.3/locales/el.mo0000644000175100001660000024503515011674363011067 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-¦Oö‘ ’E5’3{’w¯’#'“IK“I•“Áß“}¡”­• ͕ە õ•U–Y– i–Š– œ–¦–¶–È–Ú–î–!—!"—D— \—j—/{—/«—Û—9í—9'˜a˜q˜ y˜„˜"–˜"¹˜ܘä˜&è˜&™6™I™\™r™Š™*¥™*Йû™LšL_š ¬šºšΚêš›1›1M›$›$¤›É›Ý›Bï›B2œ4uœ4ªœ*ßœ* 5E8M$†,«Øò ž&ž=žTžež"…ž"¨žËž=çž%Ÿ1EŸ"wŸ"šŸ½Ÿ=ÙŸ4 3L € 7 4Ç 7ü -4¡b¡({¡ž¤¡ZC¢ž¢Y½¢U£m£~£;£bË£u.¤?¤¤`ä¤E¥N¥Ëk¥37¦’k¦Œþ¦_‹§ë§!þ§| ¨©¬©i¾©@(ª^iªcȪ,«(I«(r«'›«Gë" ¬(.¬?W¬P—¬/è¬3­/L­%|­¢­³­)Ï­ù­)®?®P®!V®!x®[š®5ö®5,¯ b¯ o¯!}¯#Ÿ¯ ï@ä¯d%°аû¡°±$°±5Õ±$ ²50²8f²bŸ²{³N~³ͳ2ë³M´=l´ª´p¿´0¶=@¶=~¶9¼¶ö¶?·E·;V·4’·;Ç·¸&¸"F¸ti¸.Þ¸ ¹>!¹Ò`¹‘3º—ź ]»~»)ž»pÈ»)9¼7c¼m›¼4 ½4>½ s½½ž½&µ½&ܽ%¾%)¾!O¾(q¾š¾±¾˾Ò¾óê¾;Þ¿;À VÀ0bÁ2“ÁIÆÁÂÂ0Â:@Â+{§ÂÂÂÙÂõÂÃZ)Ã(„Ã'­ÃIÕÃ~Ä¿žÄ2^Å!‘ÅN³ÅeÆbhÆBËÆXÇ gÇ4tÇ1©ÇOÛÇÉ+È õÈÉ% É1FÉ xÉ/™É,ÉÉöÉ%Ê:ÊZÊ0zÊ)«Ê)ÕÊ ÿÊ, Ë :Ë FËSËeË0tË4¥ËLÚËE'ÌmÌppÌ&áÍÏ"Ð05ÐfÐ7…нÐ7ÜÐ!ÑK6Ñ*‚Ñ ­Ñ,¸Ñ0åÑ4ÒFKÒ’Ò©Ò ÈÒ ÔÒáÒ&òÒÓ+,ÓbXÓK»Ó)Ô1Ô OÔ pÔ)~ÔE¨Ô>îÔ#-Õ2QÕD„Õ;ÉÕ Ö€Ö$“Ön¸Ö'×DG×lŒØ ùØ(ÙYCÙ3Ù+ÑÙýÙ(Ú>ÚY[Ú µÚÁÚÞÚ#ûÚ#Û$CÛâhÛKÝ%RÝ#xÝ%œÝ#ÂÝ@æÝ0'Þ0XÞ‰Þ0Þ[ÁÞÁß0ßßPà]aà,¿à_ìàTLá2¡áÔá×áŒÞáIkã8µã!îãQä)bä8ŒäÅä?ãä?#å!cå.…å´åÆåØåéå$òå$æ$<æ'aæ‰æ˜ç=­çëçzþç2yèb¬è<éÍLé¾êÙê-ðê‚ë$¡ëÆë0Íëyþë-x쨦îqOðMÁðñ-ñGñ{gñLãñ0ò$Mò róã}ôaõxõ’õ6¬õOãõ83ö8lö2¥ö3Øö3 ÷*@÷k÷ ‚÷Œ÷•÷¤÷E¹÷ ÿ÷v øƒø¡ø´ø'Åø'íøù,ùZ=ùZ˜ù3óù3'úi[úÅú$àú$û5*û`ûI~ûÈû:Ûûü /ýPýeýzý˜ý)¶ý)àý þ$þ#Aþ#eþƒ‰þ$ ÿ2ÿKÿ9cÿ!ÿ2¿ÿOòÿ4BBwºØö 0EP4–IË62L-.­$ÜF2H4{I°-ú(DShw8–Ï6í$ 94F{!—!¹8Û'1<8n'§1Ï>D@H…3Î : "Y &| £ &Á è   ° 0Ä õ  2/ 5b 9˜ ?Ò b .u x¤  < O €cåäÊ*ã?N%g=NËd0Q•+ç¬<À‰ý‡6ALvŽi¥oÏÙåA¿ARCe–Ëü¶È8¸i8w¢W Kr /¾ Bî!H1"Lz"PÇ"[#ct#öØ#YÏ$)%jÇ%ô2&''+(ÜÉ(Ϧ)v*“+m!-ý-Á.·O/ 0030/620f2—2!ª2#Ì22ð2'#3šK3­æ3v”4> 52J5'}5'¥5Í5öí6ä7þ79949YE9BŸ9â9$:%:A:_:%r:˜:E´:Sú:.N;.};&¬;0Ó;&<3+<%_<…<$œ<0Á<)ò<@=J]=:¨=0ã=:>RO>c¢>X?È_?2(@[@)n@˜@*¨@*Ó@:þ@9A#VA4zA(¯AØAéAhñA$ZBB'šB-ÂBðB™÷Bu‘CÖD†ÞDeE[|EÑØE ªFµF#¾F\âF"?GbG7qG]©G%H-H2H8HAHGH XHcHjHsHwH|H‚HžH²HÎHèHüHI7)IaI3}I±IÎI>ÞI|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-05-13 10:16 Last-Translator: Language-Team: Greek Language: el_GR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: el X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (Ï„Ïοποποιημένο) (μη αποθηκευμένο)%d εμφάνιση κώδικα%d εμφανίσεις κώδικα%d καταχώÏηση%d καταχωÏήσεις%d καταχώÏηση Ï€Ïο-μεταφÏάστηκε.%d καταχωÏήσεις Ï€Ïο-μεταφÏάστηκαν.%d σφάλμα%d σφάλματαΠÏοέκυψε %d σφάλμα.ΠÏοέκυψαν %d σφάλματα.ΠÏοέκυψε %d σφάλμα:ΠÏοέκυψαν %d σφάλματα:Εντοπίστηκε %d ζήτημα με τις αÏχικές συμβολοσειÏές.Εντοπίστηκαν %d ζητήματα με τις αÏχικές συμβολοσειÏές.Î’Ïέθηκε %d ζήτημα στην μετάφÏαση.Î’Ïέθηκαν %d ζητήματα στην μετάφÏαση.%i γÏαμμή του αÏχείου “%s†δεν φοÏτώθηκε σωστά.%i γÏαμμές του αÏχείου “%s†δεν φοÏτώθηκαν σωστά.ΜοÏφή %sΠÏοτιμήσεις %sΜοÏφή %sΕισήχθη %s μετάφÏαση.Εισήχθησαν %s μεταφÏάσεις.&Σχετικά&Σχετικά με το Poedit&ΕφαÏμογή&Πίσω&ΑκÏÏωση&Απαλοιφή&Κλείσιμο&ΑντιγÏαφή&ΔιαγÏαφή&Τέλος και επόμενο&Τέλος και επόμενο&ΕπεξεÏγασία&ΑÏχείο&ΕÏÏεση…&Οδηγίες χÏήσης του GNU gettext&Οδηγίες χÏήσης του GNU gettext&ΜετάβασηΟμαδοποίηση κατά &συμφÏαζόμεναΟμαδοποίηση κατά &συμφÏαζόμενα&Βοήθεια&Îέα&Îέο…&Επόμενο >&Επόμενη μετάφÏαση&Επόμενη μετάφÏαση&Όχι&OK&Διαδικτυακή βοήθεια&Διαδικτυακή βοήθεια&Άνοιγμα...&Άνοιγμα…&Επικόλληση&ΠÏοτιμήσεις&ΠÏοτιμήσεις…&ΠÏοηγοÏμενη μετάφÏαση&ΠÏοηγοÏμενη μετάφÏαση&Ιδιότητες…Ε&κκαθάÏιση των ΔιαγÏαμμένων ΜεταφÏάσεωνΕ&κκαθάÏιση των διαγÏαμμένων μεταφÏάσεων&Έξοδος&Επανάληψη&Αντικατάσταση&Αποθήκευση&Αποθήκευση ως&ΠÏοβολή εμφανίσεων κώδικα&ΠÏοβολή εμφανίσεων κώδικα&ΠαÏάθυÏο εκκίνησης&ΠαÏάθυÏο εκκίνησης&ΜετάφÏαση&ΑναίÏεσηΠÏώτα οι &ΑμετάφÏαστες ΚαταχωÏήσειςΠÏώτα οι &αμετάφÏαστες καταχωÏήσεις&ΕνημέÏωση από πηγαίο κώδικα&ΕνημέÏωση από πηγαίο κώδικαΕπι&κÏÏωση μεταφÏάσεωνΕπι&κÏÏωση μεταφÏάσεων&ΠÏοβολή&Îαι(ΧÏήση Ï€Ïοεπιλεγμένης γλώσσας)(Δεν έχετε συνδεθεί)(απαιτεί Windows 8 ή νεότεÏα)< &ΠÏοηγοÏμενο<χωÏίς όνομα>Σχετικά με το %sΛογαÏιασμόςΛογαÏιασμοίΠÏοσθήκηΠÏοσθήκη σχολίουΠÏοσθήκη αÏχείων…ΠÏοσθήκη φακέλων…ΠÏοσθήκη έÏγουΠÏοσθήκη χαÏακτήÏα αναπλήÏωσης…ΠÏοσθήκη σχολίουΠÏοσθήκη φακέλου στη λίσταΠÏοσθήκη αÏχείων…ΠÏοσθήκη φακέλων…ΠÏοσθήκη έÏγουΠÏοσθήκη χαÏακτήÏα αναπλήÏωσης…ΕπιπÏόσθετες λέξεις-κλειδιάΕπιπÏόσθετες ετικέτες xgettext:ΣÏνθεταΣÏνθετες Ïυθμίσεις εξαγωγής…ΣÏνθετες Ïυθμίσεις εξαγωγήςΣÏνθετες Ïυθμίσεις εξαγωγής…Όλα τα αÏχεία μετάφÏασηςΌλα τα σχόλιαΌλες οι συμβολοσειÏέςΧÏησιμοποιήστε επίσης τις Ï€Ïοεπιλεγμένες λέξεις-κλειδιά για υποστηÏιζόμενες γλώσσεςΠάντα αλλαγή εστίασης στο πεδίο εισόδου κειμένουΠÏοέκυψε σφάλμα.Ένα αντικείμενο στη λίστα των αÏχείων εισαγωγής:Ένα αντικείμενο στη λίστα των λέξεων κλειδιών:ΕμφάνισηΕφαÏμογήΠαÏαπλήσιες αντιστοιχίες από ΜΜΘέλετε σίγουÏα να διαγÏάψετε το εÏγαλείο εξαγωγής "%s";Είστε σίγουÏοι ότι θέλετε να επαναφέÏετε την μνήμη μεταφÏάσεων;Αυτόματος έλεγχος για ενημεÏώσειςΑυτόματη μεταγλώττιση αÏχείου MO κατά την αποθήκευσηΠίσωΔιαδÏομή βάσης:Οι εκδόσεις beta πεÏιέχουν τις πιο Ï€Ïόσφατες λειτουÏγίες και βελτιώσεις, αλλά μποÏεί να είναι λιγότεÏο σταθεÏές.ΜεταφοÏά όλων στο Ï€ÏοσκήνιοΚατεστÏαμμένο αÏχείο PO: το msgstr μοÏφής Ï€Î»Î·Î¸Ï…Î½Ï„Î¹ÎºÎ¿Ï Ï‡Ïησιμοποιείται χωÏίς msgid_pluralΚατεστÏαμμένο αÏχείο PO: η μοÏφή ÎµÎ½Î¹ÎºÎ¿Ï msgstr χÏησιμοποιείται μαζί με το msgid_pluralΚατεστÏαμμένη σήμανση στη συμβολοσειÏά μετάφÏασης.ΑναζήτησηΑναζήτηση αÏχείωνΑπό Ï€Ïοεπιλογή, πεÏιλαμβάνονται επίσης ανακÏιβή αποτελέσματα, αλλά επισημαίνονται με την ετικέτα «ΧÏειάζεται δουλειά». ΕνεÏγοποιήστε αυτήν την επιλογή για να συμπεÏιλαμβάνονται μόνο τέλειες αντιστοιχίες.ΑκÏÏωσηΑκÏÏωση…Αδυναμία δημιουÏγίας του φακέλου των Ï€ÏοσωÏινών αÏχείων.Αδυναμία εκτέλεσης Ï€ÏογÏάμματος: %sΔεν είναι δυνατή η Ï€ÏομετάφÏαση από άγνωστη γλώσσα.Δεν είναι δυνατή η Ï€Ïο-μετάφÏαση χωÏίς πηγαίο κείμενο.Κεφαλαιοποίηση&ΔιαχείÏιση καταλόγων&ΔιαχείÏιση καταλόγωνΔιαχείÏιση καταλόγωνΑλλαγή γλώσσας πεÏιβάλλοντος εÏγασίαςΣÏνολο χαÏακτήÏων:Έλεγχος εγγÏάφου τώÏαΈλεγχος γÏαμματικής με οÏθογÏαφίαΈλεγχος οÏθογÏαφίας κατά την πληκτÏολόγησηΈλεγχος για ενημεÏώσεις…Έλεγχος λαθών στη μετάφÏασηΈλεγχος για ενημεÏώσεις…Έλεγχος οÏθογÏαφίαςΑπαλοιφήΑπαλοιφή μενοÏΕκκαθάÏιση μετάφÏασηςΑπαλοιφή μενοÏΕκκαθάÏιση μετάφÏασηςΚλείσιμοCloudΕμφανίσεις κώδικαΕμφανίσεις κώδικαΣυνεÏγαστείτε με άλλα άτομα σε απευθείας σÏνδεση.Συλλογή αÏχείων Ï€Ïοέλευσης…Εντολή εξαγωγής μεταφÏάσεων:ΣχόλιοΣχόλιο:Σχόλια με Ï€Ïόθεμα:Μεταγλώττιση σε MO…Μεταγλώττιση σε…Μεταγλωττισμένα αÏχεία μετάφÏασηςΡÏθμισε την εξαγωγή του πηγαίου κώδικα στις Ιδιότητες.ΕπιβεβαίωσηΣυνδέστε το Poedit με υποστηÏιζόμενες πλατφόÏμες μετάφÏασης cloud για να συγχÏονίζετε απÏόσκοπτα τις μεταφÏάσεις που διαχειÏίζεστε σε αυτές.ΑντιγÏαφήΑντιγÏαφή από ενικόΑντιγÏαφή από αÏχικό κείμενοΑντιγÏαφή από ενικόΑντιγÏαφή από αÏχικό κείμενοΑυτόματη διόÏθωση οÏθογÏαφίαςΔεν ήταν δυνατή η λήψη λεπτομεÏειών έÏγου από το Localazy.Δεν ήταν δυνατή η φόÏτωση του αÏχείου, πιθανώς είναι κατεστÏαμμένο.Δεν ήταν δυνατή η αποθήκευση του αÏχείου %s.ΔημιουÏγία νέαςΔημιουÏγία νέας μετάφÏασηςΔημιουÏγία νέας μετάφÏασης από Ï€Ïότυπο POT.ΔημιουÏγία νέου έÏγου μετάφÏασηςΣφάλμα CrodwinΤο Crowdin είναι μια διαδικτυακή πλατφόÏμα διαχείÏισης μεταφÏάσεων και ένα εÏγαλείο συνεÏγατικών μεταφÏάσεων. ΧÏησιμοποιοÏμε κι εμείς το Crowdin για τη μετάφÏαση του Poedit σε πολλές γλώσσες και το λατÏεÏουμε.Απο&κοπήΠÏοσαÏμοσμένα εÏγαλεία εξαγωγής:ΠÏοσαÏμοσμένα εÏγαλεία εξαγωγής:ΠÏοσαÏμογή γÏαμμής εÏγαλείων…ΑποκοπήΜέγεθος βάσης δεδομένων στο δίσκο:ΔιαγÏαφήΔιαγÏαφή από μεταφÏαστική μνήμηΔιαγÏαφή εÏγαλείου εξαγωγήςΔιαγÏαφή από μεταφÏαστική μνήμηΔιαγÏαφή έÏγουΔιαγÏαφή του σχολίουΔιαγÏαφή του έÏγουΗ διαγÏαφή του έÏγου δεν θα διαγÏάψει κανένα αÏχείο μετάφÏασης.ΠÏοσδιοÏισμός διαφοÏών…Κατάλογοι:Θέλετε να διαγÏάψετε το έÏγο “%sâ€;Θέλετε να φοÏτώσετε εκ νέου το αÏχείο από τον δίσκο; Αν το κάνετε, θα χαθοÏν οι μη αποθηκευμένες αλλαγές σας στο Poedit.Θέλετε να αφαιÏέσετε όλες τις μεταφÏάσεις που είναι ίδιες με το αÏχικό κείμενο;Θα ήθελες να αφαιÏεθοÏν όλες οι μεταφÏάσεις, οι οποίες έπαψαν να χÏησιμοποιοÏνται;&ΧωÏίς αποθήκευσηΧωÏίς αποθήκευσηÎα μην εμφανιστεί ξανάΜην επισημάνετε ακÏιβείς αντιστοιχίες ως χÏειάζεται δουλειάÎα μην εμφανιστεί ξανάΛήψη τελευταίων μεταφÏάσεων…Η λήψη μεταφÏάσεων είναι απενεÏγοποιημένη για αυτό το έÏγο.ΣÏÏετε φακέλους ή αÏχεία εδώΣÏÏετε φακέλους ή αÏχεία εδώΈ&ξοδοςΕ&ξαγωγή σε HTML…ΕπεξεÏγασίαΕπεξεÏγασία &σχολίουΕπεξεÏγασία &σχολίουΕπεξεÏγασία σχολίουΕπεξεÏγασία σχολίουΕπεξεÏγασία έÏγουΕπεξεÏγασία του έÏγουΕπεξεÏγασίαΕπεξεÏγασία…Email:ΠλήÏης οθόνηΟι καταχωÏήσεις σε αυτό το αÏχείο έχουν διαφοÏετικό αÏιθμό μοÏφών Ï€Î»Î·Î¸Ï…Î½Ï„Î¹ÎºÎ¿Ï Î±Ï€ÏŒ αυτόν που αναφέÏει η κεφαλίδα "Plural-Forms" του αÏχείουΚαταχωÏήσεις με σφάλματα Ï€ÏώτεςΚαταχωÏήσεις με σφάλματα Ï€ÏώτεςΟι θέσεις με σφάλματα έχουν επισημανθεί με κόκκινο στην λίστα. Οι λεπτομέÏειες του σφάλματος θα εμφανιστοÏν, όταν επιλέξεις τη συγκεκÏιμένη θέση.Σφάλμα ανοίγματος αÏχείουΣφάλμα αποθήκευσης αÏχείουΣφάλμα κατά τη φόÏτωση του αÏχείου XLIFF: %sΣφάλμα: ΣφάλματαΤα πάνταΑκÏιβείς αντιστοιχίες από τη ΜΜΕξαιÏοÏμενες διαδÏομέςΕξαγωγή σε TMX…Εξαγωγή ως…Εξαγωγή σε HTML…Εξαγωγή σε TMX…Εξαγωγή σε HTMLΑποτυχία εξαγωγής μεταφÏαστικής μνήμης στο “%sâ€.Εξαγωγή μεταφÏάσεων…Εξαγωγή από τις πηγέςΕξαγωγή σημειώσεων για μεταφÏαστές από:Εξαγωγή του κειμένου από τα πηγαία αÏχεία στους ακόλουθους φακέλους:Εξαγωγή συμβολοσειÏών Ï€Ïος μετάφÏαση από %s αÏχείο…Εξαγωγή συμβολοσειÏών Ï€Ïος μετάφÏαση από %s αÏχεία…ΡÏθμιση εÏγαλείου εξαγωγήςΕÏγαλεία εξαγωγήςΑδυναμία επικοινωνίας με τη διεÏγασία Poedit.Αποτυχία εξαγωγής συμβολοσειÏών από τον πηγαίο κώδικα.Αποτυχία φόÏτωσης αÏχείου με εξαχθείσες μεταφÏάσεις.Απέτυχε η συγχώνευση καταλόγων gettext.Αδυναμία ενημέÏωσης της μεταφÏαστικής μνήμης: %sΑÏχείοΑδυναμία ανοίγματος αÏχείουΤο αÏχείο “%s†δεν υπάÏχει.Το αÏχείο “%s†δεν είναι αÏχείο μετάφÏασης.ΑÏχείο %s είναι μόνο για ανάγνωση και δεν μποÏεί να αποθηκευτεί. ΠαÏακαλώ αποθηκεÏστε το με διαφοÏετικό όνομα.ΕÏÏεσηΕÏÏεση επόμενουΕÏÏεση Ï€ÏοηγοÏμενουΕÏÏεση και αντικατάσταση…ΕÏÏεση στα σχόλιαΕÏÏεση στα πηγαία κείμεναΕÏÏεση στις μεταφÏάσειςΕÏÏεση επόμενουΕÏÏεση Ï€ÏοηγοÏμενουΔιόÏθωση γλώσσαςΔιόÏθωση γλώσσαςΕπιδιόÏθωση της κεφαλίδαςΕπιδιόÏθωση κεφαλίδαςΑÏχεία ΜετάφÏασης FlutterΜοÏφή %iΜοÏφή %i (αχÏησιμοποίητη)GNU gettextΓενικάΑÏχεία HTMLΒοήθειαΑπόκÏυψη πλευÏικής μπάÏαςΑπόκÏυψη γÏαμμής κατάστασηςΑπόκÏυψη Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος ειδοποίησηςΠώς λειτουÏγεί ο συγχÏονισμός στο Cloud;IDΑν συνεχίσεις με την εκκαθάÏιση, θα απομακÏυνθοÏν όλες τις μεταφÏάσεις οι οποίες έχουν επισημανθεί ως διαγÏαμμένες. Θα Ï€Ïέπει να ξανακάνεις τις μεταφÏάσεις, από την αÏχή, αν Ï€ÏοστεθοÏν ξανά στο μέλλον.Αν αÏνηθήκατε στο παÏελθόν την Ï€Ïόσβαση στα αÏχεία σας, μποÏείτε να την επιτÏέψετε στις ΠÏοτιμήσεις συστήματος > Ασφάλεια & απόÏÏητο > ΑπόÏÏητο > ΑÏχεία & φάκελοι.Αν αÏνηθήκατε στο παÏελθόν την Ï€Ïόσβαση στα αÏχεία σας, μποÏείτε να την επιτÏέψετε στις Ρυθμίσεις συστήματος > Ασφάλεια και απόÏÏητο > ΑÏχεία και φάκελοι.ΠαÏάβλεψηΠαÏάβλεψη πεζών-κεφαλαίωνΕισαγωγή από TMX…Εισαγωγή αÏχείων μετάφÏασης…Εισαγωγή από TMX…Εισαγωγή αÏχείων μετάφÏασης…Εισαγωγή από «%s»…Η εισαγωγή μεταφÏαστικής μνήμης απέτυχε.Εισαγωγή μεταφÏάσεων…Στο: %sΣυμπεÏίληψη εκδόσεων betaΑσυμφωνία κεφαλαίων/πεζώνΑσυμφωνία ÎºÎµÎ½Î¿Ï Î´Î¹Î±ÏƒÏ„Î®Î¼Î±Ï„Î¿Ï‚Î Î»Î·ÏοφοÏίες σχετικά με τον μεταφÏαστήΕγκατάστασηΜη έγκυÏο αÏχείοΚλήση:ΖήτημαΖητήματαΑÏχεία μετάφÏασης JSONΔιατήÏησηΌνομα γλώσσας ή κωδικόςΗ γλώσσα μετάφÏασης είναι η ίδια όπως η πηγαία γλώσσα.Δεν έχει οÏιστεί η γλώσσα της μετάφÏασης.Γλώσσα της μετάφÏασης:Επιλογή γλώσσαςΟμάδα μετάφÏασης:Γλώσσα:Τελευταία Ï„ÏοποποίησηΜάθετε για τις λέξεις-κλειδιά του gettextΜάθετε για τις μοÏφές πληθυντικοÏΜάθετε πεÏισσότεÏαΜάθετε πεÏισσότεÏα για το %sΜάθετε πεÏισσότεÏα σχετικά με το CrowdinΜάθετε πεÏισσότεÏα για το GNU gettextΓÏαμμήΗ γÏαμμή %d του αÏχείου “%s†είναι κατεστÏαμμένη (μη έγκυÏα δεδομένα %s).Καταλήξεις γÏαμμής:Η λίστα των επεκτάσεων χωÏίζεται από άνω τελείες (πχ *.cpp · *.h):ΦόÏτωση αγγλικώνΤο Localazy είναι μια εξαιÏετικά αυτοματοποιημένη πλατφόÏμα μετάφÏασης που επιτÏέπει σε οποιονδήποτε να μεταφÏάσει εÏκολα τα Ï€Ïοϊόντα και το πεÏιεχόμενό του σε πολλαπλές γλώσσες.Τα αÏχεία MO δεν μποÏοÏν να επεξεÏγαστοÏν απευθείας στο Poedit.ΜετατÏοπή σε ΠεζάΜετατÏοπή σε ΚεφαλαίαΔημιουÏγία νέας μετάφÏασης από αυτό το αÏχείο POT.ΠαÏαμοÏφωμένη κεφαλίδα: «%s»ΔιαχείÏιση λογαÏιασμώνΔιαχείÏιση…Συγχώνευση διαφοÏών…ΕλαχιστοποίησηΤο όνομα του έÏγου για το οποίο είναι η μετάφÏασηΌνομα:&Επόμενο ατελές&Επόμενο ατελέςΧÏειάζεται δουλειάΧÏειάζεται δουλειάΣφάλμα δικτÏου: %s (%d)Ποτέ μην αφήνετε τη λίστα των στίχων να εστιαστεί. Αν ενεÏγοποιηθεί, Ï€Ïέπει να χÏησιμοποιήσετε το Ctrl-βελάκια για πλοήγηση μέσω πληκτÏολογίου, αλλά μποÏείτε επίσης να πληκτÏολογήσετε κείμενο αμέσως, χωÏίς να χÏειαστεί να πατήσετε το πλήκτÏο Tab για αλλαγή εστίασης.ÎέαÎέο από αÏχείο &POT/PO…Îέες συμβολοσειÏέςÎέο από αÏχείο &POT/PO…Îέες συμβολοσειÏέςÎέες συμβολοσειÏές Ï€Ïος μετάφÏαση:Επόμενη μοÏφή πληθυντικοÏΕπόμενη μοÏφή πληθυντικοÏΌχιΔεν βÏέθηκαν αντιστοιχίεςΟι καταχωÏήσεις δεν μπόÏεσαν να Ï€Ïο-μεταφÏαστοÏν.Δεν παÏέχεται καμία πληÏοφοÏία στο αÏχείο για τις εμφανίσεις αυτής της συμβολοσειÏάς στον πηγαίο κώδικα.Δεν βÏέθηκαν αντιστοιχίεςΔεν βÏέθηκε κανένα Ï€Ïόβλημα στην μετάφÏαση.Δεν υπάÏχουν μεταφÏαστικά έÏγα στο λογαÏιασμό σας.Καμία πληÏοφοÏία χÏήσηςΔεν είναι όλες οι μοÏφές Ï€Î»Î·Î¸Ï…Î½Ï„Î¹ÎºÎ¿Ï Î¼ÎµÏ„Î±Ï†Ïασμένες.Δεν επιτÏέπεται, ΠαÏακαλοÏμε συνδεθείτε ξανά.Σημειώσεις για μεταφÏαστέςOKΈναΕνεÏγοποιήστε μόνο εάν εμπιστεÏεστε την ποιότητα της μνήμης μεταφÏάσεων σας. Από Ï€Ïοεπιλογή, όλες οι αντιστοιχίες από την Μνήμη ΜεταφÏάσεων επισημαίνονται ως "απαιτεί εÏγασία" και Ï€Ïέπει να θεωÏηθοÏν Ï€Ïιν την χÏήση.ΣυμπληÏώστε μόνο ακÏιβείς αντιστοιχίεςΆνοιγμα μετάφÏασης από το cloud…Άνοιγμα Ï€ÏόσφατουΆνοιγμα και επεξεÏγασία αÏχείων μετάφÏασης.Άνοιγμα Cloud μετάφÏασηςΆνοιγμα μετάφÏασης από το cloud…Άνοιγμα αÏχείουΆνοιγμα στο εÏγαλείο επεξεÏγασίαςΆνοιγμα στο εÏγαλείο επεξεÏγασίαςΆνοιγμα Ï€ÏόσφατουΆνοιγμα αÏχείου αναφοÏάςΆνοιγμα...Άνοιγμα…ΕπιλογέςΆλλο&ΠÏοηγοÏμενο ατελές&ΠÏοηγοÏμενο ατελέςΑÏχεία μετάφÏασης POΠÏότυπα μετάφÏασης POTΤα αÏχεία POT είναι μόνο Ï€Ïότυπα και δεν πεÏιέχουν μεταφÏάσεις. Για να κάνετε μια μετάφÏαση, δημιουÏγήστε ένα νέο αÏχείο PO που βασίζεται στο Ï€Ïότυπο.ΕπικόλλησηΕπικόλληση και αντιστοίχιση στυλΔιαδÏομέςΕκτελεί ενημέÏωση από τον πηγαίο κώδικα σε όλα τα αÏχεία του έÏγου.Δεν επιτÏέπεται η Ï€Ïόσβαση.Το σÏμβολο υποκατάστασης «%s» λείπει από τη μετάφÏαση.ΟÏθότητα συμβόλων υποκατάστασηςΠαÏακαλώ ανοίξτε και επεξεÏγαστείτε το αντίστοιχο αÏχείο PO. Όταν το αποθηκεÏσετε, θα ενημεÏωθεί και το αÏχείο MO.ΠαÏακαλώ αποθήκευσε αυτό το αÏχείο, Ï€Ïώτα, ώστε να μποÏεί να γίνει, μετά, επεξεÏγασία Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… τμήματος.ΠληθυντικόςΜεταφÏάσεις πληθυντικοÏΗ έκφÏαση των μοÏφών Ï€Î»Î·Î¸Ï…Î½Ï„Î¹ÎºÎ¿Ï Ï„Î¿Ï… αÏχείου είναι ασυνήθιστη για τα %s.ΜοÏφές πληθυντικοÏ:PoeditPoedit - ΔιαχείÏιση καταλόγωνΤο Poedit διόÏθωσε αυτόματα το μη έγκυÏο πεÏιεχόμενο στο αÏχείο “%sâ€.Το Poedit μποÏεί να Ï€Ïοσπαθήσει να συμπληÏώσει νέες καταχωÏήσεις μόνο από Ï€ÏοηγοÏμενες μεταφÏάσεις στο αÏχείο ή από ολόκληÏη την μνήμη μετάφÏασης. Η χÏήση της Μνήμης ΜετάφÏασης δεν θα είναι Ï€Î¿Î»Ï Î±Ï€Î¿Ï„ÎµÎ»ÎµÏƒÎ¼Î±Ï„Î¹ÎºÎ® εάν είναι σχεδόν άδεια, αλλά θα γίνει καλÏτεÏη όσο Ï€Ïοσθέτετε πεÏισσότεÏες μεταφÏάσεις σε αυτή.Το Poedit δεν μποÏεί να εμφανίσει τον πηγαίο κώδικα όπου χÏησιμοποιείται η συμβολοσειÏά, επειδή το αÏχείο είτε δεν είναι διαθέσιμο στην αναφεÏόμενη τοποθεσία, είτε Ï€Ïόκειται για συμβολική αναφοÏά που δεν δείχνει σε Ï€Ïαγματικό αÏχείο.Το Poedit είναι ένας εÏκολος στη χÏήση επεξεÏγαστής μεταφÏάσεων.Το Poedit δεν μπόÏεσε να ανοίξει το αÏχείο "%s".ΠÏο-&μετάφÏαση…ΠÏο-μετάφÏασηΠÏο-μεταφÏασμένοΠÏο-μεταφÏασμένη συμβολοσειÏά %uΠÏο-μεταφÏασμένες συμβολοσειÏές %uΠÏο-μετάφÏαση από τη μεταφÏαστική μνήμη…ΠÏο-μετάφÏαση…Η Ï€Ïο-μετάφÏαση βÏίσκει αυτόματα ακÏιβείς ή ασαφείς αντιστοιχίες για αμετάφÏαστες συμβολοσειÏές στην μνήμη μεταφÏάσεων και συμπληÏώνει τις μεταφÏάσεις τους.Η Ï€ÏομετάφÏαση απαιτεί να είναι διαθέσιμο το αÏχικό κείμενο. Δεν λειτουÏγεί αν χÏησιμοποιοÏνται μόνο αναγνωÏιστικά χωÏίς το Ï€Ïαγματικό κείμενο.Η Ï€ÏομετάφÏαση απαιτεί να είναι γνωστή η γλώσσα του αÏÏ‡Î¹ÎºÎ¿Ï ÎºÎµÎ¹Î¼Î­Î½Î¿Ï…. Το Poedit δεν μπόÏεσε να την ανιχνεÏσει σε αυτό το αÏχείο.ΠÏοτιμήσειςΠÏοτιμήσεις...ΠÏοτιμήσεις…ΠÏοετοιμασία συμβολοσειÏών…ΔιατήÏηση μοÏφοποίησης υπαÏχόντων αÏχείωνΠÏοηγοÏμενη μοÏφή πληθυντικοÏΠÏοηγοÏμενη μοÏφή πληθυντικοÏΠÏοηγοÏμενο αÏχικό κείμενοΠÏοηγουμένως ΕπεξεÏγάστηκεΠÏοηγουμένως επεξεÏγασμένοΌνομα και έκδοση έÏγου:Όνομα έÏγου:ΈÏγο:ΈÏγαΈλεγχοιΕκκαθάÏισηΕ&κκαθάÏιση διαγÏαμμένων μεταφÏάσεωνΈξοδοςΗ ανάγνωση πεÏιεχομένου αÏχείου απέτυχε με το ακόλουθο σφάλμα: %sΠÏόσφατα αÏχείαΕπανάληψηΑνανέωσηΕπαναφόÏτωση αÏχείουΕπαναφόÏτωση αÏχείουΑπομένουν: %dΑφαίÏεσηΑφαίÏεση μεταφÏάσεων όμοιων με το αÏχικό κείμενοΑφαίÏεση μεταφÏάσεων όμοιων με το αÏχικό κείμενοΚαταÏγημένες συμβολοσειÏέςΚαταÏγημένες συμβολοσειÏέςΚαταÏγημένες συμβολοσειÏές (δεν χÏησιμοποιοÏνται πλέον):ΑντικατάστασηΑντικατάσταση &όλωνΑντικατάσταση &όλωνΣυμβολοσειÏά αντικατάστασηςΑντικατάσταση…Λείπει η απαιτοÏμενη κεφαλίδα «Plural-Forms».ΕπαναφοÏάΕπαναφοÏά μεταφÏαστικής μνήμηςΗ επαναφοÏά της μνήμης μεταφÏάσεων θα διαγÏάψει αμετάκλητα όλες τις αποθηκευμένες μεταφÏάσεις από αυτήν. Δεν μποÏείτε να αναιÏέσετε αυτή τη λειτουÏγία.Αποκάλυψη στο FinderΕπισκόπησηΑποθήκευσηΑποθήκευση &ως…Αποθήκευση &ως…Αποθήκευση οπωσδήποτεΑποθήκευση οπωσδήποτεΑποθήκευση ωςΑποθήκευση ως…Αποθήκευση αλλαγώνΑποθήκευση αÏχείουΗ αποθήκευση σε διαφοÏετική τοποθεσία δεν υποστηÏίζεται για αÏχεία XCLOC.Στιγμιότυπα οθόνης:Επιλογή ÏŒ&λωνΕπιλογή όλωνΕπιλέξτε αÏχεία TMX για εισαγωγήΕπιλογή καταλόγουΕπιλογή αÏχείου μετάφÏασηςΕπέλεξε τα αÏχεία μετάφÏασης Ï€Ïος εισαγωγήΕπιλογή Ï€ÏοτÏπου μετάφÏασηςΕπιλέξτε την Ï€Ïοτιμώμενη γλώσσα σαςΟÏισμός γλώσσαςΟÏισμός γλώσσαςΡυθμίσειςΡυθμίσεις…Εμφάνιση πλευÏικής μπάÏαςΕμφάνιση οÏθογÏαφίας και γÏαμματικήςΕμφάνιση γÏαμμής κατάστασηςΕμφάνιση αναγνωÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï &συμβολοσειÏάςΕμφάνιση των ΑντικαταστάσεωνΕμφάνιση γÏαμμής εÏγαλείωνΠÏοβολή Ï€ÏοειδοποιήσεωνΕμφάνιση στην ΕξεÏεÏνησηΕμφάνιση στο φάκελοΕμφάνιση ή απόκÏυψη πλευÏικής γÏαμμήςΕμφάνιση πλευÏικής γÏαμμήςΕμφάνιση γÏαμμής κατάστασηςΕμφάνιση αναγνωÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï &συμβολοσειÏάςΠÏοβολή Ï€ÏοειδοποιήσεωνΠλευÏικό πάνελΣÏνδεσηΑποσÏνδεσηΣÏνδεσηΣυνδεθείτε στο %sΣυνδεθείτε στον λογαÏιασμό CloudΣÏνδεση στο CrowdinΣυνδεθείτε στο λογαÏιασμό cloudΑποσÏνδεσηΕνικόςΈξυπνη αντιγÏαφή/επικόλλησηΈξυπνες παÏλεςΈξυπνοι σÏνδεσμοιΈξυπνα εισαγωγικάΤαξινόμηση κατά σειÏά &αÏχείωνΤαξινόμηση κατά &πηγήΤαξινόμηση κατά &μετάφÏασηΤαξινόμηση κατά σειÏά &αÏχείωνΤαξινόμηση κατά &πηγήΤαξινόμηση κατά &μετάφÏασηΣÏνολο χαÏακτήÏων πηγαίου κώδικα:Τα εÏγαλεία εξαγωγής πηγαίου κώδικα χÏησιμοποιοÏνται για την εÏÏεση και την εξαγωγή μεταφÏάσιμων συμβολοσειÏών από τα αÏχεία πηγαίου κώδικα ώστε να μποÏέσουν να μεταφÏαστοÏν.Ο πηγαίος κώδικας δεν είναι διαθέσιμος.Δεν βÏέθηκε πηγαίος κώδικαςΑÏχικό κείμενοΑναγνωÏιστικό πηγαίου κειμένουΑÏχικό κείμενο — %sΛέξεις-κλειδιά πηγώνΔιαδÏομές πηγώνΛέξεις-κλειδιά πηγώνΔιαδÏομές πηγώνΟμιλίαΟ οÏθογÏαφικός έλεγχος είναι απενεÏγοποιημένος, επειδή το λεξικό για %s δεν είναι εγκατεστημένο.ΟÏθογÏαφία και γÏαμματικήΈναÏξη ομιλίαςΔιακοπή ομιλίαςΑποθηκευμένες μεταφÏάσεις:ΠεÏιεχόμενο συμβολοσειÏάς: %sΑναγνωÏιστικό συμβολοσειÏάς: %sΜήκος συμβολοσειÏάς σε χαÏακτήÏεςΜήκος συμβολοσειÏάς σε χαÏακτήÏες: μετάφÏαση | αÏχικήΣυμβολοσειÏά Ï€Ïος εÏÏεσηΔεν υποστηÏίζονται έÏγα του Crowdin που βασίζονται σε συμβολοσειÏές.ΑντικαταστάσειςΠÏοτάσειςΟι υποδείξεις δεν είναι διαθέσιμες αν η γλώσσα μετάφÏασης δεν έχει οÏιστεί σωστά. Άλλες λειτουÏγίες, όπως ο πληθυντικός, μποÏεί επίσης να επηÏεαστοÏν.ΠεÏιττό σÏμβολο υποκατάστασης «%s» που δεν υπάÏχει στο αÏχικό κείμενο.ΥποστηÏίζει όλες τις γλώσσες Ï€ÏογÏÎ±Î¼Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï Ï€Î¿Ï… αναγνωÏίζονται από τα εÏγαλεία GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript και άλλες).ΣυγχÏονισμόςΣυγχÏονισμός με το CrowdinΣυγχÏονισμός μετάφÏασης με το CrowdinΣυγχÏονισμόςΣφάλμα συγχÏονισμοÏΟ συγχÏονισμός με το Crowdin απέτυχε.Σφάλμα σÏνταξης στην κεφαλίδα "Plural-Forms" ("%s").ΜΜΑÏχεία TMXΠάÏε μεταφÏάσιμους στίχους από ένα υπάÏχον Ï€Ïότυπο .POT.Όνομα ομάδας και διεÏθυνση email ή διεÏθυνση URLΑντικατάσταση κειμένουΗ Μνήμη ΜεταφÏάσεων δεν πεÏιέχει καμία συμβολοσειÏά παÏόμοια με το πεÏιεχόμενο Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αÏχείου. Είναι μόνο αποτελεσματική για ημι-αυτόματες μεταφÏάσεις Î±Ï†Î¿Ï Ï„Î¿ Poedit μάθει αÏκετά από αÏχεία που έχετε μεταφÏάσει με μη αυτόματο Ï„Ïόπο.Το αÏχείο TMX είναι παÏαμοÏφωμένο.Οι αλλαγές που έγιναν από την άλλη εφαÏμογή θα χαθοÏν αν κάνετε αποθήκευση.Αυτό το αÏχείο δεν μποÏεί να μεταγλωττιστεί σε μοÏφή MO και να χÏησιμοποιηθεί.Το αÏχείο πεÏιέχει αντίγÏαφα στοιχεία, το οποίο δεν επιτÏέπεται στα αÏχεία PO και θα αποτÏέψει το αÏχείο από το να χÏησιμοποιηθεί. Το Poedit διόÏθωσε το θέμα, αλλά θα Ï€Ïέπει να επανεξετάσετε τις μεταφÏάσεις οποιουδήποτε στοιχείου έχει επισημανθεί ότι χÏειάζεται δουλειά και να το διοÏθώσετε εάν είναι απαÏαίτητο.Δεν ήταν δυνατή η αποθήκευση του αÏχείου στο σÏνολο χαÏακτήÏων “%s†όπως οÏίζουν οι Ïυθμίσεις μετάφÏασης. Αντ' αυτοÏ, αποθηκεÏτηκε σε UTF-8 και η ÏÏθμιση Ï„Ïοποποιήθηκε αναλόγως.Το αÏχείο έχει Ï„Ïοποποιηθεί. Θέλετε να αποθηκεÏσετε τις αλλαγές;Το αÏχείο είναι σε μοÏφή που δεν αναγνωÏίζεται από το Poedit.Το αÏχείο μεταγλωττίστηκε σε μοÏφή MO, αλλά κατά πάσα πιθανότητα δεν θα λειτουÏγήσει σωστά.Το αÏχείο σώθηκε με ασφάλεια και μεταγλωττίστηκε σε μοÏφή MO, αλλά κατά πάσα πιθανότητα δεν θα λειτουÏγήσει σωστά.Το αÏχείο αποθηκεÏθηκε επιτυχώς, όμως δεν μποÏεί να γίνει σÏνθεση του αÏχείου σε μοÏφή MO, ώστε, μετά, να χÏησιμοποιηθεί.Το αÏχείο αποθηκεÏτηκε με ασφάλεια.Το αÏχείο "%s" δεν μπόÏεσε να ανοίξει.Δεν ήταν δυνατή η αποθήκευση του αÏχείου «%s».Το αÏχείο “%s†έχει Ï„Ïοποποιηθεί από μια άλλη εφαÏμογή.Το παλιό αÏχικό κείμενο (Ï€Ïιν από την αλλαγή κατά την ενημέÏωση) που αντιστοιχεί στην πλέον ανακÏιβή μετάφÏαση.Ο απλοÏστεÏος Ï„Ïόπος για να συμπληÏώσετε αυτό το αÏχείο με μεταφÏάσεις είναι η ενημέÏωση από ένα POT:Η μετάφÏαση δεν ξεκινά με κενό.Η μετάφÏαση τελειώνει με νέα γÏαμμή, σε αντίθεση με το αÏχικό κείμενο.Η μετάφÏαση τελειώνει με κενό, αλλά το πηγαίο κείμενο όχι.Η μετάφÏαση τελειώνει με %s, αλλά το πηγαίο κείμενο τελειώνει με %s.Απουσιάζει νέα γÏαμμή στο τέλος της μετάφÏασης.Στην μετάφÏαση λείπει ένα κενό στο τέλος.Η μετάφÏαση είναι έτοιμη για χÏήση, αλλά %d καταχώÏηση δεν έχει μεταφÏαστεί ακόμα.Η μετάφÏαση είναι έτοιμη για χÏήση, αλλά %d καταχωÏήσεις δεν έχουν μεταφÏαστεί ακόμα.Η μετάφÏαση είναι έτοιμη Ï€Ïος χÏήση.Η μετάφÏαση θα Ï€Ïέπει να τελειώνει με %s.Η μετάφÏαση δεν Ï€Ïέπει να τελειώνει με "%s".Η μετάφÏαση Ï€Ïέπει να ξεκινά ως μία Ï€Ïόταση.Η μετάφÏαση θα Ï€Ïέπει να ξεκινά με πεζό χαÏακτήÏα.Η μετάφÏαση ξεκινά με κενό, αλλά το πηγαίο κείμενο όχι.Οι μεταφÏάσεις επισημάνθηκαν ως "απαιτεί εÏγασία", επειδή μποÏεί να είναι ανακÏιβείς. Θα Ï€Ïέπει να τις εξετάσετε για την οÏθότητα τους.Δεν υπάÏχουν μεταφÏάσεις. Αυτό είναι ασυνήθιστο.ΠαÏουσιάστηκε Ï€Ïόβλημα με τη σωστή μοÏφοποίηση του αÏχείου (αλλά αποθηκεÏτηκε σωστά).ΠÏοέκυψε σφάλμα κατά τη μεταφόÏτωση μεταφÏάσεων στο Localazy.ΠαÏουσιάστηκαν σφάλματα κατά τη φόÏτωση του αÏχείου. Ως αποτέλεσμα, οÏισμένα δεδομένα ενδέχεται να λείπουν ή να είναι κατεστÏαμμένα.Αυτές οι Ïυθμίσεις επηÏεάζουν την εσωτεÏική μοÏφοποίηση των αÏχείων PO. ΠÏοσαÏμόστε τις αν έχετε ειδικές απαιτήσεις Ï€.χ. λόγω ελέγχου έκδοσης.Αυτό το αÏχείο JSON δεν είναι αÏχείο μεταφÏάσεων και δεν μποÏεί να επεξεÏγαστεί στο Poedit.Αυτή η ενέÏγεια θα διαγÏάψει τυχόν μεταφÏάσεις που ταιÏιάζουν ακÏιβώς με το αÏχικό κείμενο. Δεν είναι δυνατή η αναίÏεση.Αυτό το αÏχείο πεÏιέχει καταχωÏήσεις με πληθυντικοÏÏ‚ αÏιθμοÏÏ‚, αλλά δεν είναι Ïυθμισμένη η κεφαλίδα "Plural-Forms" του.Αυτό το αÏχείο χÏησιμοποιεί αναγνωÏιστικά συμβολοσειÏάς αντί για πηγαίο κείμενο. Το Poedit μποÏεί να φοÏτώσει αγγλικά κείμενα από το αÏχείο “%s†για εσάς.Αυτή είναι η εντολή εκτέλεσης του εÏγαλείου εξαγωγής. Το %o αναπτÏσσει το όνομα του αÏχείου εξόδου, το %K τη λίστα των λέξεων-κλειδιών, το %F τη λίστα των αÏχείων εισόδου, το %C τη σημαία του συνόλου χαÏακτήÏων (βλέπε παÏακάτω).Αυτή η συμβολοσειÏά βÏέθηκε στη μεταφÏαστική μνήμη του Poedit.Αυτό θα Ï€ÏοσαÏτηθεί στη γÏαμμή εντολών μόνο αν δοθεί το σÏνολο χαÏακτήÏων πηγαίου κώδικα. Το %c αναπτÏσσει την τιμή του συνόλου χαÏακτήÏων.Αυτό θα Ï€ÏοσαÏτηθεί στη γÏαμμή εντολών μία φοÏά για κάθε αÏχείο εισόδου. Το %f αναπτÏσσει το όνομα αÏχείου.Αυτό θα Ï€ÏοσαÏτηθεί στη γÏαμμή εντολών μία φοÏά για κάθε λέξη κλειδί. Το %k αναπτÏσσει τη λέξη κλειδί.ΣÏνολοΜετασχηματισμοίΟι καταχωÏήσεις Ï€Ïος μετάφÏαση δεν Ï€Ïοστίθενται χειÏοκίνητα στο σÏστημα Gettext, αλλά εξάγονται αυτόματα από τον πηγαίο κώδικα. Με αυτόν τον Ï„Ïόπο, παÏαμένουν ενημεÏωμένες και ακÏιβείς. Οι μεταφÏαστές χÏησιμοποιοÏν συνήθως τα Ï€Ïότυπα αÏχεία PO (POT) που Ï€Ïοετοιμάζει ο Ï€ÏογÏαμματιστής.ΜετάφÏαση έÏγου από το cloudΜεταφÏάστηκαν: %d από %d (%d %%)ΜετάφÏασηΓλώσσα μετάφÏασηςΜεταφÏαστική μνήμηΗ ΜετάφÏαση Είναι Α&νέτοιμηΙδιότητες μετάφÏασηςΤο αÏχείο μεταφÏάσεων είναι ήδη ενημεÏωμένο, δεν έγιναν αλλαγές στις συμβολοσειÏές.Το αÏχείο μεταφÏάσεων ενημεÏώθηκε με %s αλλαγή.Το αÏχείο μεταφÏάσεων ενημεÏώθηκε με %s αλλαγές.Η βάση δεδομένων μεταφÏαστικής μνήμης είναι κατεστÏαμμένη: %s (%d).Σφάλμα μεταφÏαστικής μνήμης: %s (%d).Η μετάφÏαση είναι α&νέτοιμηΙδιότητες μετάφÏασηςΠÏοτάσεις μετάφÏασηςΟι Ï€Ïοτάσεις μετάφÏασης απαιτοÏν να είναι διαθέσιμο το αÏχικό κείμενο. Δεν λειτουÏγοÏν αν χÏησιμοποιοÏνται μόνο αναγνωÏιστικά χωÏίς το Ï€Ïαγματικό κείμενο.Οι Ï€Ïοτάσεις μετάφÏασης απαιτοÏν να είναι γνωστή η γλώσσα του αÏÏ‡Î¹ÎºÎ¿Ï ÎºÎµÎ¹Î¼Î­Î½Î¿Ï…. Το Poedit δεν μπόÏεσε να την ανιχνεÏσει σε αυτό το αÏχείο.ΜετάφÏαση — %sΔεν ήταν δυνατή η ενημέÏωση των μεταφÏάσεων από τον πηγαίο κώδικα, επειδή δεν βÏέθηκε κώδικας στην καθοÏισμένη τοποθεσία των ιδιοτήτων του αÏχείου.ΔÏοUTF-8 (Ï€Ïοτείνεται)ΑναίÏεσηΑπÏοσδόκητη απουσία πεÏιεχομένου στο αÏχείο XCLOC.ΠαÏουσιάστηκε ανεπίλυτη εξαίÏεση: %sUnix (Ï€Ïοτείνεται)Άγνωστο σφάλμα Crowdin.Άγνωστο σφάλμαΜη μεταφÏασμένοΕνημέÏωσηΠεÏίληψη ενημέÏωσηςΕνημέÏωση όλωνΕνημέÏωση όλων των καταλόγων στο έÏγοΕνημέÏωση όλων των καταλόγων Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… έÏγου;ΕνημέÏωση από αÏχείο &POT…ΕνημέÏωση από αÏχείο &POT…ΕνημέÏωση από κώδικαΕνημέÏωση από το αÏχείο POΤΕνημέÏωση από κώδικαΕνημέÏωση από πηγαίο κώδικαΠεÏίληψη ενημέÏωσηςΕνημεÏώσειςΗ ενημέÏωση απέτυχεΕνημέÏωση καταλόγων έÏγωνΕνημέÏωση μεταφÏάσεωνΕνημέÏωση των πληÏοφοÏιών χÏήστη…Η μεταφόÏτωση μεταφÏάσεων στο %s απέτυχε.ΜεταφόÏτωση μεταφÏάσεων στο %s…ΜεταφόÏτωση μεταφÏάσεων…ΧÏήση Ï€ÏοσαÏμοσμένων εκφÏάσεωνΧÏήση Ï€ÏοσαÏμοσμένης γÏαμματοσειÏάς λιστών:ΧÏήση Ï€ÏοσαÏμοσμένης γÏαμματοσειÏάς πεδίων κειμένου:ΧÏήση Ï€Ïοεπιλεγμένων κανόνων για αυτή τη γλώσσαΧÏήση αυτών των λέξεων κλειδιών (ονόματα συναÏτήσεων) Ï€Ïος αναγνώÏιση μεταφÏάσιμων στίχων στα πηγαία αÏχεία:ΧÏήση μεταφÏαστικής μνήμηςΕπικÏÏωσηΑποτέλεσμα επικÏÏωσηςΈκδοση %sΠÏοβολή λεπτομεÏειών…ΠÏοβολή λεπτομεÏειών…Αναμονή για έλεγχο ταυτότητας…ΠÏοειδοποίηση: Καλώς ήÏθες στο PoeditΚατά την ενημέÏωση από πηγέςΜόνο ολόκληÏες λέξειςΠαÏάθυÏοWindowsΘέλετε να χÏησιμοποιήσετε αγγλικά για το πηγαίο κείμενο;ΕπιστÏοφή στην αÏχήΑναδίπλωση σε:ΑÏχεία μετάφÏασης XLIFFΚατάλογος μετάφÏασης XcodeÎαιΜποÏείς, επίσης να εξάγεις μεταφÏάσιμους στίχους, κατευθείαν από τον πηγαίο κώδικα:Δεν μποÏείτε να σÏÏετε παÏαπάνω από ένα αÏχείο στο παÏάθυÏο Poedit.Δεν έχετε την άδεια να διαβάσετε αÏχεία πηγαίου κώδικα από την τοποθεσία που καθοÏίζεται στις ιδιότητες του αÏχείου.ΠÏέπει να γίνει επανεκκίνηση του Poedit, ώστε αυτή η αλλαγή να έχει επίδÏαση.Το όνομά σαςΟι αλλαγές σας θα χαθοÏν εάν δεν τις αποθηκεÏσετε.Το όνομα και η διεÏθυνση email σας χÏησιμοποιοÏνται μόνο για τον οÏισμό της επικεφαλίδας "Last-Translator" στα αÏχεία GNU gettext.ΜηδένΖουμΧÏειάζεται δουλειάμη διαγÏάψεις Ï€ÏοσωÏινά αÏχεία (γι' αποσφαλμάτωση)Ï€.χ. nplurals=2; plural=(n > 1);σφάλμα: ασαφή αντιστοιχία στον φάκελομετάβαση στο στοιχείο, στο δεδομένο αÏιθμό γÏαμμήςχειÏίσου ένα poedit:// URIAlt+Ctrl+ΚάτωEnterΑÏιστεÏάΔεξιάShift+ΠάνωaltctrlshiftΣχετικά με το %sΑπόκÏυψη %sΑπόκÏυψη άλλωνΠÏοτιμήσεις...Κλείσιμο %sΥπηÏεσίεςΕμφάνιση όλωνπÏο-μετάφÏαση από τη Μετ.Μνήμηάγνωστη γλώσσαμη υποστηÏιζόμενη έκδοση (%s)Ï€Ïοειδοποίηση: you@example.comΤο “%s†δεν είναι έγκυÏο αÏχείο POT.poedit-3.6.3/locales/pl.po0000644000175100001660000027465015011674230011103 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && " "(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && " "n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: pl\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Nie wyÅ›wietlaj tej informacji" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Nie pokazuj ponownie" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Nie pokazuj ponownie" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Podsumowanie aktualizacji" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Podsumowanie aktualizacji" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Zamknij" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problemy" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Plik" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Wiersz" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problem" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Nowe ciÄ…gi" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Nowe teksty" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "UsuniÄ™te ciÄ…gi" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "UsuniÄ™te ciÄ…gi" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Zbieranie plików źródÅ‚owych…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "WyodrÄ™bnianie ciÄ…gów do tÅ‚umaczenia z %s pliku…" msgstr[1] "WyodrÄ™bnianie ciÄ…gów do tÅ‚umaczenia z %s plików…" msgstr[2] "WyodrÄ™bnianie ciÄ…gów do tÅ‚umaczenia z %s plików…" msgstr[3] "WyodrÄ™bnianie ciÄ…gów do tÅ‚umaczenia z %s plików…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Nie udaÅ‚o siÄ™ zaÅ‚adować pliku z rozpakowanymi tÅ‚umaczeniami." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "W: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Kod źródÅ‚owy jest niedostÄ™pny." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "TÅ‚umaczeÅ„ nie można zaktualizować z kodu źródÅ‚owego, ponieważ nie znaleziono " "kodu w lokalizacji okreÅ›lonej we wÅ‚aÅ›ciwoÅ›ciach pliku." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Odmowa dostÄ™pu." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Nie masz uprawnieÅ„ do odczytu plików kodu źródÅ‚owego z lokalizacji " "okreÅ›lonej we wÅ‚aÅ›ciwoÅ›ciach pliku." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "JeÅ›li wczeÅ›niej odmówiono dostÄ™pu do swoich plików, można ponownie zezwolić " "na to w System Settings > Privacy & Security > Files & Folders." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "JeÅ›li wczeÅ›niej odmówiÅ‚eÅ› dostÄ™pu do swoich plików, możesz zezwolić na to w " "Preferencjach System > BezpieczeÅ„stwo i Prywatność > Prywatność > Pliki i " "Foldery." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Nie udaÅ‚o siÄ™ wyodrÄ™bnić ciÄ…gów z kodu źródÅ‚owego." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Nie można otworzyć pliku „%sâ€." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Aktualizowanie tÅ‚umaczeÅ„" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "OkreÅ›lanie różnic…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Scalanie różnic…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Plik tÅ‚umaczenia jest już aktualny, nie wprowadzono żadnych zmian w ciÄ…gach." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Plik tÅ‚umaczenia zostaÅ‚ zaktualizowany o %s zmianÄ™." msgstr[1] "Plik tÅ‚umaczenia zostaÅ‚ zaktualizowany o %s zmiany." msgstr[2] "Plik tÅ‚umaczenia zostaÅ‚ zaktualizowany o %s zmian." msgstr[3] "Plik tÅ‚umaczenia zostaÅ‚ zaktualizowany o %s zmian." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Nowe ciÄ…gi do przetÅ‚umaczenia:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "UsuniÄ™te ciÄ…gi (już nieużywane):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "Wykryto %d problem z ciÄ…gami źródÅ‚owymi." msgstr[1] "Wykryto %d problemy z ciÄ…gami źródÅ‚owymi." msgstr[2] "Wykryto %d problemów z ciÄ…gami źródÅ‚owymi." msgstr[3] "Wykryto %d problemów z ciÄ…gami źródÅ‚owymi." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Zobacz szczegóły…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Zobacz szczegóły…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Uszkodzony nagłówek: „%s\"" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Pliki tÅ‚umaczeÅ„ PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Szablony tÅ‚umaczeÅ„ POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Pliki tÅ‚umaczeÅ„ XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Katalog lokalizacji Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Pliki tÅ‚umaczeÅ„ JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Pliki tÅ‚umaczeÅ„ Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Wszystkie pliki tÅ‚umaczeÅ„" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Poedit nie może rozpoznać tego formatu pliku." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Ten plik JSON nie jest plikiem tÅ‚umaczeÅ„ i nie może być edytowany w Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" "Wczytywanie zawartoÅ›ci pliku nie powiodÅ‚o siÄ™ z nastÄ™pujÄ…cym błędem: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Plik „%s†ma atrybut „tylko do odczytu†i nie może być zapisany.\n" "Zapisz go pod innÄ… nazwÄ…." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Nie można zapisać pliku %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Zrzuty ekranu:" #: src/catalog_po.cpp:134 #, 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] "Nie wczytano prawidÅ‚owo %i wiersza pliku „%sâ€." msgstr[1] "Nie wczytano prawidÅ‚owo %i wierszy pliku „%sâ€." msgstr[2] "Nie wczytano prawidÅ‚owo %i wierszy pliku „%sâ€." msgstr[3] "Nie wczytano prawidÅ‚owo %i wierszy pliku „%sâ€." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Wiersz %d pliku „%s†jest uszkodzony (niepoprawne dane „%sâ€)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Uszkodzony plik PO: użyto liczby pojedynczej msgstr razem z msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Uszkodzony plik PO: użyto liczby mnogiej msgstr bez msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Nie można wczytać pliku. Prawdopodobnie jest uszkodzony." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "WystÄ…piÅ‚y błędy w czasie odczytu pakietu. W wyniku czego może brakować " "części danych bÄ…dź mogÄ… być one uszkodzone." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "WystÄ…piÅ‚ problem z dokÅ‚adnym formatowaniem pliku, ale zostaÅ‚ on zapisany " "poprawnie." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Nie można zapisać pliku w zestawie znaków „%sâ€, jak okreÅ›lono w ustawieniach " "tÅ‚umaczeÅ„.\n" "\n" "Zamiast tego zostaÅ‚ on zapisany w UTF-8, a samo ustawienie zostaÅ‚o do tego " "dopasowane." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Błąd zapisu pliku" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "„%s\" nie jest poprawnym plikiem POT." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Nieoczekiwanie brakuje zawartoÅ›ci w pliku XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" "Zapisywanie w innej lokalizacji nie jest obsÅ‚ugiwane w przypadku plików " "XCLOC." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Błąd podczas Å‚adowania pliku XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "nieobsÅ‚ugiwana wersja (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Uszkodzone znaczniki w Å‚aÅ„cuchu tÅ‚umaczenia." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Połącz program Poedit z obsÅ‚ugiwanymi platformami lokalizacyjnymi w chmurze, " "aby pÅ‚ynnie synchronizować zarzÄ…dzane na nich tÅ‚umaczenia." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Jak dziaÅ‚a synchronizacja w chmurze?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Konto" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(nie zalogowano)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Otwórz tÅ‚umaczenie w chmurze" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "ZarzÄ…dzaj kontami" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekt:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "JÄ™zyk:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Zaloguj siÄ™ na konto w chmurze" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Zaloguj siÄ™ na konto w chmurze" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Brak projektów z tÅ‚umaczeniami na twoim koncie." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Pobieranie najnowszych tÅ‚umaczeń…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Zaloguj siÄ™ do %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Synchronizowanie" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "PrzesyÅ‚anie tÅ‚umaczeÅ„ do %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "PrzesyÅ‚anie tÅ‚umaczeÅ„ do %s nie powiodÅ‚o siÄ™." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Błąd synchronizacji" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Dodaj" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Nieznany błąd Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Brak autoryzacji, zaloguj siÄ™ ponownie." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Projekty Crowdin oparte na ciÄ…gach nie sÄ… obsÅ‚ugiwane." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Ten projekt ma wyłączone pobieranie tÅ‚umaczeÅ„." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Zaloguj" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Zaloguj siÄ™" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Wyloguj" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Wyloguj siÄ™" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Dowiedz siÄ™ wiÄ™cej o Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin to internetowa platforma do zarzÄ…dzania tÅ‚umaczeniami i narzÄ™dzie do " "współpracy przy tÅ‚umaczeniu. Sami używamy Crowdin do tÅ‚umaczenia Poedit na " "wiele jÄ™zyków i bardzo nam siÄ™ to podoba." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Oczekiwanie na uwierzytelnienie…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Aktualizowanie informacji o użytkowniku…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Zaloguj siÄ™ do Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Synchronizacja z Crowdin nie powiodÅ‚a siÄ™." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Błąd Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "PrzesyÅ‚anie tÅ‚umaczeń…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopiuj" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Dowiedz siÄ™ wiÄ™cej" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Pomoc" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Plików MO nie można edytować bezpoÅ›rednio w programie Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Błąd podczas otwierania pliku" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Zamiast tego, otwórz i edytuj odpowiadajÄ…cy mu plik PO. Podczas zapisywania " "pliku PO, odpowiadajÄ…cy mu plik MO zostanie zaktualizowany." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "nie usuwaj plików tymczasowych (dla debugowania)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "włącz obsÅ‚ugÄ™ protokoÅ‚u poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "przejdź do elementu w wierszu o podanym numerze" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Nieudana komunikacja z procesem Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "WystÄ…piÅ‚ nieobsÅ‚ugiwany wyjÄ…tek: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Wybierz szablon tÅ‚umaczenia" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "NieprawidÅ‚owy plik" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Wybierz plik tÅ‚umaczenia" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit jest Å‚atwym w użyciu edytorem tÅ‚umaczeÅ„." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Na okno Poedit nie można upuÅ›cić wiÄ™cej niż jeden plik." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Plik „%s†nie jest plikiem tÅ‚umaczeÅ„." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Plik “%s†nie istnieje." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Sprawdzanie pisowni jest wyłączone, ponieważ sÅ‚ownik %s nie jest " "zainstalowany." #: src/edframe.cpp:871 msgid "Install" msgstr "Zainstaluj" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Plik „%s†zostaÅ‚ zmieniony przez innÄ… aplikacjÄ™." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Wczytaj plik ponownie" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Czy chcesz ponownie zaÅ‚adować plik z dysku? JeÅ›li to zrobisz, twoje " "niezapisane zmiany w Poedit zostanÄ… utracone." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignoruj" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Wczytaj plik ponownie" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Plik zostaÅ‚ zmieniony. Czy chcesz zapisać zmiany?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Zapisz zmiany" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "JeÅ›li nie zapiszesz swoich zmian, zostanÄ… one utracone." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Zapisz" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "N&ie zapisuj" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Nie zapisuj" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "JeÅ›li zapiszesz, utracisz zmiany wprowadzone przez innÄ… aplikacjÄ™." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Anuluj" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Zapisz mimo to" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Zapisz mimo to" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Zapisz jako…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Skompiluj do…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Skompilowany pliki tÅ‚umaczeÅ„" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Eksportuj do HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Pliki HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Eksportowanie do HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Aktualizacja nie powiodÅ‚a siÄ™" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Otwórz plik referencyjny" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Aktualizuj z pliku &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Aktualizuj z pliku &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "W tÅ‚umaczeniu znaleziono %d problem." msgstr[1] "W tÅ‚umaczeniu znaleziono %d problemy." msgstr[2] "W tÅ‚umaczeniu znaleziono %d problemów." msgstr[3] "W tÅ‚umaczeniu znaleziono %d problemów." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Wynik weryfikacji" #: src/edframe.cpp:1842 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 "" "Elementy zawierajÄ…ce błędy zostaÅ‚y oznaczone kolorem czerwonym. Szczegółowy " "opis błędu bÄ™dzie widoczny po wybraniu elementu." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Plik zostaÅ‚ zapisany bezpiecznie." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Plik zostaÅ‚ zapisany bezpiecznie i skompilowany do formatu .mo, ale " "prawdopodobnie nie bÄ™dzie dziaÅ‚aÅ‚ poprawnie." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Plik zostaÅ‚ zapisany bezpiecznie, ale nie może zostać skompilowany do " "formatu .mo ani użyty." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Plik zostaÅ‚ skompilowany do formatu MO jednak prawdopodobnie nie bÄ™dzie " "dziaÅ‚aÅ‚ poprawnie." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Ten plik nie może zostać skompilowany do formatu MO i użyty." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Nie znaleziono problemów." #: src/edframe.cpp:1894 #, 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] "" "TÅ‚umaczenie jest gotowe do użycia, ale %d pozycja nie zostaÅ‚a jeszcze " "przetÅ‚umaczony." msgstr[1] "" "TÅ‚umaczenie jest gotowe do użycia, ale %d pozycje nie zostaÅ‚y jeszcze " "przetÅ‚umaczone." msgstr[2] "" "TÅ‚umaczenie jest gotowe do użycia, ale %d pozycji nie zostaÅ‚o jeszcze " "przetÅ‚umaczonych." msgstr[3] "" "TÅ‚umaczenie jest gotowe do użycia, ale %d pozycji nie zostaÅ‚o jeszcze " "przetÅ‚umaczonych." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "TÅ‚umaczenie jest gotowe do użycia." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit automatycznie naprawiÅ‚ nieprawidÅ‚owoÅ›ci w pliku „%sâ€." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Plik zawieraÅ‚ powielone elementy, co nie jest dozwolone w plikach PO i " "mogÅ‚oby uniemożliwić jego użycie. Poedit naprawiÅ‚ ten problem, ale należy " "przejrzeć tÅ‚umaczenia wszystkich pozycji oznaczonych jako wymagajÄ…ce " "dopracowania i w razie potrzeby poprawić je." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Nie okreÅ›lono jÄ™zyka tÅ‚umaczenia." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Wybierz jÄ™zyk" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Podpowiedzi nie sÄ… dostÄ™pne, jeżeli jÄ™zyk tÅ‚umaczenia nie jest poprawnie " "ustawiony. Inne funkcje, takie jak liczba mnogÄ…, mogÄ… także nie dziaÅ‚ać " "poprawnie." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "JÄ™zyk tÅ‚umaczenia jest taki sam jak jÄ™zyk źródÅ‚owy." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Napraw jÄ™zyk" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Napraw jÄ™zyk" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Ten plik zawiera wpisy z liczbami mnogimi, ale nie ma skonfigurowany " "nagłówek Plural-Forms." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Wpisy w tym pliku zawierajÄ… róźne formy liczby mnogiej liczÄ… siÄ™ od tego, co " "mówi nagłówek plural-forms pliku" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Brakuje nagłówka Plural-Forms." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Błąd skÅ‚adni w nagłówku Plural-Forms („%sâ€)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Napraw nagłówek" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Napraw nagłówek" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Wyrażenie formy liczby mnogiej używane w pliku jest nietypowe dla %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Do sprawdzenia" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Czy chcesz użyć jÄ™zyka angielskiego dla tekstu źródÅ‚owego?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Ten plik używa identyfikatorów ciÄ…gów zamiast tekstu źródÅ‚owego. Poedit może " "zaÅ‚adować dla ciebie teksty w jÄ™zyku angielskim z pliku \"%s\"." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "ZaÅ‚aduj angielski" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "PrzetÅ‚umaczone: %d z %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "PozostaÅ‚o: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d błąd" msgstr[1] "%d błędy" msgstr[2] "%d błędów" msgstr[3] "%d błędów" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d wpis" msgstr[1] "%d wpisy" msgstr[2] "%d wpisów" msgstr[3] "%d wpisów" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (niezapisany)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (zmodyfikowano)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Nie udaÅ‚o siÄ™ zaktualizować pamiÄ™ci tÅ‚umaczeniowej: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Nie można zapisać pliku „%sâ€." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "UsuÅ„ tÅ‚umaczenia z tego samego źródÅ‚a" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Czy chcesz usunąć wszystkie tÅ‚umaczenia, które sÄ… identyczne z tekstem " "źródÅ‚owym?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Ta akcja spowoduje usuniÄ™cie wszystkich tÅ‚umaczeÅ„, które dokÅ‚adnie pasujÄ… do " "tekstu źródÅ‚owego. Nie można tego cofnąć." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Zachowaj" #: src/edframe.cpp:2856 msgid "Remove" msgstr "UsuÅ„" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Wyczyść usuniÄ™te tÅ‚umaczenia" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Czy chcesz usunąć wszystkie nieużywane tÅ‚umaczenia?" #: src/edframe.cpp:2879 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 "" "KontynuujÄ…c trwale usuniesz wszystkie tÅ‚umaczenia oznaczone jako usuniÄ™te. " "JeÅ›li w przyszÅ‚oÅ›ci zostanÄ… dodane, konieczne bÄ™dzie ich ponowne tÅ‚umaczenie." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Wyczyść" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Skopiuj z tekstu źródÅ‚owego" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Skopiuj z tekstu źródÅ‚owego" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Wyczyść tÅ‚umaczenie" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Wyczyść tÅ‚umaczenie" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Edytuj komentarz" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Edytuj komentarz" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "WystÄ…pienia kodu" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "WystÄ…pienia kodu" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Ukryj pasek boczny" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Pokaż pasek boczny" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Ukryj pasek stanu" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Pokaż pasek stanu" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "DÅ‚ugość ciÄ…gu w znakach: tÅ‚umaczenie | źródÅ‚o" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "DÅ‚ugość ciÄ…gu w znakach" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Tekst źródÅ‚owy" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Liczba pojedyncza" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Liczba mnoga" #: src/editing_area.cpp:477 msgid "Translation" msgstr "TÅ‚umaczenie" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "WstÄ™pnie przetÅ‚umaczone" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Wymaga pracy" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Wymaga pracy" #: src/editing_area.cpp:566 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 "" "Pliki POT sÄ… jedynie szablonem tÅ‚umaczenia i nie zawierajÄ… one tÅ‚umaczeÅ„.\n" "Aby utworzyć nowe tÅ‚umaczenie utwórz nowy plik PO oparty na tym szablonie." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Utwórz nowe tÅ‚umaczenie" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Utwórz nowe tÅ‚umaczenie z tego pliku POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID tekstu źródÅ‚owego" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Wszystko" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Formularz %i (nieużywany)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Zero" #: src/editing_area.cpp:788 msgid "One" msgstr "Jeden" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dwa" #: src/editing_area.cpp:804 msgid "Other" msgstr "Inne" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Zawartość ciÄ…gu: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identyfikator ciÄ…gu: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Format %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "TÅ‚umaczenie — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Tekst źródÅ‚owy — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "nieznany jÄ™zyk" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Błąd sieci: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Nieznany błąd" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Nie udaÅ‚o siÄ™ połączyć pakietów gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Otwórz w edytorze" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Otwórz w edytorze" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "W pliku nie podano żadnych informacji o wystÄ…pieniach tego ciÄ…gu w kodzie " "źródÅ‚owym." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Nie znaleziono informacji o użyciu" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d wystÄ…pienie kodu" msgstr[1] "%d wystÄ…pienia kodu" msgstr[2] "%d wystÄ…pieÅ„ kodu" msgstr[3] "%d wystÄ…pieÅ„ kodu" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Nie znaleziono kodu źródÅ‚owego" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit nie może pokazać kodu źródÅ‚owego, w którym jest używany ciÄ…g, " "ponieważ plik nie jest dostÄ™pny w lokalizacji, do której istnieje odwoÅ‚anie, " "albo jest odwoÅ‚aniem symbolicznym, które nie wskazuje na prawdziwy plik." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Nie można otworzyć pliku" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit nie może otworzyć pliku \"%s\"." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Znajdź" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "ZamieÅ„" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opcje" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignoruj wielkość liter" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Zawijaj wyszukiwanie" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Tylko caÅ‚e wyrazy" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Szukaj w tekstach źródÅ‚owych" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Szukaj w tÅ‚umaczeniach" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Szukaj w komentarzach" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Z&amieÅ„ wszystko" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Z&amieÅ„ wszystko" #: src/findframe.cpp:150 msgid "&Replace" msgstr "ZamieÅ„" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "« &Poprzednie" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&NastÄ™pne »" #: src/findframe.cpp:235 msgid "String to find" msgstr "Tekst do wyszukania" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "ZamieÅ„ na tekst" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "ostrzeżenie: " #: src/gexecute.cpp:171 msgid "error: " msgstr "błąd: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Nazwa jÄ™zyka lub kod" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "JÄ™zyk tÅ‚umaczenia" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "JÄ™zyk tÅ‚umaczenia:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Wszystkie ciÄ…gi" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Nie można pobrać szczegółów projektu Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "WystÄ…piÅ‚ błąd podczas przesyÅ‚ania tÅ‚umaczeÅ„ do Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projekty" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "WiÄ™cej informacji o %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy jest wysoce zautomatyzowanÄ… platformÄ… lokalizacyjnÄ…, umożliwiajÄ…cÄ… " "każdemu Å‚atwe tÅ‚umaczenie swoich produktów i treÅ›ci na wiele jÄ™zyków." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Dodaj projekt" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Dodaj projekt" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Menedżer pakietów" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Edytuj…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Utwórz nowy projekt tÅ‚umaczeÅ„" #: src/manager.cpp:145 msgid "Delete the project" msgstr "UsuÅ„ projekt" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Edytuj projekt" #: src/manager.cpp:176 msgid "Update all" msgstr "Aktualizuj wszystkie" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Aktualizuj wszystkie pakiety w projekcie" #: src/manager.cpp:378 msgid "Total" msgstr "Razem" #: src/manager.cpp:379 msgid "Untrans" msgstr "NieprzetÅ‚umaczone" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Wymaga pracy" #: src/manager.cpp:381 msgid "Errors" msgstr "Błędy" #: src/manager.cpp:382 msgid "Last modified" msgstr "Ostatnio zmodyfikowano" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Wybierz katalog" #: src/manager.cpp:433 msgid "Directories:" msgstr "Katalogi:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Czy chcesz usunąć projekt \"%s\"?" #: src/manager.cpp:540 msgid "Delete project" msgstr "UsuÅ„ projekt" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "UsuniÄ™cie projektu nie spowoduje usuniÄ™cia żadnych plików tÅ‚umaczeÅ„." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Potwierdzenie" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Czy zaktualizować wszystkie katalogi w tym projekcie?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" "Wykonuje aktualizacjÄ™ z kodu źródÅ‚owego na wszystkich plikach w projekcie." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Aktualizacja katalogów projektów" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Sprawdź dostÄ™pność aktualizacji…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Menedżer pakietów" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Ustawienia…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Edycja" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Cofnij" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Ponów" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Wklej i dopasuj styl" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "UsuÅ„" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Pisownia i gramatyka" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Pokaż pisowniÄ™ i gramatykÄ™" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Sprawdź dokument teraz" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Sprawdzaj pisowniÄ™ w trakcie pisania" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Sprawdzaj gramatykÄ™ i pisowniÄ™" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Poprawiaj pisowniÄ™ automatycznie" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Zamienniki" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Pokaż zamienniki" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Inteligentne kopiowanie/wklejanie" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Inteligentne cytaty" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Inteligentne myÅ›lniki" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Inteligentne odnoÅ›niki" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "ZastÄ™powanie tekstu" #: src/menus.cpp:230 msgid "Transformations" msgstr "PrzeksztaÅ‚cenia" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "ZamieÅ„ na duże litery" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "ZamieÅ„ na maÅ‚e litery" #: src/menus.cpp:234 msgid "Capitalize" msgstr "ZamieÅ„ na kapitaliki" #: src/menus.cpp:237 msgid "Speech" msgstr "Narracja" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Rozpocznij mówienie" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Zatrzymaj mówienie" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Widok" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Pokaż pasek narzÄ™dzi" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Dostosuj pasek narzÄ™dzi…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Tryb peÅ‚noekranowy" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Okno" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimalizuj" #: src/menus.cpp:264 msgid "Zoom" msgstr "Zoom" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Witamy w Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Umieść wszystko na wierzchu" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informacje o tÅ‚umaczu" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Autor:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "ImiÄ™ i nazwisko" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Adres e-mail:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "twojmail@domena.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Twoje imiÄ™ i nazwisko oraz adres e-mail użyte zostanÄ… wyłącznie w celu " "ustawienia nagłówka Last-Translator w plikach GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Edytowanie" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Automatycznie kompiluj plik MO podczas zapisywania" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Sprawdzaj pisowniÄ™" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Uaktywniaj pole wprowadzania tekstu" #: src/prefsdlg.cpp:211 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 "" "Nie zaleca siÄ™ włączania tej opcji. JeÅ›li zostanie włączona, do nawigacji po " "polach trzeba bÄ™dzie używać klawisza Ctrl i strzaÅ‚ek, ale za to bÄ™dzie można " "niezwÅ‚ocznie przystÄ…pić do wpisywania tÅ‚umaczonego tekstu." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "WyglÄ…d" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Użyj niestandardowej czcionki listy:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Użyj niestandardowej czcionki pola tekstowego:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "ZmieÅ„ jÄ™zyk interfejsu" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(wymaga Windows 8 lub nowszego)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Ustawienia główne" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Używaj pamiÄ™ci tÅ‚umaczeniowej" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "ZarzÄ…dzaj…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Podczas aktualizacji ze źródeÅ‚" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "wskaż rozmyte dopasowania w ramach pliku" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "wstÄ™pnie przetÅ‚umacz korzystajÄ…c z pamiÄ™ci tÅ‚umaczeniowej" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit może spróbować wypeÅ‚nić pola, korzystajÄ…c wyłącznie z poprzednich " "tÅ‚umaczeÅ„ zawartych w pliku lub z caÅ‚ej pamiÄ™ci tÅ‚umaczeÅ„. Skuteczność " "użycia TM nie bÄ™dzie duża, jeÅ›li pamięć jest prawie pusta, bÄ™dzie jednak " "ulegać poprawie w miarÄ™ dodawania kolejnych tÅ‚umaczeÅ„." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Zapisane tÅ‚umaczenia:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Rozmiar bazy danych na dysku:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importuj pliki tÅ‚umaczeń…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importuj pliki tÅ‚umaczeń…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importuj z TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importuj z TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Eksportuj do TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Eksportuj do TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Wyczyść" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Wybierz pliki tÅ‚umaczeÅ„ do zaimportowania" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Wybierz pliki TMX do zaimportowania" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Pliki TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Trwa importowanie tÅ‚umaczeń…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Importowanie pamiÄ™ci tÅ‚umaczeniowej nie powiodÅ‚o siÄ™." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importowanie z „%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "Zaimportowano %s tÅ‚umaczenie." msgstr[1] "Zaimportowano %s tÅ‚umaczenia." msgstr[2] "Zaimportowano %s tÅ‚umaczeÅ„." msgstr[3] "Zaimportowano %s tÅ‚umaczeÅ„." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Eksportuj jako…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Eksportowanie tÅ‚umaczeń…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Eksportowanie pamiÄ™ci tÅ‚umaczeniowej do \"%s\" nie powiodÅ‚o siÄ™." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Wyczyść pamięć tÅ‚umaczeniowÄ…" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Czy na pewno chcesz wyczyÅ›cić pamięć tÅ‚umaczeniowÄ…?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Wyczyszczenie pamiÄ™ci tÅ‚umaczeniowej bezpowrotnie usunie wszystkie " "zapamiÄ™tane tÅ‚umaczenia. Tej operacji nie można cofnąć." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Pamięć tÅ‚umaczeniowa" #: src/prefsdlg.cpp:730 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 "" "WyodrÄ™bnianie z kodu źródÅ‚owego pozwala odnaleźć teksty, które mogÄ… zostać " "przetÅ‚umaczone w plikach źródÅ‚owych programu i wyodrÄ™bnia je, gotowe do " "tÅ‚umaczenia." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Niestandardowe ekstraktory:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Niestandardowe ekstraktory:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "ObsÅ‚uguje wszystkie jÄ™zyki programowania rozpoznawalne przez narzÄ™dzia GNU " "gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript i inne)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "UsuÅ„ wyodrÄ™bnienie" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Czy na pewno chcesz usunąć wyodrÄ™bnienie “%sâ€?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "WyodrÄ™bnianie" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Konta" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Automatycznie sprawdzaj dostÄ™pność aktualizacji" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Sprawdzaj także wersje beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Wersje beta zawierajÄ… nowÄ… funkcjonalność i usprawnienia, mogÄ… być jednak " "mniej stabilne." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Aktualizacje" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Te ustawienia majÄ… wpÅ‚yw na wewnÄ™trzne formatowanie plików PO. ZmieÅ„ je, " "jeżeli masz specyficzne wymagania np.: ze wzglÄ™du na system kontroli wersji." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Format zakoÅ„czeÅ„ wierszy:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (zalecany)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Szerokość:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Zachowaj formatowanie istniejÄ…cych plików" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Zaawansowane" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Ustawienia" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Przygotowywanie ciÄ…gów…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "WstÄ™pne tÅ‚umaczenie z pamiÄ™ci tÅ‚umaczeniowej…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "WstÄ™pnie przetÅ‚umaczony %u ciÄ…g" msgstr[1] "WstÄ™pnie przetÅ‚umaczone %u ciÄ…gi" msgstr[2] "WstÄ™pnie przetÅ‚umaczone %u ciÄ…gi" msgstr[3] "WstÄ™pnie przetÅ‚umaczone %u ciÄ…gi" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "WstÄ™pne tÅ‚umaczenie…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d wpis zostaÅ‚ wstÄ™pnie przetÅ‚umaczony." msgstr[1] "%d wpisy zostaÅ‚y wstÄ™pnie przetÅ‚umaczone." msgstr[2] "%d wpisów zostaÅ‚o wstÄ™pnie przetÅ‚umaczonych." msgstr[3] "%d wpisów zostaÅ‚o wstÄ™pnie przetÅ‚umaczonych." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "TÅ‚umaczenia zostaÅ‚y oznaczone jako wymagajÄ…ce dopracowania, ponieważ mogÄ… " "być niedokÅ‚adne. Należy sprawdzić ich poprawność." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "DokÅ‚adne dopasowania z TM" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Przybliżone dopasowania z TM" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Å»aden z wpisów nie mógÅ‚ być wstÄ™pnie przetÅ‚umaczony." #: src/pretranslate.cpp:218 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 "" "Pamięć tÅ‚umaczeniowa nie zawiera żadnych wpisów pasujÄ…cych do treÅ›ci tego " "pliku. Funkcja ta jest efektywna tylko dla tÅ‚umaczeÅ„ półautomatycznych po " "tym, jak pamięć tÅ‚umaczeniowa Poedit nauczy siÄ™ z plików rÄ™cznie " "przetÅ‚umaczonych." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Nie można wstÄ™pnie przetÅ‚umaczyć bez tekstu źródÅ‚owego." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "WstÄ™pnie przetÅ‚umacz" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "WstÄ™pne tÅ‚umaczenie wymaga, aby tekst źródÅ‚owy byÅ‚ dostÄ™pny. Nie dziaÅ‚a, " "jeÅ›li używane sÄ… tylko identyfikatory bez aktualnego tekstu." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Nie można wstÄ™pnie przetÅ‚umaczyć z nieznanego jÄ™zyka." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "WstÄ™pne tÅ‚umaczenie wymaga, aby jÄ™zyk tekstu źródÅ‚owego byÅ‚ znany. Poedit " "nie mógÅ‚ wykryć go w tym pliku." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "UzupeÅ‚niaj jedynie dokÅ‚adne odpowiedniki" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "DomyÅ›lnie uwzglÄ™dnia siÄ™ również niedokÅ‚adne wyniki, ale oznaczone jako " "wymagajÄ…ce pracy. Sprawdź tÄ™ opcjÄ™, aby uwzglÄ™dnić tylko idealne dopasowania." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Nie oznaczaj dokÅ‚adnych dopasowaÅ„ jako wymagajÄ…cych pracy" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Włącz tylko wtedy, jeÅ›li ufasz jakoÅ›ci swojej TM. DomyÅ›lnie wszystkie " "dopasowania z TM sÄ… oznaczone jako wymagajÄ…ce dopracowania i powinny zostać " "przejrzane przed użyciem." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "WstÄ™pne tÅ‚umaczenie automatycznie znajduje w pamiÄ™ci tÅ‚umaczeÅ„ dokÅ‚adne lub " "przybliżone dopasowania dla nieprzetÅ‚umaczonych ciÄ…gów, a nastÄ™pnie wypeÅ‚nia " "ich tÅ‚umaczenia." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Błąd: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "WystÄ…piÅ‚ %d błąd:" msgstr[1] "WystÄ…piÅ‚y %d błędy:" msgstr[2] "WystÄ…piÅ‚o %d błędów:" msgstr[3] "WystÄ…piÅ‚o %d błędów:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "WystÄ…piÅ‚ błąd." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "WystÄ…piÅ‚ %d błąd." msgstr[1] "WystÄ…piÅ‚y %d błędy." msgstr[2] "WystÄ…piÅ‚o %d błędów." msgstr[3] "WystÄ…piÅ‚o %d błędów." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Anulowanie…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "PrzeciÄ…gnij tutaj foldery lub pliki" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "PrzeciÄ…gnij tutaj foldery lub pliki" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Dodaj foldery…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Dodaj foldery…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Dodaj pliki…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Dodaj pliki…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Dodaj wieloznacznik…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Dodaj wieloznacznik…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Pokaż w Finderze" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Pokaż w Eksploratorze" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Pokaż w folderze" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Åšcieżki" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Wykluczone Å›cieżki" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Zaawansowane ustawienia wyodrÄ™bniania" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "WyodrÄ™bnij informacje dla tÅ‚umaczy z:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Komentarzy z prefiksem:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Wszystkich komentarzy" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Dodatkowe flagi Xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Dodatkowe sÅ‚owa kluczowe" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Nazwa dla projektu tÅ‚umaczenia" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Nazwa grupy i adres e-mail lub adres URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "np. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (zalecane)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Najpierw zapisz plik. Przed zapisaniem pliku nie można edytować tej sekcji." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "PrawidÅ‚owość symboli zastÄ™pczych" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "W tÅ‚umaczeniu brakuje symbolu zastÄ™pczego \"%s\"." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" "ZbÄ™dny symbol zastÄ™pczy \"%s\", który nie znajduje siÄ™ w tekÅ›cie źródÅ‚owym." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "TÅ‚umaczenia form liczb mnogic" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Nie wszystkie formy liczby mnogiej sÄ… przetÅ‚umaczone." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Niespójne wielkie/maÅ‚e litery" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "TÅ‚umaczenie powinno siÄ™ zaczynać jak zdanie." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "TÅ‚umaczenie powinno zacząć siÄ™ małą literÄ…." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Niespójne spacje" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "TÅ‚umaczenie nie zaczyna siÄ™ od spacji." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "TÅ‚umaczenie zaczyna siÄ™ od spacji, podczas gdy tekst źródÅ‚owy - nie." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "W tÅ‚umaczeniu brakuje nowej linii na koÅ„cu." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "TÅ‚umaczenie koÅ„czy siÄ™ nowÄ… liniÄ…, podczas gdy tekst źródÅ‚owy - nie." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "W tÅ‚umaczeniu brakuje spacji na koÅ„cu." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "TÅ‚umaczenie zaczyna siÄ™ od spacji, podczas gdy tekst źródÅ‚owy - nie." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Sprawdzanie interpunkcji" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "TÅ‚umaczenie powinno koÅ„czyć siÄ™ \"%s\"." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "TÅ‚umaczenie nie powinno koÅ„czyć siÄ™ \"%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "TÅ‚umaczenie koÅ„czy siÄ™ \"%s\", podczas gdy tekst źródÅ‚owy koÅ„czy siÄ™ \"%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Chmura" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Wyczyść menu" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Wyczyść menu" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Komentarz:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Aktualizuj" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&UsuÅ„" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "UsuÅ„ komentarz" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Edytuj projekt" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nazwa projektu:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "PrzeglÄ…daj" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Dodaj katalog do listy" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Plik" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Nowy…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nowy z pliku &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nowy z pliku &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Otwórz…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Ostatnio otwierane" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Otwórz ostatnie" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Otwórz tÅ‚umaczenie w chmurze…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Otwórz Å‚umaczenie w chmurze…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Uruchom okno" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Uruchom okno" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Menedżer pakietów" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Menedżer pakietów" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Zamknij" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Zapisz" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Zapisz j&ako…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Zapisz j&ako…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Skompiluj do MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "W&yeksportuj do HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Sprawdź dostÄ™pność aktualizacji…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Ustawienia…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Ustawienia" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&ZakoÅ„cz" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Wyjdź" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Skopiuj z liczby pojedynczej" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Skopiuj z liczby pojedynczej" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "TÅ‚umaczenie &wymagajÄ…ce pracy" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "TÅ‚umaczenie &wymagajÄ…ce pracy" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Edytuj &komentarz" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Edytuj &komentarz" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Podpowiedzi" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "Znajdź…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Zamień…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Znajdź nastÄ™pne" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Znajdź poprzednie" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Znajdź i zamień…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Znajdź nastÄ™pne" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Znajdź poprzednie" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Pokaż &identyfikator ciÄ…gu" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Pokaż ciÄ…g &identyfikator" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Pokaż ostrzeżenia" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Pokaż ostrzeżenia" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Sortuj wg &nazw plików" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Sortuj wg &nazw plików" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Sortuj wg &źródÅ‚a" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Sortuj wg &źródÅ‚a" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Sortuj wg &tÅ‚umaczenia" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Sortuj wg &tÅ‚umaczenia" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Grupuj wg kontekstu" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Grupuj wg kontekstu" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Błędne na górze" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Błędne na górze" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&NieprzetÅ‚umaczone na górze" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&NieprzetÅ‚umaczone na górze" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Pokaż wystÄ…pienia kodu" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Pokaż wystÄ…pienia kodu" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Pokaż pasek boczny" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Pokaż pasek stanu" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&TÅ‚umaczenie" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "Zaktualizuj z kodu źródÅ‚owego" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "Zaktualizuj z kodu źródÅ‚owego" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Synchronizuj z Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "WstÄ™pnie prze&tÅ‚umacz…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Weryfikuj tÅ‚umaczenia" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Weryfikuj tÅ‚umaczenie" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "UsuÅ„ tÅ‚umaczenia takie same jak tekst źródÅ‚owy" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Wyczyść usuniÄ™te tÅ‚umaczenia" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Wyczyść usuniÄ™te tÅ‚umaczenia" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&WÅ‚aÅ›ciwoÅ›ci…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "Nawi&gacja" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&ZakoÅ„cz i przejdź do nastÄ™pnego" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&ZakoÅ„cz i przejdź do nastÄ™pnego" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Poprzednio edytowane" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Poprzednio edytowane" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Poprzednie tÅ‚umaczenie" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Poprzednie tÅ‚umaczenie" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&NastÄ™pne tÅ‚umaczenie" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&NastÄ™pne tÅ‚umaczenie" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Pop&rzednie nieukoÅ„czone" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Pop&rzednie nieukoÅ„czone" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "&NastÄ™pne nieukoÅ„czone" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "&NastÄ™pne nieukoÅ„czone" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Poprzednia forma liczby mnogiej" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Poprzednia forma liczby mnogiej" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "NastÄ™pna forma liczby mnogiej" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "NastÄ™pna forma liczby mnogiej" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Pomoc &online" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Pomoc &online" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Dokumentacja &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Dokumentacja &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&O Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&O programie" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Ustawienia wyodrÄ™bniania" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista rozszerzeÅ„ rozdzielonych Å›rednikami, np. *.cpp;*.h:" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "WywoÅ‚anie:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Polecenie do wyodrÄ™bnienia tÅ‚umaczenia:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "To jest polecenie które uruchomi program do wyodrÄ™bniania.\n" "%o zastÄ™puje nazwÄ™ pliku wyjÅ›ciowego,\n" "%K - listÄ™ słów kluczowych, %F listÄ™ plików wejÅ›ciowych\n" "%C - flagÄ™ kodowania źródÅ‚a (zobacz niżej)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Element na liÅ›cie słów kluczowych:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Zostanie to dołączone do wiersza poleceÅ„ dla każdego sÅ‚owa kluczowego.\n" "%k zostanie zastÄ…pione sÅ‚owem kluczowym." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Element na liÅ›cie plików wejÅ›ciowych:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Zostanie to dołączone do wiersza poleceÅ„ dla każdego pliku wejÅ›ciowego.\n" "%f zostanie zastÄ…pione nazwÄ… pliku." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Kodowanie źródÅ‚a:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Zostanie to dołączone do wiersza poleceÅ„ tylko, jeÅ›li zostaÅ‚o podane " "kodowanie\n" "znaków źródÅ‚a. %c zostanie zastÄ…pione typem kodowania." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "WÅ‚aÅ›ciwoÅ›ci tÅ‚umaczenia" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nazwa projektu i wersja:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Grupa tÅ‚umaczeniowa:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Formy liczby mnogiej:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Użyj domyÅ›lnych reguÅ‚ dla tego jÄ™zyka" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Użyj wyrażenia wÅ‚asnego" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Informacje o formach liczby mnogiej" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Kodowanie:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Zaawansowane ustawienia wyodrÄ™bniania…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Zaawansowane ustawienia wyodrÄ™bniania…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "WÅ‚aÅ›ciwoÅ›ci tÅ‚umaczenia" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Åšcieżki źródeÅ‚" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Åšcieżki źródeÅ‚" #: src/resources/properties.xrc:164 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:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Åšcieżka podstawowa:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "ŹródÅ‚owe sÅ‚owa kluczowe" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "ŹródÅ‚a słów kluczowych" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Do rozpoznania tekstów do tÅ‚umaczenia w plikach źródÅ‚owych użyj\n" "poniższych słów kluczowych (nazw funkcji):" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Użyj także domyÅ›lnych słów kluczowych z obsÅ‚ugiwanych jÄ™zyków" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Dowiedz siÄ™ wiÄ™cej o sÅ‚owach kluczowych gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Otwórz plik" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Zapisz plik" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Zweryfikuj" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Sprawdza czy w tÅ‚umaczeniu wystÄ™pujÄ… błędy" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Aktualizuj z kodu" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Aktualizuj z kodu" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Aktualizuj ze źródeÅ‚" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Pasek boczny" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "WyÅ›wietl lub ukryj pasek boczny" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Poprzedni tekst źródÅ‚owy" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Stary tekst źródÅ‚owy (sprzed zmian wynikajÄ…cych z aktualizacji), do którego " "odwoÅ‚uje siÄ™, teraz już niedokÅ‚adne, tÅ‚umaczenie." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Notatki dla tÅ‚umaczy" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Komentarz" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Dodaj komentarz" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Dodaj komentarz" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "UsuÅ„ z pamiÄ™ci tÅ‚umaczeniowej" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "UsuÅ„ z pamiÄ™ci tÅ‚umaczeniowej" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Sugestie tÅ‚umaczenia" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Nie znaleziono odpowiedników" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Nie znaleziono odpowiedników" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Ten tekst zostaÅ‚ znaleziony w pamiÄ™ci tÅ‚umaczeniowej programu Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "WstÄ™pne tÅ‚umaczenia wymagajÄ…, aby tekst źródÅ‚owy byÅ‚ dostÄ™pny. Nie dziaÅ‚ajÄ…, " "jeÅ›li używane sÄ… tylko identyfikatory bez aktualnego tekstu." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Sugestie tÅ‚umaczenia wymagajÄ…, aby jÄ™zyk tekstu źródÅ‚owego byÅ‚ znany. Poedit " "nie mógÅ‚ wykryć go w tym pliku." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Nie można uruchomić programu: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Plik TMX jest uszkodzony." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Baza danych pamiÄ™ci tÅ‚umaczeniowej jest uszkodzona: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Błąd pamiÄ™ci tÅ‚umaczeniowej: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Użyj jÄ™zyka domyÅ›lnego)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Wybór jÄ™zyka" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Wybierz preferowany jÄ™zyk" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Aby zmiany zostaÅ‚y zastosowane, należy ponownie uruchomić Poedit." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Nie można utworzyć katalogu tymczasowego." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Nie ma tÅ‚umaczeÅ„. To siÄ™ rzadko zdarza." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Wpisy możliwe do przetÅ‚umaczenia nie sÄ… dodawane rÄ™cznie w systemie Gettext, " "ale sÄ… automatycznie wyodrÄ™bniane z kodu źródÅ‚owego. W ten sposób pozostajÄ… " "aktualne i dokÅ‚adne. TÅ‚umacze zazwyczaj używajÄ… plików szablonów PO (POT) " "przygotowanych dla nich przez programistÄ™." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Dowiedz siÄ™ wiÄ™cej o GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Najprostszym sposobem wypeÅ‚nienia tego pliku tÅ‚umaczeniami jest " "zaktualizowanie go z POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Aktualizuj z pliku POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Użyj tekstów z istniejÄ…cego szablonu POT." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Możesz także wyodrÄ™bnić elementy do tÅ‚umaczenia bezpoÅ›rednio z kodu " "źródÅ‚owego:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "WyodrÄ™bnij ze źródeÅ‚" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Konfiguruj wyodrÄ™bnianie kodu źródÅ‚owego we wÅ‚aÅ›ciwoÅ›ciach." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Wersja %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Utwórz nowy" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Utwórz nowe tÅ‚umaczenie z szablonu POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "PrzeglÄ…daj pliki" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Otwórz i edytuj pliki tÅ‚umaczeÅ„." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "PrzetÅ‚umacz projekt w chmurze" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Współpracuj z innymi osobami w sieci." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Ostatnie pliki" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Synchronizuj" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Synchronizuj tÅ‚umaczenie z platformÄ… Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Informacje o %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Ustawienia %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Informacje o %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "UsÅ‚ugi" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Ukryj %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Ukryj pozostaÅ‚e" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Pokaż wszystkie" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Zamknij %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Ustawienia…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Preferencje..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferencje..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Zatwierdź" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Zatwierdź" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Wstecz" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Wstecz" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Anuluj" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Wyczyść" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Wyczyść" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopiuj" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Wy&tnij" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Wytnij" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Edytuj" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Wyjdź" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Pomoc" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nowy" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Nowy" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Nie" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Nie" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Otwórz…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Otwórz..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Otwórz..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Wklej" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Wklej" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Preferencje" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Ponów" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "OdÅ›wież" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "Zapi&sz jako" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Zapisz jako" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Zaznacz &wszystko" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Zaznacz wszystko" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Cofnij" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Tak" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Tak" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "StrzaÅ‚ka w górÄ™" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "StrzaÅ‚ka w dół" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Lewo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Prawo" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Ostrzeżenie: " poedit-3.6.3/locales/sv.mo0000644000175100001660000016707715011674351011125 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-«O û‘ ’#’5’=G’ …’“’³’YÓ’S-“\“ Þ“è“ ú“A”F” J” U” `”j”r”y””Š”“”¤” µ”¿”Ɣϔä”ù”ÿ”•3•;•?• F•P•g•~•ƒ•‡•š• ­• ¸• Õϕߕò•–,–!;–!]––ˆ–‘–š– ¡–¬––Ø–ç–ö–——)—D—^—x—“—®—´—¸—Ñ—á—˜ ˜˜!˜'˜ .˜9˜N˜b˜w˜Š˜¤˜¹˜ؘ옙™.™B™ `™(j™%“™(¹™â™ü™ š6š.Sš‚š“š¯šÉš Òš!Üš8þšA7›$y›+ž›Ê› Ó›nà›Oœ=bœJ œ*뜥4Ú á*íž-3ž(až Šž—ž©ž»ž ̞힟.Ÿ&JŸqŸ/Ÿ½ŸÙŸîŸ ôŸÿŸ   4 ; @ P &` ‡ -œ  Ê  Ô ß ü ¡ #¡.D¡ s¡Š€¡ ¢¢*¢B¢Y¢q¢2¢;âÿ¢£#£';£!c£ …£¿‘£ Q¤[¤r¤‰¤¢¤«¤Ĥ"̤ï¤"¥&¥8¥L¥M^¥¬¥ Ç¥#Ò¥pö¥Hg¦@°¦ ñ¦ ý¦§0§H§#W§A{§½§اó§ü§¨¨1¨E¨X¨k¨|¨ ¨ š¨¦¨®¨YÁ¨©1©]G©¥©é!Û©ý©ªª ª(ª>ªTªeª|ª’ª:§ªâª«0«6J«u«÷« ¬2¬7N¬B†¬/ɬ4ù¬.­4­K­.b­P‘­â­ è­ô­®®.®B® Z®f® y®…®–®©®¼® Ù®æ® þ® ¯ ¯¯%¯5¯I¯ d¯…¯¸ˆ¯”A°œÖ°s±|±™±!°±Ò±!é± ²,(²U²t²z²’²±²ʲ è² ó²ÿ²³³³0³8³4M³)‚³¬³ Ƴ гܳä³ó³´0´9´H´`´x´7|´´´@½´þ´°µ%Àµæµøµ/ ¶;¶Q¶ `¶k¶…¶.޶½¶öÕ¶ç¶÷¶·Ñ·ï·ò· ¸¸ 4¸B¸a¸s¸…¸‰¸& ¸LǸ¹++¹3W¹‹¹'©¹'ѹù¹ººŸ º Àºáºþº) »7»Q» n»y»Ž»£»º» Ï» Ù» ã»î»ö»¼&¼>¼™X¼ ò¼ý¼ ½=#½a½1q½£½b½½H ¾i¾p¾>޾;ݾä¾<þ¾ ;¿ÉIÀ5Á(IÁrÁŠÁžÁ?±Á.ñÁ «9€åÂlfÃÓÃâÃôÃÄ(ÄHÄ`ÄxÄ‹ÄžÄ±Ä ÊÄ×ÄàÄèÄÅ Å*Å<2Å oÅ}Å …Å Å ›Å§Å¶Å,¾Å,ëÅÆ,Æ,@ÆmÆ uÆ ƒÆ‘Æ ¥Æ'°Æ ØÆ 䯂Ç ˆÇ–ÇžÇ ¤Ç ²Ç ÀÇ ÍÇ ÚÇ äÇñÇ È6 È CÈ QÈ ]È jÈ ‹È™È(²ÈÛÈõÈ É É"É1ÉCÉRÉnÉɒɥɸÉÇÉ ÙÉåÉÊÊ"Ê2Ê AÊKÊTÊ]ÊfÊvÊʢʹÊÂÊËÊ äÊòÊËË4ËJËh˂˘˶˅ÓËYÌvÌ Ì ™Ì¦Ì ·ÌÄÌ ÔÌáÌñÌRõÌHÍ _Í kÍvÍͣͼÍ/ÓÍÎ,Î BÎPΓYÎAí΄/Ï ´ÏÁÏ)ÚÏ ÐÐ(%Ð'NÐvÐ yÐ=ƒÐ+ÁÐíÐëýÐéÑZÒ7]Òü•Ò´’Ó/GÔ6wÔX®ÔmÕSuÕ%ÉÕ"ïÕÖ10ÖqbÖaÔÖ16×Gh×J°×Hû×+DØ.pØ ŸØ+@Ù(lÙ*•Ù,ÀÙ3íÙK!Ú~mÚ4ìÚO!Û;qÛd­Û–ÜN©ÜiøÜ^bÝmÁÝÝ/Þ; ßIßlÙßfFà­à´àÅàËáâáþá â#â=â]âPwâgÈâ40ã"eãˆã¨ãÂã‚Úãq]äÏäåäeåjå€å(‡å"°åÓåèå üå æ ææ5æ$Dæ)iæ“æ¯æËæßæóæç ç 9çGç`ç|ç"˜ç5»ç&ñçè7è"Pè&sè(šèaÃè%éCéLé `éké|éé ªé´éËéééùéê# ê.ê4êCê^êyêN|ê6ËêfëFië °ë6ºësñëeìjìpì0€ì%±ì×ìÝì!øìí3í8í>íBíHíQíXí_ícígílíríxí íí Ÿí ªí ´í¾í Ûíéí î î î|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Swedish Language: sv_SE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: sv-SE X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (ändrad) (osparad)%d kodförekomst%d kodförekomster%d post%d poster%d post förhandsöversattes.%d poster förhandsöversattes.%d fel%d fel%d fel uppstod.%d fel uppstod.%d fel uppstod:%d fel uppstod:%d problem med källsträngarna upptäcktes.%d problem med källsträngarna upptäcktes.%d problem med översättningen hittades.%d problem med översättningen hittades.Rad %i i filen "%s" lästes inte korrekt.Raderna %i i filen "%s" kunde inte läsas korrekt.%s-format%s-inställningar%s-format%s översättning importerades.%s översättningar importerades.&Om&Om Poedit&Tillämpa&Tillbaka&Avbryt&Rensa&Stäng&Kopiera&Ta bort&Klar och nästa&Klar och nästa&Redigera&Arkiv&Sök…&GNU gettext-handbok&GNU gettext-handbok&Kör&Gruppera efter innehÃ¥ll&Gruppera efter innehÃ¥ll&Hjälp&Ny&Ny…&Nästa >&Nästa översättning&Nästa översättning&Nej&OK&Hjälp pÃ¥ nätet&Hjälp pÃ¥ nätet&Öppna...&Öppna…&Klistra in&Inställningar&Inställningar…&FöregÃ¥ende översättning&FöregÃ¥ende översättning&Egenskaper…&Rensa borttagna översättningar&Rensa borttagna översättningar&Avsluta&Gör om&Ersätt&Spara&Spara som&Visa kodförekomster&Visa kodförekomsterStart&fönsterStart&fönster&Översättning&Ã…ngra&Oöversatta poster först&Oöversatta poster först&Uppdatera frÃ¥n källkod&Uppdatera frÃ¥n källkod&Validera översättningar&Validera översättningar&Visa&Ja(Använd standardsprÃ¥k)(Inte inloggad)(kräver Windows 8 eller nyare)< FöregÃ¥endeOm %sKontoKontonLägg tillLägg till kommentarLägg till filer…Lägg till mappar…Lägg till projektLägg till jokertecken…Lägg till kommentarLägg till katalog till listanLägg till filer…Lägg till mappar…Lägg till projektLägg till jokertecken…Ytterligare sökordYtterligare xgettext-flaggor:AvanceratAvancerade extraheringsinställningar…Avancerade extraheringsinställningarAvancerade extraheringsinställningar…Alla översättningsfilerAlla kommentarerAlla strängarAnvända ocksÃ¥ standardsökord för sprÃ¥k som stödsÄndra alltid fokus till textinmatningsfältetEtt fel uppstod.En post i inmatningslistan:En post i sökordslistan:UtseendeTillämpaUngefärliga matchningar frÃ¥n TMÄr du säker pÃ¥ att du vill ta bort extraheraren "%s"?Är du säker pÃ¥ att du vill Ã¥terställa översättningsminnet?Sök efter uppdateringar automatisktKompilera MO-fil automatiskt när du spararTillbakaRotsökväg:Betaversioner innehÃ¥ller de senaste nya funktionerna och förbättringarna, men kan vara lite mindre stabila.Lägg alla överstTrasig PO-fil: pluralformen msgstr används utan msgid_pluralTrasig PO-fil: singularformen msgstr används tillsammans med msgid_pluralTrasig markering i översättningssträng.BläddraBläddra bland filerSom standard inkluderas även inexakta resultat, men de markeras som att de behöver bearbetas. Markera detta alternativ för att endast inkludera perfekta träffar.AvbrytAvbryter…Det gÃ¥r inte att skapa en temporär mapp.Kan inte köra program: %sKan inte föröversätta frÃ¥n okänt sprÃ¥k.Kan inte föröversätta utan källtext.Kapitalisera&Kataloghanterare&KataloghanterareKataloghanterareÄndra sprÃ¥k för gränssnittetTeckenuppsättning:Kontrollera dokumentet nuKontrollera grammatik tillsammans med stavningKontrollera stavning medan jag skriverSök efter uppdateringar…Kontrollera om det finns fel i översättningenSök efter uppdateringar…Kontrollera stavningRensaRensa menyRensa översättningRensa menyRensa översättningStängMolnKodförekomsterKodförekomsterSamarbeta med andra människor online.Samlar källfiler…Kommando för att extrahera översättningar:KommentarKommentar:Kommentarer som börjar med:Kompilera till MO…Kompilera till…Kompilerade översättningsfilerKonfigurera källkodsextrahering i egenskaper.BekräftelseKoppla Poedit till molnbaserade lokaliseringsplattformar som stöds för att sömlöst synkronisera översättningar som hanteras pÃ¥ dem.KopieraKopiera frÃ¥n singularKopiera frÃ¥n källtextKopiera frÃ¥n singularKopiera frÃ¥n källtextKorrigera stavning automatisktKunde inte ladda ner Localazy-projektets detaljer.Det gick inte att ladda filen, den är förmodligen skadad.Kunde inte spara filen %s.Skapa nySkapa ny översättningSkapa ny översättning frÃ¥n POT-mall.Skapa nytt översättningsprojektCrowdin-felCrowdin är en online-översättningsplattform och ett samarbetsverktyg för översättningar. Vi använder Crowdin själva för att översätta Poedit till mÃ¥nga sprÃ¥k, och vi älskar det.Kl&ipp utAnpassade extraherare:Anpassade extraherare:Anpassa verktygsfält…Klipp utDatabasstorlek pÃ¥ disk:Ta bortTa bort frÃ¥n översättningsminneTa bort extraherareTa bort frÃ¥n översättningsminneTa bort projektetTa bort kommentarenTa bort projektetBorttagning av projektet kommer inte att ta bort nÃ¥gra översättningsfiler.Fastställer skillnader…Kataloger:Vill du ta bort projektet â€%sâ€?Vill du läsa om filen frÃ¥n disken? Dina osparade ändringar i Poedit kommer att gÃ¥ förlorade om du gör det.Vill du ta bort alla översättningar som är identiska med källtexten?Vill du ta bort alla översättningar som inte längre används?Spara i&nteSpara inteVisa inte igenMarkera inte exakta träffar som behöver arbeteVisa inte igenHämtar senaste översättningar…Nedladdning av översättningar är inaktiverade i detta projekt.Dra mappar eller filer hitDra mappar eller filer hit&AvslutaE&xportera till HTML…RedigeraRedigera &kommentarRedigera &kommentarRedigera kommentarRedigera kommentarRedigera projektRedigera projektetRedigeringRedigera…E-post:GÃ¥ till helskärmPoster i denna fil har olika antal pluralformer än vad som anges i Plural-Former headernPoster med fel förstPoster med fel förstPoster med fel har rödmarkerats i listan. Detaljer om felet visas dÃ¥ en sÃ¥dan post väljs.Problem när filen lästes inFel vid sparande av filFel vid laddning av XLIFF-fil: %sFel: FelAlltExakta matchningar frÃ¥n TMUndantagna sökvägarExportera till TMX…Exportera som…Exportera till HTML…Exportera till TMX…Exporterar till HTMLExport av översättningsminne till â€%s†misslyckades.Exporterar översättningar…Extrahera frÃ¥n källorExtrahera anteckningar för översättare frÃ¥n:Extrahera text frÃ¥n källfilen i följande kataloger:Extraherar översättningsbara strängar frÃ¥n filen %s…Extraherar översättningsbara strängar frÃ¥n %s filer…Konfigurera extraherareExtraherareMisslyckades att kommunicera med Poedit-processen.Det gick inte att extrahera strängar frÃ¥n källkoden.Det gick inte att läsa in filen med extraherade översättningar.Det gick inte att sammanfoga gettext-kataloger.Det gick inte att uppdatera översättningsminne: %sArkivFilen kan inte öppnasFilen "%s" finns inte.Filen â€%s†är inte en översättningsfil.Filen "%s" är skrivskyddad och kan inte sparas. Spara den under ett annat namn.HittaSök nästaHitta föregÃ¥endeSök och ersätt…Sök i kommentarerHitta i källtexterSök i översättningarSök nästaHitta föregÃ¥endeFixa sprÃ¥kÃ…tgärda sprÃ¥kKorrigera rubrikenKorrigera rubrikenFlutter-översättningsfilerFormulär %iFormulär %i (Oanvänd)GNU gettextAllmäntHTML-filerHjälpDölj sidofältDölj statusfältetDölj det här meddelandetHur fungerar molnsynkronisering?IDOm du fortsätter med rensningen kommer alla översättningar som är märkta för borttagning att tas bort permanent. Du mÃ¥ste översätta dem igen om de läggs tillbaka i framtiden.Om du tidigare nekat Ã¥tkomst till dina filer kan du tillÃ¥ta det i Systeminställningar > Säkerhet och integritet > Integritet > Filer och mappar.Om du tidigare har nekat Ã¥tkomst till dina filer sÃ¥ kan du tillÃ¥ta det i Systeminställningar > Säkerhet och integritet > Integritet > Filer och mappar.IgnoreraIgnorera skiftlägeskänsligImportera frÃ¥n TMX…Importera översättningsfiler…Importera frÃ¥n TMX…Importera översättningsfiler…Importerar frÃ¥n â€%sâ€â€¦Import av översättningsminne misslyckades.Importerar översättningar…I: %sInkludera betaversionerInkonsekventa versaler/gemenerInkonsekvent blankteckenInformation om översättarenInstalleraOgiltig filAnrop:ProblemProblemJSON-översättningsfilerBehÃ¥llSprÃ¥knamn eller kodÖversättningssprÃ¥ket är samma som källsprÃ¥ket.ÖversättningssprÃ¥k är inte inställt.Översättningens sprÃ¥k:SprÃ¥kvalSprÃ¥kteam:SprÃ¥k:Senast ändradLär dig mer om gettext-sökordLär dig mer om pluralformerLäs merLäs mer om %sLär dig mer om CrowdinLäs mer om GNU gettextRadRad %d i filen '%s' är felaktig (inte giltig %s-data).Radslut:Lista över tillägg avgränsas med semikolon (t.ex. *.cpp;*.h):Läs in EngelskaLocalazy är en högt automatiserad plattform för lokaliseringshantering som gör det enkelt för vem som helst att översätta sina produkter och innehÃ¥ll till flera sprÃ¥k.MO-filer kan inte öppnas med Poedit.Gör till gemenerGör till versalerSkapa en ny översättning frÃ¥n denna POT-fil.Felaktig rubrik: "%s"Hantera kontonHantera…Sammanfogar skillnader…MinimeraNamnet pÃ¥ projektet översättningen är förNamn:Nä&sta ofärdigaNä&sta ofärdigaBehöver arbeteBehöver arbeteNätverksfel: %s (%d)LÃ¥t aldrig listan med strängar ta fokus. Om det är aktiverat, mÃ¥ste du använda Ctrl-pilar för tangentbordsnavigering men du kan ocksÃ¥ skriva text direkt, utan att behöva trycka Tab för att byta fokus.NyNytt frÃ¥n &POT/PO-fil…Nya strängarNytt frÃ¥n &POT/PO-fil…Nya strängarNya strängar att översätta:Nästa pluralformNästa pluralformNejInga träffar hittadesInga poster kan förhandsöversättas.Ingen information om denna strängs förekomster i källkoden finns i filen.Inga träffar hittadesInga problem med översättningen hittades.Inga översättningsprojekt listade pÃ¥ ditt konto.Ingen användningsinformationInte alla pluralformer är översätta.Inte behörig, vänligen logga in igen.Anteckningar för översättareOKEttAktivera endast om du litar pÃ¥ kvaliteten pÃ¥ ditt TM. Som standard, alla träffar frÃ¥n TM markeras som behöver arbete och bör ses över innan användning.Fyll endast i exakta matchningarÖppna molnöversättning…Öppna senasteÖppna och redigera översättningsfiler.Öppna molnöversättningÖppna molnöversättning…Öppna filÖppna i redigerarenÖppna i redigerarenÖppna nyligen använtÖppna referensfilenÖppna...Öppna…AlternativÖvrigtFö®Ã¥ende ofärdigaFö®Ã¥ende ofärdigaPO-översättningsfilerPOT-översättningsmallarPOT-filer är endast mallar och innehÃ¥ller inte själv nÃ¥gra översättningar. För att göra en översättning, skapa en ny PO-fil baserad pÃ¥ mallen.Klistra inKlistra in och matcha stilSökvägarUtför uppdatering frÃ¥n källkod pÃ¥ alla filer i projektet.Ã…tkomst nekad.PlatshÃ¥llare â€%s†saknas i översättningen.PlatshÃ¥llares korrekthetÖppna och redigera motsvarande PO-fil i stället. När du sparar den, uppdateras MO-filen ocksÃ¥.Spara filen först. Det här avsnittet kan inte redigeras förrän dess.PluralÖversättningar i pluralformPluralformsuttryck som används av filen är ovanliga för %s.Flertalsformer:PoeditPoedit - KataloghanterarePoedit rättade automatiskt ogiltigt innehÃ¥ll i filen "%s".Poedit kan försöka fylla i nya poster frÃ¥n endast tidigare översättningar i filen eller hela översättningsminnet. Att använda TM är inte effektivt om det är nästan tomt, men det kommer bli bättre allt eftersom du lägger till fler översättningar till det.Poedit kan inte visa källkod där strängen används, eftersom filen antingen inte är tillgänglig pÃ¥ den refererade platsen eller sÃ¥ är det en symbolisk referens som inte pekar mot en riktig fil.Poedit är en lättanvänd översättningsredigerare.Poedit kunde inte öppna filen â€%sâ€.Förhandsöversä&tt…FörhandsöversättFörhandsöversattFörhandsöversatte %u strängFörhandsöversatte %u strängarFöröversätter frÃ¥n översättningsminne…Förhandsöversätter…Förhandsöversättning söker automatiskt efter exakta eller ungefärliga träffar för oöversatta strängar i översättningsminnet och fyller i dessa översättningar.Föröversättning kräver att källtexten är tillgänglig. Det fungerar inte om endast ID, utan den faktiska texten, används.Föröversättning kräver att källtextens sprÃ¥k är känt. Poedit kunde inte identifiera det i denna fil.InställningarInställningar...Inställningar…Förbereder strängar…Bevara formateringen av befintliga filerFöregÃ¥ende pluralformFöregÃ¥ende pluralformTidigare källtextTidigare redigeradTidigare redigeradProjektnamn och version:Projektnamn:Projekt:ProjektKontroller av skiljeteckenRensaRensa borttagna översättningarAvslutaDet gick inte att läsa filinnehÃ¥llet med följande fel: %sSenaste filerGör omUppdateraLäs om filLäs om filÃ…terstÃ¥r: %dTa bortTa bort översättningar samma som källtextTa bort översättningar samma som källtextBorttagna strängarBorttagna strängarBorttagna strängar (används inte längre):ErsättErsätt &allaErsätt &allaErsättningssträngErsätt…Nödvändig Plural-Forms header saknas.Ã…terställÃ…terställ översättningsminneRensa översättningsminnet kommer oÃ¥terkalleligt ta bort alla lagrade översättningar frÃ¥n den. Du kan inte Ã¥ngra Ã¥tgärden.Visa i FinderGranskaSparaSpar&a som…Spar&a som…Spara ändÃ¥Spara ändÃ¥Spara somSpara som…Spara ändringarSpara filSpara pÃ¥ en annan plats stöds inte för XCLOC-filer.Skärmdumpar:Välj &allaMarkera alltVälj TMX-fil som ska importerasVälj katalogVälj översättningsfilVälj översättningsfiler att importeraVälj översättningsmallVälj önskat sprÃ¥kAnge sprÃ¥kAnge sprÃ¥kInställningarInställningar…Visa sidofältVisa stavning och grammatikVisa statusfältetVisa sträng-&IDVisa ersättningarVisa verktygsfältVisa varningarVisa i utforskareVisa i mappVisa eller dölj sidofältVisa sidofältVisa statusfältetVisa sträng-IDVisa varningarSidofältLogga inLogga utLogga inLogga in pÃ¥ %sLogga in pÃ¥ molnkontoLogga in pÃ¥ CrowdinLogga in pÃ¥ molnkontoLogga utSingularSmart kopiera/klistra inSmarta streckSmarta länkarTypografiska citatteckenSortera efter &filordningSortera efter &källaSortera efter ö&versättningSortera efter &filordningSortera efter &källaSortera efter ö&versättningKällkod teckenuppsättning:Källkodsextrahering används för att hitta översättbara strängar i källkodsfiler och packa upp dem sÃ¥ att de kan översättas.Ingen källkod tillgänglig.Källkoden hittades inteKälltextKälltext-IDKälltext — %sKällsökordKällsökvägarKällsökordKällsökvägarTalStavningskontroll är inaktiverad, eftersom ordboken för %s inte är installerad.Stavning och grammatikBörja talaSluta talaLagrade översättningar:Strängkontext: %sSträngidentifierare: %sStränglängd i teckenStränglängd i tecken: översättning | källaSträng att hittaSträngbaserade Crowdin-projekt stöds inte.ErsättningarFörslagFörslag är inte tillgängliga om översättningssprÃ¥ket inte är korrekt inställt. Andra funktioner, sÃ¥som pluralformer, kan ocksÃ¥ pÃ¥verkas.Överflödig platshÃ¥llare â€%s†som inte finns i källtexten.Stöder alla programmeringssprÃ¥k som känns igen av GNU gettext-verktyg (PHP, C/C++, C#, Perl, Python, Java, JavaScript och andra).SynkroniseraSynkronisera med CrowdinSynkronisera översättningen med CrowdinSynkroniserarSynkroniseringsfelSynkronisering med Crowdin misslyckades.Syntaxfel i Plural-Forms header ("%s").TMTMX-filerTa översättningsbara strängar frÃ¥n en befintlig POT-mall.Gruppnamn och e-postadress eller webbadressTextersättningÖversättningsminnet innehÃ¥ller inga matchande strängar till innehÃ¥llet i denna fil. Detta är bara effektivt för semi-automatiska översättningar efter att Poedit har lärt sig frÃ¥n filer som du tidigare har översatt manuellt.TMX-filen är felformad.Ändringarna som gjorts av den andra applikationen kommer att gÃ¥ förlorade om du sparar.Filen kan inte kompileras till MO-format och användas.Filen innehöll dubbletter, vilket inte är tillÃ¥tet i PO-filer och skulle förhindra att filen används. Poedit rättade problemet, men du bör granska översättningar av alla poster som är markerade som behöver arbete och korrigera dem vid behov.Filen kunde inte sparas med teckenkodningen "%s" som specificerats i översättningsinställningar. Den sparades därför istället i UTF-8 och inställningen ändrades därefter.Filen har ändrats. Vill du spara ändringarna?Filen är i ett format som inte känns igen av Poedit.Filen kompilerades till MO-format, men den kommer förmodligen inte att fungera korrekt.Filen sparades säkert och kompilerades till MO-format, men den kommer förmodligen inte att fungera korrekt.Filen sparades säkert, men den kan inte kompileras till MO-formatet och användas.Filen sparades pÃ¥ ett säkert sätt.Filen “%s†kunde inte öppnas.Filen "%s" kunde inte sparas.Filen â€%s†har ändrats av ett annat program.Den gamla källtexten (innan den ändrades under en uppdatering) som den nu felaktiga översättningen motsvarar.Det enklaste sättet att fylla denna fil med översättningar är att uppdatera den frÃ¥n en POT:Översättningen börjar inte med ett mellanslag.Översättningen slutar med ett radslut, men det gör inte källtexten.Översättningen slutar med ett mellanslag, men det gör inte källtexten.Översättningen avslutas med "%s", medan källtexten avslutas med "%s".Översättning saknar ett radslut i slutet.Översättning saknar ett mellanslag i slutet.Översättningen är klar att användas, men %d post är ännu inte översatt.Översättningen är klar att användas, men %d poster är ännu inte översatta.Översättningen är klar för användning.Översättningen bör avslutas med "%s".Översättningen bör inte sluta med "%s".Översättningen bör inledas som en mening.Översättningen bör inledas med en liten bokstav.Översättningen börjar med ett mellanslag, men det gör inte källtexten.Översättningarna markerades som att de behöver arbete, eftersom de kan vara felaktiga. Du bör granska dem för korrekthet.Det finns inga översättningar. Detta är ovanligt.Det uppstod ett problem med att formatera filen snyggt (men den sparades okej).Det gick inte att ladda upp översättningar till Localazy.Det uppstod fel vid inläsning av filen. Som resultat kan vissa uppgifter saknas eller vara skadade.Dessa inställningar pÃ¥verkar den interna formateringen av PO-filer. Justera dem om du har särskilda önskemÃ¥l t.ex. pÃ¥ grund av versionskontroll.Denna JSON-fil är inte en översättningsfil och kan inte redigeras i Poedit.Denna Ã¥tgärd kommer att ta bort översättningar som matchar källtexten exakt. Detta kan inte Ã¥ngras.Denna fil innehÃ¥ller poster med pluralformer, men har inte Plural-Former header konfigurerad.Denna fil använder sträng-ID istället för källtext. Poedit kan läsa in Engelsk text frÃ¥n "%s" Ã¥t dig.Detta är kommandot som används för att starta extraheraren. %o expanderar till namnet pÃ¥ utmatningsfilen, %K till listan av sökord, %F till listan över inmatningsfiler, %C till teckenuppsättningsflaggan (se nedan).Den här strängen hittades i Poedits översättningsminne.Detta kommer att bifogas till kommandoraden endast om källkodsteckenuppsättningen har angetts. %c expanderar till teckenuppsättningsvärdet.Detta kommer att bifogas till kommandoraden en gÃ¥ng för varje inmatningsfil. %f expanderar till filnamnet.Detta kommer att bifogas till kommandoraden en gÃ¥ng för varje sökord. %k expanderar till sökordet.TotaltTransformeringarÖversättningsbara poster läggs inte till manuellt i Gettext-systemet, men extraheras automatiskt frÃ¥n källkoden. PÃ¥ detta sätt hÃ¥lles de uppdaterade och korrekta. Översättare använder vanligtvis PO-mallfiler (POTs) förberedda Ã¥t dem av utvecklaren.Översätt molnprojektÖversatt: %d av %d (%d %%)ÖversättningÖversättningssprÃ¥kÖversättningsminne (TM)Översättning behöver &arbeteÖversättningsegenskaperÖversättningsfilen är redan uppdaterad, inga ändringar av strängar gjordes.Översättningsfilen uppdaterades med %s ändring.Översättningsfilen uppdaterades med %s ändringar.Databasens översättningsminne är skadat: %s (%d).Översättningsminne-fel: %s (%d).Översättning behöver &arbeteÖversättningsegenskaperÖversättningsförslagÖversättningsförslag kräver att källtexten är tillgänglig. De fungerar inte om bara ID, utan den faktiska texten, används.Översättningsförslag kräver att källtextens sprÃ¥k är känt. Poedit kunde inte identifiera det i denna fil.Översättning — %sÖversättningar kunde inte uppdateras frÃ¥n källkoden, eftersom ingen kod hittades i den plats som anges i filens egenskaper.TvÃ¥UTF-8 (rekommenderas)Ã…ngraOväntat saknat innehÃ¥ll i XCLOC-filen.Ohanterat undantag inträffade: %sUnix (rekommenderas)Okänt Crowdin-fel.Okänt felOöversattUppdateraUppdatera sammanfattningUppdatera allaUppdatera alla kataloger i projektetUppdatera alla kataloger i detta projekt?Uppdatera frÃ¥n &POT-fil…Uppdatera frÃ¥n &POT-fil…Uppdatera frÃ¥n kodUppdatera frÃ¥n POTUppdatera frÃ¥n kodUppdatera frÃ¥n källkodUppdatera sammanfattningUppdateringarUppdatering misslyckadesUppdaterar projektkatalogerUppdaterar översättningarUppdaterar användarinformation…Det gick inte att ladda upp översättningar till %s.Laddar upp översättningar till %s…Laddar upp översättningar…Använd anpassat uttryckAnvänd anpassat typsnitt i lista:Använd anpassat typsnitt i textfält:Använd standardregler för detta sprÃ¥kAnvänd dessa sökord (funktionsnamn) att känna igen översättningsbara strängar i källfiler:Använda översättningsminneValideraValideringsresultatVersion %sVisa detaljer…Visa detaljer…Väntar pÃ¥ autentisering…Varning: Välkommen till PoeditVid uppdatering frÃ¥n källorEndast hela ordFönsterWindowsVill du använda Engelsk källtext?LoopaRadbryt efter:XLIFF-översättningsfilerXcode-lokaliseringskatalogJaDu kan ocksÃ¥ extrahera översättningsbara strängar direkt frÃ¥n källkoden:Du kan inte släppa mer än en fil i Poedit-fönstret.Du har inte behörighet att läsa källkodfiler frÃ¥n den plats som specificerats i filens egenskaper.Du mÃ¥ste starta om Poedit för att denna ändring ska träda i kraft.Ditt namnDina ändringar gÃ¥r förlorade om du inte sparar dem.Ditt namn och e-postadress används endast för att ställa in i sista-översättare huvudet pÃ¥ GNU gettext-filer.NollZoomaBehöver arbeteta inte bort temporära filer (för felsökning)t.ex. nplurals = 2; plural = (n > 1);fel: ungefärlig träff i filengÃ¥ till post pÃ¥ givet radnummerhantera en poedit:// URIAlt+Ctrl+NerReturVänsterHögerSkift+UppaltctrlskiftOm %sDölj %sDölj andraInställningar...Avsluta %sTjänsterVisa allaförhandsöversätt frÃ¥n TMokänt sprÃ¥kversion som inte stöds (%s)varning: du@exempel.se"%s" är inte en giltig POT-fil.poedit-3.6.3/locales/az.mo0000644000175100001660000010252615011674363011076 Þ•¶Ì K|¨$ ©$ µ$À$Ô$Jç$g2% š%¤% ³%½% Ä%Ò%Ù%ß%ç%î%õ%û%&&!&'&-&6&J&^&b&t&†&Œ&‘&™&¡&³&Å&É& Í& Ú&ç&ð&ù& ' ''3'I'e''‡''–'œ'¥'«'Ç'ã'ú'(((3( Q( ](g(p(y( }( ‰(•(¯(Ã(Ì( â('ï()4) N)Y)7_)6—)Î))î)* *](*†*<™*DÖ*$+@+G+"N+q+ Œ+—+©+»+Ì+ß+è+û+,3,#H,l,,,–,¨,º,À, Û,ü,--/1- a-n-s-†-œ-¯-Å-ä-ý-. 4.B.G.\.`.w.~..®.Í. à.?í. -/:/M/"`/5ƒ/¹/¿/ Ä/ Ò/ à/ í/ ú/00 0(0/0A0[0uu0ë0þ01 1"1 11>1<S11  1*«10Ö1!2')2Q2TV2«2 °2 º2È2Ü2í23 3 !3 /3 <3I3X3g3 o3{3 ƒ3Ž3 “3 3°3Ï3©Ò3 |4ˆ4 ž4¿4 Ç4 Ô4à4;å4!5>5Q5 `5 j5x5•5 ®5¹5:Ò5 6<6.X6‡6—6§6Â6Ù6*â6 77$7»57ñ7õ78 '838D8U8X8i8'z8%¢8È8Ë8Ï8 ê8ö8999$9,929G9\9q9‹9:":8:n>:E­:ó:ú:;@;,\; ‰;•;¤;%³;Ù;î;< <+<4<:<U<Z<_< g<u< }< Š<—< ª<(µ<Þ<ä<zý<x==„= Œ= —= ¤= °=»="Ì=ï= > > (>5>O>_> r>> ˜>¥>µ>½>Å>Î>Ö>é>ò>û> ? ? %?2?F?V?k???¤?†¹?@@ [@g@z@ ‹@™@K @ì@A AA3A BA PAŽ\AëAðA(B+B 3BAB+^BŠB8BÆBÂ×B8šCRÓCc&DQŠDÜDŽ÷D!†E,¨ELÕE]"F…€F«G7²GmêG_XH[¸HII*I GISIhI{I’I¥I©I½I ÂIãIöI þI" J,JÝfg4g$Mg!rg”g-¤gÒgÖgðg hi"i?i \ihi~i”i™i¯i9Åi<ÿitRItœt±tÉtätuu%u–5uÌuÜu)üu&v7v-Pv7~v¶vQ¹v w½wNÝw_,xˆŒx@y.Vy»…y(Az;jzT¦zsûz¦o{Õ| ì|n }e|}iâ}L~S~!e~ ‡~’~¢~·~Ô~æ~ë~ '>\s)†°ÀÚê€)€H€#g€*‹€(¶€4߀¦%» áì ‚.‚B‚)]‚ ‡‚’‚š‚µ‚Í‚è‚Qî‚Q@ƒ’ƒ›ƒ)„1„!@„b„t„z„ƒ„‰„„’„™„¡„¥„ª„ °„ ½„Ȅބò„ û„……(-…ã‹xÓÈ¢”Š+¦÷ÄŸE J}¬åVކG{(6²Qÿ–éoIá X‘ŲAÇ´d|—°ŒbeœF’i„ Kšö[.d~ÂÏ©w>ƒsOè¸5<"§H±?¯„‡ï]¥?)C¤jZižçBÚ³g_ñm8v‡pËàA^yÉ:8øìŒr­a3…Í´ë.̶u ‘ ‰® Ü ó(»;ŠÐm4˜pJ]ˆ­"°~ÒS‚/ôN¹{SHgX!\V,Q'aâb=³cy”O@©/sx#Æ¡9L·µ•n'c€r í×L£6P¤*, §ºZU}Ml™!¡h-o@Á¥z¢T|uƒ [Rk`ò¿7k—¨I‰ð«5˜Þ1tDØ…¼µ2 šü™>¶ŽêCDt0TÙßW9ˆõ*úh_&&l¾\EeB%ù±ý¯ÊÀœ€†Y¦® M$‚ÖÝ0f1`žÛ’#㪽;^›j•+=K4Î$FGY›%WÔîvP:<ª–NzÑû «q72U Õþ“䬋wæŸfq)“n3¨R- (modified) (unsaved)%d entry%d entries%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Undo&Untranslated Entries First&Untranslated entries first&Validate Translations&Validate translations&View&Yes(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountsAddAdd CommentAdd commentAdd directory to the listAdditional keywordsAdvancedAll Translation FilesAll commentsAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseCancelCannot create temporary directory.Cannot execute program: %sCapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear TranslationClear translationCloseCollecting source files…Command to extract translations:Comment:Compile to MO…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationCopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t save file %s.Create new translationCreate new translations projectCrowdin errorCu&tCustomize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete the projectDirectories:Do you want to remove all translations that are no longer used?Don’t SaveDon’t Show AgainDon’t show againDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileErrorsEverythingExcluded pathsExport as…Extract from sourcesExtract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerForm %iGNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageIDIf 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.Ignore caseInclude beta versionsInformation about the translatorInstallInvalid fileInvocation:KeepLanguage of the translation is the same as source language.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMalformed header: “%sâ€Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo matches foundNo problems with the translation found.Not authorized, please sign in again.OKOneOnly fill in exact matchesOpen RecentOpen in EditorOpen in editorOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit is an easy to use translation editor.PreferencesPreferences...Preferences…Preserve formatting of existing filesPrevious Plural FormPrevious plural formProject name and version:Project name:Project:PurgePurge deleted translationsQuitRedoRefreshRemaining: %dReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.ReviewSaveSave asSave as…Save changesSelect &AllSelect AllSelect directorySelect translation files to importSelect your preferred languageSet LanguageSet languageShow SidebarShow Spelling and GrammarShow Status BarShow SubstitutionsShow ToolbarShow or hide the sidebarShow sidebarShow status barSidebarSign InSign OutSign inSign in to CrowdinSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source textSource text — %sSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTake translatable strings from an existing POT template.Text ReplacementThe 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.The file cannot be compiled into the MO format and used.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation propertiesTranslation — %sTwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)UntransUpdate allUpdate all catalogs in the projectUpdate from POTUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhole words onlyWindowWindowsWrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You must restart Poedit for this change to take effect.Your NameYour name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoome.g. nplurals=2; plural=(n > 1);handle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allunknown language“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Azerbaijani Language: az_AZ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: az X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (modifikasiya edilmiÅŸ) (qeyd edilmÉ™miÅŸ)%d yazı%d yazı%d xÉ™ta%d xÉ™taTÉ™rcümÉ™dÉ™ %d xÉ™ta tapıldı.TÉ™rcümÉ™dÉ™ %d xÉ™ta tapıldı.“%2$s†faylının %1$i sÉ™tri düzgün qaydada yüklÉ™nmÉ™di.“%2$s†faylının %1$i sÉ™tri düzgün qaydada yüklÉ™nmÉ™di.%s Format%s Nizamlamalar%s format&Haqqında&Poedit Haqqında&TÉ™tbiq et&Geriİ&mtina&TÉ™mizlÉ™&BaÄŸla&Köçür&Sİl&Tamamla vÉ™ Sonrakı&Tamamla vÉ™ sonrakı&RedaktÉ™ et&Fayl&Tap…&GNU gettext Kitabı&GNU gettext kitabı&Get&KontekstÉ™ GörÉ™ Qrup&KontekstÉ™ görÉ™ qrup&Yardım&Yeni&Yeni…&Sonrakı >&Sonrakı TÉ™rcümÉ™&Sonrakı tÉ™rcümÉ™&Xeyr&OK&Onlayn Yardım&Onlayn yardım&Aç...&Aç…&Yapışdır&XüsusiyyÉ™tlÉ™r&ÜstünlüklÉ™r…&ÖncÉ™ki TÉ™rcümÉ™&ÖncÉ™ki tÉ™rcümÉ™&SilinmiÅŸ TÉ™rcümÉ™lÉ™ri Yox Edin &SilinmiÅŸ tÉ™rcümÉ™lÉ™ri yox edinÇı&x&YenilÉ™&DÉ™yiÅŸdir&Qeyd et&FÉ™rqli qeyd et&Geri Al&TÉ™rcümÉ™ EdilmÉ™miÅŸ Yazılar Æn ÜstdÉ™ Görünsün&TÉ™rcümÉ™ edilmÉ™miÅŸ yazılar É™n üstdÉ™ görünsün&TÉ™rcümÉ™lÉ™ri TÉ™sdiqlÉ™&TÉ™rcümÉ™lÉ™ri tÉ™sdiqlÉ™&Bax&BÉ™li(İlkin dili istifadÉ™ et)(Windows 8 vÉ™ ya daha yenisi gÉ™rÉ™kdir)< &ÖncÉ™ki%s HaqqındaHesablarÆlavÉ™ etŞərh ÆlavÉ™ EtŞərh É™lavÉ™ etSiyahıya kataloq É™lavÉ™ etÆlavÉ™ açar kÉ™lmÉ™lÉ™rQabaqcılBütün TÉ™rcümÉ™ FayllarıBütün ÅŸÉ™rhlÉ™rHÉ™r zaman giriÅŸ sahÉ™sindÉ™ mÉ™tn fokusunu dÉ™yiÅŸdirGiriÅŸ faylları siyahısındakı bir maddÉ™:Açar kÉ™lmÉ™lÉ™ri siyahısındakı bir maddÉ™:GörünüşTÉ™tbiq et“%s†ekstraktorunu silmÉ™k istÉ™diyinizdÉ™n É™minsinizmi?TÉ™rcümÉ™ yaddaşını sıfırlamaq istÉ™diyinizÉ™ É™minsiniz?YenilÉ™nmÉ™lÉ™r üçün avtomatik yoxlaQeyd etmÉ™ sırasında MO faylının kompliyasiyasıGeriÆsas yol:Beta versiyalar É™n son xüsusiyyÉ™tlÉ™rÉ™ malikdirlÉ™r, ancaq stabil iÅŸlÉ™mÉ™ xüsusunda bir az qeyri-stabildirlÉ™r.Tamamını ÖnÉ™ GÉ™tirZÉ™dÉ™li PO faylı: cÉ™m formalı 'msgstr', 'msgid_plural' ilÉ™ birlikdÉ™ istifadÉ™ olunubZÉ™dÉ™li PO faylı: tÉ™k formalı 'msgstr', 'msgid_plural' ilÉ™ birlikdÉ™ istifadÉ™ olunubTÉ™rcümÉ™ sÉ™trindÉ™ zÉ™dÉ™li iÅŸarÉ™lÉ™mÉ™.GÉ™tirİmtinaMüvÉ™qqÉ™ti direktoriya yaradıla bilmir.Proqram iÅŸÉ™ salına bilmir: %sBöyüdünKataloq &MeneceriKataloq &meneceriKataloq Meneceriİnrfeys dilini dÉ™yiÅŸKodlaÅŸdırma:SÉ™nÉ™di YenidÉ™n YoxlaQrammatikanı vÉ™ Yazma Qaydasını YoxlaTÉ™rcümÉ™ vaxtı orfoqrafiyanı yoxlaYeniliklÉ™ri yoxla…TÉ™rcümÉ™dÉ™ki xÉ™taları yoxlaYenilÉ™nmÉ™lÉ™r üçün yoxla…Yazma qaydasını yoxlaTÉ™mizlÉ™TÉ™rcümÉ™ni TÉ™mizlÉ™TÉ™rcümÉ™ni tÉ™mizlÉ™BaÄŸlaMÉ™nbÉ™ faylları yığılır…TÉ™rcümÉ™lÉ™ri çıxarmaq üçün É™mr:Şərh:MO faylına kompliyasiya et…Kompliyasiya EdilmiÅŸ TÉ™rcümÉ™ FayllarıXüsusiyyÉ™tlÉ™r bölmÉ™sindÉ™n mÉ™nbÉ™ koddan almağı konfiqurasiya edin.TÉ™sdiqKöçürTÉ™k Olandan KöçürMÉ™nbÉ™ MÉ™tnindÉ™n KöçürTÉ™k olandan köçürMÉ™nbÉ™ mÉ™tnindÉ™n köçürYazı Avtomatik Korreksiya Edilsin%s faylı saxlanıla bilmÉ™di.Yeni tÉ™rcümÉ™ yaratYeni tÉ™rcümÉ™ layihÉ™si hazırlayınCrowdin xÉ™tasıKÉ™&sAlÉ™t çubuÄŸunu özÉ™lləşdir…KÉ™sVerilÉ™nlÉ™r bazasının diskdÉ™ki ölçüsü:SilTÉ™rcümÉ™ Yaddaşından SilEkstraktoru silTÉ™rcümÉ™ yaddaşından silLayihÉ™ni silDirektoriyalar:Artıq istifadÉ™ edilmÉ™yÉ™n bütün É™mÉ™liyyatların silinmÉ™sini istÉ™yirsinizmi?Qeyd etmÉ™TÉ™krar GöstÉ™rmÉ™TÉ™krar göstÉ™rmÉ™Æn son tÉ™rcümÉ™lÉ™r endirilir…Bu layihÉ™dÉ™ tÉ™rcümÉ™lÉ™ri endirmÉ™k sıradan çıxarıldı.Ç&ıxRedaktÉ™ et&Şərhi RedaktÉ™ Et&Şərhi redaktÉ™ etŞərhi RedaktÉ™ EtŞərhi redaktÉ™ etLayihÉ™ni redaktÉ™ etLayihÉ™ni redaktÉ™ etRedaktÉ™RedaktÉ™ et…E-poçt:Tam Ekran Daxil edinÆvvÉ™lcÉ™ XÉ™talı Olan YazılarÆvvÉ™lcÉ™ xÉ™talı olan yazılarXÉ™talı sÉ™tirlÉ™r siyahıda qırmızı rÉ™ngdÉ™ göstÉ™rilir. XÉ™ta haqqında mÉ™lumata baxmaq üçün sÉ™tri seçin.Fayl açılması sırasında xÉ™taFayl saxlayarkÉ™n xÉ™taXÉ™talarHÉ™r ÅŸeyİstisna edilmiÅŸ yollarFÉ™rqli ixrac et…MÉ™nbÉ™lÉ™rdÉ™n alınsınMÉ™nbÉ™ fayllarındakı mÉ™tnlÉ™ri bu direktoriyaya çıxart:Ekstraktoru qurEkstraktorlarPoedit É™mÉ™liyyatı ilÉ™ É™laqÉ™ qurmaq baÅŸ tutmadı.İxrac edilmiÅŸ tÉ™rcümÉ™lÉ™rlÉ™ faylı yüklÉ™mÉ™ uÄŸursuz oldu.Gettext kataloqlarını birləşdirÉ™rkÉ™n bir xÉ™ta baÅŸ verdi.TÉ™rcümÉ™ yaddaşı yenilÉ™nÉ™ bilmÉ™di: %sFayl"%s†faylı yalnız-oxunan olduÄŸu üçün saxlanıla bilmÉ™z. ZÉ™hmÉ™t olmasa fÉ™rqli bir ad ilÉ™ saxlayın.TapSonrakını TapınÖncÉ™kini TapınTap vÉ™ DÉ™yiÅŸdir…ŞərhlÉ™rdÉ™ tapınMÉ™nbÉ™ mÉ™tnlÉ™rdÉ™ axtarTÉ™rcümÉ™lÉ™rdÉ™ tapSonrakını tapınÖncÉ™kini tapınDili DüzÉ™ltDili düzÉ™ltBaÅŸlığı DüzÉ™ltBaÅŸlığı düzÉ™ltFormat %iGNU gettextÆsasHTML FayllarıYardımYan menyunu GizlÉ™tStatus ÇubuÄŸunu GizlÉ™tBu bildiriÅŸ mesajını gizlÉ™dinIDDavam etsÉ™niz, silinmÉ™k üçün iÅŸarÉ™lÉ™nmiÅŸ bütün tÉ™rcümÉ™lÉ™r yox olacaq. GÉ™lÉ™cÉ™kdÉ™ bunlar yenidÉ™n É™lavÉ™ olunarsa, tÉ™krar tÉ™rcümÉ™ etmÉ™k mÉ™cburiyyÉ™tindÉ™ qalacaqsınız.Böyük-kiçik hÉ™rflÉ™ri gözardı etBeta versiyaları da alınsınTÉ™rcüməçi haqqında mÉ™lumatQurXÉ™talı faylÇaÄŸrış:TutTÉ™rcümÉ™ dili mÉ™nbÉ™ dili ilÉ™ eynidir.TÉ™rcümÉ™ dili:Dil seçimiDil komandası:Dil:Son modifikasiyaGettext açar kÉ™lmÉ™lÉ™rindÉ™n öyrÉ™nilsinCÉ™m formatları öyrÉ™ninDaha çox öyrÉ™nCrowdin haqqında daha É™traflı É™ldÉ™ edin“%2$s†faylının %1$d nömrÉ™li sÉ™tri zÉ™dÉ™lidir (%3$s verilÉ™nlÉ™ri etibarlı deyil).SÉ™tir sonları:VergüllÉ™ ayrılmış uzantı siyahısı (mÉ™s. *.cpp;*.h):MO faylları birbaÅŸa Poedit içindÉ™ redaktÉ™ edilÉ™ bilmÉ™z.Kiçik HÉ™rfÉ™ ÇevirinBöyük HÉ™rfÉ™ ÇevirinSÉ™hv yazılmış baÅŸlıq: “%sâ€FÉ™rqliliklÉ™r birləşdirilir…MinimallaÅŸdırBunun üçün hazırlanan tÉ™rcümÉ™nin adı:Ad:S&onrakı TamamlanmamışS&onrakı tamamlanmamışBu parametr aktivləşdirildiyindÉ™, iÅŸarÉ™lÉ™yici É™sla sÉ™tir siyahısına fokuslana bilmÉ™z. BelÉ™cÉ™ fokusu dÉ™yiÅŸdirmÉ™k üçün (Tab) tuÅŸuna basmadan tÉ™rcümÉ™ni hÉ™mÉ™n yaza bilÉ™rsiniz. GÉ™zinmÉ™k üçün Ctrl-AÅŸağı/Yuxarı oxlarından istifadÉ™ etmÉ™lisiniz.Yeni&POT/PO Faylından Yenisi…&POT/PO faylından yenisi…Yeni sÉ™tirNövbÉ™ti CÉ™m NövüNövbÉ™ti cÉ™m növüXeyrUyÄŸunluq TapılmadıUyÄŸunluq tapılmadıTÉ™rcümÉ™ ilÉ™ É™laqqÉ™dar heç bir problem tapılmadı.SÉ™lahiyyÉ™tiniz yoxdur, zÉ™hmÉ™t olmasa tÉ™krar daxil olun.OKBirSadÉ™cÉ™ tam uyÄŸunluqları doldurSon İstifadÉ™ EdilÉ™nlÉ™ri AçınRedaktorda AçRedaktorda açAç...Aç…ParametrlÉ™rDigÉ™rÖ&ncÉ™ki TamamlanmamışÖ&ncÉ™ki tamamlanmamışPO TÉ™rcümÉ™ FayllarıPOT TÉ™rcümÉ™ ÅžablonlarıPOT Faylları sadÉ™cÉ™ ÅŸablonlardır vÉ™ özü-özündÉ™n hÉ™r hansı bir tÉ™rcümÉ™yÉ™ sahib olmazlar. Bir tÉ™rcümÉ™ etmÉ™k üçün ÅŸablonu É™sas alan yeni bir PO faylı yaradın.YapışdırYapışdır vÉ™ StillÉ™ri TutuÅŸdurYollarLütfÉ™n bunun yerinÉ™ É™laqÉ™dar PO faylını açın vÉ™ redaktÉ™ edin. Qeyd etdiyiniz zaman, MO faylı da yenilÉ™nÉ™cÉ™kdir.LütfÉ™n É™vvÉ™lcÉ™ faylı qeyd edin. Qeyd etdikdÉ™n sonra bu bölmÉ™ redaktÉ™ edilÉ™ bilÉ™r.CÉ™mPoeditPoedit - Kataloq meneceriPoedit, “%s†faylındakı etibarsız içəriyi avtomatik olaraq düzÉ™ltdi.Poedit asan istifadÉ™ edilÉ™ bilÉ™n bir tÉ™rcümÉ™ redaktorudur.AyarlarXüsusiyyÉ™tlÉ™r...Ayarlar…Var olan faylların formatını qoruÆvvÉ™lki CÉ™m NövüÆvvÉ™lki cÉ™m növüLayihÉ™nin adı vÉ™ versiyası:LayihÉ™nin adı:LayihÉ™:Yox edinSilinmiÅŸ tÉ™rcümÉ™lÉ™ri yox edinÇıxYenilÉ™yinTÉ™zÉ™lÉ™Qalan: %dDÉ™yiÅŸdirDÉ™yiÅŸdir &HamısınıDÉ™yiÅŸdir &HamısınıDÉ™yiÅŸdirmÉ™ sÉ™triDÉ™yiÅŸdir…GÉ™rÉ™kli baÅŸlıq CÉ™m-Formatları É™ksikdir.SıfırlaTÉ™rcümÉ™ yaddaşını sıfırlaTÉ™rcümÉ™ yaddaşını sildikdÉ™ bütün saxlanılan tÉ™rcümÉ™lÉ™ri silÉ™cÉ™k. Bunu geri ala bilmÉ™yÉ™cÉ™ksiz.BaxışQeyd etFÉ™rqli qeyd etFÉ™rqli saxla…DÉ™yiÅŸikliklÉ™ri qeyd etTamamını &SeçTamamını SeçDirektoriya seçİdxal edilÉ™cÉ™k tÉ™rcümÉ™ fayllarını seçinTÉ™rcih etdiyiniz dili seçinDili QurDil qurunYan menyunu GöstÉ™rYazma vÉ™ Qrammatikanı GöstÉ™rStatus ÇubuÄŸunu GöstÉ™rDÉ™yiÅŸikliklÉ™r GöstÉ™rilsinAlÉ™t çubuÄŸunu göstÉ™rYan paneli göstÉ™r/gizlÉ™tYan menyunu göstÉ™rStatus çubuÄŸunu göstÉ™rYan menyuDaxil OlÇıxış EtDaxil olCrowdin-dÉ™ daxil olunÇıxış etTÉ™kAğıllı KöçürmÉ™/YapışdırmaAğıllı TirelÉ™rAğıllı BaÄŸlantılarAğıllı Sitatlar&Fayldakı Sıraya GörÉ™ Sırala&MÉ™nbÉ™ MÉ™tninÉ™ GörÉ™ Sırala&TÉ™rcümÉ™yÉ™ GörÉ™ Sırala&Fayldakı sıraya görÉ™ sırala&MÉ™nbÉ™yÉ™ görÉ™ sırala&TÉ™rcümÉ™yÉ™ görÉ™ sıralaMÉ™nbÉ™ kodu kodlaÅŸması:MÉ™nbÉ™ kodu ekstraktorları mÉ™nbÉ™ kodu fayllarında tÉ™rcümÉ™ edilÉ™cÉ™k sÉ™trlÉ™ri tapmaq vÉ™ onları çıxararaq tÉ™rcümÉ™ etmÉ™yÉ™ hazır vÉ™ziyyÉ™tÉ™ gÉ™tirirlÉ™r.MÉ™nbÉ™ kodu É™lçatan deyil.MÉ™nbÉ™ mÉ™tniMÉ™nbÉ™ mÉ™tni — %sMÉ™nbÉ™ açar kÉ™lmÉ™lÉ™riMÉ™nbÉ™ yollarıDanışınYazı korrektoru deaktivasiya edildi, çünki %s üçün lüğət qurulmuÅŸ deyil.Yazma vÉ™ QrammatikaDanışmaÄŸa BaÅŸlayınDanışmağı DayandırınQeyd edilmiÅŸ tÉ™rcümÉ™lÉ™r:Tapılacaq sÉ™tirDÉ™yiÅŸikliklÉ™rMÉ™slÉ™hÉ™tlÉ™rTÉ™rcümÉ™ dili doÄŸru olaraq qurulmazsa, mÉ™slÉ™hÉ™tlÉ™r istifadÉ™ edilÉ™ bilmÉ™z. CÉ™m formatlar kimi, digÉ™r özÉ™lliklÉ™r dÉ™ tÉ™sirlÉ™nÉ™ bilÉ™r.SinxronlaÅŸdırCrowdin ilÉ™ SinxronlaÅŸdırınTÉ™rcümÉ™ni Crowdin ilÉ™ sinxronlaÅŸdırEyniləşdirilirEyniləşdirmÉ™ xÉ™tasıCrowdin ilÉ™ sinxronlaÅŸdırma baÅŸ tutmadı.CÉ™m-Formatı baÅŸlığında sintaksis xÉ™tası ("%s").TYTÉ™rcümÉ™ edilÉ™ bilinÉ™n sÉ™tirlÉ™ri birbaÅŸa POT ÅŸablonundan ala bilÉ™rsiniz.MÉ™tn DÉ™yiÅŸikliyiTY bu faylın mÉ™zmununa oxÅŸayan heç bir sÉ™trÉ™ sahib deyil. Bu yarım-avtomatik tÉ™rcümÉ™lÉ™r üçün keçərlidir. Poedit bunları É™llÉ™ tÉ™rcümÉ™ edilmiÅŸ fayllardan öyrÉ™nÉ™cÉ™k.Fayl, MO formatında kompliyasiya edilÉ™ bilmÉ™z vÉ™ istifadÉ™ edilÉ™ bilmÉ™z.Fayl, MO formatında kompliyasiya edildibi, ancaq böyük ehtimalla, düzgün iÅŸlÉ™mÉ™yÉ™cÉ™k.Fayl problemsiz olaraq MO formatında kompliyasiya olundu vÉ™ qeyd edildi, ancaq böyük ehtimalla ola bilsin ki, düzgün iÅŸlÉ™mÉ™sin.Fayl problemsiz qeyd edildi, ancaq MO formatında baÅŸ tutmadı.Fayl tÉ™hlükÉ™siz bir ÅŸÉ™kildÉ™ qeyd edildi.TÉ™rcümÉ™ istifadÉ™ üçün hazırdır, ancaq %d sÉ™tir hÉ™lÉ™lik tÉ™rcümÉ™ edilmÉ™miÅŸdir.TÉ™rcümÉ™ istifadÉ™ üçün hazırdır, ancaq %d sÉ™tir hÉ™lÉ™lik tÉ™rcümÉ™ edilmÉ™miÅŸdir.TÉ™rcümÉ™ istifadÉ™ üçün hazırdır.Orada heç bir tÉ™rcümÉ™ yoxdur. Bu qeyri-adi bir ÅŸeydir.Faylı gözÉ™l olaraq formatlamada xÉ™ta baÅŸ verdi (ancaq problemsiz saxlanıldı).Fayl yüklÉ™nÉ™rkÉ™n xÉ™talar baÅŸ verdi. NÉ™ticÉ™ etibarilÉ™ bÉ™zi verilÉ™nlÉ™r É™skik vÉ™ ya zÉ™dÉ™li ola bilÉ™r.Bu parametrlÉ™r, PO fayllarının daxili formatlarına tÉ™sir edÉ™ bilÉ™r. MÉ™sÉ™lÉ™n, versiya testi sÉ™bÉ™bilÉ™ xüsusi tÉ™lÉ™blÉ™riniz varsa onları korrektÉ™ edin.Bu, ekstraktoru iÅŸlÉ™tmÉ™k üçün istifadÉ™ edilÉ™n É™mrdir. %o çıxış faylı adına, %K açar kÉ™lmÉ™lÉ™rin siyahısına, %F giriÅŸ fayllarının siyahısına, %C nsimvoluna dönüşür (aÅŸağıya baxın).Bu sÉ™tr Poedit-in TY tapıldı.MÉ™nbÉ™ xarakter É™mri verilmiÅŸdirsÉ™, bu É™mr sÉ™trinÉ™ É™lavÉ™ edilÉ™cÉ™kdir. %c xarakter dÉ™yÉ™rini yazar.Bu, hÉ™r yazı faylı üçün bir dÉ™fÉ™ É™mr sÉ™trinÉ™ É™lavÉ™ edilÉ™cÉ™kdir. %f fayl adını yazar.Bu, hÉ™r açar kÉ™lmÉ™ üçün bir dÉ™fÉ™ É™mr sÉ™trinÉ™ É™lavÉ™ edilÉ™cÉ™kdir. %k açar kÉ™lmÉ™ni yazar.ÜmumiTransformasiyalar%d / %d (%d %%) tÉ™rcümÉ™ edildiTÉ™rcümÉ™TÉ™rcümÉ™ DiliTÉ™rcümÉ™ YaddaşıTÉ™rcümÉ™ xüsusiyyÉ™tlÉ™riTÉ™rcümÉ™ — %sİkiUTF-8 (mÉ™slÉ™hÉ™t görülür)Geri qaytarGözlÉ™nilmÉ™z bir xÉ™ta baÅŸ verdi: %sUnix (mÉ™slÉ™hÉ™t görülür)TÉ™rcümÉ™ edilmÉ™miÅŸTamamını yenilÉ™LayihÉ™dÉ™ki bütün kataloqları yenilÉ™POT-dan YenilÉ™YenilÉ™nmÉ™nin nÉ™ticÉ™siYenilÉ™nmÉ™lÉ™rYenilÉ™nmÉ™ baÅŸ tutmadıTÉ™rcümÉ™lÉ™r yenilÉ™nirİstifadəçi mÉ™lumatları yenilÉ™nir...TÉ™rcümÉ™lÉ™r göndÉ™rilir…ÖzÉ™l ifadÉ™dÉ™n istifadÉ™ edilsinÖzÉ™l ÅŸrift siyahısından istifadÉ™ et:ÖzÉ™l ÅŸrift sahÉ™sindÉ™n istifadÉ™ et:Bu dil üçün mövcud qaydalardan istifadÉ™ edilsinMÉ™nbÉ™ fayllarındakı tÉ™rcümÉ™ edilÉ™ bilinÉ™n sÉ™tirlÉ™r tanındığında, mövcud olanların yanında bu açar kÉ™lmÉ™lÉ™r (funksiya adları) istifadÉ™ edilsin.TÉ™rcümÉ™ yaddaşından istifadÉ™ etTÉ™sdiqlÉ™TÉ™sdiqlÉ™mÉ™ nÉ™ticÉ™lÉ™riVersiya %sKimlik tÉ™sdiqlÉ™mÉ™si üçün gözlÉ™nilir…Poedit-É™ XoÅŸ GÉ™lmisinizMÉ™tnÉ™ eyni ilÉ™ uyÄŸun gÉ™lÉ™nlÉ™ri tapPÉ™ncÉ™rÉ™WindowsÇevrÉ™sindÉ™ sürüşdürSürüşdürmÉ™ yönü:XLIFF TÉ™rcümÉ™ FayllarıBÉ™liTÉ™rcümÉ™ edilÉ™ bilinÉ™n sÉ™tirlÉ™ri birbaÅŸa mÉ™nbÉ™ kodundan ala bilÉ™rsiniz:Bu dÉ™yiÅŸikliyin tÉ™sirli olması üçün Poedit-i yenidÉ™n baÅŸlatmalısınız.AdınızAdınız vÉ™ e-poçt ünvanınız sadÉ™cÉ™ GNU gettext fayllarında Son TÉ™rcüməçi baÅŸlığını tÉ™rtiblÉ™mÉ™k üçün istifadÉ™ edilir.SıfırYaxınlaÅŸdırmÉ™s. nplurals=2; plural=(n > 1);bir poedit:// URICtrl+AÅŸağıEnterSolSaÄŸShift+Yuxarıaltctrlshift%s Haqqında%s GizlÉ™tDigÉ™rlÉ™rini GizlÉ™tXüsusiyyÉ™tlÉ™r...%s ÇıxXidmÉ™tlÉ™rHamısını GöstÉ™rbilinmÉ™yÉ™n dil“%s†etibarlı bir POT faylı deyil.poedit-3.6.3/locales/tr.mo0000644000175100001660000017066515011674352011120 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-¨Oø‘ ’’:’IL’–’-¦’-Ô’a“7d“uœ“ ” ” +”96” p”{””•”›”£”¬”³”¼”Á”Ü”÷”ÿ”••%•<•A•X•o•x•~• ‡•’•£•´•¼•ÕØ•í•õ• ý• – –#–4–E–U–t–“–š– ¢–®–¶–Æ–ã–——&—/—!8—!Z—|———²—È— Þ—ê—ð— ˜ ˜ @˜K˜ T˜a˜g˜p˜u˜…˜˜˜ ¬˜·˜ΘÞ˜ò˜™ ™$™;™P™ i™!t™–™!µ™×™ï™ šAš(Rš{š(“š)¼š æšòš!ùš>›;Z›'–›0¾›ï› ô›eÿ›eœMzœPÈœ%?F½Wžž /ž"Pž)sž,žÊžäžùžŸ"Ÿ<ŸNŸ"eŸˆŸ¥Ÿ#ÀŸäŸÿŸ  , > O a g m ~ 8 È #ç  ¡ ¡"¡7¡J¡Y¡9w¡±¡º¡J¢R¢c¢{¢Œ¢ ¤¢+Å¢/ñ¢!£ <£J£)`£Š£¨£¹¸£r¤w¤ޤ ¥¤Ƥʤç¤ë¤¥¥ 1¥=¥ O¥;[¥ —¥ ¸¥*Â¥ƒí¥Fq¦M¸¦ §§§9,§f§ y§7š§/Ò§/¨ 2¨=¨Q¨Z¨r¨Ѝ¡¨¸¨ɨ Ú¨ å¨ñ¨ú¨t ©!©!¡©…éIªfª)„ª®ªµª½ªƪáª÷ª« «3«D«A\«"ž«Á«/Ö«B¬kI¬µ¬ˬ0Û¬= ­9J­2„­4·­ì­ò­®.®\K®¨® ¬® º®È®Ý®ñ®¯ ¯ &¯ 4¯ A¯N¯b¯v¯ ‘¯›¯ ¶¯¯ȯدà¯÷¯°#(°L°ºP°¬ ± ¸±Y²`²}²$–²»²#Ó²+÷²2#³ V³ w³ƒ³³½³ϳé³ð³ ´ ´´´1´5´"H´k´ ˆ´ –´ ¢´°´µ´1Æ´(ø´!µ$9µ)^µ-ˆµ¶µF½µ¶D¶Z¶§l¶5·J·\·,m·)š·Ä· Ö·"à·¸ ¸=¸C¸\¸u¸ˆ¸›¸ö°¸§¹ ¬¹ ͹ Û¹ ü¹ º%º<ºSºZº3pºU¤ºúº)»/:»j»#€»+¤»лê»ð»ôô»é¼ ½ ½,9½f½z½ ‘½›½®½Á½Ó½í½ô½ û½¾¾'¾@¾V¾©o¾ ¿%¿E¿GL¿”¿&¦¿Í¿uê¿I`ÀªÀ²ÀNÍÀÁ/Á6ÁMSÁî¡Á°Â7AÃ&yàà ´ÃÀÃGØÃ# ÄDÄ”_Ä|ôÄaqÅ ÓÅ ÝÅ êÅ÷Å#Æ6ÆMÆdÆyÆÆ§Æ ÀÆÌÆÓÆÜÆòÆúÆÇ:Ç YÇfÇmÇtÇŒÇ ¤Ç®Ç"¶Ç"ÙÇüÇÈ2.È aÈlÈ‚È˜È ¯È.½È ìÈöȄɘɬɻÉÂÉÕÉèÉ÷ÉÊÊ'Ê?ÊCOʓʩʹÊ)ÈÊ òÊÿÊ/ËJËdË ‚Ë ŽËšË ¢Ë­ËÆËåËþËÌ*ÌCÌWÌkÌ#}̡̺ÌÓÌéÌýÌ Í Í %Í0ÍGÍeÍ}Í ›Í©Í¯ÍÌÍÝÍôÍÎ'Î?ÎXÎwÎΨΞÅÎ#dÏˆÏ  Ï­ÏÃÏ×ÏñÏÐÐ+ÐM4ЂЗЫоÐÐÐäÐÑ1 ÑRÑ0bÑ “Ñ  Ñ†ªÑ41ÒfÒ÷ÒÿÒÓ 1Ó>Ó(PÓ8yÓ ²Ó½Ó<ÌÓ+ Ô5ÔÉFÔ$ÕR5Õ1ˆÕºÕ¢ÊÖAm×3¯×Xã×{<ØX¸Ø'Ù9Ù YÙAzÙq¼ÙY.Ú%ˆÚO®Ú=þÚF<Û7ƒÛ%»ÛáÛaÜ|ÜšÜ&ºÜ4áÜDÝŠ[Ý9æÝ] Þ3~Þ[²Þ•ßJ¤ßZïßjJà‡µàä=á1"âoTâ[Äâ^ ãã†ã•ãžä³äÍä ÕäâäóäåD$åeiå0Ïå"æ#æ?æTæ†gæhîæWçwfçÞçãçõç9ýç 7èXèiè…è •è £è­èÀè%Ôè.úè)éHégéxé“é¤é¾éÑéàé!þé ê':ê7bê%šêÀêÜê ïê*ë*;ëkfëÒëìëõë ìì6ì(Uì~ì‡ìì¸ì×ìßì6çìí<íLíeí„íE‰íHÏíYîSrîÆîCÏîvïŠï’ï¡ï/´ï!äïð# ð)1ð[ðwð|ð ‚ðŽð”ð˜ðð ¤ð¯ð³ð¸ð ¾ð ËðØð ëðøð ññ$#ñHñWñsñ |ñ*Šñ|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-26 10:16 Last-Translator: Language-Team: Turkish Language: tr_TR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: tr X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (deÄŸiÅŸtirildi) (kaydedilmedi)%d kod oluÅŸumu%d kod oluÅŸumu%d dizge%d dizge%d dizgenin ön çevirisi yapıldı.%d dizgenin ön çevirisi yapıldı.%d hata%d hata%d hata meydana geldi.%d hata meydana geldi.%d hata meydana geldi:%d hata meydana geldi:Kaynak dizgelerle ilgili %d sorun tespit edildi.Kaynak dizgelerle ilgili %d sorun tespit edildi.Çeviride %d sorun bulundu.Çeviride %d sorun bulundu.%i satır “%s†dosyasından doÄŸru olarak yüklenmedi.%i satır “%s†dosyasından doÄŸru olarak yüklenmedi.%s Biçimi%s Tercihleri%s biçimi%s çeviri içe aktarıldı.%s çeviri içe aktarıldı.H&akkındaPoedit H&akkında&Uygula&Geriİ&ptal&Temizle&Kapat&Kopyala&Sil&Tamamla ve Sonrakine Geç&Tamamla ve sonrakine geçDüz&en&Dosya&Bul…&GNU gettext Kılavuzu&GNU gettext kılavuzuG&itBaÄŸlama Göre &GruplaBaÄŸlama göre &grupla&Yardım&Yeni&Yeni…So&nraki >&Sonraki Çeviri&Sonraki çeviri&Hayır&TamamÇe&vrimiçi YardımÇe&vrimiçi yardım&Aç...&Aç…Ya&pıştır&Tercihler&Tercihler…Ön&ceki ÇeviriÖn&ceki çeviriÖ&zellikler…Silin&miÅŸ Çevirileri TemizleSilin&miÅŸ çevirileri temizleÇı&k&Yinele&DeÄŸiÅŸtirKay&det&Farklı kaydetKod OluÅŸumlarını &GösterKod oluÅŸumlarını &gösterPencereyi &BaÅŸlatPencereyi &baÅŸlatÇe&viri&Geri AlÇ&evrilmemiÅŸ Dizgeler En ÜstteÇ&evrilmemiÅŸ dizgeler en üstteKaynak Kodundan Gü&ncelleKaynak kodundan gü&ncelleÇevirileri &DoÄŸrulaÇevirileri &doÄŸrula&Görünüm&Evet(Varsayılan dili kullan)(giriÅŸ yapılmadı)(Windows 8 ya da üzeri gerekir)< Ön&ceki%s HakkındaHesapHesaplarEkleAçıklama EkleDosyaları Ekle…Klasörleri Ekle…Proje EkleJoker Karakter Ekle…Açıklama ekleDizini listeye ekleDosyaları ekle…Klasörleri ekle…Proje ekleJoker karakter ekle…Ek anahtar kelimelerEk xgettext iÅŸaretleri:GeliÅŸmiÅŸGeliÅŸmiÅŸ Çıkarma Ayarları…GeliÅŸmiÅŸ çıkarma ayarlarıGeliÅŸmiÅŸ çıkarma ayarları…Tüm Çeviri DosyalarıTüm açıklamalarTüm dizgelerDesteklenen diller için varsayılan anahtar kelimeleri de kullanİmleç hep çeviri alanına odaklansınBir hata meydana geldi.Girdi dosyaları listesindeki bir öğe:Anahtar kelimeler listesindeki bir öğe:GörünüşUygulaÇB’den yaklaşık eÅŸleÅŸmeler“%s†çıkarıcısını silmek istediÄŸinize emin misiniz?Çeviri belleÄŸini sıfırlamak istediÄŸinize emin misiniz?Güncellemeleri otomatik olarak denetleKaydederken MO dosyasını otomatik olarak derleGeriTemel yol:Beta sürümlerinde en son özellikler ve geliÅŸtirmeler bulunur, ancak daha az kararlı olabilirler.Tümünü Öne GetirBozuk PO dosyası: çoÄŸul biçim msgstr, msgid_plural olmadan kullanılmışBozuk PO dosyası: tekil biçim msgstr, msgid_plural ile birlikte kullanılmışÇeviri dizgesinde bozuk iÅŸaretleme.GözatDosyalara gözatVarsayılan olarak, doÄŸru olmayan sonuçlar da dahil edilir, ancak çalışma gerekiyor olarak iÅŸaretlenir. Yalnızca mükemmel eÅŸleÅŸmeleri dahil etmek için bu seçeneÄŸi iÅŸaretleyin.İptalİptal ediliyor…Geçici dizin oluÅŸturulamıyor.Program çalıştırılamıyor: %sBilinmeyen dilden ön çeviri yapılamaz.Kaynak metin olmadan ön çeviri yapılamaz.BaÅŸ Harfleri Büyük Yap&Katalog Yöneticisi&Katalog yöneticisiKatalog YöneticisiArayüz dilini deÄŸiÅŸtirKarakter kümesi:Belgeyi Åžimdi DenetleYazım ile Dilbilgisi Denetimi YapYazarken Yazım Denetimi YapGüncellemeleri Denetle…Çeviri içindeki hataları denetleGüncellemeleri denetle…Yazım denetimi yapTemizleMenüyü TemizleÇeviriyi TemizleMenüyü temizleÇeviriyi temizleKapatBulutKod OluÅŸumlarıKod oluÅŸumlarıÇevrimiçi olarak diÄŸer kiÅŸilerle iÅŸbirliÄŸi yapın.Kaynak dosyalar toplanıyor…Çevirileri çıkarmak için komut:AçıklamaAçıklama:Yorumların ön eki:MO olarak Derle…Şuna derle…DerlenmiÅŸ Çeviri DosyalarıÖzellikler’de kaynak kod çıkarmayı yapılandırın.OnaylamaÜzerinde yönetilen çevirileri sorunsuz bir ÅŸekilde eÅŸitlemek için Poedit’i desteklenen bulut yerelleÅŸtirme platformlarına baÄŸlayın.KopyalaTekilden KopyalaKaynak Metinden KopyalaTekilden kopyalaKaynak metinden kopyalaYazımı Otomatik Olarak DüzeltLocalazy proje ayrıntıları indirilemedi.Dosya yüklenemedi, muhtemelen zarar görmüş.%s dosyası kaydedilemedi.Yeni oluÅŸturYeni çeviri oluÅŸturPOT ÅŸablonundan yeni çeviri oluÅŸturun.Yeni çeviri projesi oluÅŸturCrowdin hatasıCrowdin, çevrimiçi çeviri yönetim platformu ve iÅŸbirliÄŸine dayalı çeviri aracıdır. Poedit’i birçok dile çevirmek için kendimiz Crowdin’i kullanıyoruz ve onu seviyoruz.&KesÖzel Çıkarıcılar:Özel çıkarıcılar:Araç ÇubuÄŸunu ÖzelleÅŸtir…KesDiskteki veritabanı boyutu:SilÇeviri BelleÄŸinden SilÇıkarıcıyı silÇeviri belleÄŸinden silProjeyi silAçıklamayı silProjeyi silProjeyi silmek herhangi bir çeviri dosyasını silmeyecek.Farklılıkları belirleniyor…Dizinler:“%s†projesini silmek istiyor musunuz?Dosyayı diskten yeniden yüklemek istiyor musunuz? Bunu yaparsanız Poedit’teki kaydedilmemiÅŸ düzenlemeleriniz kaybolacaktır.Kaynak metinle aynı olan tüm çevirileri kaldırmak istiyor musunuz?Artık kullanılmayan tüm çevirileri kaldırmak istediÄŸinize emin misiniz?Kaydet&meKaydetmeBir Daha GöstermeTam eÅŸleÅŸmeleri çalışma gerekiyor olarak iÅŸaretlemeBir daha göstermeEn son çeviriler indiriliyor…Bu projede çevirilerin indirilmesi etkisizleÅŸtirildi.Klasörleri veya Dosyaları Buraya SürükleyinKlasörleri veya dosyaları buraya sürükleyinÇı&kışHTML’ye a&ktar…DüzenleAçıklamayı Dü&zenleAçıklamayı dü&zenleAçıklamayı DüzenleAçıklamayı düzenleProjeyi düzenleProjeyi düzenleDüzenlemeDüzenle…E-posta:Tam Ekrana GeçBu dosyadaki giriÅŸler, dosyanın ÇoÄŸul-Biçim baÅŸlığında belirtilen sayıdan farklı çoÄŸul biçimlere sahipHataları Olan Dizgeler En ÜstteHataları olan dizgeler en üstteHatalı giriÅŸler listede kırmızı renkle iÅŸaretlendi. Hatanın ayrıntıları böyle bir giriÅŸi seçtiÄŸinizde gösterilecektir.Dosya açılırken hata olduDosya kaydedilirken hata olduXLIFF dosyası yüklenirken hata oldu: %sHata: HatalarHer ÅŸeyÇB’den tam eÅŸleÅŸmelerHariç tutulan yollarTMX’e Aktar…Dışa farklı aktar…HTML’ye aktar…TMX’e aktar…HTML’ye aktarılıyor“%s†dosyasına çeviri belleÄŸini aktarma baÅŸarısız oldu.Çeviriler dışa aktarılıyor…Kaynaklardan çıkarÇevirmenler için çıkarma notlarının yeri:Kaynak dosyalardan metinleri ÅŸurada belirtilen dizinlere çıkar:%s dosyadan çevrilebilir dizgeler çıkarılıyor…%s dosyadan çevrilebilir dizgeler çıkarılıyor…Çıkarıcı kurulumuÇıkarıcılarPoedit iÅŸlemi ile iletiÅŸim kurma baÅŸarısız.Kaynak kodundan dizgelerin çıkarılması baÅŸarısız oldu.Çıkarılan çevirilerle dosyayı yükleme baÅŸarısız.Gettext kataloglarını birleÅŸtirme baÅŸarısız.BaÅŸarısız olan çeviri belleÄŸi güncellemesi: %sDosyaDosya açılamadı“%s†dosyası yok.“%s†dosyası bir çeviri dosyası deÄŸil.“%s†dosyası salt okunur olduÄŸundan kaydedilemez. Lütfen farklı bir ad ile kaydedin.BulSonrakini BulÖncekini BulBul ve DeÄŸiÅŸtir…Açıklamalarda bulKaynak metinlerde bulÇevirilerde bulSonrakini bulÖncekini bulDili DüzeltDili düzeltBaÅŸlığı DüzeltBaÅŸlığı düzeltFlutter Çeviri DosyalarıBiçim %iForm %i (kullanılmamış)GNU gettextGenelHTML DosyalarıYardımKenar ÇubuÄŸunu GizleDurum ÇubuÄŸunu GizleBu uyarı iletisini gizleBulut eÅŸitleme nasıl çalışır?KodTemizleyerek devam ederseniz, silinmek üzere iÅŸaretlenmiÅŸ tüm çeviriler kalıcı olarak kaldırılacaktır. Gelecekte bunlar geri eklenirse, tekrar çevirmek zorunda kalacaksınız.EÄŸer dosyalarınıza eriÅŸimi daha önce reddettiyseniz, Sistem Tercihleri > Güvenlik ve Gizlilik > Gizlilik > Dosyalar ve Klasörler’de bu dosyaya izin verebilirsiniz.EÄŸer dosyalarınıza eriÅŸimi daha önce reddettiyseniz, Sistem Ayarları > Gizlilik ve Güvenlik > Dosyalar ve Klasörler’de bu dosyaya izin verebilirsiniz.YoksayBüyük/küçük harf yoksayTMX’ten İçe Aktar…Çeviri Dosyalarını İçe Aktar…TMX’ten içe aktar…Çeviri dosyalarını içe aktar…“%s†dosyasından içe aktarılıyor…Çeviri belleÄŸini içe aktarma baÅŸarısız oldu.Çeviriler içe aktarılıyor…Şurada: %sBeta sürümleri dahil etTutarsız büyük/küçük harfTutarsız boÅŸlukÇevirmen hakkında bilgiYükleGeçersiz dosyaÇaÄŸrı:SorunSorunlarJSON Çeviri DosyalarıTutDil adı veya koduÇeviri dili kaynak dil ile aynı.Çeviri dili ayarlı deÄŸil.Çeviri dili:Dil seçimiDil takımı:Dil:Son deÄŸiÅŸiklikGettext anahtar kelimeleri hakkında bilgi edininÇoÄŸul biçimler hakkında bilgi edininDaha fazla bilgi edinin%s hakkında daha fazla bilgi edininCrowdin hakkında daha fazla bilgi edininGNU gettext hakkında daha fazla bilgi edininSatırSatır %d, “%s†dosyasında bozulmuÅŸ (%s verisi geçerli deÄŸil).Satır sonları:Noktalı virgülle ayrılmış uzantılar listesi (örn. *.cpp;*.h):İngilizce YükleLocalazy, herkesin ürünlerini ve içeriÄŸini birden çok dile kolayca çevirmesini saÄŸlayan, yüksek düzeyde otomatikleÅŸtirilmiÅŸ bir yerelleÅŸtirme platformudur.MO dosyaları doÄŸrudan Poedit içinde düzenlenemez.Küçük Harf YapBüyük Harf YapBu POT dosyasından yeni bir çeviri yapın.Hatalı oluÅŸturulmuÅŸ baÅŸlık: “%sâ€Hesapları yönetYönet…Farklılıklar birleÅŸtiriliyor…Simge Durumuna KüçültÇevirisi yapılan projenin adıAdı:S&onraki TamamlanmamışS&onraki tamamlanmamışÇalışma GerekliÇalışma gerekliAÄŸ hatası: %s (%d)Bu seçenek etkinleÅŸtirildiÄŸinde, imleç asla dizge listesine odaklanmaz. Böylece odağı deÄŸiÅŸtirmek için sekme (Tab) tuÅŸuna basmadan çeviriyi hemen yazabilirsiniz. Gezinmek için Ctrl-AÅŸağı/Yukarı ok tuÅŸlarını kullanmalısınız.Yeni&POT/PO Dosyasından OluÅŸtur…Yeni Dizgeler&POT/PO dosyasından oluÅŸtur…Yeni dizgelerÇevrilecek yeni dizgeler:Sonraki ÇoÄŸul BiçimSonraki çoÄŸul biçimHayırEÅŸleÅŸme bulunamadıHerhangi bir kayıt için ön çeviri yapılamadı.Dosyada bu dizgenin kaynak kodundaki oluÅŸumları hakkında saÄŸlanan hiç bilgi yok.EÅŸleÅŸme bulunamadıÇeviri ile ilgili hiç sorun bulunmadı.Hesabınızda listelenen çeviri projeleri yok.Kullanım bilgisi yokTüm çoÄŸul biçimler çevrilmedi.Yetkiniz yok, lütfen tekrar giriÅŸ yapın.Çevirmenler için notlarTamamBirBu seçeneÄŸi yalnız Çeviri BelleÄŸinizin kalitesine güveniyorsanız etkinleÅŸtirin. Varsayılan olarak, Çeviri BelleÄŸinden alınan tüm eÅŸleÅŸmeler çalışma gerekiyor olarak iÅŸaretlenir ve kullanılmadan önce gözden geçirilmelidir.Sadece tam eÅŸleÅŸmeleri doldurBulut Çeviriyi Aç…Son Kullanılanları AçÇeviri dosyalarını açın ve düzenleyin.Bulut çeviriyi açBulut çeviriyi aç…Dosya açDüzenleyicide AçDüzenleyicide açEn sonunucuyu açBaÅŸvurma dosyasını açAç...Aç…SeçeneklerDiÄŸerÖ&nceki TamamlanmamışÖ&nceki tamamlanmamışPO Çeviri DosyalarıPOT Çeviri ÅžablonlarıPOT dosyaları sadece ÅŸablonlardır ve kendi baÅŸlarına herhangi bir çeviri içermezler. Bir çeviri yapmak için ÅŸablonu temel alan yeni bir PO dosyası oluÅŸturun.YapıştırStili Yapıştır ve EÅŸleÅŸtirYollarProjedeki tüm dosyalarda kaynak kodundan güncelleme gerçekleÅŸtirir.İzin reddedildi.“%s†yer tutucusu çeviride eksik.Yer tutucuların doÄŸruluÄŸuLütfen bunun yerine ilgili PO dosyasını açın ve düzenleyin. KaydettiÄŸinizde, MO dosyası da güncellenecektir.Lütfen önce dosyayı kaydedin. O zamana kadar bu bölüm düzenlenemez.ÇoÄŸulÇoÄŸul biçim çevirileriDosya tarafından %s için kullanılan çoÄŸul biçim ifadesi alışılmadık.ÇoÄŸul biçimler:PoeditPoedit - Katalog yöneticisiPoedit, “%s†dosyasındaki geçersiz içeriÄŸi otomatik olarak düzeltti.Poedit yeni kayıtları yalnız dosyadaki önceki çevirilerden ya da tüm çeviri belleÄŸinden doldurmayı deneyebilir. Çeviri BelleÄŸi fazla dolu deÄŸil ise etkin kullanılamayabilir. Ancak çeviri sayısı arttıkça etkinliÄŸi artar.Poedit, dizgenin kullanıldığı kaynak kodu gösteremiyor, çünkü dosya ya baÅŸvurulan konumda mevcut deÄŸil ya da gerçek bir dosyayı göstermeyen sembolik bir baÅŸvurma.Poedit kullanımı kolay bir çeviri düzenleyicisidir.Poedit “%s†dosyasını açamadı.Ön çe&viri yap…Ön ÇeviriÖn çeviri yapılmış%u dizgenin ön çevirisi yapıldı%u dizgenin ön çevirisi yapıldıÇeviri belleÄŸinden ön çeviri…Ön çeviri yapılıyor…Ön çeviri, çevrilmemiÅŸ dizgeleri için Çeviri BelleÄŸindeki tam ya da belirsiz olan eÅŸleÅŸmeleri otomatik olarak bularak çevirileri doldurur.Ön çeviri, kaynak metnin mevcut olmasını gerektirir. Yalnızca asıl metin içermeyen kodlar kullanılırsa çalışmaz.Ön çeviri, kaynak metnin dilinin bilinmesini gerektirir. Poedit bu dosyada bunu tespit edemedi.TercihlerTercihler...Tercihler…Dizgeler hazırlanıyor…Var olan dosyaların biçimini koruÖnceki ÇoÄŸul BiçimÖnceki çoÄŸul biçimÖnceki kaynak metinÖnceden DüzenlenmişÖnceden düzenlenmiÅŸProje adı ve sürümü:Proje adı:Proje:ProjelerNoktalama denetimleriTemizleSilinmiÅŸ çevirileri temizleÇıkDosya içeriÄŸini okuma ÅŸu hata ile baÅŸarısız oldu: %sSon dosyalarYineleYenileDosyayı Yeniden YükleDosyayı yeniden yükleKalan: %dKaldırKaynakla Aynı Çevirileri KaldırKaynakla aynı çevirileri kaldırKaldırılmış DizgelerKaldırılmış dizgelerKaldırılmış dizgeler (artık kullanılmıyor):DeÄŸiÅŸtir&Tümünü DeÄŸiÅŸtir&Tümünü deÄŸiÅŸtirDeÄŸiÅŸtirilecek dizgeDeÄŸiÅŸtir…Gereken ÇoÄŸul-Biçin baÅŸlık bilgisi eksik.SıfırlaÇeviri belleÄŸini sıfırlaÇeviri belleÄŸini sıfırlama tüm saklanan çevirileri geri dönülmez bir ÅŸekilde bundan silecek. Bu iÅŸlemi geri alamazsınız.Finder’da GösterGözden geçirKaydet&Farklı Kaydet…&Farklı kaydet…Yine de KaydetYine de kaydetFarklı kaydetFarklı kaydet…DeÄŸiÅŸiklikleri kaydetDosyayı kaydetFarklı bir konuma kaydetmek XCLOC dosyaları için desteklenmiyor.Ekran Görüntüleri:&Tümünü SeçTümünü Seçİçe aktarılacak TMX dosyalarını seçDizin seçinÇeviri dosyasını seçinİçe aktarılacak çeviri dosyalarını seçinÇeviri ÅŸablonunu seçinTercih ettiÄŸiniz dili seçinDili ayarlaDili ayarlaAyarlarAyarlar…Kenar ÇubuÄŸunu GösterYazım ve Dilbilgisini GösterDurum ÇubuÄŸunu GösterDizge &Kodunu GösterDeÄŸiÅŸimleri GösterAraç ÇubuÄŸunu GösterUyarıları GösterGezgin’de GösterKlasörde GösterKenar çubuÄŸunu göster veya gizleKenar çubuÄŸunu gösterDurum çubuÄŸunu gösterDizge &kodunu gösterUyarıları gösterKenar çubuÄŸuGiriÅŸ YapÇıkış YapGiriÅŸ yap%s için giriÅŸ yapınBulut Hesabına GiriÅŸ YapınCrowdin'e giriÅŸ yapınBulut hesabına giriÅŸ yapınÇıkış yapTekilAkıllı Kopyala/YapıştırAkıllı TirelerAkıllı BaÄŸlantılarAkıllı Tırnaklar&Dosya Düzenine göre Sırala&KaynaÄŸa göre SıralaÇeviriye &göre Sırala&Dosya düzenine göre sırala&KaynaÄŸa göre sıralaÇeviriye &göre sıralaKaynak kod karakter kümesi:Kaynak kodu çıkarıcıları kaynak kodu dosyalarında çevrilebilir dizgeleri bulmak ve onları çıkarmak için kullanılır böylece bunlar çevrilebilir.Kaynak kodu kullanılabilir deÄŸil.Kaynak kodu bulunamadıKaynak metinKaynak metin kimliÄŸiKaynak metin — %sKaynak Anahtar KelimeleriKaynak YollarıKaynak anahtar kelimeleriKaynak yollarıKonuÅŸma%s için sözlük yüklü olmadığından yazım denetimi etkisizleÅŸtirildi.Yazım ve DilbilgisiKonuÅŸmayı BaÅŸlatKonuÅŸmayı DurdurSaklanan çeviri:Dizge baÄŸlamı: %sDizge tanımlayıcısı: %sKarakter olarak dizge uzunluÄŸuKarakter olarak dizge uzunluÄŸu: çeviri | kaynakBulunacak dizgeDizge tabanlı Crowdin projeleri desteklenmiyor.DeÄŸiÅŸimlerÖnerilerÇeviri dili doÄŸru olarak ayarlanmazsa, öneriler kullanılabilir olmaz. ÇoÄŸul biçimler gibi, diÄŸer özellikler de etkilenebilir.Kaynak metinde olmayan gereksiz yer tutucu “%sâ€.GNU gettext araçları (PHP, C/C++, C#, Perl, Python, Java, JavaScript ve diÄŸerleri) tarafından tanınan tüm programlama dillerini destekler.EÅŸitleCrowdin ile eÅŸitleÇeviriyi Crowdin ile eÅŸitleEÅŸitleniyorEÅŸitleme hatasıCrowdin ile eÅŸitleme baÅŸarısız oldu.ÇoÄŸul-Biçim baÅŸlığında sözdizimi hatası ("%s").ÇBelleÄŸiTMX DosyalarıÇevrilebilir dizgeleri var olan bir POT ÅŸablonundan alın.Takım adı ve e-posta adresi veya URL’siMetin DeÄŸiÅŸimiÇeviri belleÄŸi bu dosyanın içeriÄŸine uygun herhangi bir dizge içermiyor. El ile yaptığınız çeviriler Poedit tarafından yeterince öğrenildikten sonra yarı otomatik çeviriler etkili olur.TMX dosyası hatalı oluÅŸturulmuÅŸ.Kaydederseniz diÄŸer uygulama tarafından yapılan deÄŸiÅŸiklikler kaybolacaktır.Dosya, MO biçiminde derlenemez ve kullanılamaz.Dosyada, PO dosyalarında izin verilmeyen ve dosyanın kullanılmasını engelleyen birbirinin kopyası olan ögeler var. Poedit sorunu düzeltti, ancak çalışma gerekiyor olarak iÅŸaretlenen her bir ögenin çevirisini gözden geçirmeli ve gerekirse düzeltmelisiniz.Dosya, çeviri ayarlarında belirtildiÄŸi gibi “%s†karakter kümesine kaydedilemedi. Bunun yerine UTF-8 olarak kaydedildi ve ayar buna göre deÄŸiÅŸtirildi.Dosya deÄŸiÅŸtirildi. DeÄŸiÅŸiklikleri kaydetmek istiyor musunuz?Dosya, Poedit tarafından tanınmayan bir biçimde.Dosya, MO biçiminde derlendi, ancak büyük olasılıkla doÄŸru olarak çalışmayacak.Dosya güvenli bir ÅŸekilde kaydedildi ve MO biçiminde derlendi, ancak büyük olasılıkla doÄŸru olarak çalışmayacak.Dosya güvenli bir ÅŸekilde kaydedildi, ancak MO biçiminde derlenemez ve kullanılamaz.Dosya güvenli bir ÅŸekilde kaydedildi.“%s†dosyası açılamadı.“%s†dosyası kaydedilemedi.“%s†dosyası baÅŸka bir uygulama tarafından deÄŸiÅŸtirildi.Belirsiz çevirinin karşılık geldiÄŸi eski kaynak metin (bir güncelleme sırasında deÄŸiÅŸtirilmeden önce).Bu dosyayı çevirilerle doldurmanın en kolay yolu bir POT dosyasından güncellemektir:Çeviri bir boÅŸluk ile baÅŸlamıyor.Çeviri yeni bir satır baÅŸlangıcı ile bitiyor, ancak kaynak metin bitmiyor.Çeviri bir boÅŸluk ile bitiyor, ancak kaynak metin bitmiyor.Çeviri “%s†ile bitiyor, ancak kaynak metin “%s†ile bitiyor.Çevirinin sonunda yeni bir satır baÅŸlangıcı eksik.Çevirinin sonunda bir boÅŸluk eksik.Çeviri kullanıma hazır, ancak henüz %d dizge çevrilmemiÅŸ.Çeviri kullanıma hazır, ancak henüz %d dizge çevrilmemiÅŸ.Çeviri kullanıma hazır.Çeviri “%s†ile bitmeli.Çeviri “%s†ile bitmemeli.Çeviri bir cümle olarak baÅŸlamalı.Çeviri bir küçük harf karakteri ile baÅŸlamalı.Çeviri bir boÅŸluk ile baÅŸlıyor, ancak kaynak metin baÅŸlamıyor.Çeviriler yetersiz olduÄŸundan üzerinde çalışma gerekiyor olarak iÅŸaretlendi. Bu çevirilerin doÄŸruluÄŸunu gözden geçirmelisiniz.Herhangi bir çeviri bulunamadı. Bu durum normal deÄŸil.Dosyanın güzel bir ÅŸekilde biçimlendirilmesinde bir sorun oldu (ama sorunsuz kaydedildi).Çeviriler Localazy’e yüklenirken bir hata oldu.Dosya yüklenirken hatalar oldu. Sonuç olarak bazı veriler eksik veya bozulmuÅŸ olabilir.Bu ayarlar PO dosyalarının iç biçimlendirmesini etkiler. ÖrneÄŸin sürüm denetimi nedeniyle özel gereksinimleriniz varsa, bunları ayarlayın.Bu JSON dosyası bir çeviri dosyası deÄŸil ve Poedit’te düzenlenemez.Bu eylem, kaynak metinle tam olarak eÅŸleÅŸen tüm çevirileri silecek. Bu geri alınamaz.Bu dosya çoÄŸul biçimleri olan giriÅŸlere sahip, ancak ÇoÄŸul-Biçimli baÅŸlık yapılandırılmamış.Bu dosya, kaynak metin yerine dizge kodlarını kullanır. Poedit İngilizce metinleri sizin için “%s†dosyasından yükleyebilir.Bu, çıkarıcıyı çalıştırmak için kullanılan komuttur. %o çıktı dosyası adına, %K anahtar kelimelerin listesine, %F girdi dosyalarının listesine, %C karakter kümesi iÅŸaretine dönüşür (aÅŸağıya bakınız).Bu dizge Poedit’in çeviri belleÄŸinde bulundu.Kaynak kodu karakter kümesi verildiyse, bu komut satırına eklenecektir. %c karakter kümesi deÄŸerini yazar.Bu, her girdi dosyası için bir kez komut satırına eklenecektir. %f dosya adını yazar.Bu, her anahtar kelime için bir kez komut satırına eklenecektir. %k anahtar kelimeyi yazar.ToplamDönüşümlerÇevrilebilir giriÅŸler Gettext sistemine el ile eklenmez, ancak kaynak kodundan otomatik olarak çıkarılır. Bu yolla, güncel ve doÄŸru kalırlar. Çevirmenler genellikle geliÅŸtirici tarafından hazırlanan PO ÅŸablon dosyalarını (POT’ları) kullanırlar.Bulut projeyi çevirÇevrilen: %d / %d (%%%d)ÇeviriÇeviri DiliÇeviri BelleÄŸiÇalışma &Gereken ÇeviriÇeviri ÖzellikleriÇeviri dosyası zaten güncel, dizgelerde deÄŸiÅŸiklik yapılmadı.Çeviri dosyası %s deÄŸiÅŸiklik ile güncellendi.Çeviri dosyası %s deÄŸiÅŸiklik ile güncellendi.Çeviri belleÄŸi veritabanı bozulmuÅŸ: %s (%d).Çeviri belleÄŸi hatası: %s (%d).Çalışma &gereken çeviriÇeviri özellikleriÇeviri önerileriÇeviri önerileri, kaynak metnin mevcut olmasını gerektirir. Yalnızca asıl metin içermeyen kodlar kullanılırsa çalışmazlar.Çeviri önerileri, kaynak metnin dilinin bilinmesini gerektirir. Poedit bu dosyada bunu tespit edemedi.Çeviri — %sÇeviriler kaynak kodundan güncellenemedi, çünkü dosyanın Özelliklerinde belirtilen konumda hiç kod bulunamadı.İkiUTF-8 (önerilir)Geri alXCLOC dosyasında beklenmedik bir ÅŸekilde eksik içerik.Beklenmeyen bir hata oluÅŸtu: %sUnix (önerilir)Bilinmeyen Crowdin hatası.Bilinmeyen hataÇevrilmemiÅŸGüncelleGüncelleme ÖzetiTümünü güncelleProjedeki tüm katalogları güncelleBu projedeki tüm kataloglar güncellensin mi?&POT Dosyasından Güncelle…&POT dosyasından güncelle…Koddan GüncellePOT dosyasından güncelleKoddan güncelleKaynak kodundan güncelleGüncelleme özetiGüncellemelerGüncelleme baÅŸarısız olduProje katalogları güncelleniyorÇeviriler güncelleniyorKullanıcı bilgileri güncelleniyor…Çevirilerin %s üzerine yüklenmesi baÅŸarısız oldu.Çeviriler %s üzerine yükleniyor…Çeviriler gönderiliyor…Özel ifade kullanÖzel liste yazı tipini kullan:Özel metin alanları yazı tipini kullan:Bu dil için varsayılan kuralları kullanKaynak dosyalardaki çevrilebilir dizgeleri tanımak için, ÅŸu anahtar kelimeleri (iÅŸlev adları) kullan:Çeviri belleÄŸini kullanDoÄŸrulaDoÄŸrulama sonuçlarıSürüm %sAyrıntıları Görüntüle…Ayrıntıları görüntüle…Kimlik doÄŸrulaması için bekleniyor…Uyarı: Poedit’e HoÅŸgeldinKaynaklardan güncellerkenKelimelere aynen uyanları bulPencereWindowsKaynak metin için İngilizce kullanmak ister misiniz?Sona gelince baÅŸtan devam etKaydırma yeri:XLIFF Çeviri DosyalarıXcode YerelleÅŸtirme KataloÄŸuEvetÇevrilebilir dizgeleri doÄŸrudan kaynak kodundan çıkarabilirsiniz:Poedit penceresine birden fazla dosyayı sürükleyip bırakamazsınız.Dosyanın Özelliklerinde belirtilen konumdan kaynak kod dosyalarını okuma izniniz yok.Bu deÄŸiÅŸikliÄŸin etkili olması için Poedit'i yeniden baÅŸlatmak zorundasınız.AdınızEÄŸer kaydetmezseniz yaptığınız deÄŸiÅŸiklikler kaybolacaktır.Adınız ve e-postanız sadece GNU gettext dosyalarının Last-Translator üst bilgisini ayarlamak için kullanılır.SıfırYakınlaÅŸtırÇalışma Gerekligeçici dosyaları silme (hata ayıklama için)örn. nplurals=2; plural=(n > 1);hata: dosya içinde belirsiz olarak eÅŸleverilen satır numarasındaki öğeye gitBir poedit:// URI'si kullanAlt+Ctrl+AÅŸağı OkEnterSolSaÄŸShift+Yukarı Okaltctrlshift%s Hakkında%s’i GizleDiÄŸerlerini GizleTercihler...%s’ten ÇıkHizmetlerTümünü Gösterçeviri belleÄŸinden ön çeviri yapbilinmeyen dildesteklenmeyen sürüm (%s)uyarı: siz@ornek.com“%s†geçerli bir POT dosyası deÄŸil.poedit-3.6.3/locales/pt_BR.po0000644000175100001660000027077415011674230011501 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-06 10:16\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: pt-BR\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Esconder esta mensagem de notificação" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Não mostrar novamente" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Não mostrar novamente" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Atualizar o Sumário" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Atualizar sumário" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Fechar" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problemas" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Arquivo" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Linha" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problema" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Novas Strings" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Novas strings" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Strings Removidas" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Strings Removidas" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Coletando arquivos de origem…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Extraindo strings traduzíveis de %s arquivo…" msgstr[1] "Extraindo strings traduzíveis de %s arquivos…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Falhou em carregar o arquivo com as traduções extraídas." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Em: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Código-fonte não disponível." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "As traduções não puderam ser atualizadas do código-fonte porque nenhum " "código foi encontrado no local especificado nas propriedades do arquivo." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Permissão negada." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Você não tem permissão para ler arquivos do código-fonte do local " "especificado nas propriedades do arquivo." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Se você negou anteriormente o acesso aos seus arquivos, você pode permiti-lo " "em Configurações do Sistema > Privacidade e Segurança > Arquivos e Pastas." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Se você negou anteriormente o acesso aos seus arquivos você pode permití-lo " "em Preferências do Sistema > Segurança & Privacidade > Privacidade > " "Arquivos & Pastas." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Falhou em extrair as strings do código fonte." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "O arquivo “%s†não pôde ser aberto." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Atualizando traduções" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Determinando as diferenças…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Mesclando diferenças…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "O arquivo de tradução já está atualizado, não foram feitas mudanças nas " "strings." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "O arquivo de tradução foi atualizado com %s alteração." msgstr[1] "O arquivo de tradução foi atualizado com %s mudanças." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Novas strings pra traduzir:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Strings removidas (não mais usadas):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "%d problema detectado com os textos fonte." msgstr[1] "%d problemas com as strings de origem foi detectado." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Visualizar Detalhes…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Visualizar detalhes…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Cabeçalho malformado: \"%s\"" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Arquivos de Tradução PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Modelos de Tradução POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Arquivos de Tradução XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Catálogo de Localização do Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Arquivos de tradução JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Arquivos de tradução Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Todos os Arquivos de Tradução" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "O arquivo está em um formato não reconhecido pelo Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Este arquivo JSON não é um arquivo de traduções e não pode ser editado no " "Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Não foi possível ler o conteúdo do arquivo pelo seguinte erro: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, 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" "Por favor salve-o com um nome diferente." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Não foi possível salvar arquivo %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Screenshots:" #: src/catalog_po.cpp:134 #, 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 linha do arquivo \"%s\" não foi carregada corretamente." msgstr[1] "%i linhas do arquivo \"%s\" não foram carregadas corretamente." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "A linha %d do arquivo \"%s\" está corrompida (dados %s inválidos)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Arquivo PO quebrado: a forma singular do msgstr é usada junto com o " "msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Arquivo PO quebrado: a forma plural do msgstr é usada sem o msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Não foi possível carregar o arquivo, provavelmente está corrompido." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Houveram erros quando carregava o arquivo. Alguns dados podem estar ausentes " "ou corrompidos como resultado." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Houve um problema ao formatar bem o arquivo (mas ele foi salvo corretamente)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "O arquivo não pôde ser salvo na tabela de caracteres “%s†conforme " "especificado nas configurações da tradução.\n" "\n" "Ao invés disto ele foi salvo como UTF-8 e a configuração foi modificada de " "acordo." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Erro ao salvar o arquivo" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "\"%s\" não é um arquivo POT válido." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Conteúdo inesperadamente ausente no arquivo XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Salvar num local diferente não é suportado nos arquivos XCLOC." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Erro ao carregar o arquivo XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "versão não suportada (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Marcação quebrada na string da tradução." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Conecte o Poedit com as plataformas suportadas de localização da nuvem pra " "sincronizar perfeitamente as traduções gerenciadas nelas." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Como a sincronização com a nuvem funciona?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Conta" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(não está logado)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Abrir tradução da nuvem" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Gerenciar contas" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projeto:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Idioma:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Logar na Conta da Nuvem" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Logar na conta da nuvem" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Não há projetos de tradução listados na sua conta." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Baixando as traduções mais recentes…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Logar no %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sincronizando" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Fazendo upload das traduções pro %s..." #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "O upload das traduções pro %s falhou." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Erro de sincronização" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Adicionar" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Erro desconhecido do Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Não autorizado, por favor logue de novo." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Projetos do Crowdin baseados em strings não são suportados." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "O download das traduções está desativado neste projeto." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Logar" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Logar" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Sair" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Sair" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Aprenda Mais Sobre o Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "O Crowdin é uma plataforma de gerenciamento de traduções online e ferramenta " "de tradução colaborativa. Nós usamos o Crowdin nós mesmos pra traduzir o " "Poedit em muitos idiomas e nós amamos ele." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Esperando pela autenticação…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Atualizando as informações do usuário…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Logar no Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "A sincronização com o Crowdin falhou." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Erro do Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Fazendo upload das traduções…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Copiar" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Aprenda mais" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Ajuda" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Os Arquivos MO não podem ser editados diretamente no Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Erro ao abrir o arquivo" #: src/edapp.cpp:735 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 arquivo PO correspondente ao invés disto. Quando " "você salvá-lo o arquivo MO também será atualizado." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "não apagar arquivos temporários (para depuração)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "Manejar uma URI do poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "Vá até o item no número de linha dado" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Falhou em comunicar com o processo do Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ocorreu uma exceção não manejada: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Selecionar o modelo de tradução" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Arquivo inválido" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Selecionar arquivo de tradução" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "O Poedit é um editor de traduções fácil de usar." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Você não pode soltar mais do que um arquivo na janela do Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "O arquivo “%s†não é um arquivo de tradução." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "O arquivo \"%s\" não existe." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "A verificação ortográfica está desativada porque o dicionário pro %s não " "está instalado." #: src/edframe.cpp:871 msgid "Install" msgstr "Instalar" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "O arquivo “%s\" foi mudado por outro aplicativo." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Recarregar arquivo" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Você quer recarregar o arquivo do disco? Suas edições não salvas no Poedit " "serão perdidas se você o fizer." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignorar" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Recarregar Arquivo" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "O arquivo foi modificado. Você quer salvar as mudanças?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Salvar mudanças" #: src/edframe.cpp:1076 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." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Salvar" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Nã&o salvar" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Não salvar" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "As mudanças feitas por outro aplicativo serão perdidas se você salvar." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Cancelar" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Salvar de Qualquer Maneira" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Salvar de qualquer maneira" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Salvar como…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Compilar para…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Arquivos de Tradução Compilados" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Exportar para HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Arquivos HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Exportando para HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "A atualização falhou" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Abrir arquivo de referência" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Atualizar do Arquivo &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Atualizar do arquivo &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d problema achado na tradução." msgstr[1] "%d problemas achados na tradução." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Resultados da validação" #: src/edframe.cpp:1842 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. Os detalhes do " "erro serão mostrados quando você selecionar tal entrada." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "O arquivo foi salvo com segurança." #: src/edframe.cpp:1854 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 funcionará corretamente." #: src/edframe.cpp:1857 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 pôde ser compilado no formato MO e " "usado." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "O arquivo foi compilado no formato MO mas ele provavelmente não funcionará " "corretamente." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "O arquivo não pôde ser compilado no formato MO e usado." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Não foram encontrados problemas na tradução." #: src/edframe.cpp:1894 #, 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] "" "A tradução está pronta pra uso mas a entrada %d ainda não foi traduzida." msgstr[1] "" "A tradução está pronta pra uso mas as entradas %d ainda não foram traduzidas." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "A tradução está pronta pra uso." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "O Poedit consertou automaticamente o conteúdo inválido no arquivo \"%s\"." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "O arquivo continha itens duplicados, o que é proibido em arquivos PO e " "impediria o arquivo de ser usado. O Poedit consertou o problema mas você " "deve revisar traduções de quaisquer itens marcados como precisando de " "trabalho e corrigí-los se necessário." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "O idioma da tradução não está definido." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Definir Idioma" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 não estão disponíveis se o idioma da tradução não está definido " "corretamente. Outras funções tais como formas no plural também podem ser " "afetadas." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "O idioma da tradução é o mesmo do idioma de origem." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Consertar o Idioma" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Consertar o Idioma" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Este arquivo tem entradas com formas no plural mas não tem um cabeçalho de " "formas no plural configurado." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "As entradas neste arquivo têm contagem de formas no plural diferentes do que " "o cabeçalho das formas no plural do arquivo diz" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "O cabeçalho requerido das formas no plural está ausente." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Erro de sintaxe no cabeçalho das formas no plural (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Consertar o Cabeçalho" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Consertar o cabeçalho" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "A expressão usada de formas no plural pelo arquivo é incomum pra %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Revisar" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Você gostaria de usar Inglês para texto de origem?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Este arquivo usa IDs em vez de texto de origem. O Poedit pode carregar " "textos em inglês do arquivo “%s\" para você." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Carregar Inglês" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduziu: %d de %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Restantes: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d erro" msgstr[1] "%d erros" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrada" msgstr[1] "%d entradas" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (não salvo)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (modificado)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Falhou em atualizar a memória das traduções: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "O arquivo “%s†não pôde ser salvo." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Remover traduções idênticas às da fonte" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Você quer remover todas as traduções que são idênticas ao texto de origem?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Esta ação apagará quaisquer traduções que combinem exatamente com o texto de " "origem. Isto não pode ser desfeito." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Manter" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Remover" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Remover as traduções apagadas" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Você quer remover todas as traduções que não são mais usadas?" #: src/edframe.cpp:2879 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 remoção todas as traduções marcadas como apagadas " "serão removidas permanentemente. Você terá que traduzi-las de novo se elas " "forem adicionadas de volta no futuro." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Remover" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Copiar do texto de origem" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Copiar do Texto de Origem" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Limpar tradução" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Limpar Tradução" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Editar comentário" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Editar Comentário" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Ocorrências no Código" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Ocorrências no código" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Esconder a Barra Lateral" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Mostrar a Barra Lateral" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Esconder a Barra de Status" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Mostrar a Barra de Status" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Comprimento da string em caracteres: tradução | fonte" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Comprimento da string em caracteres" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Texto de orígem" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singular" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plural" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Tradução" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pré-traduzidas" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Precisa de Trabalho" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Precisa de trabalho" #: src/editing_area.cpp:566 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 arquivos POT são apenas modelos e eles mesmos não contêm quaisquer " "traduções.\n" "Pra fazer uma tradução crie um novo arquivo PO baseado no modelo." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Criar nova tradução" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Criar uma nova tradução a partir deste arquivo POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID do texto fonte" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Tudo" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Formulário %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Formulário %i (não usado)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Zero" #: src/editing_area.cpp:788 msgid "One" msgstr "Um" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dois" #: src/editing_area.cpp:804 msgid "Other" msgstr "Outro" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Contexto da string: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identificador da string: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Formato %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Formato %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Tradução — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Texto de origem — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "Idioma desconhecido" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Erro de rede: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Erro desconhecido" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Falhou em unir os catálogos do gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Abrir no Editor" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Abrir no editor" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Nenhuma informação sobre as ocorrências da string no código-fonte é " "fornecida no arquivo." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Nenhuma informação de uso" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d ocorrência no código" msgstr[1] "%d ocorrências no código" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Código fonte não encontrado" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "O Poedit não pode mostrar o código-fonte aonde a string é usada porque o " "arquivo ou não está disponível no local referenciado ou é uma referência " "simbólica que não aponta pra um arquivo real." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "O arquivo não pode ser aberto" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "O Poedit foi incapaz de abrir o arquivo “%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Achar" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Substituir" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opções" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignorar maiúsculas e minúsculas" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Pesquisa circular" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Só palavras inteiras" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Achar nos textos fonte" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Achar nas traduções" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Achar nos comentários" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Substituir &Tudo" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Substituir &tudo" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Substituir" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Anterior" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Próximo >" #: src/findframe.cpp:235 msgid "String to find" msgstr "String pra achar" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "String de substituição" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "aviso: " #: src/gexecute.cpp:171 msgid "error: " msgstr "erro: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Nome ou código do idioma" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Idioma da Tradução" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Idioma da tradução:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Todas as strings" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Não pôde baixar os detalhes do projeto Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Houve um erro quando fazia upload das traduções pro Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projetos" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Aprenda mais sobre o %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "A Localazy é uma plataforma de localização altamente automatizada que " "permite a qualquer um traduzir seus produtos e conteúdos pra múltiplos " "idiomas facilmente." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Adicionar Projeto" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Adicionar projeto" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Gerenciador de catálogos" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Editar…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Criar novo projeto de tradução" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Apagar o projeto" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Editar o projeto" #: src/manager.cpp:176 msgid "Update all" msgstr "Atualizar tudo" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Atualizar todos os catálogos no projeto" #: src/manager.cpp:378 msgid "Total" msgstr "Total" #: src/manager.cpp:379 msgid "Untrans" msgstr "Não traduzidas" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Precisa de Trabalho" #: src/manager.cpp:381 msgid "Errors" msgstr "Erros" #: src/manager.cpp:382 msgid "Last modified" msgstr "Última modificação" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Selecionar diretório" #: src/manager.cpp:433 msgid "Directories:" msgstr "Diretórios:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Você deseja excluir o projeto “%s?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Excluir projeto" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Excluir o projeto não excluirá nenhum arquivo de tradução." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Confirmação" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Atualizar todos os catálogos deste projeto?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Executa a atualização do código fonte em todos os arquivos do projeto." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Atualizando catálogos do projeto" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Verificar Atualizações…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Gerenciador de catálogos" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Preferências…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Editar" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Desfazer" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Refazer" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Colar e Combinar com o Estilo" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Apagar" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Ortografia e gramática" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Mostrar Ortografia e Gramática" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Verificar o Documento Agora" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Verificar a Ortografia enquanto Digita" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Verificar a Gramática com Ortografia" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Corrigir ortografia automaticamente" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Substituições" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Mostrar Substituições" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Copiar/Colar Inteligente" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Aspas inteligentes" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Hífens Inteligentes" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Links Inteligentes" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Substituição de texto" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformações" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Tornar Maiúscula" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Tornar Minúscula" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Letras Iniciais em Maiúsculas" #: src/menus.cpp:237 msgid "Speech" msgstr "Fala" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Começar a Falar" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Parar de Falar" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Visualizar" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Mostrar Barra de Ferramentas" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Personalizar barra de ferramentas…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Entrar em Tela Cheia" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Janela" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimizar" #: src/menus.cpp:264 msgid "Zoom" msgstr "Zoom" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Bem-vindo ao Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Trazer Tudo pra Frente" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informações sobre o tradutor" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nome:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Seu Nome" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Email:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "voce@exemplo.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Seu nome e endereço de email só são usados pra definir o cabeçalho do último " "tradutor de arquivos gettext do GNU." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Edição" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Compilar automaticamente o arquivo MO quando salvar" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Verificar ortografia" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Sempre mudar o foco pro campo de entrada do texto" #: src/prefsdlg.cpp:211 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 "" "Nunca deixa a lista de strings tirar o foco. Se ativado você deve usar o " "Ctrl-setas pra navegação pelo teclado mas você também pode digitar o texto " "imediatamente sem ter que pressionar Tab pra mudar o foco." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Aparência" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Usar fonte personalizada da lista:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Usar fonte personalizada dos campos de texto:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Mudar o idioma da interface do usuário" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(requer o Windows 8 ou mais novo)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Geral" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Usar a memória das traduções" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Gerenciar…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Quando atualizar das fontes" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "Combinação imprecisa dentro do arquivo" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "Pré-traduzir da MT" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "O Poedit pode tentar preencher novas entradas só das traduções anteriores no " "arquivo ou da memória das traduções inteira. Usar da MT não será muito " "efetivo se ela estiver quase vazia mas ficará melhor conforme você adicionar " "traduções a ela." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Traduções armazenadas:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Tamanho do banco de dados no disco:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importar Arquivos de Tradução…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importar arquivos de tradução…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importar do TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importar do TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Exportar pro TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Exportar pro TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Reset" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Selecione arquivos de tradução pra importar" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Selecione os arquivos TMX pra importar" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Arquivos TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Importando traduções…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Falhou em importar a memória das traduções." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importando do “%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s tradução foi importada." msgstr[1] "%s traduções foram importadas." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exportar como…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Exportando traduções…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "A exportação da memória das traduções pro \"%s\" falhou." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Resetar memória das traduções" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Você tem certeza que você quer resetar a memória das traduções?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Resetar a memória das traduções apagará irreversivelmente todas as traduções " "armazenadas nela. Você não pode desfazer esta operação." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "MT" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Memória das Traduções" #: src/prefsdlg.cpp:730 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 "" "Os extratores do código fonte são usados pra achar as strings traduzíveis " "nos arquivos do código fonte e extraí-las pra que elas possam ser traduzidas." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Extratores Personalizados:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Extratores personalizados:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "gettext do GNU" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Suporta todas as linguagens de programação reconhecidas pelas ferramentas " "gettext do GNU (PHP, C/C++, c#, Perl, Python, Java, JavaScript e outras)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Apagar extrator" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Você tem certeza que você quer apagar o extrator \"%s\"?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extratores" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Contas" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Procurar atualizações automaticamente" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Incluir versões beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "As versões beta contém novas funções e melhorias mais recentes mas podem ser " "um pouco menos estáveis." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Atualizações" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Estas configurações afetam a formatação interna dos arquivos PO. Ajuste-os " "se você tem requerimentos específicos. Ex: por causa do controle das versões." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Finais de linha:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (recomendado)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Quebra em:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Preservar a formatação dos arquivos existentes" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Avançado" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Configurações" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Preparando strings…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Pré-traduzindo da memória das traduções…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u string pré-traduzida" msgstr[1] "%u strings pré-traduzidas" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Pré-traduzindo…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d entrada foi pré-traduzida." msgstr[1] "%d entradas foram pré-traduzidas." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "As traduções foram marcadas como precisando de trabalho porque elas podem " "ser imprecisas. Você deve revisá-las por exatidão." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Combinações exatas da MT" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Combinações aproximadas da MT" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Nenhuma entrada pôde ser pré-traduzida." #: src/pretranslate.cpp:218 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 quaisquer strings similares ao conteúdo deste arquivo. Ela " "só é efetiva pra traduções semi-automáticas após o Poedit aprender o " "bastante dos arquivos que você traduziu manualmente." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Não é possível pré-traduzir sem texto de origem." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pré-traduzir" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "A pré-tradução requer que o texto de origem esteja disponível. Não funciona " "se apenas IDs sem o texto atual forem usados." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Não pode pré-traduzir a partir de um idioma desconhecido." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "A pré-tradução requer que o idioma do texto de origem seja conhecido. O " "Poedit não pôde detectá-lo neste arquivo." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Só preencher com as combinações exatas" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Por padrão os resultados imprecisos também estão incluídos mas marcados como " "precisando de trabalho. Marque esta opção pra incluir só combinações " "perfeitas." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Não marcar combinações exatas como precisando de trabalho" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Só ative se você confia na qualidade da sua MT. Por padrão todas as " "combinações da MT estão marcadas como precisando de trabalho e devem ser " "revisadas antes de usar." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "A pré-tradução automática acha combinações exatas ou imprecisas pras strings " "não traduzidas na memória das traduções e preenche as traduções delas." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Erro: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d erro ocorrido:" msgstr[1] "%d erros ocorridos:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Ocorreu um erro." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d erro ocorrido." msgstr[1] "%d erros ocorridos." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Cancelando…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Arraste Pastas ou Arquivos Aqui" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Arraste pastas ou arquivos aqui" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Adicionar Pastas…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Adicionar Pastas…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Adicionar Arquivos…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Adicionar arquivos…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Adicionar Caractere Especial…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Adicionar caractere especial…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Revelar no Descobridor" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Mostrar no Explorer" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Mostrar na Pasta" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Caminhos" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Caminhos excluídos" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Configurações avançadas da extração" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Extrair notas pros tradutores do:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Comentários pré-fixados com:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Todos os comentários" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Bandeiras adicionais do xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Palavras-chave adicionais" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Nome do projeto para o qual é a tradução" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Nome do time e endereço de email ou URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "ex: nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomendado)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Por favor salve o arquivo primeiro. Esta seção não pode ser editada até " "então." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Correção dos espaços reservados" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "O espaço reservado \"%s\" está ausente na tradução." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "O espaço reservado supérfluo \"%s\" que não está no texto de origem." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Traduções das formas no plural" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Nem todas as formas no plural estão traduzidas." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Maiúsculas/minúsculas inconsistentes" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "A tradução deve começar como uma sentença." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "A tradução deve começar com um caractere minúsculo." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Espaço em branco inconsistente" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "A tradução não começa com um espaço." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "A tradução começa com um espaço mas o texto de origem não." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Está faltando uma nova linha no fim da tradução." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "A tradução termina com uma nova linha mas o texto de origem não." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Está faltando um espaço no fim da tradução." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "A tradução termina com um espaço mas o texto de origem não." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Verificações de pontuação" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "A tradução deve terminar com \"%s\"." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "A tradução não deve terminar com \"%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "A tradução termina com \"%s\" mas o texto de origem termina com \"%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Nuvem" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Limpar Menu" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Limpar menu" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Comentário:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Atualizar" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Apagar" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Apagar o comentário" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Editar projeto" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nome do projeto:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Explorar" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Adicionar diretório a lista" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Ok" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Arquivo" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Novo…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Novo do arquivo &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Novo do Arquivo &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "A&brir…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Abrir Recentes" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Abrir recentes" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Abrir tradução da nuvem..." #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Abrir Tradução da Nuvem..." #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Janela inicial" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Janela Inicial" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Gerenciador de &catálogos" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Gerenciador de &Catálogos" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Fechar" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Salvar" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Salvar &como…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Salvar &Como…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Compilar para MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&xportar como HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Verificar atualizações…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Configurações…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Preferências" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "S&air" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Sair" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Copiar do singular" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Copiar do Singular" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "A tradução precisa de &trabalho" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "A Tradução Precisa de &Trabalho" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Editar &comentário" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Editar &Comentário" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Sugestões" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "Locali&zar…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Substituir…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Achar o próximo" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Achar o anterior" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Localizar e Substituir…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Achar o Próximo" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Achar o Anterior" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Mostrar a &ID da string" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Mostrar a &ID da String" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Mostrar avisos" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Mostrar Avisos" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Organizar pela &ordem dos arquivos" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Organizar pela &Ordem dos Arquivos" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Organizar pela &origem" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Organizar pela &Origem" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Organizar pela &tradução" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Organizar pela &Tradução" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Agrupar pelo contexto" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Agrupar Pelo Contexto" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Entradas com erros primeiro" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Entradas com erros primeiro" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Entradas não traduzidas primeiro" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Entradas Não Traduzidas Primeiro" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Mostrar ocorrências no código" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Mostrar Ocorrências no Código" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Mostrar barra lateral" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Mostrar barra de status" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Tradução" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Atualizar do código fonte" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Atualizar do Código Fonte" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sincronizar com o Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pré-&traduzir…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validar traduções" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validar traduções" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Remover Traduções Iguais as da Origem" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Remover traduções apagadas" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Remover Traduções Apagadas" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Propriedades…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Ir" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Feito e próximo" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Feito e Próximo" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Editado anteriormente" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Editado Anteriormente" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Tradução anterior" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Tradução Anterior" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Tradução seguinte" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Tradução Seguinte" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "I&nacabada anterior" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "I&nacabada Anterior" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "In&acabada seguinte" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "In&acabada Seguinte" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Forma plural anterior" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Forma Plural Anterior" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Forma plural seguinte" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Forma Plural Seguinte" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Ajuda online" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Ajuda Online" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&Manual do gettext do GNU" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&Manual do gettext do GNU" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Sobre o Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Sobre" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Configuração do extrator" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista de extensões separadas por ponto e vírgula (ex: *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Invocação:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Comando pra extrair as traduções:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Este é o comando usado pra executar o extrator.\n" "%o expande o nome do arquivo de saída, %K para a lista\n" "de palavras-chave, %F para a lista de arquivos de entrada,\n" "%C para a bandeira do conjunto de caracteres (veja abaixo)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Um item na lista de palavras-chave:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Isto será anexado na linha de comando uma vez\n" "pra cada palavra-chave. %k expande para a palavra-chave." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Um item na lista de arquivos de entrada:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Isto será anexado na linha de comando uma vez\n" "pra cada arquivo de entrada. %f expande para o nome do arquivo." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Conjunto de caracteres do código fonte:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Isto será anexado a linha de comando\n" "só se o conjunto de caracteres do código fonte foi dado. %c expande para o " "valor do conjunto de caracteres." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Propriedades da Tradução" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nome e versão do projeto:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Time do idioma:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Formas no Plural:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Usar regras padrão pra este idioma" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Usar expressão personalizada" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Saiba mais sobre as formas no plural" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Conjunto de caracteres:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Configurações Avançadas de Extração…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Configurações avançadas de extração…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Propriedades da tradução" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Caminhos das Fontes" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Caminhos das fontes" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Extrair texto dos arquivos fonte nos seguintes diretórios:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Caminho base:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Palavras-Chave das Fontes" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Palavras-chave das fontes" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Use estas palavras-chave (nomes das funções) pra reconhecer strings " "traduzíveis\n" "nos arquivos fonte:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Usar também as palavras-chave padrão pros idiomas suportados" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Aprenda sobre as palavras-chave do gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Abrir arquivo" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Salvar arquivo" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validar" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Procurar erros na tradução" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Atualizar do código" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Atualizar do Código" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Atualizar do código fonte" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Barra lateral" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Mostrar ou esconder a barra lateral" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Texto de origem anterior" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "O texto de origem antigo (antes que mudasse durante uma atualização) que a " "tradução agora imprecisa corresponde." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Notas pros tradutores" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Comentário" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Adicionar comentário" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Adicionar Comentário" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Apagar da Memória das Traduções" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Apagar da memória das traduções" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Sugestões de tradução" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Não foram achadas combinações" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Não Foram Achadas Combinações" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Esta string foi achada na memória das traduções do Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "As sugestões de tradução exigem que o texto de origem esteja disponível. " "Eles não funcionam se apenas IDs sem o texto atual forem usados." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "As sugestões de tradução requerem que o idioma do texto de origem seja " "conhecido. O Poedit não pôde detectá-lo neste arquivo." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Não pôde executar o programa: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "O arquivo TMX está mal-formado." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "O banco de dados da memória das traduções está corrompido: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Erro da memória das traduções: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Usar idioma padrão)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Seleção de idioma" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Selecione seu idioma preferido" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Você deve reiniciar o Poedit pra esta mudança ter efeito." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Não consegue criar um diretório temporário." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Não há traduções. Isso é incomum." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. 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 extraídas do código-fonte. Desta forma, ficam " "atualizados e precisos. Os tradutores geralmente usam arquivos de modelo PO " "(POT) preparados para eles pelo desenvolvedor." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Aprenda mais sobre o gettext do GNU" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "A maneira mais simples de preencher este arquivo com traduções é atualizá-lo " "a partir de um POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Atualizar do POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Pegar strings traduzíveis de um modelo POT existente." #: src/welcomescreen.cpp:165 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:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Extrair das fontes" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Configurar a extração do código fonte nas Propriedades." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versão %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Criar nova" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Criar nova tradução a partir do modelo POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Explorar arquivos" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Abrir e editar arquivos de tradução." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Traduzir projeto da nuvem" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Colabore com outras pessoas online." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Arquivos recentes" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sincronizar" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sincronizar a tradução com o Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Sobre o %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Preferências do %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Sobre o %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Serviços" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Esconder o %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Esconder Outros" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Mostrar Tudo" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Sair do %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Preferências…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Preferências..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferências..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Aplicar" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Aplicar" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Voltar" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Voltar" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Cancelar" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Limpar" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Limpar" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Copiar" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Co&rtar" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Cortar" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Editar" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Sair" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Ajuda" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Novo" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Novo" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Não" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Não" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Ok" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Abrir…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Abrir..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Abrir..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Colar" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Colar" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Preferências" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Refazer" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Atualizar" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Salvar como" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Salvar como" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Selecionar &Tudo" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Selecionar Tudo" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Desfazer" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Sim" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Sim" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Pra Cima" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Pra Baixo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Esquerda" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Direita" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Aviso: " poedit-3.6.3/locales/is.mo0000644000175100001660000017071215011674363011101 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-ªO ú‘ ’!’3’7J’‚’%•’%»’Sá’E5“l{“è“ñ“”< ” J” X”c” k” u”‚”‹”‘”™” ”²”Ĕ̔ Ó”Ý”ó” ••%•;•C• J• T•^•p•‚•‡••¢•´•½•Æ• ͕ٕí•þ•––9–S– [– f–r– y–„–™–®–½– Ì– ×–ã–þ–—3—M—d—{—ƒ—ˆ—¦—¼—Û— ä—î— ô— þ— ˜˜)˜>˜T˜h˜…˜›˜¶˜˘á˜õ˜™%™ A™"K™n™"Ž™±™È™Û™7ê™'"šJš$Yš ~šŸš¦š*­š9Øš;›#N›-r› › ©›o¶›&œH8œGœ)Éœóœ ùœÃ Ë×.æ ž-6ž!dž†ž¡žºžÓž%ëž ŸŸ(0Ÿ+YŸ…Ÿ! ŸŸÝŸñŸùŸ   , ?  D  O  ] )k • "¬  Ï  Ú "æ  ¡¡1¡;O¡ ‹¡Ž˜¡'¢.¢B¢W¢k¢$€¢9¥¢8ߢ£5£D£2^£"‘£´£ÑÅ£—¤Ÿ¤¸¤Ѥï¤ö¤¥¥4¥D¥^¥m¥‚¥4¥Ò¥æ¥ ï¥f¦Fw¦@¾¦ ÿ¦ §§4&§[§l§5Ч#À§#䧨¨'¨.¨A¨T¨f¨x¨’¨­¨ µ¨¿¨Ȩ„ר\©w©‹’©ª8ª)Sª}ª…ªŒª*‘ª¼ªתìªþª«)«5?«u««*£«7ΫX¬_¬ t¬*¬1ª¬:ܬ/­*G­r­x­’­)¬­cÖ­:® @® M®Y®p®†®š® ¯® ¼®È®×®æ® ú®¯ ¯(¯ ;¯G¯ O¯[¯b¯u¯‡¯+¯É¯Âد§›°™C±ݱã±÷± ²,²B²a²)w²¡²¹²À²0Ú² ³$³ A³ K³X³ a³ k³u³‹³‘³;®³%ê³´'´7´ H´S´ c´„´ ¢´­´¿´Ú´õ´<û´8µHGµµ™¡µ7;¶s¶¶5¦¶ܶû¶ ·· /·49·n·t·‡·š·°·Æ· á·î¸ô¸¹¹9¹H¹h¹y¹й޹.¨¹c×¹;º)Uº<º¼º$Ùº(þº'»G»O»óT»)H¼!r¼ ”¼ ¡¼¼!á¼ ½ ½ ½ *½7½N½V½ ^½h½o½½“½§½—¿½W¾]¾u¾7~¾¶¾2Ⱦû¾l¿m‡¿ õ¿ÿ¿QÀkÀ{À ‚À8£ÀCÜÀê Â& Ã"2ÃUà eà pÃ*zÃ"¥ÃÈÃ’ØÃ†kÄpòÄcÅ sÅÅ”Å"¨ÅËÅÛÅëÅ ûÅ Æ+ÆCÆ TÆ^ÆgƃƉƢÆG©ÆñÆ Ç ÇÇ%Ç 5Ç ?Ç1JÇ1|Ç®ÇÄÇ.ÚÇ ÈÈ&È8È JÈ%XÈ ~ȊȆ¦È-É=ÉFÉ LÉ ZÉ hÉ sÉ ~É ˆÉ•É ¦É?²É òÉ ÿÉ Ê#Ê :ÊGÊ2]ÊʬÊÊÊÞÊ îÊ ùÊË!Ë=ËPËlˀ˕˦˻ËËËéËýËÌ,Ì =Ì KÌ UÌ _ÌiÌyÌ™Ì®Ì ÎÌØÌàÌ øÌÍÍ,ÍEÍ\ÍtÍͤͼ͵Ó͉ΧΠ¿ÎÉÎÝÎîÎÏÏ5ÏLÏeQÏ·Ï ÒÏßÏïÏÐÐ/Ð/HÐ xÐ/…Ð µÐ ÃКÍÐBhÑz«Ñ &Ò0Ò"GÒ jÒvÒ#ŒÒ+°Ò ÜÒ éÒ>ôÒ03ÓdÓ vÓ„ÔKÔCéÔ-Õ¾6Ö8õÖ-.×S\×^°×`ØpØ)ŽØ*¸Ø8ãØhÙd…Ù êÙJ Ú=VÚE”Ú1ÚÚ$ ÛŽ1Û,ÀÛ)íÛ.Ü(FÜ(oÜ>˜Ü°×Ü/ˆÝV¸Ý<ÞnLÞŽ»ÞWJ߈¢ßŠ+àƒ¶àÕ:á1â‘BâvÔâoKã»ã ÀãÍãÜäüä åå5å Eåfå\~åbÛå3>æ"ræ •æ¶æÎæ‘âæ~tçóç¤è©è¯è Ìè&×è#þè"é>éVéeénéwé Œé-šé.Èé÷éê/êCê[êoêˆê ê©ê¾êÖê#ëê&ë6ëUënë"…ë'¨ë/Ðë_ì`ì uìì ˜ì¤ìµìÆì âìîì!í#í6í=í-Eísíƒí“íªíÈíHÌí>î{TîEÐî ï,$ïˆQïÚï àïìï0ð 3ðTð\ð(|ð¥ð¿ðÄðÊðÑð×ðßðæðíðñðõðúðññ ñ ñ (ñ 5ñ AñLñkñ~ñ ”ñ  ñ®ñ|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Icelandic Language: is_IS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: is X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (breytt) (óvistað)%d tilvik kóða%d tilvik kóða%d færsla%d færslur%d færsla var forþýdd.%d færslur voru forþýddar.%d villa%d villur%d villa kom upp.%d villur komu upp.%d villa kom upp:%d villur komu upp:Greindi %d vandamál í upprunastrengjum.Greindi %d vandamál í upprunastrengjum.%d galli fannst á þýðingunni.%d gallar fundust á þýðingunni.%i lína úr skránni '%s' var ekki lesin rétt inn.%i línur úr skránni '%s' voru ekki lesnar rétt inn.%s sniðKjörstillingar %s%s snið%s þýðing var flutt inn.%s þýðingar voru fluttar inn.&Um forritið&Um PoeditVirkj&aTil &baka&Hætta viðHre&insa&Loka&Afrita&Eyða&Lokið og næsta&Lokið og næstaBr&eyta&Skrá&Finna…&GNU gettext handbók&GNU gettext handbók&Fara&Hópa eftir samhengi&Hópa eftir samhengi&Hjálp&Nýtt&Nýtt…&Næsta >&Næsta þýðing&Næsta þýðing&Neià &lagi&Hjálp á netinu&Hjálp á netinu&Opna...&Opna…&LímaS&tillingar&Kjörstillingar…&Fyrri þýðing&Fyrri þýðing&Eiginleikar…&Henda eyddum þýðingum&Henda eyddum þýðingum&HættaEndu&rtakaSki&pta útVi&staVi&sta sem&Sýna tilvik kóða&Sýna tilvik kóðaUpphaf&sgluggiUpphaf&sgluggiÞýðin&g&AfturkallaÓþýddar &færslur fyrstÓþýddar &færslur fyrst&Uppfæra úr grunnkóða&Uppfæra úr grunnkóða&Sannreyna þýðingar&Sannreyna þýðingarS&koða&Já(Nota sjálfgefið tungumál)(Ekki skráð/ur inn)(krefst Windows 8 eða nýrra)< &Fyrra<ónefnt>Um %sAðgangurAðgangarBæta viðBæta við athugasemdBæta við skrám…Bæta við möppum…Bæta við verkefniBæta við algildistákni…Bæta við athugasemdBæta möppu við á listaBæta við skrám…Bæta við möppum…Bæta við verkefniBæta við algildistákni…Aukaleg stikkorð:Viðbótar xgettext flögg:ÃtarlegtÃtarlegar þáttunarstillingar…Ãtarlegar þáttunarstillingarÃtarlegar þáttunarstillingar…Allar þýðingaskrárAllar athugasemdirAllir strengirEinnig nota sjálfgefin stikkorð fyrir studd tungumálÃvallt setja virkni á innsláttarreitVilla kom upp.Atriði í lista yfir inntaksskrár:Atriði í lista yfir stikkorð:ÚtlitVirkjaNálgaðar samsvaranir úr þýðingaminniErtu viss um að þú viljir eyða “%s†þáttaranum?Ertu viss um að þú viljir núllstilla þýðingaminnið?Athuga sjálfvirkt með uppfærslurVistþýða sjálfkrafa MO-skrár við vistunTil bakaGrunnslóð:Beta-útgáfur innihalda nýjustu eiginleika og bætingu á þeim sem fyrir voru, en gætu verið óstöðugri.Færa allt fremstSkemmd PO-þýðingaskrá: fleirtöluform msgstr notað án msgid_pluralSkemmd PO-þýðingaskrá: eintöluform msgstr notað með msgid_pluralSkemmd skilgreining í þýðingarstreng.VeljaFletta skrámSjálfgefið eru ónákvæmar niðurstöður einnig settar inn og merktar eins og þær þarfnist lagfæringa. Merktu við þennan valkost til að einungis nákvæmar samsvaranir séu settar inn.Hætta viðHætti við…Ekki tókst að búa til bráðabirgðamöppu.Ekki tókst að ræsa forrit: %sGet ekki for-þýtt úr óþekktu tungumáli.Get ekki forþýtt án frumtexta.Byrja öll orð á hástafÞýðingas&kráastjórnÞýðingas&kráastjórnÞýðingaskráastjórnVeldu tungumál fyrir notendaviðmótStafatafla:Athuga skjal núnaYfirfara málfræði ásamt stafsetninguYfirfara stafsetningu á meðan skrifað erAthuga með uppfærslur…Athuga með villur í þýðingumAthuga með uppfærslur…Athuga stafsetninguHreinsaHreinsa valmyndHreinsa þýðinguHreinsa valmyndHreinsa þýðinguLokaTölvuskýTilvik kóðaTilvik kóðaEigðu í samstarfi við aðra á netinu.Safna upprunaskrám…Skipun til að ná í þýðingar:AthugasemdAthugasemd:Athugasemdir eru með forskeytinu:Vistþýða sem MO…Vistþýða í…Vistþýddar þýðingaskrárStilla útdrátt/þáttun upprunakóða í kjörstillingum.StaðfestingTengdu Poedit við studd þýðingakerfi á netinu til að samstilla þýðingar hnökralaust við þær sem unnið er með á þessum kerfum.AfritaAfrita úr eintöluAfrita úr frumtextaAfrita úr eintöluAfrita úr frumtextaLeiðrétta stafsetningu sjálfvirktGat ekki sótt nánari upplýsingar um Localazy-verkefni.Get ekki hlaðið inn skránni, líklega er hún skemmd.Gat ekki vistað skrána %s.Búa til nýttBúa til nýja þýðinguBúa til nýja þýðingu út frá POT-sniðmáti.Búa til nýtt þýðingarverkefniVilla í CrowdinCrowdin er þýðingakerfi á netinu, sem hjálpar til við samstarf þýðenda og umsýslu. Við notum sjálf Crowdin til að þýða Poedit yfir á mörg tungumál og kunnum við mjög vel við þetta kerfi.&KlippaSérsniðnir þáttarar:Sérsniðnir þáttarar:Sérsníða verkfærastiku…KlippaStærð gagnagrunns á diski:EyðaEyða úr þýðingaminniEyða þáttaraEyða úr þýðingaminniEyða verkefniEyða athugasemdinniEyða þýðingaverkefninuSé verkefninu eytt, eyðast engar þýðingaskrár.Ãkvarða mismun…Möppur:Viltu eyða “%s†verkefninu?Viltu endurlesa skrána af diski? Ef þú ert með óvistaðar breytingar í Poedit þá tapast þær.Viltu fjarlægja allar þýðingar sem eru eins og í upprunatextanum?Viltu fjarlægja allar þýðingar sem ekki eru lengur notaðar?Ekki vistaEkki vistaEkki birta afturEkki merkja nákvæmar samsvaranir sem ófullgerðarEkki birta afturSæki nýjustu þýðingar…Ekki er hægt að sækja þýðingar í þessu verki.Dragðu möppur eða skrár hingaðDragðu möppur eða skrár hingað&Hætta&Flytja út í HTML…BreytaBreyta &athugasemdBreyta &athugasemdBreyta athugasemdBreyta athugasemdBreyta þýðingaverkefniBreyta þýðingarverkefniVinnslaBreyta…Netfang:Fylla skjáinnFærslur í þessari þýðingaskrá eru með annan fleirtölufjölda en þann sem titekinn er í Plural-Forms línu skráarhaussinsFærslur með villum fyrstFærslur með villum fyrstFærslur með villum eru auðkenndar með rauðum lit í listanum. Nánari upplýsingar um villurnar birtast þegar slík færsla er valin.Villa við að opna skráVilla við að vista skráVilla við að hlaða inn XLIFF-skrá: %sVilla: VillurAlltNákvæmar samsvaranir úr þýðingaminniSlóðir sem á að sleppaFlytja út í TMX…Flytja út sem…Flytja út í HTML…Flytja út í TMX…Útflutningur í HTMLÚtflutningur þýðingaminnis í “%s†mistókst.Flyt út þýðingar…Ná í úr frumkóðaNá í minnispunkta fyrir þýðendur úr:Ná í texta úr upprunaskrám í eftirfarandi möppum:Næ í þýðanlega strengi úr %s skrá…Næ í þýðanlega strengi úr %s skrám…Uppsetning þáttaraÞáttararGat ekki átt samskipti við Poedit-ferli.Mistókst að ná í strengi úr grunnkóðanum.Mistókst að hlaða inn skrá með innlesnum þýðingum.Mistókst að sameina gettext þýðingaskrár.Mistókst að uppfæra þýðingaminni: %sSkráEkki hægt að opna skráSkráin '%s' finnst ekki.Skráin “%s†er ekki þýðingaskrá.Skráin '%s' er einungis lesanleg og er ekki hægt að vista hana. Vistaðu hana með öðru heiti.FinnaFinna næstaFinna fyrraFinna og skipta út…Finna í athugasemdumFinna í frumtextumFinna í þýðingumFinna næstaFinna fyrraLaga tungumálLaga tungumálLaga skráarhausinnLaga hausinnFlutter-þýðingaskrárForm %iForm %i (ónotað)GNU gettextAlmenntHTML skrárHjálpFela hliðarspjaldFela stöðustikuFela þessi skilaboðHvernig virkar samstilling við tölvuský?Auðkenni (ID)Ef þú heldur áfram að henda, verður öllum þýðingum sem merktar eru til að eyða endanlega eytt. Þú munt þurfa að þýða þær alveg aftur ef þeim verður bætt inn aftur síðar.Ef þú hefur áður bannað aðgang að skránum þínu, geturðu heimilað hann í 'Kjörstillingar kerfis > Öryggi og gagnaleynd > Gagnaleynd > Skrár og möppur'.Ef þú áður neitaðir aðgangi að skránum þínum, geturðu heimilað það í 'Kjörstillingar kerfis > Gagnaleynd og öryggi > Skrár og möppur'.HunsaHunsa há/lágstafiFlytja inn úr TMX…Flytja inn þýðingaskrár…Flytja inn úr TMX…Flytja inn þýðingaskrár…Flyt inn frá "%s"…Innflutningur þýðingaminnis mistókst.Flyt inn þýðingar…Ã: %sBeta-útgáfur meðtaldarÓsamræmi í stafstöðu (hástafir/lágstafir)Ósamræmi í bilstöfumUpplýsingar um þýðandannSetja uppÓgild skráRæsing:VandamálVandamálJSON-þýðingaskrárHaldaHeiti tungumáls eða kóðiTungumál þýðingar er það sama og upprunatungumálið.Tungumál þýðingar er ekki stillt.Tungumál þýðingar:Velja tungumálTungumálateymi:Tungumál:Síðast breyttLæra meira um gettext lykilorðLæra meira um fleirtöluformVita meiraLæra meira um %sFræðast meira um CrowdinLæra meira um GNU gettextLínaLína “%d í skránni '%s' er skemmd (ekki gild %s gögn).Línuendingar:Listi yfir skráaendingar aðskilið með semikommu (dæmi. *.cpp, *.h):Hlaða inn enskuLocalazy er sérlega sjálfvirknivætt þýðingakerfi sem gerir hverjum sem er kleift að láta þýða hugbúnað og efni yfir á fjölmörg tungumál.Ekki er hægt að vinna beint með MO-skrár í Poedit.Gera allt að lágstöfumGera allt að hástöfumÚtbúa nýja þýðingaskrá úr þessari POT-skrá.Rangt formaður haus: “%sâ€Sýsla með aðgangaSýsla…Samþætti mismun…LágmarkaHeiti þýðingaverkefnis sem þýðingin er ætluðNafn:&Næsta óklárað&Næsta ókláraðÞarfnast lagfæringaÞarfnast lagfæringaVilla í netkerfi: %s (%d)Aldrei að leyfa lista yfir strengi að yfirtaka virkni. Ef þetta er virkjað, verður þú að nota CTRL-örvar til að flakka með lyklaborði, en þú getur líka slegið inn texta samstundis án þess að þurfa að þrýsta á TAB til að breyta hvar virknin er.NýttNýtt úr &POT/PO skrá…Nýir strengirNýtt úr &POT/PO skrá…Nýir strengirNýir strengir til að þýða:Næsta fleirtalaNæsta fleirtalaNeiEngar samsvaranir fundustEkki var hægt að forþýða neinar færslur.Engar upplýsingar eru í skránni um hvar þessi strengur kemur fyrir í grunnkóða eða hve oft.Engar samsvaranir fundustEngin vandamál fundust í þýðingunni.Engin þýðingarverkefni eru skráð á aðgangnum þínum.Engar upplýsingar um notkunEkki eru öll fleirtöluform þýdd.Ekki leyfilegt, skráðu þig aftur inn.Minnispunktar fyrir þýðendurà lagiEinnEinungis virkja þetta ef þú treystir þýðingaminninu þínu. Sjálfgefið eru allar samsvaranir úr þýðingaminninu merktar eins og þær þarfnist lagfæringa, því ætti að yfirfara þær og leiðrétta áður en þær eru notaðar.Einungis fylla inn nákvæmar samsvaranirOpna þýðingu á tölvuskýi…Opna nýlegtOpna og breyta þýðingaskrám.Opna þýðingu á tölvuskýiOpna þýðingu á tölvuskýi…Opna skráOpna í ritliOpna í ritliOpna nýlegtOpna viðmiðunarskráOpna...Opna…ValkostirAnnað&Fyrri ókláruð&Fyrri ókláruðPO þýðingaskrárPOT þýðingasniðmátPOT skrár eru aðeins þýðingasniðmát og innihalda engar þýðingar. Til að þýða verður að búa til nýja PO skrá byggða á sniðmátinu.LímaLíma og samsvara stílSlóðirUppfærir úr grunnkóða í allar skrár verkefnisins.Aðgangi hafnað.Frátökutáknið “%s†vantar í þýðinguna.Ãreiðanleiki frátökutáknaOpnaðu frekar og breyttu samsvarandi PO-skrá. Þegar þú vistar hana, verður MO-skráin líka uppfærð.Endilega vistaðu skrána fyrst. Ekki er hægt að sýsla með þennan hluta fyrr en það hefur verið gert.FleirtalaFleirtöluform þýðingaFleirtöluformssniðið sem notað er í þýðingaskránni er óvenjulegt í %s.Fleirtöluform:PoeditPoedit - ÞýðingaskráastjórnPoedit lagaði sjálfkrafa ógilt efni í '%s' skránni.Poedit getur reynt að fylla inn í nýjar þýðingar með eingöngu fyrri þýðingum í skránni, eða með færslum úr þýðingaminninu þínu. Að nota þýðingaminnið er ekkert sérstaklega öflugt ef það er hálftómt, en þessi aðgerð verður smátt og smátt betri eftir því sem þýðingar bætast við.Poedit getur ekki sýnt grunnkóðann þar sem strengurinn er notaður, annað hvort þar sem skráin finnst ekki á þeim stað sem vísað var til eða að um er að ræða táknræna tilvísun sem ekki vísar á raunverulega skrá.Poedit er auðveldur þýðingaritill.Poedit gat ekki “%s†skrána.F&or-þýða…ForþýðaForþýttForþýddi %u strengForþýddi %u strengiForþýðir úr þýðingaminni…Forþýðing…Forþýðing finnur sjálfvirkt í þýðingaminni nákvæmar eða loðnar samsvaranir fyrir óþýdda strengi og setur þær inn sem þýðingar.Forþýðingar krefjast þess að frumtexti sé til staðar. Þær virka ekki ef einungis auðkenni eru notuð án raunverulegs texta.For-þýðing krefst þess að tungumál frumtextans sé þekkt. Poedit gat ekki greint það í þessari skrá.KjörstillingarStillingar...Kjörstillingar…Undirbý strengi…Vernda snið fyrirliggjandi skráaFyrri fleirtalaFyrri fleirtalaFyrri frumtextiÃður breyttÃður breyttNafn þýðingaverkefnis og útgáfunúmer:Heiti verkefnis:Verkefni:VerkefniAthuganir á greinarmerkjumHendaHenda eyddum þýðingumHættaMistókst að lesa efni skrárinnar með eftirfarandi villumeldingu: %sNýlegar skrárEndurtakaEndurlesaEndurlesa skráEndurlesa skráEftir: %dFjarlægjaFjarlægja þýðingar sem eru eins og í upprunaFjarlægja þýðingar sem eru eins og í upprunaFjarlægðir strengirFjarlægðir strengirFjarlægðir strengir (ekki lengur í notkun):Skipta útSkipt&a út ölluSkipt&a út ölluÚtskiptistrengurSkipta út…Höfuðstrenginn Plural-Forms vantar.EndurstillaNúllstilla þýðingaminniNúllstilling þýðingaminnis mun endanlega eyða öllum geymdum þýðingum úr því. Ekki er hægt að afturkalla þessa aðgerð.Birta í FinderYfirfaraVistaVist&a sem...Vist&a sem...Vista samtVista samtVista semVista sem…Vista breytingarVista skráAð vista á aðra staði er ekki leyfilegt fyrir XCLOC-skrár.Skjámyndir:Velja &alltVelja alltVeldu TMX-skrár til að flytja innVeldu möppuVeldu þýðingaskráVeldu þær þýðingaskrár sem á að flytja innVeldu sniðmát þýðingarVeldu aðaltungumálið þittSettu inn tungumálVeldu tungumálStillingarStillingar…Birta hliðarspjaldBirta stafsetningu og málfræðiBirta stöðustikuSýna &ID-auðkenni strengsBirta útskiptingarBirta verkfærastikuBirta aðvaranirBirta í skráavafraBirta í möppuBirta eða fela hliðarspjaldBirta hliðarspjaldBirta stöðustikuSýna &ID-auðkenni strengsBirta aðvaranirHliðarspjaldSkrá innSkrá útSkrá innSkrá inn í %sSkrá inn á tölvuskýsaðgangSkrá inn í CrowdinSkrá inn á tölvuskýsaðgangSkrá útEintalaSnjöll afritun/límingSnjöll strikSnjallir tenglarSnjallar gæsalappirRaða eftir s&kráaröðRaða eftir &frumtexta&Raða eftir þýðinguRaða eftir s&kráaröðRaða eftir &frumtexta&Raða eftir þýðinguStafatafla frumkóða: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.Upprunakóði ekki tiltækur.Grunnkóði fannst ekkiFrumtextiAuðkenni frumtextaFrumtexti — %sStikkorð upprunaskráaSlóðir upprunaskráaStikkorð upprunaskráaSlóðir upprunaskráaTalaStafsetningaryfirferð er óvirk, því ekki er búið að setja upp orðasafn fyrir tungumálið %s.Stafsetning og málfræðiHefja lesturStöðva lesturGeymdar þýðingar:Samhengi strengs: %sAuðkenni strengs: %sLengd strengs í stöfumLengd strengs í stöfum: þýðing | frumtextiFinna strengStrengja-háð Crowdin-verkefni eru ekki studd.ÚtskiptingarTillögurTillögur eru ekki í boði ef tungumál þýðinga er ekki rétt skilgreint. Aðrir eiginleikar eins og fleirtöluform, gætu einnig valdið vandræðum.Frátökutákninu “%s†er ofaukið og er ekki í upprunatexta.Styður öll forritunarmál sem GNU-gettext verkfærin þekkja (PHP, C/C++, C#, Perl, Python, Java, JavaScript og fleiri).SamstillaSamstilla við CrowdinSamræma þýðinguna með CrowdinSamstillingVilla í samstillinguSamstilling við Crowdin mistókst.Formvilla í Plural-Forms hauslínu ("%s").Þýð.minniTMX-skrárTaka þýðanlega strengi úr POT sniðmáti sem til er fyrir.Heiti á teymi og tölvupóstfang eða vefslóðÚtskipting textaÞýðingaminnið inniheldur ekki neina strengi sem líkjast innihaldi þessarar skráar. Þýðingaminnið er aðeins nothæft til hálf-sjálfvirkra þýðinga þegar Poedit er búið að læra nógu mikið af þýðingum sem þú ert búinn að framkvæma handvirkt.TMX-skráin er gölluð.Breytingar sem gerðar hafa verið af hinu forritinu tapast ef þú vistar.Ekki er hægt að vistþýða skrána yfir á MO-form til notkunar.Skráin inniheldur tvítekin atriði sem er ekki leyfilegt í PO-skrám og sem myndi koma í veg fyrir að hægt sé að nota skrána. Poedit lagaði þetta, en þú ættir að yfirfara þau atriði sem merkt eru til athugunar og leiðrétta þau ef þörf krefur.Ekki tókst að vista þýðingaskrá með '“%s' stafatöflu eins og tiltekið er í kjörstillingum. Skráin var þess vegna vistuð í UTF-8 og stillingum breytt í samræmi við það.Skránni hefur verið breytt. Viltu vista breytingarnar?Skráin er ekki á sniði sem Poedit þekkir.Skráin var sannlega vistþýdd yfir á MO-form , en mun líklega ekki virka rétt.Skráin var sannlega vistuð og vistþýdd yfir á MO-form , en mun líklega ekki virka rétt.Skráin var sannlega vistuð, en ekki er hægt að vistþýða hana yfir á MO-form til notkunarSkráin var sannlega vistuð.Skrána “%s†var ekki hægt að opna.Ekki var hægt að vista skrána “%sâ€.Skránni “%s†hefur verið breytt af öðru forriti.Eldri frumtextinn (áður en hann breyttist við uppfærslu) sem þýðingin (núna ónákvæm) á við.Einfaldasta leiðin til að fylla þessa skrá með þýðingum er að uppfæra hana frá POT-skrá:Þýðingin byrjar ekki á bili.Þýðingin endar með línuskiptitákni, en frumtextinn gerir það ekki.Þýðingin endar með bili, en frumtextinn gerir það ekki.Þýðingin byrjar með “%sâ€, en frumtextinn endar með “%sâ€.Þýðinguna vantar línuskiptitákn við endann.Þýðinguna vantar bil við endann.Þýðingin er tilbúin til notkunar, en %d færsla er samt óþýdd.Þýðingin er tilbúin til notkunar, en %d færslur er samt óþýddar.Þýðingaminnið er tilbúið til notkunar.Þýðingin ætti að enda með “%sâ€.Þýðingin ætti ekki að enda með “%sâ€.Þýðingin ætti að byrja sem setning.Þýðingin ætti að byrja á lágstaf.Þýðingin byrjar með bili, en frumtextinn gerir það ekki.Þýðingarnar voru merktar eins og þær þarfnist lagfæringa vegna þess að þær gætu verið ónákvæmar. Þú ættir að yfirfara þær og leiðrétta ef þörf krefur.Það eru engar þýðingar. Mjög óvenjulegt.Það kom upp vandamál við að forma skrána rétt (en hún var samt vistuð rétt).Það kom upp villa við að senda þýðingar til Localazy.Það komu upp villur við að hlaða inn skránni. Einhver gögn gæti vantað eða hafa skemmst við þetta.Þ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.Þessi JSON-skrá er ekki þýðingaskrár og er því ekki hægt að breyta í Poedit.Þessi aðgerð mun fjarlægja allar þær þýðingar sem eru nákvæmlega eins og upprunatextinn. Þetta er ekki hægt að afturkalla.Þessi þýðingaskrá er með færslum sem hafa fleirtöluform, en hún er ekki með skilgreiningu á Plural-Forms línu skráarhaussins.Þessi skrá notar auðkenni strengja í stað frumtexta. Poedit getur hlaðið inn fyrir þig enskum textum úr “%s†skránni.Þetta er skipunin sem notuð er til að ræsa þáttarann. %o stendur fyrir úttaksheiti skráar, %K fyrir lista af stikkorðum, %F fyrir lista af inntaksskrám, %C fyrir flagg stafatöflu (sjá hér að neðan).Þessi strengur fannst í þýðingaminni Poedit.Þetta mun verða viðhengt á skipanalínu, einungis ef upprunaleg stafatafla hefur verið gefið upp. %c kemur í stað gildis stafatöflunnar.Þetta mun verða viðhengt á skipanalínu, einu sinni fyrir hverja inntaksskrá. %f kemur í stað skráarheitisins.Þetta mun verða viðhengt á skipanalínu, einu sinni fyrir hvert stikkorð. %k kemur í stað stikkorðsins.AllsUmbreytingarÞýðanlegum færslum er ekki bætt handvirkt inn í Gettext kerfinu, heldur er náð í þær sjálfvirkt úr grunnkóða. Þannig eykst nákvæmni og þær eru alltaf uppfærðar. Þýðendur nota venjulega PO-sniðmát (POT) sem forritarar hafa útbúið fyrir þá.Þýða verkefni á tölvuskýiÞýtt: %d af %d (%d %%)ÞýðingTungumál þýðingarÞýðingaminniÞýðin&g þarfnast lagfæringaEiginleikar þýðingarÞýðingaskrá er þegar af nýjustu útgáfu, engar breytingar voru gerðar á strengjum.Þýðingaskrá var uppfærð með %s breytingu.Þýðingaskrá var uppfærð með %s breytingum.Gagnagrunnur þýðingaminnis er skemmdur: %s (%d).Villa í þýðingaminni: %s (%d).Þýðin&g þarfnast lagfæringaEiginleikar þýðingarÞýðingatillögurTillögur að þýðingum krefjast þess að frumtexti sé til staðar. Þær virka ekki ef einungis auðkenni eru notuð án raunverulegs texta.Tillögur að þýðingum krefjast þess að tungumál frumtextans sé þekkt. Poedit gat ekki greint það í þessari skrá.Þýðing — %sEkki var hægt að uppfæra þýðingar úr frumkóða, vegna þess að enginn kóði fannst á þeim stað sem tilgreindur er í eiginleikum þýðingaskrárinnar.TveirUTF-8 (mælt er með þessu)AfturkallaÓvænt vantar efni í XCLOC-skránni.Ómeðhöndlað frávik kom upp: %sUnix (mælt er með þessu)Óþekkt Crowdin-villa.Óþekkt villaÓþýttUppfæraSamantekt uppfærsluUppfæra alltUppfæra allar þýðingaskrár í verkefninuUppfæra allar þýðingaskrár í verkefninu?Uppfæra frá &POT skrá…Uppfæra frá &POT skrá…Uppfæra úr kóðaUppfæra frá POT skráUppfæra úr kóðaUppfæra úr grunnkóðaSamantekt uppfærsluUppfærslurUppfærsla mistókstUppfæri verkefnaskrárUppfæri þýðingarUppfæri upplýsingar um notanda…Innsending þýðinga á %s mistókst.Sendi þýðingar inn á %s…Sendi inn þýðingar…Nota sérsniðna segðNota sérsniðið letur í listum:Nota sérsniðið letur í textareitum:Nota sjálfgefnar reglur fyrir þetta tungumálNota þessi stikkorð (aðgerðaheiti) til að auðkenna þýðanlega strengi í upprunaskrám:Nota þýðingaminniSannreynaNiðurstöður prófunarÚtgáfa %sSkoða nánar…Skoða nánar…Bíð eftir auðkenningu…Aðvörun: Velkomin í PoeditÞegar frumtextar eru uppfærðirAðeins stök orðGluggiGluggarMyndir þú vilja nota ensku fyrir frumtexta?Umbrjóta textaUmbrjóta við:XLIFF-þýðingaskrárXcode efnisskrá staðfærsluJáÞú getur líka náð í þýðanlega strengi beint úr grunnkóðanum:Þú getur ekki sleppt fleiri en einni skrá í Poedit glugga.Þú hefur ekki réttindi til að lesagrunnkóðaskrár frá stað sem tilgreindur er í eiginleikum þýðingaskrárinnar.Þú þarft að endurræsa Poedit til að þessi breyting taki gildi.Nafnið þittBreytingar tapast ef þú vistar þær ekki.Nafn þitt og netfang hér að neðan eru einungis til að fylla út höfuðstrenginn Last-Translator í skráarhaus GNU-gettext-skráa.NúllAðdrátturÞarfnast lagfæringaekki eyða bráðabirgðaskrám (fyrir aflúsun)t.d. nplurals=2; plural=(n > 1);villa: nota loðna þýðingu í skráfara á atriði á tilteknu línunúmerimeðhöndla poedit:// URIAlt+Ctrl+NiðurEnterVinstriHægriShift+UppaltctrlshiftUm %sFela %sFela annaðStillingar...Hætta í %sÞjónusturBirta alltforþýða úr þýðingaminnióþekkt tungumálóstudd útgáfa (%s)aðvörun: þú@dæmi.is“%s" er ógild POT skrá.poedit-3.6.3/locales/fr.po0000644000175100001660000027623715011674363011111 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-05-13 10:16\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: fr\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Masquer ce message de notification" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ne plus afficher" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ne plus afficher" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Mettre à jour le résumé" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Mettre à jour le résumé" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Fermer" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problèmes" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Fichier" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Ligne" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problème" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Nouvelles chaînes" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Nouvelles chaînes" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Chaînes retirées" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Chaînes retirées" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Collecte des fichiers sources…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Extraction des chaînes traduisibles du fichier %s…" msgstr[1] "Extraction des chaînes traduisibles des fichiers %s…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Échec de chargement du fichier avec les traductions extraites." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Dans : %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Code source non disponible." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Les traductions n’ont pas pu être mises à jour à partir du code source, car " "aucun code n’a été trouvé à l’emplacement précisé dans les propriétés du " "fichier." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Permission refusée." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Vous n'avez pas la permission de lire les fichiers de code source à " "l'emplacement spécifié dans les propriétés du fichier." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Si précédemment vous avez refusé l‘accès à vos fichiers, vous pouvez " "l‘autoriser dans Préférences Système > Sécurité et confidentialité > " "Fichiers et dossiers." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Si précédemment vous avez refusé l‘accès à vos fichiers, vous pouvez " "l‘autoriser dans Préférences Système > Sécurité et confidentialité > " "Confidentialité > Fichiers et dossiers." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Impossible d'extraire les chaînes du code source." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Le fichier « %s » n’a pas pu être ouvert." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Mise à jour des traductions" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Détermination des différences…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Intégration des changements…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Le fichier de traduction est déjà à jour, aucune modification n‘a été " "apportée aux chaînes." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Le fichier de traduction a été mis à jour avec %s modification." msgstr[1] "Le fichier de traduction a été mis à jour avec %s modifications." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Nouvelles chaînes à traduire :" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Chaînes retirées (non utilisées) :" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "%d problème avec les chaînes sources a été détecté." msgstr[1] "%d problèmes avec les chaînes sources ont été détectés." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Voir les détails…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Voir les détails…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "En-tête mal formée : « %s »" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Fichiers de traduction PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Modèles de traduction POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Fichiers de traduction XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Catalogue de localisation Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Fichiers de traduction JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Fichiers de traduction Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Tous les fichiers de traduction" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Le fichier est dans un format non reconnu par Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Ce fichier JSON n‘est pas un fichier de traduction et ne peut pas être " "modifié dans Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "La lecture du contenu du fichier a échoué avec l‘erreur suivante : %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Le fichier « %s » est en lecture seule et ne peut être enregistré.\n" "Veuillez l’enregistrer sous un nom différent." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Impossible d’enregistrer le fichier %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Captures d‘écran :" #: src/catalog_po.cpp:134 #, 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 ligne du fichier « %s » n’a pas été chargée correctement." msgstr[1] "%i lignes du fichier « %s » n’ont pas été chargées correctement." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "La ligne %d du fichier « %s » est corrompue (données %s non valides)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Fichier PO corrompu : forme singulière msgstr utilisée conjointement avec " "msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Fichier PO corrompu : forme plurielle msgstr utilisée sans msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Échec du chargement du fichier, il est probablement endommagé." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Il y a eu des erreurs lors du chargement du fichier. Il se pourrait que des " "données soient manquantes ou corrompues." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Il y a eu un problème lors du formatage du fichier (mais il a été enregistré " "correctement)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Le fichier n’a pas pu être enregistré avec le jeu de caractères « %s » " "spécifié dans les paramètres de traduction.\n" "\n" "Le jeu UTF-8 a été utilisé en remplacement et la configuration a été " "modifiée en conséquence." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Erreur d’enregistrement du fichier" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "« %s » n’est pas un fichier POT valide." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Contenu inopinément manquant dans le fichier XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" "L'enregistrement dans un autre emplacement n'est pas pris en charge pour les " "fichiers XCLOC." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Erreur lors du chargement du fichier XLIFF : %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "version non prise en charge (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Balisage cassé dans la traduction de la chaîne." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Connecter Poedit avec les plateformes de localisation cloud prises en charge " "pour synchroniser de manière transparente les traductions qui y sont gérées." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Comment fonctionne la synchronisation dans le cloud ?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Compte" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(non connecté)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Ouvrir la traduction dans le cloud" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Gérer les comptes" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projet :" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Langue :" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Connectez-vous au compte Cloud" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Connectez-vous au compte Cloud" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Aucun projet de traduction listé dans votre compte." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Téléchargement des dernières traductions..." #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Se connecter à %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Synchronisation" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Chargement des traductions vers %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Le chargement des traductions vers %s a échoué." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Erreur de synchronisation" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Ajouter" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Erreur Crowdin inconnue." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Non autorisé, veuillez vous connecter à nouveau." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" "Les projets Crowdin basés sur des chaînes de caractères ne sont pas pris en " "charge." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Le téléchargement des traductions est désactivé dans ce projet." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Se connecter" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Se connecter" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Se déconnecter" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Se déconnecter" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "En savoir plus sur Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin est une plateforme de gestion de traduction en ligne et un outil de " "traduction collaborative. Nous utilisons nous-mêmes Crowdin pour traduire " "Poedit dans de nombreuses langues, et nous l‘adorons." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "En attente d‘authentification…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Mise à jour des informations de l‘utilisateur…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Connectez-vous sur Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Échec de la synchronisation avec Crowdin." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Erreur Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Téléchargement des traductions..." #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Copier" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "En savoir plus" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Aide" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Les fichiers MO ne peuvent pas être directement modifiés dans Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Erreur à l'ouverture du fichier" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Veuillez ouvrir et modifier le fichier PO correspondant. Lorsque vous " "l‘enregistrerez, le fichier MO sera également mis à jour." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ne pas supprimer les fichiers temporaires (à des fins de débogage)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "gérer un URI poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "aller à l’élément à la ligne donnée" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Échec de la communication avec le processus Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Une exception non gérée s'est produite : %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Sélectionner le modèle de traduction" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Fichier non valide" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Sélectionner le fichier de traduction" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit est un logiciel de traduction simple à utiliser." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "" "Il est impossible de déposer plus d’un fichier à la fois dans la fenêtre de " "Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Le fichier « %s » n’est pas un fichier de traduction." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Le fichier « %s » n’existe pas." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "La vérification orthographique est désactivée, car le dictionnaire pour le " "%s n'est pas installé." #: src/edframe.cpp:871 msgid "Install" msgstr "Installer" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Le fichier « %s » a été modifié par une autre application." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Recharger le fichier" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Voulez-vous recharger le fichier depuis le disque ? Vos modifications non " "enregistrées dans Poedit seront perdues si vous le faites." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignorer" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Recharger le fichier" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Le fichier a été modifié. Voulez-vous enregistrer les modifications ?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Enregistrer les modifications" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Vos modifications seront perdues si vous ne les enregistrez pas." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Enregistrer" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ne pas enregistrer" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ne pas enregistrer" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Les modifications apportées par l’autre application seront perdues si vous " "enregistrez." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Annuler" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Enregistrer quand même" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Enregistrer quand même" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Enregistrer sous…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Compilation…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Fichiers de traduction compilés" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Exporter en HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Fichiers HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Exportation au format HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Échec de la mise à jour" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Ouvrir le fichier de référence" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Mettre à jour depuis un fichier &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Mettre à jour depuis un fichier &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d problème trouvé dans la traduction." msgstr[1] "%d problèmes trouvés dans la traduction." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Résultats de la validation" #: src/edframe.cpp:1842 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 "" "Les entrées comportant des erreurs ont été marquées en rouge dans la liste. " "Sélectionnez-les pour en afficher les détails." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Le fichier a été enregistré avec succès." #: src/edframe.cpp:1854 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é avec succès et compilé au format MO, mais il ne " "fonctionnera probablement pas correctement." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Le fichier a été enregistré avec succès, mais il ne peut ni être compilé au " "format MO ni être utilisé." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Le fichier a été compilé au format MO, mais il ne fonctionnera probablement " "pas correctement." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Le fichier ne peut pas être compilé au format MO et être utilisé." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Aucun problème trouvé dans la traduction." #: src/edframe.cpp:1894 #, 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] "" "La traduction est prête à être utilisée, mais %d entrée n’est pas encore " "traduite." msgstr[1] "" "La traduction est prête à être utilisée, mais %d entrées ne sont pas encore " "traduites." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "La traduction est prête à être utilisée." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "Poedit a automatiquement corrigé le contenu non valide du fichier « %s »." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Le fichier contenait des éléments dupliqués, ce qui n’est pas autorisé dans " "les fichiers PO et empêcherait le fichier d'être utilisé. Poedit a résolu le " "problème, mais vous devriez examiner les traductions de tous les éléments " "marqués comme nécessitant une révision et les corriger si nécessaire." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "La langue de traduction n’est pas définie." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Définir la langue" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 correctement. Les autres fonctionnalités, comme les formes " "plurielles, peuvent également être affectées." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "La langue de traduction est identique à la langue source." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Corriger la langue" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Corriger la langue" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Ce fichier possède des entrées au pluriel, mais aucune en-tête Plural-Forms " "n’est configurée." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Les entrées dans ce fichier ont un nombre de formes plurielles différent de " "celui indiqué dans l’en-tête Plural-Forms" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "L’en-tête requise Plural-Forms est absente." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Erreur de syntaxe dans l’en-tête Plurial-Forms (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Corriger l'en-tête" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Corriger l’en-tête" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "Les formes plurielles utilisées par le fichier sont inhabituelles pour %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Réviser" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Aimeriez-vous utiliser l‘anglais pour le texte source ?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Ce fichier utilise des identifiants de chaîne au lieu du texte source. " "Poedit peut charger des textes en anglais à partir du fichier \"%s\" pour " "vous." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Charger l‘anglais" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduit : %d de %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Restant : %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d erreur" msgstr[1] "%d erreurs" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrée" msgstr[1] "%d entrées" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (non enregistré)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (modifié)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Échec de la mise à jour de la mémoire de traduction : %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Le fichier « %s » n'a pas pu être enregistré." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Retirer les traductions identiques à la source" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Voulez-vous retirer toutes les traductions qui sont identiques au texte " "source ?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Cette action supprimera toutes les traductions qui correspondent exactement " "au texte source. Cela ne peut pas être annulé." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Conserver" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Retirer" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Nettoyer les traductions supprimées" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "" "Voulez-vous supprimer toutes les traductions qui ne sont plus utilisées ?" #: src/edframe.cpp:2879 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 "" "Si vous validez l’épuration, toutes les traductions marquées comme " "supprimées seront définitivement effacées. Il faudra les traduire à nouveau " "si elles sont réintroduites par la suite." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Nettoyer" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Copier depuis le texte original" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Copier à partir du texte original" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Effacer la traduction" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Effacer la traduction" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Modifier le commentaire" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Modifier le commentaire" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Occurrences dans le code" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Occurrences dans le code" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Masquer le panneau latéral" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Afficher le panneau latéral" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Masquer la barre d’état" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Afficher la barre d’état" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Longueur de la chaîne en caractères : traduction | source" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Longueur de la chaîne en caractères" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Texte original" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singulier" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Pluriel" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Traduction" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pré-traduit" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "À réviser" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "À réviser" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Créer une nouvelle traduction" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Faire une nouvelle traduction à partir de ce fichier POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID du texte source" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Tout" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forme %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Formulaire %i (inutilisé)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Zéro" #: src/editing_area.cpp:788 msgid "One" msgstr "Un" #: src/editing_area.cpp:790 msgid "Two" msgstr "Deux" #: src/editing_area.cpp:804 msgid "Other" msgstr "Autre" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Contexte de chaîne : %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identifiant de chaîne : %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "format %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Traduction — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Texte original — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "langue inconnue" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Erreur réseau : %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Erreur inconnue" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Échec de la fusion des catalogues gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Ouvrir dans l’Éditeur" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Ouvrir dans l'éditeur" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Aucune information sur les occurrences de cette chaîne dans le code source " "n’est fournie dans le fichier." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Aucune information d’utilisation" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d occurrence du code" msgstr[1] "%d occurrences du code" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Code source introuvable" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit ne peut pas afficher le code source où la chaîne est utilisée, parce " "que le fichier n'est soit pas disponible dans l'emplacement référencé, soit " "il s'agit d'une référence symbolique qui ne pointe pas vers un vrai fichier." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Impossible d’ouvrir le fichier" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit n’a pas pu ouvrir le fichier « %s »." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Trouver" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Remplacer" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Options" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignorer la casse" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Boucler" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Mots entiers uniquement" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Trouver dans les textes originaux" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Trouver dans les traductions" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Rechercher dans les commentaires" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Remplacer &tout" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "&Tout remplacer" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Remplacer" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Précédent" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Suivant >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Chaîne à rechercher" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Chaîne de remplacement" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "avertissement : " #: src/gexecute.cpp:171 msgid "error: " msgstr "erreur : " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Nom ou code de la langue" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Langue de traduction" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Langue de la traduction :" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Toutes les chaînes" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Impossible de télécharger les détails du projet Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" "Il y a eu une erreur lors du téléversement des traductions vers Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projets" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "En savoir plus sur %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy est une plateforme de localisation hautement automatisée permettant " "à quiconque de traduire facilement ses produits et son contenu en plusieurs " "langues." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Ajouter un projet" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Ajouter un projet" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Gestionnaire des catalogues" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Modifier…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Créer un nouveau projet de traduction" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Supprimer le projet" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Modifier le projet" #: src/manager.cpp:176 msgid "Update all" msgstr "Tout mettre à jour" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Mettre à jour tous les catalogues du projet" #: src/manager.cpp:378 msgid "Total" msgstr "Total" #: src/manager.cpp:379 msgid "Untrans" msgstr "Non traduit" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "À réviser" #: src/manager.cpp:381 msgid "Errors" msgstr "Erreurs" #: src/manager.cpp:382 msgid "Last modified" msgstr "Dernière modification" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Choisir un répertoire" #: src/manager.cpp:433 msgid "Directories:" msgstr "Répertoires :" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Voulez-vous supprimer le projet « %s » ?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Supprimer le projet" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "La suppression du projet ne supprimera aucun fichier de traduction." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Confirmation" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Mettre à jour tous les catalogues dans ce projet ?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" "Effectue une mise à jour à partir du code source sur tous les fichiers du " "projet." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Mise à jour des catalogues de projets" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Rechercher des mises à jour…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Gestionnaire de catalogues" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Préférences…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Édition" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Annuler" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Refaire" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Coller en conservant la mise en forme" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Supprimer" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Orthographe et Grammaire" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Afficher l'orthographe et la grammaire" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Vérifier le document maintenant" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Vérifier l'orthographe lors de la frappe" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Vérifier la grammaire et l'orthographe" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Corriger l’orthographe automatiquement" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Substitutions" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Afficher les substitutions" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Copier/coller intelligent" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Guillemets intelligents" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Tirets intelligents" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Liens intelligents" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Texte de remplacement" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformations" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Mettre en majuscules" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Mettre en minuscules" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Mettre en majuscule" #: src/menus.cpp:237 msgid "Speech" msgstr "Dicter" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Commencer à dicter" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Arrêter de dicter" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Affichage" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Afficher la barre d'outils" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Personnaliser la barre d‘outils…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Passer en mode plein écran" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Fenêtre" #: src/menus.cpp:263 msgid "Minimize" msgstr "Réduire" #: src/menus.cpp:264 msgid "Zoom" msgstr "Agrandir" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Bienvenue dans Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Tout passer au premier plan" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informations sur le traducteur" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nom :" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Votre nom" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-mail :" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "vous@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Votre nom et votre adresse e-mail sont uniquement utilisés pour définir l’en-" "tête Last-Translator des fichiers de GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Modification" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Compiler automatiquement le fichier MO lors de l'enregistrement" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Vérifier l’orthographe" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Toujours activer la zone de saisie du texte" #: src/prefsdlg.cpp:211 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 "" "Ne laisse jamais le focus à la liste des chaînes. Si activé, il vous faut " "utiliser les touches Ctrl+flèches pour une navigation au clavier, mais vous " "pouvez aussi taper du texte directement, sans avoir à utiliser la touche de " "tabulation pour changer le focus." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Apparence" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Utiliser une police personnalisée :" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Utiliser une police personnalisée pour les champs texte :" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Changer la langue de l’interface" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(nécessite Windows 8 ou plus récent)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Général" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Utiliser la mémoire de traduction" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Gérer…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Lors de l’actualisation depuis les sources" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "remplissage approx. dans le fichier" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pré-traduire avec la MT" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit peut essayer de remplir les nouvelles entrées uniquement depuis les " "précédentes traductions de ce fichier ou depuis votre mémoire de traduction. " "Pour que la MT soit performante, il faut qu’elle contienne le plus possible " "de traductions, car à moitié vide elle ne sera pas efficace." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Traductions stockées :" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Taille de la base de données sur le disque :" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importer les fichiers de traduction…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importer les fichiers de traduction…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importation depuis un TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importer un TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Exportation vers un TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Exportation vers un TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Réinitialiser" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Sélectionner les fichiers de traduction à importer" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Sélectionner les fichiers TMX à importer" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Fichiers TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Importation des traductions…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "L'importation de la mémoire de traduction a échoué." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importation depuis « %s »…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s traduction a été importée." msgstr[1] "%s traductions ont été importées." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exporter en tant que…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Exportation des traductions…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "L’exportation de la mémoire de traduction vers « %s » a échoué." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Réinitialiser la mémoire de traduction" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Voulez-vous vraiment réinitialiser la mémoire de traduction ?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "La réinitialisation de la mémoire de traduction supprimera définitivement " "toutes les traductions qui y sont stockées. Cette opération est irréversible." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "MT" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Mémoire de traduction" #: src/prefsdlg.cpp:730 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 "" "Les extracteurs de code source sont utilisés pour rechercher et extraire les " "chaînes traduisibles des fichiers du code source afin de les traduire." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Extracteurs personnalisés :" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Extracteurs personnalisés :" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Prend en charge tous les langages de programmation des outils GNU gettext " "(PHP, C/C++, C#, Perl, Python, Java, JavaScript et autres)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Supprimer l’extracteur" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Êtes-vous sûr de vouloir supprimer l’extracteur « %s » ?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extracteurs" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Comptes" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Rechercher automatiquement les mises à jour" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Inclure les versions bêta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Les versions bêta contiennent les dernières nouveautés et améliorations, " "mais elles peuvent être un peu moins stables." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Mises à jour" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Ces paramètres modifient la mise en forme interne des fichiers PO. Ajustez-" "les si vous avez des exigences spécifiques, par exemple en raison du " "contrôle de version." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Fins de ligne :" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (recommandé)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Passer à la ligne à :" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Préserver le formatage des fichiers existants" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Avancés" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Paramètres" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Préparation des chaînes…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Pré-traduction depuis la mémoire de traduction…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u chaîne pré-traduite" msgstr[1] "%u chaînes pré-traduites" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Pré-traduction…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d entrée a été pré-traduite." msgstr[1] "%d entrées ont été pré-traduites." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Les traductions ont été marquées comme à réviser car il est possible quelles " "soient imprécises. Vous devriez vérifier leur exactitude." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Correspondances exactes de la TM" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Correspondances approximatives de la TM" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Aucune entrée n’a pu être pré-traduite." #: src/pretranslate.cpp:218 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 "" "La MT ne contient aucune chaîne identique au contenu de ce fichier. C'est " "effectif uniquement pour des traductions semi-automatiques après que Poedit " "ait appris suffisamment de fichiers traduits manuellement." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Impossible de pré-traduire sans texte source." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pré-traduction" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "La pré-traduction nécessite que le texte source soit disponible. Elle ne " "fonctionne pas si seuls les ID, sans le texte réel, sont utilisés." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Impossible de pré-traduire depuis une langue inconnue." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "La pré-traduction nécessite que la langue du texte source soit connue. " "Poedit n’a pas pu la détecter dans ce fichier." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Remplir uniquement les correspondances exactes" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Par défaut, les résultats inexacts sont également inclus, mais marqués comme " "nécessitant du travail. Cochez cette option pour n'inclure que les " "correspondances parfaites." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Ne pas marquer les correspondances exactes comme à réviser" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "À activer uniquement si vous êtes sûr de la qualité de votre MT. Par défaut, " "toutes les correspondances de la MT sont marquées comme à réviser et doivent " "être examinées avant utilisation." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "La pré-traduction automatique trouve dans la MT des correspondances exactes " "ou approximatives pour les entrées non traduites afin de les remplir." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Erreur : " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d erreur est survenue :" msgstr[1] "%d erreurs sont survenues :" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Une erreur est survenue." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d erreur est survenue." msgstr[1] "%d erreurs sont survenues." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Annulation…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Glisser ici les dossiers ou les fichiers" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Glisser ici les dossiers ou les fichiers" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Ajouter des dossiers…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Ajouter des dossiers…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Ajouter des fichiers…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Ajouter des fichiers…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Ajouter un caractère générique…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Ajouter un caractère générique…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Afficher dans le Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Afficher dans l’Explorateur" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Afficher dans le dossier" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Chemins" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Chemins exclus" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Réglages avancés d’extraction" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Extrait les notes pour les traducteurs à partir de :" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Les commentaires sont précédés par :" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Tous les commentaires" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Indicateurs additionnels xgettext :" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Mots clés supplémentaires" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Nom du projet de traduction" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Nom de l’équipe et adresse e-mail ou URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p. ex. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (recommandé)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Veuillez d’abord enregistrer le fichier. Cette section ne peut pas être " "modifiée avant." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Exactitude des textes indicatifs" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Le texte indicatif « %s » est absent dans la traduction." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Texte indicatif superflu « %s » qui n‘est pas dans le texte source." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Traductions des formes plurielles" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Toutes les formes plurielles ne sont pas traduites." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Incohérence majuscule/minuscule" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "La traduction devrait commencer comme une phrase." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "La traduction devrait commencer par un caractère en minuscule." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Espace incohérent" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "La traduction ne commence pas par une espace." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "La traduction commence par une espace, mais pas le texte source." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Il manque un saut de ligne à la fin de la traduction." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" "La traduction se termine par un saut de ligne, mais pas le texte source." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Il manque une espace à la fin de la traduction." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "La traduction se termine par une espace, mais pas le texte source." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Vérifications de ponctuation" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "La traduction devrait se terminer par â€%sâ€." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "La traduction ne devrait pas se terminer par â€%sâ€." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "La traduction se termine par â€%sâ€, mais le texte source se termine par â€%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Cloud" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Effacer le menu" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Effacer le menu" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Commentaire :" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Mettre à jour" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Supprimer" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Supprimer le commentaire" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Modifier le projet" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nom du projet :" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Parcourir" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Ajouter un répertoire à la liste" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Fichier" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Nouveau…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nouveau à partir d’un fichier &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nouveau à partir d’un fichier &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Ouvrir…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Récemment ouverts" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Ouvrir récents" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Ouvrir la traduction dans le cloud…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Ouvrir la traduction dans le cloud…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Fenêtre de démarrage" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Fenêtre de démarrage" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Gestion des &catalogues" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Gestionnaire des &catalogues" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Fermer" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Enregistrer" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Enregistrer &sous…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Enregistrer &sous…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Compiler le MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&xporter au format HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Rechercher des mises à jour…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Paramètres…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Préférences" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Quitter" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Quitter" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Copier du singulier" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Copier du singulier" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Traduction nécessitant une &révision" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Traduction nécessitant une &révision" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Modifier le &commentaire" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Modifier le &commentaire" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Suggestions" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Rechercher…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Remplacer…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Rechercher le suivant" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Rechercher le précédent" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Rechercher et remplacer…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Rechercher le suivant" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Chercher le précédent" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Afficher l‘&ID de la chaîne" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Afficher l‘&ID de la chaîne" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Afficher les avertissements" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Afficher les avertissements" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Trier par &fichier" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Trier par &fichier" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Trier par &source" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Trier par &source" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Trier par &traduction" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Trier par &traduction" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Grouper par contexte" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Grouper par contexte" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Entrées avec erreurs en premier" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Entrées avec erreurs en premier" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Entrées &non traduites en premier" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Entrées &non traduites en premier" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Afficher les occurrences du code" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Afficher les occurrences du code" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Afficher le panneau latéral" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Afficher la barre d’état" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Traduction" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Mise à jour depuis le code source" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Mise à jour depuis le code source" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Synchroniser avec Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pré-&traduire…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Valider les traductions" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Valider les traductions" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Retirer les traductions identiques à la source" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Purger les traductions supprimées" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Purger les traductions supprimées" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Propriétés…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Aller à" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Appliquer et continuer" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Appliquer et continuer" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Modifié précédemment" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Modifié précédemment" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Traduction &précédente" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Traduction &précédente" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Traduction suiva&nte" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Traduction suiva&nte" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Incomplet p&récédent" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Incomplet p&récédent" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Incomplet suivan&t" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Incomplet suivan&t" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Forme plurielle précédente" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Forme plurielle précédente" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Forme plurielle suivante" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Forme plurielle suivante" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Aide en ligne" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Aide en ligne" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Manuel de &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Manuel de &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&À propos de Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&À propos" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Installation de l’extracteur" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "" "Liste des extensions séparées par des points-virgules (ex. *.cpp;*.h) :" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Appel :" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Commande pour extraire des traductions :" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Il s'agit de la commande utilisée pour lancer l'extracteur.\n" "%o se développe au nom du fichier de sortie, %K pour lister\n" "les mots-clés, %F pour lister les fichiers d'entrée,\n" "%C pour le jeu de caractères (voir ci-dessous)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Un élément de la liste des mots clés :" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Ce sera attaché à la ligne de commande une fois\n" "pour chaque mot-clé. %k se développe au mot-clé." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Un élément de la liste des fichiers d’entrée :" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Ce sera attaché à la ligne de commande une fois\n" "pour chaque fichier d'entrée. %f se développe au nom de fichier." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Jeu de caractères du code source :" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Ce sera attaché à la ligne de commande\n" "seulement si le code source du jeu de caractères a été donné. %c se " "développe à la valeur du jeu de caractères." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Propriétés de traduction" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nom et version du projet :" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Équipe de langue :" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Formes plurielles :" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Utiliser les règles par défaut de cette langue" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Utiliser une expression personnalisée" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "En savoir plus sur les formes plurielles" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Jeu de caractères :" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Réglages avancés d’extraction…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Réglages avancés d’extraction…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Propriétés de traduction" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Chemins des sources" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Chemins des sources" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Extraire le texte des répertoires suivants :" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Chemin de base :" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Mots-clés sources" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Mots clés sources" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Utiliser ces mots-clés (noms de fonctions) pour reconnaître les chaînes\n" "traduisibles dans les fichiers sources :" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" "Utilisez également des mots-clés par défaut pour les langues prises en charge" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "En savoir plus sur les mots clés gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Ouvrir le fichier" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Enregistrer le fichier" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Valider" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Vérifier les erreurs dans la traduction" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Mettre à jour depuis le code" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Mettre à jour depuis le code" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Mettre à jour depuis le code source" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Panneau latéral" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Texte source précédent" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "L’ancien texte source (avant sa modification lors d’une mise à jour) auquel " "correspond la traduction approximative." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Notes pour les traducteurs" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Commentaire" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Ajouter un commentaire" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Ajouter un commentaire" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Supprimer de la mémoire de traduction" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Supprimer de la mémoire de traduction" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Suggestions de traduction" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Aucune correspondance trouvée" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Aucune correspondance trouvée" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Cette chaîne a été trouvée dans la mémoire de traduction de Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Les suggestions de traduction nécessitent que le texte source soit " "disponible. Elles ne fonctionnent pas si seuls des ID, sans texte réel, sont " "utilisés." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Les suggestions de traduction nécessitent que la langue du texte source soit " "connue. Poedit n'a pas pu la détecter dans ce fichier." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Impossible d’exécuter le programme : %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Le fichier TMX est mal formé." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" "La base de données de la mémoire de traduction est corrompue : %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Erreur de la mémoire de traduction : %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Utiliser la langue par défaut)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Sélection de langue" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Sélectionnez votre langue de préférence" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Vous devez redémarrer Poedit pour que ce changement prenne effet." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Impossible de créer le répertoire temporaire." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Il n’y a aucune traduction. Ce n’est pas courant." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. 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 " "Gettext, mais sont automatiquement extraites du code source. De cette façon, " "elles restent à jour et exactes. Les traducteurs utilisent généralement des " "fichiers de modèles PO (POT) préparés à leur attention par le développeur." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "En savoir plus sur GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "La façon la plus simple de remplir ce fichier avec des traductions est de le " "mettre à jour à partir d‘un fichier POT :" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Mettre à jour depuis un POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Utiliser les chaînes traduisibles d'un modèle POT existant." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Vous pouvez également extraire les chaînes traduisibles directement à partir " "du code source :" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Extraire depuis les sources" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Configurer l’extraction du code source dans les Propriétés." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Version %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Créer" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Créer une nouvelle traduction à partir d’un modèle POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Parcourir les fichiers" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Ouvrir et modifier les fichiers de traduction." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Traduire le projet cloud" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Collaborer avec d‘autres personnes en ligne." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Fichiers récents" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Synchroniser" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Synchroniser la traduction avec Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "À propos de %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Préférences de %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "À propos de %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Services" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Masquer %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Masquer le reste" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Tout afficher" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Quitter %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Préférences…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Préférences..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Préférences…" #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Appliquer" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Appliquer" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "Retour" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Retour" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "Annuler" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "Effa&cer" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Effacer" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Copier" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Couper" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Couper" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Modifier" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Quitter" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Aide" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nouveau" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Nouveau" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Non" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Non" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Ouvrir…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Ouvrir..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Ouvrir..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Coller" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Coller" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Préférences" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Rétablir" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Actualiser" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Enregistrer sous" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Enregistrer sous" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Tout sélectionner" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Tout sélectionner" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "Ann&uler" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "Oui" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Oui" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Maj+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Entrée" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Haut" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Bas" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Gauche" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Droite" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "maj" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Avertissement : " poedit-3.6.3/locales/uz.mo0000644000175100001660000010120215011674352011106 Þ•¯” A $ $ $($<$JO$gš$ % %% "%0%7%=%E%L%S%Y%a%p%%…%‹%Ÿ%³%·%É%Û%á%æ%î%ö%&&& "& /&<&E& L&Y&o&…&¡&½&Ã&É&Ï&Ø&Þ&ú&'-'D'J'O'f' „' 'š'£'¬' °' ¼'È'â'ö'ÿ''(=(Z( t((7…(6½(ô())>) C)]N)¬)D¿)$*)*0*"7*Z* u*€*’*¤*µ*È*Ñ*ä*++#1+U+d+j+|+Ž+”+ ¯+Ð+ Ù+ç+/, 2,?,D,W,m,€,–,µ,Î,å, -----1-H-O-`- s-?€- À- Î-Û-î-".5$.Z.`. e. s. . Ž. ›.¨.¹.Á.É.Ð.â.ü.u/Œ/Ÿ/ ±/¼/ Ë/Ø/<í/*0 :0*E00p0!¡0'Ã0ë0ð0(1T811 ’1 œ1ª1»1Ð1 å1 ï1 ý1 22&252=2 E2P2 U2b2r2‘2©”2 >3J3 `33 ‰3 –3¢3;§3ã34 4 4+4H4 a4l4:…4 À4<Î4. 5:5J5Z5u5Œ5*•5À5Æ5×5»è5¤6 ¨6´6Å6Ö6Ù6ê6'û6%#7I7L7P7 k7w7†7•77¥7­7³7È7Ý7ò7 88£8¹8¿8nÒ8EA9‡9Ž9•9@¯9,ð9 : +:7:F:%U:{::¥: ¿:Í:Ö:Ü:÷:ü:; ;;;(2;[;a;zz;õ;ü;< < < !< -<8<I<"a<„< < ¿< Ì< Ù<æ<== #=0= I=V=f=n=v==‡=š=£=¬= ½= Ê= Ö=ã=÷=>>0>@>U>†j>ñ> ??+? AwAˆA8KBR„Bc×BQ;CC:¨CŽãC!rD,”DLÁD]E…lE«òE7žFmÖF_DG[¤GHHH 3H?HTHgH~H‘H•H©H ®HÏHâH êH"õHI(I7I?IOIeI‚IœI²IÈI#åIV J`JwJ€J “JžJ¼JÎJßJæJ îJúJKKHK5hK7žK ÖK3àKaLvL{L.€L ¯LÐLðLMM,M?MQMdMxMˆM™M«M¾M×MïM N*NBN[NtN!…N¥§NMPaP!pP’PG¨PbðP SQ ]QkQsQ ‚QŽQ –Q ¤Q®Q ¶Q ÃQÐQåQ úQR R(R DRNRiR„RŒR“R šR¥R¶RÇRÏRÓRâR ñR üR SS%S$6S$[S€S‰S™S¢S µSÀSÝSúST 5TCTGT,eT ’T T «TµT ¾TÈTÙT$êTU ,U9U6QU#ˆU$¬U ÑU ÞU)éUCV%WV1}V¯V¶VvÅVZ kZ vZ#‚Z!¦Z#ÈZ!ìZ([7[R[$i[Ž[£[«[ Å[$Ñ[ ö[\\/\H?\ ˆ\ ”\ \¸\(Ð\@ù\:] C]N]b]v]‰]œ]°]Ä] Ó] á] ï]^,^rH^»^Ú^ð^ø^_(_>=_|_ ”_+¡_@Í_.`!=`_`d`'|`Y¤`þ`aa+a@aYanaa”aªa&Àaça bb b#b*b@b&Yb€b½ƒbAc^csc Žcšc ­c¸c%Éc ïc ýc dd*)d&Td{d)d@¹dúdM eJWe¢eµeÇeäe ÿe ff%f;f"Qftgzg‰g¢g»g Âg Ìg5Ög" h/h2h16hhh}h“h ©h ³h ½hÈhÏhåhûhi¨&i ÏiÙi ÷ij_jDsj ¸jÂj"ÉjSìj1@krk„k —k¥k%´kÚkók l &l3l;l#Dlhlpl l ‰l –l£l8¶lïl÷l‚m•m¦m®mÀm×mðmnn1n(Inrn n®nÀnÒn!ën o)oEo'doŒo¥o ÁoËoÒoÚoáoøopp #p 1p?p!Vpxp“p!°pÒpíp q$q´q ÌqØqêqrrRrprƒr—r¯rÅr Ør år‹ðr |sˆs#¢sÆsÖs)ïs8tRt<Ut’t´¦tW[uO³u]vZav¼v&Óv—úv!’w´wAÔw]xtx×y5êyr zT“zQèz:{?{ O{p{ x{…{–{¨{·{¼{Õ{1æ{|0|C|(X||—|ª|¹|Ð|*ç|"}5}(Q})z}0¤}wÕ}M~m~}~ ˜~£~À~Ú~ó~ø~  $;m>2¬Qß1€5:€qp€†æ€6$>)c©¯¶¼ÃÌÓÚÞã éó‚ ‚ '‚ 5‚?‚W‚f‚À:ªÔ€Y=½8©˜`fIAV UÊú‡,Q¨Æl-¿j ^~ݲ|– ’ ·¯Qü«¸M»ñÚ6>à¡è „ùˆ{Ï#o©®}J\*¦ܯ'Œ"tûÐZ1™ 7m&”6‚˜ýd"9b僆mo¥ÞRXa§¬Ù.¤î8±äL(°«TÓˆ†šŽÁõS¬ß(_³B¢3[ïÉ&´KNΑY ¦?)~y3 T–%5+‡›CA'ó”GÃ!Â…VLuxíÖŠi/ö,NvÅe2‹ y0 ’1£;`“së<ª¹ zhòHCO¼ðx_¾$ƒE#žznS—§º£rÛZ¥Õi‰}fâ™=›׋…\­h]P¤çu¢gþU4€j:s IBFP@­WD¨F9㮑lG/RœžÌMcpæ•ÈØ)^>á]qr¶ŸŠ4-|tnÍDÄqôÒK$%ǵ—JEk;paÑ‚ì {b H[+ŽéêvO0„X“W?*2w•w.Œ<5Ÿe7ÿ÷!kd¡Ëœ‰@cgšø (modified) (unsaved)%d entry%d entries%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Paste&Preferences&Previous Translation&Previous translation&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Save&Save as&Undo&Untranslated Entries First&Untranslated entries first&Validate Translations&Validate translations&View&Yes(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountsAddAdd CommentAdd commentAdd directory to the listAdditional keywordsAdvancedAll Translation FilesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseCancelCannot create temporary directory.Cannot execute program: %sCapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck spellingClearClear TranslationClear translationCloseCollecting source files…Command to extract translations:Comment:Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationCopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t save file %s.Create new translationCreate new translations projectCrowdin errorCu&tCustomize Toolbar…CutDatabase size on disk:DeleteDelete extractorDelete the projectDirectories:Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t show againDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileEverythingExcluded pathsExport as…Extract from sourcesExtract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerForm %iGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageIDIf 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.Ignore caseInclude beta versionsInformation about the translatorInstallInvalid fileInvocation:KeepLanguage of the translation is the same as source language.Language of the translation:Language selectionLanguage:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMalformed header: “%sâ€Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNever 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.NewNew stringsNext Plural FormNext plural formNoNo Matches FoundNo matches foundNo problems with the translation found.Not authorized, please sign in again.OKOneOnly fill in exact matchesOpen RecentOpen in EditorOpen in editorOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPermission denied.Please open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit is an easy to use translation editor.Pre-translatePreferencesPreferences...Preferences…Preserve formatting of existing filesPrevious Plural FormPrevious plural formProject name and version:Project name:Project:PurgePurge deleted translationsQuitRedoRefreshRemaining: %dReplaceReplacement stringRequired header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.ReviewSaveSave asSave as…Save changesSelect &AllSelect AllSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageShow SidebarShow Spelling and GrammarShow Status BarShow SubstitutionsShow ToolbarShow or hide the sidebarShow sidebarShow status barSidebarSign InSign OutSign inSign in to CrowdinSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source textSource text — %sSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTake translatable strings from an existing POT template.Text ReplacementThe 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.The file cannot be compiled into the MO format and used.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†has been changed by another application.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation propertiesTranslation — %sTwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)UntransUpdate allUpdate all catalogs in the projectUpdate from POTUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhole words onlyWindowWindowsWrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);go to item at given line numberhandle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allunknown language“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-23 10:16 Last-Translator: Language-Team: Uzbek Language: uz_UZ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: uz X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (o‘zgartirilgan) (saqlanmagan)%d ta kiritilgan%d ta kiritilgan%d ta xato%d ta xatoTarjima bilan %d ta muammo topildi.Tarjima bilan %d ta muammo topildi."%2$s" faylining %1$i satri to'g'ri yuklanmadi."%2$s" faylining %1$i satrlari to'g'ri yuklanmadi.%s format%s sozlamalarH&aqidaPoedit h&aqida&Qo‘llash&Orqaga&Bekor qilish&Tozalash&Yopish&Nusxa olish&O‘chirish&Tayyor va keyingisi&Tayyor va keyingisi&Tahrirlash&Fayl&GNU gettext yo‘riqnomasi&GNU gettext yo‘riqnomasi&O‘tishMatn bo‘yicha &guruhlashMatn bo‘yicha &guruhlash&Yordam&Yangi&Yangi&Keyingi >&Keyingi tarjima&Keyingi tarjima&Yo‘q&OK&Onlayn yordam&Onlayn yordam&Ochish...&Qo‘yish&Parametrlar&Oldingi tarjima&Oldingi tarjima&O‘chirilgan tarjimalarni tozalash&O‘chirilgan tarjimalarni tozalashChi&qish&Qayta bajarish&Saqlash&Boshqacha saqlash&QaytarishAvval &tarjima qilinmaganlarAvval &tarjima qilinmaganlarTarjimalarni &to‘g‘rilashTarjimalarni to‘g‘rilash&Ko‘rinishi&Ha(Standart tildan foydalanish)(Windows 8 yoki yangirog‘i talab qilinadi)< &Oldingi%s haqidaHisoblarQoÊ»shishSharh qo‘shishSharh qo‘shishRo‘yxatga direktoriyani qo‘shishQo‘shimcha kalit so‘zlarQo‘shimchaBarcha tarjima fayllariFokusni doimo matnni kiritish maydoniga o‘zgartirishKirish fayllari ro'yxatida element:Kalit so‘zlar ro‘yxatidagi band:Ko‘rinishiQo‘llash“%s†ajratkichni o‘chirmoqchimisiz?Tarjima xotirasini tiklamoqchi ekanligingizga ishonchingiz komilmi?Yangilanishlar avtomatik tekshirilsinSaylayotganda avtomatik tarzda MO fayl yaratilsinOrqagaAsosiy yo‘l:Beta versiyalarda so‘nggi yangi xususiyatlar va yaxshilanishlar bo‘ladi, ammo biroz barqaror bo‘lmasligi mumkin.Hammasini oldga o‘tkazishYaroqsiz PO fayl: msgstr birlik shakli msgid_plural bilan birga ishlatilganTarjima satrida buzilgan belgilar.Ko‘rishBekor qilishVaqtinchalik direktoriya yaratilmadi.Dastur ishga tushirilmadi: %sKatta harf qilishKataloglar &menejeriKataloglar &menejeriKataloglar menejeriGrafik interfeys tilini o‘zgartirishKodlash usuli:Hujjatni hozir tekshirishGrammatik xatolar imlo xatolar bilan birga tekshirilsinYozayotganda imlo xatolari tekshirilsinYangilanishlarni tekshirish…Tarjimadagi xatolarni tekshirishImloni tekshirishTozalashTarjimani tozalashTarjimani tozalashYopishManba fayllari yig‘ilmoqda…Tarjimalarni ajratish buyrug‘i:Sharh:Quyidagiga kompilyatsiya qilish…Kompilyatsiya qilingan tarjima fayllariXossalardan manba kodini ajratishni moslang.TasdiqlashNusxa olishBirlik shaklidan nusxa ko‘chirishManba matnidan nusxa ko‘chirishBirlik shaklidan nusxa ko‘chirishManba matnidan nusxa ko‘chirishImlo xatolar avtomatik to‘g‘rilansin%s faylni saqlab bo'lmadi.Yangi tarjima yaratishYangi tarjimalar loyihasini yaratishCrowdin’da xatolikKes&ishAsboblar panelini moslashKesib olishDiskdagi ma’lumotlar bazasi hajmi:O‘chirishAjratkichni o‘chirishLoyihani o‘chirishDirektoriyalar:Uzoq vaqt foydalanilmagan barcha tarjimalarni o‘chirishni xohlaysizmi?SaqlamaslikSaqlamaslikBoshqa ko‘rsatilmasinBoshqa ko‘rsatilmasinSo‘nggi tarjimalar yuklab olinmoqda…Tarjimalarni yuklab olish ushbu loyihada o‘chirib qo‘yilgan.Chi&qishTahrirlash&Sharhni tahrirlash&Sharhni tahrirlashSharhni tahrirlashSharhni tahrirlashLoyihani tahrirlashLoyihani tahrirlashTahrirlanmoqdaTahrirlash…E-pochtangiz:"Butun ekranda" usuliga o‘tishXato kiritilganlar birinchiXato kiritilganlar birinchiXato kiritilganlar ro‘yxatda qizil bilan belgilangan. Xatolik tafsilotlari kiritilganni tanlasangiz ko‘rinadi.Faylni ochishda xato yuz berdiFaylni saqlashda xatoHammasiQo‘shilmagan yo‘llarQuyidagiday eksport…Manbalardan ajratishQuyidagi direktoriyalardagi manba fayllaridan matnni ajratish:Ajratgichni o‘rnatishAjratgichlarPoedit jarayoni bilan bog‘lab bo‘lmadi.Ajratib olingan tarjimalar mavjud faylni yuklash amalga oshmadi.Gettext kataloglarini birlashtirishda xatolik.Tarjima xotirasi yangilanmadi: %sFayl"%s" fayli mavjud emas."%s" fayli tarjima fayli hisoblanmaydi."%s" fayli faqat o'qish uchun va uni saqlab bo'lmaydi. Faylni boshqa nomi bilan saqlang.TopishKeyingisini topishOldingisini topishSharhlardan qidirishManba matnlaridan topishTarjimalardan topishKeyingisini topishOldingisini topishTilni to‘g‘rilashTilni to‘g‘rilashBoshlang‘ich qatorni to‘g‘rilashBosh qatorni to‘g‘rilash%i shakli UmumiyHTML fayllarYordamYon panelni yashirishHolat qatorini yashirishUshbu ogohlantirish xabarini yashirishIDAgar tozalashda davom etsangiz, barcha o‘chirish uchun belgilangan tarjimalar butunlay o‘chiriladi. Agar ular keyinchalik kerak bo‘lib qolsa, yana tarjima qilishingiz kerak bo‘ladi.Katta-kichiklikni rad qilishBeta versiyalari hamTarjimon haqida ma’lumotO‘rnatishNoto‘g‘ri faylChaqirish:Saqlab qo‘yishTil nomi manba tildagi bilan bir xil.Tarjima tili:Tilni tanlashTil:So‘nggi o‘zgartirishgettext kalit so‘lari haqida o‘rganishKo‘plik shakllari haqida o‘rganishBatafsil ma’lumotCrowdin haqida ko‘proq ma’lumot olish"%2$s" faylining %1$d qatori buzilgan (%3$s ma'lumoti yaroqsiz).Qator tugashi:Nuqtali vergul bilan ajratilgan kengaytmalar ro‘yxati (masalan: *.cpp;*.h):Poedit’da MO fayllarni to‘g‘ridan-to‘g‘ri tahrirlab bo‘lmaydi.Kichik harf qilishKatta harf qilishNoto'g'ri sarlavha: “%sâ€Farqlarni birlashtirish...Yig‘ishTarjima loyihasi nomiNomi:Ke&yingi tugatilmaganKe&yingi tugatilmaganHech 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.YangiYangi qatorlarKeyingi ko‘plik shakliKeyingi ko‘plik shakliYo‘qTopilmadiTopilmadiTarjima bilan bog‘liq hech qanday muammo topilmadi.Tasdiqdan o‘tmagan, yana kiring.OKBirFaqat to‘liq mos kelganlar bilan to‘ldirilsinSo‘nggisini ochishTahrirlagichda ochishTahrirlagichda ochishOchish...Ochish…TanlamalarBoshqaO&ldingi tugatilmaganO&ldingi tugatilmaganPO tarjima fayllariPOT tarjima namunalariPOT fayllar aslida faqat shablonlar hisoblanadi va ularning tarkibida hech qanday tarjima bo‘lmaydi. Tarjima qilish uchun shablonga asoslangan yangi PO fayl yarating.Qo‘yishNusxa olish va joylash uslubiYo‘llarRuxsat berilmadi.O‘rniga mavjud PO faylini oching va tahrirlang. Uni saqlaganingizda, MO fayl ham yangilanadi.Avval faylni saqlang, Saqlamasangiz uchbu qismni tahrirlay olmaysiz.Ko‘plikPoeditPoedit - kataloglar boshqaruvchisiPoedit avtomatik tarzda “%s†nomli fayl ichidagi xato tarkibni to‘g‘riladi.Poedit qulay va oson tarjimalar tahrirlagichidir.Avtomatik tarjimaShaxsiy sozlamalarSozlamalar...Parametrlar…Mavjud fayllarni formatlashni saqlashOldingi ko‘plik shakliOldingi ko‘plik shakliLoyiha nomi va versiyasi:Loyiha nomi:Loyiha:TozalashO‘chirilgan tarjimalarni tozalashChiqishQayta bajarishYangilashQolmoqda: %dAlmashtirishAlmashadigan qatorKo‘plik shakllari yo‘q bosh qatori talab qilinmoqda.TiklashTarjima xotirasini tiklashTarjima xotirasini tiklash barcha joylashgan tarjimalarni xotiradan butunlay o‘chiradi. Siz bu jarayonni iziga qaytara olmaysiz.Ko‘rib chiqishSaqlashBoshqacha saqlashQuyidagiday saqlash…O‘zgarishlarni saqlashB&archasini belgilashBarchasini belgilashDirektoriyani tanlashTarjima faylini tanlashImport qilish uchun tarjimalarni tanlangTarjima namunasini tanlashSiznig avfzal tilingizni tanlashTilni o‘rnatishTilni o‘rnatishYon panelni ko‘rsatishImlo va grammatikani ko‘rsatishHolat qatorini ko‘rsatishAlmashishlarni ko‘rsatishAsboblar panelini ko‘rsatishYon panelni ko‘rsatish yoki yashirishYon panelni ko‘rsatishHolat qatorini ko‘rsatishYon panelKirishChiqishKirishCrowdin saytiga kiringChiqishBirlikQulay nusxa olish/Qo‘yishQulay tirelarQulay linklarQulay qo‘shtirnoqlar&Fayl tartibi bo‘yicha saralash&Manba bo‘yicha saralash&Tarjima bo‘yicha saralash&Fayl tartibi bo‘yicha saralash&Manba bo‘yicha saralash&Tarjima bo‘yicha saralashManba kodi kodlash usuli:Manba kodi ajratgichlari manba kodi fayllaridagi tarjima qilinadigan qatorlarni topishda foydalaniladi va ularni tarjima qilish uchun ajratadi.Manba kodi mavjud emas.Manba matniManba matn — %sManbalar kalit so‘zlariManbalar yo‘llariNutqImloni tekshirish o‘chirib qo‘yildi, chunki %s uchun lug‘at o‘rnatilmagan.Imlo va grammatikaGapirishni boshlashGapirishni to‘xtatishSaqlangan tarjimalar:Topish uchun qatorAlmashishlarTavsiyalarTarjima tili noto‘g‘ri bo‘lsa, tavsiyalar ko‘rsatilmaydi. Boshqa xususiyatlar, masalan, ko‘plik shahkli yaxshi bo‘lishi mumkin.SinxronlashCrowdin bilan sinxronlashTarjimani Crowdin bilan sinxronlashSinxronizatsiyaSinxronizatsiyadagi xatoCrowdin bilan sinxronlash amalga oshmadi.Ko‘plik shakllari ("%s") bosh qatorida sintaktik xato.TXMavjud POT namunasidan tarjima qilinadigan qatorlarni oling.Matnni almashtirishTXda ushbu fayl tarkibi bilan bir xil qatorlar mavjud emas. U faqat Poedit siz tarjima qilgan fayllardan yetarlicha o‘rgangandan so‘ng avtomatik tarjima qilishida samaralidir.Faylni MO formatga kompilyatsiya qilib bo‘lmaydi va undan foydalanib ham bo‘lmaydi.Fayl MO formatga kompilyatsiya qilindi, ammo u to‘g‘ri ishlamasligi mumkin.Fayl xavfsiz saqlandi va MO formatga o‘zgartirildi, ammo u to‘g‘ri ishlamasligi mumkin.Fayl xavfsiz saqlandi, ammo MO formatga o‘zgartirilmadi va undan foydalanib bo‘lmaydi.Fayl xavfsiz saqlandi.%s faylini boshqa ilova oÊ»zgartirgan.Tarjima foydalanish uchun tayyor, ammo %d ta kiritilgan tarjima qilinmagan.Tarjima foydalanish uchun tayyor, ammo %d ta kiritilgan tarjima qilinmagan.Tarjima foydalanish uchun tayyor.Tarjimalar yo‘q. Bu noodatiy.Faylni formatlashda muammo yuz berdi (ammo u yaxshi saqlangandi).There were errors when loading the file. Some data may be missing or corrupted as the result.Ushbu sozlamalar PO fayllarni ichki formatlashga ta’sir qiladi. Agar versiyani boshgarishga o‘xshagan maxsus talablaringiz bo‘lsa, uni to‘g‘rilang.Ushbu buyruqdan ajratgichni ishga tushirish uchun foydalaniladi. %o chiquvchi fayl nomiga, %K kalit so‘zlar ro‘yxatiga %F kiruvchi fayllar ro‘yxatiga, %C kodlash bayrog‘iga (quyidagini ko‘ring) ajratiladi.Ushbu qator Poedit’ning tarjima xotirasida topildi.Agar manba kodlash usuli berilgan bo‘lsa, u buyruq satriga ilova qilinadi. %c kodlash usuli qiymatini anglatadi.U har bir kiruvchi fayl uchun buyruq satriga qo‘shiladi. %f fayl nomini anglatadi.Har bir kalit so'zi uchun bir marta buyruq satriga ilova qilinadi. %k kalit so'z.JamiTransformatsiyaTarjima qilindi: %d / %d (%d %%)TarjimaTarjima tiliTarjima xotirasiTarjima xossalariTarjima — %sIkkiUTF-8 (tavsiya qilinadi)Orqaga qaytarishQayta ishlab bo‘lmaydigan istisno yuz berdi: %sUnix (tavsiya qilingan)Tarjima qilinmaganBarchasini yangilashLoyihadagi barcha kataloglarni yangilashPOT fayldan yangilashYangilash hisobotiYangilanishlarYuklash amalga oshmadiTarjimalarni yangilashFoydalanuvchi ma’lumoti yangilanmoqda…Tarjimalar yuklab qo‘yilmoqda…Boshqa ifodadan foydalanishBoshqa shrift ro‘yxatidan foydalanish:Matn maydonlari shriftini o‘zgartirish:Ushbu til uchun standart qoidalardan foydalanishUshbu kalit so‘zlar (funksiya nomlari)dan manba fayllaridagi tarjima qilinadigan qatorlarni tanish uchun foydalaning:Tarjima xotirasidan foydalanishTo‘g‘rilashTo‘g‘rilash natijalari%s versiyaTasdiqdan o‘tkazilmoqda…Poedit’ga xush kelibsizFaqat to‘liq so‘zlarOynaOynalarUzun qidiruvUshbuda joylashtirish:XLIFF Tarjima FayllariHaShuningdek, siz tarjima qilinadigan qatorlarni to‘g‘ridan to‘g‘ri manba kodidan ajratishingiz mumkin:Poedit oynasiga faqat bitta faylni qo'yish mumkin.O‘zgartirish amalga oshishi uchun Poedit’ni qayta ishga tushirishingiz kerak.IsmingizO'zgartirishlaringizni saqlamasangiz, ular yo'qoladi.Ismingiz va e-pochtangiz manzilidan faqat GNU gettext fayllaridagi "Last-Translator" bosh qatorida foydalaniladi.NolKattalashtirish/Kichiklashtirishvaqtinchalik fayllar o'chirilmasin (to'g'irlash uchun)masalan: nplurals=2; plural=(n > 1);raqami berilgan satrdagi elementga o'tishpoedit:// URI bilan ishlashCtrl+PastgaEnterChapgaO‘nggaShift+Tepagaaltctrlshift%s haqida%sni yashirishBoshqalarini yashirishSozlamalar...%sdan chiqishXizmatlarBarchasini ko‘rsatishnoma’lum til“%s†bu POT fayli emas.poedit-3.6.3/locales/sr.mo0000644000175100001660000022503015011674351011101 Þ•ÅD³l,8; 9; E;&P;w;<‹;È;&Û;&<J)<gt< Ü<æ< õ<;ÿ<;= B=P=W=]=e=l=s=y===Ÿ=¥=«=´=È=Ü=à=ò=> >>>>1>C>G> K> X>e>n>w> ~>‹>›>±>Ç>Ö>ò>???#?)?2?I? `? n? |?‰??«?Ç?à?ù?@'@-@2@I@Y@ w@ ƒ@@–@ž@§@ «@ ·@Ä@ Ó@ß@ ï@û@ A"A 1A=AMAaA|A…A¥AÂAâA øA B1B'CBkB~B›B µBÀBÆB7âB6CQC)qC›C  C]«C D<DDYD$žDÃD ÊD€×DXE _E"mEE+«E)×E F FF0FAFTF]FpFŒF¨F#½FáFöFG GG (G3GEGKGQGbG%sG™G ´GÕGÝGæGþG HH/8H hHkuHáHæHùHI"I8I-WI1…I·I ÐIÛI)òIJ É cÉ%qÉS—É2ëÉÊ9ÊQÊ pÊ|ÊCšÊBÞÊ!Ë,;Ë'hË(Ë ¹ËaÆË(ÌeGÌ­ÌËÌXêÍ'CÎ+kÎC—Î<ÛÎ!Ï:Ï*NÏ yÏJ„ÏÏÏ$×Ï$üÏ!Ð?Ð%]Ð]ƒÐ áÑ)ëÑ"Ò)8ÒbÒS~Ò-ÒÒ-Ó.Ó3ÓUOÓ˜¥Ó>Ô?ZÔTšÔ5ïÔC%ÕFiÕ)°Õ ÚÕ çÕ_òÕ,R×.×®×EË×+Ø.=ØlØ"ŠØ"­ØÐØ2íØ Ù0Ù @Ù MÙ(XÙ(Ù"ªÙ!ÍÙÂïÙ ²Ú'¿Ú çÚbôÚ WÛDxÛ,½Û¸êÛŠ£Ü.Ý0=ݘnÝ Þ(Þ*/ÞoZÞ¸ÊÞJƒàDÎáAâ)Uâ%â%¥âÈËâe”ã.úã)ä¹DåÚþåÙæîæç&çIEç1ç1Áç,óç è Aè.bè‘è®èÀè)Ñè ûè2 é <éYGé¡é Áé Îé*Ûé*ê1ê Hê;Uê;‘ê*Íê*øêO#ë së€ë•ëªëÉë[Úë6ì>E쇄ì í(í;íJídí~íží¾íÔííí î_)î‰î¤î»î0Ñîï*ï8Gï(€ï*©ïÔïîïðð$1ð5VðŒð©ð¼ð/Øðññ :ñ8[ñ$”ñ¹ñÖñéñýñò+ò=òQò.oòžò.ºòéòûò6 óAóYó!wó,™ó:Æó+ô,-ô:Zô+•ô+Áô°íô0žõ/Ïõÿõ ö :ö7[ö3“ö7Çö3ÿö 3÷ƒ>÷&Â÷é÷ø"ø#Bø-fø1”øLÆø"ùq6ù ¨ùµù¾Æùr…úªøú£û)ºû5äûü07üEhü~®ü-ý>ýeSý;¹ýõýpþ7€ÿЏÿqCµÒ_èRH„›˜ ¹'IAqA³RõyH·Â0z`«[ mhEÖB T_ ,´ Fá I( Cr ?¶ Rö mI 0· „è Ym ¨Ç øptiÏÞ¸®Ëgñ3k%Í‘µ_£ ¹Æ3ã% =J)d,Ž»†ÛcbEÆ, 9#Y·}Ô5 Þý#(U7BÐ.î=Te…<ž_Û.;.j™2¸ë/ :Z(m4–!ËBí@0,q)ž!Èê, C1 ­u 8#!\!4|!±!Ã!â!4"6"K"8k"¤" ¿"Ì"KÔ" # 6#%D#-j#˜#}#]$¾y$ƒ8%¼%MÌ%½&Ø&á&è&b'#i''@œ'7Ý''(=(B(H(Q(W( `(k(r({((„(6Š(Á(Ñ(é(ý( ))E3)y)(•)¾)Ó)4ã)Ã’sS¸€% *Ý è•­"M–±óÜtÖH{oŒŸX]Ñ¢SÏ‚ A_fXD:žž%!ZBš,Æ´Þ7!¶úèƒì}g¤À^—%wº˜¿g8yï†)РãqCa—ð„â¤n4.¿$»¥n’#¥JÄrÍ=O «Œ Ź~NR‰´rc5WqÁŠ[…ù-Ú®\Yûḱ´Âj'±æ¡Ž,˜2{åeV1£‰I2\1l‡kƒñô;Jp¦®` ‰‚L$؆cG›5”«eí„?‹Na80»FbŽf¢È¦ìkçîóñõOS Ò°‡Û"¾€œêhØÚæ&ARc6ÓÁ®9C4!“v-¬ò=2{Œ¸ªj à#ÎýĦ@é›Z¨âõŠb^_[ZÑ)BÉü>ÂT3z:.vœ°îJÄh*„íbs’³ (à< 6µg¶<'ÓY>kˆ;‘Ë$Þo ÷]zš1§À8Îôÿ…·³°ÙtÛ‹ëFª<ÐEy”EÌäX·4d¯žÇQmL–êÏ¡Ý\ /¯|76—†}²HÌ|wB7»0rFÊ)d¡u÷‡?ã+³y^¬©˜øßKd ¼D­û}¹OeRGPoÁˆ¨*`á|½þÇ åDaxµP ";l¬‘¹:‚©E&h£Ëu3öK' •(ˆx«(0ÒÍÔ§ºÉ߯øÔzQVQï²n™½U§¿¾ÃLò[Õ3u-Žö`C ¥ð/ýIäŠjY]i•ëº>šü™W‹© “I À~qþ@ÂM–Ÿ¶UÅKÊ™”w5ÿ›G+pú¨@œ€iƒmv¯t¤“ù£/?9P&p=HAç­¼xm~Ÿ,Öf·VªÃ.M¼²Åiµ+ÜÈTÕT¾¢‘Ù9½#×l×ésUW_ …N (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Serbian (Cyrillic) Language: sr_SP MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: sr X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (измењено) (неÑачувано)%d појављивање у коду%d појављивања у коду%d појављивања у коду%d уноÑ%d уноÑа%d уноÑаПрелиминарно је преведен %d уноÑ.Прелиминарно Ñу преведена %d уноÑа.Прелиминарно је преведено %d уноÑа.%d грешка%d грешке%d грешакаДошло је до %d грешке.Дошло је до %d грешке.Дошло је до %d грешака.Дошло је до %d грешке:Дошло је до %d грешке:Дошло је до %d грешака:Пронађен је %d проблем у преводу.Пронађена Ñу %d проблема у преводу.Пронађено је %d проблема у преводу.%i ред у датотеци „%s†није иÑправно учитан.%i реда у датотеци „%s†ниÑу иÑправно учитана.%i редова у датотеци „%s†није иÑправно учитано.%s форматПодешавања %s-а%s форматУвезен је %s превод.Увезена Ñу %s превода.Увезено је %s превода.&О програму&О Poedit-у&Примени&Ðазад&Откажи&Обриши&Затвори&КопирајИз&бриши&Заврши и наÑтави&Заврши и наÑтави&Уређивање&ДатотекаП&ронађи…П&риручник за GNU gettextП&риручник за GNU gettext&Ðавигација&Групиши по контекÑту&Групиши по контекÑтуПо&моћ&Ðово&Ðово…&Следеће >&Следећи превод&Следећи превод&Ðе&У редуО&нлајн помоћО&нлајн помоћ&Отвори…&Отвори…&Ðалепи&Подешавања&Подешавања…&Претходни превод&Претходни преводС&војÑтва…&ОчиÑти избриÑане преводе&ОчиÑти избриÑане преводе&Изађи&ПоновиЗа&мени&Сачувај&Сачувај каоПојављивања у &кодуПојављивања у &коду&Уводни прозор&Уводни прозорП&ревод&ОпозовиПрво &непреведени уноÑиПрво &непреведени уноÑи&Ðжурирај из изворног кода&Ðжурирај из изворног кодаП&ровери ваљаноÑÑ‚ преводаП&ровери ваљаноÑÑ‚ превода&Приказ&Да(подразумевани језик)(ниÑте пријављени)(потребан је Windows 8 или новији)< &Претходно<неименован>О %s-уÐалогÐалози&ДодајДодај коментарДодај датотеке…Додај фолдере…Додај пројекатДодај заменÑки знак…Додај коментарДодајте фолдер на лиÑтуДодај датотеке…Додај фолдере…Додај пројекатДодај заменÑки знак…Додатне кључне речиДодатне xgettext ознаке:ÐапредноÐапредна подешавања издвајања…Ðапредна подешавања издвајањаÐапредна подешавања издвајања…Све датотеке преводаИз Ñвих коментараСви ÑтринговиКориÑти и подразумеване кључне речи за подржане језикеУвек пребаци Ñ„Ð¾ÐºÑƒÑ Ð½Ð° поље за ÑƒÐ½Ð¾Ñ Ñ‚ÐµÐºÑтаДошло је до грешке.Ставка у лиÑти улазних датотека:Ставка у лиÑти кључних речи:ИзгледПримениПриближна подударања Ñа преводилачком меморијомЖелите ли заиÑта да избришете издвајач „%sâ€?Желите ли заиÑта да реÑетујете преводилачку меморију?ÐутоматÑки тражи ажурирањаÐутоматÑки компајлирај MO датотеку при чувањуÐазадОÑновна путања:Бета верзије Ñадрже најновије функције и побољшања, али могу бити мање Ñтабилне.ПоÑтави Ñве у предњи планPO датотека је оштећена: кориÑти Ñе msgstr за множину без msgid_pluralPO датотека је оштећена: кориÑти Ñе msgstr за једнину уз msgid_pluralÐеиÑправна ознака у Ñтрингу за превод.&ПотражиПрегледај датотекеПодразумевано Ñе приказују и приближни резултати, али Ñу означени да им је потребна дорада. Означите ову опцију како би Ñе приказивала Ñамо потпуна подударања.&ОткажиОтказивање…Ðије могуће направити привремени фолдер.Ðије могуће извршити програм: %sÐије могуће прелиминарно превеÑти Ñа непознатог језика.Ðије могуће прелиминарно превеÑти без изворног текÑта.Претвори у велика почетна Ñлова&Менаџер каталога&Менаџер каталогаМенаџер каталогаПромените језик интерфејÑаКодирање:Одмах провери документПровера граматике Ñа правопиÑомПроверавај Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ñ‚Ð¾ÐºÐ¾Ð¼ куцањаПровери д&а ли поÑтоје иÑправке…Провери да ли има грешака у преводуПотр&ажи ажурирања…Проверавај правопиÑОбришиОбриши лиÑтуОбри&ши преводОбриши лиÑтуОбри&ши превод&ЗатвориОблакПојављивања у кодуПојављивања у кодуСарађујте Ñа другима онлајн.Прикупљање датотека Ñа изворним кодом…Команда за издвајање превода:КоментарКоментар:Из коментара који почињу Ñа:Ко&мпајлирај у MO…Компајлирање у…Компајлиране датотеке преводаПодеÑите издвајање из изворног кода у ÑвојÑтвима.ПотврдаПовежите Poedit Ñа подржаним платформама у облаку за локализацију да биÑте Ñ Ð»Ð°ÐºÐ¾Ñ›Ð¾Ð¼ Ñинхронизовали преводе који Ñе налазе на њима.КопирајКопирај из &једнинеКопирај из из&ворног текÑтаКопирај из &једнинеКопирај из из&ворног текÑтаÐутоматÑки иÑправи правопиÑÐије могуће преузети податке о пројекту на Localazy-ју.Ðије могуће учитати датотеку. Вероватно је оштећена.Ðије могуће Ñачувати датотеку „%sâ€.Ðаправи новиÐаправи нови преводÐаправите нови превод помоћу POT шаблона.Ðаправи нови преводилачки пројекатГрешка у Crowdin-уCrowdin је интернет платформа задужена за управљање преводима и алат за колаборативно превођење. И Ñами кориÑтимо Crowdin како биÑмо превели Poedit на многе језике и обожавамо га.&ИÑециПрилагођени издвајачи:Прилагођени издвајачи:Прилагоди траку Ñа алаткама…ИÑециВеличина базе на диÑку:&ИзбришиИзбриши из преводилачке меморијеИзбриши издвајачИзбриши из преводилачке меморијеИзбриши пројекатИзбриши коментарИзбриши пројекатБриÑањем пројекта нећете избриÑати датотеке превода.Упоређивање разлика…Фолдери:Желите ли да избришете пројекат „%sâ€?Желите ли да поново учитате датотеку Ñа диÑка? Тиме ћете изгубити Ñве неÑачуване промене у Poedit-у.Желите ли да уклоните Ñве преводе које Ñу идентичне изводном текÑту?Желите ли да уклоните Ñве преводе који Ñе више не кориÑте?&Ðе чувајÐе чувајÐе приказуј поновоПотпуна подударања не означавај за дорадуÐе приказуј поновоПреузимање најновијих превода…Преузимање превода из овог пројекта је онемогућено.Овде превуците фолдере или датотекеОвде превуците фолдере или датотеке&ИзађиИ&звоз у HTML…УредиУреди ко&ментарУреди ко&ментарУреди коментарУреди коментарУређивање пројектаУреди пројекатУређивањеУреди…&Имејл:Пређи у режим целог екранаБрој множинÑких облика у уноÑима Ñе разликује од онога што пише у заглављу датотекеПрво уноÑи Ñа грешкамаПрво уноÑи Ñа грешкамаУноÑи Ñа грешкама Ñу означени црвеном бојом. Када изаберете такав уноÑ, приказаће Ñе детаљи о грешци.Грешка при отварању датотекеГрешка при чувању датотекеДошло је до грешке при учитавању XLIFF датотеке: %sГрешка: ГрешкеСвеИдентична подударања Ñа преводилачком меморијомИзузете путањеИзвези у TMX…Извези као…Извоз у HTML…Извези у TMX…Извожење у HTMLИзвоз преводилачке меморије у „%s†није уÑпео.Извоз превода…Издвој из изворног кодаИздвој напомене преводиоцима:Издвој текÑÑ‚ из изворних датотека у Ñледеће фолдере:Издвајање линија текÑта које је могуће превеÑти из %s датотеке…Издвајање линија текÑта које је могуће превеÑти из %s датотеке…Издвајање линија текÑта које је могуће превеÑти из %s датотека…Подешавање издвајачаИздвајачиÐије могуће комуницирати Ñа Poedit-овим процеÑом.Ðије уÑпело издвајање линија текÑта из изворног кôда.Ðије могуће учитати датотеку Ñа издвојеним преводима.Ðије могуће објединити gettext каталоге.Ðије могуће ажурирати преводилачку меморију: %sДатотекаÐије могуће отворити датотекуДатотека „%s†не поÑтоји.„%s†није датотека превода.Датотека „%s†је доÑтупна Ñамо за читање и не може Ñе Ñачувати. Сачувајте је под другим именом.ПронађиПронађи &ÑледећеПронађи пр&етходноПронађи и замени…КоментариИзворни текÑтПреводиПронађи &ÑледећеПронађи пр&етходноИÑправи језикИÑправи језикИÑправи заглављеИÑправи заглављеFlutter датотеке преводаОблик %iОблик %i (не кориÑти Ñе)GNU gettextОпштеHTML датотекеПомоћСакриј бочну тракуСакриј ÑтатуÑну тракуСакриј ово обавештењеКако функционише Ñинхронизација у облаку?IDÐко наÑтавите, трајно ћете уклонити Ñве преводе означене као избриÑане. Мораћете да поново преведете Ñтрингове ако буду додати у будућноÑти.Ðко Ñте раније забранили приÑтуп датотекама, то можете променити у System Preferences → Security & Privacy → Privacy → Files & Folders.Ðко Ñте раније забранили приÑтуп датотекама, то можете променити у System Settings → Privacy & Security → Files & Folders.ЗанемариÐе разликуј велика и мала ÑловаУвези из TMX-а…Увези датотеке превода…Увези из TMX-а…Увези датотеке превода…Увоз из „%sâ€â€¦Ðије уÑпео увоз преводилачке меморије.Увоз превода…Датотека: %sУкључи бета верзијеÐедоÑледноÑÑ‚ при употреби великих и малих ÑловаÐедоÑледноÑÑ‚ при употреби размакаИнформације о преводиоцуИнÑталирајÐеважећа датотекаПозивање:ПроблемПроблемиJSON датотеке превода&ЗадржиÐазив или кôд језикаЈезик превода Ñе поклапа Ñа изворним језиком.Ðије наведен језик превода.Језик превода:Избор језикаТим преводилаца:Језик:ПоÑледња изменаСазнајте више о кључним речима gettext-аСазнајте више о множинÑким облицимаСазнајте вишеСазнајте више о уÑлузи %sСазнајте више о Crowdin-уСазнајте више о GNU gettextЛинијаРед %d у датотеци „%s†је оштећен (неважећи подаци у %s).Завршеци редова:ЛиÑта екÑтензија раздвојених тачка-зарезом (нпр. *.cpp;*.h):Учитај енглеÑкиLocalazy је платформа за локализацију Ñа виÑоким нивоом аутоматизације која Ñвакоме омогућава да једноÑтавно преведе Ñвоје производе и Ñадржај на више језика.MO датотеке Ñе не могу директно уређивати у Poedit-у.Претвори у мала ÑловаПретвори у велика ÑловаÐаправите нови превод из POT датотеке.ÐеиÑправан формат заглавља: „%sâ€Ð£Ð¿Ñ€Ð°Ð²Ñ™Ð°Ñ˜ налозимаУправљај…Обједињавање разлика…УмањиÐазив пројекта за који је намењен преводИме:С&ледећи недовршениС&ледећи недовршениПотребна дорадаПотребна дорадаГрешка на мрежи: %s (%d)Ðе дозвољава да лиÑта Ñтрингова заузме фокуÑ. Ðко је омогућено, морате да кориÑтите Ctrl и Ñтрелице за навигацију. ТекÑÑ‚ можете да уноÑите директно у поље а да не притиÑкате Tab за промену фокуÑа.&ÐовоÐо&во из POT/PO датотеке…Ðове линије текÑтаÐо&во из POT/PO датотеке…Ðови ÑтринговиÐове линије текÑта које је потребно превеÑти:Сле&дећи множинÑки обликСле&дећи множинÑки обликÐеÐема резултатаÐиједан ÑƒÐ½Ð¾Ñ Ñе не може прелиминарно превеÑти.У датотеци није наведена информација о појављивањима овог Ñтринга у изворном коду.Ðема резултатаÐиÑу пронађени проблеми у преводу.Ðема преводилачких пројеката на вашем налогу.Ðема информација о коришћењуÐиÑу Ñви множинÑки облици преведени.Ðемате овлашћења. Поново Ñе пријавите.Ðапомене преводиоцима&У редуЈеданУкључите ову опцију Ñамо ако Ñте Ñигурни у квалитет ваше преводилачке меморије. Подразумевано Ñе Ñвим подударањима додељује ознака „потребна дорада†и такве Ñтрингове би требало проверити.Само потпуна подударањаОтвори превод из облака…Отвори &недавнеОтворите и уређујте датотеке превода.Отвори превод из облакаОтвори превод из облака…Отвори датотекуОтвори у уређивачуОтвори у уређивачуОтвори &недавнеОтвори референтну датотекуОтвори…Отвори…ОпцијеДругоП&ретходни недовршениП&ретходни недовршениPO датотеке преводаPOT шаблони преводаPOT датотеке Ñу Ñамо шаблони без превода. Да биÑте започели превод, направите нову PO датотеку према шаблону.ÐалепиÐалепи и уÑклади ÑтилПутањеÐжурираћете Ñве датотеке у пројекту из изворног кода.Забрањен приÑтуп.У преводу недоÑтаје чувар меÑта „%sâ€.ИÑправноÑÑ‚ чувара меÑтаУмеÑто тога отворите и уређујте одговарајућу PO датотеку. Када је Ñачувате, ажурираће Ñе и MO датотека.Прво Ñачувајте датотеку. Овај одељак Ñе не може уређивати док то не урадите.МножинаПреводи множинÑких обликаПравило за множинÑке облике које је наведено у датотеци није уобичајено за %s језик.МножинÑки облици:PoeditPoedit – менаџер каталогаPoedit је аутоматÑки иÑправио неважећи Ñадржај у датотеци „%sâ€.Poedit може покушати да попуни нове уноÑе Ñамо из претходних превода у датотеци или из читаве преводилачке меморије. Употреба преводилачке меморије неће имати много учинка ако је Ñлабо попуњена, али ће бити Ñве боља како додајете нове преводе.Poedit не може да прикаже изворни кôд у ком Ñе Ñтринг кориÑти, јер датотека није доÑтупна на наведеној локацији или Ñе ради о Ñимболичкој референци која не упућује на Ñтварну датотеку.Poedit је једноÑтаван алат за превођење.Poedit не може да отвори датотеку „%sâ€.&Прелиминарни превод…Прелиминарни преводПрелиминарни преводПрелиминарно је преведен %u ÑтрингПрелиминарно Ñу преведена %u ÑтрингаПрелиминарно је преведено %u ÑтринговаПрелиминарно превођење помоћу преводилачке меморије…Прелиминарно превођење…Прелиминарни превод аутоматÑки проналази потпуна или приближна подударања за непреведене Ñтрингове у преводилачкој меморији и попуњава њихове преводе.За прелиминарни превод је потребан изворни текÑÑ‚. Ова функција неће радити Ñамо Ñа идентификаторима.Да биÑте кориÑтили прелиминарни превод потребно је да изворни језик буде познат. Poedit га није препознао у овој датотеци.ПодешавањаПодешавања…Подешавања…Припрема Ñтрингова…Очувај форматирање поÑтојећих датотекаПр&етходни множинÑки обликПр&етходни множинÑки обликПретходни изворни текÑтПретходна &изменаПретходна &изменаÐазив и верзија пројекта:Ðазив пројекта:Пројекат:ПројектиПровере интерпункције&ОбришиЧишћење избриÑаних преводаИзађиДошло је до Ñледеће грешке при читању датотеке: %sÐедавне датотекеПоновиОÑвежиПоново учитај датотекуПоново учитај датотекуПреоÑтало: %dУклониУклони преводе идентичне изворуУклони преводе идентичне изворуУклоњене линије текÑтаУклоњене линије текÑтаУклоњене линије текÑта (више Ñе не кориÑте):ЗамениЗ&амени ÑвеЗ&амени ÑвеСтринг за замену&Замени…У заглављу недоÑтаје образац за множинÑке облике.ПоништиРеÑетовање преводилачке меморијеОбриÑаћете Ñве преводе у преводилачкој меморији. Ова радња је неповратна.Прикажи у Finder-уПрегледајСачувајСачувај &као…Сачувај &као…Свеједно ÑачувајСвеједно ÑачувајСачувај каоСачувај као…Чување променаСачувај датотекуÐије подржано чување XCLOC датотеке на другу локацију.Снимци екрана:Изабери &ÑвеИзабери ÑвеИзбор ТМХ датотека за увозИзбор фолдераИзбор датотеке преводаИзбор датотеке превода за увозИзбор шаблона преводаИзаберите жељени језикИзабери језикИзабери језикПоÑтавкеПодешавања…Прикажи бочну тракуПрикажи Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð¸ граматику&СтатуÑна тракаID &ÑтрингаПрикажи заменеПрикажи траку Ñа алаткама&УпозорењаПрикажи у Explorer-уПрикажи у фолдеруПрикажи или Ñакриј бочну тракуПрикажи бочну траку&СтатуÑна тракаID &Ñтринга&УпозорењаБочна тракаПријавите ÑеОдјави меПријави меПријавите Ñе у %sПријава на налог у облакуПријава на CrowdinПријава на налог у облакуОдјави меЈеднинаПаметно копирање/налепљивањеПаметне цртеПаметни линковиПаметни наводнициСортирај као у &датотециСортирај према &изворном текÑтуСортирај према п&реводуСортирај као у &датотециСортирај према &изворном текÑтуСортирај према п&реводуКодирање изворног кода:Издвајачи Ñе кориÑте за проналажење и издвајање Ñтрингова за превод у датотекама изворног кода.Изворни кôд је недоÑтупан.Изворни кôд није пронађенИзворни текÑÑ‚ID изворног текÑтаИзворни текÑÑ‚ – %sКључне речи изворних датотекаПутање до изворних датотекаКључне речи изворних датотекаПутање до изворних датотекаГоворПровера правопиÑа је онемогућена јер није инÑталиран речник за %s језик.ÐŸÑ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð¸ граматикаПокрени говорЗауÑтави говорСачуваних превода:КонтекÑÑ‚ Ñтринга: %sИдентификатор Ñтринга: %sДужина Ñтринга у знаковимаДужина Ñтринга у знаковима: превод | изворСтринг за претрагуÐиÑу подржани Crowdin пројекти у којима Ñе преводе линије текÑта.ЗаменеПредлозиПредлози ниÑу доÑтупни ако није изабран језик превода. ИÑто важи и за множинÑке облике и друге функције.Ðепотребан чувар меÑта „%s†који не поÑтоји у изворном текÑту.Подржава Ñве програмÑке језике које препознају GNU gettext алатке (PHP, C/C++, C#, Python, Java, JavaScript и друге).Синхронизуј&Синхронизуј Ñа Crowdin-омСинхронизуј превод Ñа Crowdin-омСинхронизацијаГрешка при ÑинхронизовањуСинхронизација Ñа Crowdin-ом није уÑпела.Синтактичка грешка у заглављу код обраÑца за множинÑке облике („%sâ€).МеморијаTMX датотекеПреузмите Ñтрингове за превод из поÑтојећег POT шаблона.Ðазив групе и имејл-адреÑа или URLЗамена текÑтаПреводилачка меморија не Ñадржи Ñтрингове који Ñу Ñлични онима у тренутној датотеци. Ова опција је кориÑна за полуаутоматÑке преводе тек након што Poedit научи довољно из датотека које Ñте ручно превели.ÐеиÑправан формат TMX датотеке.Ðко Ñачувате, промене које је направила друга апликација ће бити изгубљене.Датотека Ñе не може компајлирати у MO формат за даље коришћење.Датотека је Ñадржала дупликате, што није дозвољено. Poedit је иÑправио проблем, али је пожељно да проверите и иÑправите Ñве преводе који Ñу означени за дораду.Ðије могуће Ñачувати датотеку у кодирању „%sâ€, како је наведено у подешавањима превода. Сачувана је у UTF-8 формату, а подешавање је измењено Ñходно томе.Датотека је измењена. Желите ли да Ñачувате промене?Датотека је у формату који Poedit не препознаје.Датотека је компајлирана у MO формат, али вероватно неће иÑправно радити.Датотека је Ñачувана и компајлирана у MO формат, али вероватно неће иÑправно радити.Датотека је Ñачувана, али Ñе не може компајлирати у MO формат за даље коришћење.Датотека је Ñачувана.Ðије могуће отворити датотеку „%sâ€.Ðије могуће Ñачивати датотеку „%sâ€.Датотеку „%s†је променила друга апликација.Стари изворни текÑÑ‚ (до ажурирања) који одговара нетачном преводу.ÐајједноÑтавнији начин да попуните ову датотеку преводима јеÑте да је ажурирате помоћу POT датотеке:Превод не почиње размаком.Превод Ñе завршава новим редом, али изворни текÑÑ‚ не.Превод Ñе завршава размаком, али изворни текÑÑ‚ не.Превод Ñе завршава знаком „%sâ€, а изворни текÑÑ‚ знаком „%sâ€.У преводу недоÑтаје нови ред на крају.У преводу недоÑтаје размак на крају.Превод је Ñпреман за коришћење, али %d ÑƒÐ½Ð¾Ñ Ñ˜Ð¾Ñˆ није преведен.Превод је Ñпреман за коришћење, али %d уноÑа још ниÑу преведена.Превод је Ñпреман за коришћење, али %d уноÑа још није преведено.Спреман је за коришћење.Превод Ñе мора завршавати знаком „%sâ€.Превод Ñе не Ñме завршавати знаком „%sâ€.Превод мора почињати великим Ñловом.Превод мора почињати малим Ñловом.Превод почиње размаком, али изворни текÑÑ‚ не.Преводи Ñу означени за дораду. Проверите њихову иÑправноÑÑ‚.Ðема уноÑа. То је необично.Датотека је уÑпешно Ñачувана, иако је дошло до проблема при форматирању.Дошло је до грешке при отпремању превода на Localazy.Дошло је до грешака при учитавању датотеке. Због тога Ñу неки подаци изгубљени или оштећени.Ова подешавања утичу на форматирање PO датотека. Прилагодите их Ñвојим потребама, нпр. ако кориÑтите ÑиÑтем за управљање изворним кодом.Ова JSON датотека не Ñадржи преводе и не може Ñе уређивати у Poedit-у.Ова акција ће уклонити Ñве преводе који Ñе у потпуноÑти подударају Ñа изворним текÑтом. Ово није могуће опозвати.Ова датотека Ñадржи уноÑе Ñа множинÑким облицима, али јој недоÑтаје заглавље Ñа правилом за множину.Ова датотека кориÑти идентификаторе умеÑто изворног текÑта. Poedit може да учита енглеÑки текÑÑ‚ из датотеке „%sâ€.Ова команда покреће издвајач. %o – назив излазне датотеке, %K – лиÑта кључних речи, %F – лиÑта улазних датотека, %C – кодирање (в. иÑпод).Овај Ñтринг је пронађен у Poedit-овој преводилачкој меморији.Ово ће бити додато у командну линију Ñамо ако је наведено кодирање изворног кода. Параметар %c означава кодирање.Ово ће бити додато у командну линију за Ñваку улазну датотеку. Параметар %f означава назив датотеке.Ово ће бити додато у командну линију за Ñваку кључну реч. Параметар %k означава кључну реч.УкупноТранÑформацијеПреведите пројекат у облакуПреведено: %d од %d (%d%%)ПреводЈезик преводаПреводилачка меморијаОзначи превод за &дорадуСвојÑтва преводаДатотека превода је већ ажурна, ниÑу начињене промене у линијама превода.База података преводилачке меморије је оштећена: %s (%d).Грешка у преводилачкој меморији: %s (%d).Означи превод за &дорадуСвојÑтва преводаПредложени преводиЗа предложене преводе је потребан изворни текÑÑ‚. Ова функција неће радити Ñамо Ñа идентификаторима.Да биÑте кориÑтили предлоге превода потребно је да изворни језик буде познат. Poedit га није препознао у овој датотеци.Превод – %sÐије могуће ажурирати преводе из изворног кода, јер није пронађен кôд на локацији која је наведена у ÑвојÑтвима датотеке.ДваUTF-8 (препоручује Ñе)ОпозовиÐеочекивано недоÑтаје Ñадржај из XCLOC датотеке.Дошло је до неочекиваног изузетка: %sUnix (препоручено)Ðепозната грешка у Crowdin-у.Ðепозната грешкаÐепреведеноÐжурирајРезиме ажурирањаÐ&журирај ÑвеÐжурирај Ñве каталоге у пројектуЖелите ли да ажурирате Ñве каталоге у овом пројекту?Ð&журирај из POT датотеке…Ð&журирај из POT датотеке…Ðжурирај из кодаÐжурирај помоћу POT датотекеÐжурирај из кодаÐжурирај из изворног кодаРезиме ажурирањаÐжурирањаÐжурирање није уÑпелоÐжурирање каталога пројектаÐжурирање преводаÐжурирање информација о кориÑнику…Отпремање превода на %s није уÑпело.Отпремање превода на %s…Преводи Ñе отпремају…Прилагођени изразФонт за лиÑту:Фонт за текÑтуална поља:&Подразумевана правила за овај језикТражи Ñтрингове за превод у изворним датотекама према овим кључним речима (називима функција):КориÑти преводилачку меморијуПровери ваљаноÑтРезултати провере ваљаноÑтиВерзија %sПрикажи детаље…Прикажи детаље…Чека Ñе потврда идентитета…Упозорење: Добро дошли у PoeditПри ажурирању из изворног кодаСамо целе речиПрозорWindowsЖелите ли да енглеÑки буде изворни текÑÑ‚?Тражи укругПрелом:XLIFF датотеке преводаXcode каталог локализацијеДаСтрингове за превод можете да издвојите и директно из изворног кода:У Poedit-ов прозор можете превући Ñамо једну датотеку.Ðемате дозволу за читање датотека Ñа изворним кодом на локацији која је наведена у ÑвојÑтвима датотеке.Потребно је да поново покренете Poedit како би ова измена Ñтупила на Ñнагу.Ваше имеИзгубићете Ñве промене ако их не Ñачувате.Ваше име и имејл-адреÑа Ñе кориÑте Ñамо при поÑтављању поÑледњег преводиоца у заглављу GNU gettext датотека.ÐулаЗумПотребна дорадане бриши привремене датотеке (ради отклањања грешака)нпр. nplurals=2; plural=(n > 1);грешка: кориÑти Ñличне преводе из датотекеиди на Ñтавку у наведеном редуобрада URI адреÑе poedit://Alt+Ctrl+ДолеEnterЛевоДеÑноShift+ГореaltctrlshiftОÑновни подаци о %s апликацијиСакриј %sСакриј другеПоÑтавке...Изађи из %sУÑлугеПрикажи Ñвепреведи помоћу преводилачке меморијенепознат језикнеподржана верзија (%s)упозорење: adresa@domen.rs„%s†је неважећа POT датотека.poedit-3.6.3/locales/de.po0000644000175100001660000027444415011674363011070 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-06 10:16\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Diese Benachrichtigung nicht anzeigen" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Nicht erneut anzeigen" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Nicht erneut anzeigen" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Zusammenfassung aktualisieren" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Zusammenfassung der Aktualisierung" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Schließen" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Probleme" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Datei" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Zeile" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problem" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Neue Zeichenfolgen" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Neue Zeichenketten" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Entfernte Zeichenfolgen" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Entfernte Zeichenfolgen" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Quelldateien werden gesammelt …" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Übersetzbare Zeichenfolgen werden aus %s Datei extrahiert …" msgstr[1] "Übersetzbare Zeichenfolgen werden aus %s Dateien extrahiert …" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Fehler beim Laden der Datei mit extrahierten Übersetzungen." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "In: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Der Quellcode steht nicht zur Verfügung." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Übersetzungen konnten nicht aus dem Quellcode aktualisiert werden, weil kein " "Code an dem in den Eigenschaften der Datei angegebenen Ort gefunden wurde." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Zugriff verweigert." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Sie haben keine Berechtigung, Quellcode-Dateien von dem in den Eigenschaften " "der Datei angegebenen Speicherort zu lesen." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Wenn Sie den Zugriff auf Ihre Dateien zuvor verweigert haben, können Sie ihn " "hier erlauben: Systemeinstellungen > Datenschutz & Sicherheit > Dateien und " "Ordner." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Wenn Sie den Zugriff auf Ihre Dateien zuvor verweigert haben, können Sie ihn " "hier erlauben: Systemeinstellungen > Sicherheit > Datenschutz > Dateien & " "Ordner." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Fehler beim Extrahieren der Zeichenfolgen aus dem Quellcode." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Die Datei »%s« konnte nicht geöffnet werden." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Übersetzungen werden aktualisiert" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Unterschiede werden bestimmt …" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Änderungen werden zusammengefügt …" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Die Übersetzungsdatei ist bereits auf dem neuesten Stand, es wurden keine " "Änderungen an Zeichenfolgen vorgenommen." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Die Übersetzungsdatei wurde mit %s Änderung aktualisiert." msgstr[1] "Die Übersetzungsdatei wurde mit %s Änderungen aktualisiert." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Neue zu übersetzende Zeichenfolgen:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Entfernte Zeichenketten (nicht mehr benutzt):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "%d Problem mit den Quellzeichenfolgen wurde erkannt." msgstr[1] "%d Probleme mit den Quellzeichenfolgen wurde erkannt." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Details anzeigen …" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Details anzeigen …" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Fehlerhafter Header: »%s«" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO-Übersetzungsdateien" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT-Übersetzungsvorlagen" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF-Übersetzungsdateien" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode-Lokalisierungskatalog" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON-Übersetzungsdateien" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter-Übersetzungsdateien" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Alle Übersetzungsdateien" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Die Datei liegt in einem von Poedit nicht erkannten Format vor." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Diese JSON-Datei ist keine Übersetzungsdatei und kann nicht in Poedit " "bearbeitet werden." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" "Der Inhalt der Datei konnte mit folgendem Fehler nicht gelesen werden: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Die Datei »%s« ist schreibgeschützt.\n" "Bitte speichern Sie sie unter einem anderen Namen." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Datei »%s« konnte nicht gespeichert werden." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Bildschirmfotos:" #: src/catalog_po.cpp:134 #, 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 Zeile der Datei »%s« wurde nicht korrekt geladen." msgstr[1] "%i Zeilen der Datei »%s« wurden nicht korrekt geladen." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Zeile %d der Datei »%s« ist beschädigt (ungültige %s-Daten)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Beschädigte PO-Datei: Verwendung von msgstr in Singularform mit msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Beschädigte PO-Datei: Verwendung von msgstr in Pluralform ohne msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Die Datei konnte nicht geladen werden. Sie ist vermutlich beschädigt." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Beim Laden der Datei sind Fehler aufgetreten. Möglicherweise fehlen einige " "Daten oder sind beschädigt worden." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Es gab einen Fehler beim Schön-Formatieren der Datei, sie wurde aber korrekt " "gespeichert." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Die Datei konnte nicht im angegebenen Zeichensatz »%s« gespeichert werden.\n" "\n" "Sie wurde stattdessen in UTF-8 gespeichert und die Einstellung wurde " "entsprechend angepasst." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Fehler beim Speichern der Datei" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "»%s« ist keine gültige POT-Datei." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Unerwartet fehlender Inhalt in der XCLOC-Datei." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" "Das Speichern an einem anderen Ort wird für XCLOC-Dateien nicht unterstützt." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Fehler beim Laden der XLIFF-Datei: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "nicht unterstützte Version (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Fehlerhaftes Markup in Übersetzungszeichenkette." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Poedit mit unterstützten Cloud-Lokalisierungsplattformen verbinden, um die " "darauf verwalteten Übersetzungen nahtlos zu synchronisieren." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Wie funktioniert die Cloud-Synchronisierung?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Konto" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(nicht angemeldet)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Cloud-Übersetzung öffnen" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Konten verwalten" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekt:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Sprache:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Auf dem Cloud-Konto anmelden" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Auf dem Cloud-Konto anmelden" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Es sind keine Übersetzungsprojekte in Ihrem Konto vorhanden." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Neueste Übersetzungen werden heruntergeladen …" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Bei %s anmelden" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Synchronisierung läuft" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Übersetzungen werden auf %s hochgeladen …" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Hochladen von Übersetzungen auf %s fehlgeschlagen." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Fehler bei der Synchronisierung" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Hinzufügen" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Unbekannter Crowdin-Fehler." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Nicht autorisiert, bitte melden Sie sich erneut an." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "String-basierte Crowdin-Projekte werden nicht unterstützt." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Herunterladen von Übersetzungen ist in diesem Projekt deaktiviert." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Anmelden" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Anmelden" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Abmelden" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Abmelden" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Erfahren Sie mehr über Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin ist eine Online-Übersetzungsplattform und ein gemeinschaftliches " "Übersetzungswerkzeug. Wir verwenden Crowdin selbst, um Poedit in viele " "Sprachen zu übersetzen, und wir lieben es." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Auf Authentifizierung warten …" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Benutzerinformationen werden aktualisiert …" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Bei Crowdin anmelden" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Fehler bei der Synchronisierung mit Crowdin." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin Fehler" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Übersetzungen werden hochgeladen …" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopieren" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Weitere Informationen" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Hilfe" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO-Dateien können nicht direkt in Poedit bearbeitet werden." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Fehler beim Öffnen der Datei" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Bitte öffnen Sie stattdessen die zugehörige PO-Datei. Wenn Sie die Datei " "speichern, wird die MO-Datei ebenfalls aktualisiert." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "Temporäre Dateien nicht entfernen (für Fehlersuche)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "poedit://-Adresse verwenden" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "zum Element in der angegebenen Zeilennummer springen" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Kommunikation mit Poedit-Prozess fehlgeschlagen." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ein unerwarteter Fehler ist aufgetreten: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Übersetzungsvorlage auswählen" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Ungültige Datei" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Übersetzungsdatei auswählen" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit ist ein einfach zu bedienender Übersetzungseditor." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Sie können nicht mehr als eine Datei ins Poedit-Fenster ziehen." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Die Datei »%s« ist keine Übersetzungsdatei." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Datei »%s« existiert nicht." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Die Rechtschreibprüfung ist deaktiviert, weil das Wörterbuch für %s nicht " "installiert ist." #: src/edframe.cpp:871 msgid "Install" msgstr "Installieren" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Die Datei »%s« wurde von einer anderen Anwendung geändert." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Datei neu laden" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Möchten Sie die Datei neu laden? Ihre ungespeicherten Änderungen in Poedit " "gehen verloren, wenn Sie dies tun." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignorieren" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Datei neu laden" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Die Datei wurde verändert. Möchten Sie die Änderungen speichern?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Änderungen speichern" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Ihre Änderungen gehen verloren, wenn Sie diese nicht speichern." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Speichern" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Nicht speichern" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Nicht speichern" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Die von der anderen Anwendung vorgenommenen Änderungen gehen verloren, wenn " "Sie speichern." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Abbrechen" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Trotzdem speichern" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Trotzdem speichern" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Speichern unter …" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Kompilieren nach …" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Kompilierte Übersetzungsdateien" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Nach HTML exportieren …" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML-Dateien" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Nach HTML exportieren" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Die Aktualisierung ist fehlgeschlagen" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Referenzdatei öffnen" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Aus &POT-Datei aktualisieren …" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Aus &POT-Datei aktualisieren …" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Es wurde %d Problem mit der Übersetzung gefunden." msgstr[1] "Es wurden %d Probleme mit der Übersetzung gefunden." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Überprüfungsergebnisse" #: src/edframe.cpp:1842 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 "" "Fehlerhafte Einträge wurden in der Liste rot markiert. Beim Auswählen eines " "dieser Einträge werden Details zum Fehler angezeigt." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Die Datei wurde sicher gespeichert." #: src/edframe.cpp:1854 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 " "möglicherweise funktioniert sie nicht korrekt." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Die Datei wurde gespeichert, aber das Kompilieren ins MO-Format schlug fehl " "und kann daher nicht verwendet werden." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Die Datei wurde in das MO-Format kompiliert, allerdings wird sie " "wahrscheinlich nicht ordnungsgemäß funktionieren." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Die Datei kann nicht in das MO-Format kompiliert und verwendet werden." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Es wurden keine Probleme mit der Übersetzung gefunden." #: src/edframe.cpp:1894 #, 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] "" "Die Übersetzung ist bereit für die Nutzung, aber %d Eintrag ist noch nicht " "übersetzt." msgstr[1] "" "Die Übersetzung ist bereit für die Nutzung, aber %d Einträge sind noch nicht " "übersetzt." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Die Übersetzung kann verwendet werden." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "Ungültige Inhalte der Datei »%s« wurden von Poedit automatisch korrigiert." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Die Datei enthält doppelte Einträge, die in PO-Dateien nicht zulässig sind " "und dazu führen würden, dass die Datei nicht verwendet werden kann. Dieses " "Problem wurde von Poedit behoben. Sie sollten allerdings Übersetzungen, die " "mit »Benötigt Überarbeitung« markiert sind, überprüfen und diese falls " "erforderlich korrigieren." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Sprache der Übersetzung ist nicht festgelegt." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Sprache festlegen" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Sprache der Übersetzung ist dieselbe wie die Ausgangssprache." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Sprache korrekt festlegen" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Sprache korrekt festlegen" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Diese Datei hat Einträge mit Plural-Formen, jedoch sind im Kopfbereich der " "Datei keine Plural-Formen eingerichtet." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Einträge in dieser Datei haben eine andere Anzahl an Plural-Formen als im " "Kopfbereich der Datei angegeben" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Im Kopfbereich der Datei fehlt die Angabe »Plural-Forms«." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntaxfehler im Dateikopf bei »Plural-Forms« (»%s«)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Kopfbereich reparieren" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Kopfbereich reparieren" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Die verwendete Plural-Form der Datei ist unüblich für %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Überprüfen" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Möchten Sie Englisch für den Quelltext verwenden?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Diese Datei verwendet Zeichenketten-IDs statt Quelltext. Poedit kann " "englische Texte aus der Datei »%s« für Sie laden." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Englisch laden" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Übersetzt: %d von %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Verbleibend: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d Fehler" msgstr[1] "%d Fehler" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d Eintrag" msgstr[1] "%d Einträge" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (ungespeichert)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (geändert)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Fehler beim Aktualisieren des Übersetzungsspeichers: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Die Datei »%s« konnte nicht geöffnet werden." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Übersetzungen mit identischem Quelltext entfernen" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Möchten Sie alle Übersetzungen entfernen, die mit dem Quelltext identisch " "sind?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Diese Aktion wird alle Übersetzungen löschen, die genau mit dem Quelltext " "übereinstimmen. Dies kann nicht rückgängig gemacht werden." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Behalten" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Entfernen" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Ungenutzte Übersetzungen entfernen" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Sollen alle nicht mehr verwendeten Übersetzungen entfernt werden?" #: src/edframe.cpp:2879 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 "" "Wenn Sie mit dem Bereinigen fortfahren, werden alle als gelöscht markierten " "Texte endgültig gelöscht. Wenn die Texte in Zukunft wieder hinzugefügt " "werden, müssen Sie sie erneut übersetzen." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Bereinigen" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Quelltext übernehmen" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Quelltext übernehmen" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Strg+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Übersetzung löschen" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Übersetzung löschen" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Kommentar bearbeiten" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Kommentar bearbeiten" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Code-Vorkommen" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Code-Vorkommen" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Seitenleiste ausblenden" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Seitenleiste anzeigen" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Statusleiste ausblenden" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Statusleiste anzeigen" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Zeichenkettenlänge in Zeichen: Übersetzung | Quelle" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Länge der Zeichenkette in Zeichen" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Quelltext" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singular" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plural" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Übersetzung" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Vorübersetzt" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Benötigt Überarbeitung" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Benötigt Überarbeitung" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Neue Übersetzung erstellen" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Eine neue Übersetzung aus dieser POT-Datei erstellen." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Quelltext-ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Alles" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Form %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Form %i (ungenutzt)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Null" #: src/editing_area.cpp:788 msgid "One" msgstr "Singular" #: src/editing_area.cpp:790 msgid "Two" msgstr "Zwei" #: src/editing_area.cpp:804 msgid "Other" msgstr "Plural" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Zeichenkettenkontext: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Zeichenkettenidentifikator: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s-Format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s-Format" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Übersetzung – %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Quelltext — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "unbekannte Sprache" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Netzwerkfehler: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Unbekannter Fehler" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Zusammenführen der gettext-Kataloge fehlgeschlagen." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Im Editor öffnen" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Im Editor öffnen" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "In der Datei werden keine Informationen über das Vorkommen dieser " "Zeichenkette im Quellcode bereitgestellt." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Keine Nutzungsinformationen" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d Code-Vorkommen" msgstr[1] "%d Code-Vorkommen" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Quellcode nicht gefunden" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit kann den Quellcode nicht anzeigen, wo die Zeichenkette verwendet " "wird, weil die Datei entweder nicht an der angegebenen Stelle verfügbar ist " "oder es sich um einen symbolischen Verweis handelt, der nicht auf eine echte " "Datei verweist." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Datei kann nicht geöffnet werden" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit konnte die Datei »%s« nicht öffnen." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Suchen" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Ersetzen" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Optionen" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Groß-/Kleinschreibung ignorieren" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Am Ende von vorne beginnen" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Nur ganze Wörter" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "In Quelltexten suchen" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "In Übersetzungen suchen" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "In Kommentaren suchen" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "&Alle ersetzen" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "&Alle ersetzen" #: src/findframe.cpp:150 msgid "&Replace" msgstr "Erset&zen" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Zurück" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Weiter >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Zu suchende Zeichenkette" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Ersetzungszeichenkette" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "Warnung: " #: src/gexecute.cpp:171 msgid "error: " msgstr "Fehler: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Sprachname oder -code" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Übersetzungssprache" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Sprache der Übersetzung:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Alle Zeichenketten" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" "Die Details des Localazy-Projekts konnten nicht heruntergeladen werden." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" "Beim Hochladen der Übersetzungen auf Localazy ist ein Fehler aufgetreten." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projekte" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Mehr erfahren über %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy ist eine hochautomatisierte Lokalisierungsplattform, mit der jeder " "seine Produkte und Inhalte einfach in mehrere Sprachen übersetzen kann." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Projekt hinzufügen" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Projekt hinzufügen" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit-Katalogverwaltung" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Bearbeiten …" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Neues Übersetzungsprojekt erstellen" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Projekt löschen" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Projekt bearbeiten" #: src/manager.cpp:176 msgid "Update all" msgstr "Alle aktualisieren" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Alle Kataloge des Projektes aktualisieren" #: src/manager.cpp:378 msgid "Total" msgstr "Gesamt" #: src/manager.cpp:379 msgid "Untrans" msgstr "Nicht übersetzt" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Benötigt Überarbeitung" #: src/manager.cpp:381 msgid "Errors" msgstr "Fehler" #: src/manager.cpp:382 msgid "Last modified" msgstr "Letzte Änderung" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Ordner auswählen" #: src/manager.cpp:433 msgid "Directories:" msgstr "Ordner:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Möchten Sie das Projekt »%s« löschen?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Projekt löschen" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Das Löschen des Projekts löscht keine Übersetzungsdateien." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Bestätigung" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Alle Kataloge in diesem Projekt aktualisieren?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" "Führt eine Aktualisierung aus dem Quellcode für alle Dateien im Projekt " "durch." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Projektkataloge aktualisieren" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Auf Aktualisierungen prüfen …" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Katalogverwaltung" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Einstellungen …" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Bearbeiten" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Rückgängig" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Wiederherstellen" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Einsetzen und Stil anpassen" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Löschen" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Rechtschreibung und Grammatik" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Rechtschreibung und Grammatik anzeigen" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Dokument jetzt prüfen" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Rechtschreibung während der Eingabe prüfen" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Grammatik zusätzlich zur Rechtschreibung prüfen" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Automatische Rechtschreibkorrektur" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Ersetzungen" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Ersetzungen anzeigen" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Intelligentes Kopieren/Einsetzen" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Intelligente Anführungszeichen" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Intelligente Bindestriche" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Intelligente Links" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Textersetzung" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformationen" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Großschreiben" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Kleinschreiben" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Wortanfänge großschreiben" #: src/menus.cpp:237 msgid "Speech" msgstr "Sprache" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Sprechen starten" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Sprechen stoppen" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Ansicht" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Werkzeugleiste anzeigen" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Werkzeugleiste anpassen …" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Vollbild" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Fenster" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimieren" #: src/menus.cpp:264 msgid "Zoom" msgstr "Vergrößern" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Willkommen bei Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Alle in den Vordergrund bringen" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informationen zum Übersetzer" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Name:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Ihr Name" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-Mail:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "du@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ihr Name und die E-Mail-Adresse werden nur verwendet, um den »Last-" "Translator«-Eintrag in GNU gettext-Dateien zu setzen." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Bearbeiten" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "MO-Datei beim Speichern automatisch erstellen" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Rechtschreibung prüfen" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Den Fokus immer auf das Eingabefeld setzen" #: src/prefsdlg.cpp:211 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 "" "Der Zeichenkettenliste nie den Fokus geben. Wenn aktiviert, müssen Sie Strg-" "Pfeiltasten zur Navigation benutzen. Sie können jedoch auch sofort Text " "eingeben, ohne vorher zum Ändern des Fokus Tab drücken zu müssen." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Erscheinungsbild" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Benutzerdefinierte Schriftart für Listen verwenden:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Benutzerdefinierte Schriftart für Textfelder verwenden:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "GUI-Sprache auswählen" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(benötigt Windows 8 oder neuer)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Allgemein" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Übersetzungsspeicher verwenden" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Verwalten …" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Beim Aktualisieren von Quelldaten" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "unklare Übereinstimmung innerhalb der Datei" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "Vorübersetzung aus dem Übersetzungsspeicher" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit kann versuchen, neue Einträge ausschließlich mit früheren " "Übersetzungen aus der Datei zu befüllen oder den gesamten " "Übersetzungsspeicher zu nutzen. Der Übersetzungsspeicher wird nicht sehr " "effektiv sein, wenn dieser nahezu leer ist, wird aber immer besser, je mehr " "Übersetzungen hinzugefügt werden." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Gespeicherte Übersetzungen:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Größe der Datenbank auf der Festplatte:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Übersetzungsdateien importieren …" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Übersetzungsdateien importieren …" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Aus TMX importieren …" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Aus TMX importieren …" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Nach TMX exportieren …" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Nach TMX exportieren …" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Zurücksetzen" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Übersetzungsdateien zum Importieren auswählen" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "TMX-Dateien zum Importieren auswählen" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX-Dateien" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Übersetzungen werden importiert …" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Das Importieren des Übersetzungsspeichers ist fehlgeschlagen." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importieren von »%s« …" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s Übersetzung wurde importiert." msgstr[1] "%s Übersetzungen wurden importiert." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exportieren als …" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Übersetzungen werden exportiert …" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Exportieren des Übersetzungsspeichers nach »%s« ist fehlgeschlagen." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Übersetzungsspeicher zurücksetzen" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "" "Sind Sie sicher, dass der Übersetzungsspeicher zurückgesetzt werden soll?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Das Zurücksetzen des Übersetzungsspeichers löscht alle darin gespeicherten " "Übersetzungen unwiderruflich. Dieser Schritt kann nicht rückgängig gemacht " "werden." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Übersetzungsspeicher" #: src/prefsdlg.cpp:730 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 "" "Quellcode-Extraktoren werden verwendet, um übersetzbare Zeichenketten in den " "Quellcode-Dateien zu suchen und diese zu extrahieren, so dass sie übersetzt " "werden können." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Benutzerdefinierte Extraktoren:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Benutzerdefinierte Extraktoren:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Unterstützt alle Programmiersprachen, die von GNU gettext Werkzeugen erkannt " "werden (PHP, C/C++, C#, Perl, Python, Java, JavaScript und weitere)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Extraktor entfernen" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Sind Sie sicher, dass der Extraktor »%s« entfernt werden soll?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extraktoren" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Konten" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Automatisch nach Aktualisierungen suchen" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Beta-Versionen einbeziehen" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta-Versionen enthalten die neuesten Funktionen und Verbesserungen, können " "allerdings etwas weniger stabil sein." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Aktualisierungen" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Diese Einstellungen betreffen die interne Formatierung der PO-Dateien. " "Passen Sie sie an, wenn Sie z. B. für Versionskontrolle bestimmte " "Anforderungen haben." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Zeilenenden:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (empfohlen)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Umbrechen bei:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Formatierung vorhandener Dateien beibehalten" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Erweitert" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Einstellungen" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Zeichenketten werden vorbereitet …" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Vorübersetzen aus dem Übersetzungsspeicher …" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u Zeichenkette vorübersetzt" msgstr[1] "%u Zeichenketten vorübersetzt" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Vorübersetzen …" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d Eintrag wurde vorübersetzt." msgstr[1] "%d Einträge wurden vorübersetzt." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Die Übersetzungen wurden mit »Benötigt Überarbeitung« markiert, weil sie " "ungenau sein könnten. Sie sollten die Einträge auf ihre Richtigkeit " "überprüfen." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Genaue Treffer von TM" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Ungefähre Treffer von TM" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Es konnten keine Einträge vorübersetzt werden." #: src/pretranslate.cpp:218 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 "" "Der Übersetzungsspeicher beinhaltet keine Zeichenketten, die dem Inhalt " "dieser Datei ähneln. Der Übersetzungsspeicher kann erst dann effizient bei " "semi-automatischen Übersetzungen helfen, wenn Poedit ausreichend von den " "bisherigen Übersetzungen gelernt hat." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Eine Vorübersetzung ist ohne Quelltext nicht möglich." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Vorübersetzung" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Die Vorübersetzung setzt voraus, dass der Quelltext verfügbar ist. Sie " "funktioniert nicht, wenn nur IDs ohne den eigentlichen Text verwendet werden." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Eine unbekannte Sprache kann nicht vorübersetzt werden." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Die Vorübersetzung setzt voraus, dass die Sprache des Quelltextes bekannt " "ist. Poedit konnte sie in dieser Datei nicht erkennen." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Nur genaue Treffer ausfüllen" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Standardmäßig werden auch ungenaue Ergebnisse übernommen und mit »Benötigt " "Überarbeitung« markiert. Wählen Sie diese Option, um nur exakte " "Übereinstimmungen zu übernehmen." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Genaue Treffer nicht mit »Benötigt Überarbeitung« markieren" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Nur aktivieren, wenn Sie der Qualität Ihres Übersetzungsspeichers vertrauen. " "Standardmäßig werden alle automatischen Übersetzungen mit »Benötigt " "Überarbeitung« markiert und sollten überprüft werden." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Die Vorübersetzung findet automatisch übereinstimmende oder ungenaue Treffer " "für unübersetzte Zeichenketten im Übersetzungsspeicher und befüllt die " "fehlenden Übersetzungen." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Fehler: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d Fehler ist aufgetreten:" msgstr[1] "%d Fehler sind aufgetreten:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Es ist ein Fehler aufgetreten." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d Fehler ist aufgetreten." msgstr[1] "%d Fehler sind aufgetreten." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Abbrechen …" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Ordner oder Dateien hierherziehen" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Ordner oder Dateien hierherziehen" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Ordner hinzufügen …" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Ordner hinzufügen …" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Dateien hinzufügen …" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Dateien hinzufügen …" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Platzhalter hinzufügen …" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Platzhalter hinzufügen …" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Im Finder anzeigen" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Im Explorer anzeigen" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Im Ordner anzeigen" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Pfade" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Ausgeschlossene Pfade" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Erweiterte Extraktionseinstellungen" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Anmerkungen für Übersetzer extrahieren aus:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Kommentare mit Präfix:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Alle Kommentare" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Zusätzliche xgettext-Parameter:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Zusätzliche Schlüsselwörter" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Name des Projektes der Übersetzung" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Name des Teams und E-Mail-Adresse oder URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "z. B. nplurals=2; plural=(n != 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (empfohlen)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Bitte speichern Sie die Datei vorher. Dieser Abschnitt kann bis dahin nicht " "bearbeitet werden." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Platzhalter-Korrektheit" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Platzhalter »%s« fehlt in der Übersetzung." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Überflüssiger Platzhalter »%s«, der nicht im Quelltext vorhanden ist." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Plural-Form-Übersetzungen" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Es sind nicht alle Pluralformen übersetzt." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Inkonsistente Groß-/Kleinschreibung" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Die Übersetzung sollte als Satz beginnen." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Die Übersetzung sollte mit einem Kleinbuchstaben beginnen." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Inkonsistenter Leerraum" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Die Übersetzung beginnt nicht mit einem Leerzeichen." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "" "Die Übersetzung beginnt mit einem Leerzeichen, der Quelltext allerdings " "nicht." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Am Ende der Übersetzung fehlt ein Zeilenumbruch." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" "Die Übersetzung endet mit einem Zeilenumbruch, der Quelltext allerdings " "nicht." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Am Ende der Übersetzung fehlt ein Leerzeichen." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "" "Die Übersetzung endet mit einem Leerzeichen, der Quelltext allerdings nicht." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Satzzeichenprüfungen" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Die Übersetzung sollte mit »%s« enden." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Die Übersetzung sollte nicht mit »%s« enden." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Die Übersetzung endet mit »%s«, der Quelltext allerdings mit »%s«." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Cloud" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Menü leeren" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Menü leeren" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Kommentar:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Aktualisieren" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Löschen" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Den Kommentar löschen" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Projekt bearbeiten" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Projektname:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Durchsuchen" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Ordner zur Liste hinzufügen" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Datei" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Neu …" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Neu aus &POT-/PO-Datei …" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Neu aus &POT-/PO-Datei …" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "Ö&ffnen …" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Benutzte Dokumente" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Zuletzt verwendete öffnen" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Cloud-Übersetzung öffnen …" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Cloud-Übersetzung öffnen …" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Startfenster" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Startfenster" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Katalogverwaltung" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Katalogverwaltung" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "S&chließen" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Speichern" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Speichern &unter …" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Speichern &unter …" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "MO-Datei erstellen …" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "Nach HTML e&xportieren …" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Auf Aktualisierungen prüfen …" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Einstellungen …" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Einstellungen" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Beenden" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Beenden" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Vom Singular kopieren" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Vom Singular kopieren" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Übersetzung benötigt &Überarbeitung" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Übersetzung benötigt &Überarbeitung" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "&Kommentar bearbeiten" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "&Kommentar bearbeiten" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Vorschläge" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Suchen …" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Ersetzen …" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Nächstes Vorkommen suchen" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Vorheriges Vorkommen suchen" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Suchen und Ersetzen …" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Nächstes Vorkommen suchen" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Vorheriges Vorkommen suchen" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "String &ID anzeigen" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "String &ID anzeigen" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Warnungen anzeigen" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Warnungen anzeigen" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Nach &Datei sortieren" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Nach &Datei sortieren" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Nach &Quelltext sortieren" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Nach &Quelltext sortieren" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Nach &Übersetzung sortieren" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Nach &Übersetzung sortieren" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "Nach Zusammenhang &gruppieren" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "Nach Zusammenhang &gruppieren" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Einträge mit Fehlern zuerst" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Einträge mit Fehlern zuerst" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Nicht übersetzte Einträge zuerst" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Nicht übersetzte Einträge zuerst" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "Code-Vorkommen &anzeigen" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "Code-Vorkommen &anzeigen" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Seitenleiste anzeigen" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Statusleiste anzeigen" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Übersetzung" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Aktualisieren aus Quellcode" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Aktualisieren aus Quellcode" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Mit Crowdin synchronisieren" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Vorüberse&tzung …" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Übersetzungen prüfen" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Übersetzungen prüfen" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Übersetzungen mit identischem Quelltext entfernen" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Ungenutzte Übersetzungen entfernen" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Ungenutzte Übersetzungen entfernen" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Eigenschaften …" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Navigieren" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Erledigt und weiter" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Erledigt und weiter" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Zuvor bearbeitet" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Zuvor bearbeitet" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Vorherige Übersetzung" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Vorherige Übersetzung" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Nächste Übersetzung" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Nächste Übersetzung" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "V&orherige unfertige" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "V&orherige unfertige" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "N&ächste unfertige" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "N&ächste unfertige" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Vorige Plural-Form" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Vorige Plural-Form" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Nächste Plural-Form" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Nächste Plural-Form" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Online-Hilfe" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Online-Hilfe" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext Dokumentation" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext Dokumentation" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Über Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Über" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Extraktor-Einrichtung" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Durch Semikola getrennte Liste der Dateiendungen (z. B. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Aufruf:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Befehl, um Übersetzungen zu extrahieren:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Mit diesem Befehl wird der Extraktor gestartet,\n" "wobei die folgenden Ersetzungen stattfinden:\n" "%o durch den Namen der Ausgabedatei,\n" "%K durch die Liste der Schlüsselwörter,\n" "%F durch die Liste der Eingabedateien,\n" "%C durch den Zeichensatz (siehe unten)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Ein Eintrag in der Schlüsselwortliste:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Wird für jedes Schlüsselwort einmal an die Kommandozeile\n" "angehängt. %k repräsentiert das Schlüsselwort." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Ein Eintrag in der Eingabedatei-Liste:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Wird für jede Eingabedatei einmal an die Kommandozeile\n" "angehängt. %f repräsentiert den Dateinamen." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Zeichensatz des Quellcodes:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Wird nur dann an die Kommandozeile angefügt, wenn der\n" "Zeichensatz des Quellcodes übergeben wurde. %c repräsentiert den Zeichensatz." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Übersetzungseigenschaften" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Projektname und -version:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Übersetzungsteam:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Pluralformen:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Standard-Regeln für diese Sprache verwenden" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Benutzerdefinierten Ausdruck verwenden" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Weitere Informationen zu Pluralformen" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Zeichensatz:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Erweiterte Extraktionseinstellungen …" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Erweiterte Extraktionseinstellungen …" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Übersetzungseinstellungen" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Quell-Pfade" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Quell-Pfade" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Text aus Quelldateien in den folgenden Ordnern extrahieren:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Ausgangspfad:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Schlüsselwörter aus Quelltexten" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Schlüsselwörter aus Quelltexten" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Diese Schlüsselwörter (Funktionsnamen) benutzen, um übersetzbare\n" "Zeichenketten in Quelldateien zu erkennen:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Standard-Schlüsselwörter ebenso für unterstützte Sprachen verwenden" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Weitere Informationen zu gettext-Schlüsselwörtern" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Datei öffnen" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Datei speichern" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Prüfen" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Auf Fehler in der Übersetzung prüfen" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Aktualisieren aus Quellcode" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Aktualisieren aus Quellcode" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Aktualisieren aus Quellcode" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Seitenleiste" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Seitenleiste anzeigen oder verbergen" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Vorheriger Quelltext" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Der frühere Quelltext (bevor er durch eine Aktualisierung geändert wurde), " "auf den sich die jetzt unklare Übersetzung bezieht." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Anmerkungen für Übersetzer" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Kommentar" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Kommentar hinzufügen" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Kommentar hinzufügen" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Aus Übersetzungsspeicher löschen" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Aus Übersetzungsspeicher löschen" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Übersetzungsvorschläge" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Keine Treffer gefunden" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Keine Treffer gefunden" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Diese Zeichenkette wurde im Übersetzungsspeicher von Poedit gefunden." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Übersetzungsvorschläge setzen voraus, dass der Quelltext vorhanden ist. Sie " "funktionieren nicht, wenn nur IDs ohne den eigentlichen Text verwendet " "werden." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Für Übersetzungsvorschläge ist es erforderlich, dass die Sprache des " "Quelltextes bekannt ist. Poedit konnte sie in dieser Datei nicht erkennen." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Programm konnte nicht ausgeführt werden: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Die TMX-Datei ist fehlerhaft." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Übersetzungsspeicher-Datenbank ist beschädigt: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Übersetzungsspeicherfehler: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Standardsprache verwenden)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Sprachauswahl" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Bitte wählen Sie Ihre bevorzugte Sprache aus" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Sie müssen Poedit neu starten, damit diese Änderung wirksam wird." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Temporäres Verzeichnis konnte nicht erstellt werden." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Es gibt keine Übersetzungen. Das ist ungewöhnlich." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Die übersetzbaren Einträge werden nicht manuell in das Gettext-System " "eingefügt, sondern automatisch aus dem Quellcode extrahiert. Auf diese Weise " "bleiben sie aktuell und genau. Übersetzer verwenden in der Regel PO-" "Vorlagendateien (POTs), die der Entwickler für sie vorbereitet hat." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Mehr über GNU gettext erfahren" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Der einfachste Weg, diese Datei mit Übersetzungen zu befüllen, ist, sie aus " "einer POT-Datei zu aktualisieren:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Aus POT-Datei aktualisieren" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Übersetzbare Zeichenketten aus existierender POT-Vorlage verwenden." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Sie können die zu übersetzenden Zeichenketten auch direkt aus dem Quellcode " "extrahieren:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Aus Quellcode extrahieren" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Quellcode-Extrahierung in den Einstellungen konfigurieren." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Version %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Neu erstellen" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Neue Übersetzung aus POT-Vorlage erstellen." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Dateien durchsuchen" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Übersetzungsdateien öffnen und bearbeiten." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Cloud-Projekt übersetzen" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Mit anderen online zusammenarbeiten." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Zuletzt verwendete Dateien" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sync" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Synchronisieren der Übersetzung mit Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Über %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s-Einstellungen" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Über %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Dienste" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "%s ausblenden" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Andere ausblenden" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Alle anzeigen" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "%s beenden" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Einstellungen …" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Einstellungen …" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Einstellungen …" #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Anwenden" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Anwenden" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Zurück" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Zurück" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "A&bbrechen" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Bereinigen" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Bereinigen" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopieren" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Ausschneiden" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Ausschneiden" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Bearbeiten" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Beenden" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Hilfe" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Neu" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Neu" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Nein" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Nein" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Öffnen …" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "Ö&ffnen …" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Öffnen …" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "E&infügen" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Einfügen" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Einstellungen" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Wiederherstellen" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Aktualisieren" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "Speichern &unter" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Speichern unter" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "&Alles auswählen" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Alles auswählen" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Rückgängig" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Ja" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ja" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Umschalt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Eingabe" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Hoch" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Runter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Links" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Rechts" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "strg" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "umschalt" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Warnung: " poedit-3.6.3/locales/ko.po0000644000175100001660000027100515011674364011100 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-08 10:16\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\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" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: ko\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "ì´ ì•Œë¦¼ 메시지 숨김" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "다시 표시하지 않ìŒ" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "다시 표시하지 않ìŒ" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "변경 사항 요약" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "ì—…ë°ì´íЏ 요약" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "닫기" #: src/cat_update.cpp:161 msgid "Issues" msgstr "문제" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "파ì¼" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "ì„ " #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "문제" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "새 문ìžì—´" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "새 문ìžì—´" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "ì œê±°ëœ ë¬¸ìžì—´" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "ì œê±°ëœ ë¬¸ìžì—´" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "소스 íŒŒì¼ ìˆ˜ì§‘ 중…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "%s 파ì¼ì—서 번역 가능 문ìžì—´ 가져오는 중…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "추출한 ë²ˆì—­ì´ ë“¤ì–´ìžˆëŠ” íŒŒì¼ ë¶ˆëŸ¬ì˜¤ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "íŒŒì¼ ìœ„ì¹˜: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "소스 코드가 없습니다." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "íŒŒì¼ ì†ì„±ì—서 지정한 ìœ„ì¹˜ì— ì½”ë“œê°€ 없어, 소스 코드ì—서 번역 í•­ëª©ì„ ìƒˆë¡œ 가져" "올 수 없습니다." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "ê¶Œí•œì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "íŒŒì¼ ì†ì„±ì˜ 지정 위치ì—서 소스 코드 파ì¼ì„ 불러올 수 있는 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "ì´ì „ì— íŒŒì¼ ì ‘ê·¼ì„ ê±°ë¶€í–ˆë‹¤ë©´, 시스템 설정 > ê°œì¸ì •ë³´ ë° ë³´ì•ˆ > íŒŒì¼ ë° í´ë” " "ì—서 허용할 수 있습니다." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "íŒŒì¼ ì ‘ê·¼ ê¶Œí•œì„ ì˜ˆì „ì— ê±°ë¶€í–ˆë˜ ì ì´ 있었다면, 시스템 설정 > 보안 ë° ê°œì¸ì •" "ë³´ > ê°œì¸ì •ë³´ > íŒŒì¼ ë° í´ë”ì—서 허용할 수 있습니다." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "소스 ì½”ë“œì˜ ë¬¸ìžì—´ ì¶”ì¶œì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "\"%s\" 파ì¼ì„ ì—´ 수 없습니다." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "번역 ì—…ë°ì´íЏ 중" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "ì°¨ì´ì  ë¹„êµ ì¤‘â€¦" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "ì°¨ì´ì  병합 중…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "번역 파ì¼ì´ ì´ë¯¸ 최신 ìƒíƒœì´ë©°, 문ìžì—´ì— 변경 ì‚¬í•­ì´ ì—†ìŠµë‹ˆë‹¤." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "번역 파ì¼ì— ë°”ë€ ë‚´ìš©ì´ %sê±´ 있습니다." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "번역할 새 문ìžì—´:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "ì œê±°ëœ ë¬¸ìžì—´ (ë” ì´ìƒ ì“°ì´ì§€ 않ìŒ):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "ì›ë³¸ 문ìžì—´ì—서 문제 %dê±´ì„ íƒì§€í–ˆìŠµë‹ˆë‹¤." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "세부정보 보기…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "세부정보 보기…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "ìž˜ëª»ëœ í—¤ë”: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO 번역 파ì¼" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT 번역 ì–‘ì‹" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF 번역 파ì¼" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode 현지화 카탈로그" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON 번역 파ì¼" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "플루터 번역 파ì¼" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "모든 번역 파ì¼" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Poeditì—서 ì¸ì‹í•  수 없는 íŒŒì¼ í˜•ì‹ìž…니다." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "ì´ JSON 파ì¼ì€ 번역 파ì¼ì´ 아니므로 Poeditì—서 편집할 수 없습니다." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "ë‹¤ìŒ ì˜¤ë¥˜ë¡œ ì¸í•´ íŒŒì¼ ë‚´ìš© ì½ê¸°ì— 실패했습니다: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "“%s†파ì¼ì€ ì½ê¸° ì „ìš©ì´ë©° 저장할 수 없습니다.\n" "다른 ì´ë¦„으로 저장하세요." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "%s 파ì¼ì„ 저장할 수 없습니다." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "스í¬ë¦°ìƒ·:" #: src/catalog_po.cpp:134 #, 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] "“%2$s†파ì¼ì˜ %1$i번째 ì¤„ì„ ì œëŒ€ë¡œ 불러오지 못했습니다." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "" "“%2$s†파ì¼ì˜ %1$d번째 ì¤„ì´ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤ (올바르지 ì•Šì€ %3$s ë°ì´í„°)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "PO íŒŒì¼ ì˜¤ë¥˜: msgid_pluralì„ ì‚¬ìš©í•œ 단수 형ì‹ì˜ msgstr" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "PO íŒŒì¼ ì˜¤ë¥˜: msgid_plural ì—†ì´ ì‚¬ìš©í•œ 복수 형ì‹ì˜ msgstr" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "파ì¼ì„ 불러오지 못했습니다. ì†ìƒë˜ì—ˆì„ 수 있습니다." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "파ì¼ì„ 불러올 때 오류가 있었습니다. ë°ì´í„° ì¼ë¶€ê°€ 빠지거나 ê¹¨ì¡Œì„ ìˆ˜ë„ ìžˆìŠµë‹ˆ" "다." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "íŒŒì¼ êµ¬ì¡°ë¥¼ 다듬는 중 문제가 ë°œìƒí–ˆìŠµë‹ˆë‹¤(하지만 문제 ì—†ì´ ì €ìž¥í–ˆìŠµë‹ˆë‹¤)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "ì´ íŒŒì¼ì€ 번역 설정ì—서 지정한 “%sâ€ ë¬¸ìž ì§‘í•©ìœ¼ë¡œ 저장할 수 없습니다.\n" "\n" "대신 UTF-8로 저장했으며 ì´ì— ë”°ë¼ ì„¤ì • ê°’ë„ ìˆ˜ì •í–ˆìŠµë‹ˆë‹¤." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "íŒŒì¼ ì €ìž¥ 오류" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†파ì¼ì€ ì •ìƒì ì¸ POT 파ì¼ì´ 아닙니다." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "XCLOC 파ì¼ì—서 예ìƒì¹˜ 못한 콘í…츠가 누ë½ë˜ì—ˆìŠµë‹ˆë‹¤." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "XCLOC 파ì¼ì€ 다른 ìœ„ì¹˜ë¡œì˜ ì €ìž¥ì„ ì§€ì›í•˜ì§€ 않습니다." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF íŒŒì¼ ë¶ˆëŸ¬ì˜¤ê¸° 오류: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "ì§€ì›í•˜ì§€ 않는 버전 (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "번역 문ìžì—´ì˜ 마í¬ì—…ì´ ê¹¨ì¡ŒìŠµë‹ˆë‹¤." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "poeditì—서 ì§€ì›í•˜ëŠ” í´ë¼ìš°ë“œ 기반 지역화 플랫í¼ì—서 관리하는 ë²ˆì—­ì„ ê°ìª½ê°™ì´ " "ë™ê¸°í™”하려면 플랫í¼ì— 연결합니다." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "í´ë¼ìš°ë“œ ë™ìž‘ì„ ì–´ë–»ê²Œ 처리할까요?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "계정" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(로그ì¸í•˜ì§€ 않ìŒ)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "í´ë¼ìš°ë“œ 번역 열기" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "계정 관리" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "프로ì íЏ:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "언어:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "í´ë¼ìš°ë“œ ê³„ì •ì— ë¡œê·¸ì¸" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "í´ë¼ìš°ë“œ ê³„ì •ì— ë¡œê·¸ì¸í•©ë‹ˆë‹¤" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "ì´ ê³„ì •ì— ë²ˆì—­ 프로ì íŠ¸ê°€ 없습니다." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "최신 번역 다운로드 중…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "%sì— ë¡œê·¸ì¸" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "ë™ê¸°í™” 중" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "%sì— ë²ˆì—­ 업로드중…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "%s(으)ë¡œì˜ ë²ˆì—­ ì—…ë¡œë“œì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "ë™ê¸°í™” 오류" #: src/commentdlg.cpp:48 msgid "Add" msgstr "추가" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "알 수 없는 Crowdin 오류." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "ì¸ì¦í•˜ì§€ 않았습니다. 다시 로그ì¸í•˜ì‹­ì‹œì˜¤." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "문ìžì—´ 기반 í¬ë¼ìš°ë“œì¸ 프로ì íŠ¸ë¥¼ ì§€ì›í•˜ì§€ 않습니다." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "ì´ í”„ë¡œì íЏì—서는 ë²ˆì—­ì„ ë‹¤ìš´ë¡œë“œí•  수 없습니다." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "로그ì¸" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "로그ì¸" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "로그아웃" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "로그아웃" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Crowdin ë” ì•Œì•„ë³´ê¸°" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "í¬ë¼ìš°ë“œì¸ì€ 온ë¼ì¸ 번역 관리 플랫í¼ì´ë©° 협업 번역 ë„구입니다. Poedit ë²ˆì—­ì˜ " "다국어 ë²ˆì—­ì— í¬ë¼ìš°ë“œì¸ì„ 활용하며, ì´ ë°©ì‹ì„ 좋아합니다." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "ì¸ì¦ 대기 중…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "ì‚¬ìš©ìž ì •ë³´ ì—…ë°ì´íЏ 중…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Crowdinì— ë¡œê·¸ì¸" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Crowdinê³¼ ë™ê¸°í™”ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin 오류" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "번역 ì—…ë°ì´íЏ 중…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "복사(&C)" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "ë” ì•Œì•„ë³´ê¸°" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "ë„움ë§(&H)" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO 파ì¼ì€ Poeditì—서 ì§ì ‘ 편집할 수 없습니다." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "íŒŒì¼ ì—¬ëŠ” 중 오류" #: src/edapp.cpp:735 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 파ì¼ë„ ì—…ë°ì´" "트합니다." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "임시 íŒŒì¼ ì‚­ì œ 안함 (디버깅용)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "poedit:// URI 처리" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "입력한 줄 ìˆ˜ì— í•´ë‹¹ë˜ëŠ” 항목으로 ì´ë™" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Poedit í”„ë¡œì„¸ìŠ¤ì™€ì˜ í†µì‹ ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "처리하지 못한 오류 ë°œìƒ: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "번역 ì–‘ì‹ ì„ íƒ" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "ìž˜ëª»ëœ íŒŒì¼" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "번역 íŒŒì¼ ì„ íƒ" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit는 사용하기 쉬운 번역 편집기입니다." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Poedit 윈ë„ìš°ì— í•˜ë‚˜ë¥¼ 초과하는 í•­ëª©ì„ ë“œë¡­í•  수 없습니다." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "“%s†파ì¼ì€ 번역 파ì¼ì´ 아닙니다." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "“%s†파ì¼ì´ 없습니다." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "%s 언어 ì‚¬ì „ì„ ì„¤ì¹˜í•˜ì§€ 않아 맞춤법 검사를 비활성화했습니다." #: src/edframe.cpp:871 msgid "Install" msgstr "설치" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "다른 프로그램ì—서 “%s†파ì¼ì˜ ë‚´ìš©ì„ ë°”ê¾¸ì—ˆìŠµë‹ˆë‹¤." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "íŒŒì¼ ë‹¤ì‹œ 불러오기" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "디스í¬ì—서 파ì¼ì„ 다시 불러올까요? poeditì—서 편집했지만 저장하지 ì•Šì€ ë‚´ìš©" "ì„ ìžƒìŠµë‹ˆë‹¤." #: src/edframe.cpp:968 msgid "Ignore" msgstr "무시" #: src/edframe.cpp:968 msgid "Reload File" msgstr "íŒŒì¼ ë‹¤ì‹œ 불러오기" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "파ì¼ì˜ ë‚´ìš©ì„ ìˆ˜ì •í–ˆìŠµë‹ˆë‹¤. ë°”ë€ ë‚´ìš©ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "ë°”ë€ ë‚´ìš© 저장" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "저장하지 않으면 ë°”ë€ ë‚´ìš©ì„ ìžƒì–´ë²„ë¦½ë‹ˆë‹¤." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "저장" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "저장하지 않ìŒ(&N)" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "저장하지 않ìŒ" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "저장하면 다른 프로그램ì—서 바꾼 ë‚´ìš©ì„ ìžƒìŠµë‹ˆë‹¤." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "취소" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "무시하고 저장" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "무시하고 저장" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "ë‹¤ìŒ ì´ë¦„으로 저장…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "다ìŒìœ¼ë¡œ 컴파ì¼â€¦" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "컴파ì¼í•œ 번역 파ì¼" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "HTML로 내보내기…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML 파ì¼" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "HTML로 내보내는 중" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "ì—…ë°ì´íЏ 실패" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "참조 íŒŒì¼ ì—´ê¸°" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "POT 파ì¼ì—서 ì—…ë°ì´íЏ(&P)…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "POT 파ì¼ì—서 ì—…ë°ì´íЏ(&P)…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "번역ì—서 문제 %d개를 찾았습니다." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "ê²€ì¦ ê²°ê³¼" #: src/edframe.cpp:1842 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 "" "오류가 있는 í•­ëª©ì€ ë¶‰ì€ìƒ‰ìœ¼ë¡œ 표시했습니다. ìžì„¸í•œ 오류 ë‚´ìš©ì€ ê°ê°ì˜ í•­ëª©ì„ " "ì„ íƒí–ˆì„ 때 나타납니다." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "파ì¼ì„ 안전하게 저장했습니다." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "파ì¼ì„ 안전하게 저장하고 MO 형ì‹ìœ¼ë¡œ 컴파ì¼í–ˆì§€ë§Œ 올바르게 ìž‘ë™í•˜ì§€ ì•Šì„ ìˆ˜ " "있습니다." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "파ì¼ì„ 안전하게 저장했지만 MO 형ì‹ìœ¼ë¡œ 컴파ì¼í•  수 없었습니다." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "MO 형ì‹ìœ¼ë¡œ 파ì¼ì„ 컴파ì¼í–ˆì§€ë§Œ 올바르게 ìž‘ë™í•˜ì§€ ì•Šì„ ìˆ˜ 있습니다." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "MO 파ì¼ë¡œ 컴파ì¼í•  수 없습니다." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "ë²ˆì—­ì— ë¬¸ì œê°€ 없습니다." #: src/edframe.cpp:1894 #, 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] "ë²ˆì—­ì„ ì‚¬ìš©í•  준비가 ë˜ì§€ë§Œ, ì•„ì§ í•­ëª© %d개를 번역하지 않았습니다." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "ë²ˆì—­ì„ ì‚¬ìš©í•  준비가 ë˜ì—ˆìŠµë‹ˆë‹¤." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poeditê°€ “%s†파ì¼ì˜ ìž˜ëª»ëœ ë‚´ìš©ì„ ìžë™ìœ¼ë¡œ 수정했습니다." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "PO 파ì¼ì—서 허용하지 않는 중복 í•­ëª©ì´ ìžˆì–´ íŒŒì¼ í™œìš©ì„ ë§‰ì•˜ìŠµë‹ˆë‹¤. Poeditì—" "서 문제를 해결했지만 필요한 경우 작업할 í•­ëª©ì„ í‘œì‹œí•´ë‘” ë¶€ë¶„ì˜ ë²ˆì—­ì„ ê²€í† í•´" "야합니다." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "번역 언어를 설정하지 않았습니다." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "언어 설정" #: src/edframe.cpp:2317 msgid "Set language" msgstr "언어 설정" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "번역 언어를 올바르게 ì„ íƒí•˜ì§€ 않으면 제안 ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 없습니다. 서수 형" "ì‹ ê°™ì€ ê¸°ëŠ¥ë„ ë§ˆì°¬ê°€ì§€ë¡œ ì˜í–¥ì„ ë°›ì„ ìˆ˜ 있습니다." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "번역 언어가 ì›ë³¸ 언어와 같습니다." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "언어 수정" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "언어 수정" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "ì´ íŒŒì¼ì—는 서수 í˜•ì‹ í•­ëª©ì´ ë“¤ì–´ìžˆìœ¼ë‚˜ 서수 í˜•ì‹ í—¤ë”를 구성하지 않았습니다." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "ì´ íŒŒì¼ì˜ í•­ëª©ì€ íŒŒì¼ì˜ Plural-Forms í—¤ë”ì— ëª…ì‹œí•œ 서수 í˜•ì‹ ì¹´ìš´íŠ¸ì™€ 다른 ê°’" "ì„ ê°€ì§€ê³  있습니다." #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "필요한 Plural-Forms í—¤ë”ê°€ 빠졌습니다." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Plural-Forms í—¤ë”(\"%s\")ì— ë¬¸ë²• 오류." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "í—¤ë” ìˆ˜ì •" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "파ì¼ì—서 사용하는 %s ì–¸ì–´ì˜ ì„œìˆ˜ í˜•ì‹ í‘œí˜„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "검토" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "ì˜ì–´ë¥¼ ì›ë¬¸ 언어로 사용하시겠습니까?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "파ì¼ì´ ì›ë¬¸ 대신 문ìžì—´ ID를 ì´ìš©í•˜ê³  있습니다. Poeditì—서 \"%s\" 파ì¼ì˜ ì˜" "ì–´ í…스트를 불러올 수 있습니다." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "ì˜ì–´ 불러오기" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "번역함: 문장 %2$dê°œ 중 %1$dê°œ (%3$d%%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "남ìŒ: %dê°œ" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "오류 %dê°œ" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "항목 %dê°œ" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (저장하지 않ìŒ)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (수정함)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "번역 기억 장소 ì—…ë°ì´íŠ¸ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "\"%s\" 파ì¼ì„ 저장할 수 없습니다." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "ì›ë³¸ê³¼ ë™ì¼í•œ 번역 제거" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "ì›ë³¸ 문ìžì—´ê³¼ ë™ì¼í•œ 모든 ë²ˆì—­ì„ ì œê±°í• ê¹Œìš”?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "ì´ ë™ìž‘ì€ ì›ë³¸ 문ìžì—´ê³¼ 정확히 ì¼ì¹˜í•˜ëŠ” ë²ˆì—­ì„ ëª¨ë‘ ì‚­ì œí•©ë‹ˆë‹¤. ë˜ëŒë¦´ 수 ì—†" "습니다." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "그대로 유지" #: src/edframe.cpp:2856 msgid "Remove" msgstr "제거" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "삭제한 ë²ˆì—­ì„ ì™„ì „ížˆ 제거" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "ë” ì´ìƒ 사용하지 않는 모든 ë²ˆì—­ì„ ì œê±°í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: src/edframe.cpp:2879 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 "" "ê³„ì† ì œê±°ë¥¼ 진행하면 ì‚­ì œ 표시한 모든 ë²ˆì—­ì„ ì™„ì „ížˆ 제거합니다. 다ìŒì— 다시 " "추가하면 다시 번역해야 합니다." #: src/edframe.cpp:2883 msgid "Purge" msgstr "제거" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "ì›ë³¸ í…스트 복사" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "ì›ë³¸ í…스트 복사" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "번역 지우기" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "번역 지우기" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "ì£¼ì„ íŽ¸ì§‘" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "ì£¼ì„ íŽ¸ì§‘" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "코드 출현 횟수" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "코드 출현 횟수" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "가장ìžë¦¬ ì°½ 숨김" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "가장ìžë¦¬ ì°½ 표시" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "ìƒíƒœ 표시줄 숨기기" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "ìƒíƒœ 표시줄 표시" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "ë¬¸ìž ë‹¨ìœ„ 문ìžì—´ 길ì´: 번역 | ì›ë³¸" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "ë¬¸ìž ë‹¨ìœ„ 문ìžì—´ 길ì´" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "ì›ë³¸ í…스트" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "단수" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "복수" #: src/editing_area.cpp:477 msgid "Translation" msgstr "번역" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "사전 번역함" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "작업 í•„ìš”" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "작업 í•„ìš”" #: src/editing_area.cpp:566 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 파ì¼ì„ 만드십시오." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "새 번역 만들기" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "ì´ POT 파ì¼ë¡œ 새 ë²ˆì—­ì„ ìž‘ì„±í•©ë‹ˆë‹¤." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ì›ë¬¸ ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "모ë‘" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "%i번 ì–‘ì‹" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "ì–‘ì‹ %i (미사용)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "ì˜" #: src/editing_area.cpp:788 msgid "One" msgstr "하나" #: src/editing_area.cpp:790 msgid "Two" msgstr "둘" #: src/editing_area.cpp:804 msgid "Other" msgstr "기타" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "문ìžì—´ 문맥: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "문ìžì—´ ID: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s 형ì‹" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s 형ì‹" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "번역 — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "ì›ë³¸ í…스트 — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "알 수 없는 언어" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "ë„¤íŠ¸ì›Œí¬ ì˜¤ë¥˜: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "알 수 없는 오류" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "gettext 카탈로그 ë³‘í•©ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "편집기ì—서 열기" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "편집기ì—서 열기" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "ì´ íŒŒì¼ì— 언급한 소스 코드ì—서 문ìžì—´ 출현 ì •ë³´ê°€ 없습니다." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "사용 ì •ë³´ ì—†ìŒ" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "코드 %d회 나타남" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "소스 코드가 없습니다" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "poeditì—서는 문ìžì—´ì„ 활용하는 참조 ìœ„ì¹˜ì— íŒŒì¼ì´ 없거나 실제 파ì¼ì´ 아닌 심" "볼릭 참조여서 소스 코드를 나타낼 수 없습니다." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "파ì¼ì„ ì—´ 수 없습니다" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "poeditì—서 “%s†파ì¼ì„ ì—´ 수 없습니다." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "찾기" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "바꾸기" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "옵션" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "ëŒ€ì†Œë¬¸ìž ë¬´ì‹œ" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "ìžë™ 줄 바꾸기" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "단어 단위로 검색" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "ì›ë³¸ 문ìžì—´ì—서 찾기" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "번역ì—서 찾기" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "주ì„ì—서 찾기" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "ëª¨ë‘ ë°”ê¾¸ê¸°(&A)" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "ëª¨ë‘ ë°”ê¾¸ê¸°(&A)" #: src/findframe.cpp:150 msgid "&Replace" msgstr "바꾸기(&R)" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< ì´ì „(&P)" #: src/findframe.cpp:152 msgid "&Next >" msgstr "다ìŒ(&N) >" #: src/findframe.cpp:235 msgid "String to find" msgstr "ì°¾ì„ ë¬¸ìžì—´" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "바꿀 문ìžì—´" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "경고: " #: src/gexecute.cpp:171 msgid "error: " msgstr "오류: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "언어 ì´ë¦„ ë˜ëŠ” 코드" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "번역 언어" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "번역 언어:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "모든 문ìžì—´" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "로컬레ì´ì§€ 프로ì íЏ 세부 정보를 다운로드할 수 없습니다." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "로컬레ì´ì§€ë¡œ ë²ˆì—­ì„ ì—…ë¡œë“œí•˜ëŠ” 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "프로ì íЏ" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "%s ìžì„¸ížˆ 알아보기" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "로컬레ì´ì§€ëŠ” 누구ì—게든 ìžì‹ ì˜ 제품과 ë‚´ìš©ë¬¼ì„ ì—¬ëŸ¬ 언어로 번역하는 ê³¼ì •ì„ ìƒ" "당 부분 ìžë™í™”해주는 지역화 플랫í¼ìž…니다." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "프로ì íЏ 추가" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "프로ì íЏ 추가" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - 카탈로그 관리ìž" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "수정…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "새 번역 프로ì íЏ 만들기" #: src/manager.cpp:145 msgid "Delete the project" msgstr "프로ì íЏ ì‚­ì œ" #: src/manager.cpp:146 msgid "Edit the project" msgstr "프로ì íЏ 편집" #: src/manager.cpp:176 msgid "Update all" msgstr "ëª¨ë‘ ì—…ë°ì´íЏ" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "ì´ í”„ë¡œì íŠ¸ì˜ ëª¨ë“  카탈로그 ì—…ë°ì´íЏ" #: src/manager.cpp:378 msgid "Total" msgstr "ì „ì²´" #: src/manager.cpp:379 msgid "Untrans" msgstr "미번역" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "작업 í•„ìš”" #: src/manager.cpp:381 msgid "Errors" msgstr "오류" #: src/manager.cpp:382 msgid "Last modified" msgstr "최종 편집" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "디렉터리 ì„ íƒ" #: src/manager.cpp:433 msgid "Directories:" msgstr "디렉터리:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "“%s†프로ì íŠ¸ë¥¼ 삭제하시겠습니까?" #: src/manager.cpp:540 msgid "Delete project" msgstr "프로ì íЏ ì‚­ì œ" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "프로ì íЏ ì‚­ì œ ë™ìž‘ì€ ë²ˆì—­ 파ì¼ì„ 삭제하지는 않습니다" #: src/manager.cpp:571 msgid "Confirmation" msgstr "확ì¸" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "ì´ í”„ë¡œì íŠ¸ì˜ ëª¨ë“  카탈로그를 ì—…ë°ì´íŠ¸í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "ì´ í”„ë¡œì íŠ¸ì˜ ëª¨ë“  소스 코드 파ì¼ì—서 ì—…ë°ì´íŠ¸ë¥¼ 수행합니다." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "프로ì íЏ 카탈로그 ì—…ë°ì´íŠ¸ì¤‘" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "ì—…ë°ì´íЏ 확ì¸â€¦" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "카탈로그 관리ìž" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "기본 설정(&P)..." #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "편집(&E)" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "실행 취소" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "재실행" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "붙여넣기 ë° ì¼ì¹˜ ë¹„êµ ë°©ì‹" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "ì‚­ì œ" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "맞춤법 ë° ë¬¸ë²•" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "맞춤법 ë° ë¬¸ë²• 표시" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "지금 문서 검사" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "입력하는 ë™ì•ˆ 맞춤법 검사" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "맞춤법과 문법 검사" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "ìžë™ìœ¼ë¡œ 맞춤법 êµì •" #: src/menus.cpp:219 msgid "Substitutions" msgstr "대체 항목" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "대체 항목 표시" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "스마트 복사/붙여넣기" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "스마트 ì¸ìš©" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "스마트 대시 ìž…ë ¥" #: src/menus.cpp:226 msgid "Smart Links" msgstr "스마트 ë§í¬" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "í…스트 바꾸기" #: src/menus.cpp:230 msgid "Transformations" msgstr "변환" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "대문ìžë¡œ 만들기" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "소문ìžë¡œ 만들기" #: src/menus.cpp:234 msgid "Capitalize" msgstr "대문ìží™”" #: src/menus.cpp:237 msgid "Speech" msgstr "ë§í•˜ê¸°" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "ë§í•˜ê¸° 시작" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "ë§í•˜ê¸° 중지" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "보기(&V)" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "ë„구 ëª¨ìŒ í‘œì‹œ" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "ë„구 ëª¨ìŒ ì‚¬ìš©ìž ì§€ì •â€¦" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "ì „ì²´ 화면ìƒíƒœ ì§„ìž…" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "ì°½" #: src/menus.cpp:263 msgid "Minimize" msgstr "최소화" #: src/menus.cpp:264 msgid "Zoom" msgstr "확대" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Poeditì— ìž˜ 오셨습니다" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "ëª¨ë‘ ì•žìœ¼ë¡œ" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "ë²ˆì—­ìž ì •ë³´" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "ì´ë¦„:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "ì´ë¦„" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "ì´ë©”ì¼:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "gdhong@website.co.kr" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "ì´ë¦„ ë° ì „ìžë©”ì¼ ì£¼ì†ŒëŠ” GNU gettext 파ì¼ì˜ Last-Translator í—¤ë”를 설정할 때" "ë§Œ 사용합니다." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "편집 중" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "저장할 때 MO íŒŒì¼ ìžë™ 컴파ì¼" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "맞춤법 검사" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "í•­ìƒ í¬ì»¤ìŠ¤ë¥¼ ìž…ë ¥ 창으로 옮김" #: src/prefsdlg.cpp:211 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 "" "문ìžì—´ 목ë¡ì— í¬ì»¤ìŠ¤ê°€ 가지 않게 합니다. ì´ ìƒíƒœì—서는 키보드 ìƒì˜ Ctrl-화살" "표를 눌러 ì´ë™í•œ 후 문ìžì—´ì„ 편집해야 합니다. 탭 키를 누르실 필요는 없습니다." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "모양새" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "목ë¡ì— ì‚¬ìš©ìž ì§€ì • 글꼴 사용:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "í…스트 ìž…ë ¥ ì°½ì— ì‚¬ìš©ìž ì§€ì • 글꼴 사용:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "ì‚¬ìš©ìž ì–¸ì–´ 바꾸기" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 ì´ìƒ í•„ìš”)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "ì¼ë°˜" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "번역 기억 장소 사용" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "관리…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "ì›ë³¸ ì—…ë°ì´íЏ ë°©ì‹" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "파ì¼ë‚´ í¼ì§€ ì¼ì¹˜" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "번역 기억 ìž¥ì†Œì˜ ì‚¬ì „ 번역" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poeditì€ í•´ë‹¹ 파ì¼ì˜ ì´ì „ ë²ˆì—­ë§Œì„ í™œìš©í•˜ê±°ë‚˜ 보유한 번역 기억 장소 전체를 활" "용하여 새 항목 채우기를 시ë„í•  수 있습니다. 번역 기억 장소가 ê±°ì˜ ë¹„ì–´ ìžˆì„ " "경우 효율ì ì´ì§€ëŠ” 않지만, ë²ˆì—­ì„ ë” ë§Žì´ ì €ìž¥í•˜ë©´ ì¢‹ì€ ê²°ê³¼ë¥¼ ì–»ì„ ìˆ˜ 있습니" "다." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "저장한 번역:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "디스í¬ì˜ ë°ì´í„°ë² ì´ìФ í¬ê¸°:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "번역 íŒŒì¼ ê°€ì ¸ì˜¤ê¸°â€¦" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "번역 íŒŒì¼ ê°€ì ¸ì˜¤ê¸°â€¦" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "TMXì—서 가져오기…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "TMXì—서 가져오기…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "TMX로 내보내기…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "TMX로 내보내기…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "초기화" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "가져올 번역 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "가져올 TMX 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX 파ì¼" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "번역 가져오는 중…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "번역 기억 장소 ê°€ì ¸ì˜¤ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "“%sâ€(ì—)서 가져오는 중…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s ë²ˆì—­ì„ ê°€ì ¸ì™”ìŠµë‹ˆë‹¤." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "다ìŒìœ¼ë¡œ 내보내기…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "번역 내보내는 중…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "\"%s\" TM ë‚´ë³´ë‚´ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "번역 기억장소 초기화" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "번역 기억 장소를 초기화하시겠습니까?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "번역 기억장소를 초기화하면 저장한 모든 ë²ˆì—­ì„ ì™„ì „ížˆ 삭제합니다. ì´ ë™ìž‘ì€ ì·¨" "소할 수 없습니다." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "번역 기억 장소" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "번역 기억 장소(TM)" #: src/prefsdlg.cpp:730 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 "" "소스 코드 추출 í”„ë¡œê·¸ëž¨ì€ ì†ŒìŠ¤ 코드 파ì¼ì—서 번역할 수 있는 문ìžì—´ì„ 찾고 ì¶”" "출하여 번역할 수 있게 합니다." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "ì‚¬ìš©ìž ì§€ì • 추출 프로그램:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "ì‚¬ìš©ìž ì§€ì • 추출 프로그램:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "GNU gettext ë„구ì—서 ì¸ì‹í•˜ëŠ” 모든 í”„ë¡œê·¸ëž˜ë° ì–¸ì–´(PHP, C/C++, C#, Perl, " "Python, Java, JavaScript 등)를 ì§€ì›í•©ë‹ˆë‹¤." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "추출 프로그램 ì‚­ì œ" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "ì •ë§ë¡œ “%s†추출 í”„ë¡œê·¸ëž¨ì„ ì‚­ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "추출 프로그램" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "계정" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "ì—…ë°ì´íЏ ìžë™ 확ì¸" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "베타 버전 í¬í•¨" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "베타 버전ì—는 최신 기능과 개선 ì‚¬í•­ì´ ìžˆì§€ë§Œ, ëœ ì•ˆì •ì ì¼ 수 있습니다." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "ì—…ë°ì´íЏ" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "ì´ ì„¤ì •ì€ PO íŒŒì¼ ë‚´ë¶€ 형ì‹ì— ì˜í–¥ì„ ì¤ë‹ˆë‹¤. 버전 관리 ë“±ì˜ íŠ¹ë³„í•œ í•„ìš”ì„±ì´ " "있다면 ê°’ì„ ì„¤ì •í•˜ì‹­ì‹œì˜¤." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "í–‰ 종결 문ìž:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (추천)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "윈ë„ìš°" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "줄 바꿈 위치:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "기존 íŒŒì¼ ì„œì‹ ìœ ì§€" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "고급" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "설정" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "문ìžì—´ 준비 중…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "번역 기억 장소ì—서 번역 미리 가져오는 중…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "사전 번역한 문ìžì—´ %uê°œ" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "사전 번역 중…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "항목 %d개를 사전 번역했습니다." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "ë¶€ì •í™•í• ì§€ë„ ëª¨ë¥´ëŠ” ë²ˆì—­ì„ '작업 í•„ìš”'로 표시했습니다. 정확성 여부를 검토하시" "는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "번역 기억 장소와 완전 ì¼ì¹˜" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "번역 기억 장소와 유사 ì¼ì¹˜" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "사전 번역할 수 있는 í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤." #: src/pretranslate.cpp:218 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ì—서" "는 ì§ì ‘ 번역한 파ì¼ì˜ ë‚´ìš©ì„ ì¶©ë¶„ížˆ 학습한 후ì—야 ë°˜ìžë™ ë²ˆì—­ì˜ ê²°ê³¼ê°€ 제대" "로 나옵니다." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "ì›ë¬¸ ì—†ì´ëŠ” 사전 ë²ˆì—­ì„ ì§„í–‰í•  수 없습니다." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "사전 번역" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "ì›ë¬¸ì´ 주어져야 사전 번역 ê¸°ëŠ¥ì„ ì´ìš©í•  수 있습니다. 실제 í…스트가 아닌 IDë§Œ " "있는 경우 ìž‘ì—…ì„ ì‹¤í–‰í•  수 없습니다." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "알 수 없는 언어를 사전 번역할 수 없습니다." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "사전 번역 작업시 ì›ë³¸ ë‚´ìš©ì˜ ì–¸ì–´ë¥¼ 알아야 합니다. Poeditì—서 ì´ íŒŒì¼ì˜ 언어" "를 확ì¸í•˜ì§€ 못했습니다." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "정확하게 ì¼ì¹˜í•˜ëŠ” 내용만 채우기" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "기본ì ìœ¼ë¡œ, 부정확한 ê²°ê³¼ë„ ë“¤ì–´ìžˆì„ ìˆ˜ 있지만, 해당 ë¶€ë¶„ì€ ìž‘ì—…ì´ í•„ìš”í•œ ìƒ" "태로 표시합니다. 완전히 ì¼ì¹˜í•˜ëŠ” 결과를 ë„£ì„ ê²½ìš°ì—ë§Œ ì´ ì˜µì…˜ì„ í‘œì‹œí•˜ì„¸ìš”." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "정확하게 ì¼ì¹˜í•˜ëŠ” ë‚´ìš©ì€ ìž‘ì—… 필요로 표시하지 않기" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "기본 설정으로는 번역 기억 장소ì—서 가져온 모든 ì¼ì¹˜ í•­ëª©ì€ ìž‘ì—… í•„ìš” 항목으" "로 표시하여 활용 ì „ì— ê²€í† í•´ì•¼ 합니다. 번역 기억 장소 í’ˆì§ˆì„ ì‹ ë¢°í•˜ëŠ” 경우ì—" "ë§Œ ì´ ì„¤ì •ì„ ì¼œì„¸ìš”." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "사전 ë²ˆì—­ì€ ë²ˆì—­ 기억 장소ì—서 번역하지 ì•Šì€ ë¬¸ìžì—´ê³¼ 정확한 항목 ë˜ëŠ” 모호" "한 항목과 ì¼ì¹˜í•˜ëŠ” ë²ˆì—­ì„ ìžë™ìœ¼ë¡œ 찾아 번역 ë‚´ìš©ì„ ì±„ì›ë‹ˆë‹¤." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "오류: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "오류 %dê±´ì´ ë‚˜íƒ€ë‚¬ìŠµë‹ˆë‹¤:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "오류가 나타났습니다." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "오류 %dê±´ì´ ë‚˜íƒ€ë‚¬ìŠµë‹ˆë‹¤." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "취소 중…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "í´ë” ë˜ëŠ” 파ì¼ì„ ì—¬ê¸°ì— ëŒì–´ë‹¤ 놓으세요" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "í´ë” ë˜ëŠ” 파ì¼ì„ ì—¬ê¸°ì— ëŒì–´ë‹¤ 놓으세요" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "í´ë” 추가…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "í´ë” 추가…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "íŒŒì¼ ì¶”ê°€â€¦" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "íŒŒì¼ ì¶”ê°€â€¦" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "와ì¼ë“œì¹´ë“œ 추가…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "와ì¼ë“œì¹´ë“œ 추가…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Finderì— í‘œì‹œ" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "íƒìƒ‰ê¸°ì— 표시" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "í´ë” 보기" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "경로" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "제외 경로" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "고급 추출 설정" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "번역 참고 ì£¼ì„ ì¶”ì¶œ 대ìƒ:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "ë‹¤ìŒ ì ‘ë‘부를 ë¶™ì¸ ì£¼ì„:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "모든 주ì„" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "xgettext 추가 플래그:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "추가 키워드" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "번역 프로ì íЏ ì´ë¦„" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "팀 ì´ë¦„ê³¼ ì´ë©”ì¼ ì£¼ì†Œ ë˜ëŠ” URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "예: nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (추천)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "먼저 파ì¼ì„ 저장하세요. 저장하기 전까지는 ì´ êµ¬ì—­ì„ íŽ¸ì§‘í•  수 없습니다." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "ìžë¦¬ í‘œì‹œìž ì •í™•ì„± 검토" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "ìžë¦¬ í‘œì‹œìž \"%s\"ê°€ 번역문ì—서 누ë½ë˜ì—ˆìŠµë‹ˆë‹¤." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "ì›ë¬¸ì— 없는 \"%s\" ìžë¦¬ 표시ìžê°€ ë²ˆì—­ë¬¸ì— ë“¤ì–´ê°”ìŠµë‹ˆë‹¤." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "복수 í˜•ì‹ ë²ˆì—­" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "모든 서수 형ì‹ì´ 번역ë˜ì§€ 않았습니다." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "ì¼ì¹˜í•˜ì§€ 않는 대소문ìž" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "ë²ˆì—­ë¬¸ì€ ë¬¸ìž¥ì²˜ëŸ¼ 시작해야 합니다." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "ë²ˆì—­ë¬¸ì€ ì†Œë¬¸ìžë¡œ 시작해야 합니다." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "ì¼ì¹˜í•˜ì§€ 않는 공백 문ìž" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "ë²ˆì—­ë¬¸ì´ ê³µë°±ìœ¼ë¡œ 시작하지 않았습니다." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "ë²ˆì—­ë¬¸ì´ ê³µë°±ìœ¼ë¡œ 시작했으나, ì›ë¬¸ì€ 그렇지 않습니다." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "ë²ˆì—­ë¬¸ì˜ ëì— ì¤„ ë°”ê¿ˆì´ ì—†ìŠµë‹ˆë‹¤." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "ë²ˆì—­ë¬¸ì˜ ëì€ ì¤„ ë°”ê¿ˆì´ ë˜ë‚˜ ì›ë¬¸ì€ 줄 ë°”ê¿ˆì´ ë˜ì§€ 않습니다." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "번역문 ë§ˆì§€ë§‰ì— ê³µë°±ì´ ì—†ìŠµë‹ˆë‹¤." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "번역문 ë§ˆì§€ë§‰ì— ê³µë°±ì´ ìžˆìœ¼ë‚˜, ì›ë¬¸ì€ 그렇지 않습니다." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "문장 부호 검사" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "ë²ˆì—­ë¬¸ì€ \"%s\"(으)로 ë나야 합니다." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "ë²ˆì—­ë¬¸ì€ \"%s\"로 ë나지 ë§ì•„야 합니다." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "ë²ˆì—­ë¬¸ì€ \"%s\"(으)로 ë나나, ì›ë¬¸ì€ \"%s\"(으)로 ë납니다." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "í´ë¼ìš°ë“œ" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "메뉴 지우기" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "메뉴 지우기" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "주ì„:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "ì—…ë°ì´íЏ" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "ì‚­ì œ(&D)" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "설명 ì‚­ì œ" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "프로ì íЏ 편집" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "프로ì íЏ ì´ë¦„:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "찾아보기" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "디렉터리를 목ë¡ì— 추가" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "확ì¸" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "파ì¼(&F)" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "새로 만들기(&N)…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "POT/PO 파ì¼ë¡œ 새로 만들기(&P)..." #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "POT/PO 파ì¼ë¡œ 새로 만들기(&P)..." #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "열기(&O)…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "최근 íŒŒì¼ ì—´ê¸°" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "최근 íŒŒì¼ ì—´ê¸°" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "í´ë¼ìš°ë“œ 번역 열기…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "í´ë¼ìš°ë“œ 번역 열기…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "시작 ì°½(&S)" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "시작 ì°½(&S)" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "카탈로그 관리ìž(&M)" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "카탈로그 관리ìž(&M)" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "닫기(&C)" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "저장(&S)" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "다른 ì´ë¦„으로 저장(&A)…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "다른 ì´ë¦„으로 저장(&A)…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "MO로 컴파ì¼â€¦" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "HTML로 내보내기(&X)…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "ì—…ë°ì´íЏ 확ì¸â€¦" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "설정…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "기본 설정(&P)" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "나가기(&X)" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "ë내기" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "단수 표현 복사" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "단수 표현 복사" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "ìž‘ì—…ì´ í•„ìš”í•œ 번역(&W)" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "ìž‘ì—…ì´ í•„ìš”í•œ 번역(&W)" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "ì£¼ì„ íŽ¸ì§‘(&C)" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "ì£¼ì„ íŽ¸ì§‘(&C)" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "제안" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "찾기(&F)…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "바꾸기…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "ë‹¤ìŒ ì°¾ê¸°" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "ì´ì „ 찾기" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "찾고 바꾸기…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "ë‹¤ìŒ ì°¾ê¸°" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "ì´ì „ 찾기" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "문ìžì—´ ID 표시(&I)" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "문ìžì—´ ID 표시(&I)" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "경고 표시" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "경고 표시" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "파ì¼ìˆœ ì •ë ¬(&F)" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "파ì¼ìˆœ ì •ë ¬(&F)" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "ì›ë³¸ìˆœ ì •ë ¬(&S)" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "ì›ë³¸ìˆœ ì •ë ¬(&S)" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "번역순 ì •ë ¬(&T)" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "번역순 ì •ë ¬(&T)" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "ìƒíƒœë³„ 모ìŒ(&G)" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "ìƒíƒœë³„ 모ìŒ(&G)" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "오류 í•­ëª©ì„ ìš°ì„  표시" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "오류 í•­ëª©ì„ ìš°ì„  표시" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "번역하지 ì•Šì€ í•­ëª© 먼저(&U)" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "번역하지 ì•Šì€ í•­ëª© 먼저(&U)" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "코드 출현 횟수 표시(&S)" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "코드 출현 횟수 표시(&S)" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "가장ìžë¦¬ 표시줄 표시" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "ìƒíƒœ 표시줄 표시" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "번역(&T)" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "소스 코드ì—서 ì—…ë°ì´íЏ(&U)" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "소스 코드ì—서 ì—…ë°ì´íЏ(&U)" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Crowdin ë™ê¸°í™”" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "사전 번역(&T)…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "번역 ê²€ì¦(&V)" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "번역 ê²€ì¦(&V)" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "ì›ë³¸ê³¼ ë™ì¼í•œ 번역 제거" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "삭제한 ë²ˆì—­ì„ ì™„ì „ížˆ 제거(&P)" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "삭제한 ë²ˆì—­ì„ ì™„ì „ížˆ 제거(&P)" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "ì†ì„±(&P)…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "ì´ë™(&G)" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "ëë‚´ê³  다ìŒìœ¼ë¡œ ì§„í–‰(&D)" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "ëë‚´ê³  다ìŒìœ¼ë¡œ ì§„í–‰(&D)" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "ì´ì „ 편집 항목" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "ì´ì „ 편집 항목" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "ì´ì „ 번역(&P)" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "ì´ì „ 번역(&P)" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "ë‹¤ìŒ ë²ˆì—­(&N)" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "ë‹¤ìŒ ë²ˆì—­(&N)" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "ì´ì „ 미완료(&R)" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "ì´ì „ 미완료(&R)" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "ë‹¤ìŒ ë¯¸ì™„ë£Œ(&X)" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "ë‹¤ìŒ ë¯¸ì™„ë£Œ(&X)" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "ì´ì „ 복수 형태" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "ì´ì „ 복수 형태" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "ë‹¤ìŒ ë³µìˆ˜ 형태" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "ë‹¤ìŒ ë³µìˆ˜ 형태" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "온ë¼ì¸ ë„움ë§(&O)" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "온ë¼ì¸ ë„움ë§(&O)" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "GNU gettext 설명서(&G)" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "GNU gettext 설명서(&G)" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "Poedit ì •ë³´(&A)" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "ì •ë³´(&A)" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "추출 프로그램 설정" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "세미콜론(;)으로 구분한 í™•ìž¥ìž ëª©ë¡(예 *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "실행:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "ë²ˆì—­ì„ ì¶”ì¶œí•  명령:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "ì´ ëª…ë ¹ì€ ì¶”ì¶œ í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•  때 사용합니다.\n" "%o는 출력 파ì¼ì˜ ì´ë¦„, %K는 키워드 목ë¡,\n" "%F는 ìž…ë ¥ íŒŒì¼ ëª©ë¡, %C는 ë¬¸ìž ì§‘í•© 플래그\n" "입니다(하단 참조)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "키워드 목ë¡ì˜ 항목:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "키워드 ëª…ë ¹ì¤„ì— í•˜ë‚˜ ë¶™ì¼ ìˆ˜ 있습니다.\n" "%k는 키워드를 ì˜ë¯¸í•©ë‹ˆë‹¤." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "ìž…ë ¥ íŒŒì¼ ëª©ë¡ì˜ 항목:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "ê° ìž…ë ¥ íŒŒì¼ ëª…ë ¹ì¤„ì— í•˜ë‚˜ ë¶™ì¼ ìˆ˜ 있습니다.\n" "%f는 íŒŒì¼ ì´ë¦„ì„ ì˜ë¯¸í•©ë‹ˆë‹¤." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "소스 코드 ë¬¸ìž ì§‘í•©:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "소스 코드 ë¬¸ìž ì§‘í•©ì„ ì§€ì •í–ˆì„ ê²½ìš°ì—ë§Œ\n" "ëª…ë ¹ì¤„ì— ë¶™ì¼ ìˆ˜ 있습니다. %c는 ë¬¸ìž ì§‘í•©ì„ ì˜ë¯¸í•©ë‹ˆë‹¤." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "번역 ì†ì„±" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "프로ì íЏ ì´ë¦„ê³¼ 버전:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "언어 팀:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "복수 형태:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "ì´ ì–¸ì–´ì— ê¸°ë³¸ 규칙 사용" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "ì‚¬ìš©ìž ì •ì˜ í‘œí˜„ì‹ ì‚¬ìš©" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "서수 í˜•ì‹ ì•Œì•„ë³´ê¸°" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "ë¬¸ìž ì§‘í•©:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "고급 확장 프로그램 설정…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "고급 확장 프로그램 설정…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "번역 ì†ì„±" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "소스 경로" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "소스 경로" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "ë‹¤ìŒ ë””ë ‰í„°ë¦¬ì˜ ì†ŒìŠ¤ 파ì¼ì—서 í…스트를 추출합니다:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "기본 경로:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "소스 키워드" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "소스 키워드" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "ë‹¤ìŒ í‚¤ì›Œë“œ(함수 ì´ë¦„)를 사용하여 소스 파ì¼ì—서\n" "번역할 문ìžì—´ì„ ì¸ì‹í•©ë‹ˆë‹¤:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "ì§€ì›ë˜ëŠ” ì–¸ì–´ì˜ ê¸°ë³¸ 키워드 ë˜í•œ 사용" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "gettext í‚¤ì›Œë“œì— ëŒ€í•´ 알아보기" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "íŒŒì¼ ì—´ê¸°" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "íŒŒì¼ ì €ìž¥" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "ê²€ì¦í•˜ê¸°" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "번역 오류 검사" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "코드ì—서 ì—…ë°ì´íЏ" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "코드ì—서 ì—…ë°ì´íЏ" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "소스 코드ì—서 ì—…ë°ì´íЏ" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "가장ìžë¦¬ ì°½" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "가장ìžë¦¬ ì°½ì„ í‘œì‹œí•˜ê±°ë‚˜ 숨ê¹ë‹ˆë‹¤" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "ì´ì „ ì›ë³¸ í…스트" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "부정확한 ë²ˆì—­ì„ ì±„ì›Œë‘”, ì—…ë°ì´íŠ¸í•˜ì—¬ 바뀌기 ì „ì˜ ì˜¤ëž˜ëœ ì›ë³¸ í…스트입니다." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "번역 참고" #: src/sidebar.cpp:196 msgid "Comment" msgstr "참고 설명" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "ì£¼ì„ ì¶”ê°€" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "ì£¼ì„ ì¶”ê°€" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "TMì—서 ì‚­ì œ" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "TMì—서 ì‚­ì œ" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "번역 제안" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "ì¼ì¹˜í•˜ëŠ” 결과가 없습니다" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "ì¼ì¹˜í•˜ëŠ” ê²°ê³¼ ì—†ìŒ" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "ì´ ë¬¸ìžì—´ì€ Poeditì˜ ë²ˆì—­ 기억 ìž¥ì†Œì— ìžˆìŠµë‹ˆë‹¤." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "ì›ë¬¸ì´ 주어져야 번역 제안 ê¸°ëŠ¥ì„ ì´ìš©í•  수 있습니다. 실제 í…스트가 아닌 IDë§Œ " "있는 경우 ìž‘ì—…ì„ ì‹¤í–‰í•  수 없습니다." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "번역 제안 기능ì—서 ì›ë³¸ ë‚´ìš©ì˜ ì–¸ì–´ë¥¼ 알아야 합니다. Poeditì—서 ì´ íŒŒì¼ì˜ ì–¸" "어를 확ì¸í•˜ì§€ 못했습니다." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•  수 없습니다: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX 파ì¼ì´ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "TM ë°ì´í„°ë² ì´ìŠ¤ê°€ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤: %s(%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "TM 오류: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(기본 언어 사용)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "언어 ì„ íƒ" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "선호하는 언어 ì„ íƒ" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "ë°”ë€ ë‚´ìš©ì„ ë°˜ì˜í•˜ë ¤ë©´ Poeditì„ ë‹¤ì‹œ 시작해야 합니다." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "임시 디렉터리를 만들 수 없습니다." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "ë²ˆì—­ì´ ì—†ìŠµë‹ˆë‹¤. í”한 ì¼ì€ 아니네요." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "번역 가능한 í•­ëª©ì€ Gettext 시스템ì—서 별ë„로 추가하지 않는 대신 소스코드ì—서 " "ìžë™ìœ¼ë¡œ 추출합니다. ì´ ë°©ë²•ìœ¼ë¡œ 최신 버전으로 정확하게 유지할 수 있습니다. " "번역ìžë“¤ì€ 보통 개발ìžë“¤ì´ 준비한 PO ì–‘ì‹ íŒŒì¼(POT)를 사용합니다." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "GNU gettext ë” ì•Œì•„ë³´ê¸°" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "ì´ íŒŒì¼ì˜ ë²ˆì—­ì„ ì±„ìš°ëŠ” 가장 간단한 ë°©ë²•ì€ POTì—서 ì—…ë°ì´íŠ¸í•˜ëŠ” 방법입니다:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "POT 파ì¼ë¡œ ì—…ë°ì´íЏ" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "기존 POT ì–‘ì‹ì—서 번역할 수 있는 문ìžì—´ì„ 가져옵니다." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "소스 코드ì—서 ì§ì ‘ 번역 가능 문ìžì—´ì„ 가져올 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "소스ì—서 가져오기" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "ì†ì„±ì—서 소스 코드 ì¶”ì¶œì„ ì„¤ì •í•©ë‹ˆë‹¤." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "버전 %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "새로 만들기" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "POT ì–‘ì‹ì—서 새 ë²ˆì—­ì„ ë§Œë“­ë‹ˆë‹¤." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "íŒŒì¼ ì°¾ì•„ë³´ê¸°" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "번역 파ì¼ì„ ì—´ì–´ 편집합니다." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "í´ë¼ìš°ë“œ 프로ì íЏ 번역" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "다른 번역가와 온ë¼ì¸ì—서 ê³µë™ ë²ˆì—­ì„ ì§„í–‰í•©ë‹ˆë‹¤." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "최근 파ì¼" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "ë™ê¸°í™”" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Crowdinê³¼ 번역 ë™ê¸°í™”" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "%s ì •ë³´" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s 설정" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "%s ì •ë³´" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "서비스" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "%s 숨기기" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "다른 항목 숨기기" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "ëª¨ë‘ í‘œì‹œ" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "%s ë내기" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "설정…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "설정…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "기본 설정..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "ì ìš©(&A)" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "ì ìš©" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "뒤로(&B)" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "뒤로" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "취소(&C)" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "지우기(&C)" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "지우기" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "복사" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "잘ë¼ë‚´ê¸°(&T)" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "잘ë¼ë‚´ê¸°" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "편집" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "ë내기(&Q)" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "ë„움ë§" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "새로 만들기(&N)" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "새 파ì¼" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "아니요(&N)" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "아니요" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "확ì¸(&O)" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "열기…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "열기(&O)..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "열기..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "붙여넣기(&P)" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "붙여넣기" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "설정" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "다시 실행(&R)" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "새로 고침" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "다른 ì´ë¦„으로 저장(&S)" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "다른 ì´ë¦„으로 저장" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "ëª¨ë‘ ì„ íƒ(&A)" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "ëª¨ë‘ ì„ íƒ" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "실행 취소(&U)" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "예(&Y)" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "예" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Left" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Right" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "경고: " poedit-3.6.3/locales/sk.po0000644000175100001660000027241515011674230011102 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-17 10:16\n" "Last-Translator: \n" "Language-Team: Slovak\n" "Language: sk_SK\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: sk\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "SkryÅ¥ túto správu s upozornením" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Nabudúce nezobrazovaÅ¥" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Nabudúce nezobrazovaÅ¥" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Súhrn aktualizácie" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Súhrn aktualizácie" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "ZatvoriÅ¥" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problémy" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Súbor" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Riadok" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problém" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Nové reÅ¥azce" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Nové reÅ¥azce" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Odstránené reÅ¥azce" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Odstránené reÅ¥azce" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "ZhromažÄovanie zdrojových súborov…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Extrahovanie preložiteľných reÅ¥azcov zo súboru %s…" msgstr[1] "Extrahovanie preložiteľných reÅ¥azcov zo súborov %s…" msgstr[2] "Extrahovanie preložiteľných reÅ¥azcov zo súborov %s…" msgstr[3] "Extrahovanie preložiteľných reÅ¥azcov zo súborov %s…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Zlyhalo naÄítanie súboru pri rozbaľovaní prekladu." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "V %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Zdrojový kód je nedostupný." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Preklady sa nepodarilo aktualizovaÅ¥ zo zdrojového kódu, pretože v umiestnení " "zadanom vo vlastnostiach súboru sa nenaÅ¡iel žiadny kód." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Prístup zamietnutý." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Nemáte oprávnenie na Äítanie súborov zdrojového kódu z umiestnenia urÄenom " "vo vlastnostiach súboru." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Ak ste predtým zakázali prístup ku vaÅ¡im súborom, môžete ho povoliÅ¥ v " "Nastavenia systému > ZabezpeÄenie a súkromie > Súkromie > Súbory a prieÄinky." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Ak ste predtým zakázali prístup ku vaÅ¡im súborom, môžete ho povoliÅ¥ v " "Nastavenia systému > ZabezpeÄenie a súkromie > Súkromie > Súbory a prieÄinky." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Zlyhalo vytiahnutie reÅ¥azcov zo zdrojového kódu." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Súbor „%s†nemožno otvoriÅ¥." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Aktualizácia prekladu" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "UrÄovanie rozdielov…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "ZluÄovanie rozdielov…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Nové reÅ¥azce na preklad:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Odstránené reÅ¥azce (už nepoužívané):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "ZobraziÅ¥ detaily…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "ZobraziÅ¥ detaily…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "PoÅ¡kodená hlaviÄka: „%s\"" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Súbory rekladu PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Å ablóny prekladov POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Súbory prekladu XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Prekladové súbory JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Prekladové súbory Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "VÅ¡etky prekladové súbory" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Súbor je vo formáte, ktorý Poedit nerozpoznáva." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Tento súbor JSON nie je prekladový súbor a nemožno ho upravovaÅ¥ v Poedite." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "NaÄítanie obsahu súboru zlyhalo s nasledujúcou chybou: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Súbor “%s†je iba na Äítanie a nemôže byÅ¥ uložený.\n" "Prosím, uložte ho pod iným názvom." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Súbor %s nie je možné uložiÅ¥." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Snímky obrazovky:" #: src/catalog_po.cpp:134 #, 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 riadok súboru „%s\" sa nenaÄítal správne." msgstr[1] "%i riadky súboru „%s\" sa nenaÄítali správne." msgstr[2] "%i riadkov súboru „%s\" sa nenaÄítalo správne." msgstr[3] "%i riadkov súboru „%s\" sa nenaÄítalo správne." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Riadok %d súboru „%s\" je poÅ¡kodený (%s nie sú platné údaje)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Chybný PO súbor: tvar jednotného Äísla msgstr je použitý aj v msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Chybný PO súbor: tvar množného Äísla msgstr použitý bez msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Súbor sa nepodarilo naÄítaÅ¥, pravdepodobne je poÅ¡kodený." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Nastala chyba pri naÄítavaní súboru. Niektoré údaje vo výsledku môžu chýbaÅ¥ " "alebo byÅ¥ poÅ¡kodené." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Vyskytol sa problém pri formátovaní súboru (napriek tomu bol správne " "uložený)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Súbor nie je možné uložiÅ¥ v znakovej sade „%s†nastavenej vo vlastnostiach " "prekladu.\n" "\n" "Namiesto toho bol uložený v UTF-8 a nastavenia boli podľa toho upravené." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Chyba pri ukladaní súboru" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "Súbor „%s\" nie je platný POT súbor." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Chyba pri naÄítaní súboru XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "nepodporovaná verzia (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Neplatné znaÄky v reÅ¥azci prekladu." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Prepojte Poedit s podporovanými cloudovými lokalizaÄnými platformami na " "bezproblémovú synchronizáciu prekladov, ktoré sú na nich spravované." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Ako funguje synchronizácia v cloude?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "ÚÄet" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(neprihlásený)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "OtvoriÅ¥ cloud prekladov" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "SpravovaÅ¥ úÄty" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekt:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Jazyk:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "PrihlásiÅ¥ sa do úÄtu cloudu" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Prihlásenie do cloud úÄtu" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Vo vaÅ¡om úÄte nie sú uvedené žiadne prekladateľské projekty." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "SÅ¥ahovanie najnovších prekladov…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "PrihlásiÅ¥ sa do služby %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Synchronizácia" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Obnova prekladov v %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Nahrávanie prekladov prostredníctvom %s zlyhalo." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Chyba synchronizácie" #: src/commentdlg.cpp:48 msgid "Add" msgstr "PridaÅ¥" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Neznáma chyba Crowdinu." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Vyskytla sa chyba pri autorizácii, skúste sa prihlásiÅ¥ znova." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Projekty Crowdin založené na reÅ¥azcoch nie sú podporované." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "V tomto projekte je sÅ¥ahovanie prekladov vypnuté." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "PrihlásiÅ¥ sa" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "PrihlásiÅ¥ sa" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "OdhlásiÅ¥ sa" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "OdhlásiÅ¥ sa" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "DozvedieÅ¥ sa viac o službe Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin je online platforma na správu prekladov a nástroj na spoluprácu pri " "prekladaní. My sami používame Crowdin na preklad Poeditu do mnohých jazykov " "a veľmi sa nám páÄi." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "ÄŒakanie na autentifikáciu…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Aktualizujú sa informácie o používateľovi…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "PrihlásiÅ¥ sa do služby Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Synchronizácia so službou Crowdin zlyhala." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Chyba služby Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Obnova prekladov…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&KopírovaÅ¥" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "ZistiÅ¥ viac" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Nápoveda" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO súbory nemôžu byÅ¥ upravované priamo v Poedite." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Chyba pri otváraní súboru" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Otvorte a upravte, prosím, namiesto toho zodpovedajúci PO súbor. Po jeho " "uložení bude takisto aktualizovaný aj MO súbor." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "neodstraňovaÅ¥ doÄasné súbory (pre ladenie)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "manipulátor poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "prejsÅ¥ na položku na danom Äísle riadku" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Zlyhala komunikácia s procesom Poeditu." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Vyskytla sa neoÄakávaná výnimka: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Vyberte Å¡ablónu prekladu" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Neplatný súbor" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Vybrte súbor prekladu" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit je jednoducho použiteľný editor prekladov." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Nemôžete vložiÅ¥ viac ako jeden súbor do okna Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Súbor „%s\" nie je súborom prekladu." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Súbor „%s\" neexistuje." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Kontrola pravopisu je vypnutá, pretože slovník pre jazyk %s nie je " "nainÅ¡talovaný." #: src/edframe.cpp:871 msgid "Install" msgstr "InÅ¡talovaÅ¥" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Súbor „%s†bol zmenený inou aplikáciou." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Znovu naÄítaÅ¥ súbor" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Chcete znovu naÄítaÅ¥ súbor z disku? Ak to urobíte, vaÅ¡e neuložené úpravy v " "Poedite budú stratené." #: src/edframe.cpp:968 msgid "Ignore" msgstr "IgnorovaÅ¥" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Znovu naÄítaÅ¥ súbor" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Súbor bol upravený. Chcete zmeny uložiÅ¥?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "UložiÅ¥ zmeny" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "VaÅ¡e úpravy budú stratené ak ich neuložíte." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "UložiÅ¥" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&NeukladaÅ¥" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "NeukladaÅ¥" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "Ak zmeny uložíte, zmeny vykonané inou aplikáciou budú stratené." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "ZruÅ¡iÅ¥" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Napriek tomu uložiÅ¥" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Napriek tomu uložiÅ¥" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "UložiÅ¥ ako…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "KompilovaÅ¥ do…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Skompilované súbory prekladu" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "ExportovaÅ¥ do HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML súbory" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Export do HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Aktualizácia zlyhala" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "OtvoriÅ¥ referenÄný súbor" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "AktualizovaÅ¥ zo súboru POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "AktualizovaÅ¥ zo súboru POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "NaÅ¡iel sa %d problém s prekladom." msgstr[1] "NaÅ¡li sa %d problémy s prekladom." msgstr[2] "NaÅ¡lo sa %d problémov s prekladom." msgstr[3] "NaÅ¡lo sa %d problémov s prekladom." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Výsledky overovania" #: src/edframe.cpp:1842 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 "" "Záznamy s chybami boli v zozname vyznaÄené Äervenou farbou. Podrobnosti o " "chybe budú zobrazené, ak vyberiete nejaký záznam." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Súbor bol bezpeÄne uložený." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Súbor bol bezpeÄne uložený a skompilovaný do MO formátu, ale pravdepodobne " "nebude pracovaÅ¥ správne." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Súbor bol bezpeÄne uložený, ale nemôže byÅ¥ skompilovaný do formátu MO a " "následne použitý." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Súbor vo formáte MO bol vytvorený, ale pravdepodobne nefunguje správne." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Nemožno skompilovaÅ¥ súbor do formátu MO a použiÅ¥." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "NenaÅ¡li sa žiadne problémy s prekladom." #: src/edframe.cpp:1894 #, 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] "" "Preklad je pripravený na používanie, ale %d záznam eÅ¡te nie je preložený." msgstr[1] "" "Preklad je pripravený na používanie, ale %d záznamy eÅ¡te nie sú preložené." msgstr[2] "" "Preklad je pripravený na používanie, ale %d záznamov eÅ¡te nie je preložených." msgstr[3] "" "Preklad je pripravený na používanie, ale %d záznamov eÅ¡te nie je preložených." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Preklad je pripravený na používanie." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit automaticky opraví neplatný obsah v súbore \"%s\"." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Súbor obsahoval duplicitné položky, Äo nie je v PO súboroch povolené a " "brá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Å¥." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Jazyk prekladu nie je nastavený." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "NastaviÅ¥ jazyk" #: src/edframe.cpp:2317 msgid "Set language" msgstr "NastaviÅ¥ jazyk" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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é." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Jazyk prekladu sa zhoduje so zdrojovým jazykom." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "OpraviÅ¥ jazyk" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "OpraviÅ¥ jazyk" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Tento súbor obsahuje položky s množným Äíslom, ale nemá nastavenú hlaviÄku " "množného Äísla." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Položky v tomto súbore majú rozdielne tvary množných Äísiel, ako je " "nastavené v hlaviÄke súboru Tvary množného Äísla" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "V hlaviÄke chýba položka Tvary množného Äísla." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Chyba syntaxu v hlaviÄke Tvary množného Äísla („%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "OpraviÅ¥ hlaviÄku" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "OpraviÅ¥ hlaviÄku" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Tvar množného Äísla použitého súborom je neobvyklý pre jazyk %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "PosúdiÅ¥" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Chcete použiÅ¥ anglický zdrojový text?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "V tomto súbore sa namiesto zdrojového textu používajú ID reÅ¥azce. Poedit " "môže za vás naÄítaÅ¥ anglické texty zo súboru „%sâ€." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "NaÄítaÅ¥ angliÄtinu" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Preložené: %d z %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Zostáva: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "chyba %d" msgstr[1] "%d chyby" msgstr[2] "%d chýb" msgstr[3] "%d chýb" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d položka" msgstr[1] "%d položky" msgstr[2] "%d položiek" msgstr[3] "%d položiek" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (neuložené)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (zmenené)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Zlyhala aktualizácia pamäte prekladov: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Súbor “%s†nebolo možné uložiÅ¥." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "OdstrániÅ¥ preklady rovnaké ako zdroj" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Chcete odstrániÅ¥ vÅ¡etky preklady, ktoré sú totožné so zdrojovým textom?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Táto akcia odstráni vÅ¡etky preklady, ktoré sa presne zhodujú so zdrojovým " "textom. Túto operáciu nie je možné vrátiÅ¥ späť." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "ZachovaÅ¥" #: src/edframe.cpp:2856 msgid "Remove" msgstr "OdstrániÅ¥" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "VyÄistiÅ¥ zmazané preklady" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Chcete odstrániÅ¥ vÅ¡etky preklady, ktoré sa už dlho nepoužívajú?" #: src/edframe.cpp:2879 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 "" "Ak budete pokraÄovaÅ¥ s Äistením, vÅ¡etky preklady oznaÄené ako zmazané budú " "natrvalo odstránené. V prípade, že budú v budúcnosti znovu pridané, budete " "ich musieÅ¥ preložiÅ¥ znovu." #: src/edframe.cpp:2883 msgid "Purge" msgstr "VyÄistiÅ¥" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "SkopírovaÅ¥ zo zdrojového textu" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "SkopírovaÅ¥ zo zdrojového textu" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "VyÄistiÅ¥ preklad" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "VyÄistiÅ¥ preklad" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "UpraviÅ¥ komentár" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "UpraviÅ¥ komentár" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Výskyty v kóde" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Výskyty v kóde" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "SkryÅ¥ boÄný panel" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "ZobraziÅ¥ boÄný panel" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "SkryÅ¥ stavový riadok" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "ZobraziÅ¥ stavový riadok" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Dĺžka reÅ¥azca v znakoch: preklad | zdroj" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Dĺžka reÅ¥azca v znakoch" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Zdrojový text" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Jednotné Äíslo" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Množné Äíslo" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Preklad" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pred-preložené" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Vyžaduje spracovanie" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Vyžaduje spracovanie" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "VytvoriÅ¥ nový preklad" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "VytvoriÅ¥ nový preklad z tohto POT súboru." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID zdrojového textu" #: src/editing_area.cpp:768 msgid "Everything" msgstr "VÅ¡etko" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Tvar %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Tvar %i (nepoužitý)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nula" #: src/editing_area.cpp:788 msgid "One" msgstr "Jeden" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dva" #: src/editing_area.cpp:804 msgid "Other" msgstr "Ostatné" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Kontext reÅ¥azca: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identifikátor reÅ¥azca: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s formát" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s formát" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Preklad — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Zdrojový text — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "neznámy jazyk" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Chyba siete: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Neznáma chyba" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Zlyhalo zlúÄenie katalógov gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "OtvoriÅ¥ v editore" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "OtvoriÅ¥ v editore" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "V súbore nie sú uvedené žiadne informácie o výskytoch tohto reÅ¥azca v " "zdrojovom kóde." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Bez použiteľnej informácie" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d výskyt kódu" msgstr[1] "%d výskyty kódu" msgstr[2] "%d výskytov kódu" msgstr[3] "%d výskytov v kóde" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Zdrojový kód nenájdený" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit nemôže zobraziÅ¥ zdrojový kód tam, kde sa používa reÅ¥azec, pretože " "súbor nie je k dispozícii v referenÄnom umiestnení alebo ide o symbolický " "odkaz, ktorý neukazuje na skutoÄný súbor." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Súbor nemohol byÅ¥ otvorený" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit nedokázal otvoriÅ¥ súbor „%s\"." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "VyhľadaÅ¥" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "NahradiÅ¥" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Voľby" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "IgnorovaÅ¥ veľkosÅ¥ písmen" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "PrehľadávaÅ¥ dookola" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Iba celé slová" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "HľadaÅ¥ v zdrojových textoch" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "HľadaÅ¥ v prekladoch" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "HľadaÅ¥ v komentároch" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "NahradiÅ¥ &vÅ¡etko" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "NahradiÅ¥ &vÅ¡etko" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&NahradiÅ¥" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &PredoÅ¡lý" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Nasledujúci >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Vyhľadávaný reÅ¥azec" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "ReÅ¥azec nahradenia" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "upozornenie: " #: src/gexecute.cpp:171 msgid "error: " msgstr "chyba: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Názov jazyka alebo kódu" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Jazyk prekladu" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Jazyk prekladu:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "VÅ¡etky reÅ¥azce" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Nepodarilo sa stiahnuÅ¥ detaily projektu Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Pri obnove prekladov do služby Localazy doÅ¡lo k chybe." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projekty" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "ZískaÅ¥ viac informácií o službe %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy je vysoko automatizovaná lokalizaÄná platforma, ktorá umožňuje " "každému jednoducho prekladaÅ¥ svoje produkty a obsah do viacerých jazykov." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "PridaÅ¥ projekt" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Pridáva projekt" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit – Správca katalógov" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Upraviť…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "VytvoriÅ¥ nový projekt prekladu" #: src/manager.cpp:145 msgid "Delete the project" msgstr "OdstrániÅ¥ projekt" #: src/manager.cpp:146 msgid "Edit the project" msgstr "UpraviÅ¥ projekt" #: src/manager.cpp:176 msgid "Update all" msgstr "AktualizovaÅ¥ vÅ¡etko" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "AktualizovaÅ¥ vÅ¡etky katalógy v projekte" #: src/manager.cpp:378 msgid "Total" msgstr "Celkovo" #: src/manager.cpp:379 msgid "Untrans" msgstr "Nepreložené" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Vyžaduje spracovanie" #: src/manager.cpp:381 msgid "Errors" msgstr "Chyby" #: src/manager.cpp:382 msgid "Last modified" msgstr "Naposledy upravené" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Vyberte si prieÄinok" #: src/manager.cpp:433 msgid "Directories:" msgstr "PrieÄinky:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Chcete odstrániÅ¥ projekt “%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "OdstrániÅ¥ projekt" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Odstránením projektu nebudú odstránené žiadne prekladové súbory." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Potvrdenie" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "AktualizovaÅ¥ vÅ¡etky katalógy v tomto projekte?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Vykoná aktualizáciu zdrojového kódu vÅ¡etkých súborov projektu." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Aktualizujú sa katalógy projektu" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Kontrola aktualizácií…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Správca katalógov" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Predvoľby…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Úpravy" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Späť" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Vpred" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "VložiÅ¥ a prispôsobiÅ¥ Å¡týl" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "OdstrániÅ¥" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Pravopis a gramatika" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "ZobrazovaÅ¥ pravopis a gramatiku" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "SkontrolovaÅ¥ dokument teraz" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "KontrolovaÅ¥ gramatiku poÄas písania" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "SkontrolovaÅ¥ gramatiku so slovníkom" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Automaticky opravovaÅ¥ gramatiku" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Nahradenia" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "ZobraziÅ¥ nahradenia" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Chytré kopírovanie/prilepenie" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Chytré úvodzovky" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Chytré pomlÄky" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Chytré odkazy" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Nahradenia textu" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformácie" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "VyhotoviÅ¥ VEĽKÃM PÃSMOM" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "VyhotoviÅ¥ malým písmom" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Prvé písmeno veľkým" #: src/menus.cpp:237 msgid "Speech" msgstr "VýslovnosÅ¥" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "ZaÄaÅ¥ rozprávanie" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "ZastaviÅ¥ rozprávanie" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Zobrazenie" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "ZobraziÅ¥ liÅ¡tu nástrojov" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "PrispôsobiÅ¥ liÅ¡tu nástrojov…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Celoobrazovkový režim" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Okno" #: src/menus.cpp:263 msgid "Minimize" msgstr "MinimalizovaÅ¥" #: src/menus.cpp:264 msgid "Zoom" msgstr "Priblíženie" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Vitajte v Poedite" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "PreniesÅ¥ vÅ¡etko dopredu" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informácie o prekladateľovi" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Meno:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "VaÅ¡e meno" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Email:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "vase_meno@príklad.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "VaÅ¡e meno a emailová adresa sú použité iba v hlaviÄke Last-Translator v GNU " "gettext súboroch." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Úprava" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Automaticky skompilovaÅ¥ MO súbor pri uložení" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "KontrolovaÅ¥ gramatiku" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Vždy zameraÅ¥ pole pre zadávanie textu" #: src/prefsdlg.cpp:211 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 "" "Nepovolí zameranie zoznamu reÅ¥azcov. Ak je povolené, musíte pre navigáciu " "použiÅ¥ Ctrl+šípky na klávesnici, inak môžete priamo zaÄaÅ¥ písaÅ¥ text bez " "nutnosti stlaÄiÅ¥ Tab pre zmenu zamerania." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Vzhľad" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "PoužiÅ¥ vlastný zoznam písma:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Použije vlastný zoznam písma polí:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "ZmeniÅ¥ jazyk užívateľského rozhrania" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(požadovaný Windows 8 alebo novší)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "VÅ¡eobecné" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "PoužiÅ¥ Pamäť prekladov" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Spravovať…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Pri aktualizácii zo zdrojov" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "oznaÄovaÅ¥ v súbore ako nepresné" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pred-preložiÅ¥ z Pamäte prekladov" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit sa pokúsi vyplniÅ¥ nové reÅ¥azce iba z predoÅ¡lých prekladov v súbore " "alebo z celej Pamäte prekladov. Prekladanie pomocou Pamäte prekladov nebude " "príliÅ¡ úÄinné ak je skoro prázdna, ale bude lepÅ¡ie ak pridáte viac prekladov." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "PoÄet uložených prekladov:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "VeľkosÅ¥ databázy na disku:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "ImportovaÅ¥ súbory prekladu…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "ImportovaÅ¥ súbory prekladu…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "ImportovaÅ¥ z Výmennej pamäte prekladov (TMX)…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "ImportovaÅ¥ z Výmennej pamäte prekladov (TMX)…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "ExportovaÅ¥ do Výmennej pamäte prekladov (TMX)…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "ExportovaÅ¥ do Výmennej pamäte prekladov (TMX)…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "VynulovaÅ¥" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Vyberte súbor prekladu pre import" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Vyberte súbor Výmennej pamäte prekladov (TMX) na import" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Súbory Výmennej pamäte prekladov (TMX)" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Importovanie prekladov…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Import pamäte prekladov zlyhal." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Import z \"%s\"…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s preklad bol importovaný." msgstr[1] "%s preklady boli importované." msgstr[2] "%s prekladov bolo importovaných." msgstr[3] "%s prekladov bolo importovaných." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "ExportovaÅ¥ ako…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Exportovanie prekladov…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Exportovanie prekladovej pamäte do \"%s\" zlyhalo." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "VynulovaÅ¥ pamäť prekladov" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Ste si istý že chcete vynulovaÅ¥ pamäť prekladov?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Obnovením pamäte prekladov natrvalo vymažete vÅ¡etky uložené preklady. Túto " "operáciu nie je možné vrátiÅ¥ späť." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "Pamäť prekladov" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Pamäť prekladov" #: src/prefsdlg.cpp:730 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 "" "Extraktory zdrojového kódu sa používajú na vyhľadávanie preložiteľných " "reÅ¥azcov v súboroch zdrojového kódu a ich extrahovanie na použite v preklade." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Vlastné extraktory:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Vlastné extraktory:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Podporuje vÅ¡etky programovacie jazyky nástrojov GNU gettext (PHP, C/C++, C#, " "Perl, Python, Java, JavaScript a ÄalÅ¡ie)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "OdstrániÅ¥ extraktor" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Ste si istý, že chcete odstrániÅ¥ extraktor „%s\"?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extraktory" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "ÚÄty" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Automaticky kontrolovaÅ¥ aktualizácie" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Vrátane beta verzií" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta verzie obsahujú najnovÅ¡ie funkcie a vylepÅ¡enia, ale môžu byÅ¥ menej " "stabilné." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Aktualizácie" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Tieto nastavenia ovplyvňujú interné formátovanie PO súborov. Zmeňte ich, iba " "ak máte Å¡peciálne požiadavky, napríklad kvôli správe verzií." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "UkonÄenie riadkov:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (odporúÄané)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "ZalomiÅ¥ po:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "ZachovaÅ¥ existujúce formátovanie súborov" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Rozšírené" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Nastavenia" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Príprava reÅ¥azcov…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Predbežný preklad z pamäte prekladov…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Pred-preložený %u reÅ¥azec" msgstr[1] "Pred-preložené %u reÅ¥azce" msgstr[2] "Pred-preložených %u reÅ¥azcov" msgstr[3] "Pred-preložených %u reÅ¥azcov" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Prebieha pred-preklad…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d položka bola pred-preložená." msgstr[1] "%d položky boli pred-preložené." msgstr[2] "%d položiek bolo pred-preložených." msgstr[3] "%d položiek bolo pred-preložených." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Preklady boli oznaÄené ako potrebujúce dopracovanie, pretože môžu byÅ¥ " "nepresné a môžu potrebovaÅ¥ úpravy." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Presné zhody z TM" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Približné zhody z TM" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Žiadne položky neboli pred-preložené." #: src/pretranslate.cpp:218 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 "" "Pamäť prekladov neobsahuje žiaden reÅ¥azec podobný obsahu tohto súboru. Tento " "spôsob je úÄinný iba pre poloautomatické preklady po tom, keÄ sa to Poedit " "nauÄí zo súborov, ktoré ste preložili manuálne." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Nie je možné použiÅ¥ pred-preklad bez zdrojového textu." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pred-preložiÅ¥" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Predbežný preklad si vyžaduje, aby bol k dispozícii zdrojový text. " "Nefunguje, ak sa použijú len ID bez skutoÄného textu." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Nemožno predbežne prekladaÅ¥ z neznámeho jazyka." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Predbežný preklad vyžaduje, aby bol známy jazyk východiskového textu. Poedit " "ho v tomto súbore nedokázal zistiÅ¥." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "VyplniÅ¥ iba presné zhody" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "V predvolenom nastavení sú zahrnuté aj nepresné výsledky, ale sú oznaÄené " "ako výsledky, ktoré si vyžadujú prepracovanie. Ak chcete zahrnúť len " "dokonalé zhody, zaÅ¡krtnite túto možnosÅ¥." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "NeoznaÄovaÅ¥ presné výsledky ako potrebujúce dopracovanie" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Povoľte to iba ak dôverujete kvalite vaÅ¡ej Prekladovej pamäti. Å tandardne sú " "oznaÄené vÅ¡etky zhody ako potrebujúce dopracovanie a mali by byÅ¥ pred " "použitím posúdené." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Pri použití pred-prekladu budú nájdené presné zhody alebo nepresnosti pre " "nepreložené preklady v Pamäti prekladov a budú doplnené do vaÅ¡ich prekladov." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Chyba: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "Vyskytla sa %d chyba:" msgstr[1] "Vyskytli sa %d chyby:" msgstr[2] "Vyskytlo sa %d chýb:" msgstr[3] "Vyskytlo sa %d chýb:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Vyskytla sa chyba." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "Vyskytla sa %d chyba." msgstr[1] "Vyskytli sa %d chyby." msgstr[2] "Vyskytlo sa %d chýb." msgstr[3] "Vyskytlo sa %d chýb." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "ZruÅ¡enie…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "PretiahnuÅ¥ prieÄinok alebo súbor tu" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "PretiahnuÅ¥ prieÄinok alebo súbor tu" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "PridaÅ¥ prieÄinky…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "PridaÅ¥ prieÄinky…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "PridaÅ¥ súbory…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "PridaÅ¥ súbory…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "PridaÅ¥ zástupný znak…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "PridaÅ¥ zástupný znak…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "OdhaliÅ¥ vo vyhľadávaÄi" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "UkázaÅ¥ v Prieskumníkovi" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "UkázaÅ¥ v prieÄinku" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Cesty" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "VylúÄené cesty" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Rozšírené nastavenia extrakcie" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "ExtrahovaÅ¥ poznámky pre prekladateľov z:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Komentárov s predponou:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "VÅ¡etkých komentárov" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Prídavné príznaky xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Prídavné kľúÄové slová" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Názov projektu prekladu je pre" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Názov tímu a e-mailová adresa alebo URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "napr. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (odporúÄané)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Uložte, prosím, najprv súbor. Táto sekcia nemôže byÅ¥ bez uloženia upravovaná." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "SprávnosÅ¥ zástupných znakov" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "V preklade chýba zástupný znak „%s“." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "NadbytoÄný zástupný znak „%s“, ktorý nie je v zdrojovom texte." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Tvary množného Äísla prekladov" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Nie vÅ¡etky tvary množného Äísla sú preložené." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Nezhodné veľké/malé písmená" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Preklad by mal zaÄaÅ¥ ako veta." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Preklad by mal zaÄaÅ¥ malým písmenom." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Nezhodné biele znaky" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Preklad nezaÄína medzerou." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Preklad zaÄína medzerou, ale zdrojový text nie." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Prekladu chýba konci prechod na nový riadok." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Preklad konÄí prechodom na nový riadok, ale zdrojový text nie." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "V preklade chýba medzera na konci." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Preklad konÄí medzerou, ale zdrojový text nie." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Kontrola interpunkcie" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Preklad by mal byÅ¥ ukonÄený \"%s\"." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Preklad by nemal konÄiÅ¥ „%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Preklad konÄí „%s\", ale zdrojový text konÄí „%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Cloud" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "ZmazaÅ¥ ponuku" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "ZmazaÅ¥ ponuku" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Komentár:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "AktualizovaÅ¥" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&OdstrániÅ¥" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "OdstrániÅ¥ komentár" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "UpraviÅ¥ projekt" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Názov projektu:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "PrehliadaÅ¥" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "PridaÅ¥ prieÄinok do zoznamu" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Súbor" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Nový…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nový zo súboru &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nový zo súboru &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Otvoriť…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Naposledy otvorené" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "OtvoriÅ¥ nedávne" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "OtvoriÅ¥ cloudovský preklad…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Otváranie cloudovského prekladu…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Å &tartovacie okno" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Å &tartovacie okno" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Správca katalógov" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Správca katalógov" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&ZatvoriÅ¥" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&UložiÅ¥" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "UložiÅ¥ &ako…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "UložiÅ¥ &ako…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "SkompilovaÅ¥ do MO súboru…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&xportovaÅ¥ do HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "SkontrolovaÅ¥ aktualizácie…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Nastavenia…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "Pred&voľby" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "U&konÄiÅ¥" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "UkonÄiÅ¥" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "KopírovaÅ¥ z jednotného Äísla" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "KopírovaÅ¥ z jednotého Äísla" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Preklad potrebuje &dopracovanie" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Preklad potrebuje &dopracovanie" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "&UpraviÅ¥ komentár" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "&UpraviÅ¥ komentár" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Návrhy" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Vyhľadať…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Nahradiť…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "HľadaÅ¥ Äalší" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "HľadaÅ¥ predoÅ¡lý" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "VyhľadaÅ¥ a nahradiť…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "HľadaÅ¥ Äalší" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "HľadaÅ¥ predoÅ¡lý" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "ZobraziÅ¥ &ID reÅ¥azca" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "ZobraziÅ¥ &ID reÅ¥azca" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "ZobrazovaÅ¥ varovania" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "ZobrazovaÅ¥ upozornenia" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "UsporiadaÅ¥ podľa poradia &súborov" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "UsporiadaÅ¥ podľa poradia &súborov" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "UsporiadaÅ¥ podľa &zdroja" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "UsporiadaÅ¥ podľa &zdroja" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "UsporiadaÅ¥ podľa &prekladu" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "UsporiadaÅ¥ podľa &prekladu" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "Z&oskupiÅ¥ podľa súvislostí" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "Z&oskupiÅ¥ podľa súvislostí" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Najskôr položky s chybami" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Najskôr položky s chybami" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Najskôr nepreložené záznamy" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Najskôr nepreložené záznamy" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&ZobraziÅ¥ výskyty kódu" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&ZobraziÅ¥ výskyty kódu" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "ZobraziÅ¥ boÄný panel" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "ZobraziÅ¥ stavový riadok" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Preklad" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&AktualizovaÅ¥ zo zdrojového kódu" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&AktualizovaÅ¥ zo zdrojového kódu" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "SynchronizovaÅ¥ s Crowdinom" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pred-&preklad…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&OveriÅ¥ preklady" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&OveriÅ¥ preklady" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "OdstrániÅ¥ preklady rovnaké ako zdroj" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&VyÄistiÅ¥ odstránené preklady" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&VyÄistiÅ¥ odstránené preklady" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Vlastnosti…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "P&rejsÅ¥" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&DokonÄiÅ¥ a prejsÅ¥ na Äalší" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&DokonÄiÅ¥ a prejsÅ¥ na Äalší" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "PredoÅ¡lá úprava" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "PredoÅ¡lá úprava" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&PredoÅ¡lý preklad" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&PredoÅ¡lý preklad" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Nasledujúci preklad" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Nasledujúci preklad" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "P&redoÅ¡lý nedokonÄený" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "P&redoÅ¡lý nedokonÄený" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Nasledujúci &nedokonÄený" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Nasledujúci &nedokonÄený" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "PredoÅ¡lý tvar množného Äísla" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "PredoÅ¡lý tvar množného Äísla" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "ÄŽalší tvar množného Äísla" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "ÄŽalší tvar množného Äísla" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Online &nápoveda" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Online &nápoveda" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Manuál &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Manuál &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&O programe Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&O programe" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Nastavenia extraktora" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Zoznam prípon oddelených bodkoÄiarkou (napr. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Volanie príkazu:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Príkaz pre extrakciu prekladov:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Tento príkaz je použitý na spustenie extraktora.\n" "%o rozÅ¡iruje názov výstupného súboru,\n" "%K pre zoznam kľúÄových slov,\n" "%F pre zoznam vstupných súborov,\n" "%C pre príznak kódovej stránky (pozri nižšie)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Položka v zozname kľúÄových slov:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Toto bude pripojené k príkazovému riadku raz pre každé\n" "kľúÄové slovo. „%k\" sa zamení sa kľúÄové slovo." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Položka v zozname vstupných súborov:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Toto bude pripojené k príkazu raz pre každý vstupný\n" "súbor. „%f\" sa zamení názvom súboru." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Zdrojový kód znakovej sady:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Toto bude pripojené do príkazového riadku iba ak je zadaný\n" "zdroj znakovej sady. „%c\" sa rozšíri o hodnotu znakovej sady." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Vlastnosti prekladov" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Názov projektu a verzia:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Prekladateľský tím:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Tvary množného Äísla:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "PoužiÅ¥ predvolené pravidlá pre tento jazyk" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "PoužiÅ¥ vlastný výraz" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "DozvedieÅ¥ sa informácie o tvaroch množného Äísla" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Znaková sada:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Rozšírené nastavenia extrakcie…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Rozšírené nastavenia extrakcie…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Vlastnosti prekladov" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Cesty zdrojov" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Cesty zdrojov" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "AktualizovaÅ¥ text zo zdrojových súborov v nasledovných prieÄinkoch:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Základná cesta:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Zdrojové kľúÄové slová" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Zdrojové kľúÄové slová" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "PoužiÅ¥ tieto kľúÄové slová (názvy funkcií) pre rozlíšenie preložiteľných\n" "reÅ¥azcov v zdrojových súboroch:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Tiež použiÅ¥ predvolené kľúÄové slová pre podporované jazyky" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "DozvedieÅ¥ sa informácie o kľúÄových slovách Gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "OtvoriÅ¥ súbor" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "UložiÅ¥ súbor" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "OveriÅ¥" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Skontroluje chyby v preklade" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "AktualizovaÅ¥ z kódu" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "AktualizovaÅ¥ z kódu" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "AktualizovaÅ¥ zo zdrojového kódu" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "BoÄný panel" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Zobrazí alebo skryje boÄný panel" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "PredoÅ¡lý zdrojový text" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Starý zdrojový text (predtým, než bol zmenený poÄas aktualizácie), bude " "teraz oznaÄený ako nepresný preklad." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Poznámky pre prekladateľov" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Komentár" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "PridaÅ¥ komentár" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "PridaÅ¥ komentár" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "VymazaÅ¥ z Pamäte prekladov" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "VymazaÅ¥ z Pamäte prekladov" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Návrhy prekladu" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Nenájdené žiadne zhody" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "NenaÅ¡li sa žiadne zhody" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Tento reÅ¥azec bol nájdený v Pamäti prekladov Poeditu." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Návrhy na preklad vyžadujú, aby bol k dispozícii zdrojový text. Nefungujú, " "ak sa použijú len ID bez skutoÄného textu." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Návrhy na preklad vyžadujú, aby bol známy jazyk zdrojového textu. Poedit ho " "v tomto súbore nedokázal zistiÅ¥." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Nepodarilo sa spustiÅ¥ program: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Súbor Výmennej pamäte prekladov (TMX) je poÅ¡kodený." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Databáza Pamäte prekladov je poÅ¡kodená: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Chyba pamäte prekladu: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(PoužiÅ¥ pôvodný jazyk)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Výber jazyka" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Vyberte si vami preferovaný jazyk" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Musíte reÅ¡tartovaÅ¥ Poedit, aby sa zmeny prejavili." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Nepodarilo sa vytvoriÅ¥ doÄasný prieÄinok." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "V súboru nie sú žiadne preklady. Toto je nezvyÄajné." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Prekladateľné položky sa do systému Gettext nepridávajú ruÄne, ale sú " "automaticky extrahované zo zdrojového kódu. Takto zostávajú aktuálne a " "presné. Prekladatelia zvyÄajne používajú súbory Å¡ablón PO (POT), ktoré pre " "nich pripravil vývojár." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "DozvedieÅ¥ sa viac o GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "NajjednoduchÅ¡ia cesta, ako vyplniÅ¥ tento súbor prekladmi, je aktualizovaÅ¥ ho " "z POT Å¡ablóny:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "AktualizovaÅ¥ z POT súboru" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "PoužiÅ¥ preložiteľné reÅ¥azce z existujúcej POT Å¡ablóny." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Môžete vybraÅ¥ preložiteľné reÅ¥azce priamo zo zdrojového kódu:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "VytiahnuÅ¥ zo zdrojov" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "NastaviÅ¥ vytiahnutie zdrojového kódu v Nastaveniach." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Verzia %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "VytvoriÅ¥ nový" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "VytvoriÅ¥ nový preklad z POT Å¡ablóny." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "PrehľadávaÅ¥ súbory" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "OtvoriÅ¥ a upraviÅ¥ súbory prekladu." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "PreložiÅ¥ cloudovský projekt" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "SpolupracovaÅ¥ s ostatnými ľuÄmi online." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Nedávne súbory" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Synchronizácia" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Synchronizuje preklad so službou Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "O programe %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Nastavenia %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "O programe %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Služby" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "SkryÅ¥ %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "SkryÅ¥ ostatné" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "ZobraziÅ¥ vÅ¡etko" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "UkonÄiÅ¥ %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Predvoľby…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Predvoľby..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Predvoľby..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&PoužiÅ¥" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "PoužiÅ¥" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Späť" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Späť" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&ZruÅ¡iÅ¥" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&VyÄistiÅ¥" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "VyÄistiÅ¥" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "KopírovaÅ¥" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "V&ystrihnúť" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Vystrihnúť" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "UpraviÅ¥" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&UkonÄiÅ¥" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Nápoveda" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nový" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Nový" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Nie" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Nie" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Otvoriť…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&OtvoriÅ¥..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "OtvoriÅ¥..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&VložiÅ¥" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "VložiÅ¥" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Predvoľby" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Vpred" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "ObnoviÅ¥" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&UložiÅ¥ ako" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "UložiÅ¥ ako" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "VybraÅ¥ &vÅ¡etko" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "VybraÅ¥ vÅ¡etko" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Späť" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Ãno" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ãno" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "↑" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "↓" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "â†" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "→" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Upozornenie: " poedit-3.6.3/locales/ms.po0000644000175100001660000026050015011674364011104 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Malay\n" "Language: ms_MY\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" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: ms\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Sembunyi mesej pemberitahuan ini" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Jangan Tunjuk Lagi" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Jangan tunjuk lagi" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Kemas kini ringkasan" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Tutup" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Fail" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Rentetan baharu" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Mengutip fail sumber…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Gagal memuatkan fail dengan terjemahan yang diekstrak." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Dalam: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Kod sumber tidak tersedia." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Terjemahan tidak dapat dikemas kini daripada kod sumber, kerana tidak ada " "kod ditemui di lokasi yang dinyatakan dalam Sifat fail ini." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Keizinan dinafikan." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Anda tidak mempunyai keizinan untuk membaca fail-fail kod sumber dari lokasi " "dinyatakan dalam Sifat fail." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Jika anda menafikan akses kepada fail anda sebelum ini, anda boleh " "membenarkannya di System Settings > Privacy & Security > Files & Folders." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Jika anda sebelum ini dinafikan capaian ke fail anda, benarkannya dalam " "Keutamaan Sistem > Keselamatan & Kerahsiaan > Kerahsiaan > Fail & Folder." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Fail \"%s\" gagal dibuka." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Mengemas kini terjemahan" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Menggabungkan perbezaan…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Pengepala cacat: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Fail Terjemahan PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Templat Terjemahan POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Fail Terjemahan XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Fail Terjemahan JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Fail Terjemahan Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Semua Fail Terjemahan" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Fail ini dalam format yang tidak dikenal pasti oleh Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Fail JSON ini bukan sebuah fail terjemahan dan tidak dapat disunting dengan " "Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Gagal membaca kandungan fail dengan ralat berikut: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Fail \"%s\" adalah baca-sahaja dan tidak boleh disimpan.\n" "Sila simpan ia dengan nama berbeza." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Tidak dapat menyimpan fail %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Tangkapan skrin:" #: src/catalog_po.cpp:134 #, 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] "Baris %i bagi fail \"%s\" tidak dimuatkan dengan baik." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Baris %d bagi fail \"%s\" telah rosak (data %s tidak sah)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Fail PO rosak: msgstr bentuk tunggal digunakan bersama dengan msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Fail katalog rosak: msgstr bentuk jamak digunakan tanpa msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Tidak dapat memuatkan fail, ia berkemungkinan telah rosak." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Terdapat ralat ketika memuat fail. Hasilnya, beberapa data mungkin hilang " "atau rosak." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Terdapat satu masalah ketika memformat fail secara elok (tetapi telah " "disimpan dengan baik)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Fail tidak dapat disimpan dalam set aksara \"%s\" yang dinyatakan dalam " "tetapan katalog.\n" "\n" "Ia sebaliknya disimpan dalam UTF-8 dan tetapan telah diubah suai dengan " "sewajarnya." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Ralat menyimpan fail" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "\"%s\" bukanlah fail POT yang sah." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Ralat ketika memuatkan fail XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "versi tidak disokong (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Penanda rosak dalam rentetan terjemahan." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Hubungkan Poedit dengan platform penyetempatan awan yang disokong untuk " "menyegerakkan terjemahan yang diuruskan dalamnya dengan lancar." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Bagaimanakah penyegerakan awan berfungsi?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Akaun" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(belum daftar masuk)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Terjemahan awan terbuka" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Urus akaun" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projek:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Bahasa:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Daftar masuk ke Akaun Awan" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Daftar masuk ke akaun awan" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Tiada projek terjemahan tersenarai dalam akaun anda." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Memuat turun terjemahan terkini…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Daftar masuk ke %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Menyegerak" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Muat naik terjemahan ke %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Muat naik terjemahan ke %s gagal." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Ralat menyegerak" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Tambah" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Ralat Crowdin tidak diketahui." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Tidak diizinkan, sila daftar masuk sekali lagi." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Memuat turun terjemahan dilumpuhkan dalam projek ini." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Daftar Masuk" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Daftar masuk" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Daftar Keluar" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Daftar keluar" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Ketahui lebih lanjut berkenaan Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Menunggu pengesahihan…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Mengemas kini maklumat pengguna…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Daftar masuk ke Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Penyegerakan dengan Crowdin gagal." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Ralat Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Memuat naik terjemahan…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Salin" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Ketahui lebih lanjut" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Bantuan" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Fail MO tidak boleh disunting terus dalam Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Ralat membuka fail" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Sila buka dan sunting fail PO sepadan sebagai ganti. Bila anda menyimpannya, " "fail MO akan dikemas kini juga." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "jangan padam fail sementara (untuk penyahpepijatan)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "kendali satu poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "pergi ke item pada nombor baris diberikan" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Gagal berkomunikasi dengan proses Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Pengecualian tidak dikendalikan berlaku: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Pilih templat terjemahan" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Fail tidak sah" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Pilih fail terjemahan" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit ialah sebuah penyunting terjemahan yang mudah digunakan." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Anda tidak boleh lepas lebih daripada satu fail pada tetingkap Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Fail “%s†bukan satu fail terjemahan." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Fail \"%s\" tidak wujud." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Semakan ejaan dilumpuhkan, kerana kamus untuk %s tidak dipasang." #: src/edframe.cpp:871 msgid "Install" msgstr "Pasang" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Fail \"%s\" telah diubah oleh aplikasi lain." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Muat semula fail" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Anda mahu memuatkan semula fail dari cakera? Suntingan tidak disimpan anda " "dalam Poedit akan hilang jika anda teruskan." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Abai" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Muat Semula Fail" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Fail telah diubah suai. Anda mahu menyimpan perubahan yang dibuat?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Simpan perubahan" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Perubahan anda akan hilang jika anda tidak menyimpannya." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Simpan" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Jangan simpan" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Jangan Simpan" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Perubahan telah dibuat oleh aplikasi lain akan hilang jika anda simpan." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Batal" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Simpan Jua" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Simpan jua" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Simpan sebagai…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Kompil ke…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Fail Terjemahan Terkompil" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Eksport ke HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Fail HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Mengemas kini gagal" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Kemas Kini dari Fail &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Kemas kini dari fail &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d isu berkaitan terjemahan ditemui." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Keputusan pengesahan" #: src/edframe.cpp:1842 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 "" "Masukan dengan ralat bertanda merah dalam senarai. Perincian ralat akan " "ditunjukkan ketika anda memilih masukan sebegitu." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Fail telah disimpan secara selamat." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Fail telah disimpan secara selamat dan dikompil dalam format MO, tetapi ia " "berkemungkinan tidak berfungsi dengan baik." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Fail telah disimpan dengan selamat, tetapi ia tidak dapat dikompil dengan " "format MO dan digunakan." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Fail telah dikompil dalam format MO, tetapi ia berkemungkinan tidak " "berfungsi dengan baik." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Fail tidak dapat dikompil dalam format MO dan boleh digunakan." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Tiada masalah berkaitan terjemahan ditemui." #: src/edframe.cpp:1894 #, 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] "" "Terjemahan sedia digunakan, tetapi %d masukan belum diterjemah lagi." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Terjemahan sedia digunakan." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "Poedit secara automatik dapat tetapkan kandungan tidak sah dalam fail " "\"% s\"." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Fail mengandungi item pendua, yang tidak dibenarkan dalam fail PO dan " "menghalang fail digunakan. Poedit membaiki isu ini, tetapi anda patut " "menilai semula terjemahan mana-mana item bertanda sebagai perlu semak dan " "membetulkan item jika perlu." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Bahasa terjemahan tidak ditetapkan." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Tetapkan Bahasa" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Cadangan tidak tersedia jika bahasa terjemahan tidak ditetapkan dengan baik. " "Fitur-fitur lain, seperti bentuk majmuk, mungkin terjejas juga." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Bahasa terjemahan adalah sama dengan bahasa sumber." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Baiki Bahasa" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Baiki bahasa" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Fail ini mempunyai masukan-masukan berbentuk jamak, tetapi tiada pengepala " "Bentuk-Jamak dikonfigurkan." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Masukan dalam fail ini mempunyai bentuk jamak yang berbeza dengan yang " "disebut dalam pengepala Bentuk-Jamak" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Pengepala Bentuk-Jamak yang diperlukan telah hilang." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Rakat sintaks dalam pengepala Bentuk-Jamak (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Baiki Pengepala" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Baiki pengepala" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "Ungkapan bentuk jamak yang digunakan oleh fail adalah tidak sesuai untuk %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Kaji semula" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Adakah anda mahu menggunakan Bahasa Inggeris untuk teks sumber?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Fail ini menggunakan ID rentetan dan bukannya teks sumber. Poedit boleh " "memuatkan teks Bahasa Inggeris daripada fail “%s†untuk anda." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Muatkan Bahasa Inggeris" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Sudah terjemah: %d dari %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Berbaki: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d ralat" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d masukan" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (tidak disimpan)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (diubah suai)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Gagal mengemas kini ingatan terjemahan: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Buang terjemahan yang sama dengan sumber" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Adakah anda mahu membuang semua terjemahan yang serupa dengan teks sumber?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Tindakan ini akan menghapuskan sebarang terjemahan yang serupa dengan teks " "sumber. Ini tidak boleh dibatalkan." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Kekalkan" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Buang" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Singkir terjemahan terpadam" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Anda mahu membuang semua terjemahan yang tidak digunakan lagi?" #: src/edframe.cpp:2879 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 "" "Jika anda teruskan penyingkiran, semua terjemahan bertanda dipadam akan " "kekal dibuang. Anda akan menterjemahkannya sekali lagi jika ia ditambah pada " "masa akan datang." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Singkir" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Salin dari sumber teks" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Salin dari Sumber Teks" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Kosongkan terjemahan" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Kosongkan Terjemahan" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Sunting ulasan" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Sunting Ulasan" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Kemunculan Kod" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Kemunculan kod" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Sembunyi Palang sisi" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Tunjuk Palang Sisi" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Sembunyi Palang Status" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Tunjuk Palang Status" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Panjang rentetan dalam aksara: terjemahan | sumber" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Panjang rentetan dalam aksara" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Teks sumber" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Tunggal" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Jamak" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Terjemahan" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pra-terjemah" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Perlu Semak" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Perlu semak" #: src/editing_area.cpp:566 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 "" "Fail POT hanyalah templat yang mengandungi sebarang terjemahan di dalamnya.\n" "Untuk membuat satu terjemahan, cipta satu fail PO baharu berdasarkan templat." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Cipta terjemahan baru" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Buat satu terjemahan baharu menerusi fail POT ini." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID teks sumber" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Kesemuanya" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Bentuk %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Bentuk %i (tidak digunakan)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Sifar" #: src/editing_area.cpp:788 msgid "One" msgstr "Satu" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dua" #: src/editing_area.cpp:804 msgid "Other" msgstr "Lain-lain" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Konteks rentetan: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Pengecam rentetan: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "format %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Terjemahan — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Teks sumber — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "bahasa tidak diketahui" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Ralat rangkaian:%s(%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Ralat tidak diketahui" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Gagal menggabungkan katalog gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Buka dalam Penyunting" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Buka dalam penyunting" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Tiada maklumat berkenaan kemunculan rentetan ini dalam kod sumber yang " "disediakan di dalam fail." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Tiada maklumat penggunaan" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kod kemunculan" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Kod sumber tidak ditemui" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit tidak dapat menunjukkan kod sumber yang mana rentetan tersebut " "digunakan, kerana fail sama ada tidak tersedia dalam lokasi rujukan atau ia " "hanyalah rujukan simbolik yang tidak menuju ke fail yang sebenar." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Fail tidak dapat dibuka" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit tidak dapat membuka fail \"%s\"." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Cari" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Ganti" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Pilihan" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Abai kata" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Lilit sekeliling" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Keseluruhan kata sahaja" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Cari dalam teks sumber" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Cari dalam terjemahan" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Cari dalam ulasan" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Ganti Semu&a" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Ganti semu&a" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Ganti" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Terdahulu" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Berikutnya >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Rentetan dicari" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Rentetan gantian" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Nama atau kod bahasa" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Bahasa Terjemahan " #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Bahasa bagi terjemahan:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Semua rentetan" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Tidak dapat memuat turun maklumat project Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Terdapat ralat semasa memuat naik terjemahan ke Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projek" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Ketahui lebih lanjut tentang %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy ialah platform penyetempatan yang sangat automatik yang membolehkan " "sesiapa sahaja menterjemah produk dan kandungan mereka ke dalam pelbagai " "bahasa dengan mudah." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Tambah Projek" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Tambah projek" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Pengurus katalog" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Sunting…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Cipta projek terjemahan baharu" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Padam projek" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Sunting projek" #: src/manager.cpp:176 msgid "Update all" msgstr "Kemas kini semua" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Kemas kini semua katalog dalam projek" #: src/manager.cpp:378 msgid "Total" msgstr "Jumlah" #: src/manager.cpp:379 msgid "Untrans" msgstr "Belum Terjemah" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Perlu Semak" #: src/manager.cpp:381 msgid "Errors" msgstr "Ralat" #: src/manager.cpp:382 msgid "Last modified" msgstr "Terakhir diubah suai" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Pilih direktori" #: src/manager.cpp:433 msgid "Directories:" msgstr "Direktori:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Anda pasti mahu memadam projek \"%s\"?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Padam Projek" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Memadam projek tidak akan memadam apa-apa fail terjemahan." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Pengesahan" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Kemas kini semua katalog dalam projek ini?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Jalankan kemas kini daripada kod sumber semua fail di dalam projek." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Periksa Kemas Kini…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Pengurus Katalog" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Keutamaan…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Sunting" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Buat asal" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Buat semula" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Gaya Tampal dan Padan" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Padam" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Ejaan dan Tata Bahasa" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Tunjuk Ejaan dan Tata Bahasa" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Periksa Dokumen Sekarang" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Periksa Ejaan Ketika Menaip" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Periksa Tata Bahasa Dengan Ejaan" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Betul Ejaan secara Automatik" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Penggantian" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Tunjuk Penggantian" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Salin/Tampal Pintar" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Petikan Pintar" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Sempang Pintar" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Pautan Pintar" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Penggantian Teks" #: src/menus.cpp:230 msgid "Transformations" msgstr "Pengubahan" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Jadikan Huruf Besar" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Jadikan Huruf Kecil" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Penghurufbesaran" #: src/menus.cpp:237 msgid "Speech" msgstr "Pertuturan" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Mula Bercakap" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Henti Bercakap" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Lihat" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Tunjuk Palang Alat" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Suai Palang Alat…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Masuk Skrin Penuh" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Tetingkap" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimumkan" #: src/menus.cpp:264 msgid "Zoom" msgstr "Zum" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Selamat Datang ke Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Bawa Semua ke Hadapan" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Maklumat berkenaan penterjemah" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nama:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Nama Anda" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-mel:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "anda@contoh.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Nama dan alamat e-mel anda hanya digunakan untuk menetapkan pengepala Last-" "Translator bagi fail gettext GNU." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Penyuntingan" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Kompil fail MO secara automatik ketika menyimpan" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Periksa ejaan" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Sentiasa ubah fokus ke medan input teks" #: src/prefsdlg.cpp:211 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 "" "Jangan biarkan senarai rentetan mengambil fokus. Jika diaktifkan, anda perlu " "gunakan Ctrl-panah untuk navigasi bahkan boleh terus menaip teks, tanpa " "perlu menekan Tab untuk megubah fokus." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Penampilan" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Guna fon senarai suai:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Guna fon medan teks suai:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Ubah bahasa UI" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(memerlukan Windows 8 atau lebih baharu)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Am" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Guna ingatan terjemahan" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Urus…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Bila mengemas kini dari sumber" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "padanan kabur di dalam fail" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pra-terjemah dari TM" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit boleh cuba mengisi dalam masukan baharu hanya dari terjemahan " "terdahulu dalam fail atau dari keseluruhan ingatan terjemahan anda. " "Penggunaan TM tidak berkesan jika ia hampir kosong, tetapi ia akan bertambah " "baik bila anda menambah lebih banyak terjemahan." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Terjemahan tersimpan:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Saiz pangkalan data dalam cakera:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Import Fail Terjemahan…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Import fail terjemahan…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Import Daripada TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Import daripada TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Eksport Ke TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Eksport ke TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Tetap semula" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Plih fail terjemahan untuk diimport" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Pilih fail TMX untuk diimport" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Fail TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Mengimport terjemahan…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Eksport sebagai…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Mengeksport terjemahan…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Mengeksport ingatan terjemahan dari \"%s\" gagal." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Tetap semula ingatan terjemahan" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Anda pasti mahu menetap semula ingatan terjemahan?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Menetap semula ingatan terjemahan akan memadam semua terjemahan tersimpan " "secara kekal. Anda tidak dapat membuat asal operasi ini." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Ingatan Terjemahan" #: src/prefsdlg.cpp:730 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 "" "Pengekstrak kod sumber digunakan untuk mencari rentetan yang boleh terjemah " "dalam fail kod sumber dan mengekstraknya supaya ia boleh diterjemah." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Pengekstrak Suai:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Pengekstrak suai:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "Gettext GNU" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Menyokong semua bahasa pengaturcaraan yang diiktiraf oleh alatan gettext GNU " "(PHP, C/C++, C#, Perl, Python, Java, JavaScript dan lain-lain)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Padam pengekstrak" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Anda pasti mahu memadam pengekstrak \"%s\"?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Pengekstrak" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Akaun" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Periksa kemas kini secara automatik" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Termasuk versi beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Versi beta mengandungi fitur-fitur baharu dan penambahbaikan terkini, tetapi " "mungkin kurang stabil." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Kemas Kini" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Tetapan ini mempengaruhi pemformatan dalaman fail PO. Laras ia jika anda ada " "keperluan khusus cth. kerana kawalan versi." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Penghujung baris:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (disarankan)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Lilit pada:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Kekal pemformatan bagi fail sedia ada" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Lanjutan" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Tetapan" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Menyediakan rentetan…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Membuat pra-terjemahan daripada ingatan terjemahan…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Pra-terjemah %u rentetan" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Pra-menterjemah…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d masukan telah dipra-terjemah." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Terjemahan telah ditandakan sebagai perlu semak, kerana ia mungkin tidak " "tepat. Anda patut menilai semula untuk pembetulan." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Tiada masukan boleh dipra-terjemah." #: src/pretranslate.cpp:218 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 tidak mengandungi sebarang rentetan yang sama dengan kandungan fail ini. " "Ianya hanya berkesan untuk terjemahan separa-automatik selepas Poedit " "belajar secukupnya dari fail yang diterjemah secara manual." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Tidak boleh praterjemah tanpa teks sumber." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pra-terjemah" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Praterjemahan memerlukan teks sumber tersedia. Ia tidak berfungsi jika hanya " "ID tanpa teks sebenar digunakan." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Tidak dapat pra-terjemah bahasa yang tidak diketahui." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Pra-terjemahan memerlukan teks bahasa sumber yang diketahui terlebih dahulu. " "Poedit tidak dapat mengesanya di dalam fail ini." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Hanya isi padanan tepat" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Secara lalai, hasil yang tidak tepat juga turut disertakan, tetapi telah " "ditanda sebagai perlu disemak. Tandakan pilihan ini untuk menyertakan " "padanan yang tepat sahaja." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Jangan tanda padanan tepat sebagai perlu semak" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Hanya benarkan jika anda mempercayai kualiti TM anda. Secara lalai, semua " "padanan dari TM bertanda sebagai perlu semak dan patut dinilai semula " "sebelum digunakan." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Pra-terjemahan mencari secara automatik padanan tepat atau kabur untuk " "rentetan belum terjemah dalam ingatan terjemahan dan mengisi dalam " "terjemahannya." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Membatalkan…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Seret Folder atau Fail Di Sini" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Seret folder atau fail di sini" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Tambah Folder…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Tambah folder…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Tambah Fail…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Tambah fail…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Tambah Kad Liar…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Tambah kad liar…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Dedah dalam Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Tunjuk dalam Explorer" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Tunjuk dalam Folder" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Laluan" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Laluan dikecualikan" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Tetapan pengekstrakan lanjutan" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Ekstrak nota untuk penterjemah dari:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Ulasan diawali dengan:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Semua ulasan" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Bendera xgettext tambahan:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Kata kunci tambahan" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Nama bagi projek terjemahan" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Nama pasukan dan alamat e-mel atau URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "cth. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (disarankan)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Sila simpan fail dahulu. Seksyen ini tidak boleh disunting buat masa ini." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Ketepatan ruang letak" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Ruang letak “%s†tiada dalam terjemahan." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Ruang letak berlebihan “%s†yang tiada dalam teks sumber." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Terjemahan bentuk jamak" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Bukan semua bentuk jamak telah diterjemah." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Huruf besar/kecil tidak konsisten" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Terjemahan sepatutnya dimulakan sebagai satu ayat." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Terjemahan sepatutnya dimulakan dengan satu aksara huruf kecil." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Ruang kosong tidak konsisten" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Terjemahan tidak dimulakan dengan satu jarak." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "" "Terjemahan dimulakan dengan satu jarak, tetapi tiada dalam teks sumber." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Terjemahan tidak mempunyai baris baharu di penghujung." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" "Terjemahan berakhir dengan satu baris baharu, tetapi tiada dalam teks sumber." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Terjemahan tidak mempunyai satu jarak di penghujung." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Terjemahan berakhir dengan satu jarak, tetapi tiada dalam teks sumber." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Semakan tanda baca" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Terjemahan patut berakhir dengan \"%s\"." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Terjemahan tidak patut berakhir dengan \"%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "Terjemahan berakhir dengan \"%s\", tetapi teks sumber berakhir dengan \"%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Awan" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Kosongkan Menu" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Kosongkan menu" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Ulasan:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Kemas kini" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "Pa&dam" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Padam Ulasan" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Sunting projek" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nama projek:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Layar" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Tambah direktori ke dalam senarai" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Fail" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "Ba&haru…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Baharu dari fail &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Baharu Dari Fail &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Buka…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Buka Baru-baru Ini" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Buka baru-baru ini" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Terjemahan awan terbuka…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Terjemahan Awan Terbuka…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Tetingkap &mula" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Tetingkap &Mula" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Pegurus katalog" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Pengurus Katalog" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Tutup" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Simpan" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Simpan seb&agai…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Simpan Seb&agai…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Kompil ke MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&ksport ke HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Periksa kemas kini…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Tetapan…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Keutamaan" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "K&eluar" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Keluar" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Salin daripada tunggal" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Salin Dari Tunggal" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Terjemahan perlu di&semak" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Terjemahan Perlu Di&semak" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Sunting &ulasan" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Sunting &Ulasan" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Cadangan" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Cari…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Ganti…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Cari berikutnya" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Cari terdahulu" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Cari dan Ganti…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Cari Berikutnya" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Cari Terdahulu" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Tunjuk &ID rentetan" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Tunjuk &ID Rentetan" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Tunjuk amaran" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Tunjuk Amaran" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Isih mengikut tertib &fail" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Isih mengikut Tertib &Fail" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Isih mengikut &sumber" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Isih mengikut &Sumber" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Isih mengikut &terjemahan" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Isih mengikut &Terjemahan" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Kumpul mengikut konteks" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Kumpul Mengikut Konteks" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Masukan dengan ralat dahulu" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Masukan dengan Ralat Dahulu" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Masukan belum terjemah dahulu" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Masukan Belum Terjemah Dahulu" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "T&unjuk kemunculan kod" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "T&unjuk Kemunculan Kod" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Tunjuk palang sisi" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Tunjuk palang status" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Terjemahan" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Kemas kini dari kod sumber" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Kemas kini dari Kod Sumber" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Segerak dengan Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pra-&terjemah…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Sahkan terjemahan" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Sahkan Terjemahan" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Buang terjemahan yang sama dengan sumber" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Singkir terjemahan terpadam" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Singkir Terjemahan Terpadam" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Sifat…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Pergi" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Selesai dan berikutnya" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Selesai dan Berikutnya" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Disunting sebelum ini" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Disunting Sebelum Ini" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Terjemahan &terdahulu" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Terjemahan &Terdahulu" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Terjemahan &berikutnya" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Terjemahan &Berikutnya" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Tidak selesai t&erdahulu" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Tidak Selesai T&erdahulu" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Tidak selesai be&rikutnya" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Tidak Selesai Be&rikutnya" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Bentuk majmuk terdahulu" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Bentuk majmuk Terdahulu" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Bentuk majmuk berikutnya" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Bentuk majmuk Berikutnya" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Bantuan dalam talian" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Bantuan &Dalam Talian" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Manual &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Manual &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "Perih&al Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "Perih&al" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Persediaan pengekstrak" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Senarai sambungan dipisah oleh tanda titik bertindih (cth: *.cpp,*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Seruan:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Perintah untuk mengekstrak terjemahan:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ini ialah perintah yang digunakan untuk melancarkan pengekstrak.\n" "%o kembangkan ke nama fail output, %K untuk menyenaraikan, \n" "kata kunci, %F untuk menyenaraikan fail input,\n" "%C ke bendera set aksara (lihat di bawah)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Satu item dalam senarai kata kunci:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Ini akan dilampirkan ke baris perintah sekali\n" "untuk setiap kata kunci. %k dikembang ke kata kunci." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Satu item dalam senarai fail input:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Ini akan dilampirkan ke baris perintah sekali\n" "untuk setiap fail input. %f dikembang ke nama fail." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Set aksara kod sumber:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Ini akan lampirkan ke baris perintah\n" "hanya jika kod sumber set aksara diberikan. %c mengembang ke nilai set " "aksara." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Sifat Terjemahan" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nama dan versi projek:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Pasukan bahasa:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Bentuk jamak:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Guna peraturan lalai untuk bahasa ini" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Guna ungkapan suai" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Ketahui berkenaan bentuk jamak" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Set Aksara:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Tetapan Pengekstrakan Lanjutan…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Tetapan pengekstrakan lanjutan…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Sifat terjemahan" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Laluan Sumber" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Laluan sumber" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Ekstrak teks dari fail sumber dalam direktori berikut:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Laluan dasar:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Kata Kunci Sumber" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Kata kunci sumber" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Guna kata kunci ini (nama fungsi) untuk mengenal pasti rentetan boleh\n" "terjemah dalam fail sumber:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Guna juga kata kunci lalai untuk bahasa tersokong" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Ketahui berkenaan kata kunci gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Buka fail" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Simpan fail" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Sahkan" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Periksa kesalahan dalam terjemahan" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Kemas kini dari kod" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Kemas Kini dari Kod" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Kemas kini dari kod sumber" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Palang sisi" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Tunjuk atau sembunyi palang sisi" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Teks sumber terdahulu" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Teks sumber lama(sebelum ia diubah ketika satu kemas kini) yang berkaitan " "dengan terjemahan kini-tidak-tepat." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Nota untuk penterjemah" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Ulasan" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Tambah ulasan" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Tambah Ulasan" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Padam Dari Ingatan Terjemahan" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Padam dari ingatan terjemahan" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Cadangan terjemahan" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Tiada padanan ditemui" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Tiada Padanan Ditemui" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Rentetan ini telah ditemui dalam ingatan terjemahan Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Cadangan terjemahan memerlukan teks sumber tersedia. Ia tidak berfungsi jika " "hanya ID tanpa teks sebenar digunakan." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Cadangan terjemahan memerlukan bahasa teks sumber yang diketahui. Poedit " "tidak dapat mengesannya di dalam fail ini." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Tidak dapat melakukan program: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Fail TMX adalah cacat." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Pangkalan data ingatan terjemahan rosak: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Ralat ingatan terjemahan: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Guna bahasa lalai)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Pemilihan bahasa" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Pilih bahasa yang anda kehendaki" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Anda mesti mulakan semula Poedit supaya perubahan ini berkesan." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Tidak dapat mencipta direktori sementara." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Tiada terjemahan. Ini luar biasa." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Cara paling mudah untuk mengisi fail ini adalah dengan mengemas kininya " "daripada sebuah POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Kemas kini dari POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Ambil rentetan boleh terjemah dari satu templat POT sedia ada." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Anda juga boleh mengekstrak rentetan boleh terjemah terus dari kod sumber:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Ekstrak dari sumber" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Konfigur pengekstrakan kod sumber dalam Sifat." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versi %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Cipta baharu" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Cipta terjemahan baharu daripada templat POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Layar fail" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Buka dan sunting fail terjemahan." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Terjemah projek awan" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Bekerjasama dengan orang lain secara dalam talian." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Fail baru-baru ini" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Segerak" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Segerak terjemahan dengan Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Perihal %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Keutamaan %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Perihal %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Perkhidmatan" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Sembunyi %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Sembunyi Lain" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Tunjuk Semua" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Keluar dari %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Keutamaan…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Keutamaan..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Keutamaan..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Terap" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Terap" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Undur" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Undur" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Batal" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Kosongkan" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Kosongkan" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Salin" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Po&tong" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Potong" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Sunting" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Keluar" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Bantuan" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "Ba&haru" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Baharu" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Tidak" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Tidak" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Buka…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Buka..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Buka..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Tampal" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Tampal" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Keutamaan" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "Buat &Semula" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Segar semula" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Simpan sebagai" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Simpan sebagai" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Pilih Semu&a" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Pilih Semua" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "Buat &Asal" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Ya" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ya" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Kiri" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Right" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/he.mo0000644000175100001660000020454715011674363011066 Þ•ÆL³|,H; I; U;&`;‡;<›;Ø;&ë;&<J9<g„< ì<ö< =;=K= R=`=g=m=u=|=ƒ=‰=‘= =¯=µ=»=Ä=Ø=ì=ð=>>>>'>/>A>S>W> [> h>u>~>‡> Ž>›>«>Á>×>æ>??$?*?3?9?B?Y? p? ~? Œ?™?Ÿ?»?×?ð? @ @7@=@B@Y@i@ ‡@ “@@¦@®@·@ »@ Ç@Ô@ ã@ï@ ÿ@ A %A2A AAMA]AqAŒA•AµAÒAòA B B1!B'SB{BŽB«B ÅBÐBÖB7òB6*CaC)C«C °C]»CD<,DDiD$®DÓD ÚD€çDhE oE"}E E+»E)çE FF.F@FQFdFmF€FœF¸F#ÍFñFGG G&G 8GCGUG[GaGrG%ƒG©G ÄGåGíGöGH H-H/HH xHk…HñHöH II2IHI-gI1•IÇI àIëI)J,J LJªZJK KK0KEKIK`KgK†K—K¶KÅKØK;ëK'L BL'OL^wLLÖL?#M cM qM~M*‘M¼M"ÏM5òM(NCN^NdNwN |N ŠN ˜N ¥N ²N¿NÐNØNàNçNfùN`OzOu”O PP"/PRPZP aPlP‚P‘P ¢P¯PÁPÒP0äPQ/Q#DQ<hQ`¥QR R*!R+LR0xR!©R'ËRóRøRS(-STVS«S °S ºSÈSÜSíST T !T /T m Wmdmtm „m’mšm¢m«m ³mÁmÚmímnnn )n 6n BnOncnsnˆnœn¬nÁn†Ön]oxo Žošo©o¼o ÍoÛo ìoúoKpMpbp qpp”p§p½p1Ùp q0q Kq YqŽeq=ôq2r²r·r(Éròr úrs+%sQs Ts8^s"—sºsÂËsŽtC©t8ítî&uŸv8µv1îvR wcswQ×w)x'Dx&lx:“xlÎxP;y-ŒyCºyAþyK@z0Œz.½zŽìz!{{){-Ç{+õ{8!|CZ|už|,}LA};Ž}]Ê}…(~J®~cù~[]o¹«)€7Õ€m _{[Û7‚=‚ùM‚Gƒ_ƒ |ƒˆƒƒ°ƒȃH߃2(„"[„~„–„­„~Å„qD…¶…ˆÉ…R†V†j†/o† Ÿ†À†Ó† ê†ø†‡‡ ‡"!‡$D‡i‡‚‡›‡¬‡¼‡͇å‡ô‡ü‡ ˆ&ˆ<ˆ$Yˆ~ˆžˆ¸ˆΈäˆ#‰V%‰|‰“‰œ‰ ¯‰º‰ʉÚ‰ ø‰ŠŠ/Š@ŠGŠ.OŠ ~ŠŠŠ“Š«ŠÆŠHÊŠ5‹mI‹7·‹ ï‹3ù‹a-ŒŒ”Œ™Œ.¶Œ åŒ*Jas†˜«½ÐäôŽŽ*ŽCŽ[ŽwŽ–Ž®ŽÇŽàŽöŽ *!:Ù\ 6‘B‘_S‘=³‘›ñ‘=’mË’m9“¯§“õW” M•[• p•q~• ð•ü•– – #–/– 7– C– M–Y–l– – ‹–•–¤–¿–Ú–é–— !—+— 3— >—H—]—r— x—„—›—²—Á— З Ú—è—ù—˜+˜'@˜'h˜ ˜œ˜ «˜ ·˜ØÖ˜ö˜™+™ @™L™4T™4‰™¾™Þ™þ™š 8šDš+Jšvšˆš ¨š ¶šÄš Ìšך æšñš››9›M›d›$x››¶›Ñ›å› ü›œ =œ)Hœ&rœ)™œÜàœòœ^Cg«*Â,í ž%ž5,žFbžN©ž:øžM3Ÿ ŸŒŸ”¡Ÿ6 VO Y¦ .¡/¡8¡çN¡ 6¢A¢1\¢.Ž¢;½¢;ù¢$5£Z£u££ª£ Ç£Ó£*ó£)¤#H¤$l¤#‘¤µ¤ɤФ褥¥ 0¥;¥B¥X¥<n¥%«¥'Ñ¥ù¥ ¦ ¦,¦K¦$g¦KŒ¦ ئ­ã¦‘§"š§ ½§"Þ§ ¨)"¨AL¨Lލ,Û¨©©.7©)f©©ò£© –ª' ª'Ȫ/𪠫*)« T«&_«†«&š«Á«Õ«ë«E¬ G¬ h¬$v¬ˆ›¬G$­Yl­Æ­×­ç­Nþ­M®3d®7˜®5Ю5¯ <¯H¯ `¯k¯€¯•¯©¯½¯Ó¯ é¯ ô¯ °°Œ)°)¶°)à°Ž ±"™±"¼±-ß± ² ²'²7.²f²…²›²°²Dzݲ<ñ²".³Q³0k³Fœ³ûã³ß´ ó´3µ94µHnµ0·µ1èµ¶(#¶&L¶1s¶„¥¶ *·5·G·]·x· ·±·Í·ß·õ·¸¸1¸I¸ g¸s¸ “¸Ÿ¸¨¸¸¸Á¸ܸù¸$¹7¹Î@¹ºº«Êº v»ƒ»¡»#·»Û»#ñ»¼,5¼b¼¼޼<­¼ê¼ ½ $½/½ A½M½ V½a½ |½‡½/Ÿ½*Ͻú½¾!¾<¾D¾=\¾š¾º¾̾$æ¾. ¿:¿VC¿š¿a±¿ÀÚ+À?Á"FÁ$iÁ1ŽÁÀÁàÁ úÁ! *Â25ÂhÂnˆ¢¶ÂÊÂ#å ÄÄ-ÄGÄdÄ'~ĦÄÅÄäÄéÄ4Å`;ÅœÅ(¹Å>âÅ!Æ1<Æ,nÆ›Æ ·ÆÂÆÉÆ)ÌÇ%öÇÈ.2ÈaÈ%€È¦ÈºÈÐÈ æÈ"É *É 8ÉFÉWÉ^É|ɚɳɷÏÉ‡Ê Ê ±ÊJ¾Ê Ë1"Ë TˆuË]üËZÌcÌS‚ÌÖÌëÌ"òÌLÍTbÍ·Î>ºÏLùÏFÐ^ÐrЯˆÐ=8ÑvÑè–Ñ£Òš#Ó ¾ÓËÓÛÓëÓ7 Ô"BÔ"eÔˆÔ§Ô¹ÔËÔçÔ øÔ ÕÕ 'Õ&2Õ YÕJdÕ¯Õ ÉÕ ×ÕâÕÖ Ö /Ö+:Ö-fÖ”Ö°Ö;ÌÖ ××&×9× S×2a× ”×$Ÿ×‰Ä×NØ bØ mØx؎ؤؿØÚØìØÙÙH/ÙxÙÙ œÙ&ªÙÑÙéÙ-Ú 6Ú5WÚÚŸÚ ±Ú¾ÚÎÚçÚÛÛ?Û'SÛ{Û‘Û¥Û-½ÛëÛÜÜ?ÜUÜeÜt܃ܒܥÜÄÜàÜÿÜÝ"Ý:ÝLÝfÝ&~Ý¥ÝÁÝ&ßÝÞ"Þ@Þ¾^Þ$ßBßbßvß‘ß"¬ßÏß"éß à &à^1àà¦à¯à Ãàäàá$á;Aá}áC—á Ûá èá±óáG¥â–íâ „ã‘ã&«ã Òãßã%÷ã=ä[ä^äTmäBÂäååæ|6æN³æCçÊFèJéF\éZ£épþénoêÞê2þê21ë6d뇛ër#ì(–ìR¿ìIí[\í1¸í&êícî#uï1™ï6Ëï.ðB1ðGtðµ¼ð,rñiŸñ? òIò½Ëòb‰óìók|ôÀèôÚ©õE„ö‘Êö‚\÷ˆß÷hø qøB|ø¿ù#Üù ú úú.7úfúY‚úJÜú/'û.Wû†û¢û±¸û jü ý—ý µýÀýÓý2Úý þ'þ#9þ]þxþ Žþ™þ±þ1Ãþ8õþ.ÿLÿjÿ~ÿÿ¤ÿÃÿÛÿêÿ1!2#T/x&¨Ï-ê9@R7“žË$j š ´À×î  1RqzM‚ Ðñ$ .NjSK¾w Y‚ ÜGê”2ÇÎàLô.A p6}0´åü $'+06>Sk{œ6°ç"þ ! . (> Ã’sS¹€% *Ý è•­"M–±óÜtÖH{oŒŸX^Ñ£Sσ A_fXD:Ÿž%!ZB›,Æ´Þ7!¶úèƒì~g¥À^—%xº™¿h8zï‡)СãrCa—ð„â¤n4.¿$»¦o“#¥JÄrÍ=O ¬ Ź~NRŠ´sc5WqÁ‹[…ù-Ú®\YûḲµÂk'±æ¡Ž,˜2{åeV1¤‰I2\1mˆl„ñô;Jp§¯a ‰‚L$؆dG›5•«eí„?ŒNa80»Fbf¢È¦ìkçîóñõOS Ò±‡Û"¾€œêiØÚæ&ARc6Ó®9C4!”v-¬ò=2|Œ¸«j à#ÎýĦ@é›[¨âõŠc^_\ZÑ)BÉü>ÃT3z:.v°îJÅh*…íbs’³ (à< 6µg¶<'ÓZ>kˆ;‘Ë$Þp ÷]{š1¨À8Îôÿ†·´Ž°ÙuÛ‹ëFª‚<ÐEy”EÌäY·4e¯žÇQmL—êÏ¢Ý] ž/¯}76˜†}³HÌ|wB7¼0rFÊ)d¡v÷‡?ã+³y_¬©˜øßKd ¼D®û}¹OfRGPoÁˆ©*`á|½þÇ åDbx¶P ";l­’º:‚©E&h£Ëu3öK' –(‰x«(0ÒÍÔ§»É߯øÔzQVQï²nš½U§À¾ÄL‘ò[Õ3u-Žö`C ¥ð/ýIäŠjY]j•ëº>šü™W‹ª “I Áqþ@ÂM–Ÿ·UÅKÊ™”w5ÿœG+pú¨@œiƒmw°t¤“ù£€/?9P&q=HAç­¼ynX~ ,Ög¸VªÃ.M½²Æiµ+ÜÈTÕT¿¢‘Ù9¾#×l×étUW` …N (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-06 10:16 Last-Translator: Language-Team: Hebrew Language: he_IL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3; X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: he X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (שונה) (×œ× × ×©×ž×¨)מופע %d בקוד%d ×ž×•×¤×¢×™× ×‘×§×•×“%d ×ž×•×¤×¢×™× ×‘×§×•×“%d ×ž×•×¤×¢×™× ×‘×§×•×“×¨×©×•×ž×” %d%d רשומות%d רשומות%d רשומות%d רשומות תורגמו מר×ש.%d רשומות תורגמו מר×ש.%d רשומות תורגמו מר×ש.%d רשומות תורגמו מר×ש.שגי××” %d%d שגי×ות%d שגי×ות%d שגי×ות×ירעה שגי××” %d.×ירעו %d שגי×ות.×ירעו %d שגי×ות.×ירעו %d שגי×ות.×ירעה שגי××” %d:×ירעו %d שגי×ות:×ירעו %d שגי×ות:×ירעו %d שגי×ות:נמצ×ו %d בעיות ×¢× ×”×ª×¨×’×•×.נמצ×ו %d בעיות ×¢× ×”×ª×¨×’×•×.נמצ×ו %d בעיות ×¢× ×”×ª×¨×’×•×.נמצ×ו %d בעיות ×¢× ×”×ª×¨×’×•×.שורה %i בקובץ „%sâ€ ×œ× × ×˜×¢× ×” כר×וי.%i שורות בקובץ „%sâ€ ×œ× × ×˜×¢× ×• כר×וי.%i שורות בקובץ „%sâ€ ×œ× × ×˜×¢× ×• כר×וי.%i שורות בקובץ „%sâ€ ×œ× × ×˜×¢× ×• כר×וי.פורמט %sהעדפות של %sפורמט %s×ª×¨×’×•× %s יוב×.%s ×ª×¨×’×•×ž×™× ×™×•×‘×ו.%s ×ª×¨×’×•×ž×™× ×™×•×‘×ו.%s ×ª×¨×’×•×ž×™× ×™×•×‘×ו.&×ודות&×ודות Poedit×”&חלה&קוד×בי&טול&× ×§×”&סגירהה&עתק&מחיקהב&צע והמשךב&צע והמשך&עריכה&קובץ&חיפוש…הדרכה ל-&GNU gettextהדרכה ל-&GNU gettextמע&בר ×לקיבו&×¥ לפי הקשרקיבו&×¥ לפי הקשרע&זרהח&דש&חדש…ה&×‘× >×”×ª×¨×’×•× ×”&ב××”×ª×¨×’×•× ×”&ב×&ל×&×ישורעזרה מ&קוונתעזרה מ&קוונת&פתיחה...&פתיחה…ה&דבקה&עדפות&×”×¢×“×¤×•×ªâ€¦×”×ª×¨×’×•× ×”&קוד××”×ª×¨×’×•× ×”&קוד×מ×&פייני×…פינוי ×ª×¨×’×•×ž×™× ×©&נמחקופינוי ×ª×¨×’×•×ž×™× ×©&נמחקוי&צי×הבצע &שובה&חלפהש&מירהשמירה &בש×הצגת ×ž×•×¤×¢×™× ×‘&קודהצגת ×ž×•×¤×¢×™× ×‘&קודחלון &פתיחהחלון &פתיחה&תרגו×&בטלרשומות ש&×ינן מתורגמות תחילהרשומות ש&×ינן מתורגמות תחילהעדכון מ&קוד המקורעדכון מ&קוד המקור&×ימות התרגומי×&×ימות התרגומי×ת&צוגה&כן(שימוש בשפת ברירת המחדל)(×œ× ×ž×—×•×‘×¨)(דורש Windows 8 ומעלה)< ×”&קוד×<×œ×œ× ×©×>על %sחשבוןחשבונותהוספההוספת הערההוספת קבצי×…הוספת תיקיות…הוספת מיז×הוספת Wildcard…הוספת הערההוספת ספרייה לרשימההוספת קבצי×…הוספת תיקיות…הוספת מיז×הוספת Wildcard…מילות מפתח נוספותדגלי xgettext נוספי×:מתקד×הגדרות חילוץ מתקדמות…הגדרות חילוץ מתקדמותהגדרות חילוץ מתקדמות…כל קובצי התרגו×כל ההערותכל המחרוזותהשתמש בנוסף במילות מפתח ברירת מחדל עבור שפות נתמכותשנה תמיד ×ת המיקוד לשדה הקלט של הטקסט×ירעה שגי××”.פריט ברשימת קובצי הקלט:פריט ברשימת מילות המפתח:תצוגההחלתוצ×ות קרובות מזיכרון התרגו××”×× ×תה בטוח שברצונך למחוק ×ת המחלץ "%s"?×”×× ×תה בטוח שברצונך ל×פס ×ת זיכרון התרגו×?בדיקה ×חר ×¢×“×›×•× ×™× ×‘×ופן ×וטומטיביצוע הידור קובץ MO ב×ופן ×וטומטי בעת שמירההקוד×נתיב הבסיס:גרס×ות ×‘×˜× ×ž×›×™×œ×•×ª ×ת התכונות ×•×”×¢×“×›×•× ×™× ×”×—×“×©×™× ×‘×™×•×ª×¨, ×ך עשויות להיות פחות יציבות.×”×‘× ×”×›×œ קדימהקובץ PO פגו×: msgstr של צורת ריבוי בשימוש בלי mdgid_pluralקובץ PO פגו×: msgstr של צורת יחיד בשימוש יחד ×¢× msgid_pluralסימון שגוי במחרוזת תרגו×.עיוןעיון בקבצי×כברירת מחדל, תוצ×ות ש×ינן מדויקות נכללות ×’× ×›×Ÿ, ×ך מסומנות ×›×›×לו הדורשות סקירה. יש לבחור ב×פשרות זו כדי לכלול רק הת×מות מושלמות.ביטולבתהליך ×‘×™×˜×•×œâ€¦×œ× × ×™×ª×Ÿ ליצור ספרייה זמנית.×œ× × ×™×ª×Ÿ להריץ ×ת היישו×: %s×œ× × ×™×ª×Ÿ ×œ×ª×¨×’× ×ž×¨×ש משפה ×œ× ×™×“×•×¢×”.×œ× × ×™×ª×Ÿ ×œ×ª×¨×’× ×ž×¨×ש ×œ×œ× ×˜×§×¡×˜ מקור.הפוך ל×ותיות רישיותמ&נהל הקטלוגי×מ&נהל הקטלוגי×מנהל הקטלוגי×החלפת שפת הממשקקידוד:בדוק ×ת המסמך כעתבדוק דקדוק ביחד ×¢× ×יותבדוק ×יות במהלך ההקלדהבדיקה ×חר עדכוני×…בדיקת שגי×ות בתרגו×בדיקה ×חר עדכוני×…בדיקת ×יותנקהניקוי התפריטמחיקת התרגו×ניקוי התפריטמחיקת התרגו××¡×’×™×¨×”×¢× ×Ÿ×ž×•×¤×¢×™× ×‘×§×•×“×ž×•×¤×¢×™× ×‘×§×•×“×©×™×ª×•×£ פעולה מקוון ×¢× ×× ×©×™× ×חרי×.קובצי המקור × ×ספי×…פקודה לחילוץ תרגומי×:הערההערה:הערות המתחילות ב:ביצוע הידור ל-MO…ביצוע הידור ל…קובצי ×ª×¨×’×•× ×ž×”×•×“×¨×™×ניתן להגדיר ×ת חילוץ קוד המקור במ×פייני×.×ימות×פשר לחבר ×ת Poedit לפלטפורמות ×ª×¨×’×•× ×¢× × ×™×•×ª נתמכות כדי לסנכרן מ×חורי ×”×§×œ×¢×™× ×ª×¨×’×•×ž×™× ×©×ž× ×•×”×œ×™× ×‘×”×Ÿ.העתקלהעתיק מצורת היחידהעתקה מטקסט המקורלהעתיק מצורת היחידהעתקה מטקסט המקורתקן ×יות ב×ופן ××•×˜×•×ž×˜×™×œ× × ×™×ª×Ÿ להוריד ×ת פרטי ×”×ž×™×–× ×‘Ö¾Localazy.×œ× × ×™×ª×Ÿ לטעון ×ת הקובץ, ×”×•× ×›×›×œ הנר××” פגו×.×œ× × ×™×ª×Ÿ לשמור ×ת הקובץ %s.ליצור חדשיצירת ×ª×¨×’×•× ×—×“×©×™×¦×™×¨×ª ×ª×¨×’×•× ×—×“×© מתבנית POT.יצירת ×ž×™×–× ×ª×¨×’×•×ž×™× ×—×“×©×©×’×™×ת CrowdinCrowdin ×–×ת פלטפורמה מקוונת לניהול ×ª×¨×’×•×ž×™× ×•×›×œ×™ ×ª×¨×’×•× ×©×™×ª×•×¤×™. ×נו ×ž×©×ª×ž×©×™× ×‘Ö¾Crowdin בעצמנו כדי ×œ×ª×¨×’× ×ת Poedit למגוון שפות, ו×נחנו ××•×”×‘×™× ×ותה.×’&×–×•×¨×ž×—×œ×¦×™× ×ž×•×ª××ž×™× ×ישית:×ž×—×œ×¦×™× ×ž×•×ª××ž×™× ×ישית:הת×× ×ישית ×ת סרגל הכלי×…גזורגודל מסד ×”× ×ª×•× ×™× ×‘×›×•× ×Ÿ:מחיקהמחיקה מזיכרון התרגו×מחיקת מחלץמחיקה מזיכרון התרגו×מחיקת מיז×מחיקת ההערהמחיקת המיז×מחיקת ×”×ž×™×–× ×œ× ×ª×ž×—×§ קובצי ×ª×¨×’×•× ×›×œ×©×”×.×”×”×‘×“×œ×™× ×ž×ª×•×רי×…ספריות:למחוק ×ת ×”×ž×™×–× â€ž%sâ€?לטעון ×ת הקובץ מהכונן מחדש? פעולה ×–×ת ×ª×’×¨×•× ×œ×ובדן ×”×©×™× ×•×™×™× ×©×œ× ×©×ž×¨×ª ב־Poedit.להסיר ×ת כל ×”×ª×¨×’×•×ž×™× ×©×–×”×™× ×œ×˜×§×¡×˜ המקור?×”×× ×‘×¨×¦×•× ×š להסיר ×ת כל ×”×ª×¨×’×•×ž×™× ×©××™× × ×¢×•×“ בשימוש?&×œ× ×œ×©×ž×•×¨×ל ×ª×©×ž×•×¨×œ× ×œ×”×¦×™×’ שוב×ל תסמן הת×מות מדויקות ×›×›×לו הדורשות ×¡×§×™×¨×”×œ× ×œ×”×¦×™×’ ×©×•×‘×”×ª×¨×’×•×ž×™× ×”×¢×“×›× ×™×™× ×ž×ª×§×‘×œ×™×…הורדת ×ª×¨×’×•×ž×™× ×ž×•×©×‘×ª×ª ×‘×ž×™×–× ×–×”.יש לגרור לכ×ן תיקיות ×ו קבצי×יש לגרור לכ×ן תיקיות ×ו קבצי××™&צי××”×™×™&×¦×•× ×œÖ¾HTML…עריכהעריכת &הערהעריכת &הערהעריכת הערהעריכת הערהעריכת המיז×עריכת המיז×עריכהעריכה…×ימייל:עבור למסך מל×לרשומות בקובץ ×–×” יש כמות של צורות ×¨×‘×™× ×©×•× ×” ממה שמצוין בכותרת Plural-Forms של הקובץרשומות ×¢× ×©×’×™×ות תחילהרשומות ×¢× ×©×’×™×ות תחילהרשומות ×¢× ×©×’×™×ות סומנו ב××“×•× ×‘×¨×©×™×ž×”. פרטי השגי××” יופיעו בעת בחירת רשומה שכז×ת.שגי××” בפתיחת הקובץשגי××” בשמירת הקובץשגי××” בטעינת קובץ XLIFFâ€: %sשגי××”: שגי×ותהכלתוצ×ות מדויקות מזיכרון התרגו×× ×ª×™×‘×™× ×œ× ×›×œ×•×œ×™××™×™×¦×•× ×œÖ¾TMXâ€¦×™×™×¦×•× ×‘×©×â€¦×™×™×¦×•× ×œÖ¾HTMLâ€¦×™×™×¦×•× ×œÖ¾TMXâ€¦×™×™×¦×•× ×œÖ¾HTML×™×™×¦×•× ×–×™×›×¨×•×Ÿ ×”×ª×¨×’×•× ×ל „%s†נכשל.×”×ª×¨×’×•×ž×™× ×ž×™×•×¦××™×…חילוץ ממקורותחילוץ הערות ×œ×ž×ª×¨×’×ž×™× ×ž×ª×•×š:חילוץ טקסט מקובצי המקור בספריות הב×ות:מחרוזות ×œ×ª×¨×’×•× ×ž×—×•×œ×¦×•×ª מקובץ %s…מחרוזות ×œ×ª×¨×’×•× ×ž×—×•×œ×¦×•×ª מ־%s קבצי×…מחרוזות ×œ×ª×¨×’×•× ×ž×—×•×œ×¦×•×ª מ־%s קבצי×…מחרוזות ×œ×ª×¨×’×•× ×ž×—×•×œ×¦×•×ª מ־%s קבצי×…הגדרת מחלץמחלצי×התקשורת ×¢× ×”×ª×”×œ×™×š Poedit נכשלה.חילוץ המחרוזות מקוד המקור נכשל.טעינת הקובץ ×¢× ×”×ª×¨×’×•×ž×™× ×”×ž×—×•×œ×¦×™× × ×›×©×œ×”.מיזוג ×§×˜×œ×•×’×™× ×©×œ gettext נכשל.עדכון זיכרון ×”×ª×¨×’×•× × ×›×©×œ: %s×§×•×‘×¥×œ× × ×™×ª×Ÿ לפתוח ×ת הקובץהקובץ “%s†×ינו ×§×™×™×.הקובץ â€%s†×ינו קובץ תרגו×.הקובץ “%s†הינו לקרי××” בלבד ×•×œ× × ×™×ª×Ÿ לשמור ×ותו. יש לשמור ×ותו תחת ×©× ×חר.חיפושחיפוש הב×חיפוש הקוד×חיפוש והחלפה…חיפוש בהערותחיפוש בטקסט המקורחיפוש בתרגומי×חיפוש הב×חיפוש הקוד×תיקון שפהתיקון שפהתיקון הכותרתתיקון הכותרתקובצי ×ª×¨×’×•× Flutterצורה %iצורה %i (×œ× ×‘×©×™×ž×•×©)GNU gettextכלליקובצי HTMLעזרההסתרת סרגל הצדהסתרת שורת המצבהסתר התר××” זו×יך עובד סנכרון ענן?מזהה×× ×”×œ×™×š הפינוי יימשך, כל ×”×ª×¨×’×•×ž×™× ×©×¡×•×ž× ×• ×›×ž×—×•×§×™× ×™×•×¡×¨×• לצמיתות. ×™×”×™×” עליך ×œ×ª×¨×’× ××•×ª× ×ž×—×“×© ×× ×”× ×™×ª×•×•×¡×¤×• שוב בעתיד.×× ×‘×¢×‘×¨ מנעת גישה ×œ×§×‘×¦×™× ×©×œ×š, ניתן ל×פשר ×ותה תחת העדפות המערכת > ×בטחה ופרטיות > פרטיות > ×§×‘×¦×™× ×•×ª×™×§×™×•×ª.×× ×‘×¢×‘×¨ מנעת גישה ×œ×§×‘×¦×™× ×©×œ×š, ניתן ל×פשר ×ותה תחת הגדרות המערכת > פרטיות ו×בטחה > ×§×‘×¦×™× ×•×ª×™×§×™×•×ª.להתעל×התעלמות ×ž×¨×™×©×™×•×ª×™×™×‘×•× ×žÖ¾TMXâ€¦×™×™×‘×•× ×§×•×‘×¦×™ תרגו×â€¦×™×™×‘×•× ×žÖ¾TMXâ€¦×™×™×‘×•× ×§×•×‘×¦×™ תרגו×â€¦×™×™×‘×•× ×ž×ª×•×š „%sâ€â€¦×™×™×‘×•× ×–×™×›×¨×•×Ÿ ×ª×¨×’×•× × ×›×©×œ.×ž×™×™×‘× ×ª×¨×’×•×ž×™×…בקובץ: %sלכלול גרס×ות בט×חוסר ×חידות ב×ותיות גדולות/×§×˜× ×•×ª×¨×•×•×—×™× ×œ× ×חידי×מידע על המתרג×התקנהקובץ שגויקרי××”:תקלהתקלותקובצי ×ª×¨×’×•× JSON×©×ž×™×¨×”×©× ×ו קוד שפהשפת ×”×ª×¨×’×•× ×–×”×” לשפת המקור.שפת ×”×ª×¨×’×•× ××™× ×” מוגדרת.שפת התרגו×:בחירת שפהצוות המתרגמי×:שפה:שונה ל×חרונהמידע נוסף ×ודות מילות מפתח של gettextמידע על לשון רבי×מידע נוסףמידע נוסף על %sמידע נוסף ×ודות Crowdinמידע נוסף על gettext מבית גנושורהשורה %d בקובץ “%s†הינה פגומה (נתוני %s ×œ× ×—×•×§×™×™×).סיומות שורה:רשימה של הרחבות המופרדות בנקודה פסיק (לדוגמה: ‎*.cpp;*.h):טעינת ×נגליתLocalazy ×”×™× ×¤×œ×˜×¤×•×¨×ž×ª ×ª×¨×’×•× ×¢× ×™×›×•×œ×•×ª ×וטומציה מתקדמות שמ×פשרת לכל ×חד ו×חת ×œ×ª×¨×’× ×ת ×”×ž×•×¦×¨×™× ×•×”×ª×•×›×Ÿ ×©×œ×”× ×œ×ž×’×•×•×Ÿ שפות בקלות.×œ× × ×™×ª×Ÿ לערוך קובצי MO ישירות ב־Poedit.הפוך ל×ותיות קטנותהפוך ל×ותיות גדולותיצירת ×ª×¨×’×•× ×—×“×© מקובץ POT ×–×”.כותרת פגומה: „%sâ€× ×™×”ול חשבונותניהול…ממזג בין ההבדלי×â€¦×ž×–×¢×•×¨×©× ×”×ž×™×–× ×¢×‘×•×¨×• מיועד התרגו×ש×:&×”×‘× ×©×œ× ×”×•×©×œ×&×”×‘× ×©×œ× ×”×•×©×œ×דורש סקירהדורש סקירהשגי×ת רשת: %s (%d)×œ× ×ž×פשר לרשימת המחרוזות לקבל מיקוד. ×× ×ž×•×¤×¢×œ, עליך להשתמש במקשי ×”×—×™×¦×™× ×‘×¦×™×¨×•×£ מקש ×”-Ctrl לניווט, ×בל ×’× × ×™×ª×Ÿ לכתוב טקסט מיידית, ×œ×œ× ×¦×•×¨×š בלחיצה על Tab לשינוי המיקוד.חדשחדש מקובץ &POT/PO…מחרוזות חדשותחדש מקובץ &POT/PO…מחרוזות חדשותמחרוזות חדשות לתרגו×:צורת הריבוי הב×הצורת הריבוי הב×הל××œ× × ×ž×¦×ו הת××ž×•×ª×œ× × ×™×ª×Ÿ ×œ×ª×¨×’× ×ž×¨×ש ×©×•× ×¨×©×•×ž×”.×ין מידע בקובץ על מספר ×”×ž×•×¤×¢×™× ×©×œ המחרוזת בקוד המקור.×œ× × ×ž×¦×ו הת××ž×•×ª×œ× × ×ž×¦×ו בעיות בתרגו×.×œ× ×ž×•×¤×™×¢×™× ×ž×™×–×ž×™ ×ª×¨×’×•× ×‘×—×©×‘×•×Ÿ שלך.×ין פרטי ×©×™×ž×•×©×œ× ×›×œ צורות ×”×¨×‘×™× ×ž×ª×•×¨×’×ž×•×ª.×œ× ×ž×•×¨×©×”, × × ×œ×”×ª×—×‘×¨ שנית.הערות למתרגמי××ישור×חדהפעל ×פשרות זו רק ×× ×תה בוטח ב×יכות של זיכרון ×”×ª×¨×’×•× ×©×œ×š. כברירת מחדל, כל ההת×מות מזיכרון ×”×ª×¨×’×•× ×ž×¡×•×ž× ×•×ª ×›×›×לו הדורשות סקירה, ויש לעבור עליה×.×”×©×œ× ×¨×§ הת×מות מדויקותפתיחת ×ª×¨×’×•×ž×™× ×‘×¢× ×Ÿâ€¦×¤×ª×— ×חרוני×פתיחה ועריכת קובצי תרגו×.פתיחת ×ª×¨×’×•× ×‘×¢× ×Ÿ×¤×ª×™×—×ª ×ª×¨×’×•×ž×™× ×‘×¢× ×Ÿâ€¦×¤×ª×™×—×ª קובץפתיחה בעורךפתיחה בעורךלפתוח ×ת ×”×חרוני×פתיחת קובץ סימוכיןפתיחה...פתיחה…×פשרויות×חרהקו&×“× ×©×œ× ×”×•×©×œ×הקו&×“× ×©×œ× ×”×•×©×œ×קובצי ×ª×¨×’×•× POתבניות ×ª×¨×’×•× POTקובצי POT ×”×™× × ×ª×‘× ×™×•×ª בלבד ×•×œ× ×ž×›×™×œ×™× ×ª×¨×’×•×ž×™×. על מנת ליצור תרגו×, יש ליצור קובץ PO חדש המבוסס על התבנית.הדבקהדבק והת×× ×œ×¡×’× ×•×Ÿ× ×ª×™×‘×™×מבצע עדכון מקוד המקור על כל ×”×§×‘×¦×™× ×‘×ž×™×–×.ההרש××” נדחתה.×ž×ž×œ× ×”×ž×§×•× â€ž%s†חסר בתרגו×.תקינות ממל××™ מקו××× × ×¤×ª×— וערוך ×ת קובץ ×”-PO המקביל במקו×. כשתשמור ×ותו, קובץ ×”-MO יתעדכן בהת××.× × ×œ×©×ž×•×¨ ×ת הקובץ תחילה. ×œ× × ×™×ª×Ÿ לערוך סעיף ×–×” עד ××–.רבי××ª×¨×’×•× ×¦×•×¨×•×ª רבי×ביטוי צורות הריבוי שמשמש ×ת הקובץ ×”×•× ×—×¨×™×’ ב%s.צורות רבי×:PoeditPoedit - מנהל הקטלוגי×Poedit תיקן ב×ופן ×וטומטי תוכן שגוי בקובץ "%s".Poedit יכול לנסות ×œ×”×©×œ×™× ×¨×©×•×ž×•×ª חדשות ×ž×”×ª×¨×’×•×ž×™× ×”×§×•×“×ž×™× ×©×œ×š בקובץ ×ו מזיכרון ×”×ª×¨×’×•× ×›×•×œ×•. שימוש בזיכרון ×”×ª×¨×’×•× ×œ× ×™×”×™×” ×פקטיבי ×× ×”×•× ×›×ž×¢×˜ ריק, ×בל ×”×•× ×™×©×ª×¤×¨ ככל ×©×ª×¨×’×•×ž×™× ×—×“×©×™× ×™×ª×•×•×¡×¤×• ×ליו.ל־Poedit ×ין ×פשרות להציג ×ת קוד המקור בו נעשה שימוש במחרוזת כיוון ש×ו שהקובץ ×ינו זמין ×‘×ž×™×§×•× ×”×”×¤× ×™×” ×ו שז×ת הפנייה סמלית ×©×œ× ×ž×¦×‘×™×¢×” לקובץ ×מתי.Poedit הינו עורך ×ª×¨×’×•×ž×™× ×¤×©×•×˜ לתפעול.ל־Poedit ×œ× ×”×™×™×ª×” ×פשרות לפתוח ×ת הקובץ “%sâ€.&×ª×¨×’×•× ×ž×¨××©â€¦×ª×¨×’×•× ×ž×¨×שתורגמה מר×ש%u מחרוזות מתורגמות מר×ש%u מחרוזות מתורגמות מר×ש%u מחרוזות מתורגמות מר×ש%u מחרוזות מתורגמות מר×שמתבצע ×ª×¨×’×•× ×ž×¨×ש מזיכרון התרגו×…מבצע ×ª×¨×’×•× ×ž×¨×ש…'×ª×¨×’×•× ×ž×¨×ש' מ×תר ב×ופן ×וטומטי בזיכרון ×”×ª×¨×’×•× ×”×ª×מות מדויקות ×ו מעורפלות עבור מחרוזות ש×ינן מתורגמות, ×•×ž×©×œ×™× ×ת ×”×ª×¨×’×•×ž×™× ×©×œ×”×Ÿ.×ª×¨×’×•× ×ž×¨×ש דורש שטקסט המקור ×™×”×™×” זמין. ×–×” ×œ× ×¢×•×‘×“ ×× × ×¢×©×” שימוש ×‘×ž×–×”×™× ×‘×œ×‘×“ ×œ×œ× ×”×˜×§×¡×˜ עצמו.×ª×¨×’×•× ×ž×¨×ש דורש ששפת טקסט המקור תהיה מוכרת. זיהוי השפה בקובץ ×”×–×” על ידי Poedit ×œ× ×”×¦×œ×™×—×”.העדפותהעדפות…העדפות…המחרוזות בהכנה…שמירה על עיצוב של ×§×‘×¦×™× ×§×™×™×ž×™×צורת הריבוי הקודמתצורת הריבוי הקודמתטקסט המקור הקוד×נערך בעברנערך ×‘×¢×‘×¨×©× ×•×’×¨×¡×ª המיז×:×©× ×”×ž×™×–×:מיז×:מיזמי×בדיקות פיסוקפינויפינוי ×ª×¨×’×•×ž×™× ×©× ×ž×—×§×•×™×¦×™×הקרי×ת תוכן הקובץ נכשלה עקב השגי××” הב××”: %s×§×‘×¦×™× ×חרוני×בצע שוברענוןטעינת הקובץ מחדשטעינת הקובץ מחדשנותרו: %dלהסירהסרת ×ª×¨×’×•×ž×™× ×–×”×™× ×œ×ž×§×•×¨×”×¡×¨×ª ×ª×¨×’×•×ž×™× ×©×–×”×™× ×œ×ž×§×•×¨×ž×—×¨×•×–×•×ª שהוסרומחרוזות שהוסרומחרוזות שהוסרו (יצ×ו מכלל שימוש):החלפההחלפת ×”&כלהחלפת ×”&כלמחרוזת להחלפההחלפה…הכותרת ההכרחית Plural-Forms חסרה.×יפוס×יפוס זיכרון התרגו××יפוס זיכרון ×”×ª×¨×’×•× ×™×ž×—×§ ×ת כל ×”×ª×¨×’×•×ž×™× ×”×ž××•×—×¡× ×™× ×‘×•. ×œ× × ×™×ª×Ÿ לבטל פעולה זו.הצגה ב־Finderסקירהשמירהשמירה &בש×…שמירה &בש×…לשמור בכל מקרהלשמור בכל מקרהשמירה בש×שמירה בש×…שמירת שינויי×שמירת קובץשמירה ×œ×ž×§×•× ×—×œ×•×¤×™ ××™× ×” נתמכת לקובצי XCLOC.צילומי מסך:בחר ×”&כלבחר הכלבחירת קובצי TMX לייבו×בחירת ספרייהבחירת קובץ תרגו×בחירת קובצי ×ª×¨×’×•× ×œ×™×™×‘×•×בחירת תבנית תרגו×× × ×œ×‘×—×•×¨ ×ת השפה המועדפת עליךהגדרת שפההגדרת שפההגדרותהגדרות…הצגת סרגל הצדהצג ×יות ודקדוקהצגת שורת המצבהצגת מ&×–×”×” מחרוזתהצג החלפותהצג ×ת סרגל הכרטיסיותהצגת ×זהרותהצגה בסיירהצגה בתיקייההצגה ×ו הסתרה של סרגל הצדהצגת סרגל הצדהצגת שורת המצבהצגת מ&×–×”×” מחרוזתהצגת ×זהרותסרגל הצדהתחברותהתנתקותהתחברותכניסה ×ל %sכניסה לחשבון ענןהתחברות ×ל Crowdinכניסה לחשבון ענןהתנתקותיחידהעתקה והדבקה חכמותמיקוף ×—×›××§×™×©×•×¨×™× ×—×›×ž×™×מרכ×ות חכמותמיון לפי ×”&סדר שבקובץמיון לפי המ&קורמיון לפי ×”&תרגו×מיון לפי ×”&סדר שבקובץמיון לפי המ&קורמיון לפי ×”&תרגו×קידוד קוד המקור:מחלצי קוד המקור ×ž×©×ž×©×™× ×œ×יתור וחילוץ מחרוזות הניתנות ×œ×ª×¨×’×•× ×‘×§×•×‘×¦×™ קוד המקור, כדי שניתן ×™×”×™×” ×œ×ª×¨×’× ×ות×.קוד המקור ×ינו זמין.קוד המקור ×œ× × ×ž×¦×טקסט המקורמזהה טקסט מקורטקסט המקור — %sמילות מפתח המקורותנתיבי המקורותמילות מפתח המקורותנתיבי המקורותדיבורבדיקת ×יות מושבתת, מכיוון שהמילון לשפה %s ×ינו מותקן.×יות ודקדוקהקר×הפסק הקר××”×ª×¨×’×•×ž×™× ×ž×וחסני×:הקשר המחרוזת: %sמזהה המחרוזת: %s×ורך המחרוזת בתווי××ורך המחרוזת בתווי×: ×ª×¨×’×•× | מקורמחרוזת לחיפוש×ין תמיכה במיזמי Crowdin מבוססי מחרוזות.החלפותהצעותהצעות ×ינן זמינות ×× ×©×¤×ª ×”×ª×¨×’×•× ×œ× ×ž×•×’×“×¨×ª כר×וי. יתכן שמ××¤×™×™× ×™× ×חרי×, כמו לשון רבי×, יושפעו ×’× ×›×Ÿ.×ž×ž×œ× ×ž×§×•× ×ž×™×•×ª×¨ „%s†ש×ינו בטקסט המקור.תומך בכל שפות התכנות המזוהות ×¢×´×™ כלי GNU gettext (למשל PHP, C/C++, C#, Perl, Python, Java, JavaScript ו×חרי×).סנכרוןסנכרון ×¢× Crowdinסנכרון ×”×ª×¨×’×•× ×¢× Crowdinמסנכרןשגי×ת סנכרוןהסנכרון ×¢× Crowdin נכשל.שגי×ת תחביר בכותרת ×”-Plural-Forms†("%s").TMקובצי TMXשימוש במחרוזות הניתנות ×œ×ª×¨×’×•× ×ž×ª×‘× ×™×ª POT קיימת.×©× ×”×¦×•×•×ª וכתובת הדו×״ל ×ו כתובת ×”×תרמלל חלופיזיכרון ×”×ª×¨×’×•× ×œ× ×ž×›×™×œ ×©×•× ×ž×—×¨×•×–×•×ª הדומות לתוכן של קובץ ×–×”. ×”×•× ×™×¢×™×œ ×œ×ª×¨×’×•×ž×™× ×—×¦×™ ××•×˜×•×ž×˜×™×™× ×¨×§ ל×חר ש-Poedit ילמד מספיק ×ž×§×‘×¦×™× ×©×™×ª×•×¨×’×ž×• ב×ופן ידני.קובץ ×”Ö¾TMX פגו×.בחירה בשמירת ×”×©×™× ×•×™×™× ×ª×’×¨×•× ×œ×ובדן ×”×©×™× ×•×™×™× ×©×‘×•×¦×¢×• ×¢×´×™ ×”×™×™×©×•× ×”×חר.×œ× × ×™×ª×Ÿ להדר קובץ ×–×” לפורמט ×”-MO לצורך שימוש.הקובץ הכיל ×¤×¨×™×˜×™× ×›×¤×•×œ×™×, מצב ש×סור ×©×™×ª×§×™×™× ×‘×§×•×‘×¦×™ PO ועלול למנוע שימוש בקובץ. התקלה תוקנה על ידי Poedit ×ך עליך לסקור ×ª×¨×’×•×ž×™× ×©×œ ×¤×¨×™×˜×™× ×›×œ×©×”× ×©×“×•×¨×©×™× ×˜×™×¤×•×œ ולתקן ××•×ª× ×× ×™×© צורך בכך.×œ× × ×™×ª×Ÿ לשמור ×ת הקובץ בקידוד “%s†כפי שצוין בהגדרות התרגו×. ×‘×ž×§×•× ×–×ת, ×”×•× × ×©×ž×¨ בקידוד UTF-8 וההגדרה שונתה בהת××.הקובץ שונה. ×”×× ×‘×¨×¦×•× ×š לשמור ×ת השינויי×?הקובץ ×”×•× ×‘×ž×‘× ×” ש×ינו מזוהה על ידי Poedit.הקובץ הודר לפורמט ×”-MO, ×ך יתכן ×©×”×•× ×œ× ×™×¢×‘×•×“ כר×וי.הקובץ נשמר בבטחה והודר לפורמט ×”-MO, ×ך יתכן ×©×”×•× ×œ× ×™×¢×‘×•×“ כר×וי.הקובץ נשמר בבטחה, ×ך ×œ× × ×™×ª×Ÿ להדר ×ותו לפורמט ×”-MO לצורך שימוש.הקובץ נשמר בבטחה.××™ ×פשר לפתוח ×ת הקובץ „%sâ€.××™ ×פשר לשמור ×ת הקובץ „%sâ€.הקובץ “%s†נערך ×¢×´×™ ×™×™×©×•× ×חר.טקסט המקור ×”×§×•×“× (לפני ששונה במהלך עדכון) ×ליו תו×× ×”×ª×¨×’×•× ×©×›×¢×ª ×ינו מדויק.הדרך הפשוטה ביותר למילוי קובץ ×–×” ×¢× ×ª×¨×’×•×ž×™× ×”×™× ×œ×¢×“×›×Ÿ ×ותו מ-POT:×”×ª×¨×’×•× ×œ× ×ž×ª×—×™×œ ברווח.×”×ª×¨×’×•× ×ž×¡×ª×™×™× ×‘×©×•×¨×” חדשה, בניגוד לטקסט המקור.×”×ª×¨×’×•× ×ž×¡×ª×™×™× ×‘×¨×•×•×—, בניגוד לטקסט המקור.×”×ª×¨×’×•× ×ž×¡×ª×™×™× ×‘-“%sâ€, ×בל טקסט המקור ×ž×¡×ª×™×™× ×‘-“%sâ€.בסוף ×”×ª×¨×’×•× ×—×¡×¨×” שורה חדשה.בסוף ×”×ª×¨×’×•× ×—×¡×¨ רווח.×”×ª×¨×’×•× ×ž×•×›×Ÿ לשימוש, ×בל %d רשומות ×œ× ×ª×•×¨×’×ž×• עדיין.×”×ª×¨×’×•× ×ž×•×›×Ÿ לשימוש, ×בל %d רשומות ×œ× ×ª×•×¨×’×ž×• עדיין.×”×ª×¨×’×•× ×ž×•×›×Ÿ לשימוש, ×בל %d רשומות ×œ× ×ª×•×¨×’×ž×• עדיין.×”×ª×¨×’×•× ×ž×•×›×Ÿ לשימוש, ×בל %d רשומות ×œ× ×ª×•×¨×’×ž×• עדיין.×”×ª×¨×’×•× ×ž×•×›×Ÿ לשימוש.×”×ª×¨×’×•× ×מור ×œ×”×¡×ª×™×™× ×‘-“%sâ€.×”×ª×¨×’×•× ×œ× ×מור ×œ×”×¡×ª×™×™× ×‘-“%sâ€.×”×ª×¨×’×•× ×מור להתחיל כמשפט.×”×ª×¨×’×•× ×מור להתחיל ב×ות לטינית קטנה.×”×ª×¨×’×•× ×ž×ª×—×™×œ ברווח, בניגוד לטקסט המקור.×”×ª×¨×’×•×ž×™× ×¡×•×ž× ×• ×›×›×לו ×”×“×•×¨×©×™× ×¡×§×™×¨×”, מכיוון שיתכן ש××™× × ×ž×“×•×™×§×™×. כד××™ לסקור ××•×ª× ×•×œ×ª×§× × ×‘×ž×™×“×ª הצורך.×ין תרגומי×. ×–×” מצב חריג.הייתה בעיה בעת עיצוב הקובץ בצורה × ×§×™×™×” (×ך ×”×•× × ×©×ž×¨ כר×וי).×ירעה שגי××” בהעל×ת ×ª×¨×’×•×ž×™× ×œÖ¾Localazy.×ירעו שגי×ות בעת טעינת הקובץ. כתוצ××” מכך, ייתכן שחלק מהמידע חסר ×ו פגו×.הגדרות ×לו משפיעות על העיצוב הפנימי של קובצי PO. שנה ×ותן ×× ×™×© לך דרישות מסוימות, למשל בגלל שליטה על גרסה.קובץ ×”Ö¾JSON ×ינו קובץ ×ª×¨×’×•×ž×™× ×•××™ ×פשר לערוך ×ותו ב־Poedit.הפעולה ×”×–×ת תמחק ×ת כל ×”×ª×¨×’×•×ž×™× ×©×–×”×™× ×œ×˜×§×¡×˜ המקור במדויק. ×–×ת פעולה בלתי הפיכה.לקובץ ×–×” יש רשומות ×¢× ×¦×•×¨×•×ª רבי×, ×ך ×œ× ×ž×•×’×“×¨×ª כותרת Plural-Forms.הקובץ משתמש במזהי מחרוזות ×‘×ž×§×•× ×‘×˜×§×¡×˜ המקור. ל־Poedit יש ×פשרות לטעון ×ת ×”×˜×§×¡×˜×™× ×‘×נגלית מהקובץ „%s†בשבילך.זו הפקודה המשמשת לפתיחת המחלץ. %o יוחלף ×‘×©× ×©×œ קובץ הפלט, %K ברשימת מילות המפתח, %F ברשימת קבצי הקלט, %C בדגל הקידוד (ר××” למטה).מחרוזת זו ×ותרה בזיכרון ×”×ª×¨×’×•× ×©×œ Poedit.משתנה ×–×” יתווסף לשורת הפקודה רק ×× ×”×§×™×“×•×“ של קוד המקור סופק. %c יוחלף בערך הקידוד.משתנה ×–×” יתווסף לשורת הפקודה ×¤×¢× ×חת עבור כל קובץ קלט. %f יוחלף ×‘×©× ×”×§×•×‘×¥.משתנה ×–×” יתווסף לשורת הפקודה ×¤×¢× ×חת עבור כל מילת מפתח. %k יוחלף במילת המפתח.סה״כהמרותרשומות שניתן ×œ×ª×¨×’× ×œ× × ×•×¡×¤×•×ª ידנית למערכת Gettext, ××œ× ×ž×—×•×œ×¦×• ×וטומטית מקוד המקור. כך, הן נש×רות עדכניות ומדויקות. ×ž×ª×¨×’×ž×™× ×‘×“×¨×š כלל ×ž×©×ª×ž×©×™× ×‘×§×•×‘×¦×™ תבניות PO†(POT) ×©×”×ž×¤×ª×—×™× ×ž×›×™× ×™× ×œ×”×.×ª×¨×’×•× ×ž×™×–× ×‘×¢× ×Ÿ×ª×•×¨×’×ž×•: %d מתוך %d (%d%%)תרגו×שפת התרגו×זיכרון תרגו×סימון ×›×ª×¨×’×•× ×”×“×•×¨×© &סקירהמ×פייני התרגו×קובץ ×”×ª×¨×’×•× ×›×‘×¨ עדכני, ×œ× ×‘×•×¦×¢×• ×©×™× ×•×™×™× ×œ×ž×—×¨×•×–×•×ª.מסד ×”× ×ª×•× ×™× ×©×œ זיכרון ×”×ª×¨×’×•× ×¤×’×•×: %s â€(%d).שגי×ת זיכרון תרגו×: %s â€(%d).סימון ×›×ª×¨×’×•× ×”×“×•×¨×© &סקירהמ×פייני התרגו×הצעות תרגו×הצעות ×ª×¨×’×•×ž×™× ×“×•×¨×©×•×ª שטקסט המקור ×™×”×™×” זמין. הן ×œ× ×¢×•×‘×“×•×ª ×× × ×¢×©×” שימוש ×‘×ž×–×”×™× ×‘×œ×‘×“ ×œ×œ× ×”×˜×§×¡×˜ עצמו.הצעות ×ª×¨×’×•× ×“×•×¨×©×•×ª ששפת טקסט המקור תהיה מוכרת. זיהוי השפה בקובץ ×”×–×” על ידי Poedit ×œ× ×”×¦×œ×™×—×”.×ª×¨×’×•× â€” %s×œ× × ×™×ª×Ÿ לעדכן ×ª×¨×’×•×ž×™× ×ž×§×•×“ המקור, מכיוון ×©×œ× × ×ž×¦× ×§×•×“ ×‘×ž×™×§×•× ×©×¦×•×™×™×Ÿ במ×פייני הקובץ.שתיי×UTF-8 (מומלץ)בטלתוכן חסר במפתיע בקובץ ×”Ö¾XCLOC.×ירעה חריגה: %sUnix (מומלץ)שגי×ת Crowdin ×œ× ×™×“×•×¢×”.שגי××” ×œ× ×™×“×•×¢×”×œ× ×ž×ª×•×¨×’×ž×™×עדכוןתקציר העדכוןעדכון הכלעדכון כל ×”×§×˜×œ×•×’×™× ×‘×¤×¨×•×™×™×§×˜×œ×¢×“×›×Ÿ ×ת כל ×”×§×˜×œ×•×’×™× ×‘×ž×™×–× ×”×–×”?עדכון מקובץ &POT…עדכון מקובץ &POT…עדכון מקודעדכון מ-POTעדכון מקודעדכון מקוד המקורתקציר העדכוןעדכוני×העדכון × ×›×©×œ×”×§×˜×œ×•×’×™× ×©×œ ×”×ž×™×–× ×ž×ª×¢×“×›× ×™××”×ª×¨×’×•×ž×™× ×ž×ª×¢×“×›× ×™×מעדכן נתוני משתמש…שליחת ×”×ª×¨×’×•×ž×™× ×ל %s נכשלה.×ª×¨×’×•×ž×™× × ×©×œ×—×™× ×ל %s…מעלה תרגומי×…שימוש בביטוי מות×× ×ישיתשימוש בגופן מות×× ×ישית לרשימה:שימוש בגופן מות×× ×ישית לשדות טקסט:שימוש בכללי בררת המחדל לשפה זוהשתמש במילות מפתח ×לה (שמות פונקציות) על מנת לזהות מחרוזות הניתנות ×œ×ª×¨×’×•× ×‘×§×•×‘×¦×™ המקור:שימוש בזיכרון תרגו××ימותתוצ×ות ×”×ימותגרסה %sהצגת פרטי×…הצגת פרטי×…מחכה ל×ימות…×זהרה: ברוך בו×ך ל־Poeditבעת עדכון ×ž×ž×§×•×¨×•×ª×ž×™×œ×™× ×©×œ×ž×•×ª בלבדחלוןWindows×”×× ×‘×¨×¦×•× ×š להשתמש ב×נגלית עבור טקסט המקור?חזרה להתחלה בסיו×גלישת שורה ב:קובצי ×ª×¨×’×•× ×ž×¡×•×’ XLIFFקטלוג ×ª×¨×’×•×ž×™× Xcodeכןניתן ×’× ×œ×—×œ×¥ ×ת המחרוזות הניתנות ×œ×ª×¨×’×•× ×™×©×™×¨×•×ª מקוד המקור:×œ× × ×™×ª×Ÿ לשחרר יותר מקובץ ×חד בחלון של Poedit.×ין לך הרש××” ×œ×§×¨×•× ×§×•×‘×¦×™ קוד מקור ×ž×”×ž×™×§×•× ×”×ž×¦×•×™×™×Ÿ במ×פייני הקובץ.יש להפעיל מחדש ×ת Poedit כדי ×©×”×©×™× ×•×™×™× ×™×™×›× ×¡×• לתוקף.×”×©× ×©×œ×š×”×©×™× ×•×™×™× ×©×‘×™×¦×¢×ª ×™×בדו ×× ×œ× ×ª×©×ž×•×¨ ×ות×.שמך וכתובת הדו×״ל שלך ישמשו ×ך ורק כדי להגדיר ×ת כותרת ×”-Last-Translator בקובצי gettext של GNU.×פסהגדל/הקטןדורש ×¡×§×™×¨×”×œ× ×œ×ž×—×•×§ ×§×‘×¦×™× ×–×ž× ×™×™× (לצורך ניפוי שגי×ות)לדוגמה ‪nplurals=2; plural=(n > 1);‬שגי××”: הת×× ×ª×¨×’×•×ž×™× ×“×•×ž×™× ×ž×ª×•×š הקובץמעבר לפריט במספר שורה נתוןhandle a poedit:// URIAlt+Ctrl+DownEnterLeftRightShift+Upaltctrlshiftעל %sלהסתיר ×ת %sלהסתיר ×חרי×העדפות…יצי××” מ־%sשירותי×להציג הכולבצע ×ª×¨×’×•× ×ž×¨×ש מזיכרון התרגו×שפה ×œ× ×™×“×•×¢×”×’×¨×¡×” בלתי־נתמכת (%s)×זהרה: you@example.com“%s†×ינו קובץ POT חוקי.poedit-3.6.3/locales/en_GB.po0000644000175100001660000026126115011674363011443 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-05-10 10:16\n" "Last-Translator: \n" "Language-Team: English, United Kingdom\n" "Language: en_GB\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: en-GB\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Hide this notification message" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Don’t Show Again" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Don’t show again" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Update Summary" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Update summary" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Close" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Issues" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "File" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Line" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Issue" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "New Strings" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "New strings" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Removed Strings" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Removed strings" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Collecting source files…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Extracting translatable strings from %s file…" msgstr[1] "Extracting translatable strings from %s files…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Failed to load file with extracted translations." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "In: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Source code not available." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Permission denied." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Failed to extract strings from source code." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "The file “%s†couldn’t be opened." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Updating translations" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Determining differences…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Merging differences…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Translation file is already up to date, no changes to strings were made." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Translation file was updated with %s change." msgstr[1] "Translation file was updated with %s changes." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "New strings to translate:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Removed strings (no longer used):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "%d issue with the source strings was detected." msgstr[1] "%d issues with the source strings were detected." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "View Details…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "View details…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Malformed header: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO Translation Files" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT Translation Templates" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF Translation Files" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode Localisation Catalogue" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON Translation Files" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter Translation Files" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "All Translation Files" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "The file is in a format not recognised by Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "This JSON file isn’t a translations file and cannot be edited in Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Reading file content failed with the following error: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Couldn’t save file %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Screenshots:" #: src/catalog_po.cpp:134 #, 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 line of file “%s†was not loaded correctly." msgstr[1] "%i lines of file “%s†were not loaded correctly." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Line %d of file “%s†is corrupted (not valid %s data)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "Broken PO file: singular form msgstr used together with msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Broken PO file: plural form msgstr used without msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Couldn’t load the file, it is probably damaged." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "There was a problem formatting the file nicely (but it was saved all right)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Error saving file" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†is not a valid POT file." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Unexpectedly missing content in the XCLOC file." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Saving in a different location is not supported for XCLOC files." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Error while loading XLIFF file: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "unsupported version (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Broken markup in translation string." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Connect Poedit with supported cloud localisation platforms to seamlessly " "sync translations managed on them." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "How does cloud sync work?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Account" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(not signed in)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Open cloud translation" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Manage accounts" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Project:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Language:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Sign in to Cloud Account" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Sign in to cloud account" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "No translation projects listed in your account." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Downloading latest translations…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Sign in to %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Syncing" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Uploading translations to %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Uploading translations to %s failed." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Syncing error" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Add" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Unknown Crowdin error." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Not authorised, please sign in again." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "String-based Crowdin projects are not supported." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Downloading translations is disabled in this project." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Sign In" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Sign in" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Sign Out" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Sign out" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Learn more about Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Waiting for authentication…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Updating user information…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Sign in to Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Syncing with Crowdin failed." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin error" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Uploading translations…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Copy" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Learn more" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Help" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO files can’t be directly edited in Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Error opening file" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "don’t delete temporary files (for debugging)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "handle a poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "go to item at given line number" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Failed to communicate with Poedit process." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Unhandled exception occurred: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Select translation template" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Invalid file" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Select translation file" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit is an easy to use translation editor." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "You can’t drop more than one file on Poedit window." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "File “%s†is not a translation file." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "File “%s†doesn’t exist." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." #: src/edframe.cpp:871 msgid "Install" msgstr "Install" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "The file “%s†has been changed by another application." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Reload file" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignore" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Reload File" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "The file has been modified. Do you want to save changes?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Save changes" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Your changes will be lost if you don’t save them." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Save" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Don’t save" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Don’t Save" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "The changes made by the other application will be lost if you save." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Cancel" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Save Anyway" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Save anyway" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Save as…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Compile to…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Compiled Translation Files" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Export to HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML Files" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Exporting to HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Updating failed" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Open reference file" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Update from &POT File…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Update from &POT file…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d issue with the translation found." msgstr[1] "%d issues with the translation found." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Validation results" #: src/edframe.cpp:1842 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 "" "Entries with errors were marked in red in the list. Details of the error " "will be shown when you select such an entry." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "The file was saved safely." #: src/edframe.cpp:1854 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." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." #: src/edframe.cpp:1866 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." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "The file cannot be compiled into the MO format and used." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "No problems with the translation found." #: src/edframe.cpp:1894 #, 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] "" "The translation is ready for use, but %d entry is not translated yet." msgstr[1] "" "The translation is ready for use, but %d entries are not translated yet." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "The translation is ready for use." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit automatically fixed invalid content in the file “%sâ€." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "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 needing work and correct " "them if necessary." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Language of the translation isn’t set." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Set Language" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Language of the translation is the same as source language." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Fix Language" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Fix language" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Required header Plural-Forms is missing." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntax error in Plural-Forms header (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Fix the Header" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Fix the header" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Plural forms expression used by the file is unusual for %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Review" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Would you like to use English for source text?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Load English" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Translated: %d of %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Remaining: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d error" msgstr[1] "%d errors" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entry" msgstr[1] "%d entries" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (unsaved)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (modified)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Failed to update translation memory: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "The file “%s†couldn’t be saved." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Remove same-as-source translations" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Do you want to remove all translations that are identical to the source text?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Keep" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Remove" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Purge deleted translations" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Do you want to remove all translations that are no longer used?" #: src/edframe.cpp:2879 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 "" "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." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Purge" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Copy from source text" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Copy from Source Text" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Clear translation" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Clear Translation" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Edit comment" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Edit Comment" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Code Occurrences" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Code occurrences" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Hide Sidebar" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Show Sidebar" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Hide Status Bar" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Show Status Bar" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "String length in characters: translation | source" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "String length in characters" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Source text" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singular" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plural" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Translation" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pre-translated" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Needs Work" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Needs work" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Create new translation" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Make a new translation from this POT file." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Source text ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Everything" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Form %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Form %i (unused)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Zero" #: src/editing_area.cpp:788 msgid "One" msgstr "One" #: src/editing_area.cpp:790 msgid "Two" msgstr "Two" #: src/editing_area.cpp:804 msgid "Other" msgstr "Other" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "String context: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "String identifier: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s Format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s format" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Translation — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Source text — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "unknown language" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Network error: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Unknown error" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Failed to merge gettext catalogues." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Open in Editor" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Open in editor" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "No information about this string’s occurrences in the source code is " "provided in the file." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "No usage information" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d code occurrence" msgstr[1] "%d code occurrences" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Source code not found" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "File cannot be opened" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit was unable to open the “%s†file." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Find" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Replace" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Options" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignore case" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Wrap around" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Whole words only" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Find in source texts" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Find in translations" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Find in comments" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Replace &All" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Replace &all" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Replace" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Previous" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Next >" #: src/findframe.cpp:235 msgid "String to find" msgstr "String to find" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Replacement string" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "warning: " #: src/gexecute.cpp:171 msgid "error: " msgstr "error: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Language name or code" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Translation Language" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Language of the translation:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "All strings" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Couldn’t download Localazy project details." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "There was an error when uploading translations to Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projects" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Learn more about %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy is a highly automated localisation platform allowing anyone to " "translate their products and content into multiple languages easily." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Add Project" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Add project" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Catalogues manager" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Edit…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Create new translations project" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Delete the project" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Edit the project" #: src/manager.cpp:176 msgid "Update all" msgstr "Update all" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Update all catalogues in the project" #: src/manager.cpp:378 msgid "Total" msgstr "Total" #: src/manager.cpp:379 msgid "Untrans" msgstr "Untrans" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Needs Work" #: src/manager.cpp:381 msgid "Errors" msgstr "Errors" #: src/manager.cpp:382 msgid "Last modified" msgstr "Last modified" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Select directory" #: src/manager.cpp:433 msgid "Directories:" msgstr "Directories:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Do you want to delete project “%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Delete project" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Deleting the project will not delete any translation files." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Confirmation" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Update all catalogs in this project?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Performs update from source code on all files in the project." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Updating project catalogues" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Check for Updates…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Catalogs Manager" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Preferences…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Edit" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Undo" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Redo" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Paste and Match Style" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Delete" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Spelling and Grammar" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Show Spelling and Grammar" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Check Document Now" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Check Spelling While Typing" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Check Grammar With Spelling" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Correct Spelling Automatically" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Substitutions" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Show Substitutions" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Smart Copy/Paste" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Smart Quotes" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Smart Dashes" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Smart Links" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Text Replacement" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformations" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Make Upper Case" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Make Lower Case" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Capitalise" #: src/menus.cpp:237 msgid "Speech" msgstr "Speech" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Start Speaking" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Stop Speaking" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&View" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Show Toolbar" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Customise Toolbar…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Enter Full Screen" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Window" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimise" #: src/menus.cpp:264 msgid "Zoom" msgstr "Zoom" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Welcome to Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Bring All to Front" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Information about the translator" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Name:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Your Name" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-mail:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Your name and e-mail address are only used to set the Last-Translator header " "of GNU gettext files." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Editing" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Automatically compile MO file when saving" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Check spelling" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Always change focus to text input field" #: src/prefsdlg.cpp:211 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." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Appearance" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Use custom list font:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Use custom text fields font:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Change UI language" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(requires Windows 8 or newer)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "General" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Use translation memory" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Manage…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "When updating from sources" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "fuzzy match within the file" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pre-translate from TM" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Stored translations:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Database size on disk:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Import Translation Files…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Import translation files…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Import From TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Import from TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Export To TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Export to TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Reset" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Select translation files to import" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Select TMX files to import" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX Files" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Importing translations…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Importing translation memory failed." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importing from “%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s translation was imported." msgstr[1] "%s translations were imported." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Export as…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Exporting translations…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Exporting translation memory to “%s†failed." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Reset translation memory" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Are you sure you want to reset the translation memory?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Translation Memory" #: src/prefsdlg.cpp:730 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." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Custom Extractors:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Custom extractors:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Supports all programming languages recognised by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Delete extractor" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Are you sure you want to delete the “%s†extractor?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extractors" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Accounts" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Automatically check for updates" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Include beta versions" #: src/prefsdlg.cpp:1080 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." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Updates" #: src/prefsdlg.cpp:1127 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." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Line endings:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (recommended)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Wrap at:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Preserve formatting of existing files" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Advanced" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Settings" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Preparing strings…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Pre-translating from translation memory…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Pre-translated %u string" msgstr[1] "Pre-translated %u strings" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Pre-translating…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d entry was pre-translated." msgstr[1] "%d entries were pre-translated." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Exact matches from TM" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Approximate matches from TM" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "No entries could be pre-translated." #: src/pretranslate.cpp:218 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 "" "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." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Cannot pre-translate without source text." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pre-translate" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Cannot pre-translate from unknown language." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Only fill in exact matches" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Don’t mark exact matches as needing work" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Error: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d error occurred:" msgstr[1] "%d errors occurred:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "An error occurred." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d error occurred." msgstr[1] "%d errors occurred." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Cancelling…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Drag Folders or Files Here" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Drag folders or files here" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Add Folders…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Add folders…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Add Files…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Add files…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Add Wildcard…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Add wildcard…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Reveal in Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Show in Explorer" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Show in Folder" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Paths" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Excluded paths" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Advanced extraction settings" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Extract notes for translators from:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Comments prefixed with:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "All comments" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Additional xgettext flags:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Additional keywords" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Name of the project the translation is for" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Team name and email address or URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "e.g. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (recommended)" #: src/propertiesdlg.cpp:976 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." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Placeholders correctness" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Placeholder “%s†is missing from translation." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Superfluous placeholder “%s†that isn’t in source text." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Plural form translations" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Not all plural forms are translated." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Inconsistent upper/lower case" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "The translation should start as a sentence." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "The translation should start with a lowercase character." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Inconsistent whitespace" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "The translation doesn’t start with a space." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "The translation starts with a space, but the source text doesn’t." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "The translation is missing a newline at the end." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "The translation ends with a newline, but the source text doesn’t." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "The translation is missing a space at the end." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "The translation ends with a space, but the source text doesn’t." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Punctuation checks" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "The translation should end with “%sâ€." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "The translation should not end with “%sâ€." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "The translation ends with “%sâ€, but the source text ends with “%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Cloud" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Clear Menu" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Clear menu" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Comment:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Update" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Delete" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Delete the comment" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Edit project" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Project name:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Browse" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Add directory to the list" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&File" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&New…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "New from &POT/PO file…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "New From &POT/PO File…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Open…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Open Recent" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Open Recent" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Open cloud translation…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Open Cloud Translation…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Start window" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Start Window" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Catalogues &manager" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Catalogues &Manager" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Close" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Save" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Save &as…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Save &As…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Compile to MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&xport to HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Check for updates…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Settings…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Preferences" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "E&xit" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Quit" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Copy from singular" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Copy From Singular" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Translation needs &work" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Translation Needs &Work" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Edit &comment" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Edit &Comment" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Suggestions" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Find…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Replace…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Find next" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Find previous" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Find and Replace…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Find Next" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Find Previous" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Show string &ID" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Show String &ID" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Show warnings" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Show Warnings" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Sort by &file order" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Sort by &File Order" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Sort by &source" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Sort by &Source" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Sort by &translation" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Sort by &Translation" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Group by context" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Group By Context" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Entries with errors first" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Entries with Errors First" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Untranslated entries first" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Untranslated Entries First" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Show code occurrences" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Show Code Occurrences" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Show sidebar" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Show status bar" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Translation" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Update from source code" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Update from Source Code" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sync with Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pre-&translate…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validate translations" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validate Translations" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Remove Same-as-Source Translations" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Purge deleted translations" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Purge Deleted Translations" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Properties…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Go" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Done and next" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Done and Next" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Previously edited" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Previously Edited" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Previous translation" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Previous Translation" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Next translation" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Next Translation" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "P&revious unfinished" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "P&revious Unfinished" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Ne&xt unfinished" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Ne&xt Unfinished" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Previous plural form" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Previous Plural Form" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Next plural form" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Next Plural Form" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Online help" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Online Help" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext manual" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext Manual" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&About Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&About" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Extractor setup" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "List of extensions separated by semicolons (e.g. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Invocation:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Command to extract translations:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "An item in keywords list:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "An item in input files list:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Source code charset:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Translation Properties" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Project name and version:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Language team:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Plural forms:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Use default rules for this language" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Use custom expression" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Learn about plural forms" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Charset:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Advanced Extraction Settings…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Advanced extraction settings…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Translation properties" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Sources Paths" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Sources paths" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Extract text from source files in the following directories:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Base path:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Sources Keywords" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Sources keywords" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Use these keywords (function names) to recognise translatable strings\n" "in source files:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Also use default keywords for supported languages" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Learn about gettext keywords" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Open file" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Save file" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validate" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Check for errors in the translation" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Update from code" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Update from Code" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Update from source code" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Sidebar" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Show or hide the sidebar" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Previous source text" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Notes for translators" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Comment" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Add comment" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Add Comment" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Delete From Translation Memory" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Delete from translation memory" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Translation suggestions" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "No matches found" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "No Matches Found" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "This string was found in Poedit’s translation memory." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Cannot execute program: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "The TMX file is malformed." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Translation memory database is corrupted: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Translation memory error: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Use default language)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Language selection" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Select your preferred language" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "You must restart Poedit for this change to take effect." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Cannot create temporary directory." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "There are no translations. That’s unusual." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Learn more about GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "The simplest way to fill this file with translations is to update it from a " "POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Update from POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Take translatable strings from an existing POT template." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "You can also extract translatable strings directly from the source code:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Extract from sources" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Configure source code extraction in Properties." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Version %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Create new" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Create new translation from POT template." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Browse files" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Open and edit translation files." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Translate cloud project" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Collaborate with other people online." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Recent files" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sync" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Synchronise the translation with Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "About %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s Preferences" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "About %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Services" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Hide %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Hide Others" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Show All" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Quit %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Preferences…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Preferences..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferences..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Apply" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Apply" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Back" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Back" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Cancel" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Clear" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Clear" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Copy" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Cu&t" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Cut" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Edit" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Quit" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Help" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&New" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "New" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&No" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "No" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Open…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Open..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Open..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Paste" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Paste" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Preferences" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Redo" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Refresh" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Save as" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Save as" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Select &All" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Select All" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Undo" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Yes" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Yes" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Left" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Right" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Warning: " poedit-3.6.3/locales/ka.mo0000644000175100001660000022445315011674364011064 Þ•…D_l(è5 é5 õ5&6'6<;6x6&‹6&²6_Ù6J97g„7 ì7ö7 8;8K8 R8`8g8m8u8|8ƒ8‰8‘8 8¯8µ8»8Ä8Ø8ì8ð89999'9/9A9S9W9 [9 h9u9~9‡9 Ž9›9«9Á9×9æ9::$:*:3:9:B:Y: p: ~: Œ:™:Ÿ:»:×:ð: ; ;7;=;B;Y;i; ‡; “;;¦;®;·; »; Ç;Ô; ã;ï; ÿ; < %<2< A<M<]<q<Œ<•<µ<Ò<ò< = ='!=I=\=y= “=ž=¤=À=)à= > >><->Dj>$¯>Ô> Û>€è>i? p?"~?¡?+¼?)è? @@/@A@R@e@n@@@¹@#Î@ò@AA A'A 9ADAVA\AbAsA%„AªA ÅAæAîA÷AB B.B IBkVBÂBÇBÚBðBCC-8C1fC˜C ±C¼C)ÓCýC D+D0DCDVDkDoD†DD¬D½DÜDëDþDE ,E'9E^aE?ÀE F FF.F"AF5dFšFµFÐFÖFéF îF üF G G $G1GBGJGRGYGkG…GuŸGH(H":H]HeH lHwHHœH ­HºHÌHÝHïH I<I`[I¼I ÌI*×I+J0.J!_J'J©J®JÄJ(ãJT KaK fK pK~K’K£K¸K ÍK ×K åK òKÿKLL7L?L PL\L dLoL tLL‘L°LÊL©ÍL‡wMzÿMzN NN N¼NÏNëN$O+OEOLObO€O ˜O¹O ÁO ÎOÚOàOçOþOP(PBP_PrP P ‹P™P¶P ÏPÚPîPQ$Q:)Q dQ<rQ ¯QŒ¼Q.IRxRˆR˜R³R ÃRÍRäRíRóRS S S+S»BSþST T'T @TLTfTwTˆT‹T#œTÀT'ÑT/ùT)U$>U%cU‰UŸU¢U¦UÁU ÛU çUVV 9VCVRV aVmVV‰V‘V™VŸV´VÉVÞVøVþVWW-WnFWµW¼W ÕWãWêW@X,EXrX „X’X2¡X*ÔXÿXwY ŠY–Y¥Y´Y%ÉYïYZZ.Z@ZRZ lZzZƒZŒZŸZ¥ZÀZ8ÅZ þZ [[ [ $[ 0[>[E[U[!e[‡[ [ œ[©[ ¼[(Ç[ð[ö[\ \'\ ,\ 8\ D\ P\\\ d\ o\ |\@†\ Ç\ Ô\ à\ë\]]"/]R]n] ] š]§] °] ¼]É]ã]ó]^ ^ #^1^B^Q^ j^w^‡^ —^¥^­^µ^¾^ Æ^Ô^í^__"_+_ <_ I_ U_b_v_†_›_¯_¿_Ô_é_` `&`5`H` Y`g` x`†`K`Ù`î` ý` a a3aIaea0ta ¥a ³a¿aÄaÖa Þaìa+ b5b 8b"BbebvbC‘b8ÕbŸc8®c1çcRdcldQÐd"e'=e&ee:ŒeŽÇe!VfLxf;Åf]gJ_gmªg_h[xhÔhÚhêhi i+i@iSikiH‚iZËi"&jIjajxjjˆ£j,k0kDk/Ik ykšk­k ÄkÒkÚkák ðk"ûkl7lPlalql‚lšl©l±lÁlÛlñl$m3mSmmmƒm™m#¶mVÚm1nHnQn dnonnn ­n·nÉnänõnün.o 3o?oHo`o{o5omµo7#p [p3ep™pžp£p.Àp ïpqq4qTqkq}qq¢qµqÇqÚqîqþqr!r4rMrerr r¸rÑrêrss *s4s!Ds©fsu,uSKu7Ÿu©×u1vw³vw+wá£wÿ…xÍ…ySz+mz™z}³z1{$H{"m{ {ž{"¸{Û{ò{ |9|9W|‘|®|¿|HÓ|H}e}T}TÔ})~F~W~k~/„~/´~ ä~ ï~>ý~><{’©"ºÝ&÷&€E€He€K®€ú€1Q)hH’HÛ,$‚,Q‚~‚˜‚H²‚Hû‚HDƒHƒ8Öƒ8„ H„ V„bd„;Ç„K…O…_…w…—…°…Ï…7è…4 †CU†1™†>ˆ7 ‡8B‡4{‡C°‡1ô‡>&ˆPeˆN¶ˆ‰Y$‰\~‰YÛ‰85Š+nŠ.šŠsÉŠ8=‹Xv‹BÏ‹Œ!.ŒTPŒY¥ŒrÿŒ r85¸Áî¾°ŽioÙ%ï©¿‘Ø‘mô‘Wb’^º’–“5°“8æ“;”=[”A™”Û”Aõ”V7•]Ž•Cì•V0–C‡–:Ë–!—4(—4]—4’—4Ç—ü—˜(˜B˜m\˜lʘ]7™•™±™QÑ™7#š4[šYšêš\›]œCvœJºœCJIY”zî ižO Ÿ"ZŸ>}Ÿb¼ŸT $t ™ D­ Dò G7¡¡0’¡áSÓ¡4'¢S\¢(°¢.Ù¢(£.1£`£Gt£F¼£œ¥ ¥¾¥"Û¥"þ¥!¦ƒ£¦c'§c‹§ï§"¨&¨;B¨;~¨:º¨:õ¨70©7h© ©¼©Û©"ó©NªNeª´ªD4¬Gy¬QÁ¬­+­G­Bc­4¦­ Û­(ü­!%® G®h®7‡®.¿®î®¯:°'ذo±dp±Õ±Xf²v¿²6³GF³5޳Vijõ´µ1!µ.Sµ,‚µ1¯µ8áµ+¶1F¶.x¶(§¶(ж7ù¶71·6i·  ·=­· ë·÷· ¸%¸>A¸J€¸;˸m¹u¹°x¹Â)»Œì¼y¾:˜¾)Ó¾Pý¾)N¿Px¿*É¿mô¿=bÀ  À>«À7êÀ="ÁV`Á·Á(ÐÁùÁÂ/Â3NÂ!‚Â3¤ÂYØÂ&2ÃYÃ/yà ©Ã%´ÃÚàZÄ=ûÄE9ÅJÅNÊŠƢ&ÆQÉÆ—Ç:³Ç…îÇhtÉDÝÉ;"Ê1^Ê4ÊÅÊCÛÊË5Ë;IË;…Ë=ÁË=ÿË1=̯oÌÏ3/Ï.cÏ3’Ï7ÆÏNþÏDMÐD’Ð ×Ð.áЀÑ.‘Ñ[ÀÑ{ÒM˜ÒwæÒœ^ÓRûÓNÔ ^ÔckÔPÏÔT ÕkuÕMáÕP/Ö%€Ö1¦Ö1ØÖT ×G_×§×½×!Ó× õ×2Ø25Ø1hØ8šØÓØHãØ$,Ù8QÙ=ŠÙ7ÈÙÛPÛ5pÛ¦ÛC­Û—ñÛ‰Ü8Ý4PÝ4…݉ºÝ{DÞ7ÀÞøÞ! à$.à$Sà@xàx¹à;2á;ná2ªá=Ýá=âFYâ, âÍâäâ=ã>ãYWã±ã“ÄãDXää³äDÏäDå"Yå|å4Œå4Áåföå]æ2|æ2¯æCâæ!&çÄHç! èS/è7ƒè»è×è+íè+é%Eé%ké(‘é+ºé7æé(ê–Gê5Þê,ë+AëNmë(¼ëAåëf'ìGŽìWÖì.íNíní„í>í]ÜíJ:î<…î=Âî+ï:,ï7gï7Ÿïs×ï>KðJŠð<Õð:ñ%Mñsñ†ñŸñ²ñoÌñ<òo[òËòäò>ó+Bó+nó1šó?Ìó/ ôN<ô?‹ô/ËôNûô=JõEˆõBÎõ%ö+7ö*cöDŽö7ÓöD ÷7P÷ˆ÷Óž÷>rø1±ø7ãøJù;fùJ¢ùYíù.Gú¡vú$û=û'Sû9{û'µû@Ýû]ü{|üøüûüxý4Žý9ÃýÒýýŸÐþ‰pÿrúVm¸Ä}÷‘R‰MÜP*k{ƒç^káÊj¬+ C @á á" ×  Ü !æ M7VŽ%§:ÍQ7Z½’ÉP]Qx7Ê=@2^ ‘2›Îmê`X1¹8ë($Mc7.·Zæ<A<~1»8í1&GX7 !Ø>úV9bŠóh~lçbTP·IhRy»"5\Xµ7Ñ ..NC}#Á+åMA_¡·¿4M s‚ 7ö J.! y!£†!*":#%Ø#†þ# …$’$=®$…ì$&r%™%Z±%v &-ƒ&±&¶&¼&Ï&Õ&î&'''"'''-'M'+m'$™'¾'Þ'(ú'/#(S(?p(#°(Ô(Fä("Àf`\)”z—„«4zÕ3AÂG7–òr½IàTÂ7¿/Ö ÐZ}[Ûª±N‡xu@乤HVÄέŒó" ¦[} œ•|~hí?â P¢„˜ð&]½¡YýIU…Šo†p¦!R.ãÙªèH³¢L‚æÃ5ü¼÷hÙ†£K<èsÈ¥<>_$Ôäd]é•ËD«5î8UŒdq^ƒ#S,KѺ#£=W‹C ¯Þ2'0øtjÖ/c`y,Ê ²0À3 * gÇw©“:§aDFaàMµl‰Ç9;O ް;µ»e¹Ëž3D\È:Ó¸‰ÅìŸ šÿÄ¡å ZT‚v¬m€º×ixbˆ üYæ6»ëø–ê8S~1oq¾Ñv×z”ò¨õbÏœÚÚݰñ.%¿ŠÔ)b`ÐMîƒN(ÜE$&@(öClF™¥þ§çVây[+óôc¨7ôv±QKÁJ$¯E6©\{-‘pY´ëjy_˜Au›ljf:nJ޶rptÎ( Lß6tÕ eRçˆZI%kÆeBñ íêÃC‹ïo ïùå,ß{ãkcG)W9|ö!­=kH;N~}{’*ÞƒûXÊ®i'ØB´Ås€4¤J“³O5·›áxUžõͲ÷!‘r.u·ÜQP<Sd-X„gú =+éŸR’Øm®ú…Ò9*Ó‡¸h-1ÉFðþn#ù g]0É€Xmww^EPL?Ýs% á2fW2…š‚ÿiA1Û¼¶MÌì&_Ò 'ÆT>Q8ýV4"nG/B¾Í—Ï™û@?>|+ÌqaÁ¬O^ (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAutomatically check for updatesAutomatically compile MO file when savingBackBase path:Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDetermining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translations…Extract from sourcesExtract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMalformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPastePaste and Match StylePathsPermission denied.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.PluralPlural form translationsPlural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit is an easy to use translation editor.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryReveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSyncSync with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTeam name and email address or URLText ReplacementThe TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.This JSON file isn’t a translations file and cannot be edited in Poedit.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-05-11 10:16 Last-Translator: Language-Team: Georgian Language: ka_GE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: ka X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (შეიცვáƒáƒšáƒ) (შეუნáƒáƒ®áƒáƒ•ი)კáƒáƒ“ში ჩáƒáƒœáƒ¡ %d-ხელკáƒáƒ“ში ჩáƒáƒœáƒ¡ %d-ჯერ%d ჩáƒáƒœáƒáƒ¬áƒ”რი%d ჩáƒáƒœáƒáƒ¬áƒ”რიწინáƒáƒ¡áƒ¬áƒáƒ  თáƒáƒ áƒ’მნილირ%d ჩáƒáƒœáƒáƒ¬áƒ”რი.წინáƒáƒ¡áƒ¬áƒáƒ  თáƒáƒ áƒ’მნილირ%d ჩáƒáƒœáƒáƒ¬áƒ”რი.%d შეცდáƒáƒ›áƒ%d შეცდáƒáƒ›áƒáƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირ%d შეცდáƒáƒ›áƒ.áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირ%d შეცდáƒáƒ›áƒ.áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირ%d შეცდáƒáƒ›áƒ:áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირ%d შეცდáƒáƒ›áƒ:áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირ%d ცვლილებრწყáƒáƒ áƒ სტრიქáƒáƒœáƒ”ბში.áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირ%d ცვლილებრწყáƒáƒ áƒ სტრიქáƒáƒœáƒ”ბში.თáƒáƒ áƒ’მáƒáƒœáƒ—áƒáƒœ დáƒáƒ™áƒáƒ•შირებით წáƒáƒ áƒ›áƒáƒ˜áƒ¨áƒ•რ%d შეფერხებáƒ.თáƒáƒ áƒ’მáƒáƒœáƒ—áƒáƒœ დáƒáƒ™áƒáƒ•შირებით წáƒáƒ áƒ›áƒáƒ˜áƒ¨áƒ•რ%d შეფერხებáƒ.“%2$s†ფáƒáƒ˜áƒšáƒ˜áƒ¡ %1$i ხáƒáƒ–ი სწáƒáƒ áƒáƒ“ áƒáƒ  ჩáƒáƒ˜áƒ¢áƒ•ირთáƒ.“%2$s†ფáƒáƒ˜áƒšáƒ˜áƒ¡ %1$i ხáƒáƒ–ი სწáƒáƒ áƒáƒ“ áƒáƒ  ჩáƒáƒ˜áƒ¢áƒ•ირთáƒ.ფáƒáƒ áƒ›áƒáƒ¢áƒ˜: %s%s-ის პáƒáƒ áƒáƒ›áƒ”ტრებიფáƒáƒ áƒ›áƒáƒ¢áƒ˜: %sშემáƒáƒ¢áƒáƒœáƒ˜áƒšáƒ˜áƒ %s თáƒáƒ áƒ’მáƒáƒœáƒ˜.შემáƒáƒ¢áƒáƒœáƒ˜áƒšáƒ˜áƒ %s თáƒáƒ áƒ’მáƒáƒœáƒ˜.შ&ესáƒáƒ®áƒ”ბPoedit-ის შ&ესáƒáƒ®áƒ”ბ&დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბáƒ&უკáƒáƒœ&გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ&გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•ებáƒ&დáƒáƒ®áƒ£áƒ áƒ•áƒ&კáƒáƒžáƒ˜áƒ áƒ”ბáƒ&წáƒáƒ¨áƒšáƒ&დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბრდრშემდეგი&დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბრდრშემდეგიჩ&áƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ&ფáƒáƒ˜áƒšáƒ˜&ძებნáƒâ€¦&GNU gettext-ის დáƒáƒ®áƒ›áƒáƒ áƒ”ბის ფáƒáƒ˜áƒšáƒ”ბი&GNU gettext-ის დáƒáƒ®áƒ›áƒáƒ áƒ”ბის ფáƒáƒ˜áƒšáƒ”ბი&გáƒáƒ“áƒáƒ¡áƒ•ლáƒ&კáƒáƒœáƒ¢áƒ”ქსტის მიხედვით დáƒáƒ¯áƒ’უფებáƒ&კáƒáƒœáƒ¢áƒ”ქსტის მიხედვით დáƒáƒ¯áƒ’უფებáƒ&დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ&áƒáƒ®áƒáƒšáƒ˜&áƒáƒ®áƒáƒšáƒ˜â€¦&შემდეგი >&შემდეგი თáƒáƒ áƒ’მáƒáƒœáƒ˜&შემდეგი თáƒáƒ áƒ’მáƒáƒœáƒ˜&áƒáƒ áƒ&დიáƒáƒ®&áƒáƒœáƒšáƒáƒ˜áƒœ-სáƒáƒ®áƒ”ლმძღვáƒáƒœáƒ”ლáƒ&áƒáƒœáƒšáƒáƒ˜áƒœ-სáƒáƒ®áƒ”ლმძღვáƒáƒœáƒ”ლáƒ&გáƒáƒ®áƒ¡áƒœáƒ...&გáƒáƒ®áƒ¡áƒœáƒâ€¦áƒ©&áƒáƒ¡áƒ›áƒ&პáƒáƒ áƒáƒ›áƒ”ტრები&მáƒáƒ áƒ’ებáƒâ€¦&წინრთáƒáƒ áƒ’მáƒáƒœáƒ˜&წინრთáƒáƒ áƒ’მáƒáƒœáƒ˜&თვისებები…&წáƒáƒ¨áƒšáƒ˜áƒš თáƒáƒ áƒ’მáƒáƒœáƒ—რგáƒáƒ¬áƒ›áƒ”ნდáƒáƒ¬áƒáƒ¨áƒšáƒ˜áƒšáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ”ბის &áƒáƒ›áƒáƒ¨áƒšáƒ&გáƒáƒ›áƒáƒ¡áƒ•ლáƒ&გáƒáƒ›áƒ”áƒáƒ áƒ”ბáƒ&ჩáƒáƒœáƒáƒªáƒ•ლებáƒáƒ¨&ენáƒáƒ®áƒ•áƒáƒ¨áƒ”ნáƒáƒ®áƒ•რ&რáƒáƒ’áƒáƒ áƒª&კáƒáƒ“ის áƒáƒ¦áƒ›áƒáƒ©áƒ”ნების ჩვენებáƒ&კáƒáƒ“ის áƒáƒ¦áƒ›áƒáƒ©áƒ”ნების ჩვენებáƒ&სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ფáƒáƒœáƒ¯áƒáƒ áƒ&სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ფáƒáƒœáƒ¯áƒáƒ áƒ&თáƒáƒ áƒ’მáƒáƒœáƒ˜&გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ&ჯერ უთáƒáƒ áƒ’მნელი შენáƒáƒ¢áƒáƒœáƒ”ბი&ჯერ უთáƒáƒ áƒ’მნელი შენáƒáƒ¢áƒáƒœáƒ”ბი&სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ კáƒáƒ“იდáƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ&სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ კáƒáƒ“იდáƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ &ვáƒáƒšáƒ˜áƒ“áƒáƒªáƒ˜áƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ &ვáƒáƒšáƒ˜áƒ“áƒáƒªáƒ˜áƒ&ხედი&დიáƒáƒ®(გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნე სისტემის სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ენáƒ)( áƒáƒ  áƒáƒ áƒ˜áƒ¡ áƒáƒ•ტáƒáƒ áƒ˜áƒ–ებული)(სáƒáƒ­áƒ˜áƒ áƒáƒ”ბს Windows 8 áƒáƒœ უფრრáƒáƒ®áƒáƒšáƒ¡)< &წინáƒ<უსáƒáƒ®áƒ”ლáƒ>%s-ის შესáƒáƒ®áƒ”ბáƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ”ბიდáƒáƒ›áƒáƒ¢áƒ”ბáƒáƒ™áƒáƒ›áƒ”ნტáƒáƒ áƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბáƒáƒ¤áƒáƒ˜áƒšáƒ”ბის დáƒáƒ›áƒáƒ¢áƒ”ბáƒâ€¦áƒ¡áƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეების დáƒáƒ›áƒáƒ¢áƒ”ბáƒâ€¦áƒžáƒ áƒáƒ”ქტის დáƒáƒ›áƒáƒ¢áƒ”ბáƒáƒ•áƒáƒ˜áƒšáƒ“ კáƒáƒ áƒ“ის ჩáƒáƒ›áƒáƒ¢áƒ”ბáƒâ€¦áƒ™áƒáƒ›áƒ”ნტáƒáƒ áƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბáƒáƒ£áƒ¯áƒ áƒ˜áƒ¡ სიáƒáƒ¨áƒ˜ დáƒáƒ›áƒáƒ¢áƒ”ბáƒáƒ¤áƒáƒ˜áƒšáƒ”ბის დáƒáƒ›áƒáƒ¢áƒ”ბáƒâ€¦áƒ¡áƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეების დáƒáƒ›áƒáƒ¢áƒ”ბáƒâ€¦áƒžáƒ áƒáƒ”ქტის დáƒáƒ›áƒáƒ¢áƒ”ბáƒáƒ•áƒáƒ˜áƒšáƒ“ კáƒáƒ áƒ“ის ჩáƒáƒ›áƒáƒ¢áƒ”ბáƒâ€¦áƒ“áƒáƒ›áƒáƒ¢áƒ”ბითი სáƒáƒ™áƒ•áƒáƒœáƒ«áƒ სიტყვებიXgettext-ს დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒ áƒáƒ›áƒ”ტრები:დáƒáƒ›áƒáƒ¢áƒ”ბითიგáƒáƒœáƒ¨áƒšáƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒ áƒáƒ›áƒ”ტრები…გáƒáƒ›áƒáƒ¢áƒáƒœáƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒ áƒáƒ›áƒ”ტრებიგáƒáƒœáƒ¨áƒšáƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒ áƒáƒ›áƒ”ტრები…თáƒáƒ áƒ’მნის ყველრფáƒáƒ˜áƒšáƒ˜áƒ§áƒ•ელრკáƒáƒ›áƒ”ნტáƒáƒ áƒ˜áƒáƒ®áƒáƒšáƒ˜ სტრიქáƒáƒœáƒ”ბიყáƒáƒ•ელთვის გáƒáƒáƒ¥áƒ¢áƒ˜áƒ£áƒ áƒ” ტექსტის ჩáƒáƒ¡áƒáƒ¬áƒ”რი ველიáƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირშეცდáƒáƒ›áƒ.ელემენტი შესáƒáƒ§áƒ•áƒáƒœáƒ˜ ფáƒáƒ˜áƒšáƒ˜áƒ¡ სიáƒáƒ¨áƒ˜:ელემენტი სიტყვáƒáƒ—რსიáƒáƒ¨áƒ˜:გáƒáƒ áƒ”გნáƒáƒ‘áƒáƒ“áƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბáƒáƒ“áƒáƒáƒ®áƒšáƒáƒ”ბითი დáƒáƒ›áƒ—ხვევები თმ-დáƒáƒœáƒ’áƒáƒœáƒáƒ®áƒšáƒ”ბის áƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ შემáƒáƒ¬áƒ›áƒ”ბáƒMO ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ კáƒáƒ›áƒžáƒ˜áƒšáƒáƒªáƒ˜áƒ შენáƒáƒ®áƒ•ისáƒáƒ¡áƒ£áƒ™áƒáƒœáƒ«áƒ˜áƒ áƒ˜áƒ—áƒáƒ“ი მდებáƒáƒ áƒ”áƒáƒ‘áƒ:ყველáƒáƒ¡ წინ გáƒáƒ›áƒáƒ¢áƒáƒœáƒáƒ“áƒáƒ–იáƒáƒœáƒ”ბული PO ფáƒáƒ˜áƒšáƒ˜: msgstr-ის მრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ გáƒáƒ›áƒáƒ§áƒ”ნებულირmsgid_plural-ის გáƒáƒ áƒ”შედáƒáƒ–იáƒáƒœáƒ”ბული PO ფáƒáƒ˜áƒšáƒ˜: msgstr-ის მხáƒáƒšáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ გáƒáƒ›áƒáƒ§áƒ”ნებულირmsgid_plural-თáƒáƒœ ერთáƒáƒ“დáƒáƒ–იáƒáƒœáƒ”ბული მáƒáƒ áƒ™áƒ˜áƒ áƒ”ბáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ხáƒáƒ–ში.მáƒáƒ«áƒ˜áƒ”ბáƒáƒ¤áƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ áƒ©áƒ”ვáƒáƒœáƒáƒ’ულისხმევáƒáƒ“ áƒáƒ¡áƒ”ვე áƒáƒ áƒáƒ¡áƒ¬áƒáƒ  პáƒáƒ¡áƒ£áƒ®áƒ”ბსáƒáƒª გáƒáƒ©áƒ•ენებთ, მáƒáƒ’რáƒáƒ›, მáƒáƒ˜áƒœáƒ˜áƒ¨áƒœáƒ”ბიáƒáƒœ, რáƒáƒ’áƒáƒ áƒª ჯერ კიდევ დáƒáƒ¡áƒáƒ›áƒ£áƒ¨áƒáƒ•ებელი. ჩáƒáƒ áƒ—ეთ ეს, რáƒáƒ—რმხáƒáƒšáƒáƒ“ ზუსტი დáƒáƒ›áƒ—ხვევები ჩáƒáƒáƒœáƒáƒªáƒ•ლáƒáƒ—.გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒáƒ’áƒáƒ£áƒ¥áƒ›áƒ”ბáƒâ€¦áƒ“რáƒáƒ”ბითი სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის შექმნრშეუძლებელიáƒ.%s პრáƒáƒ’რáƒáƒ›áƒ˜áƒ¡ გáƒáƒ¨áƒ•ებრვერ ხერხდებáƒáƒ£áƒªáƒœáƒáƒ‘ი ენიდáƒáƒœ თáƒáƒ áƒ’მნრშეუძლებელიáƒ.სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ტექსტის გáƒáƒ áƒ”შე წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜ შეუძლებელიáƒ.დიდი áƒáƒ¡áƒáƒ—ი áƒáƒ¦áƒœáƒ˜áƒ¨áƒ•ნáƒáƒ™áƒáƒ¢áƒáƒšáƒáƒ’თრ&მმáƒáƒ áƒ—ველიკáƒáƒ¢áƒáƒšáƒáƒ’ების &მენეჯერიკáƒáƒ¢áƒáƒšáƒáƒ’ების მმáƒáƒ áƒ—ველიინტერფეისის ენის შეცვლáƒáƒ™áƒáƒ“ირებáƒ:შეáƒáƒ›áƒáƒ¬áƒ›áƒ” დáƒáƒ™áƒ£áƒ›áƒ”ნტი áƒáƒ®áƒšáƒáƒ¨áƒ”áƒáƒ›áƒáƒ¬áƒ›áƒ”თ გრáƒáƒ›áƒáƒ¢áƒ˜áƒ™áƒ მáƒáƒ áƒ—ლწერითმáƒáƒ áƒ—ლწერის რეáƒáƒšáƒ£áƒ  დრáƒáƒ¨áƒ˜ შემáƒáƒ¬áƒ›áƒ”ბáƒáƒ’áƒáƒœáƒáƒ®áƒšáƒ”ბების შემáƒáƒ¬áƒ›áƒ”ბáƒâ€¦áƒ—áƒáƒ áƒ’მáƒáƒœáƒ¨áƒ˜ შეცდáƒáƒ›áƒ”ბის შემáƒáƒ¬áƒ›áƒ”ბáƒáƒ’áƒáƒœáƒáƒ®áƒšáƒ”ბების შემáƒáƒ¬áƒ›áƒ”ბáƒâ€¦áƒ›áƒáƒ áƒ—ლწერის შემáƒáƒ¬áƒ›áƒ”ბáƒáƒ’áƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•ებáƒáƒ›áƒ”ნიუს გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•ებáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ გáƒáƒ¬áƒ›áƒ”ნდáƒáƒ›áƒ”ნიუს გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•ებáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ გáƒáƒ¬áƒ›áƒ”ნდáƒáƒ“áƒáƒ®áƒ£áƒ áƒ•áƒáƒ¦áƒ áƒ£áƒ‘ელიკáƒáƒ“ი ჩáƒáƒœáƒ¡áƒ™áƒáƒ“ი ჩáƒáƒœáƒ¡áƒ˜áƒ—áƒáƒœáƒáƒ›áƒ¨áƒ áƒáƒ›áƒšáƒ”თ სხვრáƒáƒ“áƒáƒ›áƒ˜áƒáƒœáƒ”ბთáƒáƒœ áƒáƒœáƒšáƒáƒ˜áƒœ.მáƒáƒœáƒáƒªáƒ”მების სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ კáƒáƒ“იდáƒáƒœ შეგრáƒáƒ•ებáƒâ€¦áƒ‘რძáƒáƒœáƒ”ბრთáƒáƒ áƒ’მáƒáƒœáƒ”ბის გáƒáƒ›áƒáƒ¡áƒáƒ¦áƒ”ბáƒáƒ“:კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜áƒ¨áƒ”ნიშვნები:კáƒáƒ›áƒ”ნტáƒáƒ áƒ”ბი იწყებრპრეფიქსით:კáƒáƒ›áƒžáƒ˜áƒšáƒáƒªáƒ˜áƒ MO ფáƒáƒ˜áƒšáƒ¨áƒ˜â€¦áƒ™áƒáƒ›áƒžáƒ˜áƒšáƒáƒªáƒ˜áƒ ფáƒáƒ˜áƒšáƒ¨áƒ˜â€¦áƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ კáƒáƒ›áƒžáƒ˜áƒšáƒ˜áƒ áƒ”ბული ფáƒáƒ˜áƒšáƒ”ბიდáƒáƒ¡áƒ¢áƒ£áƒ áƒ˜áƒ“áƒáƒáƒ™áƒáƒ•შირეთ Poedit ღრუბლáƒáƒ•áƒáƒœ ლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ მხáƒáƒ áƒ“áƒáƒ­áƒ”რილ პლáƒáƒ¢áƒ¤áƒáƒ áƒ›áƒ”ბთáƒáƒœ, მáƒáƒ—ზე áƒáƒ áƒ¡áƒ”ბული თáƒáƒ áƒ’მáƒáƒœáƒ”ბის შეუფერხებლáƒáƒ“ სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡áƒ—ვის.კáƒáƒžáƒ˜áƒ áƒ”ბáƒáƒ›áƒ®áƒáƒšáƒáƒ‘ითიდáƒáƒœ დáƒáƒ™áƒáƒžáƒ˜áƒ áƒ”ბáƒáƒ¡áƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ტექსტიდáƒáƒœ კáƒáƒžáƒ˜áƒ áƒ”ბáƒáƒ›áƒ®áƒáƒšáƒáƒ‘ითიდáƒáƒœ დáƒáƒ™áƒáƒžáƒ˜áƒ áƒ”ბáƒáƒ¡áƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ტექსტიდáƒáƒœ კáƒáƒžáƒ˜áƒ áƒ”ბáƒáƒ›áƒáƒ áƒ—ლწერის áƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ შემáƒáƒ¬áƒ›áƒ”ბáƒLocalazy-ის პრáƒáƒ”ქტის დეტáƒáƒšáƒ”ბის გáƒáƒ“მáƒáƒ¬áƒ”რის შეცდáƒáƒ›áƒ.ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¢áƒ•ირთვრშეუძლებელიáƒ. სáƒáƒ•áƒáƒ áƒáƒ£áƒ“áƒáƒ“ იგი დáƒáƒ–იáƒáƒœáƒ”ბულიáƒ.%s ფáƒáƒ˜áƒšáƒ˜áƒ¡ შენáƒáƒ®áƒ•რვერ მáƒáƒ®áƒ”რხდáƒ.áƒáƒ®áƒšáƒ˜áƒ¡ შექმნáƒáƒáƒ®áƒáƒšáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ შექმნáƒáƒáƒ®áƒáƒšáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ შექმნრPOT შáƒáƒ‘ლáƒáƒœáƒ˜áƒ“áƒáƒœ.შექმენი áƒáƒ®áƒáƒšáƒ˜ სáƒáƒ—áƒáƒ áƒ’მი პრáƒáƒ”ქტიCrowdin-ის შეცდáƒáƒ›áƒáƒáƒ›&áƒáƒ­áƒ áƒáƒ›áƒáƒ áƒ’ებული ექსტრáƒáƒ¥áƒ¢áƒáƒ áƒ”ბი:მáƒáƒ áƒ’ებული ექსტრáƒáƒ¥áƒ¢áƒáƒ áƒ”ბი:ხელსáƒáƒ¬áƒ§áƒáƒ—რზáƒáƒšáƒ˜áƒ¡ მáƒáƒ áƒ’ებáƒâ€¦áƒáƒ›áƒáƒ­áƒ áƒáƒ‘áƒáƒ–ის ზáƒáƒ›áƒ დისკზე:წáƒáƒ¨áƒšáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერებიდáƒáƒœ წáƒáƒ¨áƒšáƒáƒ”ქსტრáƒáƒ¥áƒ¢áƒáƒ áƒ˜áƒ¡ წáƒáƒ¨áƒšáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერებიდáƒáƒœ წáƒáƒ¨áƒšáƒáƒžáƒ áƒáƒ”ქტის წáƒáƒ¨áƒšáƒáƒ™áƒáƒ›áƒ”ნტáƒáƒ áƒ˜áƒ¡ წáƒáƒ¨áƒšáƒáƒžáƒ áƒáƒ”ქტის წáƒáƒ¨áƒšáƒáƒ¡áƒ®áƒ•áƒáƒáƒ‘ის დáƒáƒ“ებáƒâ€¦áƒ£áƒ¯áƒ áƒ”ბი:გნებáƒáƒ•თ პრáƒáƒ”ქტის "%s" წáƒáƒ¨áƒšáƒâ€?გსურთ ფáƒáƒ˜áƒšáƒ˜áƒ¡ ხელáƒáƒ®áƒšáƒ ჩáƒáƒ¢áƒ•ირთვრდისკიდáƒáƒœ? თუ ხელáƒáƒ®áƒšáƒ ჩáƒáƒ¢áƒ•ირთáƒáƒ•თ, Poedit-ში თქვენს მიერ გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლებული ცვლილებები დáƒáƒ˜áƒ™áƒáƒ áƒ’ებáƒ.გსურთ ყველრიმ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ წáƒáƒ¨áƒšáƒ, რáƒáƒ›áƒšáƒ”ბიც áƒáƒ¦áƒáƒ  გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნებáƒ?&áƒáƒ  შეინáƒáƒ®áƒáƒáƒ  შეინáƒáƒ®áƒáƒáƒ¦áƒáƒ  მáƒáƒ©áƒ•ენáƒáƒáƒ¦áƒáƒ  მáƒáƒ©áƒ•ენáƒáƒ›áƒ˜áƒ›áƒ“ინáƒáƒ áƒ”áƒáƒ‘ს უáƒáƒ®áƒšáƒ”სი თáƒáƒ áƒ’მáƒáƒœáƒ”ბის ჩáƒáƒ›áƒáƒ¢áƒ•ირთვáƒâ€¦áƒáƒ› პრáƒáƒ”ქტში თáƒáƒ áƒ’მáƒáƒœáƒ”ბის ჩáƒáƒ›áƒáƒ¢áƒ•ირთვრგáƒáƒ›áƒáƒ áƒ—ულიáƒ.გáƒáƒ“მáƒáƒáƒ—რიეთ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეები áƒáƒœ ფáƒáƒ˜áƒšáƒ”ბიგáƒáƒ“მáƒáƒáƒ—რიეთ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეები áƒáƒœ ფáƒáƒ˜áƒšáƒ”ბიგáƒ&სვლáƒ&გáƒáƒ¢áƒáƒœáƒ HTML-ში…ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ&კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜áƒ¡ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒáƒ¨áƒ”&ნიშვნის დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒ™áƒáƒ›áƒ”ნტáƒáƒ áƒ˜áƒ¡ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒáƒ¨áƒ”ნიშვნის დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒžáƒ áƒáƒ”ქტის დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒžáƒ áƒáƒ”ქტის დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒ©áƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒáƒ©áƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒâ€¦áƒ”ლ-ფáƒáƒ¡áƒ¢áƒ:სრული ეკრáƒáƒœáƒ˜áƒ¡áƒ˜áƒáƒ¨áƒ˜ ჯერ შეცდáƒáƒ›áƒ”ბის ჩვენებáƒáƒ¡áƒ˜áƒáƒ¨áƒ˜ ჯერ შეცდáƒáƒ›áƒ”ბის ჩვენებáƒáƒ©áƒáƒœáƒáƒ¬áƒ”რები, რáƒáƒ›áƒ”ლიც შეიცáƒáƒ•ს შეცდáƒáƒ›áƒáƒ¡, სიáƒáƒ¨áƒ˜ მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜áƒ წითლáƒáƒ“. შეცდáƒáƒ›áƒ˜áƒ¡ დეტáƒáƒšáƒ”ბი გáƒáƒ›áƒáƒ©áƒœáƒ“ებრმáƒáƒ¨áƒ˜áƒœ, რáƒáƒ“ესáƒáƒª áƒáƒ˜áƒ áƒ©áƒ”ვთ შეცდáƒáƒ›áƒ˜áƒ¡ შემცველ ჩáƒáƒœáƒáƒ¬áƒ”რს.შეცდáƒáƒ›áƒ ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡áƒáƒ¡áƒ¨áƒ”ცდáƒáƒ›áƒ ფáƒáƒ˜áƒšáƒ˜áƒ¡ შენáƒáƒ®áƒ•ისáƒáƒ¡XLIFF ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¢áƒ•ირთვის შეცდáƒáƒ›áƒ: %sშეცდáƒáƒ›áƒ: შეცდáƒáƒ›áƒ”ბიყველáƒáƒ¤áƒ”რიზუსტი დáƒáƒ›áƒ—ხვევები თმ-დáƒáƒœáƒáƒ›áƒáƒ¦áƒ”ბული ბილიკებიTMX-ში გáƒáƒ¢áƒáƒœáƒâ€¦áƒ’áƒáƒ¢áƒáƒœáƒ რáƒáƒ’áƒáƒ áƒªâ€¦áƒ’áƒáƒ¢áƒáƒœáƒ HTML-ში…TMX-ში გáƒáƒ¢áƒáƒœáƒâ€¦áƒ’áƒáƒ¢áƒáƒœáƒ HTML-შითáƒáƒ áƒ’მáƒáƒœáƒ”ბის გáƒáƒ¢áƒáƒœáƒâ€¦áƒ¬áƒ§áƒáƒ áƒáƒ“áƒáƒœ áƒáƒ›áƒáƒ¦áƒ”ბáƒáƒ¨áƒ”მდეგი ფáƒáƒšáƒ“ერებში წყáƒáƒ áƒ-ფáƒáƒ˜áƒšáƒ”ბიდáƒáƒœ ტექსტის áƒáƒ›áƒáƒ¦áƒ”ბáƒ:მიმდინáƒáƒ áƒ”áƒáƒ‘ს სáƒáƒ—áƒáƒ áƒ’მნი ფრáƒáƒ–ების áƒáƒ›áƒáƒ¦áƒ”ბრ%s ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœâ€¦áƒ›áƒ˜áƒ›áƒ“ინáƒáƒ áƒ”áƒáƒ‘ს სáƒáƒ—áƒáƒ áƒ’მნი ფრáƒáƒ–ების áƒáƒ›áƒáƒ¦áƒ”ბრ%s ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœâ€¦áƒ”ქსტრáƒáƒ¥áƒ¢áƒáƒ áƒ˜áƒ¡ მáƒáƒ áƒ’ებáƒáƒ”ქსტრáƒáƒ¥áƒ¢áƒáƒ áƒ”ბივერ მáƒáƒ®áƒ”რხდრPoedit-ის პრáƒáƒªáƒ”სთáƒáƒœ დáƒáƒ™áƒáƒ•შირებáƒ.კáƒáƒ“იდáƒáƒœ სტრიქáƒáƒœáƒ”ბის áƒáƒ›áƒáƒ¦áƒ”ბრჩáƒáƒ•áƒáƒ áƒ“áƒ.ვერ მáƒáƒ®áƒ”რხდრფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¢áƒ•ირთვრáƒáƒ›áƒáƒ¦áƒ”ბული თáƒáƒ áƒ’მáƒáƒœáƒ”ბით.'gettext' კáƒáƒ¢áƒáƒšáƒáƒ’ების შერწყმრჩáƒáƒ•áƒáƒ áƒ“áƒ.თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერების გáƒáƒœáƒáƒ®áƒšáƒ”ბის შეცდáƒáƒ›áƒ: %sფáƒáƒ˜áƒšáƒ˜áƒ¤áƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒ შეუძლებელიáƒáƒ¤áƒáƒ˜áƒšáƒ˜ "%s" áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს.ფáƒáƒ˜áƒšáƒ˜ “%s†áƒáƒ  áƒáƒ áƒ˜áƒ¡ თáƒáƒ áƒ’მნის ფáƒáƒ˜áƒšáƒ˜.ფáƒáƒ˜áƒšáƒ˜ “%s†áƒáƒ áƒ˜áƒ¡ მხáƒáƒšáƒáƒ“ წáƒáƒ™áƒ˜áƒ—ხვáƒáƒ“ი დრმისი შენáƒáƒ®áƒ•რშეუძლებელიáƒ. გთხáƒáƒ•თ, შეინáƒáƒ®áƒáƒ— სხვრსáƒáƒ®áƒ”ლით.ძებნáƒáƒ›áƒáƒ›áƒ“ევნáƒáƒ¡ მáƒáƒ«áƒ”ბნáƒáƒ¬áƒ˜áƒœáƒáƒœáƒ“ელის ძიებáƒáƒ«áƒ”ბნრდრშეცვლáƒâ€¦áƒ¨áƒ”ნიშვნებში ძიებáƒáƒ¬áƒ§áƒáƒ áƒáƒ¡ ტექსტში ძებნáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ¨áƒ˜ ძებნáƒáƒ›áƒáƒ›áƒ“ევნáƒáƒ¡ მáƒáƒ«áƒ”ბნáƒáƒ¬áƒ˜áƒœáƒáƒœáƒ“ელის ძიებáƒáƒ”ნის გáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒáƒ”ნის გáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒáƒ°áƒ”დერის გáƒáƒ›áƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒáƒ°áƒ”დერის გáƒáƒ›áƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒFlutter თáƒáƒ áƒ’მნის ფáƒáƒ˜áƒšáƒ”ბი%i-დáƒáƒœáƒ¤áƒáƒ áƒ›áƒ %i (áƒáƒ  გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნებáƒ)GNU gettextსáƒáƒ”რთáƒHTML ფáƒáƒ˜áƒšáƒ”ბიდáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒáƒ’ვერდითრზáƒáƒšáƒ˜áƒ¡ დáƒáƒ›áƒáƒšáƒ•áƒáƒ›áƒ“გáƒáƒ›áƒáƒ áƒ”áƒáƒ‘ის ზáƒáƒšáƒ˜áƒ¡ დáƒáƒ›áƒáƒšáƒ•áƒáƒ“áƒáƒ›áƒáƒšáƒ” ეს შეტყáƒáƒ‘ინებáƒáƒ áƒáƒ’áƒáƒ  მუშáƒáƒáƒ‘ს ღრუბლáƒáƒ•áƒáƒœáƒ˜ სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ?IDთუ გáƒáƒ¬áƒ›áƒ”ნდáƒáƒ¡ გáƒáƒáƒ’რძელებთ, სáƒáƒ›áƒ£áƒ“áƒáƒ›áƒáƒ“ წáƒáƒ˜áƒ¨áƒšáƒ”ბრყველრის თáƒáƒ áƒ’მáƒáƒœáƒ˜, რáƒáƒ›áƒšáƒ”ბიც áƒáƒ¦áƒáƒ  გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნებáƒ. მáƒáƒ›áƒáƒ•áƒáƒšáƒ¨áƒ˜ მáƒáƒ—ი ხელáƒáƒ®áƒšáƒ თáƒáƒ áƒ’მნრმáƒáƒ’იწევთ, თუ კáƒáƒ¢áƒáƒšáƒáƒ’ს კვლáƒáƒ• დáƒáƒ”მáƒáƒ¢áƒ”ბáƒ.თუ თქვენ შეზღუდეთ წვდáƒáƒ›áƒ თქვენს ფáƒáƒ˜áƒšáƒ”ბზე, შეგიძლიáƒáƒ— წვდáƒáƒ›áƒ˜áƒ¡ მიცემრსისტემის პáƒáƒ áƒáƒ›áƒ”ტრებში > უსáƒáƒ¤áƒ áƒ—ხáƒáƒ”ბრ& კáƒáƒœáƒ¤áƒ˜áƒ“ენციáƒáƒšáƒ£áƒ áƒáƒ‘რ> კáƒáƒœáƒ¤áƒ˜áƒ“ენციáƒáƒšáƒ£áƒ áƒáƒ‘რ> ფáƒáƒ˜áƒšáƒ”ბი & სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეები.თუ თქვენ შეზღუდეთ წვდáƒáƒ›áƒ თქვენს ფáƒáƒ˜áƒšáƒ”ბზე, შეგიძლიáƒáƒ— წვდáƒáƒ›áƒ˜áƒ¡ მიცემრსისტემის პáƒáƒ áƒáƒ›áƒ”ტრებში > კáƒáƒœáƒ¤áƒ˜áƒ“ენციáƒáƒšáƒ£áƒ áƒáƒ‘რ& უსáƒáƒ¤áƒ áƒ—ხáƒáƒ”ბრ> ფáƒáƒ˜áƒšáƒ”ბი & სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეები.იგნáƒáƒ áƒ˜áƒ áƒ”ბáƒáƒ áƒ”გისტრის გáƒáƒ›áƒáƒ¢áƒáƒ•ებáƒTMX-დáƒáƒœ შემáƒáƒ¢áƒáƒœáƒâ€¦áƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ”ბის შემáƒáƒ¢áƒáƒœáƒâ€¦TMX-დáƒáƒœ შემáƒáƒ¢áƒáƒœáƒâ€¦áƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ”ბის შემáƒáƒ¢áƒáƒœáƒâ€¦áƒ¨áƒ”მáƒáƒ¢áƒáƒœáƒ "%s"-დáƒáƒœâ€¦áƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერების შემáƒáƒ¢áƒáƒœáƒ ჩáƒáƒ•áƒáƒ áƒ“áƒ.თáƒáƒ áƒ’მáƒáƒœáƒ”ბის შემáƒáƒ¢áƒáƒœáƒâ€¦%s -შიბეტრვერსიების ჩáƒáƒ—ვლითáƒáƒ áƒáƒ›áƒ“გრáƒáƒ“ი რეგისტრიშეუთáƒáƒœáƒ®áƒ›áƒ”ბელი ჰáƒáƒ áƒ”ებიინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ მთáƒáƒ áƒ’მნელის შესáƒáƒ®áƒ”ბდáƒáƒ§áƒ”ნებáƒáƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒ˜áƒšáƒ˜áƒ˜áƒœáƒ•áƒáƒ™áƒáƒªáƒ˜áƒ:პრáƒáƒ‘ლემáƒáƒžáƒ áƒáƒ‘ლემებიJSON თáƒáƒ áƒ’მნის ფáƒáƒ˜áƒšáƒ”ბიშენáƒáƒ áƒ©áƒ£áƒœáƒ”ბáƒáƒ”ნის სáƒáƒ®áƒ”ლი áƒáƒœ კáƒáƒ“ითáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ენრáƒáƒ  áƒáƒ áƒ˜áƒ¡ დáƒáƒ§áƒ”ნებული.თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ენáƒ:ენის áƒáƒ áƒ©áƒ”ვáƒáƒ›áƒ—áƒáƒ áƒ’მნელი გუნდი:ენáƒ:ბáƒáƒšáƒ ცვლილებáƒáƒ¨áƒ”იტყვეთ მეტი gettext-ის სáƒáƒ™áƒ•áƒáƒœáƒ«áƒ სიტყვების შესáƒáƒ®áƒ”ბდáƒáƒ›áƒáƒ¢áƒ”ბითი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ მრáƒáƒ•ლáƒáƒ‘ითის ფáƒáƒ áƒ›áƒ”ბთáƒáƒœ დáƒáƒ™áƒáƒ•შირებითდáƒáƒ›áƒáƒ¢áƒ”ბითი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒáƒ¨áƒ”იტყვეთ მეტი %s-ის შესáƒáƒ®áƒ”ბშეიტყვეთ მეტი Crowdin-ის შესáƒáƒ®áƒ”ბშეიტყვეთ მეტი GNU gettext-ის შესáƒáƒ®áƒ”ბხáƒáƒ–ი“%2$s†ფáƒáƒ˜áƒšáƒ˜áƒ¡ %1$d ხáƒáƒ–ი დáƒáƒ–იáƒáƒœáƒ”ბულირ(მáƒáƒœáƒáƒªáƒ”მი %3$s áƒáƒ  áƒáƒ áƒ˜áƒ¡ ვáƒáƒšáƒ˜áƒ“ური).სტრიქáƒáƒœáƒ˜áƒ¡ დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბის სიმბáƒáƒšáƒ:გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბების სირწერტილ-მძიმეებით გáƒáƒ›áƒáƒ§áƒáƒ¤áƒ˜áƒšáƒ˜ (მáƒáƒ’. *.cpp;*.h):ინგლისურის ჩáƒáƒ¢áƒ•ირთვáƒLocalazy áƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ˜áƒ–ებული ლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ პლáƒáƒ¢áƒ¤áƒáƒ áƒ›áƒáƒ, რáƒáƒ›áƒ”ლიც ყველáƒáƒ¡ áƒáƒ«áƒšáƒ”ვს სáƒáƒ¨áƒ£áƒáƒšáƒ”ბáƒáƒ¡, თáƒáƒ•ისი პრáƒáƒ“უქტი დრშემცველáƒáƒ‘რსხვáƒáƒ“áƒáƒ¡áƒ®áƒ•რენáƒáƒ–ე áƒáƒ“ვილáƒáƒ“ თáƒáƒ áƒ’მნáƒáƒ¡.MO ფáƒáƒ˜áƒšáƒ”ბის Poedit-ში ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბრშეუძლებელიáƒ.პáƒáƒ¢áƒáƒ áƒ áƒáƒ¡áƒáƒ”ბში გáƒáƒ“áƒáƒ§áƒ•áƒáƒœáƒáƒ“იდ áƒáƒ¡áƒáƒ”ბში გáƒáƒ“áƒáƒ§áƒ•áƒáƒœáƒáƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ჰედერი: "%s"áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ”ბის მáƒáƒ áƒ—ვáƒáƒ›áƒáƒ áƒ—ვáƒâ€¦áƒ’áƒáƒœáƒ¡áƒ®áƒ•áƒáƒ•ებების შერწყმáƒâ€¦áƒ©áƒáƒ™áƒ”ცვáƒáƒ¡áƒáƒ®áƒ”ლი:შემ&დეგი დáƒáƒ£áƒ¡áƒ áƒ£áƒšáƒ”ბელიშემ&დეგი დáƒáƒ£áƒ¡áƒ áƒ£áƒšáƒ”ბელისáƒáƒ­áƒ˜áƒ áƒáƒ”ბს დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒ¡áƒ¡áƒáƒ­áƒ˜áƒ áƒáƒ”ბს დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒ¡áƒ¥áƒ¡áƒ”ლის შეცდáƒáƒ›áƒ: %s (%d)áƒáƒ áƒáƒ¡áƒáƒ“ეს გáƒáƒáƒ¥áƒ¢áƒ˜áƒ£áƒ áƒ“ეს სáƒáƒ—áƒáƒ áƒ’მნი ტექსტების სáƒáƒ áƒ™áƒ›áƒ”ლი. თუ áƒáƒ› ფუნქციáƒáƒ¡ ჩáƒáƒ áƒ—áƒáƒ•თ, Ctrl+ისრების სáƒáƒ¨áƒ£áƒáƒšáƒ”ბით შეგეძლებáƒáƒ— ტექსტებს შáƒáƒ áƒ˜áƒ¡ ნáƒáƒ•იგáƒáƒªáƒ˜áƒ, მáƒáƒ’რáƒáƒ› ტექსტის შეყვáƒáƒœáƒ პირდáƒáƒžáƒ˜áƒ  იქნებრშესáƒáƒ«áƒšáƒ”ბელი, შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒáƒ“ ტექსტის ჩáƒáƒ¡áƒáƒ¬áƒ”რáƒáƒ“ Tab ღილáƒáƒ™áƒ–ე ხელის დáƒáƒ­áƒ”რრáƒáƒ¦áƒáƒ  მáƒáƒ’იწევთ.áƒáƒ®áƒáƒšáƒ˜áƒáƒ®áƒáƒšáƒ˜ &POT/PO ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœâ€¦áƒáƒ®áƒáƒšáƒ˜ სტრიქáƒáƒœáƒ”ბიáƒáƒ®áƒáƒšáƒ˜ &POT/PO ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœâ€¦áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებებიáƒáƒ®áƒáƒšáƒ˜ სტრიქáƒáƒœáƒ”ბი სáƒáƒ—áƒáƒ áƒ’მნáƒáƒ“:შემდეგი მრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒáƒ¨áƒ”მდეგი მრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒáƒáƒ áƒáƒáƒ áƒáƒ¤áƒ”რი მáƒáƒ˜áƒ«áƒ”ბნáƒáƒ¬áƒ˜áƒœáƒáƒ¡áƒ¬áƒáƒ -თáƒáƒ áƒ’მნáƒáƒ“ი ჩáƒáƒœáƒáƒ¬áƒ”რები áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილი áƒáƒ áƒáƒ.áƒáƒ áƒáƒ¤áƒ”რი მáƒáƒ˜áƒ«áƒ”ბნáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ¨áƒ˜ შეცდáƒáƒ›áƒ”ბი ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ.თქვენს áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¨áƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ პრáƒáƒ”ქტები áƒáƒ  áƒáƒ áƒ˜áƒ¡.გáƒáƒ›áƒáƒ§áƒ”ნების მáƒáƒœáƒáƒªáƒ”მები áƒáƒ áƒáƒáƒ§áƒ•ელრმრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ გáƒáƒ“áƒáƒ áƒ—áƒáƒ áƒ’მნილი áƒáƒ áƒáƒ.áƒáƒ  ხáƒáƒ áƒ— áƒáƒ•ტáƒáƒ áƒ˜áƒ–ებული. გთხáƒáƒ•თ, ხელáƒáƒ®áƒšáƒ გáƒáƒ˜áƒáƒ áƒáƒ— áƒáƒ•ტáƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ.შენიშვნები მთáƒáƒ áƒ’მნელებისთვისკáƒáƒ áƒ’იერთიმხáƒáƒšáƒáƒ“ ზუსტი მნიშვნელáƒáƒ‘ებით შევსებáƒáƒ¦áƒ áƒ£áƒ‘ლáƒáƒ•áƒáƒœáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒâ€¦áƒ‘áƒáƒšáƒáƒ¡ გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბის გáƒáƒ®áƒ¡áƒœáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ”ბის გáƒáƒ®áƒ¡áƒœáƒ დრჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ.ღრუბლáƒáƒ•áƒáƒœáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒáƒ¦áƒ áƒ£áƒ‘ლáƒáƒ•áƒáƒœáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒâ€¦áƒ¤áƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒáƒ áƒ”დáƒáƒ¥áƒ¢áƒáƒ áƒ¨áƒ˜ გáƒáƒ®áƒ¡áƒœáƒáƒ áƒ”დáƒáƒ¥áƒ¢áƒáƒ áƒ¨áƒ˜ გáƒáƒ®áƒ¡áƒœáƒáƒ‘áƒáƒšáƒáƒ¡ გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბის გáƒáƒ®áƒ¡áƒœáƒáƒ›áƒ˜áƒ›áƒáƒ áƒ—ვების ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒáƒ’áƒáƒ®áƒ¡áƒœáƒ...გáƒáƒ®áƒ¡áƒœáƒâ€¦áƒžáƒáƒ áƒáƒ›áƒ”ტრებისხვáƒáƒ¬&ინრდáƒáƒ£áƒ¡áƒ áƒ£áƒšáƒ”ბელიწ&ინრდáƒáƒ£áƒ¡áƒ áƒ£áƒšáƒ”ბელიPO თáƒáƒ áƒ’მნის ფáƒáƒ˜áƒšáƒ”ბიPOT თáƒáƒ áƒ’მნის შáƒáƒ‘ლáƒáƒœáƒ”ბიჩáƒáƒ¡áƒ›áƒáƒ™áƒáƒžáƒ˜áƒ áƒ”ბისრდრჩáƒáƒ¡áƒ›áƒ˜áƒ¡ სტილიმდებáƒáƒ áƒ”áƒáƒ‘ებინებáƒáƒ áƒ—ვრუáƒáƒ áƒ§áƒáƒ¤áƒ˜áƒšáƒ˜áƒ.áƒáƒ“გილმჭერების სისწáƒáƒ áƒ”გთხáƒáƒ•თ, MO ფáƒáƒ˜áƒšáƒ˜áƒ¡ ნáƒáƒªáƒ•ლáƒáƒ“, გáƒáƒ®áƒ¡áƒ”ნით დრდáƒáƒáƒ áƒ”დáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”თ შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒ˜ PO ფáƒáƒ˜áƒšáƒ˜. რáƒáƒ“ესáƒáƒª PO ფáƒáƒ˜áƒšáƒ¡ შეინáƒáƒ®áƒáƒ•თ, MO ფáƒáƒ˜áƒšáƒ˜áƒª გáƒáƒœáƒáƒ®áƒšáƒ“ებáƒ.მრáƒáƒ•ლáƒáƒ‘ითიმრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ˜áƒ¡ თáƒáƒ áƒ’მáƒáƒœáƒ”ბიმრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ”ბი:PoeditPoedit - კáƒáƒ¢áƒáƒšáƒáƒ’ების მენეჯერიPoedit-მრáƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ გáƒáƒáƒ¡áƒ¬áƒáƒ áƒ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ შინáƒáƒáƒ áƒ¡áƒ˜ “%s†ფáƒáƒ˜áƒšáƒ¨áƒ˜.Poedit áƒáƒ áƒ˜áƒ¡ მáƒáƒ áƒ¢áƒ˜áƒ•ი გáƒáƒ›áƒáƒ¡áƒáƒ§áƒ”ნებელი თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ რედáƒáƒ¥áƒ¢áƒáƒ áƒ˜.წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ &თáƒáƒ áƒ’მáƒáƒœáƒ˜â€¦áƒ¬áƒ˜áƒœáƒáƒ¡áƒ¬áƒáƒ áƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¬áƒ˜áƒœáƒáƒ¡áƒ¬áƒáƒ áƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒžáƒ áƒ”-ნáƒáƒ—áƒáƒ áƒ’მნირ%u სტრიქáƒáƒœáƒ˜áƒžáƒ áƒ”-ნáƒáƒ—áƒáƒ áƒ’მნირ%u სტრიქáƒáƒœáƒ˜áƒ¬áƒ˜áƒœáƒáƒ¡áƒ¬áƒáƒ áƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერებიდáƒáƒœâ€¦áƒ¬áƒ˜áƒœáƒáƒ¡áƒ¬áƒáƒ áƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜â€¦áƒ¬áƒ˜áƒœáƒáƒ¡áƒ¬áƒáƒ  თáƒáƒ áƒ’მáƒáƒœáƒ¡ სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ტექსტი სჭირდებáƒ. ის áƒáƒ  მუშáƒáƒáƒ‘ს, თუ გáƒáƒ›áƒáƒ§áƒ”ნებულირმხáƒáƒšáƒáƒ“ ID-ები, ტექსტის გáƒáƒ áƒ”შე.პáƒáƒ áƒáƒ›áƒ”ტრებიპáƒáƒ áƒáƒ›áƒ”ტრები...პáƒáƒ áƒáƒ›áƒ”ტრები…სტრიქáƒáƒœáƒ”ბის მáƒáƒ›áƒ–áƒáƒ“ებáƒâ€¦áƒáƒ áƒ¡áƒ”ბული ფáƒáƒ˜áƒšáƒ”ბის ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ áƒ”ბის შენáƒáƒ áƒ©áƒ£áƒœáƒ”ბáƒáƒ¬áƒ˜áƒœáƒ მრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒáƒ¬áƒ˜áƒœáƒ მრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒáƒ¬áƒ˜áƒœáƒ წყáƒáƒ áƒáƒ¡ ტექსტიწáƒáƒ áƒ¡áƒ£áƒšáƒ¨áƒ˜ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბულზეწáƒáƒ áƒ¡áƒ£áƒšáƒ¨áƒ˜ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბულზეპრáƒáƒ”ქტის სáƒáƒ®áƒ”ლი დრვერსიáƒ:პრáƒáƒ”ქტის სáƒáƒ®áƒ”ლი:პრáƒáƒ”ქტი:პრáƒáƒ”ქტებიპუნქტუáƒáƒªáƒ˜áƒ˜áƒ¡ შემáƒáƒ¬áƒ›áƒ”ბáƒáƒ’áƒáƒ¬áƒ›áƒ”ნდáƒáƒ¬áƒáƒ¨áƒšáƒ˜áƒšáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ”ბისგáƒáƒœ გáƒáƒ¬áƒ›áƒ”ნდáƒáƒ’áƒáƒ¡áƒ•ლáƒáƒ¤áƒáƒ˜áƒšáƒ˜áƒ¡ შიგთáƒáƒ•სის წáƒáƒ™áƒ˜áƒ—ხვრდáƒáƒ¡áƒ áƒ£áƒšáƒ“რშემდეგი შეცდáƒáƒ›áƒ˜áƒ—: %sუკáƒáƒœáƒáƒ¡áƒ™áƒœáƒ”ლი ფáƒáƒ˜áƒšáƒ”ბის სიáƒáƒáƒ¦áƒ“გენáƒáƒ’áƒáƒœáƒáƒ®áƒšáƒ”ბáƒáƒ¤áƒáƒ˜áƒšáƒ˜áƒ¡ ხელáƒáƒ®áƒšáƒ ჩáƒáƒ¢áƒ•ირთვáƒáƒ¤áƒáƒ˜áƒšáƒ˜áƒ¡ თáƒáƒ•იდáƒáƒœ ჩáƒáƒ¢áƒ•ირთვáƒáƒ“áƒáƒ áƒ©áƒ”ნილიáƒ: %dწáƒáƒ¨áƒšáƒáƒ¬áƒáƒ¨áƒšáƒ˜áƒšáƒ˜ სტრიქáƒáƒœáƒ”ბიწáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ სტრიქáƒáƒœáƒ”ბიწáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ სტრიქáƒáƒœáƒ”ბი (áƒáƒ¦áƒáƒ  გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნებáƒ):ჩáƒáƒœáƒáƒªáƒ•ლებáƒáƒ§áƒ•ელáƒáƒ¡ &ჩáƒáƒœáƒáƒªáƒ•ლებáƒáƒ§áƒ•ელáƒáƒ¡ &ჩáƒáƒœáƒáƒªáƒ•ლებáƒáƒ©áƒáƒ¡áƒáƒœáƒáƒªáƒ•ლებელი სტრიქáƒáƒœáƒ˜áƒ©áƒáƒœáƒáƒªáƒ•ლებáƒâ€¦áƒ¤áƒáƒ˜áƒšáƒ¡ áƒáƒ™áƒšáƒ˜áƒ áƒáƒ£áƒªáƒ˜áƒšáƒ”ბელი ჰედერი მრáƒáƒ•ლáƒáƒ‘ითის ფáƒáƒ áƒ›áƒ”ბთáƒáƒœ (Plural-Forms) დáƒáƒ™áƒáƒ•შირებით.გáƒáƒ“áƒáƒ¢áƒ•ირთვáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერების ჩáƒáƒ›áƒáƒ§áƒ áƒáƒ¡áƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეში ჩვენებáƒáƒ’áƒáƒ“áƒáƒ®áƒ”დვáƒáƒ¨áƒ”ნáƒáƒ®áƒ•áƒáƒ¨áƒ”ნáƒáƒ®áƒ•რრáƒáƒ’áƒáƒ áƒªâ€¦áƒ¨áƒ”ნáƒáƒ®áƒ•რრáƒáƒ’áƒáƒ áƒªâ€¦áƒ¨áƒ”ინáƒáƒ®áƒ” მáƒáƒ˜áƒœáƒªáƒ¨áƒ”ინáƒáƒ®áƒ” მáƒáƒ˜áƒœáƒªáƒ¨áƒ”ნáƒáƒ®áƒ•რრáƒáƒ’áƒáƒ áƒªáƒ¨áƒ”ნáƒáƒ®áƒ•რრáƒáƒ’áƒáƒ áƒªâ€¦áƒªáƒ•ლილებების შენáƒáƒ®áƒ•áƒáƒ¤áƒáƒ˜áƒšáƒ˜áƒ¡ შენáƒáƒ®áƒ•áƒáƒ¡áƒ®áƒ•რáƒáƒ“გილáƒáƒ¡ შენáƒáƒ®áƒ•რXCLOC ფáƒáƒ˜áƒšáƒ”ბისთვის მხáƒáƒ áƒ“áƒáƒ­áƒ”რილი áƒáƒ áƒáƒ.ეკრáƒáƒœáƒ˜áƒ¡ áƒáƒœáƒáƒ‘ეჭდები:ყველáƒáƒ¡ &მáƒáƒœáƒ˜áƒ¨áƒ•ნáƒáƒ§áƒ•ელáƒáƒ¡ მáƒáƒœáƒ˜áƒ¨áƒ•ნáƒáƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ შემáƒáƒ¡áƒáƒ¢áƒáƒœáƒ˜ TMX ფáƒáƒ˜áƒšáƒ”ბიუჯრის áƒáƒ›áƒáƒ áƒ©áƒ”ვáƒáƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ˜áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ შემáƒáƒ¡áƒáƒ¢áƒáƒœáƒ˜ სáƒáƒ—áƒáƒ áƒ’მნი ფáƒáƒ˜áƒšáƒ”ბიáƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ შáƒáƒ‘ლáƒáƒœáƒ˜áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ თქვენთვის სáƒáƒ¡áƒ£áƒ áƒ•ელი ენáƒáƒ”ნის áƒáƒ áƒ©áƒ”ვáƒáƒ”ნის áƒáƒ áƒ©áƒ”ვáƒáƒ›áƒáƒ áƒ’ებáƒáƒ›áƒáƒ áƒ’ებáƒâ€¦áƒ’ვერდითრზáƒáƒšáƒ˜áƒ¡ ჩვენებáƒáƒ›áƒáƒ áƒ—ლწერისრდრგრáƒáƒ›áƒáƒ¢áƒ˜áƒ™áƒ˜áƒ¡ ჩვენებáƒáƒ›áƒ“გáƒáƒ›áƒáƒ áƒ”áƒáƒ‘ის ზáƒáƒšáƒ˜áƒ¡ ჩვენებáƒáƒ¡áƒ¢áƒ áƒ˜áƒ¥áƒáƒœáƒ˜áƒ¡ &ID-ის ჩვენებáƒáƒ¨áƒ”ნáƒáƒªáƒ•ლებების ჩვენებáƒáƒžáƒáƒœáƒ”ლის ჩვენებáƒáƒ’áƒáƒ¤áƒ áƒ—ხილების ჩვენებáƒáƒ”ქსპლáƒáƒ áƒ”რში ჩვენებáƒáƒ¡áƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეში ჩვენებáƒáƒ®áƒ”ლსáƒáƒ¬áƒ§áƒáƒ—რპáƒáƒœáƒ”ლის ხილვáƒáƒ“áƒáƒ‘ის ჩáƒáƒ áƒ—/გáƒáƒ›áƒáƒ áƒ—გვერდითრზáƒáƒšáƒ˜áƒ¡ ჩვენებáƒáƒ›áƒ“გáƒáƒ›áƒáƒ áƒ”áƒáƒ‘ის ზáƒáƒšáƒ˜áƒ¡ ჩვენებáƒáƒ¡áƒ¢áƒ áƒ˜áƒ¥áƒáƒœáƒ˜áƒ¡ &ID-ის ჩვენებáƒáƒ’áƒáƒ¤áƒ áƒ—ხილების ჩვენებáƒáƒ’ვერდითრზáƒáƒšáƒ˜áƒ¨áƒ”სვლáƒáƒ’áƒáƒ›áƒáƒ¡áƒ•ლáƒáƒ¨áƒ”სვლáƒáƒ¨áƒ”დით %s-შიგáƒáƒ˜áƒáƒ áƒ”თ áƒáƒ•ტáƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ ღრუბლáƒáƒ•áƒáƒœ áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¨áƒ˜áƒ¨áƒ”დით Crowdin-შიგáƒáƒ˜áƒáƒ áƒ”თ áƒáƒ•ტáƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ ღრუბლáƒáƒ•áƒáƒœ áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¨áƒ˜áƒ’áƒáƒ›áƒáƒ¡áƒ•ლáƒáƒ›áƒ®áƒáƒšáƒáƒ‘ითშიჭკვიáƒáƒœáƒ˜ კáƒáƒžáƒ˜áƒ áƒ”ბáƒ/ჩáƒáƒ¡áƒ›áƒáƒ­áƒ™áƒ•იáƒáƒœáƒ˜ ტირეებიჭკვიáƒáƒœáƒ˜ ბმულებიჭკვიáƒáƒœáƒ˜ ბრჭყáƒáƒšáƒ”ბი&ფáƒáƒ˜áƒšáƒ˜áƒ¡ წყáƒáƒ‘ით დáƒáƒšáƒáƒ’ებáƒ&წყáƒáƒ áƒáƒ—ი დáƒáƒšáƒáƒ’ებáƒáƒ—&áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მიხედვით დáƒáƒšáƒáƒ’ებáƒ&ფáƒáƒ˜áƒšáƒ˜áƒ¡ წყáƒáƒ‘ით დáƒáƒšáƒáƒ’ებáƒ&წყáƒáƒ áƒáƒ—ი დáƒáƒšáƒáƒ’ებáƒáƒ—&áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მიხედვით დáƒáƒšáƒáƒ’ებáƒáƒžáƒ áƒáƒ’რ. წყáƒáƒ áƒáƒ¡ კáƒáƒ“ირებáƒ:წყáƒáƒ áƒáƒ¡ კáƒáƒ“ი მიუწვდáƒáƒ›áƒ”ლიáƒ.წყáƒáƒ áƒáƒ¡ კáƒáƒ“ი ნáƒáƒžáƒáƒ•ნი áƒáƒ áƒáƒáƒ¬áƒ§áƒáƒ áƒáƒ¡ ტექსტიწყáƒáƒ áƒáƒ¡ ტექსტის IDწყáƒáƒ áƒáƒ¡ ტექსტი - %sწყáƒáƒ áƒáƒ¡ სáƒáƒ™áƒ•áƒáƒœáƒ«áƒ სიტყვებიწყáƒáƒ áƒáƒ¡ მდებáƒáƒ áƒ”áƒáƒ‘ებიწყáƒáƒ áƒáƒ¡ სáƒáƒ™áƒ•áƒáƒœáƒ«áƒ სიტყვებიწყáƒáƒ áƒáƒ¡ მდებáƒáƒ áƒ”áƒáƒ‘ებისáƒáƒ£áƒ‘áƒáƒ áƒ˜áƒ›áƒáƒ áƒ—ლწერის შემáƒáƒ¬áƒ›áƒ”ბრგáƒáƒ›áƒáƒ áƒ—ულიáƒ, რáƒáƒ“გáƒáƒœ %s-ისთვის ლექსიკáƒáƒœáƒ˜ áƒáƒ  áƒáƒ áƒ˜áƒ¡ დáƒáƒ§áƒ”ნებული.მáƒáƒ áƒ—ლწერრდრგრáƒáƒ›áƒáƒ¢áƒ˜áƒ™áƒáƒšáƒáƒžáƒáƒ áƒáƒ™áƒ˜áƒ¡ დáƒáƒ¬áƒ§áƒ”ბáƒáƒšáƒáƒžáƒáƒ áƒáƒ™áƒ˜áƒ¡ დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბáƒáƒ“áƒáƒ›áƒáƒ®áƒ¡áƒáƒ•რებული თáƒáƒ áƒ’მáƒáƒœáƒ”ბი:სტრიქáƒáƒœáƒ˜áƒ¡ კáƒáƒœáƒ¢áƒ”ქსტი: %sსტრიქáƒáƒœáƒ˜áƒ¡ იდენტიფიკáƒáƒ¢áƒáƒ áƒ˜: %sსტრიქáƒáƒœáƒ¨áƒ˜ სიმბáƒáƒšáƒáƒ”ბის რáƒáƒáƒ“ენáƒáƒ‘áƒáƒ¡áƒáƒ«áƒ˜áƒ”ბელი ტექსტისტრიქáƒáƒœáƒ”ბზე დáƒáƒ¤áƒ£áƒ«áƒœáƒ”ბული Crowdin-ის პრáƒáƒ”ქტები მხáƒáƒ áƒ“áƒáƒ­áƒ”რილი áƒáƒ áƒáƒ.შენáƒáƒªáƒ•ლებებირჩევებისინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒCrowdin-თáƒáƒœ სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡áƒ˜áƒœáƒ¥áƒ áƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡áƒ˜áƒœáƒ¥áƒ áƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ შეცდáƒáƒ›áƒCrowdin-თáƒáƒœ სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ ვერ მáƒáƒ®áƒ”რხდáƒ.სინტáƒáƒ¥áƒ¡áƒ£áƒ áƒ˜ შეცდáƒáƒ›áƒ Plural-Forms ჰედერის ჩáƒáƒœáƒáƒ¬áƒ”რში ("%s").TMTMX ფáƒáƒ˜áƒšáƒ”ბიგუნდის სáƒáƒ®áƒ”ლი დრელფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒœ ბმულიტექსტის ჩáƒáƒœáƒáƒªáƒ•ლებáƒTMX ფáƒáƒ˜áƒšáƒ˜ დáƒáƒ–იáƒáƒœáƒ”ბულიáƒ.თუ შეინáƒáƒ®áƒáƒ•თ, სხვრáƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ მხრიდáƒáƒœ გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლებული ცვლილებები დáƒáƒ˜áƒ™áƒáƒ áƒ’ებáƒ.ფáƒáƒ˜áƒšáƒ˜áƒ¡ MO ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜ დáƒáƒ™áƒáƒ›áƒžáƒ˜áƒšáƒ˜áƒ áƒ”ბრდრგáƒáƒ›áƒáƒ§áƒ”ნებრშეუძლებელიáƒ.ფáƒáƒ˜áƒšáƒ˜áƒ¡ შენáƒáƒ®áƒ•რპáƒáƒ áƒáƒ›áƒ”ტრებში მითითებული “%s†კáƒáƒ“ირებით ვერ მáƒáƒ®áƒ”რხდáƒ. მის ნáƒáƒªáƒ•ლáƒáƒ“, ფáƒáƒ˜áƒšáƒ˜ შენáƒáƒ®áƒ£áƒšáƒ˜áƒ UTF-8 კáƒáƒ“ირებით დრპáƒáƒ áƒáƒ›áƒ”ტრიც შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒáƒ“ შეიცვáƒáƒšáƒ.ფáƒáƒ˜áƒšáƒ˜ შეიცვáƒáƒšáƒ. გსურთ ცვლილებების შენáƒáƒ®áƒ•áƒ?ფáƒáƒ˜áƒšáƒ˜áƒ¡ ფáƒáƒ áƒ›áƒáƒ¢áƒ˜ Poedit-სთვის უცნáƒáƒ‘იáƒ.ფáƒáƒ˜áƒšáƒ˜ დáƒáƒ™áƒáƒ›áƒžáƒ˜áƒšáƒ˜áƒ áƒ”ბულირMO ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜, თუმცრშესáƒáƒ«áƒšáƒáƒ, áƒáƒ  იმუშáƒáƒáƒ¡ სწáƒáƒ áƒáƒ“.ფáƒáƒ˜áƒšáƒ˜ უსáƒáƒ¤áƒ áƒ—ხáƒáƒ“ იქნრშენáƒáƒ®áƒ£áƒšáƒ˜ დრდáƒáƒ™áƒáƒ›áƒžáƒ˜áƒšáƒ˜áƒ áƒ”ბული MO ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜, მáƒáƒ’რáƒáƒ› ის სáƒáƒ•áƒáƒ áƒáƒ£áƒ“áƒáƒ“ áƒáƒ  იმუშáƒáƒ•ებს სწáƒáƒ áƒáƒ“.ფáƒáƒ˜áƒšáƒ˜ წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით იქნრშენáƒáƒ®áƒ£áƒšáƒ˜, თუმცრმისი MO ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜ კáƒáƒ›áƒžáƒ˜áƒšáƒáƒªáƒ˜áƒ დრგáƒáƒ›áƒáƒ§áƒ”ნებრვერ მáƒáƒ®áƒ”რხდáƒ.ფáƒáƒ˜áƒšáƒ˜ უსáƒáƒ¤áƒ áƒ—ხáƒáƒ“ იქნრშენáƒáƒ®áƒ£áƒšáƒ˜.ფáƒáƒ˜áƒšáƒ˜áƒ¡ "%s" გáƒáƒ®áƒ¡áƒœáƒ შეუძლებელიáƒ.ფáƒáƒ˜áƒšáƒ˜áƒ¡ "%s" შენáƒáƒ®áƒ•რშეუძლებელიáƒ.ფáƒáƒ˜áƒšáƒ˜ “%s†შეიცვáƒáƒšáƒ სხვრáƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ მიერ.თáƒáƒ áƒ’მáƒáƒœáƒ˜ გáƒáƒ›áƒáƒ¡áƒáƒ§áƒ”ნებლáƒáƒ“ მზáƒáƒ“áƒáƒ, მáƒáƒ’რáƒáƒ› %d ჩáƒáƒœáƒáƒ¬áƒ”რი ჯერ áƒáƒ  áƒáƒ áƒ˜áƒ¡ ნáƒáƒ—áƒáƒ áƒ’მნი.თáƒáƒ áƒ’მáƒáƒœáƒ˜ გáƒáƒ›áƒáƒ¡áƒáƒ§áƒ”ნებლáƒáƒ“ მზáƒáƒ“áƒáƒ, მáƒáƒ’რáƒáƒ› %d ჩáƒáƒœáƒáƒ¬áƒ”რი ჯერ áƒáƒ  áƒáƒ áƒ˜áƒ¡ ნáƒáƒ—áƒáƒ áƒ’მნი.თáƒáƒ áƒ’მáƒáƒœáƒ˜ გáƒáƒ›áƒáƒ¡áƒáƒ§áƒ”ნებლáƒáƒ“ მზáƒáƒ“ áƒáƒ áƒ˜áƒ¡.ფáƒáƒ˜áƒšáƒ˜áƒ¡ უკეთ ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ áƒ”ბისáƒáƒ¡ პრáƒáƒ‘ლემრშეიქმნრ(თუმცრფáƒáƒ˜áƒšáƒ˜ გáƒáƒ›áƒáƒ áƒ—ულáƒáƒ“ იქნრშენáƒáƒ®áƒ£áƒšáƒ˜).შეცდáƒáƒ›áƒ თáƒáƒ áƒ’მáƒáƒœáƒ”ბის Localazy-ზე áƒáƒ¢áƒ•ირთვისáƒáƒ¡.ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¢áƒ•ირთვისáƒáƒ¡ წáƒáƒ áƒ›áƒáƒ˜áƒ¨áƒ•რშეცდáƒáƒ›áƒ”ბი. შედეგáƒáƒ“, ზáƒáƒ’იერთი მáƒáƒœáƒáƒªáƒ”მი შესáƒáƒ«áƒšáƒáƒ იყáƒáƒ¡ გáƒáƒ›áƒáƒ™áƒšáƒ”ბული áƒáƒœ დáƒáƒ–იáƒáƒœáƒ”ბული.ეს JSON ფáƒáƒ˜áƒšáƒ˜ სáƒáƒ—áƒáƒ áƒ’მნი ფáƒáƒ˜áƒšáƒ˜ áƒáƒ áƒáƒ დრმáƒáƒ¡ Poedit-ით ვერ ჩáƒáƒáƒ¡áƒ¬áƒáƒ áƒ”ბთ.ეს მიემáƒáƒ’რებრბრძáƒáƒœáƒ”ბáƒáƒ—რსტრიქáƒáƒœáƒ¡ მხáƒáƒšáƒáƒ“ მáƒáƒ¨áƒ˜áƒœ თუ წყáƒáƒ áƒáƒ¡ კáƒáƒ“ირებრ(charset) მითითებული იყáƒ. %c ჩáƒáƒœáƒáƒªáƒ•ლდებრკáƒáƒ“ირების სáƒáƒ®áƒ”ლით.ეს მიემáƒáƒ’რებრბრძáƒáƒœáƒ”ბáƒáƒ—რსტრიქáƒáƒœáƒ¡ ყáƒáƒ•ელ შესáƒáƒ§áƒ•áƒáƒœ ფáƒáƒ˜áƒšáƒ–ე. %f გáƒáƒ˜áƒ¨áƒšáƒ”ბრფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ®áƒ”ლáƒáƒ“.ეს ბრძáƒáƒœáƒ”ბáƒáƒ—რსტრიქáƒáƒœáƒ¡ მიემáƒáƒ’რებრერთხელ ყáƒáƒ•ელ სიტყვáƒáƒ–ე. %k იშლებრრáƒáƒ’áƒáƒ áƒª სიტყვáƒ.სულგáƒáƒ áƒ“áƒáƒ¥áƒ›áƒœáƒ”ბიღრუბლáƒáƒ•áƒáƒœáƒ˜ პრáƒáƒ”ქტის თáƒáƒ áƒ’მნáƒáƒœáƒáƒ—áƒáƒ áƒ’მნიáƒ: %d %d-დáƒáƒœ (%d %%)თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ენáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერებáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ¡ &დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებრსჭირდებáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ თვისებებითáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ˜ უკვე გáƒáƒœáƒáƒ®áƒšáƒ”ბულიáƒ. სტრიქáƒáƒœáƒ”ბში გáƒáƒœáƒáƒ®áƒšáƒ”ბრáƒáƒ  მáƒáƒ›áƒ®áƒ“áƒáƒ áƒ.თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ˜ áƒáƒ˜áƒ¢áƒ•ირთრ%s ცვლილებით.თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ˜ áƒáƒ˜áƒ¢áƒ•ირთრ%s ცვლილებით.თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერების შეცდáƒáƒ›áƒ: %s (%d).თáƒáƒ áƒ’მáƒáƒœáƒ¡ &დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებრსჭირდებáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ თვისებებითáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მინიშნებებითáƒáƒ áƒ’მáƒáƒœáƒ˜ - %sწყáƒáƒ áƒáƒ¡ კáƒáƒ“იდáƒáƒœ თáƒáƒ áƒ’მáƒáƒœáƒ”ბის გáƒáƒœáƒáƒ®áƒšáƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ, რáƒáƒ“გáƒáƒœ ფáƒáƒ˜áƒšáƒ˜áƒ¡ თვისებებში მითითებულ áƒáƒ“გილáƒáƒ¡ კáƒáƒ“ი ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ.áƒáƒ áƒ˜UTF-8 (რეკáƒáƒ›áƒ”ნდებულიáƒ)დáƒáƒ‘რუნებáƒáƒ›áƒáƒ£áƒšáƒáƒ“ნელი ნáƒáƒ™áƒšáƒ£áƒšáƒ˜ შემცველáƒáƒ‘რXCLOC ფáƒáƒ˜áƒšáƒ¨áƒ˜.წáƒáƒ áƒ›áƒáƒ˜áƒ¨áƒ•რმáƒáƒ£áƒšáƒáƒ“ნელი გáƒáƒ›áƒáƒœáƒáƒ™áƒšáƒ˜áƒ¡áƒ˜: %sUnix (რეკáƒáƒ›áƒ”ნდებულიáƒ)Crowdin-ის უცნáƒáƒ‘ი შეცდáƒáƒ›áƒ.უცნáƒáƒ‘ი შეცდáƒáƒ›áƒáƒ£áƒ—áƒáƒ áƒ’მნგáƒáƒœáƒáƒ®áƒšáƒ”ბáƒáƒ¨áƒ”ჯáƒáƒ›áƒ”ბის გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒáƒ§áƒ•ელáƒáƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒáƒ’áƒáƒœáƒáƒáƒ®áƒšáƒ” ყველრკáƒáƒ¢áƒáƒšáƒáƒ’ი პრáƒáƒ”ქტში&POT ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒâ€¦&POT ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒâ€¦áƒ™áƒáƒ“იდáƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒPOT-ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒáƒ™áƒáƒ“იდáƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒáƒ¡áƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ კáƒáƒ“იდáƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒáƒ¨áƒ”ჯáƒáƒ›áƒ”ბის გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒáƒ’áƒáƒœáƒáƒ®áƒšáƒ”ბებიგáƒáƒœáƒáƒ®áƒšáƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒáƒžáƒ áƒáƒ”ქტის კáƒáƒ¢áƒáƒšáƒáƒ’ების გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒáƒ›áƒ˜áƒ›áƒ“ინáƒáƒ áƒ”áƒáƒ‘ს თáƒáƒ áƒ’მáƒáƒœáƒ”ბის გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒáƒ›áƒ˜áƒ›áƒ“ინáƒáƒ áƒ”áƒáƒ‘ს მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒâ€¦%s-ზე თáƒáƒ áƒ’მáƒáƒœáƒ”ბის áƒáƒ¢áƒ•ირთვრვერ მáƒáƒ®áƒ”რხდáƒ.მიმდინáƒáƒ áƒ”áƒáƒ‘ს თáƒáƒ áƒ’მáƒáƒœáƒ”ბის áƒáƒ¢áƒ•ირთვრ%s-ზე…მიმდინáƒáƒ áƒ”áƒáƒ‘ს თáƒáƒ áƒ’მáƒáƒœáƒ”ბის áƒáƒ¢áƒ•ირთვáƒâ€¦áƒ’áƒáƒ›áƒáƒ¡áƒáƒ®áƒ£áƒšáƒ”ბის ხელით მითითებáƒáƒ¡áƒ˜áƒ˜áƒ¡ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ხელით მითითებáƒ:ხელით მითითებული ტექსტური ველის ფáƒáƒœáƒ¢áƒ˜:áƒáƒ› ენისთვის ნáƒáƒ’ულისხმები წესების გáƒáƒ›áƒáƒ§áƒ”ნებáƒáƒ¬áƒ§áƒáƒ áƒáƒ¡ ფáƒáƒ˜áƒšáƒ”ბში თáƒáƒ áƒ’მნáƒáƒ“ი სტრიქáƒáƒœáƒ”ბის áƒáƒ›áƒáƒ¡áƒáƒªáƒœáƒáƒ‘áƒáƒ“ áƒáƒ› სáƒáƒ™áƒ•áƒáƒœáƒ«áƒ სიტყვების (ფუნქციáƒáƒ—რსáƒáƒ®áƒ”ლების) გáƒáƒ›áƒáƒ§áƒ”ნებáƒ:თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერების გáƒáƒ›áƒáƒ§áƒ”ნებáƒáƒ•áƒáƒšáƒ˜áƒ“áƒáƒªáƒ˜áƒáƒ•áƒáƒšáƒ˜áƒ“áƒáƒªáƒ˜áƒ˜áƒ¡ შედეგებივერსირ%sდეტáƒáƒšáƒ”ბის ნáƒáƒ®áƒ•áƒâ€¦áƒ“ეტáƒáƒšáƒ”ბის ნáƒáƒ®áƒ•áƒâ€¦áƒáƒ£áƒ—ენთიფიკáƒáƒªáƒ˜áƒ˜áƒ¡ ლáƒáƒ“ინი…გáƒáƒ¤áƒ áƒ—ხილებáƒ: მáƒáƒ’ესáƒáƒšáƒ›áƒ”ბáƒáƒ— Poeditწყáƒáƒ áƒáƒ¡ კáƒáƒ“იდáƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბისáƒáƒ¡áƒ›áƒ®áƒáƒšáƒáƒ“ მთლიáƒáƒœáƒ˜ სიტყვებიფáƒáƒœáƒ¯áƒáƒ áƒWindowsგსურთ გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნáƒáƒ— ინგლისური ენრსáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ტექსტისთვის?სიტყვების გáƒáƒ“áƒáƒ¢áƒáƒœáƒáƒ¡áƒ˜áƒ¢áƒ§áƒ•ების გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒ¡áƒáƒ¡ მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒáƒšáƒ£áƒ áƒ˜ სიგრძე:XLIFF თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ”ბიXcode-ის ლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ კáƒáƒ¢áƒáƒšáƒáƒ’იდიáƒáƒ®áƒ—ქვენ áƒáƒ  შეგიძლიáƒáƒ— ერთზე მეტი ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ’დებრPoedit-ის ფáƒáƒœáƒ¯áƒáƒ áƒáƒ¨áƒ˜.თქვენ áƒáƒ  გáƒáƒ¥áƒ•თ ნებáƒáƒ áƒ—ვáƒ, წáƒáƒ˜áƒ™áƒ˜áƒ—ხáƒáƒ— წყáƒáƒ áƒáƒ¡ კáƒáƒ“ის ფáƒáƒ˜áƒšáƒ”ბი ფáƒáƒ˜áƒšáƒ˜áƒ¡ თვისებებში მითითებული მდებáƒáƒ áƒ”áƒáƒ‘იდáƒáƒœ.თქვენ უნდრგáƒáƒ“áƒáƒ¢áƒ•ირთáƒáƒ— Poedit, რáƒáƒ—რეს ცვლილებრძáƒáƒšáƒáƒ¨áƒ˜ შევიდეს.თქვენი სáƒáƒ®áƒ”ლითქვენი ცვლილებები დáƒáƒ˜áƒ™áƒáƒ áƒ’ებáƒ, თუ მáƒáƒ— áƒáƒ  შეინáƒáƒ®áƒáƒ•თ.ნულიდáƒáƒáƒ®áƒšáƒáƒ”ბáƒáƒ¡áƒáƒ­áƒ˜áƒ áƒáƒ”ბს დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒ¡áƒáƒ  მáƒáƒ®áƒ“ეს დრáƒáƒ”ბითი ფáƒáƒ˜áƒšáƒ”ბის წáƒáƒ¨áƒšáƒ (გáƒáƒ›áƒáƒ áƒ—ვისთვის)მáƒáƒ’: nplurals=2; plural=(n > 1);შეცდáƒáƒ›áƒ: მსგáƒáƒ•სი დáƒáƒ›áƒ—ხვევები áƒáƒ›áƒáƒ•ე ფáƒáƒ˜áƒšáƒ¨áƒ˜áƒ›áƒ˜áƒ—ითებული ხáƒáƒ–ის ნáƒáƒ›áƒ áƒ˜áƒ— ელემენტზე გáƒáƒ“áƒáƒ¡áƒ•ლáƒpoedit:// URI-ების გáƒáƒ®áƒ¡áƒœáƒAlt+Ctrl+ქვემáƒáƒ—Enterმáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ•მáƒáƒ áƒ¯áƒ•ნივShift+მáƒáƒ¦áƒšáƒaltctrlshift%s-ის შესáƒáƒ®áƒ”ბ%s-ის დáƒáƒ›áƒáƒšáƒ•áƒáƒ¡áƒ®áƒ•ების დáƒáƒ›áƒáƒšáƒ•áƒáƒžáƒáƒ áƒáƒ›áƒ”ტრები...%s-დáƒáƒœ გáƒáƒ¡áƒ•ლáƒáƒ¡áƒ”რვისებიყველáƒáƒ¡ ჩვენებáƒáƒžáƒ áƒ”-თáƒáƒ áƒ’მáƒáƒœáƒ˜ TM-დáƒáƒœáƒ£áƒªáƒœáƒáƒ‘ი ენáƒáƒ›áƒ®áƒáƒ áƒ“áƒáƒ£áƒ­áƒ”რელი ვერსირ(%s)გáƒáƒ¤áƒ áƒ—ხილებáƒ: you@example.com'%s' áƒáƒ  áƒáƒ áƒ˜áƒ¡ ვáƒáƒšáƒ˜áƒ“ური POT ფáƒáƒ˜áƒšáƒ˜.poedit-3.6.3/locales/oc.mo0000644000175100001660000012464315011674364011072 Þ•4¼õ\#0/ 1/ =/H/\/Jo/gº/ "0,0 ;0E0 L0Z0a0g0o0v0}0ƒ0‹0š0©0¯0µ0¾0Ò0æ0ê0ü0111!1)1;1M1Q1 U1 b1o1x11 ˆ1•1¥1»1Ñ1à1ü122$2-232<2S2 j2 x2 †2“2™2µ2Ñ2ê2331373<3S3c3 3 3—3 3¨3±3 µ3 Á3Î3 Ý3é3 44434<4 R4 _4'k4“4°4 Ê4Õ47Û465J5)j5”5 ™5]¤56$6:6 A6N6 U6"c6†6 ¡6¬6¾6Ð6á6ô6ý67,7H7#]77–7¥7 «7¶7 È7Ó7å7ë7ü7 8 (8I8Q8Z8 k8y8/”8 Ä8Ñ8Ö8é8ÿ89(9G9 `9k9)‚9¬9 Ì9Ú9ß9ô9ø9::5:F:e:t:‡: š:'§:?Ï: ; ;*;=;"P;5s;©;¯; ´; Â; Ð; Ý; ê;÷;<<<<1<K<ue<Û<î<= ==!= 2=?=Q=b=|=<‘=Î= Þ=*é=!>'6>^>c>y>(˜>TÁ>? ? %?3?G?X?m? ‚? Œ? š? §?´?Ã?Ò?ì?ô? @@ @$@ )@6@F@e@©h@A A%A8ATAgAƒAA¤AºAØA ðAB B &B2BIBNB;dB( BÉBæBùB C C C=C VCaCuC:ŽC ÉC<×C.DCDSD*cDŽD©D ¹DÃDÚD*ãDEE%E 6E AE»LEF F%F >FJF[FlFoF€F'‘F¹F$ÎF%óFG/G2G6G QG ]GgGvG …G‘G™G¡G©G¯GÄGÙGîGH™HŸHµH»H1ÎHInIEˆIÎIÕI îIüIJ@J,^J,‹J¸J ÊJØJ2çJ*KEK XKdKsK‚K%—K½KÒKçKüKL L :LHLQLZLmLsLŽL “L L¥L ­L ¹L ÅLÓL ÛL èLõL M(M&• e•q•%‰•¯•¾•*Ö•/–1– 4–:B–}–Å•–#[—D—Ä—[Ó˜{/™q«™3š:Qš)Œš_¶š*›§A›,é›*œ.Aœ.pœCŸœ+ãœe®uÏ$žJôž?ŸTÏŸE$ j p €  › ¦ º $Ñ ö $¡5¡O¡i¡{¡¡’¡+š¡Æ¡Ø¡ ê¡ ö¡¢.¢+A¢+m¢™¢¹¢Ö¢$ö¢£ 5£B£ \£2}£$°£#Õ£%ù£$¤9D¤/~¤s®¤""¥E¥M¥ h¥s¥“¥1ª¥Ü¥ ô¥þ¥¦ ¦#¦A¦VE¦Sœ¦@ð¦ 1§?=§‚}§¨¨¨<!¨"^¨!¨£¨¿¨Ũɨ ѨÛ¨á¨æ¨ë¨ï¨ô¨ø¨ ©©$© 5©?© H©T©j©&|©u2 áƒRø'`s·Â¿™¹)lÑ®£‰àiï;o²e "0%¾œîr7âÎ8Ó‘—‡9µжnÒ+,.x´cèÙÃtܳ÷ B«l¦ •Sv{Çïæˆ¡cVj“æzãÍ3¥<Æ£ Ì÷ŽL¦Ýðµhé:)”.tË(:{ å-êK%MÚŠ½u"HE5+ºgúqo!’‚˜ J\ã²H7˜ÄÖsw<ò ZEGw$(»F'Œ ’|îÔm1ßë…i_¸+ýÊUNð Gôdìf©gk6ÈϼÛCQÿ1Ç”F*âÿV¸ Që*מ™Ây&»†0d¿ÞÚf6&ž¢óy/×Wá,[>°ñÝjˆ°,ª1r}­P2xºbõÜW± -¤øƒ–±JŸ¨šöý †"úAq½Œ´~!‰^‹óàY`L%=ççÞ;5 ]ÈšØÒ„}$8?íX‘«U!/û¡€ûÏ@Ééen>¼4h3X­ª\‹aÀ4ÕP¢_Ñ§í¬·#/@9“Ûäb *)M2¬aÁIœ¾‚Ø•ì åÖ|K4¤]¥ ô=^þþõ'ÌŽmR[-&$O³O¨ÄÅ ›TßÕ©®.öùÀk#ñ€0×3„vÎü‡Šò觯ÊCzS¹p…Ù#AÆYpÁB~?ÐùÓIêü›Å¶É–T( ÍDäZ¯NÔDŸË (modified) (unsaved)%d entry%d entries%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add commentAdd directory to the listAdd files…Add folders…Additional keywordsAdvancedAll Translation FilesAll commentsAll stringsAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken markup in translation string.BrowseBrowse filesCancelCancelling…Cannot create temporary directory.Cannot execute program: %sCapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCode OccurrencesCode occurrencesCollecting source files…Command to extract translations:CommentComment:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationCopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustomize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDirectories:Do you want to delete project “%sâ€?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t show againDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting translations…Extract from sourcesExtract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageIDIf 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.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo matches foundNo problems with the translation found.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly fill in exact matchesOpen RecentOpen fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPermission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitRecent filesRedoRefreshReload FileReload fileRemaining: %dReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.ReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSelect &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to CrowdinSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text — %sSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String length in charactersString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Text ReplacementThe 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.The TMX file is malformed.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†has been changed by another application.The translation doesn’t start with a space.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation needs &workTranslation propertiesTranslation suggestionsTranslation — %sTwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown errorUntransUpdateUpdate allUpdate all catalogs in the projectUpdate from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filehandle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown language“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Occitan Language: oc_FR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: oc X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (modificat) (pas salvat)%d entrada%d entradas%d error%d errors%d problèma dins la traduccion.%d problèmas dins la traduccion.%i linha del fichièr « %s » es pas estada cargada corrèctament.%i linhas del fichièr « %s » son pas estadas cargadas corrèctament.Format %sPreferéncias de %sformat %s&A prepaus&A prepaus de Poedit&Aplicar&Tornar&Anullar&Escafar&Tampar&Copiar&Suprimir&Aplicar e contunhar&Aplicar e contunhar&Editar&Fichièr&Recercar…Manual de &GNU gettextManual de &GNU gettextA&viar&Gropar per Contèxte&Gropar per contèxte&Ajuda&Novèl&Novèl…&Seguenta >Traduccion segue&ntaTraduccion segue&nta&Non&D'acòrdi&Ajuda en linha&Ajuda en linhaD&obrir...&Dobrir…&Pegar&Preferéncias&Preferéncias…Traduccion &precedentaTraduccion &precedenta&Proprietats…&Escafar las traduccions suprimidas&Escafar las traduccions suprimidas&Quitar&Restablir&Remplaçar&Enregistrar&Enregistrar jos&Mostrar las occurréncias del còdi&Mostrar las occurréncias del còdi&Fenèstra d’aviada&Fenèstra d’aviada&TraduccionAn&ullarEntradas &pas Traduitas d'en PrimièrEntradas &pas traduitas d'en primièr&Actualizar a partir del còdi font&Actualizar a partir del còdi font&Validar las traduccions&Validar las traduccions&AfichatgeÃ’&c(Utilizar la lenga per defaut)(non connectat)(necessita Windows 8 o mai recent)< &PrecedentaA prepaus de %sCompteComptesApondreApondre un comentariApondre fichièrs…Apondre dossièrs…Apondre un comentariApondre un repertòri a la listaApondre fichièrs…Apondre dossièrs…Mots claus suplementarisAvançatsTotes los fichièrs de traduccionTotes los comentarisTotas las cadenasActivar totjorn la zòna de picada del tèxteUn element de la lista dels fichièrs d'entrada :Un element de la lista dels mots claus :AparénciaAplicarSètz segur que volètz suprimir l'extractor «%s » ?Sètz segur que volètz reïnicializar la memòria de traduccion ?Recercar automaticament las mesas a jornCompilar automaticament lo fichier MO al moment de l'enregistramentTornarCamin de basa :Las versions bèta contenon las darrièras novetats e melhoraments, mas pòdon èsser un pauc mens establas.Tot passar al primièr planBalisatge copat dins la cadena de traduccion.PercórrerPercórrer los fichièrsAnullarAnullacion…Impossible de crear lo repertòri temporari.Impossible d'executar lo programa : %sMetre en majusculaGestion dels &catalògsGestion dels &catalògsGestionari de catalògsCambiar la lenga de l'interfàciaJòc de caractèrs :Verificar lo document araVerificar la gramatica amb l’ortografiaVerificar l'ortografia al moment de la picadaRecèrca de las mesas a jorn...Verificar las errors dins la traduccionRecèrca de las mesas a jorn…Verificar l’ortografiaEscafarEscafar lo menúEscafar la traduccionEscafar lo menúEscafar la traduccionTamparOcurréncias al còdiOcurréncias al còdiCollècta dels fichièrs font…Comanda per extraire de traduccions :ComentariComentari :Compilar en MO…Compilacion...Fichièrs de traduccion compilatsConfigurar l’extraccion de còdi font dins las Proprietats.ConfirmacionCopiarCopiar del singularCopiar dempuèi lo tèxte fontCopiar del singularCopiar dempuèi lo tèxte fontCorregir l’ortografia automaticamentImpossible d'enregistrar lo fichièr %s.Crear novèlCrear una novèla traduccionCrear una traduccion novèla a partir d’un modèl POT.Crear un novèl projècte de traduccionError Crowdin&TalharPersonalizar la barra d'aisinas...TalharTalha de la basa de donadas sul disc :SuprimirEscafar de la memòria de traduccionSuprimir l'extractorEscafar de la memòria de traduccionSuprimir lo projècteSuprimir lo comentariSuprimir aqueste projècteRepertòris :Volètz suprimir lo projècte « %s » ?Volètz suprimir totas las traduccions que son pas mai utilizadas ?E&nregistrar pasEnregistrar pasAfichar pas maiAfichar pas maiTelecargament de las darrièras traduccions...Lo telecargament de las traduccions es desactivat dins aqueste projècte.&QuitarModificarModificar lo &comentariModificar lo &comentariModificar lo comentariModificar lo comentariModificar lo projècteModificar lo projècteCambiamentsEdicion…Email :Passar en mòde ecran complètEntradas amb Errors d'en primièrEntradas amb errors d'en primièrLas entradas amb d'errors son estadas marcadas en roge dins la lista. Los detalhs de l'error s'aficharàn quand seleccionaretz aqueste tipe d'entrada.Error a la dobertura del fichièrError en enregistrant lo fichièrErrorsTotCamins exclusesExportar en TMX…Exportar...Exportar en HTML…Export en TMX…Export de las traduccions…Extraire dempuèi las fontsExtraire lo tèxte dels fichièrs fonts dins los repertòris seguents :Installacion de l'extractorExtractorsImpossible de comunicar amb los processus de Poedit.Fracàs de la fusion dels catalògs gettext.Fracàs de la mesa a jorn de la memòria de traduccion : %sFichièrLo fichièr pòt pas èsser dobèrtLo fichièr « %s » existís pas.Lo fichièr « %s » es pas un fichièr de traduccion.Lo fichièr « %s » es en lectura sola e pòt pas èsser enregistrat. Enregistratz-lo jos un nom diferent.TrobarCercar lo seguentCercar lo precedentRecercar e remplaçar…Trobar dins los comentarisTrobar dins los tèxtes fontsTrobar dins las traduccionsCercar lo seguentTrobar lo precedentCorregir la lengaCorregir la lengaCorregir l'entèstaCorregir l'entèstaFichièrs de traduccion FlutterForma %iFormulari %i (non utilizat)GNU gettextGeneralFichièrs HTMLAjudaAmagar lo panèl lateralAmagar la barra d'estatAmagar aqueste messatge de notificacionIDEn contunhant lo netejatge, totas las traduccions marcadas coma suprimidas seràn escafadas definitivament. Caldrà recomençar la traduccion se son apondudas tornamai.IgnorarIgnorar la cassaImport de TMX…Importar de fichièrs de traduccion…Import de TMX…Importar de fichièrs de traduccion…Importacion de las traduccions…Dins : %sInclure las versions bètaInconsisténcia majusculas/minisculasInconsisténcia dels espacisInformacions sul traductorInstallarFichièr invalidApèl :Fichièrs de traduccion JSONConservarNom o còdi de la lengaLa lenga de traduccion es identica a la lenga font.La lenga de traduccion es pas definida.Lenga de la traduccion :Seleccion de lengaEquipa de lenga :Lenga :Darrièr cambiamentNe saber mai suls mots claus gettextNe saber mai sus las formas pluralasNe saber maiNe saber mai sus %sNe saber mai sus CrowdinLa linha %d del fichièr '%s' es corrompuda (donadas %s invalidas).Fins de linha :Lista de las extensions separadas per de punts-virgulas (ex. *.cpp;*.h) :Los fichièrs MO pòdon pas èsser modificats dirèctament dins Poedit.Metre en minusculasMetre en majusculasFar una nòva traduccion a partir d’aqueste fichièr POT.Entèsta mal formada : « %s »Gerir los comptesGerir…Integracion dels cambiaments...ReduireNom del projècte de traduccionNom :Incomplèt seguen&tIncomplèt seguen&tTrabalh necessariDe repassarDaissar pas jamai la man a la lista de las cadenas. Quand es activada, cal utilizar las tòcas Ctrl + Naut/Bas de navigacion, mas podètz tanben picar lo tèxte dirèctament sens que vos calga utilizar la tòca de tabulacion per activar la zòna de traduccion.NovèlNovèl a partir d'un fichièr &POT/PO…Novèl a partir d'un fichièr &POT/PO…Cadenas novèlasForma plurala seguentaForma plurala seguentaNonCap de Correspondéncia pas trobadaCap de correspondéncia pas trobadaCap de problèma pas trobat dins la traduccion.Cap d’informacion d’utilizacionTotes los plurals son pas traduches.Pas autorizat, connectatz-vos tornamai.Nòtas pels traductorsD'acòrdiUnCompletar unicament las correspondéncias exactasDobèrts recentamentDobrir fichièrDobrir dins l’EditorDobrir dins l’EditorDobèrts recentamentDobrir...Dobrir…OpcionsAutreIncomplèt p&recedentIncomplèt p&recedentFichièrs de traduccion POModèls de traduccion POTLos fichièrs POT son pas que de modèls e contenon pas de traduccions. Per far una traduccion, creatz un novèl fichièr PO a partir del modèl.PegarPegar en conservant la mesa en formaCaminsPermission refusada.Lo marcador « %s » es absent de la traduccion.Correccion dels marcadors de contengutDobrissètz e editar lo fichièr PO correspondent. Quand l'enregistraretz, lo fichièr MO serà mes a jorn tanben.D'en primièr, enregistratz lo fichièr. Aquesta seccion pòt pas èsser modificada abans.PluralFormula del pluralFormas pluralas :PoeditPoedit - Gestionari dels catalògsPoedit a corregit automaticament lo contengut invalid del fichièr "%s".Poedit es un logicial de traduccion de bon utilizar.Poedit a pas pogut dobrir lo fichièr « %s ».Pre-&traduccion…PretraductionPretraduit%u cadena de tèxte pre-traducha%u cadenas de tèxte pretraduchasPre-traduccion via memòria de traduccion…Pretraduccion…PreferénciasPreferéncias...Preferéncias...Preparacion de las cadenas…Preservar lo formatatge dels fichièrs existentsForma plural precedentaForma plural precedentaTèxte font precedentModificat anterioramentModificat anterioramentNom e version del projècte :Nom del projècte :Projècte :ProjèctesVerificacions de pontuacionEscafarEscafar las traduccions suprimidasQuitarFichièrs recentsRefarActualizarRecargar fichièrRecargar lo fichièrQue demòra : %dRemplaçarRemplaçar &totRemplaçar &totCadena de remplaçamentRemplaçar…L'entèsta Plural requesida es absenta.ReïnicializarReïnicializar la memòria de traduccionLa reïnicializacion de la memòria de traduccion suprimirà definitivament totas las traductions que i son emmagazinadas. Aquesta operacion es irreversibla.RepassarEnregistrarEnregistrar jos…Enregistrar jos…Enregistrar malgrat totEnregistrar malgrat totEnregistrar josEnregistrar jos...Enregistrar las modificacionsEnregistrar fichièrSeleccionar &totSeleccionar totSeleccionatz los fichièrs TMX d’importarCausir un repertòriCausir fichièr de traduccionSeleccionar los fichièrs de traduccion d'importarCausir modèl de traduccionSeleccionatz vòstra lenga de preferénciaDefinir la lengaDefinir la lengaParamètresParamètres…Afichar lo panèl lateralAfichar l'ortografia e la gramaticaAfichar la barra d'estatAfichar l’&ID de la cadenaAfichar las substitucionsAfichar la barra d'aisinasAfichar los avertimentsAfichar o amagar lo panèl lateralAfichar lo panèl lateralAfichar la barra d'estatAfichar l’&ID de la cadenaAfichar los avertimentsPanèl lateralS'identificarSe desconnectarS'identificarSe connectar a %sConnectatz-vos sus CrowdinSe desconnectarSingularCopiar/pegar intelligentJonhents intelligentsLigams intelligentsVerguetas intelligentasTriar per &FichièrTriar per &FontTriar per &TraduccionTriar per &fichièrTriar per &fontTriar per &traduccionJòc de caractèrs del còdi font :Los extractors de còdi font son utilizats per recercar e extraire las cadenas tradusiblas dels fichièrs del còdi font per fin de las traduire.Còdi font indisponible.Còdi font pas trobatTèxte fontTèxte font — %sMots claus fontsCamins de las fontsDictarLa verificacion ortografica es desactivada, perque lo diccionari pel %s es pas installat.Ortografia e GramaticaComençar de parlarComençar de parlarTraduccions emmagazinadas :Longor de la cadena en caractèrsCadena de recercarSubstitucionsSuggestionsLas suggestions son pas disponiblas se la lenga de traduccion es pas definida. Las autras foncionalitats, coma los plurals, pòdon èsser afectadas tanben.Marcador de sobra « %s » qu’es pas dins lo tèxt font.SincronizarSincronizar amb CrowdinSincronizar la traduccion amb CrowdinSincronizacionError de sincronizacionLa sincronizacion amb Crowdin a fracassat.Error de sintaxi dins l'entèsta Plural ("%s").MTFichièrs TMXUtilizar las cadenas tradusiblas d'un modèl POT existent.Tèxte de remplaçamentLa MT conten pas cap de cadena identica al contengut d'aqueste fichièr. Es efectiu unicament per de traduccions semi-automaticas aprèp que Poedit aja aprés pro de fichièrs traduits manualament.Lo fichièr de TMX es mal formatat.Lo fichièr pòt pas èsser compilat al format MO e èsser utilizat.Lo fichièr conteniá d'elements en doble, aquò es pas permés dins los fichièrs PO e empachariá son utilizacion. Poedit a reglat aqueste problèma, mas vos caldriá repassar las traduccions de totes los elements marcats coma aproximatius e las corregir se necessari.Lo fichièr es estat compilat al format MO, mas foncionarà probablament pas corrèctament.Lo fichièr es estat enregistrat en tota seguretat e compilat al format MO, mas foncionarà probablament pas corrèctament.Lo fichièr es estat enregistrat en tota seguretat, mas pòt pas èsser compilat al format MO ni èsser utilizat.Lo fichièr es estat enregistrat en tota seguretat.Una autra aplicacion a modificat lo fichièr « %s ».La traduccion comença pas per un espaci.La traduccion se termina amb « %s » mentre que lo tèxt font s’acabar amb « %s ».Manca un espaci a la fin de la traduccion.La traduccion es prèsta a èsser utilizada, mas %d entrada es pas encara traduita.La traduccion es prèsta a èsser utilizada, mas %d entrada es pas encara traduita.La traduccion es prèsta a èsser utilizada.La traduccion deu acabar amb « %s ».La traduccion deu pas acabar amb « %s ».La traduccion deu començar amb una minuscula.La traduccion començar per un espaci alara que lo tèxte font non.I a pas cap de traduccions. Es pas corrent.I a agut un problèma al moment del formatatge del fichièr (mas es estat enregistrat corrèctament).Aqueles paramètres modifican la mesa en forma intèrna dels fichièrs PO. Ajustatz-las se avètz d'exigéncias especificas, per exemple en rason del contraròtle de version.Aquí las comandas qu'avian l'extractor. %o : espandir al nom del fichièr de sortida, %K : far la lista dels mots claus, %F : far la lista dels fichièrs d'entrada, %C : jòc de caractèrs (veire çaijós).Aquesta cadena es estada trobada dins la memòria de traduccion de Poedit.Inserit dins la linha de comanda quand lo còdi de jòc de caractèrs de la font es provesit. %c s'espandís a la valor del jòc de caractèrs.Inserit dins la linha de comanda per cada fichièr d'entrada. %f : nom del fichièr.Inserit dins la linha de comanda per cada mot clau. %k : lo mot clau.TotalTransformacionsTraduit : %d de %d (%d %%)TraduccionLenga de traduccionMemòria de traduccionTraduccion necessitant una &revisionProprietats de traduccionTraduccion necessitant una &revisionProprietats de traduccionSuggestions de traduccionTraduccion — %sDosUTF-8 (recomandat)AnullarUna excepcion pas gerida s'es produita : %sUnix (recomandat)Error desconegudaPas traduitActualizarTot metre a jornMetre a jorn totes los catalògs del projècteActualizar a partir d’un fichièr &POT…Actualizar a partir d’un fichièr &POT…Metre a jorn a partir del còdiMetre a jorn dempuèi un POTMetre a jorn a partir del còdiMetre a jorn a partir del còdi fontResumit de la mesa a jornMesas a jornFracàs de la mesa a jornActualizacion de las traduccionsMesa a jorn de las informacions de l'utilizaire...Mandadís de las traduccions a %s…Telecargament de las traduccions...Utilizar una expression personalizadaUtilizar una polissa personalizada :Utilizar una polissa personalizada pels camps de tèxte :Utilizar las règlas per defaut d'aquesta lengaUtilizar aquestes mots claus (noms de foncions) per reconéisser las cadenas tradusiblas dins los fichièrs fonts :Utilizar la memòria de traduccionValidarResultats de la validacionVersion %sEn espèra d'autentificacion...Benvenguda dins PoeditAl moment de l’actualizacion dempuèi las fontsMots entièrs unicamentFenèstraWindowsBoclarPassar a la linha a :Fichièrs de traduccion XLIFFÃ’cTanben podètz extraire las cadenas tradusiblas dirèctament a partir del còdi font :Es impossible de depausar mai d'un fichièr a l'encòp dins la fenèstra de Poedit.Vos cal reaviar Poedit per qu'aqueste cambiament prenga efièit.Vòstre nomVòstras modificacions seràn perdudas se las enregistratz pas.Vòstre nom e vòstra adreça e-mail son utilizats unicament per definir l'entèsta Last-Translator dels fichièrs de GNU gettext.ZèroAgrandirTrabalh necessarisuprimir pas los fichièrs temporaris (per fins de desbugar)p. ex. nplurals=2; plural=(n > 1);emplenatge aprox. amb lo fichièrgerís una URI de poedit://Ctrl+BasEntradaEsquèrraDrechMaj+NautaltctrlmajA prepaus de %sAmagar %sAmagar los autresPreferéncias...Quitar %sServicisAfichar totpretraduire amb la MTlenga desconeguda« %s » es pas un fichièr POT valid.poedit-3.6.3/locales/ug.po0000644000175100001660000032720115011674230011072 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-17 10:16\n" "Last-Translator: \n" "Language-Team: Uyghur\n" "Language: ug_CN\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: ug\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "بۇ ئۇقتۇرۇش ئۇچۇرىنى يوشۇر" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "قايتا كۆرسەتمە" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "قايتا كۆرسەتمە" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "قىسقىچە مەزمۇننى ÙŠÛڭىلا" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "قىسقىچە مەزمۇننى ÙŠÛڭىلا" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "ياپ" #: src/cat_update.cpp:161 msgid "Issues" msgstr "مەسىلە" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "ھۆججەت" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "قۇر" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "مەسىلە" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "ÙŠÛÚ­Ù‰ ھەرپ تىزىقى" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "ÙŠÛÚ­Ù‰ ھەرپ تىزمىسى" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Ú†Ù‰Ù‚Ù‰Ø±Ù‰Û‹ÛØªÙ‰Ù„Ú¯Û•Ù† ھەرپ تىزىقى" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Ú†Ù‰Ù‚Ù‰Ø±Ù‰Û‹ÛØªÙ‰Ù„Ú¯Û•Ù† ھەرپ تىزىقى" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "مەنبە ھۆججىتىنى توپلاۋاتىدۇ…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "تەرجىمە تىزىقىنى %s ھۆججەتتىن ئاجرىتىۋاتىدۇ…" msgstr[1] "تەرجىمە تىزىقىنى %s ھۆججەتتىن ئاجرىتىۋاتىدۇ…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "ئاجراتقان تەرجىمە ھۆججەتنى يۈكلىيەلمىدى." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "ئورنى: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "مەنبە كودىنى ئىشلەتكىلى بولمايدۇ." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "تەرجىمىنى مەنبە كودتىن ÙŠÛڭىلىيالمايدۇ، چۈنكى ھۆججەتتە بەلگىلەنگەن ئورۇندىن " "كود تÛپىلمىدى." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "ھوقۇق رەت قىلىندى." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "ھۆججەت خاسلىقىدا بەلگىلەنگەن ئورۇندىكى مەنبە كود ھۆججىتىنى ئوقۇيدىغان " "ھوقۇقىڭىز يوق." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "ئەگەر ئىلگىرى ھۆججىتىڭىزنى زىيارەت قىلىش ھوقۇقىنى رەت قىلغان بولسىڭىز، " "سىستÛما تەڭشەكلەر › شەخسىيەت Û‹Û• بىخەتەرلىك › ھۆججەت Û‹Û• قىسقۇچتىن قايتىدىن " "زىيارەت قىلىشقا يول قويۇڭ." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "ئەگەر ئىلگىرى ھۆججىتىڭىزنى زىيارەت قىلىش ھوقۇقىنى رەت قىلغان بولسىڭىز، " "سىستÛما مايىللىقلار › بىخەتەرلىك Û‹Û• شەخسىيەت › شەخسىيەت › ھۆججەت Û‹Û• " "قىسقۇچتىن قايتىدىن زىيارەت قىلىشقا يول قويۇڭ." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "ئەسلى كودتىن ھەرپ تىزىقىنى ئاجرىتالمىدى." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "ھۆججەت «%s» نى ئاچقىلى بولمىدى." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "تەرجىمىلەرنى ÙŠÛڭىلاۋاتىدۇ" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "پەرقنى سÛلىشتۇرۇۋاتىدۇ…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "پەرقنى بىرلەشتۈرۈۋاتىدۇ…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "تەرجىمە ھۆججەت ئاللىبۇرۇن ÙŠÛڭىلاندى، ھەرپ تىزىقىدا Ú¾Ûچقانداق ئۆزگىرىش " "بولمىدى." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "تەرجىمە ھۆججەتتىكى %s ئۆزگىرىش ÙŠÛڭىلاندى." msgstr[1] "تەرجىمە ھۆججەتتىكى %s ئۆزگىرىش ÙŠÛڭىلاندى." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "تەرجىمە قىلىدىغان ÙŠÛÚ­Ù‰ ھەرپ تىزىقى:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Ú†Ù‰Ù‚Ù‰Ø±Ù‰Û‹ÛØªÙ‰Ù„Ú¯Û•Ù† ھەرپ تىزىقى(ئەمدى ئىشلىتىلمەيدۇ):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "ئەسلى ھەرپ تىزىقىدىكى %d مەسىلە بايقالدى." msgstr[1] "ئەسلى ھەرپ تىزىقىدىكى %d مەسىلە بايقالدى." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "تەپسىلاتىنى كۆرسىتىدۇ…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "تەپسىلاتىنى كۆرسىتىدۇ…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "باش قىسمى كۆرۈمسىز: «%s»" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO تەرجىمە ھۆججەتلەر" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT تەرجىمە ھۆججەتلەر" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF تەرجىمە ھۆججەتلەر" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode يەرلىكلەشتۈرۈش كاتالوگى" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON تەرجىمە ھۆججەتلەر" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter تەرجىمە ھۆججەتلەر" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "ھەممە تەرجىمە ھۆججەتلەر" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "بۇ ھۆججەتنىڭ پىچىمىنى Poedit تونىمىغان." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "بۇ JSON ھۆججىتى تەرجىمە ھۆججىتى ئەمەس ھەمدە Poedit تا تەھرىرلىگىلى بولمايدۇ." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "تۆۋەندىكى خاتالىق تۈپەيلىدىن ھۆججەت مەزمۇنى ئوقۇيالمىدى: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "ھۆججەت «%s» نى ئوقۇشقىلا بولىدۇ Û‹Û• ساقلىغىلى بولمايدۇ. باشقا ئىسىمدا ساقلاڭ." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "%s ھۆججەتنى ساقلىيالمىدى." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "ئÛكران كەسمىسى:" #: src/catalog_po.cpp:134 #, 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] "ھۆججەت «%2$s» نىڭ %1$i-قۇرىنى توغرا يۈكلىيەلمىدى." msgstr[1] "ھۆججەت «%2$s» نىڭ %1$i-قۇرىنى توغرا يۈكلىيەلمىدى." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "" "ھۆججەت «%2$s» نىڭ %1$d-قۇرى بۇزۇلغان (ئىناۋەتلىك %3$s سانلىق مەلۇماتى يوق)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "PO ھۆججىتى بۇزۇلغان: بىرلىك شەكلىدە msgstr بىلەن msgid_plural بىللە " "ئىشلىتىلگەن" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "PO ھۆججىتى بۇزۇلغان: كۆپلۈك سان شەكلىدە msgstr ئىشلىتىپ msgid_plural " "ئىشلەتمىگەن" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "ھۆججەتنى يۈكلىيەلمىدى، ئۇ بۇزۇلغان بولۇشى مۇمكىن." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "ھۆججەتنى يۈكلەۋاتقاندا خاتالىق كۆرۈلدى. Ø´Û‡ سەۋەپتىن بىر قىسىم سانلىق مەلۇمات " "يوقاپ ÙƒÛØªÙ‰Ø´Ù‰ ياكى بۇزۇلۇشى مۇمكىن." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "ھۆججەت Ùورماتىدا مەسىلە بار(ئەمما ئۇ مۇۋەپپەقىيەتلىك ساقلاندى)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "تەرجىمە تەڭشىكىدە بەلگىلەنگەندەك ھۆججەتنى «%s» ھەرپ توپلىمىدا ساقلىيالمايدۇ. " "ئۇنى ‪UTF-8 ھەرپ توپلىمىدا ‬ساقلىغاندىمۇ، تەڭشەك مۇناسىپ ئۆزگىرىدۇ." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "ھۆججەتنى ساقلاشتا خاتالىق كۆرۈلدى" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "«%s» ئىناۋەتلىك POT ھۆججىتى ئەمەس." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "XCLOC ھۆججىتىدە ئويلىشىلمىغان ÙƒÛ•Ù… مەزمۇن بار." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "XCLOC ھۆججەت پەرقلىق ئورۇندا ساقلاشنى قوللىمايدۇ." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF ھۆججىتىنى يۈكلەۋاتقاندا خاتالىق كۆرۈلدى: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "قوللىمايدىغان نەشرى (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "تەرجىمە تىزىقىدىكى بەلگە خاتا." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Poedit نى قوللايدىغان بۇلۇت يەرلىكلەشتۈرۈش سۇپىلىرى بىلەن باغلاپ ئۇنىڭدىكى " "تەرجىمىلەرنى يوچۇقسىز قەدەمداشلىيالايسىز." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "بۇلۇت قەدەمداش قانداق ئىشلەيدۇ؟" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Ú¾ÛØ³Ø§Ø¨Ø§Øª" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(تىزىمغا كىرمىگەن)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "بۇلۇت تەرجىمىسىنى ئاچ" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Ú¾ÛØ³Ø§Ø¨Ø§Øª باشقۇر" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "قۇرۇلۇش:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "تىل:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "بۇلۇت Ú¾ÛØ³Ø§Ø¨Ø§ØªÙ‚ا تىزىمغا كىر" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "بۇلۇت Ú¾ÛØ³Ø§Ø¨Ø§ØªÙ‚ا تىزىمغا كىر" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Ú¾ÛØ³Ø§Ø¨Ø§ØªÙ‰Ú­Ù‰Ø²Ø¯Ø§ Ú¾Ûچقانداق تەرجىمە قۇرۇلۇشى تÛپىلمىدى." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "ئاخىرقى تەرجىمىنى چۈشۈرۈۋاتىدۇ…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "%s‎ غا تىزىمغا كىر" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "قەدەمداشلاۋاتىدۇ" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "تەرجىمىلەرنى %s غا يۈكلەۋاتىدۇ…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "تەرجىمىلەرنى %s غا يۈكلىيەلمىدى." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "قەدەمداش خاتالىقى" #: src/commentdlg.cpp:48 msgid "Add" msgstr "قوش" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "يوچۇن Crowdin خاتالىقى." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "ھوقۇق Ø¨ÛØ±Ù‰Ù„مىگەن، قايتا تىزىمغا كىرىڭ." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "ھەرپ تىزىقى ئاساسىدىكى Crowdin قۇرۇلۇشىنى قوللىمايدۇ." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "بۇ قۇرۇلۇشتا تەرجىمە چۈشۈرۈش چەكلەنگەن." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "تىزىمغا كىر" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "تىزىمغا كىرىڭ" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "تىزىمدىن چىق" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "تىزىمدىن چىق" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Crowdin ھەققىدە ØªÛØ®Ù‰Ù…Û‡ ÙƒÛ†Ù¾ بىلدۈرگۈ" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin توردىكى تەرجىمە باشقۇرۇش سۇپىسى Û‹Û• ھەمكارلىشىپ تەرجىمە قىلىش قورالى. " "بىزمۇ Crowdin نى ئىشلىتىپ Poedit نى نۇرغۇن تىللارغا تەرجىمە قىلىمىز، بىز " "ئۇنى ياخشى كۆرىمىز." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "دەلىللەشنى ساقلاۋاتىدۇ…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "ئىشلەتكۈچى ئۇچۇرىنى ÙŠÛڭىلاۋاتىدۇ…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Crowdin غا تىزىمغا كىر" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Crowdin بىلەن قەدامداشلىيالمىدى." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin خاتالىقى" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "تەرجىمىلەرنى يۈكلەۋاتىدۇ…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "كۆچۈر(&C)" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "تەپسىلات بىلدۈرگۈسى" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "ياردەم(&H)" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Poedit تا MO ھۆججەتنى بىۋاسىتە تەھرىرلىگىلى بولمايدۇ." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "ھۆججەت ئÛچىش خاتالىقى" #: src/edapp.cpp:735 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 ھۆججىتىمۇ " "ÙŠÛڭىلىنىدۇ." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ۋاقىتلىق ھۆججەتلەرنى ئۆچۈرمە (سازلاش ئۈچۈن)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "poedit:// URI بىر تەرەپ قىلىش" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "بەلگىلەنگەن قۇرغا يۆتكەل" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Poedit جەريانى بىلەن ئالاقە قىلالمىدى." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "بىر تەرەپ قىلغىلى بولمايدىغان مۇستەسنا يۈز بەردى: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "تەرجىمە Ù‚Ûلىپىنى تاللاڭ" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "ھۆججەت ئىناۋەتسىز" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "تەرجىمە ھۆججىتىنى تاللاڭ" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit ئىشلىتىش ئوڭاي تەرجىمە تەھرىرلىگۈچ." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Poedit كۆزنىكىگە بىردىن ئارتۇق ھۆججەت تاشلىيالمايسىز." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "ھۆججەت «%s» تەرجىمە قىلىدىغان ھۆججەت ئەمەس." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "ھۆججەت «%s» مەۋجۇت ئەمەس." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "ئىملا تەكشۈرۈش چەكلەندى، چۈنكى %s ئۈچۈن لۇغەت ئورنىتىلمىغان." #: src/edframe.cpp:871 msgid "Install" msgstr "ئورنات" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "بۇ «%s» ھۆججەت باش ئەپتە ئۆزگەرتىلدى." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "ھۆججەتنى قايتا يۈكلە" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "ھۆججەتنى دىسكىدىن قايتا يۈكلەمسىز؟ ئەگەر بۇنداق قىلسىڭىز Poedit تا " "ساقلىمىغان ئۆزگەرتىشلەر ساقلانمايدۇ." #: src/edframe.cpp:968 msgid "Ignore" msgstr "پەرۋا قىلما" #: src/edframe.cpp:968 msgid "Reload File" msgstr "ھۆججەتنى قايتا يۈكلە" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "ھۆججەت ئۆزگەرتىلدى. ئۆزگەرتكەننى ساقلامسىز؟" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "ئۆزگەرتكەننى ساقلا" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "ئەگەر ساقلىمىسىڭىز ئۆزگەرتىشلەر يوقىلىدۇ." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "ساقلا" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "ساقلىما(&N)" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "ساقلىما" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "ئەگەر ساقلىسىڭىز باشقا ئەپتىكى ئۆزگەرتىشلەر يوقىلىدۇ." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "ۋاز ÙƒÛ•Ú†" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "ساقلاۋەر" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "ساقلاۋەر" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "باشقا ئاتتا ساقلا…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "ھاسىللا…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "تەرجىمە ھۆججەت ھاسىللاندى" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "HTML غا چىقار…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML ھۆججەت" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "HTML غا چىقىرىۋاتىدۇ" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "ÙŠÛڭىلىيالمىدى" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "پايدىلانما ھۆججەتنى ئاچ" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "&POT ھۆججەتتىن ÙŠÛڭىلا…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "&POT ھۆججەتتىن ÙŠÛڭىلا…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "تەرجىمىدە %d مەسىلە بايقالدى." msgstr[1] "تەرجىمىدە %d مەسىلە بايقالدى." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "دەلىللەش نەتىجىلىرى" #: src/edframe.cpp:1842 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 "" "خاتالىق بار تۈرلەر تىزىمدا قىزىل رەڭدە بەلگە سÛلىنىدۇ. بۇ خىل تۈرنى " "تاللىسىڭىز خاتالىقنىڭ تەپسىلاتىنى كۆرسىتىدۇ." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "ھۆججەت بىخەتەر ساقلاندى." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "ھۆججەت بىخەتەر ساقلاندى ھەمدە MO پىچىمىدا ھاسىللاندى، ئەمما ئۇ ئادەتتىكىدەك " "توغرا ئىشلىمەسلىكى مۇمكىن." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "ھۆججەت بىخەتەر ساقلاندى ئەمما MO پىچىمىغا ھاسىللاپ ئىشلەتكىلى بولمايدۇ." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "ھۆججەت MO پىچىمىدا ھاسىللاندى، ئەمما ئۇ ئادەتتىكىدەك توغرا ئىشلىمەسلىكى " "مۇمكىن." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "ھۆججەتنى MO پىچىمىغا ھاسىللاپ Û‹Û• ئىشلەتكىلى بولمايدۇ." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "تەرجىمىدە مەسىلە بايقالمىدى." #: src/edframe.cpp:1894 #, 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] "" "تەرجىمە ئىشلىتىشكە تەييار بولدى، ئەمما %d ØªÛˆØ±ØªÛØ®Ù‰ تەرجىمە قىلىنمىغان." msgstr[1] "" "تەرجىمە ئىشلىتىشكە تەييار بولدى، ئەمما %d ØªÛˆØ±ØªÛØ®Ù‰ تەرجىمە قىلىنمىغان." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "تەرجىمە ئىشلىتىشكە تەييار بولدى." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "بۇ «%s» ھۆججەتتىكى ئىناۋەتسىز مەزمۇننى Poedit ئۆزلۈكىدىن تۈزەتتى." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "بۇ ھۆججەتتە تەكرار تۈر بار، بۇنىڭغا يول قويۇلمايدۇ ھەمدە ئۇنىڭ ئىشلىتىلىشىگە " "تەسىر كۆرسىتىدۇ. بۇ مەسىلىنى Poedit Ú¾Û•Ù„ قىلدى، ئەمما سىز «ئىشلەش زۆرۈر» " "بەلگىسى قويۇلغان ھەر قانداق تەرجىمىنى ئەگەر زۆرۈر بولسا تەكشۈرۈپ تۈزىتىڭ." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "تەرجىمە تىلى تەڭشەلمىگەن." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "تىل تەڭشەش" #: src/edframe.cpp:2317 msgid "Set language" msgstr "تىل تەڭشەش" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "ئەگەر تەرجىمە تىلى توغرا تەڭشەلمىگەن بولسا تەۋسىيەنى ئىشلەتكىلى بولمايدۇ. " "كۆپلۈك شەكىلگە ئوخشاش باشقا ئىقتىدارلارمۇ تەسىرگە ئۇچرىشى مۇمكىن." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "تەرجىمە تىلى ئەسلى تىل بىلەن ئوخشاش." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "تىل ئوڭشا" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "تىل ئوڭشا" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "بۇ ھۆججەتنىڭ كۆپلۈك شەكلىدىكى تۈرلىرى بار ئىكەن ئەمما كۆپلۈك شەكلىنىڭ ھۆججەت " "Ø¨ÛØ´Ù‰Ø¯Ù‰ÙƒÙ‰ سەپلىمىسى يوقكەن." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "ھۆججەت كۆپلۈك شەكىل Ø¨ÛØ´Ù‰Ø¯Ø§ ھۆججەت تۈرلىرىنىڭ ئوخشاش بولمىغان كۆپلۈك " "شەكلىدىكى سانىغۇچ تۈرلىرى بار ئىكەن" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "ھۆججەت Ø¨ÛØ´Ù‰Ø¯Ù‰ÙƒÙ‰ زۆرۈر بولغان كۆپلۈك شەكلى ÙƒÛ•Ù…." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "كۆپلۈل شەكلىنىڭ باشى(\"%s\")دا گرامماتىكىلىق خاتالىق بار." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "باشنى ئوڭشا" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "بۇ ھۆججەتتە ئىشلىتىلگەن كۆپلۈك شەكلى %s غا نىسبەتەن ئالاھىدە." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "تەكشۈر" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "مەنبە تÛكىستكە ئىنگلىزچە ئىشلىتىشنى خالامسىز؟" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "بۇ ھۆججەت مەنبە تÛكىستنىڭ ئورنىغا ھەرپ تىزىقى ID نى ئىشلىتىدۇ. Poedit سىز " "ئۈچۈن «%s» ھۆججىتىدىن ئىنگلىزچە تÛكىستنى يۈكلىيەلەيدۇ." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "ئىنگلىزچە يۈكلە" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "تەرجىمە قىلىنغان: %d / %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "قالغىنى: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d خاتالىق" msgstr[1] "%d خاتالىق" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d تىزىق" msgstr[1] "%d تىزىق" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (ساقلانمىغان)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (ئۆزگەرتىلگەن)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "تەرجىمە خاتىرىسىنى ÙŠÛڭىلىيالمىدى: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "ھۆججەت «%s» نى ساقلىغىلى بولمىدى." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "مەنبە بىلەن ئوخشاش تەرجىمىلەرنى Ú†Ù‰Ù‚Ù‰Ø±Ù‰Û‹ÛØªÙ‰Ø¯Û‡" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "ئەسلى تÛكىستكە ئوخشايدىغان بارلىق تەرجىمىلەرنى ئۆچۈرەەمسىز؟" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "بۇ مەشغۇلات ئەسلى تÛكىستكە دەل ماس ÙƒÛلىدىغان تەرجىمىلەرنى Ø¦Û†Ú†ÛˆØ±ÛˆÛ‹ÛØªÙ‰Ø¯Û‡. بۇ " "مەشغۇلاتتىن يانغىلى بولمايدۇ." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "ساقلاپ قال" #: src/edframe.cpp:2856 msgid "Remove" msgstr "چىقىرىۋەت" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "ئۆچۈرۈلگەن تەرجىمىنى تازىلا" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "ئىشلىتىلمەيدىغان ھەممە تەرجىمىنى ئۆچۈرەمسىز؟" #: src/edframe.cpp:2879 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 "" "ئەگەر تازىلاشنى داۋاملاشتۇرسىڭىز، ئۆچۈرۈلدى بەلگىسى سÛلىنغان ھەممە تەرجىمە " "Ù…Û•Ú­Ú¯ÛˆÙ„ÛˆÙƒ ئۆچۈرۈلىدۇ. ئەگەر كەلگۈسىدە ئۇلارنى قايتا قوشسىڭىز ÙŠÛ•Ù†Û• باشتىن " "تەرجىمە قىلىشقا توغرا ÙƒÛلىدۇ." #: src/edframe.cpp:2883 msgid "Purge" msgstr "تازىلا" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "ئەسلى تÛكىستتىن كۆچۈر" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "ئەسلى تÛكىستتىن كۆچۈر" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "تەرجىمە تازىلا" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "تەرجىمە تازىلا" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "ئىزاھات تەھرىر" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "ئىزاھات تەھرىر" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "كود كۆرۈنىدىغان ئورۇن" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "كود كۆرۈنىدىغان ئورۇن" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "يان بالداقنى يوشۇر" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "يان بالداقنى كۆرسەت" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "ھالەت بالداقنى يوشۇر" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "ھالەت بالداق كۆرسەت" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "ھەرپ تىزىقى ئۇزۇنلۇقى: تەرجىمە | مەنبە" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "ھەرپ تىزىقى ئۇزۇنلۇقى" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "مەنبە تÛكىست" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "بىرلىك" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "كۆپلۈك" #: src/editing_area.cpp:477 msgid "Translation" msgstr "تەرجىمىسى" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "ئالدىن تەرجىمە قىلىندى" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "ئىشلەش زۆرۈر" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "ئىشلەش زۆرۈر" #: src/editing_area.cpp:566 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" "\n" " تەرجىمە قىلىش ئۈچۈن، Ù‚Ûلىپ ئاساسىدىكى ÙŠÛÚ­Ù‰ بىر PO ھۆججىتى قۇرۇڭ." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "ÙŠÛÚ­Ù‰ تەرجىمە قۇر" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "بۇ POT ھۆججەتتىن ÙŠÛÚ­Ù‰ تەرجىمە قۇرىدۇ." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "مەنبە تÛكىست ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "ھەممىسى" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "شەكىل %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "شەكىل %i (ئىشلەتمىگەن)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Ù†Û†Ù„" #: src/editing_area.cpp:788 msgid "One" msgstr "بىر" #: src/editing_area.cpp:790 msgid "Two" msgstr "ئىككى" #: src/editing_area.cpp:804 msgid "Other" msgstr "باشقا" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "ھەرپ تىزىقى مەزمۇنى: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "ھەرپ تىزىقى پەرقلەندۈرگۈچ: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s پىچىم" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s پىچىم" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "تەرجىمە - %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "مەنبە تÛكىست - %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "يوچۇن تىل" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "تور خاتالىقى %s(%d)." #: src/errors.cpp:93 msgid "Unknown error" msgstr "يوچۇن خاتالىق" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "gettext كاتالوگىنى بىرلەشتۈرۈش مەغلۇپ بولدى." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "تەھرىرلىگۈچتە ئاچ" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "تەھرىرلىگۈچتە ئاچ" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "ھۆججەتتە بۇ ھەرپ تىزىقىنىڭ ئەسلى كودتا كۆرۈنىدىغان ئورۇن ئۇچۇرى " "تەمىنلەنمىگەن." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "ئىشلىتىش ئۇسۇلى ئۇچۇرى يوق" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d كودنىڭ كۆرۈنىدىغان ئورنى" msgstr[1] "%d كودنىڭ كۆرۈنىدىغان ئورنى" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "مەنبە كودى تÛپىلمىدى" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "ھەرپ تىزىقىنىڭ ئەسلى كودنىڭ قايسى جايىدا ئىشلىتىلگەنلىكىنى Poedit " "كۆرسىتەلمەيدۇ، چۈنكى ھۆججەتنى نەقىل ئورنىدىنمۇ ئىشلەتكىلى بولمايدۇ ياكى ئۇ " "ئەمەلىي ھۆججەتنى نىشانلىمىغان بەلگە نەقىلى بولۇشى مۇمكىن." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "ھۆججەتنى ئاچالمىدى" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit بۇ «%s» ھۆججەتنى ئاچالمىغان." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "ئىزدە" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "ئالماشتۇر" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "تاللانمىلار" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ú†ÙˆÚ­ كىچىك ÙŠÛØ²Ù‰Ù„ىشىغا پەرۋا قىلما" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "تولۇق ماسلاش" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "بارلىق سۆزلەرلا" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "ئەسلى تÛكستتىن ئىزدە" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "تەرجىمىدىن ئىزدە" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "ئىزاھاتتىن ئىزدە" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "ھەممىنى ئالماشتۇر(&A)" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "ھەممىنى ئالماشتۇر(&A)" #: src/findframe.cpp:150 msgid "&Replace" msgstr "ئالماشتۇر(&R)" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< ئالدىنقى(&P)" #: src/findframe.cpp:152 msgid "&Next >" msgstr "‹ كەينى(&N)" #: src/findframe.cpp:235 msgid "String to find" msgstr "ئىزدەيدىغان ھەرپ تىزىقى" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "ئالمىشىدىغان تÛكىست" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "ئاگاھلاندۇرۇش: " #: src/gexecute.cpp:171 msgid "error: " msgstr "خاتالىق: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "تىل ئىسمى ياكى كودى" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "تەرجىمە تىلى" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "تەرجىمە تىلى:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "ھەممە ھەرپ تىزىقى" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Localazy قۇرۇلۇشىنىڭ تەپسىلاتىنى چۈشۈرەلمەيدۇ." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Localazy غا تەرجىمە يۈكلىگەندە خاتالىق كۆرۈلدى." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "قۇرۇلۇشلار" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "%s ھەققىدىكى تەپسىلات" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy زور دەرىجىدە ئاپتوماتلاشتۇرۇلغان يەرلىكلەشتۈرۈش سۇپىسى بولۇپ ھەر " "قانداق كىشىنىڭ مەھسۇلات Û‹Û• مەزمۇنلىرىنى ÙƒÛ†Ù¾ خىل تىلغا تەرجىمە قىلىشنى " "قۇلايلاشتۇرىدۇ." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "قۇرۇلۇش قوش" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "قۇرۇلۇش قوش" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - كاتالوگ باشقۇرغۇچ" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "تەھرىر…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "ÙŠÛÚ­Ù‰ تەرجىمە قۇرۇلۇشى قۇر" #: src/manager.cpp:145 msgid "Delete the project" msgstr "قۇرۇلۇش ئۆچۈر" #: src/manager.cpp:146 msgid "Edit the project" msgstr "بۇ قۇرۇلۇشنى تەھرىرلە" #: src/manager.cpp:176 msgid "Update all" msgstr "ھەممىنى ÙŠÛڭىلا" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "قۇرۇلۇشتىكى بارلىق كاتالوگنى ÙŠÛڭىلا" #: src/manager.cpp:378 msgid "Total" msgstr "جەمئى" #: src/manager.cpp:379 msgid "Untrans" msgstr "تەرجىمە قىلىنمىغان" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "ئىشلەش زۆرۈر" #: src/manager.cpp:381 msgid "Errors" msgstr "خاتالىق" #: src/manager.cpp:382 msgid "Last modified" msgstr "ئاخىرقى ئۆزگەرتىش" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "مۇندەرىجە تاللا" #: src/manager.cpp:433 msgid "Directories:" msgstr "مۇندەرىجە:" #: src/manager.cpp:503 msgid "" msgstr "<ئاتسىز>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "قۇرۇلۇش «%s» نى ئۆچۈرەمسىز؟" #: src/manager.cpp:540 msgid "Delete project" msgstr "قۇرۇلۇش ئۆچۈر" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "بۇ قۇرۇلۇش ئۆچۈرۈلسە Ú¾Ûچقانداق تەرجىمە ھۆججىتىنى ئۆچۈرمەيدۇ." #: src/manager.cpp:571 msgid "Confirmation" msgstr "جەزملە" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "بۇ قۇرۇلۇشتىكى بارلىق كاتالوگنى ÙŠÛڭىلامدۇ؟" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "بۇ قۇرۇلۇشتىكى ھەممە ھۆججەتنى ئەسلى كودتىن ÙŠÛڭىلايدۇ." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "قۇرۇلۇش مۇندەرىجىسىنى ÙŠÛڭىلاۋاتىدۇ" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "ÙŠÛڭىلاشنى تەكشۈر…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "كاتالوگ باشقۇرغۇچ" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "مايىللىق(&P)…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "تەھرىر(&E)" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "ÙŠÛنىۋال" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "قايتىلا" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "چاپلاپ ئۇسلۇبقا ماسلاش" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "ئۆچۈر" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "ئىملا Û‹Û• گرامماتىكا" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "ئىملا Û‹Û• گرامماتىكا كۆرسەت" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "پۈتۈكنى ھازىر تەكشۈر" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "خەت كىرگۈزۈۋاتقاندا ئىملا تەكشۈر" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "ئىملا Û‹Û• گرامماتىكا تەكشۈر" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "ئىملانى ئۆزلۈكىدىن توغرىلا" #: src/menus.cpp:219 msgid "Substitutions" msgstr "ئالماشتۇرىدىغان" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "ئالماشتۇرىدىغاننى كۆرسەت" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "ئىدراكلىق كۆچۈر/چاپلا" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "ئىدراكلىق قوش Ù¾Û•Ø´" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "ئىدراكلىق سىزىقچە" #: src/menus.cpp:226 msgid "Smart Links" msgstr "ئىدراكلىق ئۇلانما" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "تÛكىست ئالماشتۇرۇش" #: src/menus.cpp:230 msgid "Transformations" msgstr "ئۆزگىرىش" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Ú†ÙˆÚ­ ھەرپكە ئۆزگەرت" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "كىچىك ھەرپكە ئۆزگەرت" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Ú†ÙˆÚ­ ھەرپ" #: src/menus.cpp:237 msgid "Speech" msgstr "تاۋۇش" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "سۆزلەشنى باشلا" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "سۆزلەشنى توختات" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "ﻛﯚﺭﯛﻧﯜﺵ(&V)" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "قورال بالداقنى كۆرسەت" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "ئىختىيارىچە قورال بالداق" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "پۈتۈن ئÛكرانغا كىر" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "كۆزنەك" #: src/menus.cpp:263 msgid "Minimize" msgstr "كىچىكلەت" #: src/menus.cpp:264 msgid "Zoom" msgstr "ÙŠÛقىنلات يىراقلات" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Poedit غا مەرھابا" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "ھەممىسىنى ئەڭ ئالدىغا قوي" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "تەرجىمان ھەققىدىكى ئۇچۇر" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "ئاتى:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "ئاتىڭىز" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "ئÛلخەت:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "ئات Û‹Û• ئÛلخەت Ø¦Ø§Ø¯Ø±ÛØ³Ù‰Ú­Ù‰Ø² GNU gettext ھۆججىتىنىڭ Ø¨ÛØ´Ù‰Ø¯Ù‰ÙƒÙ‰ ئاخىرقى تەرجىمە " "قىلغۇچى ئۇچۇرى ئۈچۈن ئىشلىتىلىدۇ." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "تەھرىرلەۋاتىدۇ" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "ھۆججەت ساقلىغاندا ئۆزلۈكىدىن .mo ھۆججىتى ھاسىل قىلسۇن" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "ئىملا تەكشۈرۈش" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "خەت كىرگۈزۈش رايونىدىكى مەركىزى نۇقتىسىنى دائىم ئۆزگەرت" #: src/prefsdlg.cpp:211 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 "" "مەركىزى نۇقتىنى ھەرپ تىزمىسى جەدۋىلىدە توختاتماڭ. ئەگەر قوزغاتسىڭىز، چوقۇم " "Ctrl بىلەن يۆنىلىش كۇنۇپكىسىنى ئىشلىتىپ يول باشلىيالايسىز، ئەمما بۇنداق " "قىلسىڭىز دەرھال تÛكست كىرگۈزەلەيسىز، Tab نى Ø¨ÛØ³Ù‰Ù¾ مەركىزىي نۇقتىنى " "يۆتكىمىسىڭىزمۇ بولىدۇ." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "كۆرۈنۈشى" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "ئىختىيارىچە خەت نۇسخا ئىشلىتىش:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "ئىختىيارىچە تÛكىست بۆلىكى خەت نۇسخا ئىشلىتىش:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "كۆرۈنۈش تىلىنى ئۆزگەرت" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 ياكى ÙŠÛÚ­Ù‰ نەشرى زۆرۈر)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "ئادەتتىكى" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "تەرجىمە خاتىرىسىنى ئىشلەت" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "باشقۇرۇش…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "مەنبەدىن ÙŠÛڭىلىغاندا" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "ھۆججەتتىكى مۈجىمەل ماس كەلگىنى" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "تەرجىمە خاتىرىسىدىن ئالدىن تەرجىمە" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit ئىلگىرىكى تەرجىمە ھۆججىتى ياكى پۈتكۈل تەرجىمە خاتىرىڭىزگە ئاساسەن " "ÙŠÛÚ­Ù‰ بۆلەكنى تولدۇرۇشنى سىنايدۇ. ئاساسەن بوش بولغان تەرجىمە خاتىرىسىنى " "ئىشلىتىشنىڭ ئانچە ئۈنۈمى بولمايدۇ، بىراق ئۇنىڭغا ØªÛØ®Ù‰Ù…Û‡ ÙƒÛ†Ù¾ تەرجىمە قوشسىڭىز " "ئۇ ياخشىلىنىدۇ." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "ساقلانغان تەرجىمە:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "دىسكىدىكى ساندان چوڭلۇقى:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "تەرجىمە ھۆججىتىنى ئەكىر…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "تەرجىمە ھۆججىتىنى ئەكىر…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "TMX تىن ئەكىر…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "TMX تىن ئەكىر…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "TMX ÙƒÛ• چىقار…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "TMX ÙƒÛ• چىقار…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "ئەسلىگە قايتۇر" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "ئەكىرىدىغان تەرجىمە ھۆججىتىنى تاللاڭ" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "ئەكىرىدىغان TMX ھۆججىتىنى تاللاڭ" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX ھۆججەتلەر" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "تەرجىمىنى ئەكىرىۋاتىدۇ…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "تەرجىمە خاتىرىسىنى ئەكىرەلمىدى." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "«%s» دىن ئەكىرىۋاتىدۇ…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s تەرجىمە ئەكىرىلگەن." msgstr[1] "%s تەرجىمە ئەكىرىلگەن." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "سۈپىتىدە چىقار…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "تەرجىمىنى چىقىرىۋاتىدۇ…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "تەرجىمە خاتىرىسىنى «%s» غا چىقىرالمىدى." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "تەرجىمە خاتىرىسىنى ئەسلىگە قايتۇر" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "تەرجىمە خاتىرىسىنى راستلا ئەسلىگە قايتۇرامسىز؟" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "تەرجىمە خاتىرىسى ئەسلىگە قايتۇرۇلسا ساقلانغان بارلىق تەرجىمىنىڭ ھەممىسى " "پۈتۈنلەي ئۆچۈرۈلىدۇ. بۇ مەشغۇلاتتىن ÙŠÛنىۋالالمايسىز." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "تەرجىمە خاتىرىسى" #: src/prefsdlg.cpp:730 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 "" "مەنبە كود ئاجراتقۇچ مەنبە كودتىكى تەرجىمە قىلغىلى بولىدىغان ھەرپ تىزىقىنى " "ئىزدەپ Û‹Û• ئۇلارنى ئاجرىتىشقا ئىشلىتىلىدۇ، شۇڭلاشقا ئۇلارنى تەرجىمە قىلغىلى " "بولىدۇ." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "ئىختىيارىچە ئاجراتقۇچ:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "ئىختىيارىچە ئاجراتقۇچ:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "GNU gettext قورالى تونۇيالايدىغان بارلىق پىروگرامما تىللىرى (PHP, C/C++, C#, " "Perl, Python, Java, JavaScript Û‹Û• باشقىلار) نى قوللايدۇ." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "ئاجراتقۇچنى ئۆچۈر" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "«%s» يەشكۈچنى راستلا ئۆچۈرەمسىز؟" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "ئاجراتقۇچ" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Ú¾ÛØ³Ø§Ø¨Ø§ØªÙ„ار" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "ÙŠÛڭىلاشنى ئاپتوماتىك تەكشۈرسۇن" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "سىناق نەشرىمۇ ئىچىدە" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "سىناق نەشرىدە ئەڭ ÙŠÛÚ­Ù‰ ئىقتىدار Û‹Û• ياخشىلاشنى ئۆز ئىچىگە ئالىدۇ، ئەمما " "ئازراق مۇقىم بولماسلىقى مۇمكىن." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "ÙŠÛڭىلانمىلار" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "بۇ تەڭشەكلەر PO ھۆججەتلەرنىڭ ئىچكى پىچىمىغا تەسىر كۆرسىتىدۇ. ئەگەر سىزنىڭ " "مۇئەييەن تەلىپىڭىز مەسىلەن نەشر تىزگىنلەش، ئۇلارنى تەڭشەڭ." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "قۇر ئاخىرى:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (تەۋسىيە)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "كۆزنەكلەر" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "قۇر قاتلاش ئورنى:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "مەۋجۇت ھۆججەتنىڭ پىچىمىنى ساقلاپ قالىدۇ" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "ئالىي" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "تەڭشەكلەر" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "ھەرپ تىزىقىنى تەييارلاۋاتىدۇ…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "تەرجىمە خاتىرىسىدىن ئالدىن تەرجىمە قىلىۋاتىدۇ…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "ئالدىن تەرجىمە قىلىنغىنى %u تىزىق" msgstr[1] "ئالدىن تەرجىمە قىلىنغىنى %u تىزىق" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "ئالدىن تەرجىمە قىلىۋاتىدۇ…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d تىزىق ئالدىن تەرجىمە قىلىندى." msgstr[1] "%d تىزىق ئالدىن تەرجىمە قىلىندى." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "تەرجىمىگە ئىشلەش زۆرۈر بەلگىسى سÛلىنغان، چۈنكى ئۇلار توغرا بولماسلىقى " "مۇمكىن. ئۇلارنىڭ توغرىلىقىنى تەكشۈرۈڭ." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "تەرجىمە خاتىرىسىدىن دەل ماس كەلگىنى" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "تەرجىمە خاتىرىسىدىن تەخمىنەن ماس كەلگىنى" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "ئالدىن تەرجىمە قىلغىلى بولىدىغان تۈر يوق." #: src/pretranslate.cpp:218 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 تەرجىمىڭىزدىن ÙŠÛØªÛ•رلىك ئۆگەنگەندىن " "ÙƒÛيىن ئاندىن ÙŠÛØ±Ù‰Ù… ئاپتوماتىك تەرجىمىدە رولىنى جارى قىلدۇرىدۇ." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "مەنبە تÛكىستسىز ئالدىن تەرجىمە قىلالمايدۇ." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "ئالدىن تەرجىمە" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "ئالدىن تەرجىمە قىلىش ئۈچۈن مەنبە تÛكىستىنى ئىشلەتكىلى بولۇشى ÙƒÛØ±Û•Ùƒ. ئەگەر " "ئەمەلىي تÛكىست بولماي ID لا ئىشلىتىلسە ئىشلىمەيدۇ." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "نامەلۇم تىلدىن ئالدىن تەرجىمە قىلالمايدۇ." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "ئالدىن تەرجىمە قىلىش ئۈچۈن مەنبە تÛكىستنىڭ تىلى ئÛنىق بولۇشى ÙƒÛØ±Û•Ùƒ. Poedit " "بۇ ھۆججەتتىن ئۇنى بايقىيالمىدى." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "تولۇق ماس كەلگەننىلا تولدۇر" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "كۆڭۈلدىكى ھالەتتە، خاتا نەتىجىلەرمۇ بار، ئەمما ئىشلەش زۆرۈر بەلگىسى قويۇلدى. " "پەقەت مۇكەممەل ماسلاشتۇرۇش ئۈچۈن بۇ تاللانما تاللىنىدۇ." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "دەل ماسلاشقانغا ئىشلەش زۆرۈر بەلگىسى سالمايدۇ" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "پەقەت ئۆزىڭىزنىڭ تەرجىمە خاتىرە سۈپىتىڭىزگە ئىشەنگەندىلا ئاندىن قوزغىتىڭ. " "كۆڭۈلدىكى ئەھۋالدا، تەرجىمە خاتىرىسىدە ماس ÙƒÛ•Ù„Ú¯Û•Ù† ھەممىسىگە ئىشلەش زۆرۈر " "بەلگىسى قويۇلىدۇ ھەمدە ئىشلىتىشتىن ئىلگىرى قايتا تەكشۈرۈش ÙƒÛØ±Û•Ùƒ." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "ئالدىن تەرجىمە تەرجىمە خاتىرىسىدىكى دەل ياكى مۈجمەل ماس ÙƒÛ•Ù„Ú¯Û•Ù† تەرجىمە " "قىلمىغان تىزىقلارنى ئۆزلۈكىدىن ئىزدەپ تÛپىپ Û‹Û• ئۇلارنىڭ تەرجىمىسىنى " "تولدۇرىدۇ." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "خاتالىق: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d خاتالىق كۆرۈلدى:" msgstr[1] "%d خاتالىق كۆرۈلدى:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "بىر خاتالىق كۆرۈلدى." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d خاتالىق كۆرۈلدى." msgstr[1] "%d خاتالىق كۆرۈلدى." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "ۋاز ÙƒÛچىۋاتىدۇ…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "قىسقۇچ ياكى ھۆججەتنى بۇ جايغا سۆرەڭ" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "قىسقۇچ ياكى ھۆججەتنى بۇ جايغا سۆرەڭ" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "قىسقۇچ قوش…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "قىسقۇچ قوش…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "ھۆججەت قوش…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "ھۆججەت قوش…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "ئورتاق بەلگە قوش…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "ئورتاق بەلگە قوش…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "ئىزدىگۈچتە كۆرسەت" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "مەنبە باشقۇرغۇچتا كۆرسەت" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "قىسقۇچتا كۆرسەت" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "يول" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "مۇستەسنا يول" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "ئالىي ئاجرىتىش تەڭشەكلەر" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "تەرجىمانغا ئىزاھاتنى ئاجرىتىش ئورنى:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "ئالدى قوشۇلغۇچى ئىزاھاتى:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "ھەممە ئىزاھاتلار" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "قوشۇمچە xgettext بەلگىسى:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "قوشۇمچە ئاچقۇچلۇق سۆز" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "تەرجىمە قىلىدىغان قۇرۇلۇشنىڭ ئىسمى" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "قوشۇن ئىسمى Û‹Û• ئÛلخەت Ø¦Ø§Ø¯Ø±ÛØ³Ù‰ ياكى تور Ø¦Ø§Ø¯Ø±ÛØ³Ù‰" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "مەسىلەن: nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (تەۋسىيە)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "ئالدى بىلەن ھۆججەتنى ساقلاڭ. تۆۋەندىكى مەزمۇنلارنى ئۇنىڭدىن ئىلگىرى " "تەھرىرلىگىلى بولمايدۇ." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "ئورۇن بەلگىسى توغرىلىقى" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "تەرجىمىدە ئورۇن بەلگىسى «%s» ÙƒÛ•Ù…." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "مەنبە تÛكىستتە بولمىغان ئارتۇقچە ئورۇن بەلگىسى «%s»." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "كۆپلۈك شەكلى تەرجىمىسى" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "كۆپلۈك شەكىللىرىنىڭ ھەممىسىنى تەرجىمە قىلمىسىڭىزمۇ بولىدۇ." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Ú†ÙˆÚ­/كىچىك ھەرپ بىردەك ئەمەس" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "تەرجىمە جۈملە بىلەن باشلىنىدۇ." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "تەرجىمە كىچىك ھەرپ بىلەن باشلىنىدۇ." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "باغلاشمىغان بوشلۇق" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "تەرجىمە بوشلۇقتىن باشلانمايدۇ." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "تەرجىمە بوشلۇق بىلەن باشلانغان، ئەمما ئەسلى تÛكىست ئۇنداق ئەمەس." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "تەرجىمە ئاخىرىدا ÙŠÛÚ­Ù‰ بىر قۇر ÙƒÛ•Ù…." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "تەرجىمە ÙŠÛÚ­Ù‰ قۇر بىلەن ئاخىرلاشقان، ئەمما ئەسلى تÛكىستتە ئۇنداق ئەمەس." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "تەرجىمە ئاخىرىدا بىر بوشلۇق ÙƒÛ•Ù…." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "تەرجىمە بوشلۇق بىلەن ئاخىرلاشقان، ئەمما ئەسلى تÛكىست ئۇنداق ئەمەس." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "تىنىش بەلگە تەكشۈرۈش" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "تەرجىمە «%s» بىلەن ئاخىرلىشىشى ÙƒÛØ±Û•Ùƒ." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "تەرجىمە «%s» بىلەن ئاخىرلاشماسلىقى ÙƒÛØ±Û•Ùƒ." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "تەرجىمە «%s» بىلەن ئاخىرلاشقان، ئەمما ئەسلى تÛكىست «%s» بىلەن ئاخىرلاشقان." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "بۇلۇت" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "تىزىملىكنى تازىلا" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "تىزىملىكنى تازىلا" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "ئىزاھات:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "ÙŠÛڭىلا" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "ئۆچۈر(&D)" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "ئىزاھاتنى ئۆچۈر" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "قۇرۇلۇش تەھرىر" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "قۇرۇلۇش ئاتى:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "كۆز يۈگۈرت" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "تىزىملىككە مۇندەرىجە قوش" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "جەزملە" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "ھۆججەت(&F)" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "ÙŠÛÚ­Ù‰(&N)…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "&POT/PO ھۆججەتتىن ÙŠÛڭىدىن قۇر…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "&POT/PO ھۆججەتتىن ÙŠÛڭىدىن قۇر…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "ئاچ(&O)…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "ÙŠÛقىنقىنى ئاچ" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "ÙŠÛقىنقىنى ئاچ" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "بۇلۇت تەرجىمىسىنى ئاچ…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "بۇلۇت تەرجىمىسىنى ئاچ…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "باشلاش كۆزنىكى(&S)" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "باشلاش كۆزنىكى(&S)" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "كاتالوگ باشقۇرغۇچ(&M)" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "كاتالوگ باشقۇرغۇچ(&M)" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "ياپ(&C)" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "ساقلا(&S)" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "باشقا ئاتتا ساقلا(&A)…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "باشقا ئاتتا ساقلا(&A)…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "MO ھاسىللا…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "HTML چىقار(&X)…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "ÙŠÛڭىلاشنى تەكشۈر…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "تەڭشەكلەر…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "مايىللىق(&P)" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "ﭼﯧﻜﯩﻦ(&X)" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Ú†Ûكىن" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "بىرلىكتىن كۆچۈر" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "بىرلىكتىن كۆچۈر" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "تەرجىمىگە ئىشلەش زۆرۈر(&W)" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "تەرجىمىگە ئىشلەش زۆرۈر(&W)" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "ئىزاھات تەھرىر(&C)" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "ئىزاھات تەھرىر(&C)" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "تەۋسىيەلەر" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "ئىزدە…(&F)" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "ئالماشتۇر…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "تÛكىستتىن ئىزدە" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "ئالدىنقىنى ئىزدە" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "ئىزدە Û‹Û• ئالماشتۇر…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "ÙƒÛيىنكىنى ئىزدە" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "ئالدىنقىنى ئىزدە" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "تىزىق &ID نى كۆرسەت" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "تىزىق &ID نى كۆرسەت" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "ئاگاھلاندۇرۇشنى كۆرسەت" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "ئاگاھلاندۇرۇشنى كۆرسەت" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "ھۆججەت تەرتىپى بويىچە تەرتىپلە(&A)" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "ھۆججەت تەرتىپى بويىچە تەرتىپلە(&A)" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "مەنبە بويىچە تەرتىپلە(&S)" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "مەنبە بويىچە تەرتىپلە(&S)" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "تەرجىمە بويىچە تەرتىپلە(&T)" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "تەرجىمە بويىچە تەرتىپلە(&T)" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "تىل مۇھىتى بويىچە گۇرۇپپىلا(&G)" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "تىل مۇھىتى بويىچە گۇرۇپپىلا(&G)" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "خاتالىق بار تۈرلەر ئالدىدا" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "خاتالىق بار تۈرلەر ئالدىدا" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "تەرجىمە قىلىنمىغان بىرىنچى تۈر(&U)" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "تەرجىمە قىلىنمىغان بىرىنچى تۈر(&U)" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "كودنىڭ كۆرۈنىدىغان ئورنىنى كۆرسەت(&S)" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "كودنىڭ كۆرۈنىدىغان ئورنىنى كۆرسەت(&S)" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "يان بالداقنى كۆرسەت" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "ھالەت بالداقنى كۆرسەت" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "تەرجىمە(&T)" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "ئەسلى كودتىن ÙŠÛڭىلا(&U)" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "ئەسلى كودتىن ÙŠÛڭىلا(&U)" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Crowdin بىلەن قەدەمداشلا" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "ئالدىن تەرجىمە(&T)…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "تەرجىمىلەرنى دەلىللە(&V)" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "تەرجىمىلەرنى دەلىللە(&V)" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "مەنبە بىلەن ئوخشاش تەرجىمىلەرنى چىقىرىۋەت" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "ئۆچۈرۈلگەن تەرجىمىنى تازىلا(&P)" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "ئۆچۈرۈلگەن تەرجىمىنى تازىلا(&P)" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "خاسلىق(&P)…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "يۆتكەل(&G)" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "تامام Û‹Û• ÙƒÛيىنكى(&D)" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "تامام Û‹Û• ÙƒÛيىنكى(&D)" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "ئىلگىرى تەھرىرلەنگەن" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "ئىلگىرى تەھرىرلەنگەن" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "ئالدىنقى تەرجىمە(&P)" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "ئالدىنقى تەرجىمە(&P)" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "ÙƒÛيىنكى تەرجىمە(&N)" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "ÙƒÛيىنكى تەرجىمە(&N)" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "ئالدىنقى تاماملانمىغىنى(&R)" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "ئالدىنقى تاماملانمىغىنى(&R)" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "ÙƒÛيىنكى تاماملانمىغىنى(&X)" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "ÙƒÛيىنكى تاماملانمىغىنى(&X)" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "ئالدىنقى كۆپلۈك شەكلى" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "ئالدىنقى كۆپلۈك شەكلى" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "ÙƒÛيىنكى كۆپلۈك شەكلى" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "ÙƒÛيىنكى كۆپلۈك شەكلى" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "توردىكى ياردەم(&O)" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "توردىكى ياردەم(&O)" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext قوللانمىسى" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext قوللانمىسى" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "Poedit ھەققىدە(&A)" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "ھەققىدە(&A)" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "ئاجراتقۇچ ئورنات" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "تىزىملىكتىكى ÙƒÛڭەيتىلگەن نام Ù¾Û•Ø´ بىلەن ئايرىلىدۇ (مەسىلەن: *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "يۆتكەپ ئىشلىتىش جەريانى:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "تەرجىمە ئاجرىتىش بۇيرۇقى:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "بۇ يەشكۈچ بۇيرۇقىنى ئىجرا قىلىشقا ئىشلىتىلىدۇ\n" "\n" "%o چىقىرىدىغان ھۆججەتنىڭ ئىسمى،\n" "%K ھالقىلىق سۆز تىزىملىكى،\n" " %F كىرگۈزگەن ھۆججەت تىزىملىكى،\n" " \n" "%C ھەرپ بەلگە تىزمىسى بەلگىسى (تۆۋەندىكىنى كۆرۈڭ)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "ھالقىلىق سۆز تىزىملىكىدىكى بىر تۈر:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "ھەر بىر ھالقىلىق سۆزگە قارىتا يۇقىرىدىكى مەزمۇن بۇيرۇق قۇرىنىڭ كەينىگە " "قوشۇلىدۇ. %k ھالقىلىق سۆز بولۇپ ÙŠÛØ´Ù‰Ù„ىدۇ." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "ھۆججەت تىزىملىكى كىرگۈزۈشتىكى بىر تۈر:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "كىرگۈزگەن ھەر بىر ھۆججەتكە نىسبەتەن يۇقىرىدىكى مەزمۇن بۇيرۇق قۇرىنىڭ " "كەينىگە قوشۇلىدۇ. %f ھۆججەت نامى بولۇپ ÙŠÛØ´Ù‰Ù„ىدۇ." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "مەنبە كودىنىڭ كودلىنىشى:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "پەقەت مەنبە كود ھەرپ توپلىمىدا بەلگىلىگەندىلا ئاندىن بۇيرۇق قۇرىغا قوشۇلىدۇ. " "%c ھەرپ توپلىمى قىممىتى قىلىپ ÙŠÛØ´Ù‰Ù„ىدۇ." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "تەرجىمە خاسلىقى" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "قۇرۇلۇش ئاتى Û‹Û• نەشرى:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "تىل قوشۇنى:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "كۆپلۈك شەكلى:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "بۇ تىلنىڭ كۆڭۈلدىكى قائىدىسىنى ئىشلەت" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "ئىختىيارىچە ئىپادە ئىشلەت" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "كۆپلۈك ھەققىدە بىلدۈرگۈ" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "كودلاش:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "ئالىي ئاجرىتىش تەڭشەكلەر…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "ئالىي ئاجرىتىش تەڭشەكلەر…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "تەرجىمە خاسلىقى" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "مەنبە يول" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "مەنبە يول" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "تÛكىستنى مەنبە ھۆججەتتىن تۆۋەندىكى مۇندەرىجىگە چىقار:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "ئاساسىي يول:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "مەنبە ئاچقۇچلۇق سۆز" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "مەنبە ئاچقۇچلۇق سۆز" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "بۇ ئاچقۇچلۇق سۆزلەر (Ùۇنكىتسىيە نامى)نى ئىشلىتىش ئارقىلىق مەنبە " "ھۆججەتلەردىكى تەرجىمە قىلغىلى بولىدىغان ھەرپ تىزمىسىنى تونۇيدۇ:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "قوللايدىغان تىللارغىمۇ كۆڭۈلدىكى ئاچقۇچلۇق سۆزنى ئىشلىتىدۇ" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Gettext ئاچقۇچلۇق سۆز ھەققىدە بىلدۈرگۈ" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "ھۆججەت ئاچ" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "ھۆججەت ساقلا" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "دەلىللەش" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "تەرجىمىدىكى خاتالىقلارنى تەكشۈر" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "كودتىن ÙŠÛڭىلا" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "كودتىن ÙŠÛڭىلا" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "ئەسلى كودتىن ÙŠÛڭىلا" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "يان بالداق" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "يان بالداقنى كۆرسەت ياكى يوشۇر" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "ئالدىنقى مەنبە تÛكست" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "ھازىرقى توغرا بولمىغان تەرجىمىگە مۇناسىپ كونا ئەسلى تÛكىست (بۇ Ù‚ÛØªÙ‰Ù…لىق " "ÙŠÛڭىلاشتىن ئىلگىرى ئۆزگەرتىلگەن)" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "تەرجىمانلارغا ئىزاھات" #: src/sidebar.cpp:196 msgid "Comment" msgstr "ئىزاھات" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "ئىزاھات قوش" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "ئىزاھات قوش" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "تەرجىمە خاتىرىسىدىن ئۆچۈر" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "تەرجىمە خاتىرىسىدىن ئۆچۈر" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "تەرجىمە تەۋسىيەلىرى" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "ماس كەلگەنلىرى تÛپىلمىدى" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "ماس كەلگىنى تÛپىلمىدى" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "بۇ تىزىق Poedit نىڭ تەرجىمە خاتىرىسىدە بايقالدى." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "تەرجىمە تەۋسىيەسى ئۈچۈن مەنبە تÛكىستىنى ئىشلەتكىلى بولۇشى ÙƒÛØ±Û•Ùƒ. ئەگەر " "ئەمەلىي تÛكىست بولماي ID لا ئىشلىتىلسە ئۇلار ئىشلىمەيدۇ." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "تەرجىمە تەۋسىيەسى ئۈچۈن مەنبە تÛكىستنىڭ تىلى ئÛنىق بولۇشى ÙƒÛØ±Û•Ùƒ. Poedit بۇ " "ھۆججەتتىن ئۇنى بايقىيالمىدى." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "پروگراممىنى ئىجرا قىلالمايدۇ: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "بۇ TMX ھۆججىتىنىڭ پىچىمى خاتا." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "تەرجىمە خاتىرە ساندانى بۇزۇلدى: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "تەرجىمە خاتىرىسى خاتالىقى: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "كۆڭۈلدىكى تىلنى ئىشلەت" #: src/uilang.cpp:246 msgid "Language selection" msgstr "تىل تاللاش" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "ياقتۇرىدىغان تىلنى تاللاڭ" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "بۇ ئۆزگەرتىش ÙƒÛˆÚ†ÙƒÛ• ئىگە بولۇشى ئۈچۈن Poedit نى چوقۇم قايتا قوزغىتىڭ." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "ۋاقىتلىق قىسقۇچىنى قۇرالمىدى." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "تەرجىمىسى يوق. بۇ ئادەتتىكىدەك ئەمەس." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "تەرجىمە تۈرى Gettext سىستÛمىسىدا قولدا كىرگۈزۈلمەيدۇ، ئەمما مەنبە كودتىن " "ئۆزلۈكىدىن ئاجرىتىلىدۇ. بۇنداق بولغاندا، ئەڭ ÙŠÛÚ­Ù‰ Û‹Û• ئەڭ توغرا بولغان " "تەرجىمە قىلىشقا تÛگىشلىك تۈرلەرنى بىلەلەيمىز. تەرجىمانلار ئادەتتە " "ئىجادكارلار ئۇلارغا تەييارلاپ بەرگەن PO Ù‚Ûلىپ ھۆججەت (POT) نى ئىشلىتىدۇ." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "GNU gettext ھەققىدە ØªÛØ®Ù‰Ù…Û‡ ÙƒÛ†Ù¾ ئۇچۇر" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "بۇ ھۆججەتنىڭ تەرجىمىسىنى تولدۇرۇشنىڭ قۇلاي يولى ئۇنى POT تىن ÙŠÛڭىلاش:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "POT تىن ÙŠÛڭىلا" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "مەۋجۇت POT Ù‚Ûلىپىدىن تەرجىمە قىلغىلى بولىدىغان تىزىقنى ئاجرىتىدۇ." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "مەنبە كودتىن تەرجىمە قىلغىلى بولىدىغان ھەرپ تىزىقلىرىنى بىۋاسىتە " "ئاجرىتالايسىز:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "مەنبەدىن ياي" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "خاسلىقىدا ئەسلى كود ئاجرىتىش سەپلىمىسى." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "نەشر %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "ÙŠÛڭىدىن قۇر" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "ÙŠÛÚ­Ù‰ تەرجىمىنى POT Ù‚Ûلىپىدىن قۇرىدۇ." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "ھۆججەتكە كۆز يۈگۈرت" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "تەرجىمە ھۆججەتلەرنى ئÛچىپ Û‹Û• تەھرىرلەيدۇ." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "بۇلۇت قۇرۇلۇشى تەرجىمىسى" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "توردىكى باشقا كىشىلەر بىلەن ھەمكارلىشىڭ." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "ÙŠÛقىنقى ھۆججەتلەر" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "قەدەمداشلا" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "تەرجىمىنى Crowdin بىلەن قەدەمداشلايدۇ" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "%s ھەققىدە" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s مايىللىقلار" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "%s ھەققىدە" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "مۇلازىمەتلەر" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "%s نى يوشۇر" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "باشقىلارنى يوشۇر" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "ھەممىنى كۆرسەت" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "%s Ú†Ûكىن" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "مايىللىق…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "مايىللىق…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "مايىللىق…" #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "قوللان(&A)" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "قوللان" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "كەينى(&B)" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "قايت" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "ۋاز ÙƒÛ•Ú†(&C)" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "تازىلا(&C)" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "تازىلا" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "كۆچۈر" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "كەس(&T)" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "كەس" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "تەھرىر" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "Ú†Ûكىن(&Q)" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "ياردەم" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "ÙŠÛÚ­Ù‰(&N)" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "ÙŠÛÚ­Ù‰" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "ياق(&N)" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "ياق" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "جەزملە(&O)" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "ئاچ…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "ئاچ(&O)…" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "ئاچ…" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "چاپلا(&P)" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "چاپلا" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "مايىللىق" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "قايتىلا(&R)" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "ÙŠÛڭىلا" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "باشقا ئاتتا ساقلا(&S)" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "باشقا ئاتتا ساقلا" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "ھەممىنى تاللا(&A)" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "ھەممىنى تاللا" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "ÙŠÛنىۋال(&U)" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "ھەئە(&Y)" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "ھەئە" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "ئۈستى" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "ئاستى" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "سول" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "ئوڭ" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "ئاگاھلاندۇرۇش: " poedit-3.6.3/locales/tg.mo0000644000175100001660000015435415011674351011101 Þ•”Å ! , !, -,8,<L,‰,Jœ,gç, O-Y- h-r- y-‡-Ž-”-œ-£-ª-°-¸-Ç-Ö-Ü-â-ë-ÿ-..).;.A.F.N.V.h.z.~. ‚. .œ.¥.®. µ.Â.Ò.è.þ. /)/E/K/Q/Z/`/i/o/‹/§/À/Ù/ð/0 00)0 G0 S0]0f0 o0 {0ˆ0—0 §0³0 Í0Ú0é0ù0 1(111Q1n1Ž1 ¤11±1'ã1 2(2 B2M27S26‹2Â2)â2 3 3]3z3$3²3¹3"À3ã3 þ3 44-4>4Q4Z4m4‰4¥4#º4Þ4ó4555,525 M5n5w55  5®5/É5 ù56 6646G6]6|6•6¬6 Ì6Ú6ß6ò677757<7[7l7‹7 ž7?«7 ë7 ù78*8D8"W85z8°8¶8 »8 É8 ×8 ä8 ñ8þ8999&989R9ul9â9õ9 ü9:: ':4:0E:v::#¥:<É:; ;*!;!L;'n;–;›;(º;Tã;8< =< G<U<i<z<< ¤< ®< ¼< É<Ö<å<ô<ü< == !=,= 1=>=N=m=©p=‡> ¢>®>Á>Ý>ð> ?&? i Ži œi¦iµiÏiéi.ûi.*j Yjej mjxj Šj «jÌjÒjÖjñj kk2kDkckxk•k²k<Ëk<lEl#Ulyl˜l%±l×l5ðl5&m*\m*‡m²mÑm ïmým,nH0n yn ‡n”n©n"¸n)Ûn/o-5o"co@†o)Ço/ño-!p'Op1wp©p5¸p2îp5!q(Wq€q‚˜qgr?ƒrRÃrs0s|JsÇs0ItcztÞtít»u'ÂuEêu0vJvIbv9¬væv+w+,w*Xw7ƒw»wÑw(íw1x$Hx5mx(£xÌxäx&øx&yFy1UyB‡y Êy#Ôy*øy#z6>zauz ×zäz<{A?{<{A¾{4|/5|'e|<|Ê|Ý|+í|+}6E}|}A‹}Í}8ã}5~8R~"‹~®~“Á~Ur'Žm¶'$€IL€[–€ò€ %%5$[$€&¥Ìæû ‚-9‚Og‚O·‚ñƒ$ùƒ „+„'4„ \„'}„ ¥„YÆ„* …(K…Mt…hÂ…,+†X†6v†U­†;‡?‡.H‡Ew‡³½‡qˆ€ˆ ˆ0¼ˆ"íˆ-‰(>‰g‰‡‰"£‰"Ɖ*é‰*Š ?Š,MŠ zŠ †Š‘Š ¥Š5°Š7æŠ@‹ _‹Ij‹.´Œ:ã%Ž@DŽ%…Ž@«Ž*ìŽ(3@tЦ¶PÎ?_|˜ ±&½RäI7‘‘9¡‘oÛ‘K’Žf’kõ’)a“)‹“+µ“ á“0ï“ ”/A”q”,y”,¦” Ó” ô”ß•õ–!ü–!—@—(V—(—¨—-­—LÛ—-(˜BV˜Q™˜Fë˜2™9™g>™B¦š,éš&›&=›d›v›ˆ› —›*¢›*Í›&ø›)œIœh*y¤!³ñÕ‹ÇžSŸkŸ„Ÿ"œŸ^¿Ÿ Z3¢!Ž¢°¢΢Wì¢0D£ñu£g¤|¤¤P¨¤$ù¤$¥&C¥j¥ ¥‹¥;š¥Ö¥"奦'¦?¦+]¦+‰¦µ¦ Ó¦9ô¦.§JJ§Ð•§ f¨s¨(‹¨(´¨$ݨ'©**©)U©(©=¨©æ©7ª7>ªvªª3¬ªEàª5&«0\«#«1±«(ã«P ¬3]¬5‘¬0Ǭ(ø¬!­;­Q­d­"z­­°­?Ê­% ®#0®#T®(x®$¡®Æ®(æ®$¯4¯/T¯Ù„¯4^°“°²°)Ѱ!û°$±(B±k±xt±6í± $² E²(f²²®²òزòë³Þ´*÷´6"µYµ#rµ:–µUѵ'¶*¶u=¶f³¶·ƒ6·Eº¸r¹¶s¹*»Ì¬»œy¼B½¥Y½3ÿ½†3¾|º¾r7¿Kª¿Fö¿=À=AÁAÁEÁÁBÂCJÂiŽÂøÂRÄžeÄ,Åq1Æa£Ç ÈÃÉÑÓÉ ¥Ê²Ê(ÇÊðÊÿÊË29Ë%lËc’Ë6öË2-Ì%`̜̆Ì#¡ÌÅÌ@ÝÌ"ÍAÍ\ÍLzÍ&ÇÍ&îÍ)Î$?Î)dÎ)ŽÎ¸ÎÖÎ"éÎC Ï6PÏ.‡Ï1¶ÏeèÏMNМÐ4_Ñ ”Ñ¡ÑÁÑEÕÑÒ3;Ò(oÒ˜Ò§Ò¯ÒËÒ)áÒ Ó‘Ój¢Ó~ ÔŒÔežÔâÕçÕðÕ Öh/Ö+˜Ö>ÄÖJ×N×m×s×|ׂ׉גיעצ׫ױׯ×,åר&Ø:Ø$KØ%pØ–Ø7´ØÓéâ˜ÿR†7NÍ×—]ô~WÝÜ÷õ›‡æ‹6<Ë¢Áí yOM|•z¥X§›;—Žˆip‘Ð@oÛÞ4Õ¨žjަ ßÉ[Õv¼« ÁÆIöž¿_îƒÍº™Yäµî ¶üwdç}Êë" \d;gèçßSn9K Mg3š¹ÀLÂGvÎFV𤵲eýR|o 0-®ÑÅKÖúË)nAÌPõñÐÙ]«†VQr^U”êÚªa>’~ýw£:´ ¥,ŸèïtX5Ó1+Z' ÂÏù<TTu%È*°UÑŒª¿r®Hƒ[ì!¢„³Û¨ó·k/ˆò ÊL ,YQ ¬½=÷Èø{ü³ å/s'2Æ(*ÿ¯å5þ+¡¾Oú}¾q¡¦9؇?s‹h$@þí¼8œ€ ½¹Ôû»!Jô&AENãeŒø`iÞ §C%–ê™Jæ3´:Gh­c7Dp#à•¸`BéŠ.¬82tb?ÄZIº±ä$ÒÙál_C1jaÉmݱ΀Ïò·­‚ûc WÖ"ëŸ(f>Ü)„^\âÀ”؉S׸ã6²…‘Ŷm“{xö q»Bì4£lÌÄ©EPÃ…ï#&f¯¤ózñÒàDá=-’Çb.©ÔÚ‰xH˜ u–ðFœ°ÇšŠky ù“0 (modified) (unsaved)%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountsAdd CommentAdd Files…Add Folders…Add Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken markup in translation string.BrowseCancelCannot create temporary directory.Cannot execute program: %sCapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear TranslationClear translationCloseCollecting source files…Command to extract translations:Comment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationCopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t save file %s.Create new translationCreate new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete the projectDirectories:Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileErrorsEverythingExcluded pathsExport To TMX…Export as…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageIDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.Ignore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…Include beta versionsInformation about the translatorInstallInvalid fileInvocation:KeepLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMalformed header: “%sâ€Manage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No matches foundNo problems with the translation found.Not all plural forms are translated.Not authorized, please sign in again.OKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen RecentOpen in EditorOpen in editorOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPermission denied.Please open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit is an easy to use translation editor.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.PreferencesPreferences...Preferences…Preserve formatting of existing filesPrevious Plural FormPrevious plural formProject name and version:Project name:Project:PurgePurge deleted translationsQuitRedoRefreshRemaining: %dReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.ReviewSaveSave &As…Save &as…Save asSave as…Save changesSelect &AllSelect AllSelect TMX files to importSelect directorySelect translation files to importSelect your preferred languageSet LanguageSet languageShow SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to CrowdinSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source textSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation — %sTwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)UntransUpdate allUpdate all catalogs in the projectUpdate from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating user information…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown language“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Tajik Language: tg_TJ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: tg X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (тағйирёфта) (нигоҳ дошта нашуд)%d вуруд%d вуруд%d Ñатр пешакӣ тарҷума карда шуд.%d Ñатр пешакӣ тарҷума карда шуд.%d хато%d хато%d маÑъалаи тарҷума пайдо шудааÑÑ‚.%d маÑъалаи тарҷума пайдо шудааÑÑ‚.%i Ñатри файли “%s†ба таври дуруÑÑ‚ бор нашудааÑÑ‚.%i Ñатри файли “%s†ба таври дуруÑÑ‚ бор нашудааÑÑ‚.Формати %sХуÑуÑиÑтҳои %sФормати %s&Дар бораи PoEdit&Дар бораи Poedit&Татбиқ кардан&Бозгашт&Бекор кардан&Пок кардан&Пӯшидан&ÐуÑха бардоштан&ÐеÑÑ‚ кардан&Татбиқ кардан ва ба Ñатри дигар гузарондан&Татбиқ кардан ва ба Ñатри дигар гузарондан&Таҳрир&Файл&Ðфтан…&Кумаки GNU gettext&Кумаки GNU gettext&Гузаштан&Гурӯҳбандӣ аз рӯи қарина&Гурӯҳбандӣ аз рӯи қарина&Кумак&Ðав&Ðав…&Ðавбатӣ >&Тарҷумаи навбатӣ&Тарҷумаи навбатӣ&Ðе&OK&Кумаки онлайн&Кумаки онлайн&Кушодан...&Кушодан…&Гузоштан&Танзими барнома&Танзимот…&Тарҷумаи қаблӣ&Тарҷумаи қаблӣ&ХуÑуÑиÑтҳо…&Пок кардани тарҷумаҳои неÑтшуда&Пок кардани тарҷумаҳои неÑтшуда&Баромад&Дубора анҷом додан&Ҷойгузин кардан&Ðигоҳ доштан&Ðигоҳ доштан ҳамчун&Ботил Ñохтан&Ðввал Ñатрҳои тарҷуманашуда&Ðввал Ñатрҳои тарҷуманашуда&ÐавÑозӣ аз манбаи рамз&ÐавÑозӣ аз манбаи рамз&Санҷиши тарҷумаСанҷиши тарҷума&Ðамоиш&Ҳа(ИÑтифодаи забони аÑоÑÓ£)(Windows 8 Ñ‘ верÑиÑи навтарро талаб мекунад)< &Қаблӣ<беном>Дар бораи %sҲиÑобҳоИлова кардани шарҳИлова кардани файлҳо…Илова кардани ҷузвдонҳо…Илова кардани аломатҳо…Илова кардани шарҳИлова кардани Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð±Ð° рӯйхатИлова кардани файлҳо…Илова кардани ҷузвдонҳо…Илова кардани аломатҳо…Калидвожаҳои иловагӣБайрақчаҳои иловагии xgettext:ИловагӣТанзимоти иловагии барориш…Танзимоти иловагии бароришТанзимоти иловагии барориш…Ҳамаи файлҳои тарҷумаҲамаи шарҳҳоИнчунин аз калидвожаҳои пешфарз барои забонҳои даÑÑ‚Ñ€Ð°Ñ Ð¸Ñтифода баредДоимо тағйир додани маркази диққат ба ҳошиÑи матнгузорӣОбъект дар рӯйхати файлҳои вурудӣ:Илова кардани объект ба рӯйхати калидвожаҳо:Ðамуди зоҳирӣТатбиқ карданШумо мутмаин ҳаÑтед, ки мехоҳед ваÑилаи барориши “%sâ€-ро неÑÑ‚ кунед?Шумо мутмаин ҳаÑтед, ки мехоҳед ҳофизаи тарҷумаро дубора танзим кунед?Санҷиши худкори навÑозиҳоОмодаÑозии файли MO ба таври худкор ҳангоми захиракунӣБозгаштМаÑири аÑоÑÓ£:ВерÑиÑҳои бета хуÑуÑиÑтҳои нав ва такмилҳоро дар бар мегиранд, вале метавонанд каме ноуÑтувор бошанд.Ҳамаро ба пеш гузоредҚайди вайроншуда дар Ñатри тарҷумавӣ.Тамошо карданБекор карданДиректориÑи муваққатӣ Ñҷод карда нашуд.Барнома иҷро карда намешавад: %sҲарфҳои калонМудири &файлҳои тарҷумаМудири &файлҳои тарҷумаМудири файлҳои тарҷумаИваз кардани забони интерфейÑРамзгузорӣ:Санҷиши ҳуҷҷатСанҷиши имлои тарҷумаСанҷиши имло ҳангоми навиÑСанҷиши навÑозиҳо…Санҷиши хатогиҳо дар тарҷумаСанҷидани навÑозиҳо…Санҷиши имлоПок карданТоза кардани тарҷумаТоза кардани тарҷумаПӯшиданҶамъкунии файлҳои манбаъ…Фармон барои баровардани тарҷумаҳо:Шарҳ:Шарҳҳо бо пешванди:Ð¢Ð°Ò³Ð¸Ñ ÐºÐ°Ñ€Ð´Ð°Ð½Ð¸ файли MOâ€¦Ð¢Ð°Ò³Ð¸Ñ ÐºÐ°Ñ€Ð´Ð°Ð½â€¦Ð¤Ð°Ð¹Ð»Ò³Ð¾Ð¸ тарҷумавии таҳиÑшудаБаровардани рамзи манбаро дар Танзимот танзим кунед.ТаÑдиқÐуÑха бардоштанÐуÑха бардоштан аз Шумораи танҳоÐуÑха бардоштан аз матни Ñатри аÑлӣÐуÑха бардоштан аз шумораи танҳоÐуÑха бардоштан аз матни Ñатри аÑлӣСанҷиши имло ба таври худкорФайли %s нигоҳ дошта нашуд.Ðз нав тарҷума карданЭҷод кардани лоиҳаи тарҷумаи навХатои Crowdin&БуриданИнтихоби тарзи барориш:Интихоби тарзи барориш:Фармоиш додани навори абзор…БуриданÐндозаи пойгоҳи иттилоотӣ дар диÑк:ÐеÑÑ‚ карданÐеÑÑ‚ кардан аз ҳофизаи тарҷумаÐеÑÑ‚ кардани ваÑилаи бароришÐеÑÑ‚ кардан аз ҳофизаи тарҷумаÐеÑÑ‚ кардани лоиҳаФеҳриÑтҳоОё шумо мехоҳед, ки ҳамаи тарҷумаҳоеро, ки дигар иÑтифода намешаванд, неÑÑ‚ кунед?&Ðигоҳ надоштанÐигоҳ надоштанÐз нав намоиш надоданМутобиқатҳои аниқро ҳамчун "Бозбинӣ лозим аÑÑ‚" қайд накунедÐз нав намоиш надоданДар ҳоли боргирии тарҷумаҳои навтарин…Боргирии тарҷумаҳо барои ин лоиҳа ғайрифаъол шуд.&БаромадТаҳрир&Таҳрир кардани шарҳ&Таҳрир кардани шарҳТаҳрир кардани шарҳТаҳрир кардани шарҳТаҳрир кардани лоиҳаТаҳрири лоиҳаТаҳриркунӣТаҳрир кардан…Почтаи Ñлектронӣ:Кушодан дар Ñкрани пурраПеш аз ҳама Ñабтҳоро бо хатоҳо намоиш диҳедПеш аз ҳама Ñабтҳоро бо хатоҳо намоиш диҳедТарҷумаҳои хато бо ранги Ñурх дар рӯйхат қайд карда шудаанд. ТафÑилоти хатоҳо бо интихоби Ñатри тарҷумаи хато намоиш дода мешаванд.Хатои кушодани файлХатоҳоҲамаМаÑирҳои иÑтиÑношудаБаровардан ба TMX…Содир кардан ҳамчун…Баровардан ба TMX…Содиркунии ҳофизаи тарҷумаҳо аз “%s†иҷро нашуд.Содиркунии тарҷумаҳо…Баровардан аз манбаҳоБаровардани тавзеҳот барои тарҷумонон аз:Баровардани матн аз файлҳои манбаъ дар ҷузвдонҳои зерин:Танзими ваÑилаи бароришВаÑилаи бароришÐлоқа бо раванди Poedit қатъ шуд.Муттаҳид кардани файлҳои gettext баргузор нагашт.Ҳофизаи тарҷума навÑозӣ нашуд: %sФайлФайли “%s†вуҷуд надорад.Файли “%s†файли тарҷумавӣ намебошад.Файли “%s†танҳо барои хондан аÑÑ‚ ва нигоҳ дошта намешавад. Лутфан, онро бо номи дигар нигоҳ доред.ҶуÑтуҷӯҶуÑтуҷӯи навбатӣҶуÑтуҷӯи қаблӣÐфтан ва ҷойгузин кардан…ҶуÑтуҷӯ дар шарҳҳоÐфтан дар матнҳои манбаъҶуÑтуҷӯ дар тарҷумаҳоҶуÑтуҷӯи навбатӣҶуÑтуҷӯи қаблӣИÑлоҳ кадани забонИÑлоҳ кадани забонСарварақро иÑлоҳ кунедСарварақро иÑлоҳ кунедШакли %iШакли %i (иÑтифоданашуда)GNU gettextУмумӣФайлҳои HTMLКумакПинҳон кардани навори ҷонибӣПинҳон кардани навори вазъиÑтХабари огоҳии зеринро пинҳон кунедРақамÐгар тоза карданро идома диҳед, ҳама тарҷумаҳои ҳамчун неÑÑ‚ карда, бе бозгашт неÑÑ‚ мешаванд. Ðгар онҳо дар оÑнда баргашта илова шаванд, шумо онҳоро дигар тарҷума карда наметавонед.Ðгар шумо қаблан ба файлҳои худ даÑтраÑиро манъ кардед, шумо метавонед ба онҳо дар ХуÑуÑиÑтҳои низом > ÐмниÑÑ‚ ва махфиÑÑ‚ > МахфиÑÑ‚ > Файлҳо ва ҷузвадонҳо иҷозат диҳед.Рад кардани ҳарфҳои хурду калонВорид намудан аз TMX…Ворид намудани файлҳои тарҷумавӣ…Ворид намудан аз TMX…Ворид намудани файлҳои тарҷумавӣ…Воридкунии тарҷумаҳо…Иловаи верÑиÑҳои бетаМаълумот дар бораи тарҷумонÐаÑб карданФайли нодуруÑтДархоÑÑ‚:Ðигоҳ доштанЗабони тарҷума ва забони манбаъ баробаранд.Забони тарҷума танзим карда нашуд.Забони тарҷума:Интихоби забонДаÑтаи забон:Забон:Санаи тағйири охиринМаълумоти бештар дар бораи калидвожаҳои gettextМаълумоти бештар дар бораи шаклҳои ҷамъМаълумоти бештарМаълумоти бештар дар бораи CrowdinСатри %d дар файли “%s†вайрон шудааÑÑ‚ (Ñанаи %s беÑътибор аÑÑ‚).Ðнҷоми Ñатрҳо:Рӯйхати дарозкунии муддат бо нуқта-вергулҳо ҷудо карда мешаванд (миÑол *.cpp;*.h):Файлҳои MO метавонанд дар Poedit бевоÑита таҳрир карда шаванд.Табдил ба ҳарфҳои хурдТабдил ба ҳарфҳои хурдСарлавҳаи бадшакл: “%sâ€Ð˜Ð´Ð¾Ñ€Ð°â€¦ÐœÑƒÑ‚таҳидшавии фарқиÑтҳо…Ҳадди ақал ÑохтанÐоми лоиҳаи тарҷума бароиÐом:&Тарҷуманашудаи навбатӣ&Тарҷуманашудаи навбатӣБозбинӣ лозим аÑтБозбинӣ лозим аÑтБа рӯйхати Ñатр ҳаргиз нагузоред, ки маркази диққатро ишғол кунад. Ðгар фаъол бошад, шумо боÑд Ctrl-ақрабаки идора кардан аз клавиатура иÑтифода баред, аммо шумо инчунин имкони ворид кардани матнро бе заруриÑти пахш кардани Tab барои тағйироти маркази диққат доред.ÐавÐав аз файли &POT/PO…Ðав аз файли &POT/PO…Сатрҳои навШумораи ҷамъи навбатӣШумораи ҷамъи навбатӣÐеЯгон мутобиқат ёфт нашудЯгон Ñатр пешакӣ тарҷума карда намешавад.Ягон мутобиқат ёфт нашудЯгон хато дар тарҷума ёфт нашудааÑÑ‚.Ðа ҳамаи Ñатрҳои шакли ҷамъ тарҷума шудаанд.Ворид нашуд, лутфан аз нав ворид шавед.ХубЯкФаъол кунед, танҳо агар ба ТМ-и худ Ñътимод дошта бошед. Ба Ñутари пешфарз, ҳамаи мутобиқатҳо аз ТМ ҳамчун "Бозбинӣ лозим аÑÑ‚" ишора карда мешаванд ва боÑд пеш аз иÑтифода аз назар гузаронида шаванд.Ворид кардани танҳо мутобиқати аниқКушодани файлҳои охиринКушодан дар муҳаррирКушодан дар муҳаррирКушодан...Кушодан…ИмконотДигар&Тарҷуманашудаи пешина&Тарҷуманашудаи пешинаФайлҳои тарҷумавии POҚолибҳои тарҷумавии POTФайлҳои POT танҳо ҳамчун қолибҳо иÑтифода мешаванд ва худаш тарҷумаҳоро дар бар намегиранд. Барои тарҷума кардан, файли PO-и наверо дар аÑоÑи қолиб Ñҷод кунед.ГузоштанГузоштан мувофиқи ÑабкМаÑирҳоДаÑтраÑÓ£ манъ аÑÑ‚.Лутфан, ба ҷоÑш Ñгон файли PO-и мувофиқро кушоед ва таҳрир кунед. Вақте ки шумо онро захира мекунед, файли MO низ навÑозӣ карда мешавад.Лутфан, аввал файлро нигоҳ доред. То он гоҳ ин қиÑмат таҳрир карда намешавад.Шумораи ҷамъШаклҳои ҷамъ:Барномаи PoeditМудири файлҳо - PoeditPoedit муҳтавои беÑътиборро дар файли “%s†иÑлоҳ кард.Poedit метавонад тарҷумаҳои навро танҳо аз тарҷумаҳои пешакӣ аз дохили файл Ñ‘ ин ки аз ҳофизаи тарҷумаҳо пешниҳод кунад. ИÑтифодаи TM (ҳофизаи тарҷумаҳо) бефоида аÑÑ‚, агар он холӣ бошад, вале агар шумо ба TM тарҷумаҳои зиёдро илова кунед, ҳофизаи тарҷумаҳо ба шумо биÑёр Ñамаранокии ҳақиқӣ меорад.Барномаи Poedit барои тарҷумаи файлҳо хеле оÑон аÑÑ‚.&Тарҷумаи пешакӣ…Тарҷумаи пешакӣТарҷумаи пешакӣТарҷумаи пешакии %u ÑатрТарҷумаи пешакии %u ÑатрДар ҳоли тарҷумаи пешакӣ…Тарҷумаи пешакӣ мувофиқатҳои аниқ Ñ‘ монандро аз ҳофизаи тарҷума барои Ñатрҳои тарҷуманашуда ҷуÑтуҷӯ мекунад ва пешниҳод менамоÑд.ХуÑуÑиÑтҳоТанзимот...ХуÑуÑиÑтҳо…ИÑтифодаи қолаббандӣ аз файлҳои мавҷудбудаШумораи ҷамъи қаблӣШумораи ҷамъи қаблӣÐоми лоиҳа ва верÑиÑ:Ðоми лоиҳа:Лоиҳа:ПокÑозӣПок кардани тарҷумаҳои неÑтшудаБаромадДубора анҷом доданÐавÑозӣДар ҳоли ивази номи: %dҶойгузин карданҲамаро ҷойгузин &карданҲамаро ҷойгузин &карданСатри ҷойгузорӣҶойгузин кардан…Сарлавҳаи шакли ҷамъ лозим аÑÑ‚.Танзими дубораДубора танзим кардани ҳофизаи тарҷумаҳоПокÑозии тарҷумаҳо аз ҳофизаи тарҷумаҳо ҳамаи тарҷумаҳоро бебозгашт неÑÑ‚ мекунад. Ин амал ботил Ñохта намешавад.ТафтишÐигоҳ доштан&Ðигоҳ доштан ҳамчун…&Ðигоҳ доштан ҳамчун…Ðигоҳ доштан ҳамчунÐигоҳ доштан ҳамчун…Ðигоҳ доштани тағйирот&Ҳамаро интихоб карданҲамаро интихоб карданИнтихоби файлҳои TMX барои воридотИнтихоби ҷузвдонИнтихоби файлҳо барои тарҷумаЗабони дилхоҳро интихоб кунедТанзими забонИнтихоби забонÐамоиш додани навори ҷонибӣÐамоиши Ñанҷиши имло ва даÑтури забонÐамоиш додани навори вазъиÑÑ‚Ðамоиш додани рақами &ÑатрÐамоиши ивазкуниҳоÐамоиш додани навори абзорÐамоиш додани огоҳиҳоÐамоиш додан Ñ‘ пинҳон кардани навори ҷонибӣÐамоиш додани навори ҷонибӣÐамоиш додани навори вазъиÑÑ‚Ðамоиш додани рақами &ÑатрÐамоиш додани огоҳиҳоÐавори ҷонибӣВорид шуданБаромаданВорид шуданВорид шудан ба CrowdinБаромаданШумораи танҳоÐуÑха бардоштан/гузоштани ҳушмандТирегузории ҳушмандПайвандҳои ҳушмандÐохунакҳои ҳушмандÐз рӯи &тартиби файлҳоÐз рӯи &Ñатрҳои аÑлӣÐз рӯи &тарҷумаҳоÐз рӯи &тартиби файлҳоÐз рӯи &Ñатрҳои аÑлӣÐз рӯи &тарҷумаҳоРамзгузории Ñатрҳои аÑлӣ:ВаÑилаи барориши манбаи рамз барои ёфтани Ñатрҳои тарҷумашаванда ва баровардани онҳо барои тарҷума иÑтифода мешавад.Рамзи барнома даÑÑ‚Ð½Ð¾Ñ€Ð°Ñ Ð°ÑÑ‚.Матни Ñатри аÑлӣМатни манбаъ — %sКалидвожаҳои манбаъҳоМаÑирҳои манбаъҳоЛуғати Ñатрҳои аÑлӣМаÑирҳои Ñатрҳои аÑлӣÐутқТафтиши имло ғайрифаъол аÑÑ‚, зеро ки луғат барои %s наÑб нашудааÑÑ‚.Санҷиши имло ва даÑтури забонОғоз кардани нутқМанъ кардани нутқТарҷумаҳои захрашуда:Сатр барои ёфтанИвазкуниҳоПешниҳодҳоÐгар забони тарҷумаҳо нодуруÑÑ‚ танзим карда бошад, пешниҳодҳо даÑÑ‚Ð½Ð¾Ñ€Ð°Ñ Ð¼ÐµÑˆÐ°Ð²Ð°Ð½Ð´. ХуÑуÑиÑтҳои дигар, монанди шакли ҷамъ, метавонанд таъÑир раÑонанд.Ҳамаи забонҳои барномарезиеро, ки аз ҷониби абзорҳои GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript ва ғайра) шинохта мешаванд, даÑтгирӣ менамоÑд.ҲамоҳангÑозӣҲамоҳанг кардан бо CrowdinҲамоҳангÑозии тарҷума бо CrowdinҲамоҳангÑозӣХатои ҳамоҳангÑозӣҲамоҳангÑозӣ бо Crowdin иҷро нашуд.Хатои ÑинтакÑиÑÓ£ дар шакли ҷамъи Ñарлавҳа ("%s").TMФайлҳои TMXСатрҳоро барои тарҷума аз қолиби POT-и мавҷудбуда иÑтифода баред.Ðоми даÑта ва нишонии почтаи Ñлектронӣ Ñ‘ нишонии ÑомониИвазкунии матнҲофизаи тарҷумаҳо (TM) Ñгон пешниҳоди мувофиқро барои Ñатрҳои ин файл дар бар намегирад. TM-и ҷорӣ танҳо тарҷумаҳои ҷузъӣ ба таври худкор пешниҳод мекунад, баъд аз оне ки Poedit тарҷумаҳоро аз файлҳои қаблӣ ҷамъ кунад.Файли TMX дорои ҳакли нодуруÑÑ‚ мебошад.Файл ба формати MO табдил дода намешавад ва иÑтифода намешавад.Файл дорои объктҳои Ñкхела мебошад, ки барои файлҳои PO мутобиқат намекунанд ва иÑтифодабарии файлро қатъ мекунанд. Poedit мушкилиро иÑлоҳ кард, вале шумо боÑд тарҷумаҳои қайдшударо аз назар гузаронед ва дар ҳолати лозимӣ онҳоро иÑлоҳ намоед.Ин файл ба формати MO табдил шудааÑÑ‚, вале метавонад дуруÑÑ‚ кор накунад.Файли тарҷумашуда бо муваффақиÑÑ‚ нигоҳ дошта шуд ва ба шакли МО табдил ёфт, вале мумкин он дуруÑÑ‚ кор намекунад.Файли шумо бехатар захира шудааÑÑ‚, аммо ба формати МО барои иÑтифода Ñохта намешавад.Файл бо муваффақиÑÑ‚ нигоҳ дошта шуд.Матни манбаи куҳна (пеш аз тағйир ҳангоми навÑозӣ), ки ба тарҷумаҳои ноÑаҳеҳ тааллуқ дорад.Тарҷума бо фоÑила Ñар нашуд.Тарҷума дар охири матн Ñатри нав дорад, вале матни аÑлӣ Ñатри нав надорад.Тарҷума дар охири матн фоÑила дорад, вале матни аÑлӣ фоÑила надорад.Тарҷума бо “%s†ба анҷом мераÑад, вале матни аÑлӣ “%s†надорад.Тарҷума дар охири матн Ñатри нав надорад.Тарҷума дар охири матн фоÑила надорад.Тарҷума барои иÑтифода тайёр аÑÑ‚, вале %d Ñатр то ҳол тарҷума нашудааÑÑ‚.Тарҷума барои иÑтифода тайёр аÑÑ‚, вале %d Ñатр то ҳол тарҷума нашудаанд.Тарҷума барои иÑтифода тайёр аÑÑ‚.Тарҷума боÑд бо “%s†ба анҷом раÑад.Тарҷума боÑд бо “%s†ба анҷом нараÑад.Тарҷума боÑд ҳамчун ҷумла Ñар шавад.Тарҷума боÑд бо ҳарфи хурд Ñар шавад.Тарҷума бо фоÑила Ñар шуд, вале матни аÑлӣ фоÑила надорад.Тарҷумаҳо ҳамчун "Бозбини лозим аÑÑ‚" қайд карда шудаанд, зеро ки онҳо метавонанд ноÑаҳеҳ бошанд. Шумо боÑд онҳоро барои Ñанҷиши хатоҳо аз назар гузаронед.Ягон тарҷума вуҷуд надорад. Ин ғайриоддӣ аÑÑ‚.Барои шаклÑозии хуби файли зерин мушкилиҳо пайдо шудаанд (аммо он хуб нигоҳ дошта шуд).Танзимоти мазкур ба форматгузории дохирии файлҳои PO таъÑир мераÑонад. Ðгар шумо талаботи махÑÑƒÑ Ð´Ð¾ÑˆÑ‚Ð° бошед, маÑалан ба Ñабаби идоракунии верÑиÑ, онҳоро Ð¼Ð¾Ñ ÐºÑƒÐ½ÐµÐ´.Ин фармон барои оғози ваÑилаи барориш иÑтифода мешавад. %o бо номи файли барориш, %K бо рӯйхати калимаҳои калидӣ, %F бо рӯйхати файлҳои вуруд, %C бо байрақи маҷмӯаи ҳарфҳо (поёнтар бинед) ваÑеъ карда мешавад.Ин тарҷума аз ҳофизаи тарҷумаҳои Poedit ворид карда шуд.Мазкур ба Ñатри фармонӣ замима карда мешавад. бо шарте, ки агар рамзгузории Ñатри аÑлӣ дода шуда бошад. %c бо воҳиди рамзгузорӣ иваз карда мешавад.Мазкур ба Ñатри фармонӣ Ñк бор барои ҳар Ñк файли вурудӣ замима карда мешавад. %f ба номи файл ваÑеъ мекунад.Мазкур ба Ñатри фармонӣ Ñк бор барои ҳар Ñк калимаи калидӣ замима карда мешавад. %k ба калимаи калидӣ ваÑеъ мекунад.ҲамагӣТабдилдиҳӣ%d аз %d (%d %%) тарҷума шудТарҷумаЗабони тарҷумаҲофизаи тарҷумаБозбинии тарҷума &лозим аÑтХуÑуÑиÑтҳои тарҷумаПойгоҳи иттилоотии ҳофизаи тарҷумаҳо вайрон аÑÑ‚: %s (%d).Хатои ҳофизаи тарҷумаҳо: %s (%d).Бозбинии тарҷума &лозим аÑтХуÑуÑиÑтҳои тарҷумаТарҷума — %sДуUTF-8 (тавÑÐ¸Ñ Ð¼ÐµÑˆÐ°Ð²Ð°Ð´)Ботил ÑохтанИÑтиÑнои иҷронашуда ба амал омад: %sUnix (тавÑÐ¸Ñ Ð¼ÐµÑˆÐ°Ð²Ð°Ð´)ТарҷуманашудаҶадидÑозии ҳамаҲамаи файлҳоро дар ин лоиҳа навÑозӣ кунедÐавÑозӣ аз файли &POT…ÐавÑозӣ аз файли &POT…ÐавÑозӣ кардан аз рамзÐавÑозӣ кардан аз POTÐавÑозӣ кардан аз рамзÐавÑозӣ аз манбаи рамзХулоÑаи навÑозӣÐавÑозиҳоÐавÑозӣ иҷро нашудДар ҳоли навÑозии маълумоти корбар…Дар ҳоли боркунии тарҷумаҳо…ИÑтифодаи ибораҳои шахÑӣИÑтифодаи шрифти фармоишӣ:ИÑтифодаи шрифти фармоишӣ барои майдонҳои вуруди матн:ИÑтифодаи қоидаҳои пешфарз барои ин забонИÑтифодаи калидвожаҳои зерин (номҳои Ñупориш) барои шинохтани Ñатрҳои тарҷумашаванда дар файлҳои манбаъ:ИÑтифодаи ҳофизаи тарҷумаҳоСанҷишÐатиҷаҳои ÑанҷишБарориши %sДар ҳоли интизори Ñанҷиши ҳаққониÑт…Хуш омадед ба PoeditҲангоми навÑозӣ аз манбаъҳоТанҳо калимаҳои пурраРавзанаWindowsҶуÑтуҷӯи даврӣГузарондан:Файлҳои тарҷумавии XLIFFҲаШумо инчунин метавонед Ñатрҳоро барои тарҷума аз рамзи манбъ бевоÑита бароред:Шумо зиёда аз Ñк файл ба равзанаи Poedit гузошта наметавонед.Барои татбиқ кардани тағйирот, шумо боÑд барномаро аз нав оғоз кунед.Ðоми шумоТағйироти шумо гум мешаванд, агар онҳоро нигоҳ надоред.Ðом ва почтаи Ñлектронии шумо танҳо барои намоиш додани тарҷумони охирин дар Ñарлавҳаҳои файлҳои GNU gettext иÑтифода мешаванд.СифрИнтихоби андозаБозбинӣ лозим аÑтфайлҳои муваққатиро неÑÑ‚ накунед (барои иÑлоҳи нуқÑонҳо)маÑалан, nplurals=2; plural=(n > 1);мувофиқати монанд дар дохили файлгузариш ба мавод дар рақами Ñатри лозимӣкоркарди poedit:// URICtrl+ПоёнEnterЧапРоÑÑ‚Shift+БолоaltctrlshiftДар бораи %sПинҳон кардани %sДигаронро пинҳон карданТанзимот...Пӯшидани %sХидматҳоҲамаро намоиш додантарҷумаи пешакӣ аз TMзабони номаълум“%s†файли POT-и боÑътимод неÑÑ‚.poedit-3.6.3/locales/th.po0000644000175100001660000035044015011674230011073 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Thai\n" "Language: th_TH\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" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: th\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "ซ่อนข้อความà¹à¸ˆà¹‰à¸‡à¹€à¸•ือนนี้" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "ไม่ต้องà¹à¸ªà¸”งอีà¸" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "ไม่ต้องà¹à¸ªà¸”งอีà¸" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "อัพเดตผลลัพธ์" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "ปิด" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "ไฟล์" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "สตริงใหม่" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸§à¸šà¸£à¸§à¸¡à¹„ฟล์ต้นฉบับ…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "ไม่สามารถโหลดไฟล์ที่มีà¸à¸²à¸£à¹à¸›à¸¥à¹à¸¢à¸" #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "ใน: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "ซอร์สโค้ดไม่พร้อมใช้งาน" #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "ไม่สามารถอัพเดตà¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸²à¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ดได้ เนื่องจาà¸à¹„ม่พบโค้ดใดๆ ในตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่ระบุในคุณสมบัติของไฟล์" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "สิทธิ์à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸–ูà¸à¸›à¸à¸´à¹€à¸ªà¸˜!" #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "คุณไม่ได้รับอนุà¸à¸²à¸•ให้อ่านไฟล์รหัสต้นฉบับจาà¸à¸•ำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่ระบุในคุณสมบัติของไฟล์" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "หาà¸à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¸„ุณปà¸à¸´à¹€à¸ªà¸˜à¸à¸²à¸£à¹€à¸‚้าถึงไฟล์ คุณสามารถอนุà¸à¸²à¸•ได้ในà¸à¸²à¸£à¸•ั้งค่าระบบ > " "ความเป็นส่วนตัวà¹à¸¥à¸°à¸„วามปลอดภัย > ไฟล์à¹à¸¥à¸°à¹‚ฟลเดอร์" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "หาà¸à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¸„ุณถูà¸à¸›à¸à¸´à¹€à¸ªà¸˜à¸à¸²à¸£à¹€à¸‚้าถึงไฟล์ของคุณ คุณสามารถอนุà¸à¸²à¸•ได้ในà¸à¸²à¸£à¸•ั้งค่าระบบ> " "ความปลอดภัยà¹à¸¥à¸°à¸„วามเป็นส่วนตัว> ความเป็นส่วนตัว> ไฟล์à¹à¸¥à¸°à¹‚ฟลเดอร์" #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "ไฟล์ “%s†ไม่สามารถเปิดได้" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸›à¹€à¸”ตà¸à¸²à¸£à¹à¸›à¸¥à¸ à¸²à¸©à¸²" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸œà¸ªà¸²à¸™à¸ªà¹ˆà¸§à¸™à¸—ี่à¹à¸•à¸à¸•่าง…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "ส่วนหัวมีรูปà¹à¸šà¸šà¸—ี่ไม่ถูà¸à¸•้อง: \"%s\"" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "ไฟล์à¸à¸²à¸£à¹à¸›à¸¥ PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "à¹à¸¡à¹ˆà¹à¸šà¸šà¸à¸²à¸£à¹à¸›à¸¥ POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "ไฟล์à¹à¸›à¸¥à¸ à¸²à¸©à¸² XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "ไฟล์à¹à¸›à¸¥ JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "ไฟล์à¹à¸›à¸¥ Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "ไฟล์à¸à¸²à¸£à¹à¸›à¸¥à¸—ั้งหมด" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "ไฟล์อยู่ในรูปà¹à¸šà¸šà¸—ี่ Poedit ไม่รู้จัà¸" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "ไฟล์ JSON นี้ไม่ใช่ไฟล์à¸à¸²à¸£à¹à¸›à¸¥à¹à¸¥à¸°à¹„ม่สามารถà¹à¸à¹‰à¹„ขได้ใน Poedit" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "à¸à¸²à¸£à¸­à¹ˆà¸²à¸™à¹€à¸™à¸·à¹‰à¸­à¸«à¸²à¹„ฟล์ล้มเหลวโดยมีข้อผิดพลาดต่อไปนี้: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "ไฟล์ \"%s\" อ่านได้อย่างเดียวà¹à¸¥à¸°à¹„ม่สามารถบันทึà¸à¹„ด้\n" "โปรดบันทึà¸à¹‚ดยใช้ชื่ออื่น" #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "ไม่สามารถบันทึà¸à¹„ฟล์ %s" #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "ภาพหน้าจอ" #: src/catalog_po.cpp:134 #, 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\" อย่างถูà¸à¸•้องได้" #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "ข้อมูลในบรรทัดที่ %d ในไฟล์ \"%s\" เสียหาย (ข้อมูล %s ไม่ถูà¸à¸•้อง)" #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "à¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸à¸²à¸£à¸—ี่เสียหาย: รูปà¹à¸šà¸šà¹€à¸­à¸à¸žà¸ˆà¸™à¹Œà¸–ูà¸à¹ƒà¸Šà¹‰à¸£à¹ˆà¸§à¸¡à¸à¸±à¸šà¸£à¸¹à¸›à¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œ" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "ไฟล์ PO เสียหาย: รูปพหูพจน์ msgstr ถูà¸à¹ƒà¸Šà¹‰à¹‚ดยไม่มี msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "ไม่สามารถโหลดไฟล์ เนื่องจาà¸à¸­à¸²à¸ˆà¹€à¸›à¹‡à¸™à¹€à¸žà¸£à¸²à¸°à¹„ฟล์เสียหาย" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะโหลดไฟล์ ข้อมูลบางส่วนอาจขาดหายหรือไม่ถูà¸à¸•้องดังผลลัพธ์" #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "มีปัà¸à¸«à¸²à¹ƒà¸™à¸à¸²à¸£à¸ˆà¸±à¸”รูปà¹à¸šà¸šà¹„ฟล์ให้เป็นระเบียบ (à¹à¸•่ไฟล์ถูà¸à¸šà¸±à¸™à¸—ึà¸à¹€à¸£à¸µà¸¢à¸šà¸£à¹‰à¸­à¸¢à¹à¸¥à¹‰à¸§)" #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "ไฟล์ไม่สามารถบันทึà¸à¹€à¸›à¹‡à¸™à¸Šà¸¸à¸”อัà¸à¸‚ระ \"%s\" อย่างที่ได้ระบุไว้ในà¸à¸²à¸£à¸•ั้งค่าà¸à¸²à¸£à¹à¸›à¸¥\n" "\n" "จะบันทึà¸à¹€à¸›à¹‡à¸™ UTF-8 à¹à¸—นà¹à¸¥à¸°à¸à¸²à¸£à¸•ั้งค่าจะบันทึà¸à¸•ามนี้" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "ข้อผิดพลาดขณะบันทึà¸à¹à¸Ÿà¹‰à¸¡" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†ไม่ใช่ไฟล์ POT ที่ถูà¸à¸•้อง" #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะโหลดไฟล์ XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "เวอร์ชั่นที่ไม่สนับสนุน (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "มาร์à¸à¸­à¸±à¸›à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹„ม่ได้ในà¸à¸²à¸£à¹à¸›à¸¥à¸ªà¸•ริง" #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "เชื่อมต่อ Poedit à¸à¸±à¸šà¹à¸žà¸¥à¸•ฟอร์มà¸à¸²à¸£à¹à¸›à¸¥à¸šà¸™à¸„ลาวด์ที่รองรับเพื่อซิงค์à¸à¸²à¸£à¹à¸›à¸¥à¸—ี่จัดà¸à¸²à¸£à¹„ด้อย่างราบรื่น" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "à¸à¸²à¸£à¸‹à¸´à¸‡à¸„์บนคลาวด์ทำงานอย่างไร" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "บัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(ไม่ได้เข้าสู่ระบบ)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "เปิดà¸à¸²à¸£à¹à¸›à¸¥à¸šà¸™à¸„ลาวด์" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "จัดà¸à¸²à¸£à¸šà¸±à¸à¸Šà¸µ" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "โครงà¸à¸²à¸£:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "ภาษา:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "ลงชื่อเข้าใช้บัà¸à¸Šà¸µà¸„ลาวด์" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "ลงชื่อเข้าใช้บัà¸à¸Šà¸µà¸„ลาวด์" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "ไม่มีโครงà¸à¸²à¸£à¹à¸›à¸¥à¸­à¸¢à¸¹à¹ˆà¹ƒà¸™à¸šà¸±à¸à¸Šà¸µà¸‚องคุณ" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸”าวน์โหลดà¸à¸²à¸£à¹à¸›à¸¥à¸¥à¹ˆà¸²à¸ªà¸¸à¸”…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "เข้าสู่ระบบ %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸‹à¸´à¸‡à¸„์" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸›à¹‚หลดงานà¹à¸›à¸¥à¹„ปยัง %s" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "à¸à¸²à¸£à¸­à¸±à¸›à¹‚หลดคำà¹à¸›à¸¥à¹„ปยัง %s ล้มเหลว" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "ข้อผิดพลาดà¸à¸²à¸£à¸‹à¸´à¸‡à¸„์" #: src/commentdlg.cpp:48 msgid "Add" msgstr "เพิ่ม" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "ข้อผิดพลาด Crowdin ที่ไม่รู้จัà¸" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "ไม่ได้รับอนุà¸à¸²à¸• โปรดเข้าสู่ระบบอีà¸à¸„รั้ง" #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "à¸à¸²à¸£à¸”าวน์โหลดà¸à¸²à¸£à¹à¸›à¸¥à¸–ูà¸à¸›à¸´à¸”ใช้งานในโครงà¸à¸²à¸£à¸™à¸µà¹‰" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "ลงชื่อเข้าใช้" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "ลงชื่อเข้าใช้" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "ออà¸à¸ˆà¸²à¸à¸£à¸°à¸šà¸š" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "ออà¸à¸ˆà¸²à¸à¸£à¸°à¸šà¸š" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "เรียนรู้เพิ่มเติมเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸­à¸à¸²à¸£à¸£à¸±à¸šà¸£à¸­à¸‡à¸„วามถูà¸à¸•้อง..." #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸›à¹€à¸”ตข้อมูลผู้ใช้…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "ลงชื่อเข้าใช้บัà¸à¸Šà¸µ Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "à¸à¸²à¸£à¸‹à¸´à¸‡à¸„์à¸à¸±à¸š Crowdin ล้มเหลว" #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "ข้อผิดพลาดของ Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸›à¹‚หลดงานà¹à¸›à¸¥â€¦" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&คัดลอà¸" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "เรียนรู้เพิ่มเติม" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&ช่วยเหลือ" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "ไฟล์ MO ไม่สามารถà¹à¸à¹‰à¹„ขโดยตรงใน Poedit ได้" #: src/edapp.cpp:733 msgid "Error opening file" msgstr "เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¹€à¸›à¸´à¸”ไฟล์" #: src/edapp.cpp:735 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 จะถูà¸à¸­à¸±à¸žà¹€à¸”ตไปด้วย" #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ไม่ต้องลบไฟล์ชั่วคราว (สำหรับà¸à¸²à¸£à¸”ีบั๊à¸)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "จัดà¸à¸²à¸£ URI poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "ไปยังรายà¸à¸²à¸£à¸—ี่อยู่ในหมายเลขบรรทัดที่ระบุ" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "à¸à¸²à¸£à¸ªà¸·à¹ˆà¸­à¸ªà¸²à¸£à¸à¸±à¸šà¸à¸£à¸°à¸šà¸§à¸™à¸à¸²à¸£ Poedit ล้มเหลว" #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "เà¸à¸´à¸”ข้อยà¸à¹€à¸§à¹‰à¸™à¸—ี่จัดà¸à¸²à¸£à¹„ม่ได้: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "เลือà¸à¹€à¸—มเพลตà¸à¸²à¸£à¹à¸›à¸¥" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "ไฟล์ไม่ถูà¸à¸•้อง" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "เลือà¸à¹„ฟล์à¹à¸›à¸¥" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit เป็นโปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่ง่ายต่อà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™" #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "คุณไม่สามารถวางไฟล์มาà¸à¸à¸§à¹ˆà¸²à¸«à¸™à¸¶à¹ˆà¸‡à¹„ฟล์ในหน้าต่าง Poedit" #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "ไฟล์ “%s†ไม่ใช่ไฟล์ในà¸à¸²à¸£à¹à¸›à¸¥" #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "ไม่มีไฟล์ \"%s\" อยู่" #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "à¸à¸²à¸£à¸•รวจคำสะà¸à¸”ถูà¸à¸›à¸´à¸”ใช้งาน เนื่องจาà¸à¹„ม่ได้ติดตั้งพจนานุà¸à¸£à¸¡à¸ªà¸³à¸«à¸£à¸±à¸šà¸ à¸²à¸©à¸² %s" #: src/edframe.cpp:871 msgid "Install" msgstr "ติดตั้ง" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "ไฟล์ \"%s\" ถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¹‚ดยà¹à¸­à¸›à¸žà¸¥à¸´à¹€à¸„ชันอื่นà¹à¸¥à¹‰à¸§" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "โหลดไฟล์ซ้ำ" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "คุณต้องà¸à¸²à¸£à¸£à¸µà¹‚หลดไฟล์จาà¸à¸”ิสà¸à¹Œà¸«à¸£à¸·à¸­à¹„ม่? à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่ยังไม่บันทึà¸à¸‚องคุณใน Poedit จะสูยหายหาà¸à¸„ุณรีโหลด" #: src/edframe.cpp:968 msgid "Ignore" msgstr "เพิà¸à¹€à¸‰à¸¢" #: src/edframe.cpp:968 msgid "Reload File" msgstr "โหลดไฟล์ซ้ำ" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "ไฟล์ถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ คุณต้องà¸à¸²à¸£à¸šà¸±à¸™à¸—ึà¸à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸«à¸£à¸·à¸­à¹„ม่?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "บันทึà¸à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸‚องคุณจะสูà¸à¸«à¸²à¸¢à¸–้าคุณไม่บันทึà¸à¹„ว้" #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "บันทึà¸" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&ไม่ต้องบันทึà¸" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "ไม่ต้องบันทึà¸" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸—ี่ทำโดยà¹à¸­à¸›à¸žà¸¥à¸´à¹€à¸„ชันอื่นจะถูà¸à¸¥à¸°à¸—ิ้งà¹à¸¥à¸°à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸™à¹à¸›à¸¥à¸‡à¸™à¸±à¹‰à¸™à¸ˆà¸°à¸ªà¸¹à¸à¸«à¸²à¸¢" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "ยà¸à¹€à¸¥à¸´à¸" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "บันทึà¸à¸•่อไป" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "บันทึà¸à¸•่อไป" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "บันทึà¸à¹€à¸›à¹‡à¸™â€¦" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "คอมไพล์ไปยัง…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "ไฟล์à¸à¸²à¸£à¹à¸›à¸¥à¸—ี่คอมไพล์à¹à¸¥à¹‰à¸§" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "ส่ง&ออà¸à¹€à¸›à¹‡à¸™ HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "ไฟล์ HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "à¸à¸²à¸£à¸­à¸±à¸›à¹€à¸”ตล้มเหลว" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "อัพเดตจาà¸à¹„&ฟล์ POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "อัพเดตจาà¸&ไฟล์ POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "พบปัà¸à¸«à¸² %d รายà¸à¸²à¸£à¹ƒà¸™à¸à¸²à¸£à¹à¸›à¸¥" #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "ผลà¸à¸²à¸£à¸•รวจสอบ" #: src/edframe.cpp:1842 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 "" "รายà¸à¸²à¸£à¸—ี่มีข้อผิดพลาดจะถูà¸à¸—ำเครื่องหมายเป็นสีà¹à¸”งไว้ในรายà¸à¸²à¸£ " "รายละเอียดของข้อผิดพลาดจะà¹à¸ªà¸”งเมื่อคุณเลือà¸à¸£à¸²à¸¢à¸à¸²à¸£à¸”ังà¸à¸¥à¹ˆà¸²à¸§" #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "บันทึà¸à¹„ฟล์อย่างปลอดภัยà¹à¸¥à¹‰à¸§" #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "บันทึà¸à¹„ฟล์อย่างปลอดภัยà¹à¸¥à¸°à¸„อมไพล์ไฟล์เป็นรูปà¹à¸šà¸š MO à¹à¸¥à¹‰à¸§ à¹à¸•่ไฟล์อาจทำงานอย่างไม่ถูà¸à¸•้อง" #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "บันทึà¸à¹„ฟล์อย่างปลอดภัยà¹à¸¥à¹‰à¸§ à¹à¸•่ไม่สามารถคอมไพล์เป็นรูปà¹à¸šà¸š MO à¹à¸¥à¸°à¹„ม่สามารถนำมาใช้งานได้" #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "คอมไพล์ไฟล์เป็นรูปà¹à¸šà¸š MO à¹à¸¥à¹‰à¸§ à¹à¸•่ไฟล์อาจทำงานอย่างไม่ถูà¸à¸•้อง" #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "ไม่สามารถคอมไพล์ไฟล์เป็นรูปà¹à¸šà¸š MO à¹à¸¥à¸°à¹„ม่สามารถนำมาใช้งานได้" #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "ไม่พบปัà¸à¸«à¸²à¹ƒà¸™à¸à¸²à¸£à¹à¸›à¸¥" #: src/edframe.cpp:1894 #, 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] "à¸à¸²à¸£à¹à¸›à¸¥à¸žà¸£à¹‰à¸­à¸¡à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹à¸¥à¹‰à¸§ à¹à¸•่มีรายà¸à¸²à¸£à¸—ี่ยังไม่ได้à¹à¸›à¸¥ %d รายà¸à¸²à¸£" #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸žà¸£à¹‰à¸­à¸¡à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹à¸¥à¹‰à¸§" #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit ได้à¹à¸à¹‰à¹„ขเนื้อหาที่ไม่ถูà¸à¸•้องในไฟล์ “%s†โดยอัตโนมัติà¹à¸¥à¹‰à¸§" #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "ไฟล์นี้ประà¸à¸­à¸šà¸”้วยรายà¸à¸²à¸£à¸—ี่ซ้ำà¸à¸±à¸™ ซึ่งไม่สามารถมีในไฟล์ PO " "à¹à¸¥à¸°à¸­à¸²à¸ˆà¸—ำให้ไฟล์ดังà¸à¸¥à¹ˆà¸²à¸§à¹„ม่สามารถนำมาใช้งานได้ Poedit จึงได้à¹à¸à¹‰à¹„ขปัà¸à¸«à¸²à¹„ว้à¹à¸¥à¹‰à¸§ " "à¹à¸•่คุณà¸à¹‡à¸„วรจะตรวจทานà¸à¸²à¸£à¹à¸›à¸¥à¸£à¸²à¸¢à¸à¸²à¸£à¸šà¸²à¸‡à¸£à¸²à¸¢à¸à¸²à¸£à¸—ี่ถูà¸à¸—ำเครื่องหมายว่าต้องà¸à¸²à¸£à¸•รวจทานà¹à¸¥à¸°à¹à¸à¹‰à¹„ขให้ถูà¸à¸•้องเมื่อจำเป็น" #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "ไม่ได้à¸à¸³à¸«à¸™à¸”ภาษาà¸à¸²à¸£à¹à¸›à¸¥" #: src/edframe.cpp:2317 msgid "Set Language" msgstr "à¸à¸³à¸«à¸™à¸”ภาษา" #: src/edframe.cpp:2317 msgid "Set language" msgstr "à¸à¸³à¸«à¸™à¸”ภาษา" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "คำà¹à¸™à¸°à¸™à¸³à¸ˆà¸°à¹„ม่สามารถใช้งานได้ถ้าคุณไม่ได้à¸à¸³à¸«à¸™à¸”ภาษาà¸à¸²à¸£à¹à¸›à¸¥à¸­à¸¢à¹ˆà¸²à¸‡à¸–ูà¸à¸•้อง " "โดยอาจมีผลà¸à¸£à¸°à¸—บต่อคุณสมบัติอื่นๆ ด้วย อย่างเช่นรูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œ ฯลฯ" #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "ภาษาà¸à¸²à¸£à¹à¸›à¸¥à¹€à¸«à¸¡à¸·à¸­à¸™à¸à¸±à¸šà¸ à¸²à¸©à¸²à¸•้นฉบับ" #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "à¹à¸à¹‰à¹„ขภาษา" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "à¹à¸à¹‰à¹„ขภาษา" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "ไฟล์นี้มีรายà¸à¸²à¸£à¸—ี่มีรูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œ à¹à¸•่ไม่ได้à¸à¸³à¸«à¸™à¸”ค่าส่วนหัว Plural-Forms ไว้" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "รายà¸à¸²à¸£à¹ƒà¸™à¹„ฟล์นี้มีà¸à¸²à¸£à¸™à¸±à¸šà¸£à¸¹à¸›à¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¹à¸•à¸à¸•่างจาà¸à¸—ี่à¸à¸³à¸«à¸™à¸”ไว้ในส่วนหัว Plural-Forms ของไฟล์" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "ส่วนหัว Plural-Forms ที่จำเป็นไม่มีอยู่" #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "ไวยาà¸à¸£à¸“์ผิดพลาดในส่วนหัว Plural-Forms (\"%s\")" #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "à¹à¸à¹‰à¹„ขส่วนหัว" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "นิพจน์รูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸—ี่ใช้โดยไฟล์ผิดปà¸à¸•ิสำหรับ %s" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "ตรวจทาน" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "คุณต้องà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸ à¸²à¸©à¸²à¸­à¸±à¸‡à¸à¸¤à¸©à¸ªà¸³à¸«à¸£à¸±à¸šà¸‚้อความต้นฉบับหรือไม่?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "ไฟล์นี้ใช้รหัสสตริงà¹à¸—นข้อความต้นฉบับ Poedit สามารถโหลดข้อความภาษาอังà¸à¸¤à¸©à¸ˆà¸²à¸à¹„ฟล์ “%s†" "ให้คุณได้" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "โหลดภาษาอังà¸à¸¤à¸©" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "à¹à¸›à¸¥à¹à¸¥à¹‰à¸§: %d จาภ%d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "คงเหลือ: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "ข้อผิดพลาด %d รายà¸à¸²à¸£" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d รายà¸à¸²à¸£" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (ยังไม่ได้บันทึà¸)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (ถูà¸à¹à¸à¹‰à¹„ข)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "ไม่สามารถอัพเดตหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "ลบà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่มีà¹à¸«à¸¥à¹ˆà¸‡à¸—ี่มาเดียวà¸à¸±à¸™" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "คุณต้องà¸à¸²à¸£à¸¥à¸šà¸„ำà¹à¸›à¸¥à¸—ั้งหมดที่เหมือนà¸à¸±à¸šà¸‚้อความต้นฉบับหรือไม่" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸™à¸µà¹‰à¸ˆà¸°à¸¥à¸šà¸„ำà¹à¸›à¸¥à¹ƒà¸”ๆ ที่ตรงà¸à¸±à¸šà¸‚้อความต้นฉบับพอดี ซึ่งไม่สามารถย้อนà¸à¸¥à¸±à¸šà¹„ด้" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "เà¸à¹‡à¸šà¹„ว้" #: src/edframe.cpp:2856 msgid "Remove" msgstr "ลบออà¸" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "ล้างข้อมูลà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่ลบไปà¹à¸¥à¹‰à¸§" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "คุณต้องà¸à¸²à¸£à¸¥à¸šà¸à¸²à¸£à¹à¸›à¸¥à¸—ั้งหมดที่ไม่ได้ใช้งานอีà¸à¸•่อไปหรือไม่" #: src/edframe.cpp:2879 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 "" "ถ้าคุณดำเนินà¸à¸²à¸£à¸¥à¹‰à¸²à¸‡à¸‚้อมูลต่อไป à¸à¸²à¸£à¹à¸›à¸¥à¸—ั้งหมดที่ทำเครื่องหมายว่าลบà¹à¸¥à¹‰à¸§à¸ˆà¸°à¸–ูà¸à¹€à¸­à¸²à¸­à¸­à¸à¸­à¸¢à¹ˆà¸²à¸‡à¸–าวร " "ถ้ามีà¸à¸²à¸£à¸™à¸³à¸‚้อความเหล่านี้à¸à¸¥à¸±à¸šà¸¡à¸²à¹ƒà¸Šà¹‰à¸­à¸µà¸à¹ƒà¸™à¸­à¸™à¸²à¸„ต คุณจะต้องà¹à¸›à¸¥à¸‚้อความเหล่านี้ใหม่" #: src/edframe.cpp:2883 msgid "Purge" msgstr "ล้างข้อมูล" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "คัดลอà¸à¸ˆà¸²à¸à¸‚้อความต้นฉบับ" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "คัดลอà¸à¸ˆà¸²à¸à¸‚้อความต้นฉบับ" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "ล้างà¸à¸²à¸£à¹à¸›à¸¥" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "ล้างà¸à¸²à¸£à¹à¸›à¸¥" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "à¹à¸à¹‰à¹„ขคำà¹à¸™à¸°à¸™à¸³" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "à¹à¸à¹‰à¹„ขคำà¹à¸™à¸°à¸™à¸³" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่พบในรหัส" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่พบในรหัส" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "ซ่อนà¹à¸–บด้านข้าง" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "à¹à¸ªà¸”งà¹à¸–บด้านข้าง" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "ซ่อนà¹à¸–บสถานะ" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "à¹à¸ªà¸”งà¹à¸–บสถานะ" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "ความยาวสตริงในหน่วยอัà¸à¸‚ระ: à¸à¸²à¸£à¹à¸›à¸¥ | ต้นฉบับ" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "ความยาวสตริงในหน่วยอัà¸à¸‚ระ" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "ข้อความต้นฉบับ" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "เอà¸à¸žà¸ˆà¸™à¹Œ" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "พหูพจน์" #: src/editing_area.cpp:477 msgid "Translation" msgstr "à¸à¸²à¸£à¹à¸›à¸¥" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¹à¸¥à¹‰à¸§" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "ต้องà¸à¸²à¸£à¸•รวจทาน" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "ต้องà¸à¸²à¸£à¸•รวจทาน" #: src/editing_area.cpp:566 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 ใหม่โดยยึดตามà¹à¸¡à¹ˆà¹à¸šà¸š" #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "สร้างà¸à¸²à¸£à¹à¸›à¸¥à¹ƒà¸«à¸¡à¹ˆ" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "สร้างà¸à¸²à¸£à¹à¸›à¸¥à¹ƒà¸«à¸¡à¹ˆà¸ˆà¸²à¸à¹„ฟล์ POT นี้" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "รหัสข้อความต้นฉบับ" #: src/editing_area.cpp:768 msgid "Everything" msgstr "ทุà¸à¸­à¸¢à¹ˆà¸²à¸‡" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "ฟอร์ม %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "à¹à¸šà¸šà¸Ÿà¸­à¸£à¹Œà¸¡ %i (ไม่ได้ใช้งาน)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "ศูนย์" #: src/editing_area.cpp:788 msgid "One" msgstr "หนึ่ง" #: src/editing_area.cpp:790 msgid "Two" msgstr "สอง" #: src/editing_area.cpp:804 msgid "Other" msgstr "อื่นๆ" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "บริบทสตริง: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "ตัวระบุสตริง: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "รูปà¹à¸šà¸š %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "รูปà¹à¸šà¸š %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "à¸à¸²à¸£à¹à¸›à¸¥ — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "ข้อความต้นฉบับ — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "ภาษาที่ไม่รู้จัà¸" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "ข้อผิดพลาดของเครือข่าย: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "ข้อผิดพลาดที่ไม่รู้จัà¸" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "à¸à¸²à¸£à¸œà¸ªà¸²à¸™à¹à¸„็ตตาล็อภgettext ล้มเหลว" #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "เปิดในตัวà¹à¸à¹‰à¹„ข" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "เปิดในตัวà¹à¸à¹‰à¹„ข" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "ไม่มีข้อมูลเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸•ำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่พบของสตริงนี้ในรหัสต้นฉบับในไฟล์" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "ไม่มีข้อมูลà¸à¸²à¸£à¹ƒà¸Šà¹‰" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่พบในรหัส %d ตำà¹à¸«à¸™à¹ˆà¸‡" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "ไม่พบรหัสต้นฉบับ" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit ไม่สามารถà¹à¸ªà¸”งรหัสต้นฉบับส่วนที่ใช้สตริงได้ เนื่องจาà¸à¹„ม่มีไฟล์ในตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อ้างอิง " "หรือเป็นà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡à¹à¸šà¸šà¸ªà¸±à¸à¸¥à¸±à¸à¸©à¸“์ที่ไม่ชี้ไปยังไฟล์จริง" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "ไม่สามารถเปิดไฟล์" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit ไม่สามารถเปิดไฟล์ “%sâ€" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "ค้นหา" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "à¹à¸—น​ที่" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "ตัวเลือà¸" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "ละเว้นตัวพิมพ์" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "ตัดรอบๆ" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "ทั้งคำเท่านั้น" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "ค้นหาในข้อความต้นฉบับ" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "ค้นหาในà¸à¸²à¸£à¹à¸›à¸¥" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "ค้นหาในคำà¹à¸™à¸°à¸™à¸³" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "à¹à¸—นที่ &ทั้งหมด" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "à¹à¸—นที่ &ทั้งหมด" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&à¹à¸—นที่" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&ถัดไป >" #: src/findframe.cpp:235 msgid "String to find" msgstr "สตริงที่จะค้นหา" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "สตริงà¸à¸²à¸£à¹à¸—นที่" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "ชื่อภาษาหรือรหัส" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "ภาษาà¸à¸²à¸£à¹à¸›à¸¥" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "ภาษาของà¸à¸²à¸£à¹à¸›à¸¥:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "สตริงทั้งหมด" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "ไม่สามารถดาวน์โหลดรายละเอียดโปรเจ็à¸à¸•์ Localazy ได้" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "เà¸à¸´à¸”ข้อผิดพลาดขณะอัปโหลดคำà¹à¸›à¸¥à¹„ปยัง Localazy" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "โครงà¸à¸²à¸£" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "เรียนรู้เพิ่มเติมเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy " "เป็นà¹à¸žà¸¥à¸•ฟอร์มà¸à¸²à¸£à¹à¸›à¸¥à¸­à¸±à¸•โนมัติที่ช่วยให้ทุà¸à¸„นสามารถà¹à¸›à¸¥à¸œà¸¥à¸´à¸•ภัณฑ์à¹à¸¥à¸°à¹€à¸™à¸·à¹‰à¸­à¸«à¸²à¸‚องตนเป็นหลายภาษาได้อย่างง่ายดาย" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "เพิ่มโครงà¸à¸²à¸£" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "เพิ่มโครงà¸à¸²à¸£" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - ตัวจัดà¸à¸²à¸£à¹à¸„็ตตาล็อà¸" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "à¹à¸à¹‰à¹„ข…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "สร้างโครงà¸à¸²à¸£à¹à¸›à¸¥à¹ƒà¸«à¸¡à¹ˆ" #: src/manager.cpp:145 msgid "Delete the project" msgstr "ลบโครงà¸à¸²à¸£" #: src/manager.cpp:146 msgid "Edit the project" msgstr "à¹à¸à¹‰à¹„ขโครงà¸à¸²à¸£" #: src/manager.cpp:176 msgid "Update all" msgstr "อัปเดตทั้งหมด" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "อัพเดตà¹à¸„็ตตาล็อà¸à¸—ั้งหมดในโครงà¸à¸²à¸£" #: src/manager.cpp:378 msgid "Total" msgstr "ทั้งหมด" #: src/manager.cpp:379 msgid "Untrans" msgstr "ไม่ได้à¹à¸›à¸¥" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "ต้องà¸à¸²à¸£à¸•รวจทาน" #: src/manager.cpp:381 msgid "Errors" msgstr "ข้อผิดพลาด" #: src/manager.cpp:382 msgid "Last modified" msgstr "ปรับเปลี่ยนล่าสุด" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "เลือà¸à¹„ดเรà¸à¸—อรี" #: src/manager.cpp:433 msgid "Directories:" msgstr "ที่ตั้ง:" #: src/manager.cpp:503 msgid "" msgstr "<ไม่มีชื่อ>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "คุณต้องà¸à¸²à¸£à¸¥à¸šà¹‚ครงà¸à¸²à¸£ “%s†หรือไม่?" #: src/manager.cpp:540 msgid "Delete project" msgstr "ลบโครงà¸à¸²à¸£" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "à¸à¸²à¸£à¸¥à¸šà¹‚ครงà¸à¸²à¸£à¸ˆà¸°à¹„ม่ลบไฟล์à¸à¸²à¸£à¹à¸›à¸¥à¹ƒà¸”ๆ" #: src/manager.cpp:571 msgid "Confirmation" msgstr "à¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "ต้องà¸à¸²à¸£à¸­à¸±à¸žà¹€à¸”ตรายà¸à¸²à¸£à¸—ั้งหมดในโครงà¸à¸²à¸£à¸™à¸µà¹‰à¸«à¸£à¸·à¸­à¹„ม่?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "ทำà¸à¸²à¸£à¸­à¸±à¸žà¹€à¸”ตจาà¸à¸£à¸«à¸±à¸ªà¸•้นฉบับบนไฟล์ทั้งหมดในโครงà¸à¸²à¸£" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "ตรวจหาà¸à¸²à¸£à¸­à¸±à¸žà¹€à¸”ต…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "ตัวจัดà¸à¸²à¸£à¹à¸„็ตตาล็อà¸" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&à¸à¸²à¸£à¸•ั้งค่า..." #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "à¹&à¸à¹‰à¹„ข" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "เลิà¸à¸—ำ" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "ทำซ้ำ" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "วางà¹à¸¥à¸°à¸›à¸£à¸±à¸šà¸¥à¸±à¸à¸©à¸“ะให้ตรงà¸à¸±à¸™" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "ลบ" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "à¸à¸²à¸£à¸ªà¸°à¸à¸”à¹à¸¥à¸°à¹„วยาà¸à¸£à¸“์" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "à¹à¸ªà¸”งà¸à¸²à¸£à¸ªà¸°à¸à¸”à¹à¸¥à¸°à¹„วยาà¸à¸£à¸“์" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "ตรวจสอบเอà¸à¸ªà¸²à¸£à¸•อนนี้" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "ตรวจสอบà¸à¸²à¸£à¸ªà¸°à¸à¸”ขณะป้อน" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "ตรวจสอบไวยาà¸à¸£à¸“์ด้วยà¸à¸²à¸£à¸ªà¸°à¸à¸”" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¸ªà¸°à¸à¸”โดยอัตโนมัติ" #: src/menus.cpp:219 msgid "Substitutions" msgstr "à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸—นที่" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "à¹à¸ªà¸”งà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸—นที่" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "คัดลอà¸à¸«à¸£à¸·à¸­à¸§à¸²à¸‡à¸­à¸±à¸ˆà¸‰à¸£à¸´à¸¢à¸°" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "อัà¸à¸›à¸£à¸°à¸à¸²à¸¨à¸­à¸±à¸ˆà¸‰à¸£à¸´à¸¢à¸°" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "ขีดà¸à¸¥à¸²à¸‡à¸­à¸±à¸ˆà¸‰à¸£à¸´à¸¢à¸°" #: src/menus.cpp:226 msgid "Smart Links" msgstr "ลิงà¸à¹Œà¸­à¸±à¸ˆà¸‰à¸£à¸´à¸¢à¸°" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "à¸à¸²à¸£à¹à¸—นที่ข้อความ" #: src/menus.cpp:230 msgid "Transformations" msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸‡à¸£à¸¹à¸›à¹à¸šà¸š" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "ทำให้เป็นตัวพิมพ์ใหà¸à¹ˆ" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "ทำให้เป็นตัวพิมพ์เล็à¸" #: src/menus.cpp:234 msgid "Capitalize" msgstr "ขึ้นต้นด้วยตัวพิมพ์ใหà¸à¹ˆ" #: src/menus.cpp:237 msgid "Speech" msgstr "เสียงพูด" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "เริ่มพูด" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "หยุดพูด" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&มุมมอง" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "à¹à¸ªà¸”งà¹à¸–บเครื่องมือ" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "à¸à¸³à¸«à¸™à¸”à¹à¸–บเครื่องมือ..." #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "เข้าโหมดเต็มหน้าจอ" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "หน้าต่าง" #: src/menus.cpp:263 msgid "Minimize" msgstr "ย่อให้เล็à¸à¸—ี่สุด" #: src/menus.cpp:264 msgid "Zoom" msgstr "ย่อ/ขยาย" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "ยินดีต้อนรับสู่ Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "นำทั้งหมดมาด้านหน้า" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "ข้อมูลเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸œà¸¹à¹‰à¹à¸›à¸¥" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "ชื่อ:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "ชื่อของคุณ" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "อีเมล:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "ชื่อà¹à¸¥à¸°à¸—ี่อยู่อีเมลของคุณจะถูà¸à¸™à¸³à¹„ปใช้เพื่อà¸à¸³à¸«à¸™à¸”ส่วนหัว Last-Translator ของไฟล์ GNU gettext " "เท่านั้น" #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "à¸à¸²à¸£à¹à¸à¹‰à¹„ข" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "คอมไพล์ไฟล์ MO โดยอัตโนมัติเมื่อบันทึà¸" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "à¸à¸²à¸£à¸•รวจสอบà¸à¸²à¸£à¸ªà¸°à¸à¸”" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "เปลี่ยนโฟà¸à¸±à¸ªà¹„ปยังพื้นที่ป้อนข้อความ" #: src/prefsdlg.cpp:211 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 "" "อย่าโฟà¸à¸±à¸ªà¹„ปที่รายà¸à¸²à¸£à¸ªà¸•ริง ถ้าเปิดใช้งาน คุณจะต้องใช้ลูà¸à¸¨à¸£à¹à¸¥à¸° Ctrl สำหรับà¸à¸²à¸£à¸™à¸³à¸—างà¹à¸›à¹‰à¸™à¸žà¸´à¸¡à¸žà¹Œ " "à¹à¸•่คุณà¸à¹‡à¸ªà¸²à¸¡à¸²à¸£à¸–พิมพ์ข้อความได้ทันที โดยไม่ต้องà¸à¸”ปุ่ม Tab เพื่อเปลี่ยนโฟà¸à¸±à¸ª" #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "ลัà¸à¸©à¸“ะที่ปราà¸à¸" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "ใช้à¹à¸šà¸šà¸­à¸±à¸à¸©à¸£à¸£à¸²à¸¢à¸à¸²à¸£à¹à¸šà¸šà¸à¸³à¸«à¸™à¸”เอง:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "ใช้à¹à¸šà¸šà¸­à¸±à¸à¸©à¸£à¸žà¸·à¹‰à¸™à¸—ี่ข้อความà¹à¸šà¸šà¸à¸³à¸«à¸™à¸”เอง:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "เปลี่ยนภาษา UI" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(จำเป็นต้องใช้ Windows 8 หรือใหม่à¸à¸§à¹ˆà¸²)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "ทั่วไป" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "ใช้หน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "จัดà¸à¸²à¸£â€¦" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "เมื่ออัปเดตจาà¸à¹à¸«à¸¥à¹ˆà¸‡à¸‚้อมูล" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "à¸à¸²à¸£à¸ˆà¸±à¸šà¸„ู่à¹à¸šà¸š Fuzzy ภายในไฟล์" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "à¹à¸›à¸¥à¸ˆà¸²à¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit " "สามารถพยายามเติมข้อมูลรายà¸à¸²à¸£à¹ƒà¸«à¸¡à¹ˆà¸ˆà¸²à¸à¹ƒà¸™à¸à¸²à¸£à¹à¸›à¸¥à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¹ƒà¸™à¹„ฟล์หรือจาà¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¸—ั้งหมดของคุณได้ " "à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸°à¹„ม่ค่อยมีประสิทธิภาพมาà¸à¸–้าหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¸™à¸±à¹‰à¸™à¹à¸—บจะว่างเปล่า " "à¹à¸•่ถ้าหาà¸à¸„ุณà¹à¸›à¸¥à¸¡à¸²à¸à¸‚ึ้น หน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¸à¹‡à¸ˆà¸°à¸”ีขึ้นเอง" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸—ี่เà¸à¹‡à¸šà¹„ว้:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "ขนาดà¸à¸²à¸™à¸‚้อมูลบนดิสà¸à¹Œ" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "นำเข้าไฟล์à¸à¸²à¸£à¹à¸›à¸¥â€¦" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "นำเข้าไฟล์à¸à¸²à¸£à¹à¸›à¸¥â€¦" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "นำเข้าจาภTMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "นำเข้าจาภTMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "ส่งออà¸à¹€à¸›à¹‡à¸™ TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "ส่งออà¸à¹€à¸›à¹‡à¸™ TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "รีเซ็ต" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "เลือà¸à¹„ฟล์à¸à¸²à¸£à¹à¸›à¸¥à¸—ี่จะนำเข้า" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "เลือà¸à¹„ฟล์ TMX ที่จะนำเข้า" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "ไฟล์ TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸™à¸³à¹€à¸‚้าà¸à¸²à¸£à¹à¸›à¸¥â€¦" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "ส่งออà¸à¹€à¸›à¹‡à¸™â€¦" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¹ˆà¸‡à¸­à¸­à¸à¸à¸²à¸£à¹à¸›à¸¥â€¦" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "ไม่สามารถส่งออà¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¹€à¸›à¹‡à¸™ “%sâ€" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "รีเซ็ตหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¸«à¸£à¸·à¸­à¸§à¹ˆà¸²à¸„ุณต้องà¸à¸²à¸£à¸£à¸µà¹€à¸‹à¹‡à¸•หน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "à¸à¸²à¸£à¸£à¸µà¹€à¸‹à¹‡à¸•หน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸°à¸¥à¸šà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่เà¸à¹‡à¸šà¹„ว้ออà¸à¸­à¸¢à¹ˆà¸²à¸‡à¸–าวร " "คุณไม่สามารถยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸™à¸µà¹‰à¹„ด้" #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "หน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "หน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥" #: src/prefsdlg.cpp:730 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 "ตัวà¹à¸¢à¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ดใช้สำหรับค้นหาสตริงที่à¹à¸›à¸¥à¹„ด้ในไฟล์ซอร์สโค้ดà¹à¸¥à¸°à¹à¸¢à¸à¸ªà¸•ริงออà¸à¸¡à¸²à¹€à¸žà¸·à¹ˆà¸­à¹ƒà¸«à¹‰à¸ªà¸²à¸¡à¸²à¸£à¸–à¹à¸›à¸¥à¹„ด้" #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "ตัวà¹à¸¢à¸à¹à¸šà¸šà¸à¸³à¸«à¸™à¸”เอง:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "ตัวà¹à¸¢à¸à¹à¸šà¸šà¸à¸³à¸«à¸™à¸”เอง:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "รองรับภาษาเขียนโปรà¹à¸à¸£à¸¡à¸—ั้งหมดที่รู้จัà¸à¹‚ดยเครื่องมือ GNU gettext (PHP, C/C++, C#, Perl, " "Python, Java, JavaScript à¹à¸¥à¸°à¸­à¸·à¹ˆà¸™à¹†)" #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "ลบตัวà¹à¸¢à¸" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¸«à¸£à¸·à¸­à¸§à¹ˆà¸²à¸„ุณต้องà¸à¸²à¸£à¸¥à¸šà¸•ัวà¹à¸¢à¸ \"%s\"" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "ตัวà¹à¸¢à¸" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "บัà¸à¸Šà¸µ" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "ตรวจหาà¸à¸²à¸£à¸­à¸±à¸žà¹€à¸”ตโดยอัตโนมัติ" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "ประà¸à¸­à¸šà¸”้วยเวอร์ชั่นเบต้า" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "เวอร์ชั่นเบต้าประà¸à¸­à¸šà¸”้วยคุณสมบัติà¹à¸¥à¸°à¸à¸²à¸£à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¹ƒà¸«à¸¡à¹ˆà¸¥à¹ˆà¸²à¸ªà¸¸à¸” à¹à¸•่อาจเสถียรน้อยà¸à¸§à¹ˆà¸²" #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "อัพเดต" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "à¸à¸²à¸£à¸•ั้งค่าเหล่านี้มีผลต่อà¸à¸²à¸£à¸ˆà¸±à¸”รูปà¹à¸šà¸šà¸ à¸²à¸¢à¹ƒà¸™à¸‚องไฟล์ PO ปรับà¸à¸²à¸£à¸•ั้งค่าเหล่านี้ถ้าคุณมีความจำเป็นเฉพาะ " "อย่างเช่น เนื่องจาà¸à¸à¸²à¸£à¸„วบคุมเวอร์ชั่น" #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "สิ้นสุดบรรทัด:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (à¹à¸™à¸°à¸™à¸³)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "ตัดที่:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "รัà¸à¸©à¸²à¸à¸²à¸£à¸ˆà¸±à¸”รูปà¹à¸šà¸šà¸‚องไฟล์ที่มีอยู่" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "ขั้นสูง" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "à¸à¸²à¸£à¸•ั้งค่า" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "à¸à¹à¸²à¸¥à¸±à¸‡à¹€à¸•รียมสตริง..." #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¸ˆà¸²à¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจà¹à¸²à¸à¸²à¸£à¹à¸›à¸¥..." #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u สตริงที่à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¹à¸¥à¹‰à¸§" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "à¸à¸³à¸¥à¸±à¸‡à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²â€¦" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d รายà¸à¸²à¸£à¹„ด้ถูà¸à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¹à¸¥à¹‰à¸§" #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "à¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸°à¸–ูà¸à¸—ำเครื่องหมายว่าต้องà¸à¸²à¸£à¸•รวจทาน เนื่องจาà¸à¸­à¸²à¸ˆà¹„ม่à¹à¸¡à¹ˆà¸™à¸¢à¸³ " "คุณควรตรวจทานà¸à¸²à¸£à¹à¸›à¸¥à¹€à¸«à¸¥à¹ˆà¸²à¸™à¸µà¹‰à¸­à¸µà¸à¸„รั้งเพื่อความถูà¸à¸•้อง" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "ไม่มีรายà¸à¸²à¸£à¸—ี่สามารถà¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¹„ด้" #: src/pretranslate.cpp:218 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 " "เรียนรู้จาà¸à¹„ฟล์ที่คุณà¹à¸›à¸¥à¹€à¸­à¸‡à¸¡à¸²à¸à¸žà¸­à¹à¸¥à¹‰à¸§à¹€à¸—่านั้น" #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "ไม่สามารถà¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¹‚ดยไม่มีข้อความต้นฉบับ" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "à¸à¸²à¸£à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¸ˆà¸³à¹€à¸›à¹‡à¸™à¸•้องมีข้อความต้นฉบับให้พร้อมใช้งาน มันจะไม่ทำงานหาà¸à¹ƒà¸Šà¹‰à¹€à¸‰à¸žà¸²à¸° ID " "ที่ไม่มีข้อความจริงเท่านั้น" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "ไม่สามารถà¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¸ˆà¸²à¸à¸ à¸²à¸©à¸²à¸—ี่ไม่รู้จัà¸à¹„ด้" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¸ˆà¸³à¹€à¸›à¹‡à¸™à¸•้องทราบภาษาของข้อความต้นฉบับ Poedit ตรวจไม่พบในไฟล์นี้" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "เติมข้อมูลลงในรายà¸à¸²à¸£à¸—ี่ตรงà¸à¸±à¸™à¹€à¸—่านั้น" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "ตามค่าเริ่มต้น ผลลัพธ์ที่ไม่ถูà¸à¸•้องจะรวมอยู่ด้วย à¹à¸•่ทำเครื่องหมายว่าต้องดำเนินà¸à¸²à¸£ " "เลือà¸à¸•ัวเลือà¸à¸™à¸µà¹‰à¹€à¸žà¸·à¹ˆà¸­à¸£à¸§à¸¡à¹€à¸‰à¸žà¸²à¸°à¸à¸²à¸£à¸ˆà¸±à¸šà¸„ู่ที่สมบูรณ์à¹à¸šà¸šà¹€à¸—่านั้น" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "ไม่ต้องทำเครื่องหมายรายà¸à¸²à¸£à¸—ี่ตรงà¸à¸±à¸™à¸§à¹ˆà¸²à¸•้องà¸à¸²à¸£à¸—ำงาน" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "เปิดใช้งานà¸à¹‡à¸•่อเมื่อคุณเชื่อถือคุณภาพของหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¸‚องคุณเท่านั้น โดยเริ่มต้น " "รายà¸à¸²à¸£à¸—ี่ตรงà¸à¸±à¸™à¸ˆà¸²à¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸°à¸–ูà¸à¸—ำเครื่องหมายว่าต้องà¸à¸²à¸£à¸•รวจทานà¹à¸¥à¸°à¸„วรจะได้รับà¸à¸²à¸£à¸•รวจทานà¸à¹ˆà¸­à¸™à¸ˆà¸°à¸™à¸³à¹„ปใช้" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¸ˆà¸°à¸„้นหารายà¸à¸²à¸£à¸—ี่ตรงà¸à¸±à¸šà¸ªà¸•ริงที่ยังไม่ได้à¹à¸›à¸¥à¸­à¸¢à¹ˆà¸²à¸‡à¸–ูà¸à¸•้องหรือคลุมเครือในหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¹à¸¥à¸°à¸™à¸³à¸¡à¸²à¹€à¸•ิมข้อมูลลงในà¸à¸²à¸£à¹à¸›à¸¥à¹‚ดยอัตโนมัติ" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸¢à¸à¹€à¸¥à¸´à¸â€¦" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "ลาà¸à¹‚ฟลเดอร์หรือไฟล์มาที่นี่" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "ลาà¸à¹‚ฟลเดอร์หรือไฟล์มาที่นี่" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "เพิ่มโฟลเดอร์…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "เพิ่มโฟลเดอร์…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "เพิ่มไฟล์…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "เพิ่มไฟล์…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "เพิ่มอัà¸à¸‚ระตัวà¹à¸—น…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "เพิ่มอัà¸à¸‚ระตัวà¹à¸—น…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "à¹à¸ªà¸”งใน Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "à¹à¸ªà¸”งใน Explorer" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "à¹à¸ªà¸”งในโฟลเดอร์" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "เส้นทาง" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "เส้นทางที่คัดออà¸" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "à¸à¸²à¸£à¸•ั้งค่าà¸à¸²à¸£à¹à¸¢à¸à¸‚ั้นสูง" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "à¹à¸¢à¸à¸šà¸±à¸™à¸—ึà¸à¸¢à¹ˆà¸­à¸ªà¸³à¸«à¸£à¸±à¸šà¸™à¸±à¸à¹à¸›à¸¥à¸ˆà¸²à¸:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "คำà¹à¸™à¸°à¸™à¸³à¸—ี่ขึ้นต้นด้วย:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "คำà¹à¸™à¸°à¸™à¸³à¸—ั้งหมด" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "ค่าสถานะ xgettext เพิ่มเติม:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "คำสำคัà¸à¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•ิม" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "ชื่อโครงà¸à¸²à¸£à¹à¸›à¸¥" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "ชื่อทีมà¹à¸¥à¸°à¸—ี่อยู่อีเมลหรือ URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "เช่น nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (à¹à¸™à¸°à¸™à¸³)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "โปรดบันทึà¸à¹„ฟล์à¸à¹ˆà¸­à¸™ จึงจะสามารถà¹à¸à¹‰à¹„ขส่วนนี้ได้" #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" "ข้อความนี้ไม่มีข้อมูลบริบท ข้อความที่ใช้ใน poedit.pot ตำà¹à¸«à¸™à¹ˆà¸‡à¹ƒà¸™à¹„ฟล์: 526\n" "ไฟล์: App strings" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "ไม่มีตัวยึดตำà¹à¸«à¸™à¹ˆà¸‡ “%s†จาà¸à¸à¸²à¸£à¹à¸›à¸¥" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "ตัวà¹à¸—นฟุ่มเฟือย “%s†ที่ไม่ได้อยู่ในข้อความต้นฉบับ" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸£à¸¹à¸›à¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œ" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "ไม่ได้à¹à¸›à¸¥à¸£à¸¹à¸›à¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸—ั้งหมด" #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "ตัวพิมพ์ใหà¸à¹ˆ-เล็à¸à¹„ม่สม่ำเสมอà¸à¸±à¸™" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸„วรเริ่มต้นด้วยประโยค" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸„วรเริ่มต้นด้วยตัวอัà¸à¸©à¸£à¸•ัวพิมพ์เล็à¸" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "ช่องว่างไม่สม่ำเสมอà¸à¸±à¸™" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¹„ม่ได้เริ่มต้นด้วยช่องว่าง" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¹€à¸£à¸´à¹ˆà¸¡à¸•้นด้วยช่องว่าง à¹à¸•่ในข้อความต้นฉบับไม่ได้เริ่มต้นด้วยช่องว่าง" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¹„ม่มีà¸à¸²à¸£à¸‚ึ้นบรรทัดใหม่ในตอนท้าย" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸¡à¸µà¸à¸²à¸£à¸‚ึ้นบรรทัดใหม่ในตอนท้าย à¹à¸•่ในข้อความต้นฉบับไม่มีà¸à¸²à¸£à¸‚ึ้นบรรทัดใหม่ในตอนท้าย" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¹„ม่มีช่องว่างในตอนท้าย" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸¡à¸µà¸Šà¹ˆà¸­à¸‡à¸§à¹ˆà¸²à¸‡à¹ƒà¸™à¸•อนท้าย à¹à¸•่ในข้อความต้นฉบับไม่มีช่องว่างในตอนท้าย" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "ตรวจสอบเครื่องหมายวรรคตอน" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸„วรสิ้นสุดด้วย \"%s\"" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¹„ม่ควรสิ้นสุดด้วย \"%s\"" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸ªà¸´à¹‰à¸™à¸ªà¸¸à¸”ด้วย \"%s\" à¹à¸•่ในข้อความต้นฉบับสิ้นสุดด้วย \"%s\"" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "คลาวด์" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "ล้างรายà¸à¸²à¸£" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "ล้างรายà¸à¸²à¸£" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "คำà¹à¸™à¸°à¸™à¸³:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "อัปเดต" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&ลบ" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "ลบความคิดเห็น" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "à¹à¸à¹‰à¹„ขโครงà¸à¸²à¸£" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "ชื่อโครงà¸à¸²à¸£:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "เรียà¸à¸”ู" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "เพิ่มตำà¹à¸«à¸™à¹ˆà¸‡à¹„ปยังรายà¸à¸²à¸£" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "ตà¸à¸¥à¸‡" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&ไฟล์" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&สร้างใหม่…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "สร้างใหม่&จาà¸à¹„ฟล์ POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "สร้างใหม่&จาà¸à¹„ฟล์ POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&เปิด…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "เปิดล่าสุด" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "เปิดไฟล์ล่าสุด" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "เปิดà¸à¸²à¸£à¹à¸›à¸¥à¸šà¸™à¸„ลาวด์" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "เปิดà¸à¸²à¸£à¹à¸›à¸¥à¸šà¸™à¸„ลาวด์" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "หน้าต่างเมื่อเ&ริ่มทำงาน" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "หน้าต่างเมื่อเ&ริ่มทำงาน" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "ตัวจัดà¸à¸²à¸£&à¹à¸„็ตตาล็อà¸" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "ตัวจัดà¸à¸²à¸£&à¹à¸„็ตตาล็อà¸" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&ปิด" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&บันทึà¸" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "บันทึà¸à¹€&ป็น…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "บันทึà¸à¹€&ป็น…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "คอมไพล์เป็น MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "ส่ง&ออà¸à¹€à¸›à¹‡à¸™ HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "ตรวจหาà¸à¸²à¸£à¸­à¸±à¸žà¹€à¸”ต…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "à¸à¸²à¸£à¸•ั้งค่า…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&à¸à¸²à¸£à¸•ั้งค่า" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&ออà¸" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "ออà¸" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "คัดลอà¸à¸ˆà¸²à¸à¹€à¸­à¸à¸žà¸ˆà¸™à¹Œ" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "คัดลอà¸à¸ˆà¸²à¸à¹€à¸­à¸à¸žà¸ˆà¸™à¹Œ" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "ต้องà¸à¸²à¸£à¸•รวจ&ทานà¸à¸²à¸£à¹à¸›à¸¥" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "ต้องà¸à¸²à¸£à¸•รวจ&ทานà¸à¸²à¸£à¹à¸›à¸¥" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "à¹à¸à¹‰à¹„ขคำà¹&นะนำ" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "à¹à¸à¹‰à¹„ขคำà¹&นะนำ" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "คำà¹à¸™à¸°à¸™à¸³" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&ค้นหา…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "à¹à¸—นที่…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "ค้นหาถัดไป" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "ค้นหาà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "ค้นหาà¹à¸¥à¸°à¹à¸—นที่…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "ค้นหาถัดไป" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "ค้นหาà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "à¹à¸ªà¸”ง &รหัสสตริง" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "à¹à¸ªà¸”ง &รหัสสตริง" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "à¹à¸ªà¸”งคำเตือน" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "à¹à¸ªà¸”งคำเตือน" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "เรียงตาม &ลำดับไฟล์" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "เรียงตาม &ลำดับไฟล์" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "เรียงตาม &à¹à¸«à¸¥à¹ˆà¸‡à¸‚้อมูล" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "เรียงตาม &à¹à¸«à¸¥à¹ˆà¸‡à¸‚้อมูล" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "เรียงตาม &à¸à¸²à¸£à¹à¸›à¸¥" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "เรียงตาม &à¸à¸²à¸£à¹à¸›à¸¥" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&จัดà¸à¸¥à¸¸à¹ˆà¸¡à¸•ามบริบท" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&จัดà¸à¸¥à¸¸à¹ˆà¸¡à¸•ามบริบท" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "ขึ้นต้นด้วยรายà¸à¸²à¸£à¸—ี่มีข้อผิดพลาดà¸à¹ˆà¸­à¸™" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "ขึ้นต้นด้วยรายà¸à¸²à¸£à¸—ี่มีข้อผิดพลาดà¸à¹ˆà¸­à¸™" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&ขึ้นต้นด้วยรายà¸à¸²à¸£à¸—ี่ยังไม่ได้à¹à¸›à¸¥à¸à¹ˆà¸­à¸™" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&ขึ้นต้นด้วยรายà¸à¸²à¸£à¸—ี่ยังไม่ได้à¹à¸›à¸¥à¸à¹ˆà¸­à¸™" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&à¹à¸ªà¸”งตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่พบในรหัส" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&à¹à¸ªà¸”งตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่พบในรหัส" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "à¹à¸ªà¸”งà¹à¸–บด้านข้าง" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "à¹à¸ªà¸”งà¹à¸–บสถานะ" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&à¸à¸²à¸£à¹à¸›à¸¥" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&อัพเดตจาà¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ด" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&อัพเดตจาà¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ด" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "ซิงค์à¸à¸±à¸š Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "à¹à¸›à¸¥&ล่วงหน้า…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&ตรวจสอบà¸à¸²à¸£à¹à¸›à¸¥" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&ตรวจสอบà¸à¸²à¸£à¹à¸›à¸¥" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "ลบà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่เหมือนà¸à¸±à¸šà¸•้นฉบับ" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&ล้างข้อมูลà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่ลบไปà¹à¸¥à¹‰à¸§" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&ล้างข้อมูลà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่ลบไปà¹à¸¥à¹‰à¸§" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&คุณสมบัติ…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&ไป" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&เสร็จสิ้นà¹à¸¥à¸°à¸–ัดไป" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&เสร็จสิ้นà¹à¸¥à¸°à¸–ัดไป" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "à¸à¸²à¸£à¹à¸à¹‰à¹„ขà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "à¸à¸²à¸£à¹à¸à¹‰à¹„ขà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&à¸à¸²à¸£à¹à¸›à¸¥à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&à¸à¸²à¸£à¹à¸›à¸¥à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&à¸à¸²à¸£à¹à¸›à¸¥à¸–ัดไป" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&à¸à¸²à¸£à¹à¸›à¸¥à¸–ัดไป" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "ที่ยังไม่เสร็จà¸à¹ˆà¸­à¸™&หน้า" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "ที่ยังไม่เสร็จà¸à¹ˆà¸­à¸™&หน้า" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "ที่ยังไม่เสร็จถัดไ&ป" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "ที่ยังไม่เสร็จถัดไ&ป" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "รูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "รูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "รูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸–ัดไป" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "รูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸–ัดไป" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&ความช่วยเหลือออนไลน์" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&ความช่วยเหลือออนไลน์" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "คู่มือ &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "คู่มือ &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "à¸à¸²à¸£à¸•ิดตั้งตัวà¹à¸¢à¸" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "รายà¸à¸²à¸£à¸‚องส่วนขยายà¹à¸¢à¸à¹‚ดยใช้อัฒภาค (เช่น *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "à¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อ:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "คำสั่งที่ใช้à¹à¸¢à¸à¸à¸²à¸£à¹à¸›à¸¥:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "นี่คือคำสั่งที่จะใช้เรียà¸à¹ƒà¸Šà¹‰à¸•ัวà¹à¸¢à¸\n" "%o ขยายชื่อไฟล์ขาออภ%K ขยายรายà¸à¸²à¸£\n" "คำสำคัภ%F ขยายไฟล์นำเข้า\n" "%C ขยายค่าสถานะชุดอัà¸à¸‚ระ (ดูด้านล่าง)" #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "รายà¸à¸²à¸£à¹ƒà¸™à¸£à¸²à¸¢à¸à¸²à¸£à¸„ำสำคัà¸:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸™à¸µà¹‰à¸ˆà¸°à¹à¸™à¸šà¹„ฟล์ไปยังคำสั่งหนึ่งครั้ง\n" "ต่อคำสำคัà¸à¸—ี่ใช้à¹à¸•่ละคำ %k จะขยายชื่อของคำสำคัà¸à¸—ี่ใช้" #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "รายà¸à¸²à¸£à¹ƒà¸™à¸£à¸²à¸¢à¸à¸²à¸£à¹„ฟล์นำเข้า:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸™à¸µà¹‰à¸ˆà¸°à¹à¸™à¸šà¹„ฟล์ไปยังบรรทัดคำสั่งหนึ่งครั้ง\n" "สำหรับไฟล์à¹à¸•่ละไฟล์ %f จะขยายชื่อไฟล์" #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "รหัสอัà¸à¸‚ระดั้งเดิม:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸™à¸µà¹‰à¸ˆà¸°à¹à¸™à¸šà¹„ฟล์ไปยังบรรทัดคำสั่ง\n" "เมื่อรหัสชุดอัà¸à¸‚ระถูà¸à¸à¸³à¸«à¸™à¸”ให้เท่านั้น %c จะขยายค่าของชุดอัà¸à¸‚ระ" #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "คุณสมบัติà¸à¸²à¸£à¹à¸›à¸¥" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "ชื่อà¹à¸¥à¸°à¹€à¸§à¸­à¸£à¹Œà¸Šà¸±à¹ˆà¸™à¹‚ครงà¸à¸²à¸£:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "ทีมภาษา:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "รูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œ:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "ใช้à¸à¸Žà¹€à¸£à¸´à¹ˆà¸¡à¸•้นสำหรับภาษานี้" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "ใช้นิพจน์ที่à¸à¸³à¸«à¸™à¸”เอง" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "เรียนรู้เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸£à¸¹à¸›à¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œ" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "ชุดอัà¸à¸‚ระ:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "à¸à¸²à¸£à¸•ั้งค่าà¸à¸²à¸£à¹à¸¢à¸à¸‚ั้นสูง…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "à¸à¸²à¸£à¸•ั้งค่าà¸à¸²à¸£à¹à¸¢à¸à¸‚ั้นสูง…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "คุณสมบัติà¸à¸²à¸£à¹à¸›à¸¥" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "เส้นทางà¹à¸«à¸¥à¹ˆà¸‡à¸‚้อมูล" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "เส้นทางà¹à¸«à¸¥à¹ˆà¸‡à¸‚้อมูล" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "à¹à¸¢à¸à¸‚้อความจาà¸à¹„ฟล์ต้นฉบับในไดเรà¸à¸—อรีต่อไปนี้:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "เส้นทางหลัà¸:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "คำสำคัà¸à¸‚องà¹à¸«à¸¥à¹ˆà¸‡à¸—ี่มา" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "คำสำคัà¸à¸‚องà¹à¸«à¸¥à¹ˆà¸‡à¸—ี่มา" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "ใช้คำสำคัà¸à¹€à¸«à¸¥à¹ˆà¸²à¸™à¸µà¹‰ (ชื่อฟังà¸à¹Œà¸Šà¸±à¹ˆà¸™) เพื่อตรวจหาสตริงที่à¹à¸›à¸¥à¹„ด้\n" "ในไฟล์ต้นฉบับ:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "ใช้คำสำคัà¸à¹€à¸£à¸´à¹ˆà¸¡à¸•้นสำหรับภาษาที่รองรับด้วย" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "เรียนรู้เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸„ำสำคัภGettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "เปิดไฟล์" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "บันทึà¸à¹„ฟล์" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "ตรวจสอบ" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "ตรวจสอบข้อผิดพลาดในà¸à¸²à¸£à¹à¸›à¸¥" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "อัพเดตจาà¸à¹‚ค้ด" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "อัพเดตจาà¸à¹‚ค้ด" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "อัพเดตจาà¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ด" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "à¹à¸–บด้านข้าง" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "à¹à¸ªà¸”งหรือซ่อนà¹à¸–บด้านข้าง" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "ข้อความต้นฉบับà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "ข้อความต้นฉบับ (à¸à¹ˆà¸­à¸™à¸—ี่จะถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¸à¸²à¸£à¸­à¸±à¸žà¹€à¸”ต) ที่เà¸à¸µà¹ˆà¸¢à¸§à¸‚้องà¸à¸±à¸šà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่ไม่ถูà¸à¸•้องในขณะนี้" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "หมายเหตุสำหรับนัà¸à¹à¸›à¸¥" #: src/sidebar.cpp:196 msgid "Comment" msgstr "ความคิดเห็น" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "เพิ่มคำà¹à¸™à¸°à¸™à¸³" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "เพิ่มคำà¹à¸™à¸°à¸™à¸³" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "ลบออà¸à¸ˆà¸²à¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "ลบออà¸à¸ˆà¸²à¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "คำà¹à¸™à¸°à¸™à¸³à¸à¸²à¸£à¹à¸›à¸¥" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "ไม่พบผลลัพธ์ที่ตรงà¸à¸±à¸™" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "ไม่พบผลลัพธ์ที่ตรงà¸à¸±à¸™" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "สตริงนี้ถูà¸à¸žà¸šà¹ƒà¸™à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¸‚อง Poedit" #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "คำà¹à¸™à¸°à¸™à¸³à¹ƒà¸™à¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸³à¹€à¸›à¹‡à¸™à¸•้องมีข้อความต้นฉบับให้พร้อมใช้งาน สิ่งเหล่านี้จะไม่ทำงานหาà¸à¹ƒà¸Šà¹‰à¹€à¸‰à¸žà¸²à¸° ID " "ที่ไม่มีข้อความจริงเท่านั้น" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "คำà¹à¸™à¸°à¸™à¸³à¹ƒà¸™à¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸³à¹€à¸›à¹‡à¸™à¸•้องรู้ภาษาของข้อความต้นฉบับ Poedit ตรวจไม่พบในไฟล์นี้" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "ไม่สามารถเรียà¸à¹ƒà¸Šà¹‰à¹‚ปรà¹à¸à¸£à¸¡: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "ไฟล์ TMX ผิดรูปà¹à¸šà¸š" #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "à¸à¸²à¸™à¸‚้อมูลหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¸Šà¸³à¸£à¸¸à¸”: %s (%d)" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "ข้อผิดพลาดหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥: %s (%d)" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(ใช้ภาษาเริ่มต้น)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "à¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸à¸ à¸²à¸©à¸²" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "เลือà¸à¸ à¸²à¸©à¸²à¸—ี่คุณต้องà¸à¸²à¸£" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "คุณต้องเริ่ม Poedit ใหม่เพื่อให้à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸¡à¸µà¸œà¸¥" #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "ไม่สามารถสร้างไดเรà¸à¸—อรีชั่วคราว" #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "ไม่มีà¸à¸²à¸£à¹à¸›à¸¥ นั่นผิดปà¸à¸•ิ" #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "วิธีà¸à¸²à¸£à¹€à¸•ิมà¸à¸²à¸£à¹à¸›à¸¥à¹ƒà¸™à¹„ฟล์นี้ที่ง่ายที่สุดคือให้อัปเดตข้อมูลจาà¸à¹„ฟล์ POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "อัพเดตจาà¸à¹„ฟล์ POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "ดึงสตริงที่สามารถà¹à¸›à¸¥à¹„ด้จาà¸à¹à¸¡à¹ˆà¹à¸šà¸š POT ที่มีอยู่" #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "นอà¸à¸ˆà¸²à¸à¸™à¸µà¹‰ คุณยังสามารถà¹à¸¢à¸à¸ªà¸•ริงที่สามารถà¹à¸›à¸¥à¹„ด้โดยตรงจาà¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ด:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "à¹à¸¢à¸à¸ˆà¸²à¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ด" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "à¸à¸³à¸«à¸™à¸”ค่าà¸à¸²à¸£à¹à¸¢à¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ดในคุณสมบัติ" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "รุ่น %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "สร้างใหม่" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "สร้างà¸à¸²à¸£à¹à¸›à¸¥à¹ƒà¸«à¸¡à¹ˆà¸ˆà¸²à¸à¹à¸¡à¹ˆà¹à¸šà¸š POT" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "เรียà¸à¸”ูไฟล์" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "เปิดà¹à¸¥à¸°à¹à¸à¹‰à¹„ขไฟล์à¸à¸²à¸£à¹à¸›à¸¥" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "à¹à¸›à¸¥à¹‚ครงà¸à¸²à¸£à¸„ลาวด์" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "ทำงานร่วมà¸à¸±à¸šà¸œà¸¹à¹‰à¸­à¸·à¹ˆà¸™à¸—างออนไลน์" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "ไฟล์ล่าสุด" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "ซิงค์" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "ซิงค์à¸à¸²à¸£à¹à¸›à¸¥à¸à¸±à¸š Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "à¸à¸²à¸£à¸•ั้งค่า %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "บริà¸à¸²à¸£" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "ซ่อน %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "ซ่อนคนอื่น" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "à¹à¸ªà¸”งทั้งหมด" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "ออà¸à¸ˆà¸²à¸ %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "à¸à¸²à¸£à¸•ั้งค่า…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "à¸à¸²à¸£à¸•ั้งค่า..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "à¸à¸²à¸£à¸•ั้งค่า..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&นำไปใช้" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "นำไปใช้" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&ย้อนà¸à¸¥à¸±à¸š" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "ย้อนà¸à¸¥à¸±à¸š" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&ยà¸à¹€à¸¥à¸´à¸" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&ล้าง" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "ล้าง" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "คัดลอà¸" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&ตัด" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "ตัด" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "à¹à¸à¹‰à¹„ข" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&ออà¸" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "วิธีใช้" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&สร้าง" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "สร้างใหม่" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "ไ&ม่ใช่" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "ไม่ใช่" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&ตà¸à¸¥à¸‡" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "เปิด…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&เปิด..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "เปิด..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&วาง" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "วาง" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "à¸à¸²à¸£à¸•ั้งค่า" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&ทำซ้ำ" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "รี​เฟรช" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&บันทึà¸à¹€à¸›à¹‡à¸™" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "บันทึà¸à¹€à¸›à¹‡à¸™" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "เลือà¸&ทั้งหมด" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "เลือà¸à¸—ั้งหมด" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&เลิà¸à¸—ำ" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "ใ&ช่" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "ใช่" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "ขึ้น" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "ลง" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "ซ้าย" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "ขวา" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/en_GB.mo0000644000175100001660000016273015011674363011441 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-»O ’ ’&"’I’<]’š’&­’&Ô’_û’J[“g¦“ ”” '”;1”m” t”‚”‰””—”ž”¥”«”³””єהݔæ”ú”••$•6•<•A•I•Q•c•u•y• }• Š•—• •©• °•½•Í•ã•ù•–$–@–F–L–U–[–d–{– ’–  – ®–»–Á–Ý–ù–—+—B—Y—_—d—{—‹— ©— µ—¿—È—ЗÙ— Ý— é—ö— ˜˜ !˜-˜ G˜T˜ c˜o˜˜“˜®˜·˜טô˜™ *™ 7™1C™'u™™°™Í™ ç™ò™ø™7š6Lšƒš)£šÍš Òš]Ýš;›<N›D‹›$Лõ› ü›€ œŠœ ‘œ"Ÿœœ+Ýœ) 3>RfwŠ“¦ÂÞ#óž,ž;ž AžLž ^žiž{žž‡ž˜ž%©žÏž êž ŸŸŸ4Ÿ EŸSŸ/nŸ žŸk«Ÿ  / E X n - 1» í  ¡¡)(¡R¡ r¡ª€¡+¢0¢C¢V¢k¢o¢†¢¢¬¢½¢Ü¢ë¢þ¢;£M£ h£'u£^£Mü£?J¤ Ф —¤¤¤*·¤â¤"õ¤5¥N¥i¥„¥Š¥¥ ¢¥ °¥ ¾¥ Ë¥ Ø¥å¥ö¥þ¥¦¦f ¦‡¦¡¦u»¦1§D§"V§y§§ ˆ§“§©§¸§ ɧÖ§è§ù§0 ¨<¨V¨#k¨<¨`̨-© =©*H©+s©0Ÿ©#Щ'ô©ª!ª7ª(VªTªÔª Ùª ãªñª««+« @« J« X« e«r«««ª«²« ëÏ« ׫â« ç«ô«¬#¬=¬©@¬‡ê¬zr­í­ ô­®®/®B®^®$y®ž®¸®¿®Õ®ó® ¯,¯ 4¯ A¯M¯S¯Z¯q¯v¯;Œ¯(ȯñ¯°!° 0° :°H°e° ~°‰°°¶°Ó°:ذ ±<!± ^±Œk±.ø±'²7²*G²r²² ²§²¾²*Dzò²ø² ³ ³ %³0³»G³´´ ´,´ E´Q´k´|´´´#¡´\Å´"µ'3µ/[µ‹µ$ µ%ŵëµ¶¶’¶›¶¶¶ ж ܶý¶· .·8·G· V·b·v·~·†·Ž·”·©·¾·Ó·í·~¸„¸š¸= ¸Þ¸1ñ¸#¹n<¹E«¹ñ¹ø¹;º Mº[ºbº@~ºõ¿º¿µ»,u¼,¢¼ϼ á¼ï¼2þ¼*1½\½Žo½wþ½jv¾ á¾í¾ü¾ ¿% ¿F¿[¿p¿…¿—¿©¿ ÿѿڿã¿ö¿ü¿À8À UÀbÀgÀ oÀ {À ‡À•À"œÀ"¿ÀâÀòÀ!Á$Á ,Á 9ÁFÁ YÁ(dÁÁ“Áz¬Á'Â8Â? D P \ hÂt | ‡Â ”Â@žÂ ß ì øÂÃÃ/Ã"GÃjÆà ¥Ã ²Ã¿Ã Èà ÔÃáÃûà ÄÄ .Ä ;ÄIÄZÄiÄ ‚ÄÄŸÄ ¯Ä½ÄÅÄÍÄÖÄ ÞÄìÄÅÅ1Å:ÅCÅ TÅ aÅ mÅzŎŞųÅÇÅ×ÅìņÆˆÆ£Æ ¹ÆÅÆÔÆçÆ øÆÇ Ç%ÇK,ÇxÇÇ œÇªÇ¿ÇÒÇèÇ1È6È0EÈ vÈ „ÈŽÈ=É]ÉÝÉâÉ(ôÉÊ %Ê3Ê+PÊ|Ê Ê8‰Ê"ÂÊåÊÂöʹËCÔË8ÌîQÌŸ@Í8àÍ1ÎRKÎcžÎQÏTÏ'oÏ&—Ï:¾ÏlùÏPfÐ-·ÐCåÐA)ÑKkÑ0·Ñ.èÑŽÒ!¦Ò)ÈÒ-òÒ+ Ó8LÓC…ÓuÉÓ,?ÔLlÔ;¹Ô]õÔ…SÕJÙÕc$Ö[ˆÖoäÖ«T×7Øm8Ø_¦Ø[ÙbÙhÙùxÙrÚŠÚ §Ú³ÚÈÚÛÚóÚH ÛZSÛ2®Û"áÛÜÜ3Ü~KÜqÊÜ<݈OÝØÝÜÝðÝ/õÝ %ÞFÞYÞ pÞ~Þ†ÞÞ œÞ$§Þ$ÌÞñÞ ß#ß4ßDßUßmß|߄ߔ߰߯ß$ãßà(àBàXànà#‹àV¯àáá&á 9áDáTádá ‚áŒážá¹áÊáÑá.Ùá âââ5âRâHVâ5ŸâmÕâ7Cã {ã3…ãb¹ãä!ä &ä.1ä `ää‰ä¥äÅäÜäáäçäìäòä÷äýäåå åååå 'å3åBåJåSå\åråƒå œå¦å!¶å|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-05-10 10:16 Last-Translator: Language-Team: English, United Kingdom Language: en_GB MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: en-GB X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitaliseCatalogues &ManagerCatalogues &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localisation platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customise Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are identical to the source text?Do you want to remove all translations that are no longer used?Don’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…E-mail:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogues.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localisation platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimiseName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorised, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen RecentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogues managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognised by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronise the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognised by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogues in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project cataloguesUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognise translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localisation CatalogueYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and e-mail address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIAlt+Ctrl+DownEnterLeftRightShift+UpaltctrlshiftAbout %sHide %sHide OthersPreferences...Quit %sServicesShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.poedit-3.6.3/locales/poedit-quicklook.pot0000644000175100001660000000362315011674230014125 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the Poedit package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Poedit 3.6.2\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "" msgstr[1] "" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "" poedit-3.6.3/locales/hy.mo0000644000175100001660000021440715011674363011106 Þ•”¼q\) 7 !7 -7&87_7<s7°7JÃ7g8 v8€8 8™8  8®8µ8»8Ã8Ê8Ñ8×8ß8î8ý89 99&9:9>9P9b9h9m9u9}99¡9¥9 ©9 ¶9Ã9Ì9Õ9 Ü9é9ù9:%:4:P:l:r:x::‡::§: ¾: Ì: Ú:ç:í: ;%;>;W;n;…;‹;;§;·; Õ; á;ë;ô;ü;< < <"< 1<=< M<Y< s<€< <›<«<¿<Ú<ã<= =@= V= c=1o='¡=É=æ= > >7>6I>€>) >Ê> Ï>]Ú>8?<K?Dˆ?$Í?ò? ù?€@‡@ Ž@"œ@¿@+Ú@)A 0A;AMA_ApAƒAŒAŸA»A×A#ìAB%B4B :BEB WBbBtBzB‹B%œBÂB ÝBþBCC'C 8CFC/aC ‘CkžC DD"D8DKDaD-€D1®DàD ùDE)EEE eEsExE‹EžE³E·EÎEÕEôEF$F3FFF;YF •F'¢F^ÊF?)G iG wG„G*—GÂG"ÕG5øG.HIHdHjH oH }H ‹H ˜H ¥H²HÃHËHÓHÚHfìHSImIu‡IýIJ""JEJ LJWJfJ wJ„J0•JÆJàJ#õJ<KVK fK*qK0œK!ÍK'ïKLL2L(QLTzLÏL ÔL ÞLìLMM&M ;M EM SM `MmM|M‹M¥M­M ¾MÊM ÒMÝM âMïMÿMN8N©;N‡åNzmOèO ïOûOP*P=PYPsPzPP®P ÆPçP ïP üPQQ$Q;:Q(vQŸQ¼QÏQ ÞQ èQöQR ,R7RKR:dR ŸR<­R êRŒ÷R.„S³SÃS*ÓSþST )T3TJT*ST~T„T•T ¦T ±T»¼TxU|U•U ®UºUËUÜUßU#ðU\VqV'‚V/ªVÚV$ïV%W:WPWSW’WWêWX X +XLXcX }X‡X–X ¥X±X¹XÁXÉXÏXäXùXY(Y¹Y¿YÕY=ÛYZ1,Z^ZnwZEæZ,[3[;L[ ˆ[–[[@·[õø[¿î\,®],Û]^ ^(^27^*j^•^ލ^w7_j¯_ `&`5`D`%Y``”`©`¾`Ð`â` ü` aaa/a5aPa8Ua Ža›a a ¨a ´a ÀaÎa Öa ãaða b(b7b=bzVbÑbâbéb îb úb c cc &c 1c >c Hc Uc aclc‡c˜c"°cÓcïc d d (d 4dAd[dkd{d Žd ›d©dºdÉd âdïdÿd ee%e-e6e >eLeeexe‘eše£e ´e Áe ÍeÚeîeþef'f7fLf†afèfg g%g4gGg Xgfg wg…gKŒgØgíg üg hh2hHh1dh–h ¥h ³hŽ¿h=NiŒi jj(#jLj Tjbj+j«j ®j8¸j"ñjkÂ%kèkCl8Glî€lŸom8n1HnRzncÍnQ1oƒo'žo:ÆolpPnp-¿pCípA1qKsq0¿q.ðqŽr!®r)Ðr-úr+(s8TsCsuÑs,GtLtt;Át]ýt…[uJáu[,voˆv«øv7¤wmÜw_Jx[ªxy yy4y Qy]yry…yy2´y"çy z"z9z~QzqÐzB{ˆU{Þ{â{ö{ û{|/|F|N| U|"`|$ƒ|¨|Á|Ú|ë|û| }$}3};}K}a}$~}£}Ã}Ý}ó} ~#&~VJ~¡~¸~Á~ Ô~ß~ý~*;B.J y…ަHª5óm)€7—€ Ï€3Ù€a oty.– Åæ‚"‚9‚L‚^‚q‚ƒ‚–‚ª‚º‚Ë‚Ý‚ð‚ ƒ!ƒ=ƒ\ƒtƒƒ¦ƒ¼ƒ̓æƒ!öƒ¬„Å…Ø…-é…#†q;†­†£Å†…i‡ï‡*ˆ,ˆ>ˆWˆmˆˆ‰ˆ ›ˆ ©ˆµˆ Lj&Óˆ&úˆ!‰ 3‰=‰L‰k‰ Љ1˜‰1ʉü‰Š Š%Š,6Š,cŠŠ–Š"žŠ"ÁŠäŠóŠ‹%‹(:‹,c‹,‹ ½‹?Þ‹?Œ ^ŒjŒ|Œ ŒœŒ+³Œ+ߌ( (4]{&&´*Û*Ž:1Ž:lŽ §Ž±Ž'¹ŽáŽ<=N_ p{Œ-ŸÍ*ì"5-X2†¹*Ø‘"!‘'D‘/l‘œ‘N±‘K’NL’4›’1Ð’“t“`“Að“52”h”q”+„”J°”:û”>6•u•|•È™•(b–o‹–gû–Hc— ¬—¹—Ó—ä˜õ˜U ™6a™K˜™Xä™=š*Tš*š)ªš?Ôš›%2›FX›DŸ›,ä›:œ,Lœ-yœ §œ´œ+Ìœøœ+ <GcG4ÇLüIžhž=ˆžÆžâž<üžn9Ÿ¨Ÿì»Ÿ¨ ¹ 4Ù #¡42¡g¡T…¡XÚ¡/3¢c¢2{¢N®¢?ý¢=£ Q£']£'…£0­£ Þ£é£ ¤B¤U¤Bu¤¸¤+Ô¤¥f¥ƒ¥?¥¸Ý¥|–¦ § !§.§SN§¢§L§o¨>¨>¾¨ ý¨ ©2©2M©1€©1²©!ä©!ª(ª;ªOª`ª•qª0«08«Çi«"1¬"T¬=w¬µ¬ ĬϬï¬ ­*­cD­<¨­.å­e®Yz®+Ô®¯F¯q`¯LÒ¯h°ˆ°+‘°2½°=ð°’.± Á±̱æ±%²5&²0\²3²Á²Û²õ²³)³G³/e³•³$³ ³γݳï³!´&&´#M´Gq´¹´¼´TMµ/¢¶Ò·%á·¸?&¸f¸?…¸<Ÿ ¹( ¹65¹6l¹>£¹â¹ó¹ º,º Bº'MºUuº8˺)»!.»P»e»t»<”»=Ñ»¼*&¼,Q¼M~¼̼uá¼W½9u½\¯¾ ¿,¿<J¿*‡¿%²¿Ø¿;î¿*À6=À tÀÀ À¿À×ÀMïÀ=ÂDÂc ‚®ÂÌÂ5ÑÂGÃ’OÃ5âÃIÄbbÄ6ÅÄFüÄ@CÅ0„ŵżÅÃÅ=ÅÆ3Ç7ÇKQÇ2Ç3ÐÇÈÈ:ÈZÈ tÈ ‚ÈȥȬÈËÈ*êÈ+ÉÝAÉÊ#0ÊTÊwcÊ0ÛÊT Ë8a˱šË3LÌ€Ì:ÌÊÌJÍeÍ3lÍk ÍÆ Î-ÓÏPÑ>RÑ(‘ѺÑÕÑQòÑ_DÒ'¤Ò?ÌÒö ÔåÕ$éÕ'Ö'6Ö,^Ö9‹ÖÅÖãÖ.×%0×%V×2|ׯ×Ì×Ý×)î× Ø>%Ø dØmoØÝØùØ Ù"Ù"@ÙcÙvÙ ‰Ù ªÙËÙéÙSÿÙSÚHfÚ™¯Ú'IÛqÛ „ÛÛ©Û$ÃÛ$èÛ Ü#Ü+<ÜhÜ~ܚܱÜCÇÜ! Ý2-Ý0`Ý<‘Ý3ÎÝÞÞ.Þ%DÞUjÞ*ÀÞ$ëÞ/ß+@ß/lß-œß#Êß;îß%*à*Pà${à/ àÐàáàùàá'á+Báná+Žáºá Ðá2Ûáâ$â)Bâ0lâ/â5Íâ0ã/4ã5dã.šãÉã1ää1åHå hå'‰å1±å+ãå)æ!9æ[æ‹dæ>ðæ/ç'Mç1uç §ç&Èç2ïça"è„è˜è"³è Öè\áéË>ê ëëD.ësë!Œë>®ëZíëHìMìM^ì9¬ì#æìn í(yî‚¢îb%ï߈ï>hñN§òQöòqHó›ºóVô0æô7õCOõ–“õ˜*öBÃöz÷w÷“ù÷[øOéø-9ù1gúF™úHàú\)ûZ†ûsáûÈUüDýucýPÙý*þºþ‚Ìÿ™OÒéH¼d±j«ªÈs„*›/Æö':;7v9®aèDJ77Ç=ÿö=ò4 %' ÄM   ( F )W ' !© Ë â õ K ^a 'À 'è  . #J 0n +Ÿ Ë %ä 7 DBP‡?Ø;=T ’$³?ض=Ï +"N)`Š-© ×ø n€˜-­Û…â[hÍÄP’ã_÷ÄW#6ZN*©=Ô@Sjpu{‚‡Ž‘•š ±!Æ'è!@"`ƒ(›Ä%áayb~ƒFga$0©ºðBçBì(IudŽh´%c•4–s›fXÙYc6ñ¤0BPf* 7~vgEl;>rSå c õUz¶˜d‘QKu“kÚÀçÓD’ÔÓNæ/öH–L|Zyá²@CS?L+ #þ,m'ÃHY›v’~ ; ÊÁIŠ×`r9±-\ªý%& µ =TÇËk³vìªãŒí„P¾h>bsDõѧ5 7[ò…ÿ<Û}'­ãô뙡!Á”1·!]÷­ñÔï` »×? "+«;Ì<Þ¸—X¥-úRàûå¨À’ÈG‹9AÊ»³^4´TâfÜ!¿È(« ÞÒP £ ‰$\0/Ãöíß}®"l k·Üm¼¸¹tRä1e5pWèºé? b˜}„ 8L¬…^½#$d®/eêF²jŽnÅO¯Y8€Ÿ9QCDwútoýaG-UGFÆŠ¼=E2qÆÛ[h'ˆ.üšè‡‰¿&1ùÍ4†i]&7MÖ—£{T)Ïû3¶•‡Ðq:@‘A“øtV2ŽV:î‹3gØßq_“¦‚Z,øn=ÂW„¦Äœ‹½Ëm,XCü(™…±Ð_`e>æÒžÝ^ÇN|€xiÙiK°¾ÕI)¤+{*"W‘@ä[JNw÷¡Sj|MZ§óòÄoOÎþáp.oxJˆzM.uQØêé°2¯šOΉŒ̓pH‚zù† EÕ¹ˆ#ŠÿU)¨É€Å¢¥ƒðÉ%à\µ3â5r¬KŸ*{y žRôxAós†”6nVëÚÖÑ¢8:ÝŒj‚Ï©6lï<w_Ì]‡J (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.UntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Armenian Language: hy_AM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: hy-AM X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (ÖƒÕ¸ÖƒÕ¸Õ­Õ¾Õ¡Õ®)(Õ¹ÕºÕ¡Õ°Õ¾Õ¡Õ®)%d Õ¯Õ¸Õ¤Õ« Õ¤Õ¥ÕºÖ„%d Õ¯Õ¸Õ¤Õ« Õ¤Õ¥ÕºÖ„Õ¥Ö€%d Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´%d Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´%d Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¨ Õ¶Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¥Õ¬ Õ§:%d Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¶Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¥Õ¬ Õ¥Õ¶:%d Õ½Õ­Õ¡Õ¬%d Õ½Õ­Õ¡Õ¬%d Õ­Õ¶Õ¤Õ«Ö€ Õ§ Õ°Õ¡ÕµÕ¿Õ¶Õ¡Õ¢Õ¥Ö€Õ¾Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¸Ö‚Õ´:%d Õ­Õ¶Õ¤Õ«Ö€Õ¶Õ¥Ö€ Õ¥Õ¶ Õ°Õ¡ÕµÕ¿Õ¶Õ¡Õ¢Õ¥Ö€Õ¾Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¸Ö‚Õ´:«%2$s» Õ¶Õ«Õ·Ö„Õ« %1$i Õ¿Õ¸Õ²Õ¨ Õ³Õ«Õ·Õ¿ Õ¹Õ§ Õ¢Õ¥Õ¼Õ¶Õ¾Õ¥Õ¬.«%2$s» Õ¶Õ«Õ·Ö„Õ« %1$i Õ¿Õ¸Õ²Õ¥Ö€Õ¨ Õ³Õ«Õ·Õ¿ Õ¹Õ¥Õ¶ Õ¢Õ¥Õ¼Õ¶Õ¾Õ¥Õ¬.%s Õ±Õ¥Ö‚Õ¡Õ¹Õ¡Öƒ%s-Õ« Õ¶Õ¡Õ­Õ¡ÕºÕ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€%s Õ±Õ¥Ö‚Õ¡Õ¹Õ¡Öƒ&Ô¾Ö€Õ¡Õ£Ö€Õ« Õ´Õ¡Õ½Õ«Õ¶Poedit-Õ« &Õ´Õ¡Õ½Õ«Õ¶&Ô³Õ¸Ö€Õ®Õ¡Õ¤Ö€Õ¥Õ¬&Õ€Õ¥Õ¿&Õ‰Õ¥Õ²Õ¡Ö€Õ¯Õ¥Õ¬&Õ„Õ¡Ö„Ö€Õ¥Õ¬&Õ“Õ¡Õ¯Õ¥Õ¬&ÕŠÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬&Õ‹Õ¶Õ»Õ¥Õ¬&ÕŠÕ¡Õ¿Ö€Õ¡Õ½Õ¿ Õ§ Õ¥Ö‚ Õ°Õ¡Õ»Õ¸Ö€Õ¤Õ¨&ÕŠÕ¡Õ¿Ö€Õ¡Õ½Õ¿ Õ§ Õ¥Ö‚ Õ°Õ¡Õ»Õ¸Ö€Õ¤Õ¨&Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬&Õ†Õ«Õ·Ö„&Գտնել…&GNU gettext-Õ« Õ±Õ¥Õ¼Õ¶Õ¡Ö€Õ¯&GNU gettext-Õ« Õ±Õ¥Õ¼Õ¶Õ¡Ö€Õ¯&Ô±Õ¶ÖÕ¶Õ¥Õ¬&Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ Õ°Õ¡Õ´Õ¡Õ£Ö€Õ¾Õ¡Õ®Ö„Õ«&Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ Õ°Õ¡Õ´Õ¡Õ£Ö€Õ¾Õ¡Õ®Ö„Õ«&Õ•Õ£Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶&Õ†Õ¸Ö€&Նոր…&Õ€Õ¡Õ»Õ¸Ö€Õ¤ »&Õ€Õ¡Õ»Õ¸Ö€Õ¤ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨&Õ€Õ¡Õ»Õ¸Ö€Õ¤ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨&ÕˆÕ¹&Ô¼Õ¡Õ¾&Ô±Õ¼ÖÕ¡Õ¶Ö Ö…Õ£Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶&Ô±Õ¼ÖÕ¡Õ¶Ö Ö…Õ£Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶&Ô²Õ¡ÖÕ¥Õ¬...&Ô²Õ¡Öել…&ÕÕ¥Õ²Õ¡Õ¤Ö€Õ¥Õ¬&Õ†Õ¡Õ­Õ¡ÕºÕ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€&Նախապատվություններ…&Õ†Õ¡Õ­Õ¸Ö€Õ¤ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨&Õ†Õ¡Õ­Õ¸Ö€Õ¤ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨&Հատկություններ…&Õ„Õ¡Ö„Ö€Õ¥Õ¬ Õ»Õ¶Õ»Õ¾Õ¡Õ® Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨&Õ„Õ¡Ö„Ö€Õ¥Õ¬ Õ»Õ¶Õ»Õ¾Õ¡Õ® Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨&Õ“Õ¡Õ¯Õ¥Õ¬&Ô¿Ö€Õ¯Õ¶Õ¡Õ¯Õ¥Õ¬&Õ“Õ¸Õ­Õ¡Ö€Õ«Õ¶Õ¥Õ¬&ÕŠÕ¡Õ°Õ¥Õ¬&ÕŠÕ¡Õ°Õ¥Õ¬ Õ¸Ö€ÕºÕ¥Õ½&Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯Õ¸Õ¤Õ« Õ¤Õ¥ÕºÖ„Õ¥Ö€Õ¨&Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯Õ¸Õ¤Õ« Õ¤Õ¥ÕºÖ„Õ¥Ö€Õ¨&Õ„Õ¥Õ¯Õ¶Õ¡Ö€Õ¯Õ¡ÕµÕ«Õ¶ ÕºÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶&Õ„Õ¥Õ¯Õ¶Õ¡Ö€Õ¯Õ¡ÕµÕ«Õ¶ ÕºÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶&Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶&Õ€Õ¥Õ¿Õ¡Ö€Õ¯Õ¥Õ¬&Õ†Õ¡Õ­ Õ¹Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ®Õ¶Õ¥Ö€Õ¨&Õ†Õ¡Õ­ Õ¹Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ®Õ¶Õ¥Ö€Õ¨&Ô±Ö€Õ¤Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ«Ö&Ô±Ö€Õ¤Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ«Ö&ÕŽÕ¡Õ¾Õ¥Ö€Õ¡ÖÕ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨&ÕŽÕ¡Õ¾Õ¥Ö€Õ¡ÖÕ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨&ÕÕ¥Õ½Ö„&Ô±ÕµÕ¸(Õ•Õ£Õ¿. Õ¬Õ¼Õ¥Õ¬ÕµÕ¡ÕµÕ¶ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶)(Õ´Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¡Õ® Õ¹Õ§)(ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¸Ö‚Õ´ Õ§ Windows 8 Õ¯Õ¡Õ´ Õ¡Õ¾Õ¥Õ¬Õ« Õ¶Õ¸Ö€Õ¨)« &Õ†Õ¡Õ­Õ¸Ö€Õ¤<Õ¡Õ¶Õ¡Õ¶Õ¸Ö‚Õ¶>%s-Õ« Õ´Õ¡Õ½Õ«Õ¶Õ€Õ¡Õ·Õ«Õ¾Õ€Õ¡Õ·Õ«Õ¾Õ¶Õ¥Ö€Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ նիշքեր…Հավելել թղթապանակներ…Հավելել Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ դերանշան…Հավելել Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Ô³Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¨ Õ°Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ ÖÕ¡Õ¶Õ¯Õ¸Ö‚Õ´Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ նիշքեր…Հավելել թղթապանակներ…Հավելել Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®Õ€Õ¡Õ¾Õ¥Õ¬Õ¥Õ¬ դերանշան…ԼրաÖÕ¸Ö‚ÖÕ«Õ¹ Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ¥Ö€Ô¼Ö€Õ¡ÖÕ¸Ö‚ÖÕ«Õ¹ xgettext Õ¤Ö€Õ¸Õ·Õ¡Õ¯Õ¶Õ¥Ö€.Ô¸Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¾Õ¡Õ®Ô´Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¥Õ¬Õ¸Ö‚ Õ¨Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¾Õ¡Õ® կարգավորումներ…Դուրս Õ¢Õ¥Ö€Õ¥Õ¬Õ¸Ö‚ Õ¨Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¾Õ¡Õ® Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€Ô´Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¥Õ¬Õ¸Ö‚ Õ¨Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¾Õ¡Õ® կարգավորումներ…Թարգմանության Õ¢Õ¸Õ¬Õ¸Ö€ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨Ô²Õ¸Õ¬Õ¸Ö€ Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨Ô²Õ¸Õ¬Õ¸Ö€ Õ¿Õ¸Õ²Õ¥Ö€Õ¨Õ†Õ¡Õ¥Ö‚ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Ö„ Õ¬Õ¼Õ¥Õ¬ÕµÕ¡ÕµÕ¶ Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ¥Ö€Õ Õ¡Õ»Õ¡Õ¯ÖÕ¾Õ¸Õ² Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€Ô´Õ¡Õ·Õ¿Õ¨ Õ´Õ«Õ·Õ¿ Õ¡Õ¯Õ¿Õ«Õ¾ Õ¤Õ¡Ö€Õ±Õ¶Õ¥Õ¬Õ Õ£Ö€Õ¾Õ¡Õ®Ö„ Õ´Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€Õ„Õ«Õ¡Õ¾Õ¸Ö€Õ¨ Õ¶Õ¥Ö€Õ¡Õ®Õ¾Õ¡Õ® Õ¶Õ«Õ·Ö„Õ¥Ö€Õ« ÖÕ¡Õ¶Õ¯Õ¸Ö‚Õ´ Õ§.Õ„Õ«Õ¡Õ¾Õ¸Ö€Õ Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ¥Ö€Õ« ÖÕ¡Õ¶Õ¯Õ¸Ö‚Õ´.ÕÕ¥Õ½Ö„Ô³Õ¸Ö€Õ®Õ¡Õ¤Ö€Õ¥Õ¬Õ‹Õ¶Õ»Õ¥ÕžÕ¬ “%s†արտահանիչը:ÕŽÕ¥Ö€Õ¡Õ¯Õ¡ÕµÕ¥ÕžÕ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Ô»Õ¶Ö„Õ¶Õ¡Õ¢Õ¡Ö€ Õ½Õ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ©Õ¡Ö€Õ´Õ¡ÖÕ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ÕŠÕ¡Õ°Õ¥Õ¬Õ«Õ½ Õ«Õ¶Ö„Õ¶Õ¡Õ¢Õ¡Ö€ Õ¯Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¥Õ¬ MO Õ¶Õ«Õ·Ö„Õ€Õ¥Õ¿Õ€Õ«Õ´Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¸Ö‚Õ²Õ«Õ¶.Ô²Õ¥Õ¿Õ¡ Õ¾Õ¡Ö€Õ¯Õ¡Õ®Õ¨ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ§ Õ¡Õ´Õ¥Õ¶Õ¡Õ¾Õ¥Ö€Õ»Õ«Õ¶ ÕµÕ¸Ö‚Ö€Õ¡Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¥Ö‚ Õ¬Õ¡Õ¾Õ¡Ö€Õ¯Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨, Õ¢Õ¡ÕµÖ Õ¯Õ¡Ö€Õ¸Õ² Õ§ Õ¯Õ¡ÕµÕ¸Ö‚Õ¶ Õ¹Õ¡Õ·Õ­Õ¡Õ¿Õ¥Õ¬:ÕŠÕ¡Õ°Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨ Õ¡Õ¼Õ»Õ¥Ö‚Õ¸Ö‚Õ´ÕŽÕ¶Õ¡Õ½Õ¾Õ¡Õ® PO Õ¶Õ«Õ·Ö„. Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« msgstr Õ±Õ¥Ö‚Õ¨ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ® Õ§ Õ¡Õ¼Õ¡Õ¶Ö msgid_plural-Õ«ÕŽÕ¶Õ¡Õ½Õ¾Õ¡Õ® PO Õ¶Õ«Õ·Ö„. Õ¥Õ¦Õ¡Õ¯Õ« msgstr Õ±Õ¥Ö‚Õ¨ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ® Õ§ msgid_plural-Õ« Õ°Õ¥Õ¿Ô¿Õ¸Õ¿Ö€Õ¾Õ¡Õ® Õ¶Õ·Õ¡Ö€Õ¯Õ¸Ö‚Õ´ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¿Õ¸Õ²Õ¸Ö‚Õ´:Ô¸Õ¶Õ¿Ö€Õ¥Õ¬Ô´Õ«Õ¿Õ¥Õ¬ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¤Õ«Ö€ Õ¸Õ¹ Õ³Õ«Õ·Õ¿ Õ¡Ö€Õ¤ÕµÕ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€Õ¨ Õ¶Õ¸Ö‚ÕµÕ¶ÕºÕ¥Õ½ Õ¶Õ¥Ö€Õ¡Õ¼Õ¾Õ¡Õ® Õ¥Õ¶, Õ¢Õ¡ÕµÖ Õ¶Õ·Õ¾Õ¡Õ® Õ¸Ö€ÕºÕ¥Õ½ Õ¸Õ¹ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶: Ô¸Õ¶Õ¿Ö€Õ¥Ö„ Õ¡ÕµÕ½ Õ¨Õ¶Õ¿Ö€Õ¡Õ¶Ö„Õ¨Õ Õ´Õ«Õ¡ÕµÕ¶ Õ³Õ«Õ·Õ¿ Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¶Õ¥Ö€Õ¡Õ¼Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ¶Õ¡Ö€:ՉեղարկելՉեղարկում…Հնարավոր Õ¹Õ¥Õ²Õ¡Õ¾ Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬ ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ¡Õ¾Õ¸Ö€ Õ£Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯:Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ¯Õ¡Õ¿Õ¡Ö€Õ¥Õ¬ %s Õ®Ö€Õ¡Õ£Õ«Ö€Õ¨Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ¶Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬ Õ¡Õ¶Õ°Õ¡ÕµÕ¿ Õ¬Õ¥Õ¦Õ¾Õ«Ö:Ô±Õ¼Õ¡Õ¶Ö Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ« Õ¡Õ¶Õ°Õ¶Õ¡Ö€ Õ§ Õ¶Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬:Ô³Õ¬Õ­Õ¡Õ¿Õ¡Õ¼Õ¡ÖÕ¥Õ¬Ô³Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ« &Õ¯Õ¡Õ¼Õ¡Õ¾Õ¡Ö€Ô³Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ« &Õ¯Õ¡Õ¼Õ¡Õ¾Õ¡Ö€Ô³Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ« Õ¯Õ¡Õ¼Õ¡Õ¾Õ¡Ö€Õ“Õ¸Õ­Õ¥Õ¬ OÕ„-Õ« Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ (Õ•Õ£Õ¿Õ¾Õ¸Õ²Õ« Õ„Õ«Õ»Õ¥Ö€Õ¥Õ½)Ô±ÕµÕ¬Õ¡Õ£Õ«Ö€Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´.ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ¸Ö‚Õ²Õ©Õ¨ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Ö„Õ¥Ö€Õ¡Õ¯Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ´Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Õ¬Õ«Õ½ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ¸Ö‚Õ²Õ²Õ¡Õ£Ö€Õ¸Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ´Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Õ¬Õ«Õ½ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ©Õ¡Ö€Õ´Õ¡Öումները…ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ½Õ­Õ¡Õ¬Õ¶Õ¥Ö€Õ¨ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ©Õ¡Ö€Õ´Õ¡Öումները…ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ¸Ö‚Õ²Õ²Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Õ„Õ¡Ö„Ö€Õ¥Õ¬Õ„Õ¡Ö„Ö€Õ¥Õ¬ ÖÕ¡Õ¶Õ¯Õ¨Õ„Õ¡Ö„Ö€Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Õ„Õ¡Ö„Ö€Õ¥Õ¬ ÖÕ¡Õ¶Õ¯Õ¨Õ„Õ¡Ö„Ö€Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Õ“Õ¡Õ¯Õ¥Õ¬Ô±ÕµÕ¬Õ¡Õ£Ö€Õ« Õ¤Õ¥ÕºÖ„Õ¥Ö€Ô±ÕµÕ¬Õ¡Õ£Ö€Õ« Õ¤Õ¥ÕºÖ„Õ¥Ö€Õ€Õ¡Õ´Õ¡Õ£Õ¸Ö€Õ®Õ¡Õ¯ÖÕ¥Õ¬ Õ¡ÕµÕ¬ Õ´Õ¡Ö€Õ¤Õ¯Õ¡Õ¶Ö Õ°Õ¥Õ¿ Õ¡Õ¼ÖÕ¡Õ¶Ö:Õ€Õ¡Õ¾Õ¡Ö„Õ¸Ö‚Õ´ Õ§ Õ¡Õ²Õ¢ÕµÕ¸Ö‚Ö€ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨...Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¤Õ¸Ö‚Ö€Õ½ Õ°Õ¡Õ¶Õ¥Õ¬Õ¸Ö‚ Õ°Ö€Õ¡Õ´Õ¡Õ¶.Õ„Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ„Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶.Õ„Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€ Õ¶Õ¡Õ­Õ¡Õ¶Õ®Õ¡Õ¶ÖÕ¸Õ¾ÕÔ¿Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¥Õ¬ MO-ի…Կազմարկել Õ¡Õ¼ÕÔ¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¯Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¾Õ¡Õ® Õ¶Õ«Õ·Ö„Õ¥Ö€Ô¿Õ¡Õ¦Õ´Õ¡Õ±Õ¥Ö‚Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ« Õ¤Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¸Ö‚Õ´Õ¨ Õ€Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´:Õ€Õ¡Õ½Õ¿Õ¡Õ¿Õ¸Ö‚Õ´Ô¿Õ¡ÕºÕ¡Õ¯ÖÕ¥Õ¬ Poedit-Õ¶ Õ¡Õ»Õ¡Õ¯ÖÕ¾Õ¸Õ² Õ¡Õ´ÕºÕ« Õ¿Õ¥Õ²Õ¡ÕµÕ¶Õ¡ÖÕ´Õ¡Õ¶ Õ°Õ¡Ö€Õ©Õ¡Õ¯Õ¶Õ¥Ö€Õ« Õ°Õ¥Õ¿Õ Õ¤Ö€Õ¡Õ¶ÖÖ„Õ¸Ö‚Õ´ Õ¯Õ¡Õ¼Õ¡Õ¾Õ¡Ö€Õ¾Õ¸Õ² Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¡Õ¶Õ¶Õ¯Õ¡Õ¿ Õ°Õ¡Õ´Õ¡ÕªÕ¡Õ´Õ¥ÖÕ¶Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€:ÕŠÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬ÕŠÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬ Õ¥Õ¦Õ¡Õ¯Õ«Õ«ÖÕŠÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ«ÖÕŠÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ«Õ«ÖÕŠÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ«ÖÔ»Õ¶Ö„Õ¶Õ¡Õ¢Õ¡Ö€ Õ¸Ö‚Õ²Õ²Õ¥Õ¬Ô±Õ¶Õ°Õ¶Õ¡Ö€ Õ§ Õ¶Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Localazy Õ¶Õ¡Õ­Õ¡Õ£Õ®Õ« Õ´Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¥Ö€Õ¨:Õ‰Õ°Õ¡Õ»Õ¸Õ²Õ¾Õ¥Ö Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Ö†Õ¡ÕµÕ¬Õ¨, Õ°Õ¡Õ¾Õ¡Õ¶Õ¡Õ¢Õ¡Ö€ Õ¡ÕµÕ¶ Õ¾Õ¶Õ¡Õ½Õ¾Õ¡Õ® Õ§:Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ ÕºÕ¡Õ°Õ¥Õ¬ %s Õ¶Õ«Õ·Ö„Õ¨:ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¶Õ¸Ö€Õ¨ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¶Õ¸Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¶Õ¸Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ POT Õ±Õ¥Ö‚Õ¡Õ¶Õ´Õ¸Ö‚Õ·Õ«Ö:ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ¸Ö€ Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®Crowdin-Õ« Õ½Õ­Õ¡Õ¬Ô¿Õ¿Ö€Õ¥&Õ¬Ô¸Õ¶Õ¿Ö€Õ¸Õ¾Õ« Õ¤Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¸Ö‚Õ´.Ô¸Õ¶Õ¿Ö€Õ¸Õ¾Õ« Õ¤Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¸Ö‚Õ´.Ô¿Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ£Õ¸Ö€Õ®Õ«Ö„Õ¡Õ£Õ¸Õ¿Õ«Õ¶...Ô¿Õ¿Ö€Õ¥Õ¬Õ‡Õ¿Õ¥Õ´Õ¡Ö€Õ¡Õ¶Õ« Õ¹Õ¡ÖƒÕ¨ÕÕ‹Õ¶Õ»Õ¥Õ¬Õ‹Õ¶Õ»Õ¥Õ¬ Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ«ÖÕ‹Õ¶Õ»Õ¥Õ¬ Õ¡Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ«Õ¹Õ¨Õ‹Õ¶Õ»Õ¥Õ¬ Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ«ÖÕ‹Õ¶Õ»Õ¥Õ¬ Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®Õ¨Õ‹Õ¶Õ»Õ¥Õ¬ Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Õ‹Õ¶Õ»Õ¥Õ¬ Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®Õ¨Ô¾Ö€Õ¡Õ£Õ«Ö€Õ¨ Õ»Õ¶Õ»Õ¥Õ¬Õ¸Õ¾Õ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¸Ö€Õ¥Ö‚Õ§ Õ¶Õ«Õ·Ö„Õ¥Ö€ Õ¹Õ¥Õ¶ Õ»Õ¶Õ»Õ¾Õ«Ö‰Ô³Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€.Õ‘Õ¡Õ¶Õ¯Õ¡Õ¶Õ¸ÕžÖ‚Õ´ Õ¥Ö„ Õ»Õ¶Õ»Õ¥Õ¬ “%s†նախագիծը:Õ‘Õ¡Õ¶Õ¯Õ¡Õ¶Õ¸ÕžÖ‚Õ´ Õ¥Ö„ Õ¯Ö€Õ¯Õ«Õ¶ Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Õ¶Õ«Õ·Ö„Õ¨ Õ°Õ«Õ·Õ¡Õ½Õ¡Ö€Ö„Õ«Ö: Ô±ÕµÕ¤ Õ¤Õ¥ÕºÖ„Õ¸Ö‚Õ´ Poedit-Õ¸Ö‚Õ´ Õ¹ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¾Õ¡Õ® Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¯Õ¯Õ¸Ö€ÖÕ¶Õ¥Ö„:Õ€Õ¥Õ¼Õ¡ÖÕ¶Õ¥ÕžÕ¬ Õ¢Õ¸Õ¬Õ¸Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨, Õ¸Ö€Õ¸Õ¶Ö„ Õ¡ÕµÕ¬Õ¥Ö‚Õ½ Õ¹Õ¥Õ¶ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¸Ö‚Õ´:Õ‰&ÕºÕ¡Õ°Õ¥Õ¬Õ‰ÕºÕ¡Õ°Õ¥Õ¬Ô±ÕµÕ¬Ö‡Õ½ Õ¹ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬Õ‰Õ¶Õ·Õ¥Õ¬ Õ³Õ«Õ·Õ¿ Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¸Ö€ÕºÕ¥Õ½ Õ¸Õ¹ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶Ô±ÕµÕ¬Ö‡Õ½ Õ¹ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬Õ†Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¸Ö‚Õ´ Õ§ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨...Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ¶Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¸Ö‚Õ´Õ¨ Õ¡Õ¶Õ»Õ¡Õ¿Õ¡Õ® Õ§ Õ¡ÕµÕ½ Õ¶Õ¡Õ­Õ¡Õ£Õ®Õ« Õ°Õ¡Õ´Õ¡Ö€:Ô³ÖÕ¥Õ¬ ÕºÕ¡Õ¶Õ¡Õ¯Õ¶Õ¥Ö€Õ¨ Õ¯Õ¡Õ´ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨ Õ¡ÕµÕ½Õ¿Õ¥Õ²Ô³ÖÕ¥Õ¬ ÕºÕ¡Õ¶Õ¡Õ¯Õ¶Õ¥Ö€Õ¨ Õ¯Õ¡Õ´ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨ Õ¡ÕµÕ½Õ¿Õ¥Õ²Õ“&Õ¡Õ¯Õ¥Õ¬Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ &Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ &Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®Õ¨Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ նախագիծըԽմբագրումԽմբագրել…Էլ. ÖƒÕ¸Õ½Õ¿ÕÔ¼Ö€Õ¡Õ§Õ¯Ö€Õ¡Õ¶Ô±ÕµÕ½ Õ¶Õ«Õ·Ö„Õ¸Ö‚Õ´ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¸Ö‚Õ¶Õ¥Õ¶ Õ¡ÕµÕ¬ Õ±Õ¥Ö‚, Ö„Õ¡Õ¶ Õ¡Õ½Õ¾Õ¡Õ® Õ§ Õ¶Õ«Õ·Ö„Õ« Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€Õ« Õ§Õ»Õ¡Õ£Õ¬Õ­Õ¸Ö‚Õ´Õ†Õ¡Õ­ Õ½Õ­Õ¡Õ¬Õ¶Õ¥Ö€Õ¸Õ¾ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨Õ†Õ¡Õ­ Õ½Õ­Õ¡Õ¬Õ¶Õ¥Ö€Õ¸Õ¾ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ÕÕ­Õ¡Õ¬Õ¶Õ¥Ö€Õ¸Õ¾ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ ÖÕ¡Õ¶Õ¯Õ¸Ö‚Õ´ Õ¶Õ·Õ¾Õ¡Õ® Õ¥Õ¶ Õ¯Õ¡Ö€Õ´Õ«Ö€ Õ£Õ¸Ö‚ÕµÕ¶Õ¸Õ¾: ÕÕ­Õ¡Õ¬Õ« Õ´Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¥Ö€Õ¨ Õ¯ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¾Õ¥Õ¶, Õ¥Ö€Õ¢ Õ¨Õ¶Õ¿Ö€Õ¥Ö„ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¨:Õ†Õ«Õ·Ö„Õ¨ Õ¢Õ¡ÖÕ¥Õ¬Õ¸Ö‚ Õ½Õ­Õ¡Õ¬Õ†Õ«Õ·Ö„Õ¨ ÕºÕ¡Õ°Õ¥Õ¬Õ¸Ö‚ Õ½Õ­Õ¡Õ¬XLIFF Ö†Õ¡ÕµÕ¬Õ« Õ¢Õ¥Õ¼Õ¶Õ´Õ¡Õ¶ Õ¨Õ¶Õ©Õ¡ÖÖ„Õ« Õ­Õ¶Õ¤Õ«Ö€. %sÕÕ­Õ¡Õ¬Õ¶Õ¥Ö€Ô±Õ´Õ¥Õ¶Õ¨Ô²Õ¡ÖÕ¡Õ¼Õ¾Õ¡Õ® Õ¸Ö‚Õ²Õ«Õ¶Õ¥Ö€Ô±Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ¥Õ¬ TMX…Արտահանել որպես…Արտահանել TMX…Թարգմանության Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¡Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ¸Ö‚Õ´Õ¨ “%s†ձախողվեÖ:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« արտահանում…Հանել Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¡ÕµÕ¬Õ¡Õ£Ö€Õ«ÖÔ´Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¥Õ¬ Õ¶Õ·Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ«Õ¹Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€ Õ°Õ¥Õ¿Õ¥Ö‚ÕµÕ¡Õ¬Õ«ÖÕÕ€Õ¡Õ¶Õ¥Õ¬ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¶Õ«Õ·Ö„Õ«Ö Õ°Õ¥Õ¿Õ¥Ö‚ÕµÕ¡Õ¬ Õ¿Õ¥Õ²Õ¸Ö‚Õ´ÕÔ±Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ«Õ¹Õ« Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Ô±Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ«Õ¹Õ¶Õ¥Ö€Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ¯ÖÕ¥Õ¬ Poedit-Õ« Õ¨Õ¶Õ©Õ¡ÖÖ„Õ¨:Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ¥Õ²Õ¡Õ¾ Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Õ¤Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¾Õ¡Õ® Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¥Õ¶Ö€Õ« Õ¶Õ«Õ·Ö„Õ¨:Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ¥Õ²Õ¡Õ¾ Õ±Õ¸Ö‚Õ¬Õ¥Õ¬ gettext Õ£Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ¨:Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ¥Õ²Õ¡Õ¾ Õ©Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨. %sÕ†Õ«Õ·Ö„Õ†Õ«Õ·Ö„Õ¨ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ¢Õ¡Öել«%s» Õ¶Õ«Õ·Ö„Õ¨ Õ£Õ¸ÕµÕ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¹Õ¸Ö‚Õ¶Õ«:“%s†նիշքը Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ«Õ·Ö„ Õ¹Õ§:«%s» Õ¶Õ«Õ·Ö„Õ¨ Õ´Õ«Õ¡ÕµÕ¶ Õ¯Õ¡Ö€Õ¤Õ¡Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ Õ§ Õ¥Ö‚ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ¡ÕµÕ¶ ÕºÕ¡Õ°Õ¥Õ¬: ÕŠÕ¡Õ°Õ¥Ö„ Õ¡ÕµÕ¶ Õ¡ÕµÕ¬ Õ¡Õ¶Õ¸Ö‚Õ¶Õ¸Õ¾:Ô³Õ¿Õ¶Õ¥Õ¬Ô³Õ¿Õ¶Õ¥Õ¬ Õ°Õ¡Õ»Õ¸Ö€Õ¤Õ¨Ô³Õ¿Õ¶Õ¥Õ¬ Õ¶Õ¡Õ­Õ¸Ö€Õ¤Õ¨Ô³Õ¿Õ¶Õ¥Õ¬ Õ¥Ö‚ փոխարինել…Գտնել Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´Ô³Õ¿Õ¶Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¸Ö‚Õ´Ô³Õ¿Õ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´Ô³Õ¿Õ¶Õ¥Õ¬ Õ°Õ¡Õ»Õ¸Ö€Õ¤Õ¨Ô³Õ¿Õ¶Õ¥Õ¬ Õ¶Õ¡Õ­Õ¸Ö€Õ¤Õ¨ÕˆÖ‚Õ²Õ²Õ¥Õ¬ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ÕˆÖ‚Õ²Õ²Õ¥Õ¬ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ÕˆÖ‚Õ²Õ²Õ¥Õ¬ Õ£Õ¬Õ­Õ¡Õ£Õ«Ö€Õ¨ÕˆÖ‚Õ²Õ²Õ¥Õ¬ Õ£Õ¬Õ­Õ¡Õ£Õ«Ö€Õ¨Flutter Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Ö†Õ¡ÕµÕ¬Õ¥Ö€%i-Õ«ÖÕÕ¥Ö‚ %i (Õ¹Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ®)GNU gettextÔ³Õ¬Õ­Õ¡Õ¾Õ¸Ö€HTML Õ¶Õ«Õ·Ö„Õ¥Ö€Õ•Õ£Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Ô¹Õ¡Ö„ÖÕ¶Õ¥Õ¬ Õ¯Õ¸Õ²Õ¡Õ£Õ¸Õ¿Õ«Õ¶Ô¹Õ¡Ö„ÖÕ¶Õ¥Õ¬ ÕŽÕ«Õ³Õ¡Õ¯Õ« Õ£Õ¸Õ¿Õ«Õ¶Ô¹Õ¡Ö„ÖÕ¶Õ¥Õ¬ Õ®Õ¡Õ¶Õ¸Ö‚ÖÕ¸Ö‚Õ´Õ¨Ô»Õ¶Õ¹ÕºÕ¥ÕžÕ½ Õ§ Õ¡Õ·Õ­Õ¡Õ¿Õ¸Ö‚Õ´ Õ¡Õ´ÕºÕ« Õ°Õ¡Õ´Õ¡ÕªÕ¡Õ´Õ¥ÖÕ¸Ö‚Õ´Õ¨:IDÔµÕ©Õ¥ Õ·Õ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¥Ö„ Õ´Õ¡Ö„Ö€Õ¥Õ¬, Õ¡ÕºÕ¡ Õ¶Õ·Õ¾Õ¡Õ® Õ¢Õ¸Õ¬Õ¸Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¯Õ»Õ¶Õ»Õ¾Õ¥Õ¶ Õ¡Õ¶Õ¾Õ¥Ö€Õ¡Õ¤Õ¡Ö€Õ±:ÔµÕ©Õ¥ Õ¶Õ¡Õ­Õ¯Õ«Õ¶Õ¸Ö‚Õ´ Õ´Õ¥Ö€ÕªÕ¸Ö‚Õ´ Õ¥Ö„ Õ½Õ¿Õ¡ÖÕ¥Õ¬ Õ´Õ¡Õ¿Õ¹Õ¥Õ¬Õ¸Ö‚ Õ±Õ¥Ö€ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨, Õ¡ÕºÕ¡ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¥Õ¬ Õ¡ÕµÕ¶ Õ€Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£Õ« Õ¶Õ¡Õ­Õ¡ÕºÕ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€ > Ô±Õ¶Õ¾Õ¿Õ¡Õ¶Õ£Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¥Ö‚ Ô³Õ¡Õ²Õ¿Õ¶Õ«Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ > Ô³Õ¡Õ²Õ¿Õ«Õ¶Õ«Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ > Õ†Õ«Õ·Ö„ Õ¥Ö‚ ÕºÕ¡Õ¶Õ¡Õ¯Õ¶Õ¥Ö€-Õ¸Ö‚Õ´:ÔµÕ©Õ¥ Õ¶Õ¡Õ­Õ¯Õ«Õ¶Õ¸Ö‚Õ´ Õ´Õ¥Ö€ÕªÕ¸Ö‚Õ´ Õ¥Ö„ Õ½Õ¿Õ¡ÖÕ¥Õ¬ Õ´Õ¡Õ¿Õ¹Õ¥Õ¬Õ¸Ö‚ Õ±Õ¥Ö€ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨, Õ¡ÕºÕ¡ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¥Õ¬ Õ¡ÕµÕ¶ Õ€Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£Õ« Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€ » Ô±Õ¶Õ¾Õ¿Õ¡Õ¶Õ£Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Ö‡ Õ£Õ¡Õ²Õ¿Õ¶Õ«Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ » Õ†Õ«Õ·Ö„Õ¥Ö€ Ö‡ ÕºÕ¡Õ¶Õ¡Õ¯Õ¶Õ¥Ö€-Õ¸Ö‚Õ´:Ô±Õ¶Õ¿Õ¥Õ½Õ¥Õ¬Ô±Õ¶Õ¿Õ¥Õ½Õ¥Õ¬ Õ£Ö€Õ¡Õ¶ÖÕ¡Õ¿Õ¥Õ²Õ«Õ¶Õ†Õ¥Ö€Õ´Õ¸Ö‚Õ®Õ¥Õ¬ TMX-Õ«Ö…Ներմուծել Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ ֆայլերը…Ներմուծել TMX-Õ«Ö…Ներմուծել Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ ֆայլերը…Թարգմանությունների ներմուծում…%s-Õ¸Ö‚Õ´Õ†Õ¥Ö€Õ¡Õ¼ÕµÕ¡Õ¬ Õ¢Õ¥Õ¿Õ¡ Õ¾Õ¡Ö€Õ¯Õ¡Õ®Õ¨Ô±Õ¶Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶ Õ´Õ¥Õ®Õ¡/ÖƒÕ¸Ö„Ö€Õ¡Õ¿Õ¡Õ¼Ô±Õ¶Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶ Õ½ÕºÕ«Õ¿Õ¡Õ¯ Õ¿Õ¡Ö€Õ¡Õ®Ö„ÕÕ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Õ²Õ« Õ´Õ¡Õ½Õ«Õ¶ÕÕ¥Õ²Õ¡Õ¤Ö€Õ¥Õ¬Ô±Õ¶Õ¾Õ¡Õ¾Õ¥Ö€ Õ¶Õ«Õ·Ö„Ô¿Õ¡Õ¶Õ¹.JSON Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Ö†Õ¡ÕµÕ¬Õ¥Ö€ÕŠÕ¡Õ°Õ¥Õ¬Ô¼Õ¥Õ¦Õ¾Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨ Õ¯Õ¡Õ´ Õ¯Õ¸Õ¤Õ¨Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ Õ¶Õ¸Ö‚ÕµÕ¶Õ¶ Õ§, Õ«Õ¶Õ¹ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ¨:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ Õ¶Õ·Õ¾Õ¡Õ® Õ¹Õ§:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ÕÔ¼Õ¥Õ¦Õ¾Õ« Õ¨Õ¶Õ¿Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Ô¼Õ¥Õ¦Õ¾Õ« Õ©Õ«Õ´Õ¨.Ô¼Õ¥Õ¦Õ¸Ö‚Õ¶ÕÕŽÕ¥Ö€Õ»Õ«Õ¶ ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ´Õ¨Õ„Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¥Ö€ gettext Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ« Õ´Õ¡Õ½Õ«Õ¶Õ„Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¥Ö€ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€Õ« Õ´Õ¡Õ½Õ«Õ¶Õ„Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¥Ö€Ô»Õ´Õ¡Õ¶Õ¡Õ¬ Õ¡Õ¾Õ¥Õ¬Õ«Õ¶ %s-Õ« Õ´Õ¡Õ½Õ«Õ¶Õ„Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¥Ö€ Crowdin-Õ« Õ´Õ¡Õ½Õ«Õ¶%d Õ¿Õ¸Õ²Õ« '%s' Õ¶Õ«Õ·Ö„Õ¨ Õ¾Õ¶Õ¡Õ½Õ¾Õ¡Õ® Õ§ (Õ¡Õ¶Õ¾Õ¡Õ¾Õ¥Ö€ %s Õ¿Õ¾ÕµÕ¡Õ¬):ÕÕ¸Õ²Õ« Õ¡Õ¾Õ¡Ö€Õ¿.Ô¸Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ« ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¨Õ Õ¡Õ¼Õ¡Õ¶Õ±Õ¶Õ¡ÖÕ¾Õ¡Õ® Õ¯Õ¥Õ¿-Õ½Õ¿Õ¸Ö€Õ¡Õ¯Õ¥Õ¿Õ¸Õ¾ (Ö…Ö€.Õ *.cpp;*.h).Ô²Õ¥Õ¼Õ¶Õ¥Õ¬ Õ¡Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶Localazy-Õ¨ Õ¾Õ¥Ö€Õ«Õ¶ Õ¡Õ½Õ¿Õ«Õ³Õ¡Õ¶ Õ«Õ¶Ö„Õ¶Õ¡Õ·Õ­Õ¡Õ¿ Õ¿Õ¥Õ²Õ¡ÕµÕ¶Õ¡ÖÕ´Õ¡Õ¶ Õ°Õ¡Ö€Õ©Õ¡Õ¯ Õ§, Õ¸Ö€Õ¨ ÖÕ¡Õ¶Õ¯Õ¡ÖÕ¡Õ® Õ¡Õ¶Õ±Õ« Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ§ Õ¿Õ¡Õ¬Õ«Õ½ Õ°Õ¥Õ·Õ¿Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬ Õ«Ö€ Õ¡Ö€Õ¿Õ¡Õ¤Ö€Õ¡Õ¶Ö„Õ¨ Ö‡ Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¿Õ¡Ö€Õ¢Õ¥Ö€ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶Õ¥Ö€Õ¸Õ¾:MO Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨ Õ¹Õ¥Õ¶ Õ¯Õ¡Ö€Õ¸Õ² Õ¸Ö‚Õ²Õ²Õ¡Õ¯Õ«Õ¸Ö€Õ¥Õ¶ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¾Õ¥Õ¬ Poedit-Õ¸Ö‚Õ´:Ô´Õ¡Ö€Õ±Õ¶Õ¥Õ¬ ÖƒÕ¸Ö„Ö€Õ¡Õ¿Õ¡Õ¼Ô´Õ¡Ö€Õ±Õ¶Õ¥Õ¬ Õ´Õ¥Õ®Õ¡Õ¿Õ¡Õ¼Õ†Õ¸Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¡ÕµÕ½ POT Õ¶Õ«Õ·Ö„Õ«Ö:Ô±ÕµÕ¬Õ¡Õ¯Õ¥Ö€ÕºÕ¾Õ¡Õ® '%s' Õ£Õ¬Õ­Õ¡Õ£Õ«Ö€Ô¿Õ¡Õ¼Õ¡Õ¾Õ¡Ö€Õ¥Õ¬ հաշիվներըԿառավարել…ÕÕ¡Ö€Õ¢Õ¥Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ±Õ¸Ö‚Õ¬Õ¾Õ¸Ö‚Õ´ են…ՆվազեÖÕ¶Õ¥Õ¬Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ¡Õ­Õ¡Õ£Õ®Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨Ô±Õ¶Õ¸Ö‚Õ¶ÕÕ€Õ¡Õ»&Õ¸Ö€Õ¤ Õ¡Õ¶Õ¡Õ¾Õ¡Ö€Õ¿Õ¨Õ€Õ¡Õ»&Õ¸Ö€Õ¤ Õ¡Õ¶Õ¡Õ¾Õ¡Ö€Õ¿Õ¨ÕŽÕ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¹Õ§ÕŽÕ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¹Õ§ÔµÖ€Õ¢Õ¥Ö„ Õ¡Õ¯Õ¿Õ«Õ¾ Õ¹Õ« Õ¤Õ¡Ö€Õ±Õ¶Õ« Õ¿Õ¸Õ²Õ¥Ö€Õ¸Õ¾ ÖÕ¡Õ¶Õ¯Õ¥Ö€Õ¨: ÔµÕ©Õ¥ Õ´Õ«Õ¡ÖÕ¾Õ¡Õ® Õ§, Õ¡ÕºÕ¡ ÕºÕ¥Õ¿Ö„ Õ§ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Ö„ Õ½Õ¿Õ¥Õ²Õ¶Õ¡Õ·Õ¡Ö€Õ« Ctrl+Õ½Õ¬Õ¡Ö„Õ¶Õ¥Ö€Õ¨, Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¶Õ¡Õ¥Ö‚ Õ´Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Õ¬ Õ¡Õ¶Õ´Õ«Õ»Õ¡ÕºÕ¥Õ½Õ Õ¡Õ¼Õ¡Õ¶Ö Tab-Õ« Õ´Õ«Õ»Õ¸ÖÕ¸Õ¾ Õ¡Õ¼Õ¡Õ»Õ¶Õ¡Õ°Õ¥Ö€Õ©Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÖƒÕ¸Õ­Õ¥Õ¬Õ¸Ö‚:Õ†Õ¸Ö€Õ†Õ¸Ö€ &POT/PO Õ¶Õ«Õ·Ö„Õ«Ö…Նոր &POT/PO Õ¶Õ«Õ·Ö„Õ«Ö…Նոր Õ¿Õ¸Õ²Õ€Õ¡Õ»Õ¸Ö€Õ¤ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ«Õ¶Õ€Õ¡Õ»Õ¸Ö€Õ¤ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ«Õ¶ÕˆÕ¹Õ‰Õ¯Õ¡Õ¶ Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€ Õ¹Õ¯Õ¡Õ¶Õ‰Õ¯Õ¡ Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¡ÕµÕ½ Õ¿Õ¸Õ²Õ¥Ö€Õ« Õ¤Õ¥ÕºÖ„Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€ Õ¶Õ«Õ·Ö„Õ¸Ö‚Õ´ Õ¿Ö€Õ¡Õ´Õ¡Õ¤Ö€Õ¾Õ¡Õ® Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ¸Ö‚Õ´:Õ‰Õ¯Õ¡Õ¶ Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ¥Õ¿ Õ¯Õ¡ÕºÕ¾Õ¡Õ® Õ­Õ¶Õ¤Õ«Ö€Õ¶Õ¥Ö€ Õ¹Õ¯Õ¡Õ¶:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ¡Õ­Õ¡Õ£Õ®Õ¥Ö€ ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¡Õ£Ö€Õ¾Õ¡Õ® Õ¹Õ¥Õ¶ Õ±Õ¥Ö€ Õ°Õ¡Õ·Õ¾Õ¸Ö‚Õ´:Õ‰Õ¯Õ¡ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ´Õ¡Õ¶ Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ÕˆÕ¹ Õ¢Õ¸Õ¬Õ¸Ö€ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€Õ¶ Õ¥Õ¶ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ®:Ô»Õ½Õ¯Õ¸Ö€Õ¸Õ·Õ¸Ö‚Õ´ Õ¹Õ¯Õ¡, Õ¯Ö€Õ¯Õ«Õ¶ Õ´Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Ö„:Õ†Õ·Õ¸Ö‚Õ´ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Õ²Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€Ô¼Õ¡Õ¾Õ„Õ¥Õ¯Õ„Õ«Õ¡ÖÖ€Õ¥Ö„, Õ¥Õ©Õ¥ Õ´Õ«Õ¡ÕµÕ¶ Õ¾Õ½Õ¿Õ¡Õ°Õ¸Ö‚Õ´ Õ¥Ö„ Õ±Õ¥Ö€ TM-Õ« Õ¸Ö€Õ¡Õ¯Õ«Õ¶: Ô¸Õ½Õ¿ Õ¬Õ¼Õ¥Õ¬ÕµÕ¡ÕµÕ¶Õ«, TM-Õ«Ö Õ¢Õ¸Õ¬Õ¸Ö€ Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¯Õ¶Õ·Õ¾Õ¥Õ¶ Õ¸Ö€ÕºÕ¥Õ½ Õ¸Õ¹ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¡Õ·Õ­Õ¡Õ¿Õ¡Õ¶Ö„ Õ¥Ö‚ ÕºÕ¥Õ¿Ö„ Õ§ Õ½Õ¿Õ¸Ö‚Õ£Õ¾Õ¥Õ¶:Ô¼ÖÕ¶Õ¥Õ¬ Õ´Õ«Õ¡ÕµÕ¶ Õ³Õ«Õ·Õ¿ Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¸Õ¾Ô²Õ¡ÖÕ¥Õ¬ Õ¡Õ´ÕºÕ« Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶...Ô²Õ¡ÖÕ¥Õ¬ Õ¾Õ¥Ö€Õ»Õ«Õ¶Õ¨Ô²Õ¡ÖÕ¥Õ¬ Õ¥Ö‚ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨:Ô²Õ¡ÖÕ¥Õ¬ Õ¡Õ´ÕºÕ« Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Ô²Õ¡ÖÕ¥Õ¬ Õ¡Õ´ÕºÕ« Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶...Ô²Õ¡ÖÕ¥Õ¬ Õ¶Õ«Õ·Ö„Õ¨Ô²Õ¡ÖÕ¥Õ¬ Ô½Õ´Õ¢Õ¡Õ£Ö€Õ«Õ¹Õ¸Õ¾Ô²Õ¡ÖÕ¥Õ¬ Ô½Õ´Õ¢Õ¡Õ£Ö€Õ«Õ¹Õ¸Õ¾Ô²Õ¡ÖÕ¥Õ¬ Õ¾Õ¥Ö€Õ»Õ«Õ¶Õ¨Ô²Õ¡ÖÕ¥Õ¬...Ô²Õ¡Öել…ԸնտրանքներԱյլՆ&Õ¡Õ­Õ¸Ö€Õ¤ Õ¡Õ¶Õ¡Õ¾Õ¡Ö€Õ¿Õ¨Õ†&Õ¡Õ­Õ¸Ö€Õ¤ Õ¡Õ¶Õ¡Õ¾Õ¡Ö€Õ¿Õ¨PO Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ«Õ·Ö„Õ¥Ö€POT Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ«Õ·Ö„Õ¥Ö€POT Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨ Õ´Õ«Õ¡ÕµÕ¶ Õ¶Õ´Õ¸Ö‚Õ·Õ¶Õ¥Ö€ Õ¥Õ¶ Õ¥Ö‚ Õ¹Õ¥Õ¶ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ¸Ö€Õ¥Ö‚Õ§ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶: Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ Õ½Õ¿Õ¥Õ²Õ®Õ¥Ö„ Õ¶Õ¸Ö€ PO Õ¶Õ«Õ·Ö„:ÕÕ¥Õ²Õ¡Õ¤Ö€Õ¥Õ¬ÕÕ¥Õ²Õ¡Õ¤Ö€Õ¥Õ¬ Õ¥Ö‚ Õ¨Õ½Õ¿ Õ¸Õ³Õ«ÕˆÖ‚Õ²Õ«Õ¶Õ¥Ö€Ô¾Ö€Õ¡Õ£Ö€Õ« Õ¢Õ¸Õ¬Õ¸Ö€ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ« Õ¾Ö€Õ¡ Õ¯Õ¡Õ¿Õ¡Ö€Õ¸Ö‚Õ´ Õ§ Õ¡Ö€Õ¤Õ«Õ¡ÖÕ¸Ö‚Õ´ Õ¡Õ²Õ¢ÕµÕ¸Ö‚Ö€Õ« Õ¡ÕµÕ¬Õ¡Õ£Ö€Õ«Ö:Ô¹Õ¸Ö‚ÕµÕ¬Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ´Õ¥Ö€ÕªÕ¾Õ¡Õ® Õ§Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ´Õ¥Õ» Õ¢Õ¡ÖÕ¡Õ¯Õ¡ÕµÕ¸Ö‚Õ´ Õ§ “%s†տեղապահը:ÕÕ¥Õ²Õ¡ÕºÕ¡Õ°Õ¶Õ¥Ö€Õ« Õ³Õ«Õ·Õ¿ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¸Ö‚Õ´Õ¨Õ“Õ¸Õ­Õ¡Ö€Õ¥Õ¶Õ¨ Õ­Õ¶Õ¤Ö€Õ¸Ö‚Õ´ Õ¥Õ¶Ö„ Õ¢Õ¡ÖÕ¥Õ¬ Õ¥Ö‚Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶ PO Õ¶Õ«Õ·Ö„Õ¨: ÔµÖ€Õ¢ ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¥Ö„ Õ¡ÕµÕ¶Õ MO Õ¶Õ«Õ·Ö„Õ¨ Õ¯Õ©Õ¡Ö€Õ´Õ¡ÖÕ¾Õ«:Ô½Õ¶Õ¤Ö€Õ¸Ö‚Õ´ Õ¥Õ¶Ö„ Õ¶Õ¡Õ­ ÕºÕ¡Õ°Õ¥Õ¬ Õ¶Õ«Õ·Ö„Õ¨:Õ€Õ¸Õ£Õ¶Õ¡Õ¯Õ«Õ€Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ©Õ¾Õ¸Õ¾ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ•Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ® Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€Õ« Õ¡Ö€Õ¿Õ¡Õ°Õ¡ÕµÕ¿Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¡Õ¶Õ½Õ¸Õ¾Õ¸Ö€ Õ¥Õ¶ %s-Õ« Õ°Õ¡Õ´Õ¡Ö€:Õ€Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€.PoeditPoedit-Õ« Ô³Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ« Õ¯Õ¡Õ¼Õ¡Õ¾Õ¡Ö€Poedit-Õ¨ Õ«Õ¶Ö„Õ¶Õ¡Õ¢Õ¡Ö€ Õ¸Ö‚Õ²Õ²Õ¥Õ¬ Õ§ Õ½Õ­Õ¡Õ¬ Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ «%s» Õ¶Õ«Õ·Ö„Õ¸Ö‚Õ´:Poedit-Õ¨ Õ¯Õ¡Ö€Õ¸Õ² Õ§ ÖƒÕ¸Ö€Õ±Õ¥Õ¬ Õ¬Ö€Õ¡ÖÕ¶Õ¥Õ¬ Õ¶Õ¸Ö€ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ´Õ«Õ¡ÕµÕ¶ Õ¶Õ¡Õ­Õ¸Ö€Õ¤ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ«Ö Õ¡ÕµÕ½ Õ¶Õ«Õ·Ö„Õ¸Ö‚Õ´ Õ¯Õ¡Õ´ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ±Õ¥Ö€ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ«Ö: TM-Õ« Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¸Ö‚Õ´Õ¨ Õ¡Ö€Õ¤ÕµÕ¸Ö‚Õ¶Õ¡Õ¾Õ¥Õ¿ Õ¹Õ« Õ¬Õ«Õ¶Õ«, Õ¥Õ©Õ¥ Õ¡ÕµÕ¶ Õ£Ö€Õ¥Õ©Õ¥ Õ¤Õ¡Õ¿Õ¡Ö€Õ¯ Õ§, Õ¢Õ¡ÕµÖ Õ¯Õ¬Õ¡Õ¾Õ¡Ö€Õ¯Õ¾Õ« Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€ Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬Õ¸Ö‚ Õ¨Õ¶Õ©Õ¡ÖÖ„Õ¸Ö‚Õ´:Poedit-Õ¨ Õ¹Õ« Õ¯Õ¡Ö€Õ¸Õ² ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ¨, Õ¸Ö€Õ¿Õ¥Õ² Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ® Õ§ Õ¿Õ¸Õ²Õ¨, Ö„Õ¡Õ¶Õ« Õ¸Ö€ Õ¶Õ«Õ·Ö„Õ¨ Õ¯Õ¡Õ´ Õ´Õ¡Õ¿Õ¹Õ¥Õ¬Õ« Õ¹Õ§ Õ°Õ²Õ¾Õ¸Õ² Õ¿Õ¥Õ²Õ¸Ö‚Õ´, Õ¯Õ¡Õ´ Õ¡ÕµÕ¶ Õ¶Õ·Õ¡Õ¶Õ¡ÕµÕ«Õ¶ Õ°Õ²Õ¸Ö‚Õ´ Õ§, Õ¸Ö€Õ¨ Õ¹Õ« Õ´Õ¡Õ¿Õ¶Õ¡Õ¶Õ·Õ¸Ö‚Õ´ Õ«Ö€Õ¡Õ¯Õ¡Õ¶ Õ¶Õ«Õ·Ö„Õ«:Poedit-Õ¨ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ¤ÕµÕ¸Ö‚Ö€Õ«Õ¶ Õ­Õ´Õ¢Õ¡Õ£Õ«Ö€ Õ§:Poedit-Õ¨ Õ¹Õ¯Õ¡Ö€Õ¸Õ²Õ¡ÖÕ¡Õ¾ Õ¢Õ¡ÖÕ¥Õ¬ “%s†նիշքը:Õ†Õ¡Õ­Õ¡&թարգմանություն…ՆախաթարգմանելՆախաթարգմանվածՆախաթարգմանված %u Õ¿Õ¸Õ²Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ® %u Õ¿Õ¸Õ²Õ¥Ö€Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ«Ö…Նախաթարգմանություն...Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ«Õ¶Ö„Õ¶Õ¡Õ¢Õ¡Ö€ Õ£Õ¿Õ¶Õ¸Ö‚Õ´ Õ§ Õ³Õ«Õ·Õ¿ Õ¯Õ¡Õ´ Õ¸Õ¹ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¹Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ® Õ¿Õ¸Õ²Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¸Ö‚Õ´ Õ¥Ö‚ Õ¬ÖÕ¶Õ¸Ö‚Õ´ Õ§ Õ¤Ö€Õ¡Õ¶Ö Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´:Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¸Ö‚Õ´ Õ§, Õ¸Ö€ Õ´Õ¡Õ¿Õ¹Õ¥Õ¬Õ« Õ¬Õ«Õ¶Õ« Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨: Ô±ÕµÕ¶ Õ¹Õ« Õ¡Õ·Õ­Õ¡Õ¿Õ«, Õ¥Õ©Õ¥ Õ«Ö€Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ« ÖƒÕ¸Õ­Õ¡Ö€Õ¥Õ¶ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¥Õ¶ Õ´Õ«Õ¡ÕµÕ¶ ID-Õ¶Õ¥Ö€:Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¸Ö‚Õ´ Õ§, Õ¸Ö€ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ« Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ Õ°Õ¡ÕµÕ¿Õ¶Õ« Õ¬Õ«Õ¶Õ«: Poedit-Õ¨ Õ¹Õ« Õ¯Õ¡Ö€Õ¸Õ²Õ¡Õ¶Õ¸Ö‚Õ´ Õ°Õ¡ÕµÕ¿Õ¶Õ¡Õ¢Õ¥Ö€Õ¥Õ¬ Õ¡ÕµÕ¶ Õ¿Õ¾ÕµÕ¡Õ¬ Ö†Õ¡ÕµÕ¬Õ¸Ö‚Õ´:Õ†Õ¡Õ­Õ¡ÕºÕ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ†Õ¡Õ­Õ¡ÕºÕ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€...Նախապատվություններ…ÕÕ¸Õ²Õ¥Ö€Õ« նախապատրաստում…Պահել Õ¡Õ¼Õ¯Õ¡ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ« Õ±Õ¥Ö‚Õ¡Õ¹Õ¡ÖƒÕ¸Ö‚Õ´Õ¨Õ†Õ¡Õ­Õ¸Ö€Õ¤ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ«Õ¶Õ†Õ¡Õ­Õ¸Ö€Õ¤ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ«Õ¶Õ†Õ¡Õ­Õ¸Ö€Õ¤ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨Õ†Õ¡Õ­Õ¯Õ«Õ¶Õ¸Ö‚Õ´ Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¾Õ¡Õ®Õ†Õ¡Õ­Õ¯Õ«Õ¶Õ¸Ö‚Õ´ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¾Õ¡Õ®Õ†Õ¡Õ­Õ¡Õ£Õ®Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨ Õ¥Ö‚ Õ¿Õ¡Ö€Õ¢Õ¥Õ¡Õ¯Õ¨.Õ†Õ¡Õ­Õ¡Õ£Õ®Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨.Õ†Õ¡Õ­Õ¡Õ£Õ«Õ®ÕÕ†Õ¡Õ­Õ¡Õ£Õ®Õ¥Ö€Ô¿Õ¥Õ¿Õ¡Õ¤Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ½Õ¿Õ¸Ö‚Õ£Õ¸Ö‚Õ´Õ„Õ¡Ö„Ö€Õ¥Õ¬Õ„Õ¡Ö„Ö€Õ¥Õ¬ Õ»Õ¶Õ»Õ¾Õ¡Õ® Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨Õ“Õ¡Õ¯Õ¥Õ¬Õ–Õ¡ÕµÕ¬Õ« Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¨Õ¶Õ©Õ¥Ö€ÖÕ¸Ö‚Õ´Õ¨ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö Õ°Õ¥Õ¿Ö‡ÕµÕ¡Õ¬ Õ½Õ­Õ¡Õ¬Õ¸Õ¾. %sÕŽÕ¥Ö€Õ»Õ«Õ¶ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨ÕŽÕ¥Ö€Õ¡Ö€Õ¯Õ¥Õ¬Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬Ô¿Ö€Õ¯Õ«Õ¶ Ô²Õ¥Õ¼Õ¶Õ¥Õ¬ Õ†Õ«Õ·Ö„Õ¨Ô¿Ö€Õ¯Õ«Õ¶ Ô²Õ¥Õ¼Õ¶Õ¥Õ¬ Õ†Õ«Õ·Ö„Õ¨Õ„Õ¶Õ¸Ö‚Õ´ Õ§Õ %dÕ“Õ¸Õ­Õ¡Ö€Õ«Õ¶Õ¥Õ¬Õ“Õ¸Õ­Õ¡Ö€Õ«Õ¶Õ¥Õ¬ &Õ¢Õ¸Õ¬Õ¸Ö€Õ¨Õ“Õ¸Õ­Õ¡Ö€Õ«Õ¶Õ¥Õ¬ &Õ¢Õ¸Õ¬Õ¸Ö€Õ¨Ô»Õ¶Õ¹Õ¸Õ¾ փոխարինելՓոխարինել…Պահանջվող Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ« Õ£Õ¬Õ­Õ¡Õ£Õ«Ö€Õ¨ Õ¢Õ¡ÖÕ¡Õ¯Õ¡ÕµÕ¸Ö‚Õ´ Õ§ÕŽÕ¥Ö€Õ¡Õ¯Õ¡ÕµÕ¥Õ¬ÕŽÕ¥Ö€Õ¡Õ¯Õ¡ÕµÕ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¾Õ¥Ö€Õ¡Õ¯Õ¡ÕµÕ¸Ö‚Õ´Õ¨ Õ¡Õ¶Õ¾Õ¥Ö€Õ¡Õ¤Õ¡Ö€Õ± Õ¯Õ»Õ¶Õ»Õ« Õ¢Õ¸Õ¬Õ¸Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨:Ô²Õ¡ÖÕ¡Õ°Õ¡ÕµÕ¿Õ¥Õ¬ ÕˆÖ€Õ¸Õ¶Õ«Õ¹Õ¸Ö‚Õ´ÕŽÕ¥Ö€Õ¡Õ¶Õ¡ÕµÕ¥Õ¬ÕŠÕ¡Õ°Õ¥Õ¬ÕŠÕ¡Õ°Õ¥Õ¬ &որպես…Պահել &որպես…Այդուհանդերձ, ÕºÕ¡Õ°Õ¥Õ¬Ô±ÕµÕ¤Õ¸Ö‚Õ°Õ¡Õ¶Õ¤Õ¥Ö€Õ±, ÕºÕ¡Õ°Õ¥Õ¬ÕŠÕ¡Õ°Õ¥Õ¬ Õ¸Ö€ÕºÕ¥Õ½ÕŠÕ¡Õ°Õ¥Õ¬ որպես…Պահել ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ÕŠÕ¡Õ°Õ¥Õ¬ Õ¶Õ«Õ·Ö„Õ¨Ô·Õ¯Ö€Õ¡Õ¶Õ« Õ°Õ¡Õ¶Õ¸Ö‚ÕµÕ©Õ†Õ·Õ¥Õ¬ &Õ¢Õ¸Õ¬Õ¸Ö€Õ¨Õ†Õ·Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨Ô¸Õ¶Õ¿Ö€Õ¥Ö„ TMX Ö†Õ¡ÕµÕ¬Õ¥Ö€Õ¨Õ Õ¶Õ¥Ö€Õ´Õ¸Ö‚Õ®Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€Ô¸Õ¶Õ¿Ö€Õ¥Õ¬ Õ£Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¨Ô¸Õ¶Õ¿Ö€Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ«Õ·Ö„Õ¨Ô¸Õ¶Õ¿Ö€Õ¥Ö„ Õ¶Õ¥Ö€Õ´Õ¸Ö‚Õ®Õ¾Õ¸Õ² Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨Ô¸Õ¶Õ¿Ö€Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ±Õ¥Ö‚Õ¡Õ¶Õ´Õ¸Ö‚Õ·Õ¨Ô¸Õ¶Õ¿Ö€Õ¥Ö„ ÕÕ¥Ö€ Õ¶Õ¡Õ­Õ¨Õ¶Õ¿Ö€Õ¡Õ® Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶Õ†Õ·Õ¥Õ¬ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶Õ†Õ·Õ¥Õ¬ լեզունԿայանքներ…ՑուÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯Õ¸Õ²Õ¡Õ£Õ¸Õ¿Õ«Õ¶Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¸Ö‚Õ²Õ²Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¥Ö‚ Ö„Õ¥Ö€Õ¡Õ¯Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ ÕŽÕ«Õ³Õ¡Õ¯Õ« Õ£Õ¸Õ¿Õ«Õ¶Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¿Õ¸Õ²Õ« &ID-Õ«Õ¶Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ ÖƒÕ¸Õ­Õ¡Ö€Õ«Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Ô³Õ¸Ö€Õ®Õ«Ö„Õ¡Õ£Õ¸Õ¿Õ«Õ¶Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¦Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ†Õ«Õ·Ö„Õ¡Õ­Õ¸Ö‚ÕµÕ¦Õ¸Ö‚Õ´Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ ÕºÕ¡Õ¶Õ¡Õ¯Õ¸Ö‚Õ´Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯Õ¡Õ´ Õ©Õ¡Ö„ÖÕ¶Õ¥Õ¬ Õ¯Õ¸Õ²Õ¡Õ£Õ¸Õ¿Õ«Õ¶Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯Õ¸Õ²Õ¡Õ£Õ¸Õ¿Õ«Õ¶Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¾Õ«Õ³Õ¡Õ¯Õ« Õ£Õ¸Õ¿Õ«Õ¶Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¿Õ¸Õ²Õ« &ID-Õ«Õ¶Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¦Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨Ô¿Õ¸Õ²Õ¡Õ£Õ¸Õ¿Õ«Õ„Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Õ¬Ô´Õ¸Ö‚Ö€Õ½ Õ£Ö€Õ¾Õ¥Õ¬Õ„Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Õ¬Õ„Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Õ¬ %sÕ„Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ¡Õ´ÕºÕ« Õ°Õ¡Õ·Õ«Õ¾Õ„Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Õ¬ CrowdinÕ„Õ¸Ö‚Õ¿Ö„ Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ¡Õ´ÕºÕ« Õ°Õ¡Õ·Õ«Õ¾Ô´Õ¸Ö‚Ö€Õ½ Õ£Ö€Õ¾Õ¥Õ¬ÔµÕ¦Õ¡Õ¯Õ«Ô½Õ¥Õ¬Õ¡ÖÕ« ÕºÕ¡Õ¿Õ³Õ¥Õ¶Õ¸Ö‚Õ´/Õ¿Õ¥Õ²Õ¡Õ¤Ö€Õ¸Ö‚Õ´Ô½Õ¥Õ¬Õ¡ÖÕ« Õ£Õ®Õ¥Ö€Ô½Õ¥Õ¬Õ¡ÖÕ« Õ°Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€Ô½Õ¥Õ¬Õ¡ÖÕ« Õ®Õ¥Õ¬Õ¡Õ¡Õ¹Õ¡Õ¯Õ¥Ö€Õ¿Õ¶Õ¥Ö€Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ &Õ¶Õ«Õ·Ö„Õ« Õ¯Õ¡Ö€Õ£Õ«Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ &Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ«Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ &Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ &Õ¶Õ«Õ·Ö„Õ« Õ¯Õ¡Ö€Õ£Õ«Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ &Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ«Ô½Õ´Õ¢Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¨Õ½Õ¿ &Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ« Õ£Ö€Õ¡Õ¶Õ·Õ¡Õ¶Õ¨ÕÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ« Õ¡Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ«Õ¹Õ¶Õ¥Ö€Õ¨ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¸Ö‚Õ´ Õ¥Õ¶ Õ£Õ¿Õ¶Õ¥Õ¬Õ¸Ö‚ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¸Õ² Õ¿Õ¸Õ²Õ¥Ö€ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ« Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¸Ö‚Õ´ Õ¥Ö‚ Õ¤Õ¸Ö‚Ö€Õ½ Õ¢Õ¥Ö€Õ¥Õ¬Õ¸Ö‚ Õ¤Ö€Õ¡Õ¶Ö„, Õ¸Ö€ÕºÕ¥Õ½Õ¦Õ« Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¬Õ«Õ¶Õ« Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬:ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ¨ Õ°Õ¡Õ½Õ¡Õ¶Õ¥Õ¬Õ« Õ¹Õ§Õ„Õ¥Õ¯Õ¶Õ¡Ö€Õ¯Õ¡ÕµÕ«Õ¶ Õ¯Õ¸Õ¤Õ¨ Õ¹Õ« Õ£Õ¿Õ¶Õ¾Õ¥Õ¬ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Ô±Õ²Õ¢ÕµÕ¸Ö‚Ö€Õ« Õ¿Õ¥Ö„Õ½Õ¿Õ« IDÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ— %sÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ¶Õ¥Ö€Õ« Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ¥Ö€Õ¨ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ¶Õ¥Ö€Õ« Õ¸Ö‚Õ²Õ«Õ¶Õ¥Ö€Õ¨ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ« Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ¥Ö€ÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¸Ö‚Õ²Õ«Õ¶Õ¥Ö€Ô½Õ¸Õ½Ö„ÕˆÖ‚Õ²Õ²Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ½Õ¿Õ¸Ö‚Õ£Õ¸Ö‚Õ´Õ¨ Õ¡Õ¶Õ»Õ¡Õ¿Õ¾Õ¡Õ® Õ§, Ö„Õ¡Õ¶Õ« Õ¸Ö€ Õ¢Õ¡Õ¼Õ¡Ö€Õ¡Õ¶Õ¨ %s-Õ« Õ°Õ¡Õ´Õ¡Ö€ Õ¿Õ¥Õ²Õ¡Õ¤Ö€Õ¾Õ¡Õ® Õ¹Õ§:ÕˆÖ‚Õ²Õ²Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¥Ö‚ Ö„Õ¥Ö€Õ¡Õ¯Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ÕÕ¯Õ½Õ¥Õ¬ Õ¡Ö€Õ¿Õ¡Õ½Õ¡Õ¶Õ¥Õ¬Ô¸Õ¶Õ¤Õ°Õ¡Õ¿Õ¥Õ¬ Õ¡Ö€Õ¿Õ¡Õ½Õ¡Õ¶Õ¸Ö‚Õ´Õ¨ÕŠÕ¡Õ°Õ¾Õ¡Õ® Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€ÕÔ¼Õ¡Ö€Õ« Õ°Õ¡Õ´Õ¡Õ¿Õ¥Ö„Õ½Õ¿Õ %sÔ¼Õ¡Ö€Õ« Õ¶Õ¸Ö‚ÕµÕ¶Õ¡ÖÕ¸Ö‚ÖÕ«Õ¹Õ %sÕÕ¸Õ²Õ« Õ¥Ö€Õ¯Õ¡Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¶Õ«Õ·Õ¥Ö€Õ¸Õ¾ÕÕ¸Õ²Õ« Õ¥Ö€Õ¯Õ¡Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¶Õ«Õ·Õ¥Ö€Õ¸Õ¾. Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ | Õ¡Õ²Õ¢ÕµÕ¸Ö‚Ö€Ô»Õ¶Õ¹ ÖƒÕ¶Õ¿Ö€Õ¥Õ¬Õ“Õ¸Õ­Õ¡Ö€Õ«Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Ô±Õ¼Õ¡Õ»Õ¡Ö€Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Ô±Õ¼Õ¡Õ»Õ¡Ö€Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ°Õ¡Õ½Õ¡Õ¶Õ¥Õ¬Õ« Õ¹Õ¥Õ¶, Õ¥Õ©Õ¥ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¸Õ² Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ Õ¶Õ¸Ö€Õ´Õ¡Õ¬ Õ¶Õ·Õ¾Õ¡Õ® Õ¹Õ§: Ô±ÕµÕ¬ ÕµÕ¸Ö‚Ö€Õ¡Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€, Õ«Õ¶Õ¹ÕºÕ¥Õ½ Ö…Ö€Õ«Õ¶Õ¡Õ¯Õ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€Õ¨, Õ¯Õ¡Ö€Õ¸Õ² Õ¥Õ¶ Õ¡Õ¦Õ¤Õ¾Õ¥Õ¬:Ô¼Ö€Õ¡ÖÕ¸Ö‚ÖÕ«Õ¹ “%s†տեղապահ, Õ¸Ö€Õ¨ Õ¹Õ¯Õ¡ Õ¢Õ¶Ö…Ö€Õ«Õ¶Õ¡Õ¯ Õ¿Õ¥Ö„Õ½Õ¿Õ¸Ö‚Õ´:Ô±Õ»Õ¡Õ¯ÖÕ¸Ö‚Õ´ Õ§ Õ®Ö€Õ¡Õ£Ö€Õ¡Õ¾Õ¸Ö€Õ´Õ¡Õ¶ Õ¢Õ¸Õ¬Õ¸Ö€ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶Õ¥Ö€Õ¨Õ Õ³Õ¡Õ¶Õ¡Õ¹Õ¾Õ¡Õ® GNU gettext Õ£Õ¸Ö€Õ®Õ«Ö„Õ¶Õ¥Ö€Õ« Õ¯Õ¸Õ²Õ´Õ«Ö (PHP, C/C++, C#, Perl, Python, Java, JavaScript Õ¥Ö‚ Õ¡ÕµÕ¬Õ¶):Õ€Õ´ÕªÕ´Õ€Õ´ÕªÕ´ Crowdin-Õ« Õ°Õ¥Õ¿Õ€Õ¡Õ´Õ¡ÕªÕ¡Õ´Õ¥ÖÕ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Crowdin-Õ«Õ¶Õ€Õ¡Õ´Õ¡ÕªÕ¡Õ´Õ¥ÖÕ¸Ö‚Õ´Õ€Õ¡Õ´Õ¡ÕªÕ¡Õ´Õ¥ÖÕ´Õ¡Õ¶ Õ½Õ­Õ¡Õ¬Õ€Õ¡Õ´Õ¡ÕªÕ¡Õ´Õ¥ÖÕ¸Ö‚Õ´Õ¨ Crowdin-Õ« Õ°Õ¥Õ¿ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö:Õ‡Õ¡Ö€Õ¡Õ°ÕµÕ¸Ö‚Õ½Õ¡Õ¯Õ¡Õ¶ Õ½Õ­Õ¡Õ¬ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ¥Ö€Õ« Õ£Õ¬Õ­Õ¡Õ£Ö€Õ¸Ö‚Õ´ ("%s"):Ô¹Õ€TMX Õ¶Õ«Õ·Ö„Õ¥Ö€ÕŽÕ¥Ö€ÖÕ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¸Õ² Õ¿Õ¸Õ²Õ¥Ö€Õ¨ Õ¡Õ¼Õ¯Õ¡ POT Õ¶Õ´Õ¸Ö‚Õ·Õ«Ö:Ô¹Õ«Õ´Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨ Õ¥Ö‚ Õ§Õ¬. ÖƒÕ¸Õ½Õ¿Õ¨ Õ¯Õ¡Õ´ URL-Õ¶Ô³Ö€Õ¾Õ¡Õ®Ö„Õ« ÖƒÕ¸Õ­Õ¡Ö€Õ«Õ¶Õ¸Ö‚Õ´Ô¹Õ€-Õ¨ Õ¹Õ« ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ¡ÕµÕ½ Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¡Õ¶Õ¨ Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¸Õ² Õ¸Ö€Õ¥Ö‚Õ§ Õ¿Õ¸Õ²: ÕÕ¡ Ö…Õ£Õ¿Õ¡Õ¯Õ¡Ö€ Õ§ Õ«Õ¶Ö„Õ¶Õ¡Õ¢Õ¡Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€, Õ¥Õ©Õ¥ Õ´Õ«Õ¡ÕµÕ¶ Poedit-Õ¨ Õ½Õ¸Õ¾Õ¸Ö€Õ¸Ö‚Õ´ Õ§ Õ´Õ¥Õ® Ö„Õ¡Õ¶Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€, Õ¸Ö€Õ¸Õ¶Ö„ Õ¤Õ¸Ö‚Ö„ Õ±Õ¥Õ¼Ö„Õ¸Õ¾ Õ¥Ö„ Õ¯Õ¡Õ¿Õ¡Ö€Õ¥Õ¬:TMX Õ¶Õ«Õ·Ö„Õ¨ Õ¡ÕµÕ¬Õ¡Õ¯Õ¥Ö€ÕºÕ¾Õ¡Õ® Õ§ÕŠÕ¡Õ°Õ¥Õ¬Õ¸Ö‚ Õ¤Õ¥ÕºÖ„Õ¸Ö‚Õ´ Õ¡ÕµÕ¬ Õ®Ö€Õ¡Õ£Ö€Õ« Õ¯Õ¸Õ²Õ´Õ«Ö Õ¯Õ¡Õ¿Õ¡Ö€Õ¾Õ¡Õ® ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¯Õ¯Õ¸Ö€ÖÕ¶Õ¥Ö„:Õ†Õ«Õ·Ö„Õ¨ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ¯Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¥Õ¬ MO Õ±Õ¥Ö‚Õ¡Õ¹Õ¡ÖƒÕ« Õ¥Ö‚ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬:Õ†Õ«Õ·Ö„Õ¨ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ§ Õ¯Ö€Õ¯Õ¶Ö…Ö€Õ«Õ¶Õ¡Õ¯ Õ´Õ«Õ¸Ö‚ÕµÕ©Õ¶Õ¥Ö€, Õ¸Ö€Õ¸Õ¶Ö„ Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¾Õ¡Õ® Õ¹Õ¥Õ¶ PO Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¸Ö‚Õ´ Õ¥Ö‚ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Õ¶ Õ¯Õ¡Õ¶Õ­Õ¥Õ¬ Õ¶Õ«Õ·Ö„Õ« Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¸Ö‚Õ´Õ¨: Poedit-Õ¨ Õ¸Ö‚Õ²Õ²Õ¥Õ¬ Õ§ Õ¡ÕµÕ¤ Õ­Õ¶Õ¤Õ«Ö€Õ¨, Õ¢Õ¡ÕµÖ Õ¤Õ¸Ö‚Ö„ ÕºÕ¥Õ¿Ö„ Õ§ Õ½Õ¿Õ¸Ö‚Õ£Õ¥Ö„ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨, Õ¸Ö€Õ¸Õ¶Ö„ Õ¶Õ·Õ¾Õ¡Õ® Õ¥Õ¶ Õ¸Ö€ÕºÕ¥Õ½ Õ¸Õ¹ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¥Ö‚ Õ¡Õ¶Õ°Ö€Õ¡ÕªÕ¥Õ·Õ¿Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¤Õ¥ÕºÖ„Õ¸Ö‚Õ´ Õ¸Ö‚Õ²Õ²Õ¥Ö„ Õ¤Ö€Õ¡Õ¶Ö„:Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¥Õ¬ Ö†Õ¡ÕµÕ¬Õ¨ «%s» Õ£Ö€Õ¡Õ¶Õ·Õ¡Õ¶Õ¸Õ¾, Õ¸Ö€ÕºÕ¥Õ½ Õ°Õ¡Õ¿Õ¯Õ¸Ö€Õ¸Õ·Õ¾Õ¡Õ® Õ§ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¸Ö‚Õ´: Õ“Õ¸Õ­Õ¡Ö€Õ¥Õ¶Õ¨Õ Õ¡ÕµÕ¶ ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¾Õ¥Õ¬ Õ§ UTF-8-Õ¸Õ¾ Ö‡ Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¡Õ¢Õ¡Ö€ Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¨ ÖƒÕ¸ÖƒÕ¸Õ­Õ¾Õ¥Õ¬ Õ§:Õ†Õ«Õ·Ö„Õ¨ ÖƒÕ¸ÖƒÕ¸Õ­Õ¾Õ¥Õ¬ Õ§: ÕŠÕ¡Õ°Õ¥ÕžÕ¬ ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨:Õ‰Õ°Õ¡Õ»Õ¸Õ²Õ¾Õ¥Ö Poedit-Õ« Õ¯Õ¸Õ²Õ´Õ«Ö Õ¸Ö€Õ¸Õ·Õ¥Õ¬ Ö†Õ¡ÕµÕ¬Õ« Õ±Ö‡Õ¡Õ¹Õ¡ÖƒÕ¨:Õ†Õ«Õ·Ö„Õ¨ Õ¯Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¾Õ¥Õ¬ Õ§ MO Õ±Õ¥Ö‚Õ¡Õ¹Õ¡ÖƒÕ«, Õ¢Õ¡ÕµÖ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ§ Õ¶Õ¸Ö€Õ´Õ¡Õ¬ Õ¹Õ¡Õ·Õ­Õ¡Õ¿Õ«:Õ†Õ«Õ·Ö„Õ¨ Õ¡Õ¶Õ¾Õ¿Õ¡Õ¶Õ£ ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¾Õ¥Õ¬ Õ§ Õ¥Ö‚ Õ¯Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¾Õ¥Õ¬ Õ§ MO Õ±Õ¥Ö‚Õ¡Õ¹Õ¡ÖƒÕ«, Õ¢Õ¡ÕµÖ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ§ Õ¶Õ¸Ö€Õ´Õ¡Õ¬ Õ¹Õ¡Õ·Õ­Õ¡Õ¿Õ«:Õ†Õ«Õ·Ö„Õ¨ Õ¡Õ¶Õ¾Õ¿Õ¡Õ¶Õ£ ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¾Õ¥Õ¬ Õ§, Õ¢Õ¡ÕµÖ Õ¹Õ« Õ¯Õ¡Ö€Õ¸Õ² Õ¯Õ¡Õ¦Õ´Õ¡Ö€Õ¯Õ¾Õ¥Õ¬ MO Õ±Õ¥Ö‚Õ¡Õ¹Õ¡ÖƒÕ« Õ¥Ö‚ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¥Õ¬:Õ†Õ«Õ·Ö„Õ¨ Õ¡Õ¶Õ¾Õ¿Õ¡Õ¶Õ£ ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¾Õ¥Õ¬ Õ§:“%s†ֆայլի Õ¢Õ¡ÖÕ¸Ö‚Õ´Õ¨ Õ¹Õ°Õ¡Õ»Õ¸Õ²Õ¾Õ¥Ö։«%s» Õ¶Õ«Õ·Ö„Õ¨ ÖƒÕ¸Õ­Õ¾Õ¥Õ¬ Õ§ Õ¡ÕµÕ¬ Õ®Ö€Õ¡Õ£Ö€Õ« Õ¯Õ¸Õ²Õ´Õ«Ö:Õ€Õ«Õ¶ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨ (Õ´Õ«Õ¶Õ¹Õ¥Ö‚ Õ¡Ö€Õ¤Õ«Õ¡ÖÕ´Õ¡Õ¶ Õ¨Õ¶Õ©Õ¡ÖÖ„Õ¸Ö‚Õ´ Õ¤Ö€Õ¡ ÖƒÕ¸Õ­Õ¾Õ¥Õ¬Õ¨), Õ¸Ö€Õ¨ Õ¡ÕµÕªÕ´ Õ¸Õ¹ Õ³Õ«Õ·Õ¿ Õ§:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Õ¾ Õ¡ÕµÕ½ Õ¶Õ«Õ·Ö„Õ¨ Õ¬Ö€Õ¡ÖÕ¶Õ¥Õ¬Õ¸Ö‚ Õ¡Õ´Õ¥Õ¶Õ¡ÕºÕ¡Ö€Õ¦ Õ±Õ¥Ö‚Õ¨ Õ¡ÕµÕ¶ POT Õ¶Õ«Õ·Ö„Õ«Ö Õ©Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬Õ¶ Õ§.Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¹Õ« Õ½Õ¯Õ½Õ¾Õ¸Ö‚Õ´ Õ¢Õ¡ÖÕ¡Õ¿Õ¸Õ¾:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¾Õ¥Ö€Õ»Õ¡Õ¶Õ¸Ö‚Õ´ Õ§ Õ¶Õ¸Ö€ Õ¿Õ¸Õ²Õ¸Õ¾, Õ¢Õ¡ÕµÖ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨Õ Õ¸Õ¹:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¾Õ¥Ö€Õ»Õ¡Õ¶Õ¸Ö‚Õ´ Õ§ Õ¢Õ¡ÖÕ¡Õ¿Õ¸Õ¾, Õ¢Õ¡ÕµÖ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨Õ Õ¸Õ¹:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¾Õ¥Ö€Õ»Õ¡Õ¶Õ¸Ö‚Õ´ Õ§ “%sâ€-Õ¸Õ¾, Õ¢Õ¡ÕµÖ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨ Õ¾Õ¥Ö€Õ»Õ¡Õ¶Õ¸Ö‚Õ´ Õ§ “%sâ€-Õ¸Õ¾:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¸Ö‚Õ´ Õ¢Õ¡Ö Õ§ Õ©Õ¸Õ²Õ¶Õ¾Õ¡Õ® Õ¶Õ¸Ö€ Õ¿Õ¸Õ²Õ¨ Õ¾Õ¥Ö€Õ»Õ¸Ö‚Õ´:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¾Õ¥Ö€Õ»Õ¸Ö‚Õ´ Õ¢Õ¡ÖÕ¡Õ¯Õ¡ÕµÕ¸Ö‚Õ´ Õ§ Õ¢Õ¡ÖÕ¡Õ¿Õ¨:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¡Õ¿Ö€Õ¡Õ½Õ¿ Õ§ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€, Õ¢Õ¡ÕµÖ %d Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´ Õ¤Õ¥Õ¼ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ® Õ¹Õ§:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¡Õ¿Ö€Õ¡Õ½Õ¿ Õ§ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€, Õ¢Õ¡ÕµÖ %d Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€ Õ¤Õ¥Õ¼ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ® Õ¹Õ¥Õ¶:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¡Õ¿Ö€Õ¡Õ½Õ¿ Õ§:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¥Õ¿Ö„ Õ§ Õ¡Õ¾Õ¡Ö€Õ¿Õ¾Õ« «%s»-Õ¸Õ¾:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¹ÕºÕ¥Õ¿Ö„ Õ§ Õ¡Õ¾Õ¡Ö€Õ¿Õ¾Õ« «%s»-Õ¸Õ¾:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¥Õ¿Ö„ Õ§ Õ½Õ¯Õ½Õ« Õ¸Ö€ÕºÕ¥Õ½ Õ¶Õ¡Õ­Õ¡Õ¤Õ¡Õ½Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶:Õ†Õ¡Õ­Õ¡Õ¤Õ¡Õ½Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¥Õ¿Ö„ Õ§ Õ½Õ¯Õ½Õ¾Õ« ÖƒÕ¸Ö„Ö€Õ¡Õ¿Õ¡Õ¼ Õ£Ö€Õ¡Õ¶Õ·Õ¡Õ¶Õ¸Õ¾:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ½Õ¯Õ½Õ¾Õ¸Ö‚Õ´ Õ§ Õ¢Õ¡ÖÕ¡Õ¿Õ¸Õ¾, Õ¢Õ¡ÕµÖ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨Õ Õ¸Õ¹:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¶Õ·Õ¾Õ¥Õ¬ Õ¥Õ¶ Õ¸Ö€ÕºÕ¥Õ½ Õ¸Õ¹ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶, Ö„Õ¡Õ¶Õ« Õ¸Ö€ Õ¤Ö€Õ¡Õ¶Ö„, Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ§, Õ³Õ«Õ·Õ¿ Õ¹Õ¥Õ¶: Ô´Õ¸Ö‚Ö„ ÕºÕ¥Õ¿Ö„ Õ§ Õ½Õ¿Õ¸Ö‚Õ£Õ¥Ö„ Õ¤Ö€Õ¡Õ¶Ö„:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€ Õ¹Õ¯Õ¡Õ¶: Ô´Õ¡ Õ¶Õ¸Ö€Õ´Õ¡Õ¬ Õ¹Õ§:Õ†Õ«Õ·Ö„Õ¨ Õ¶Õ¸Ö€Õ´Õ¡Õ¬ Õ±Õ¥Ö‚Õ¡Õ¹Õ¡ÖƒÕ¥Õ¬Õ¸Ö‚ Õ­Õ¶Õ¤Õ«Ö€ (Õ¢Õ¡ÕµÖ Õ¡ÕµÕ¶ Õ°Õ¡Õ»Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ ÕºÕ¡Õ°Õ¾Õ¥Õ¬ Õ§):ÕÕ­Õ¡Õ¬Õ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Localazy Õ¶Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬Õ«Õ½:ÕÕ­Õ¡Õ¬Õ Õ¶Õ«Õ·Ö„Õ¨ Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬Õ«Õ½: ÕˆÖ€Õ¸Õ· Õ¿Õ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö€Õ¨, Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ§, Õ¢Õ¡ÖÕ¡Õ¯Õ¡ÕµÕ¸Ö‚Õ´ Õ¥Õ¶ Õ¯Õ¡Õ´ Õ¾Õ¶Õ¡Õ½Õ¾Õ¡Õ® Õ¥Õ¶:Ô±ÕµÕ½ Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¾Õ¥Ö€Õ¡Õ¢Õ¥Ö€Õ¸Ö‚Õ´ Õ¥Õ¶ PO Ö†Õ¡ÕµÕ¬Õ¥Ö€Õ« Õ¶Õ¥Ö€Ö„Õ«Õ¶ Õ±Ö‡Õ¡Õ¹Õ¡ÖƒÕ´Õ¡Õ¶Õ¨: Õ€Õ¡Ö€Õ´Õ¡Ö€Õ¥ÖÖ€Õ¥Ö„ Õ¤Ö€Õ¡Õ¶Ö„, Õ¥Õ©Õ¥ Õ¸Ö‚Õ¶Õ¥Ö„ Õ¸Ö€Õ¸Õ·Õ¡Õ¯Õ« ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¶Õ¥Ö€, Õ«Õ¶Õ¹ÕºÕ¥Õ½ Ö…Ö€Õ«Õ¶Õ¡Õ¯Õ Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯Õ« Õ¯Õ¡Õ¼Õ¡Õ¾Õ¡Ö€Õ¸Ö‚Õ´:Ô±ÕµÕ½ JSON Ö†Õ¡ÕµÕ¬Õ¨ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Ö†Õ¡ÕµÕ¬ Õ¹Õ§ Ö‡ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Poedit-Õ¸Ö‚Õ´:Ô±ÕµÕ½ Õ¶Õ«Õ·Ö„Õ¨ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ©Õ¾Õ¸Õ¾ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´Õ¶Õ¥Ö€ Õ¸Ö‚Õ¶Õ«, Õ¢Õ¡ÕµÖ Õ¯Õ¡Õ¦Õ´Õ¡Õ±Õ¥Ö‚Õ¾Õ¡Õ® Õ¹Õ§ Õ°Õ¸Õ£Õ¶Õ¡Õ¯Õ« Õ±Õ¥Ö‚Õ« Õ§Õ»Õ¡Õ£Õ¬Õ¸Ö‚Õ­Õ¨:Ô±ÕµÕ½ Ö†Õ¡ÕµÕ¬Õ¨ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ« ÖƒÕ¸Õ­Õ¡Ö€Õ¥Õ¶ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¸Ö‚Õ´ Õ§ Õ¿Õ¸Õ²Õ« ID-Õ¶Õ¥Ö€: Poedit-Õ¨ Õ¯Õ¡Ö€Õ¸Õ² Õ§ Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Õ¡Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¶Õ¥Ö€Õ¨ “%s†ֆայլիÖ:Ô±ÕµÕ½ Õ°Ö€Õ¡Õ´Õ¡Õ¶Õ¨ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¸Ö‚Õ´ Õ§ Õ¢Õ¡ÖÕ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ Õ¡Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ«Õ¹Õ¨: %o-Õ¨ Õ¯Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¾Õ« Õ¡Ö€Õ¿Õ¡Õ®Õ¾Õ¸Õ² Õ¶Õ«Õ·Ö„Õ« Õ¡Õ¶Õ¾Õ¡Õ¶Õ¨, %K-Õ¨Õ Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ« ÖÕ¡Õ¶Õ¯Õ«Õ¶, %F-Õ¨Õ Õ¶Õ¥Ö€Õ¡Õ®Õ¾Õ¸Õ² Õ¶Õ«Õ·Ö„Õ¥Ö€Õ« ÖÕ¡Õ¶Õ¯Õ«Õ¶, %C-Õ¨Õ Õ¯Õ¸Õ¤Õ¡Õ¾Õ¸Ö€Õ´Õ¡Õ¶ Õ¤Ö€Õ¸Õ·Õ¡Õ¯Õ«Õ¶ (Õ¿Õ¥Õ½ Õ½Õ¿Õ¸Ö€Õ¥Ö‚):Ô±ÕµÕ½ Õ¿Õ¸Õ²Õ¨ Õ£Õ¿Õ¶Õ¾Õ¥Õ¬ Õ§ Poedit-Õ« Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¸Ö‚Õ´:ÕÕ¡ Õ¯Õ¯ÖÕ¾Õ« Õ°Ö€Õ¡Õ´Õ¡Õ¶Õ« Õ¿Õ¸Õ²Õ«Õ¶, Õ¥Õ©Õ¥ Õ´Õ«Õ¡ÕµÕ¶ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´ Õ§ Õ¿Ö€Õ¾Õ¡Õ®: %c-Õ¨ Õ¯Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¾Õ« Õ¯Õ¸Õ¤Õ¡Õ¾Õ¸Ö€Õ´Õ¡Õ¶ Õ¡Ö€ÕªÕ¥Ö„Õ«Õ¶:ÕÕ¡ Õ¯Õ¯ÖÕ¾Õ« Õ°Ö€Õ¡Õ´Õ¡Õ¶Õ« Õ¿Õ¸Õ²Õ«Õ¶ Õ´Õ¥Õ¯ Õ¡Õ¶Õ£Õ¡Õ´Õ ÕµÕ¸Ö‚Ö€Õ¡Ö„Õ¡Õ¶Õ¹ÕµÕ¸Ö‚Ö€ Õ½Õ¿Õ¥Õ²Õ¶Õ¡Õ·Õ¡Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€: %f-Õ¨ Õ¯Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¾Õ« Õ¶Õ«Õ·Ö„Õ« Õ¡Õ¶Õ¾Õ¡Õ¶Õ¨:ÕÕ¡ Õ¯Õ¯ÖÕ¾Õ« Õ°Ö€Õ¡Õ´Õ¡Õ¶Õ« Õ¿Õ¸Õ²Õ«Õ¶ Õ´Õ¥Õ¯ Õ¡Õ¶Õ£Õ¡Õ´Õ ÕµÕ¸Ö‚Ö€Õ¡Ö„Õ¡Õ¶Õ¹ÕµÕ¸Ö‚Ö€ Õ½Õ¿Õ¥Õ²Õ¶Õ¡Õ·Õ¡Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€: %k-Õ¨ Õ¯Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¾Õ« Õ½Õ¿Õ¥Õ²Õ¶Õ¡Õ·Õ¡Ö€Õ«Õ¶:Ô¸Õ¶Õ¤Õ¡Õ´Õ¥Õ¶Õ¨Õ“Õ¸Õ­Õ¡Õ¯Õ¥Ö€ÕºÕ¸Ö‚Õ´Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬ Õ¡Õ´ÕºÕ« Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ® Õ§Õ %d-Õ¨ %d-Õ«Ö (%d %%)Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ (Ô¹Õ€)Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ &Õ¹Õ§Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ·Õ¿Õ¥Õ´Õ¡Ö€Õ¡Õ¶Õ¨ Õ¾Õ¶Õ¡Õ½Õ¾Õ¡Õ® Õ§Õ %s (%d):Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ½Õ­Õ¡Õ¬. %s (%d):Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ &Õ¹Õ§Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¡Õ¼Õ¡Õ»Õ¡Ö€Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ†Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¸Ö‚Õ´ Õ§, Õ¸Ö€ Õ´Õ¡Õ¿Õ¹Õ¥Õ¬Õ« Õ¬Õ«Õ¶Õ« Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ¨: Ô±ÕµÕ¶ Õ¹Õ« Õ¡Õ·Õ­Õ¡Õ¿Õ«, Õ¥Õ©Õ¥ Õ«Ö€Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ« ÖƒÕ¸Õ­Õ¡Ö€Õ¥Õ¶ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¥Õ¶ Õ´Õ«Õ¡ÕµÕ¶ ID-Õ¶Õ¥Ö€:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¡Õ¼Õ¡Õ»Õ¡Ö€Õ¯Õ¶Õ¥Ö€Õ¨ ÕºÕ¡Õ°Õ¡Õ¶Õ»Õ¸Ö‚Õ´ Õ¥Õ¶, Õ¸Ö€ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ¾Õ¡Õ®Ö„Õ« Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶ Õ°Õ¡ÕµÕ¿Õ¶Õ« Õ¬Õ«Õ¶Õ«: Poedit-Õ¨ Õ¹Õ« Õ¯Õ¡Ö€Õ¸Õ²Õ¡Õ¶Õ¸Ö‚Õ´ Õ°Õ¡ÕµÕ¿Õ¶Õ¡Õ¢Õ¥Ö€Õ¥Õ¬ Õ¡ÕµÕ¶ Õ¿Õ¾ÕµÕ¡Õ¬ Ö†Õ¡ÕµÕ¬Õ¸Ö‚Õ´:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ â€” %sÔ¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¹Õ¥Õ¶ Õ¯Õ¡Ö€Õ¸Õ² Õ©Õ¡Ö€Õ´Õ¡ÖÕ¾Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¡ÕµÕ¬Õ¡Õ£Ö€Õ«Ö, Ö„Õ¡Õ¶Õ« Õ¸Ö€ Õ¡ÕµÕ¶ Õ¹Õ« Õ£Õ¿Õ¶Õ¾Õ¥Õ¬ Õ¶Õ«Õ·Ö„Õ« Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´:ÔµÖ€Õ¯Õ¸Ö‚UTF-8 (Õ­Õ¸Ö€Õ°Õ¸Ö‚Ö€Õ¤ Õ§ Õ¿Ö€Õ¾Õ¸Ö‚Õ´)Õ€Õ¥Õ¿Õ¡Ö€Õ¯Õ¥Õ¬Ô±Õ¶Õ°Õ¡ÕµÕ¿ Õ¢Õ¡ÖÕ¡Õ¼Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶. %sUnix (Õ­Õ¸Ö€Õ°Õ¸Ö‚Ö€Õ¤ Õ§ Õ¿Ö€Õ¾Õ¸Ö‚Õ´)Crowdin-Õ« Õ¡Õ¶Õ°Õ¡ÕµÕ¿ Õ½Õ­Õ¡Õ¬ Õ‰Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¡Õ®Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€ Õ£Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ¨ Õ¶Õ¡Õ­Õ¡Õ£Õ®Õ¸Ö‚Õ´Ô±Ö€Õ¤Õ«Õ¡Õ¯Õ¡Õ¶Õ¡ÖÕ¶Õ¥ÕžÕ¬ Õ¢Õ¸Õ¬Õ¸Ö€ Õ£Ö€Õ¡ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¶Õ¥Ö€Õ¨ Õ¡ÕµÕ½ Õ¶Õ¡Õ­Õ¡Õ£Õ®Õ¸Ö‚Õ´Ö‰Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ &POT Õ¶Õ«Õ·Ö„Õ«Ö…ԹարմաÖÕ¶Õ¥Õ¬ &POT Õ¶Õ«Õ·Ö„Õ«Ö…ԱրդիաÖÕ¶Õ¥Õ¬ Õ¯Õ¸Õ¤Õ«ÖÔ¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ POT-Õ«ÖÔ±Ö€Õ¤Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ¡ÕµÕ¬Õ¡Õ£Ö€Õ«ÖÔ±Ö€Õ¤Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Õ¤Õ«ÖÔ¹Õ¡Ö€Õ´Õ¡ÖÕ¸Ö‚Õ´Õ¶Õ¥Ö€Õ« Õ¡Õ´ÖƒÕ¸ÖƒÕ¸Ö‚Õ´Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¸Ö‚Õ´Õ¶Õ¥Ö€Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¸Ö‚Õ´Õ¨ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥ÖÔ¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ©Õ¡Ö€Õ´Õ¡ÖÕ¸Ö‚Õ´Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¸Ö‚Õ´ Õ§ Ö…Õ£Õ¿Õ¾Õ¸Õ²Õ« Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨...Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ¾Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¸Ö‚Õ´Õ¨ %s Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö:Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ¾Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¸Ö‚Õ´ %s...Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ¾Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¸Ö‚Õ´..Õ•Õ£Õ¿. Õ°Õ¡Ö€Õ´Õ¡Ö€Õ¥ÖÕ¾Õ¡Õ® Õ¡Ö€Õ¿Õ¡Õ°Õ¡ÕµÕ¿Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ‘Õ¡Õ¶Õ¯Õ« Õ¿Õ¡Õ¼Õ¡Õ¿Õ¥Õ½Õ¡Õ¯Õ¨.Ô³Ö€Õ¾Õ¡Õ®Ö„Õ« Õ¿Õ¡Õ¼Õ¡Õ¿Õ¥Õ½Õ¡Õ¯Õ¨.Õ•Õ£Õ¿. Õ¡ÕµÕ½ Õ¬Õ¥Õ¦Õ¾Õ« Õ®Ö€Õ¡Õ£Ö€Õ¡ÕµÕ«Õ¶ Õ¯Õ¡Õ¶Õ¸Õ¶Õ¶Õ¥Ö€Õ¨Õ•Õ£Õ¿. Õ¡ÕµÕ½ Õ°Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼Õ¥Ö€Õ¨ (Õ£Õ¸Ö€Õ®Õ¡Õ¼Õ¸Ö‚ÕµÕ©Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨)Õ Õ³Õ¡Õ¶Õ¡Õ¹Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¸Õ² Õ¿Õ¸Õ²Õ¥Ö€Õ¨ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¶Õ«Õ·Ö„Õ¸Ö‚Õ´.Õ•Õ£Õ¿. Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ«Õ·Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ÕŽÕ¡Õ¾Õ¥Ö€Õ¡ÖÕ¶Õ¥Õ¬ÕŽÕ¡Õ¾Õ¥Ö€Õ¡ÖÕ´Õ¡Õ¶ Õ¡Ö€Õ¤ÕµÕ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€ÕŽÕ¡Ö€Õ¯Õ¡Õ®Õ %sÕÕºÕ¡Õ½Õ¸Ö‚Õ´ Õ§ Õ«Õ½Õ¯Õ¸Ö€Õ¸Õ·Õ´Õ¡Õ¶...Ô²Õ¡Ö€Õ« Õ£Õ¡Õ¬Õ¸Ö‚Õ½Õ¿ PoeditÕÕ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶Õ«Ö Õ¡Ö€Õ¤Õ«Õ¡ÖÕ¶Õ¥Õ¬Õ«Õ½Õ„Õ«Õ¡ÕµÕ¶ Õ¡Õ´Õ¢Õ¸Õ²Õ» Õ¢Õ¡Õ¼Õ¨ÕŠÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶WindowsÔ¿ÖÕ¡Õ¶Õ¯Õ¡Õ¶Õ¡ÕžÖ„ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ¡Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶Õ¨ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ²Õ¢ÕµÕ¸Ö‚Ö€ Õ¿Õ¥Ö„Õ½Õ¿Õ« Õ°Õ¡Õ´Õ¡Ö€:Ô¾Õ¡Õ¬Õ¥Õ¬ Õ·Õ¸Ö‚Ö€Õ»Õ¨ÕÕ¸Õ²Õ¡Õ¤Õ¡Ö€Õ±Õ¨ÕXLIFF Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ«Õ·Ö„Õ¥Ö€Ô±ÕµÕ¸Ô¿Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¶Õ¡Õ¥Ö‚ Õ°Õ¡Õ¶Õ¥Õ¬ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¾Õ¸Õ² Õ¿Õ¸Õ²Õ¥Ö€Õ¨ Õ¡Õ¶Õ´Õ«Õ»Õ¡Õ¯Õ¡Õ¶Õ¸Ö€Õ¥Õ¶ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¡ÕµÕ¬Õ¡Õ£Ö€Õ«Ö.Õ‰Õ¥Ö„ Õ¯Õ¡Ö€Õ¸Õ² Õ£ÖÕ¥Õ¬ Õ´Õ¥Õ¯ Õ¶Õ«Õ·Ö„Õ«Ö Õ¡Õ¾Õ¥Õ¬Õ« Poedit-Õ« ÕºÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶Õ¸Ö‚Õ´:Ô´Õ¸Ö‚Ö„ Õ©Õ¸Ö‚ÕµÕ¬Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¹Õ¸Ö‚Õ¥Õ¶Ö„ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ« Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´ Õ°Õ¡Õ¿Õ¯Õ¸Ö€Õ¸Õ·Õ¾Õ¡Õ® Õ¿Õ¥Õ²Õ«Ö Õ¯Õ¡Ö€Õ¤Õ¡Õ¬Õ¸Ö‚ Õ¥Õ¬Õ¡Õ¯Õ¥Õ¿Õ¡ÕµÕ«Õ¶ Õ¡ÕµÕ¬Õ¡Õ£Õ«Ö€Õ« Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨:Ô¿Õ«Ö€Õ¡Õ¼Ö†Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ ÕºÕ¥Õ¿Ö„ Õ§ Õ¾Õ¥Ö€Õ¡Õ£Õ¸Ö€Õ®Õ¡Ö€Õ¯Õ¥Ö„ Poedit-Õ¨ÕÕ¥Ö€ Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨ÔµÕ©Õ¥ Õ¹ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¥Ö„ ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨, Õ¡ÕºÕ¡ Õ¯Õ¯Õ¸Ö€ÖÕ¶Õ¥Ö„ Õ¤Ö€Õ¡Õ¶Ö„:ÕÕ¥Ö€ Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨ Õ¥Ö‚ Õ§Õ¬. ÖƒÕ¸Õ½Õ¿Õ¨ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¥Õ¬Õ¸Ö‚ Õ¥Õ¶ Õ´Õ«Õ¡ÕµÕ¶ GNU gettext Õ¶Õ«Õ·Ö„Õ¥Ö€Õ« Õ£Õ¬Õ­Õ¡Õ£Ö€Õ¥Ö€Õ¸Ö‚Õ´Õ ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬Õ¸Ö‚ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Õ²Õ«Õ¶:Ô¶Ö€Õ¸Õ‰Õ¡ÖƒÕ¸Ö€Õ¸Õ·Õ¥Õ¬ÕŽÕ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¹Õ§Õ¹Õ»Õ¶Õ»Õ¥Õ¬ ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ¡Õ¾Õ¸Ö€ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ¨ (Õ¾Ö€Õ«ÕºÕ¡Õ¦Õ¥Ö€Õ®Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€)Ö…Ö€Õ«Õ¶Õ¡Õ¯Õ nplurals=2; plural=(n > 1);Õ¸Õ¹ Õ¾Õ¥Ö€Õ»Õ¶Õ¡Õ¯Õ¡Õ¶Õ« Õ°Õ¡Õ´Õ¨Õ¶Õ¯Õ¶Õ¸Ö‚Õ´ Õ¶Õ«Õ·Ö„Õ¸Ö‚Õ´Õ¡Õ¶ÖÕ¶Õ¥Õ¬ Õ´Õ«Õ¸Ö‚ÕµÕ©Õ«Õ Õ¿Õ¸Õ²Õ« Õ¿Ö€Õ¾Õ¡Õ® Õ°Õ¡Õ´Õ¡Ö€Õ¸Õ¾handle a poedit:// URICtrl+DownEnterÕÕ¡Õ­Ô±Õ»Shift+Upaltctrlshift%s-Õ« Õ´Õ¡Õ½Õ«Õ¶Ô¹Õ¡Ö„ÖÕ¶Õ¥Õ¬ %s-Õ¨Ô¹Õ¡Ö„ÖÕ¶Õ¥Õ¬ Õ¸Ö‚Ö€Õ«Õ·Õ¶Õ¥Ö€Õ¨Õ†Õ¡Õ­Õ¡ÕºÕ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€...Õ“Õ¡Õ¯Õ¥Õ¬ %s-Õ¨Ô¾Õ¡Õ¼Õ¡ÕµÕ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨Õ¶Õ¡Õ­Õ¡Õ©Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¥Õ¬ TM-Õ«ÖÕ¡Õ¶Õ°Õ¡ÕµÕ¿ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¹Õ¡Õ»Õ¡Õ¯ÖÕ¾Õ¸Õ² Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯ (%s)Õ¤Õ¸Ö‚Ö„@Ö…Ö€Õ«Õ¶Õ¡Õ¯.Õ°Õ¡Õµ'%s'-Õ¨ Õ¾Õ¡Õ¾Õ¥Ö€ POT Õ¶Õ«Õ·Ö„ Õ¹Õ§:poedit-3.6.3/locales/gl.mo0000644000175100001660000015551315011674363011072 Þ•™äw¬)ˆ7 ‰7 •7& 7Ç7<Û78J+8gv8 Þ8è8 ÷8;9=9 D9R9Y9_9g9n9u9{9ƒ9’9¡9§9­9¶9Ê9Þ9â9ô9: :::!:3:E:I: M: Z:g:p:y: €:::³:É:Ø:ô:;;;%;+;4;K; b; p; ~;‹;‘;­;É;â;û;<)</<4<K<[< y< …<<˜< <©< ­< ¹<Æ< Õ<á< ñ<ý< =$= 3=?=O=c=~=‡=§=Ä=ä= ú= >1>'E>m>Š> ¤>¯>7µ>6í>$?)D?n? s?]~?Ü?<ï?D,@$q@–@ @ª@ ±@"¿@â@ ý@AA,A=APAYAlAˆA¤A#¹AÝAòAB BB $B/BABGBMB^B%oB•B °BÑBÙBâBúB CC/4C dCqCvC‰CŸC²CÈC1çCD 2D=D)TD~D žD¬D±DÄD×DìDðDEE-E>E]ElEE;’E ÎE'ÛE^FLbF?¯F ïF ýF G*GHG"[G5~G´GÏGêGðG õG H H H +H8HIHQHYH`HfrHÙHóHu IƒI–I"¨IËIÓI ÚIåIôI JJ$J05JfJ€J#•J<¹JöJ K*K0`a` i` v`ƒ` –`(¡`Ê`Ð`zé`daua|a a a ™a ¥a±a ¹a Äa Ña Ûa èa ôaÿab+b"Cbfb‚b ¡b ®b»b Äb ÐbÝb÷bcc *c 7cEcVcec ~c‹c›c «c¹cÁcÉcÒc Úcècdd-d6d?d Pd ]d idvdŠdšd¯dÃdÓdèd†ýd„eŸe µeÁeÐeãe ôef f!fK(ftf‰f ˜f¦f»fÎfäf1g2g Ag OgŽ[g=êg(h¨h­h(¿hèh ðhþh+iGi Ji8Ti"i°iÂÁi„jCŸj8ãjîkŸ l8«l1älRmcimQÍmn':n:bnlnP o-[oC‰oAÍoKp0[p.ŒpŽ»p!Jq)lq-–q+Äq8ðqC)rumr,ãrLs]]s…»sJAt[Œtoèt«Xu7vmžÆ6ÝÆDÇ/YÇ(‰Ç¢²Ç'UÈ)}È-§È-ÕÈ-É61ÉrhÉ,ÛÉLÊ`UʶÊXGËh Ëƒ ÌßÌ7mÍ‘¥Íp7Îg¨ÎÏÏ(ÏDÐcÐ €Ð‹Ð Ð¶ÐËÐAåÐ''ÑOÑdÑ~јџªÑJÒOÒcÒ-lÒšÒ­ÒËÒ ÝÒ êÒõÒ*Ó.0Ó$_Ó$„Ó©ÓÄÓÙÓ ôÓÔ.Ô>ÔUÔ)qÔ!›Ô½ÔÜÔ!÷Ô!Õ0;Õ3lÕr Õ Ö4Ö<Ö VÖbÖ €ÖŽÖ¡ÖÁÖØÖßÖ+çÖ× "×-×K×HN×>—×`Ö×87Ø pØ3{Ø–¯ØFÙKÙPÙ6YÙ#Ù´Ù!»Ù/ÝÙ Ú&Ú+Ú1Ú8Ú>ÚGÚOÚWÚ^ÚbÚgÚnÚ wÚ‚Ú‘Ú ¡Ú­Ú ¶ÚÃÚÖÚêÚ ÛÛ'#Û æaÂO %J¶ºø¦V@™F°’Þu×sbAäKn%Ï{³W——¥µ·3ÔT48 QCž9†3½Í¬„fÔpü¹iFÑØ6¤†G}ØR¼ hó…j9Э]Ê8+`Ü ¸ƒÃ &m;Ò÷iùX‹Ë_[šá^l/E€“<ò ÅNÆ Ï-˜r‹$`(™ ÛŒ Uc…‘Ñk,Õ 1»2Z;?K:xq8Q MU±Ží|HÀj¶‡ü¿[.Š:Š“"]Pȃ&edîˆ.7&‹€\!G0æ‰a'™{°BÌíMY˜5„6ºh¸J%˜©{"¡ö>4Ÿ3Lâs@´ë‚þœNZ»å;ˆ·£´DegÙwŽvrpö#¦*7•#D ÿ5=A$ÇBl(?‘è6ñ-/:¯£Vw~'@x9 •)WRˆ€ô²Ç©¢uètÜc)`X‚7GN› '³Ûúùlçû×mEp~P)ovô‚(!ãL“®1ž¾êÚÌb1”OŸà]ú‡–ìõ[t^ÆI2fYJþXqÓ *ß+ñµ–®mFï<Cr}vH¨Pon|\5ÅTQ,òÝ—tìKœÉÉd|Šdâ#yéȬë*ÓΡ>éHw”¤+„§EÙ¢Y¾^zõäsÀЫLÞk=ð‡zk Sðfï$‰iC\, ¼VŒÖê›Î?ybgª§ÄBZ}ý.…gÝ”xÁ4>½AÍ_u-D­«y¿T²ŒjߎËý Oƒ† Ã_aS0<¨à’I–0¯zÿáhÄ2I±¥ÊWó/Öš"!qÕ¹cÒn’Á‰îçøMûR=‘ªUÚ~ãeS÷o•å (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesCancelCancelling…Cannot create temporary directory.Cannot execute program: %sCapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationCopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishMO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove same-as-source translationsReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Galician Language: gl_ES MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: gl X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (modificado) (sen gardar)%d aparición no código%d aparicións no código%d entrada%d entradas%d entrada foi pre-traducida.%d entradas foron pre-traducidas.%d erro%d errosatopouse %d problema coa traduciónatopáronse %d problemas coa tradución.Non se cargou de maneira correcta %i liña do ficheiro «%s».Non se cargaron de maneira correcta %i liñas do ficheiro «%s».Formato %sPreferencias do %sformato %sA tradución %s foi importada.As traducións %s foron importadas.&Sobre&Sobre Poedit&Aplicar&Volver&Cancelar&Limpar&Pechar&Copiar&Eliminar&Feito e seguinte&Feito e continuar coa seguinte&Editar&Ficheiro&Buscar…Manual de &GNU gettextManual de &GNU gettext&Ir aA&grupar por contextoA&grupar por contexto&Axuda&Novo&Novo…&Seguinte >Tradución &seguinteTradución &seguinte&Non&AceptarAxuda &en InternetAxuda &en Internet&Abrir...A&brir…&Pegar&Preferencias&Preferencias…Tradución &anteriorTradución &anterior&Propiedades…&Purgar as traducións eliminadas&Purgar as traducións eliminadas&Saír&Refacer&Substituír&GardarGardar &como&Mostrar as aparicións no código&Mostrar as aparicións no código&Xanela de inicio&Xanela de inicio&Tradución&DesfacerEntradas &sen traducir primeiroEntradas &sen traducir primeiroAct&ualizar desde o código fonteAct&ualizar desde o código fonte&Validar as traducións&Validar as traducións&Ver&Si(Usar idioma predeterminado)(non se accedeu)(cómpre Windows 8 ou posterior)< &AnteriorSobre %sContaContasEngadirEngadir comentarioEngadir cartafoles…Engadir cartafoles…Engadir ProxectoEngadir comodín…Engadir comentarioEngadir directorio á listaEngadir cartafoles…Engadir cartafoles…Engadir proxectoEngadir comodín…Palabras clave adicionaisBandeiras xgettext adicionais:AvanzadoAxustes avanzados de extracción…Axustes avanzados de extracciónAxustes avanzados de extracción…Todos os ficheiros de traduciónTodos os comentariosTodas as cadeasUse tamén as palabras clave predeterminadas nos idiomas aceptadosCambiar o foco sempre ao campo da entrada de textoUn elemento da lista de ficheiros de entrada:Un elemento da lista de palabras clave:AparenciaAplicarTen a certeza de querer eliminar o extractor "%s"?Ten a certeza de querer restablecer a memoria de tradución?Mirar de actualizacións automaticamenteCompilar automaticamente o ficheiro MO ao gardarVolverRuta base:As versións beta conteñen as funcionalidades e melloras máis recentes, mais poden resultar menos estables.Traer todo á fronteO ficheiro PO está corrompido: emprégase a forma plural de msgstr sen existir msgid_pluralO ficheiro PO está corrompido: emprégase a foma singular de msgstr xunto con msgid_pluralA cadea a traducir ten unha marcación incorrecta.ExplorarExplorar ficheirosCancelarCancelando…Non foi posíbel crear o directorio temporal.Non foi posíbel executar o programa: %sMaiúsculasXestor de &catálogos&Xestor de proxectosXestor de catálogosCambiar o idioma da interfaceXogo de caracteres:Comprobar documento agoraRevisar gramática e ortografíaRevisar ortografía mentres se escribeBuscar actualizacións…Buscar erros na traduciónBuscar actualizacións…Revisar a ortografíaLimparLimpar menúBorrar a traduciónLimpar menúBorrar a traduciónPecharNubeAparicións no códigoAparicións no códigoColabora con outras persoas en liña.Recompilando ficheiros orixe…Comando para extraer as traducións:ComentarioComentario:Comentarios prefixados con:Compilar a MO…Compilar a…Ficheiros de tradución compiladosConfigure a extracción de código fonte en Propiedades.ConfirmaciónCopiarCopiar do singularCopiar o texto orixeCopiar do singularCopiar o texto orixeCorrixir ortografía automaticamenteNon foi posible cargar o ficheiro, probablemente estea corrompido.Non foi posible gardar o ficheiro %s.Crear novoCrear unha nova traduciónCrear nova tradución desde o modelo POT.Crear novo proxecto de traduciónErro de CrowdinCor&tarExtractores personalizados:Extractores personalizados:Personalizar barra de ferramentas…CortarTamaño da base de datos no disco:EliminarEliminar da memoria de traduciónEliminar extractorEliminar da memoria de traduciónEliminar proxectoEliminar o comentarioEliminar o proxectoEliminar o proxecto non eliminará ningún ficheiro de tradución.Directorios:Desexa eliminar o proxecto «%s»?Desexa recargar o ficheiro desde o disco? Se o fai, perderanse os cambios non gardados no Poedit.Desexa eliminar todas as traducións que idénticas ao texto fonte?Desexa eliminar todas as traducións que xa non se empregan?No&n gardarNon gardarNon mostrar novamenteNon marcar coincidencias exactas como dubidosasNon mostrar novamenteDescargando as traducións máis recentes…A descarga de traducións está deshabilitada neste proxecto.Arrastrar aquí cartafoles ou ficheirosArrastrar aquí cartafoles ou ficheiros&SaírEditarEditar &comentarioEditar o &comentarioEditar o comentarioEditar o comentarioEditar o proxectoEditar o proxectoEdiciónEditar…Correo electrónico:Modo de pantalla completaAs entradas neste ficheiro teñen un número de formas plurais diferente ao que indica a cabeceira de formas do pluralPrimeiro as entradas con errosPrimeiro as entradas con errosAs entradas con erros márcanse en vermello na lista. Os detalles do erro mostraranse cando seleccione unha destas entradas.Erro ao abrir o ficheiroProduciuse un erro ao gardar o ficheiroErro ao cargar o ficheiro XLIFF: %sErro: ErrosTodoRutas excluídasExportar como TMX…Exportar como…Exportar coma HTML…Exportar como TMX…Produciuse un erro exportando a memoria de tradución «%s».Exportando as traducións…Extraer desde as fontesExtraer notas para tradutores de:Extraer textos dos ficheiros de código fonte que están nos seguintes directorios:Configuración do extractorExtractoresErro de comunicación co proceso do Poedit.Produciuse un fallo cargando o ficheiro coas traducións extraídas.Produciuse un erro ao fusionar os catálogos gettext.Erro ao actualizar a memoria de tradución: %sFicheiroNon é posíbel abrir o ficheiroO ficheiro «%s» non existe.O ficheiro «%s» non é un ficheiro de tradución.O ficheiro «%s» é de só lectura e non é posible gardalo. Gárdeo cun nome diferente.BuscarBuscar seguinteBuscar anteriorBuscar e substituír…Buscar nos comentariosAtopar nos textos fonteBuscar nas traduciónsBuscar seguinteBuscar anteriorSolucionar idiomaSolucionar idiomaCorrixir a cabeceiraArranxar a cabeceiraFicheiros de tradución FlutterForma %iForma %i (non usado)GNU gettextXeralFicheiros HTMLAxudaAgochar barra lateralAgochar a barra de estadoOcultar esta mensaxe de notificaciónComo funciona a sincronización na nube?IDSe continua coa purga, todas as traducións marcadas para eliminar retiraranse permanentemente do ficheiro. Terá que traducilas outra vez se se volven engadir no futuro.Se anteriormente denegou o acceso aos seus ficheiros, pode cambialo nas Preferencias do sistema > Seguranza e privacidade > Privacidade > Ficheiros e cartafoles.Se anteriormente denegou o acceso aos seus ficheiros, pode cambialo nas Preferencias do sistema > Privacidade e seguranza > Ficheiros e cartafoles.IgnorarIgnorar maiúsculas e minúsculasImportar de TMX…Importar os ficheiros da tradución…Importar de TMX…Importar os ficheiros da tradución…Importando desde “%sâ€â€¦Importando as traducións…En: %sIncluír versións betaUso inconsistente das maiúsculas/minúsculasEspazo en branco inconsistenteInformación acerca do/a tradutor/aInstalarFicheiro non válidoInvocación:Ficheiros de tradución JSONManterO idioma da tradución é o mesmo que o de orixe.O idioma da tradución está sen definir.Idioma da tradución:Selección de idiomaEquipo de idioma:Idioma:Última modificaciónSaber máis sobre as palabras clave de gettextAprenda sobre as formas do pluralAprender máisMáis información sobre %sMáis información sobre CrowdinMáis información sobre gettext de GNUA liña %d do ficheiro «%s» está danada (datos %s non válidos).Finais de liña:Lista de extensións separadas con punto e coma (p.ex. *.cpp; *.h):Cargar inglésOs ficheiros MO non se poden editar directamente en Poedit.Converter a minúsculasConverter a maiúsculasFacer unha nova tradución desde este ficheiro POT.Cabeceira mal formada: «%s»Xestionar contasManexar…Fusionando as diferenzas…MinimizarO nome do proxecto ao que pertence esta traduciónNome:Seguin&te sen rematarSeguin&te sen rematarDubidosaDubidosaErro de rede: %s (%d)Nunca deixar que a lista de mensaxes teña o foco. Se está activado, debe usar Ctrl-frechas para navegar co teclado pero tamén poderá introducir texto inmediatamente, sen ter que premer Tabulación para cambiar o foco.NovoNova a partir dun ficheiro &POT/PO…Nova a partir dun ficheiro &POT/PO…Novas cadeasForma plural seguinteForma plural seguinteNonNon se atoparon coincidenciasNon foi posíbel pre-traducir entrada ningunha.No ficheiro non se fornece información ningunha sobre as aparicións desta cadea no código fonte.Non se atoparon coincidenciasNon se atoparon problemas coa tradución.Non hai ningún proxecto de tradución listado na túa conta.Non hai información do usoNon se traduciron todas as formas do plural.Acción non autorizada; accede de novo.Notas para os tradutoresAceptarUnActive isto unicamente se confía na calidade da súa MT. Predeterminadamente, todas as coincidencias coa MT márcanse como dubidosas e deben revisarse antes do seu uso.Só aquelas correspondencias exactasAbrir Tradución na Nube…Abrir recentesAbrir e editar os ficheiros de tradución.Abrir tradución na nubeAbrir tradución na nube…Abrir ficheiroAbrir no editorAbrir no editorAbrir recentesAbrir...Abrir…OpciónsOutro&Anterior sen rematar&Anterior sen rematarFicheiros de tradución POModelos de tradución POTOs ficheiros POT son unicamente modelos e non conteñen traducións. Para traducir, cree un novo ficheiro PO con base no modelo.PegarPegar e coincidir estiloRutasActualiza desde o código fonte todos os ficheiros do proxecto.Permiso denegado.O marcador de posición «%s» falta na tradución.Precisión dos marcadores de posiciónPor favor, abra e edite no seu lugar o ficheiro PO correspondente. Cando o garde, o ficheiro MO actualizarase tamén.Por favor, garde o ficheiro primeiro. Esta sección non pode ser editar ata que o faga.PluralTraducións dos pluraisA expresión de formas plurais usada no ficheiro non é habitual no %s.Formas do plural:PoeditPoedit - Xestor de catálogosPoedit corrixiu automaticamente o contido non válido do ficheiro "%s".Poedit pode tentar completar as novas entradas desde traducións previas no ficheiro ou desde a memoria de tradución completa. Usar a MT non será efectivo se está case baleira pero mellorará a medida que se lle engadan traducións.O Poedit non pode mostrar o codigo fonte onde se usa a cadea porque o ficheiro non está dispoñíbel na localización referenciada ou a referencia simbólica non apunta ao ficheiro real.Poedit é un editor de traducións fácil de usar.O Poedit non foi quen de abrir o ficheiro «%s».Pre-&traducir…Pre-traducirPre-traducidoPre-traduciuse %u cadeaPre-traducíronse %u cadeasTradución previa desde a memoria de traducións…Pre-traducindo…A Pre-tradución automaticamente atopa coincidencias exactas ou dubidosas na memoria de tradución para as cadeas sen rematar e úsaas para completar a tradución.PreferenciasPreferencias...Preferencias…Preparando as cadeas…Conservar o formato dos ficheiros existentesForma plural anteriorForma plural anteriorTexto fonte anteriorEditada previamenteEditada previamenteNome e versión do proxecto:Nome do proxecto:Proxecto:ProxectosComprobación da puntuaciónPurgarPurgar as traducións eliminadasSaírProduciuse un fallo lendo o contido do ficheiro co seguinte erro: %sFicheiros recentesRefacerActualizarRecargar o ficheiroRecargar o ficheiroPendente: %dEliminarEliminar traducións iguais á fonteSubstituírSubstituír &todoSubstituír &todoTexto de substituciónSubstituír…Falta a cabeceira requirida de formas do plural.RestablecerRestablecer memoria de traduciónAo restablecer a memoria de tradución, borraranse todas as traducións almacenadas. Esta operación non se pode desfacer.Mostrar no FinderRevisarGardarGard&ar como…Gard&ar como…Gardar igualmenteGardar igualmenteGardar comoGardar como…Gardar os cambiosGardar ficheiroCapturas de pantalla:Seleccionar &todoSeleccionar todoSeleccione os ficheiros TMX a importarSeleccione un directorioSeleccionar o ficheiro da traduciónSeleccione os ficheiros de tradución para importarSeleccionar o modelo da traduciónSeleccione o seu idioma preferidoDefinir idiomaDefinir o idiomaConfiguraciónsPreferencias…Mostrar barra lateralMostrar ortografía e gramáticaMostrar a barra de estadoMostrar o &ID da cadeaMostrar substituciónsMostrar barra de ferramentasMostrar avisosMostrar no ExplorerMostrar no cartafolMostrar ou agochar a barra lateralMostrar barra lateralMostrar a barra de estadoMostrar o &ID da cadeaMostrar avisosBarra lateralAccederSaírAccederIniciar sesión en %sAcceder á conta da nubeAcceder a CrowdinAcceder á conta da nubeSaírSingularCopiar/pegar intelixenteTrazos intelixentesLigazóns intelixentesComiñas intelixentesOrdenar por &ficheiroOrdenar pola &orixeOrdenar por &traduciónOrdenar por &ficheiroOrdenar pola &orixeOrdenar por &traduciónXogo de caracteres do código fonte:Os extractores de código fonte utilízanse para atopar as mensaxes traducibles nos ficheiros de código fonte, extraelas e así permitir a súa tradución.Código fonte non dispoñible.Non foi posíbel atopar o código fonteTexto orixeID do texto orixeTexto fonte — %sPalabras clave das orixesRutas das orixesPalabras clave das orixesRutas do código fonteFalaDesactivouse a revisión ortográfica porque non está instalado o dicionario para o %s.Ortografía e gramáticaComezar a falarDeixar de falarTraducións almacenadas:Contexto da cadea: %sIdentificador de cadea: %sLonxitude da cadea en caracteresLonxitude da cadea en caracteres: tradución | fonteTexto que atoparSubstituciónsSuxestiónsAs 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.Marcador de posición innecesario «%s» que non aparece no texto orixinal.Acepta todos as linguaxes de programación recoñecidas polas ferramentas de GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript e outras).SincronizarSincronizar con CrowdinSincronizar a tradución con CrowdinSincronizandoErro ao sincronizarErro ao sincronizar con Crowdin.Erro de sintaxe na cabeceira Plural-Forms ("%s").MTFicheiros TMXTomar as cadeas traducibles desde un patrón POT existente.Nome do equipo e enderezo de correo electrónico ou URLSubstitución de textoA MT non contén ningunha cadea similar ao contido deste ficheiro. Só será efectiva para traducións semiautomáticas logo de que Poedit aprenda o suficiente de ficheiros traducidos manualmente polo usuario.O ficheiro TMX está mal construído.De gardar perderanse os cambios feitos por as outras aplicacións.O ficheiro non pode ser compilado ao formato MO para o seu uso.O ficheiro contiña elementos duplicados, non permitidos nos ficheiros PO que impedirían o seu uso. Poedit solucionou o problema, mais debe revisar as traducións marcadas como dubidosas e corrixilas no caso de ser preciso.Non foi posíbel gardar este ficheiro co xogo de caracteres «%s» tal como se especificou nos axustes da tradución. Gardouse en UTF-8 e en consecuencia modificouse o axuste.O ficheiro foi modificado. Desexa gardar os cambios?O ficheiro está nun formato non recoñecíbel para o Poedit.O ficheiro foi compilado ao formato MO, mais é posíbel que non funcione correctamente.O ficheiro gardouse satisfactoriamente e compilouse no formato MO, mais é posible que non funcione correctamente.O ficheiro gardouse de forma segura, pero non foi posíbel compilalo ao formato MO para utilizalo.O ficheiro gardouse satisfactoriamente.Non foi posíbel abrir o ficheiro «%s».O ficheiro «%s» foi modificado por outra aplicación.Texto fonte antigo (antes de cambiar durante unha actualización) ao que corresponde a agora inexacta tradución.O xeito máis simple de encher este ficheiro con traducións é actualizalo desde un POT:A tradución non comeza por un espazo.A tradución remata cun salto de liña pero o texto orixe non.A tradución remata cun espazo pero o texto orixe non.A tradución remata con «%s» pero o texto orixe remata con «%s».Falta o salto de liña ao remate da tradución.Falta un espazo ao remate da tradución.A tradución está pronta para o seu uso, mais aínda hai %d cadea sen traducir.A tradución está pronta para o seu uso, mais aínda hai %d cadeas sen traducir.A tradución está lista para utilizar.A tradución debería rematar con «%s».A tradución non debería rematar con «%s».A tradución debería comezar con maiúscula.A tradución debería comezar con minúscula.A tradución comeza cun espazo pero o texto orixe non.As traducións marcáronse como dubidosas porque poden ser inexactas. Debería revisalas e no seu caso corrixilas.Non hai traducións. Isto non é o habitual.Produciuse un problema ao formatar o ficheiro (pero gardouse correctamente).Producíronse erros ao cargar o ficheiro. Pode que se perderan ou corromperan algúns dos datos.Estes valores afectan ao formato interno dos ficheiros PO. Axústaos se tes requisitos específicos; por exemplo, debido ao control de versión.Este ficheiro JSON non é un ficheiro de tradución e non é posíbel editalo no Poedit.Este ficheiro ten entradas con formas plurais, pero non ten configurada a cabeceira de formas do plural.Este ficheiro usa os identificadores das cadeas do texto de orixe. Poedit pode cargar os textos en inglés desde o ficheiro «%s».Este comando emprégase para abrir o extractor. %o expande o nome do ficheiro de saída, %K mostra as palabras clave, %F fai unha listaxe dos ficheiros de entrada e %C define o conxunto de caracteres (véxase máis abaixo).Esta cadea atopouse na memoria de tradución de Poedit.Isto engadirase á liña de ordes só se se proporciona o xogo de caracteres do código fonte. %c substituirase polo valor do xogo de caracteres.Isto engadirase á liña de ordes unha vez por cada ficheiro de entrada. %f substituirase polo nome de ficheiro.Isto engadirase á liña de ordes unha vez por cada palabra clave. %k substituirase pola palabra clave.Total TransformaciónsAs entradas traducibles non se engaden manualmente no sistema Gettext, senón que se extraen automaticamente do código orixinal. Así, mantéñense actualizadas e precisas. Quen traduce normalmente emprega patróns ou modelos de ficheiros PO (POT) proporcionados polo desenvolvedor.Proxecto de tradución na nubeTraducidas: %d de %d (%d %%)TraduciónIdioma da traduciónMemoria de traduciónTradución du&bidosaPropiedades da traduciónA base de datos da memoria de tradución está corrupta: %s (%d).Erro na memoria de tradución: %s (%d).Tradución du&bidosaPropiedades da traduciónSuxestións de traduciónTradución — %sNon se puideron actualizar as traducións a partir do código fonte porque non se atopou tal código na localización especificada nas propiedades do ficheiro.DousUTF-8 (recomendado)DesfacerProduciuse unha excepción non controlada: %sUnix (recomendado)Erro de Crowdin descoñecido.Erro descoñecidoSen traducirActualizarActualizar todoActualizar todos os catálogos do proxectoActualizar todos os catálogos deste proxecto?Actualizar desde un ficheiro &POT…Actualizar desde un ficheiro &POT…Actualizar desde o códigoActualizar desde POTActualizar desde o códigoActualizar desde o código fonteResumo da actualizaciónActualizaciónsErro na actualizaciónActualizando as traduciónsActualizando a información do usuario…Subir as traducións a %s fallou.Subindo as traducións a %s…Cargando as traducións…Utilizar expresión personalizadaFonte personalizada nas listaxes:Tipo de letra personalizado nos campos de texto:Utilizar as regras predeterminadas para este idiomaUse estas palabras clave (nomes de funcións) para recoñecer cadeas intraducibles nos ficheiros de código fonte:Utilizar a memoria de traduciónValidarResultados da validaciónVersión %sAgardando a autenticación…Advertencia: Benvido/a a PoeditCando actualice desde as fontesSó palabras completasXanelaWindowsDesexa usar o inglés para os textos orixe?Busca circularAxustar a:Ficheiros de tradución XLIFFSiTamén pode extraer as cadeas traducibles directamente do código fonte:Non pode arrastrar máis dun ficheiro a unha xanela de Poedit.Non ten permisos para ler o código fonte na localización indicada nas Propiedades do ficheiro.Debe reiniciar Poedit para que este cambio teña efecto.O seu nomeOs cambios perderanse a menos que vostede os garde.Estes datos (nome e correo electrónico) empréganse unicamente para establecer o valor da cabeceira «Last-Translator» dos ficheiros de GNU gettext.CeroZoomDubidosanon eliminar os ficheiros temporais (para depuración)p. ex., nplurals=2; plural=(n > 1);erro: coincidencia dubidosa no ficheiroir ao elemento dun número de liña determinadomanexar un URI de poeditAlt+Ctrl+AbaixoIntroEsquerdaDereitaMaiús+ArribaaltctrlmaiúsSobre %sAgochar %sAgochar outrosPreferencias...Saír do %sServizosMostrar todopre-traducir da MTidioma descoñecidoversión incompatíbel (%s)advertencia: ti@exemplo.com«%s» non é un ficheiro POT correcto.poedit-3.6.3/locales/hr.mo0000644000175100001660000016730115011674363011077 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-óOC’S’Ac’¥’QÂ’!“K6“K‚“‡Î“uV”˜Ì” e• o• {•H…• ΕÜ• ñ•ü• –––– (–2–L–f– m– w–…––µ–º–Ñ–è–ð– ö– — —!—5—9—A—V— k— w—ƒ— ‹— •—£—·— Ë—Ù—÷—˜˜ &˜0˜ 8˜D˜a˜~˜˜ œ˜ ¦˜"°˜"Ó˜ö˜™4™H™\™d™h™™"“™ ¶™ ٠љߙæ™î™ô™šš %š3šLš[šnšš šžš·šКéš òš› 0›Q› h› v›<›.¾›í›"œ#%œ Iœ Wœaœ-€œ2®œáœ13:UK¡J¶Ož$Qž vž€žŒ“ž Ÿ)Ÿ&8Ÿ"_Ÿ)‚Ÿ4¬Ÿ ០ 2 I b r ‰ "§ Ê $ã ¡!¡3¡:¡L¡\¡n¡~¡†¡Œ¡Ÿ¡!²¡ Ô¡ õ¡¢ ¢)¢A¢U¢e¢3„¢¸¢RÀ¢££.£I£\£w£0“£9Ä£'þ£&¤;¤'P¤!x¤š¤©ª¤T¥]¥v¥¥ª¥!²¥Ô¥"Ý¥¦"¦6¦G¦Y¦Aj¦¬¦Ħ&ʦeñ¦AW§;™§Õ§å§ô§1¨9¨#L¨6p¨§¨ƨå¨ì¨ÿ¨©©%©4© C© Q© _© k© u©©h”©!ý©!ªqAª#³ª#ת*ûª &«0«8«<«W«k«…«”«¥« ¿«0Ì«ý«¬"#¬7F¬Œ~¬ ­ ­)*­-T­8‚­'»­3ã­® ®>®.\®U‹®á®ê®ý®¯(¯?¯Z¯q¯„¯ —¯ ¥¯³¯ůׯò¯û¯ °!° '°5°<°P°d° y°š°£°ŽA±ŽÐ±_²h²²›²¸²Ò²ï²$³(³;³A³!W³y³³ ¡³¬³ À³̳Ô³ݳõ³ý³(´ ;´\´ m´{´‹´’´*¥´ д ñ´þ´µ4µRµCXµœµF­µôµ–¶4œ¶Ѷç¶)ÿ¶)·H·\·v·Š·(‘·º·¿·Ö·í·þ·¸Ö(¸ÿ¸¹ !¹-¹ J¹V¹o¹ˆ¹¡¹¤¹'´¹Nܹ+º;º/Wº‡º#¦º)ʺôº »»½»Ö»ò»¼&¼E¼^¼{¼‹¼ ¼µ¼ļ ß¼ ê¼õ¼ü¼½½1½G½u`½Ö½ݽó½3û½/¾2B¾u¾m”¾J¿M¿V¿Ai¿«¿¼¿ÿDâ¿ 'ÀÇ3Á7ûÁ-3Âa r ~ÂNŒÂ2ÛÂÉ"Ãy¬Ãj&Ä‘Ä šÄ §Ä´Ä)ËÄõÄÅ'Å@ÅWÅnÅ †Å”ÅŦŽůÅãÅ2ëÅÆ:ÆAÆJÆbÆ zƈÆ'Æ'·Æ߯ðÆ'Ç)Ç 2Ç @ÇNÇ ^Ç:kǦǯÇbÏÇ2È EÈOÈVÈeÈtÈ„È ”ȟȮȾÈ=ÎÈ É É )É5É SÉ`É"É ¢ÉÃÉ ÚÉ èÉöÉ ÿÉ Ê"Ê@ÊVÊjÊ{Ê‘Ê¥Ê¿Ê ÏÊðÊËË2Ë FË SË ^Ë hËsË„Ë Ë¶Ë ÒËÜËäËÿËÌ Ì"2ÌUÌsÌ"‹Ì®ÌÌÌä̉ÍŒÍ§Í ÂÍÐÍãÍøÍÎ"Î:ÎLÎDRΗάοÎÑÎçÎüÎÏ%*ÏPÏ6_Ï–Ï žÏ‹©ÏA5Ð{wÐ óÐÑ"Ñ?ÑNÑ(nÑ=—ÑÕÑ ØÑ7åÑÒ=ÒÆLÒÓM1Ó9Óõ¹Ó²¯Ô7bÕ0šÕKËÕ_ÖXwÖÐÖ(ðÖ-×<G×z„×yÿ× yØ;šØ3ÖØG Ù,RÙ$Ùɤ٠nÚ)Ú,¹Ú,æÚ*Û2>ÛfqÛ ØÛNùÛ=HÜn†Ü~õÜ@tÝ`µÝkÞr‚Þ±õÞ7§ßwßß]Wà]µàááí)áâ0âLâUâeâ|â—âOªâ“úâ<Žã(Ëãôãä"äv9ät°ä%å‚5å¸å¼åÑå1Úå" æ/æCæ^æ pæ |æ‰æœæ$­æ&Òæ ùæ ç;çPçmç‚ç ç ³ç¿çÛçúç!è$2èWèsèŒè©èÃè(àèg éqéé™é ¬é·éËé ßé ê ê!#êEêYê`ê,hê•ê ªê¸êÑêìê?ïê;/ëckë,Ïë üë+ì{2ì®ì³ì¼ìCÍì í 2í%<í bíƒí˜íí£í©í¯í¶í¼íÃíÈíÌíÑí ×í åí ïí ýí îî î*(îSîbî {îˆî#î|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-05-16 10:16 Last-Translator: Language-Team: Croatian Language: hr_HR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: hr X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (promijenjeno) (nespremljeno)%d pojavljivanje koda%d pojavljivanja koda%d pojavljivanja koda%d izraz%d izraza%d izraza%d izraz je pretpreveden.%d izraza su pretprevedena.%d izraza je pretprevedeno.%d greÅ¡ka%d greÅ¡ke%d greÅ¡aka%d greÅ¡ka se dogodila.%d greÅ¡ke su se dogodile.%d greÅ¡aka se dogodilo.%d greÅ¡ka se dogodila:%d greÅ¡ke su se dogodile:%d greÅ¡aka se dogodilo:Otkriven je %d problem s izvornim nizovima.Otkrivena su %d problema s izvornim nizovima.Otkriveno je %d problema s izvornim nizovima.PronaÄ‘en je %d problem s prijevodom.PronaÄ‘ena su %d problema s prijevodom.PronaÄ‘eno je %d problema s prijevodom.%i redak datoteke „%s†nije ispravno uÄitan.%i retka datoteke „%s†nisu ispravno uÄitana.%i redaka datoteke „%s†nije ispravno uÄitano.%s format%s postavke%s format%s prijevod je uvezen.%s prijevoda su uvezena.%s prijevoda je uvezeno.&O aplikaciji&O aplikaciji Poedit&Primijeni&Natrag&Odustani&Ukloni&Zatvori&Kopiraj&IzbriÅ¡i&Gotovo, idi na sljedeći&Gotovo, idi na sljedeći&Uredi&Datoteka&PronaÄ‘i …&GNU gettext priruÄnik&GNU gettext priruÄnik&Idi&Grupiraj po sadržaju&Grupiraj po sadržaju&Pomoć&Nova&Nova …&Sljedeće >&Sljedeći prijevod&Sljedeći prijevod&Ne&U redu&Pomoć na internetu&Pomoć na internetu&Otvori …&Otvori …&Umetni&Postavke&Postavke …&Prethodni prijevod&Prethodni prijevod&Svojstva …&PoniÅ¡ti izbrisane prijevode&PoniÅ¡ti izbrisane prijevode&Zatvori&Ponovi&Zamijeni&Spremi&Spremi kao&Prikaži pojavljivanja koda&Prikaži pojavljivanja koda&Uvodni prozor&Uvodni prozor&Prijevod&PoniÅ¡tiPostavi &neprevedene izraze na vrhPostavi &neprevedene izraze na vrh&Aktualiziraj iz izvornog koda&Aktualiziraj iz izvornog koda&Provjeri prijevode&Provjeri prijevode&Prikaz&Da(Koristi zadani jezik)(nisi prijavljen/a)(potreban je Windows 8 ili noviji)< &PrethodnoO programu %sRaÄunRaÄuniDodajDodaj komentarDodaj datoteke …Dodaj mape …Dodaj projektDodaj zamjenski znak …Dodaj komentarDodaj mapu u popisDodaj datoteke …Dodaj mape …Dodaj projektDodaj zamjenski znak …Dodatne kljuÄne rijeÄiDodatne xgettext oznake:NaprednoNapredne postavke izdvajanja …Napredne postavke izdvajanjaNapredne postavke izdvajanja …Sve datoteke prijevodaSvi komentariSvi izraziTakoÄ‘er koristi zadane kljuÄne rijeÄi za podržane jezikeUvijek promijeni fokus na polje za unos tekstaDogodila se greÅ¡ka.Stavka na popisu ulaznih datoteka:Stavka na popisu kljuÄnih rijeÄi:Prikaz tekstaPrimijeniPribližna podudaranja s TM-omStvarno želiÅ¡ izbrisati izdvajaÄ â€ž%sâ€?Stvarno želiÅ¡ isprazniti prevodilaÄku memoriju?Automatski provjeri nadogradnjeAutomatski sastavi MO datoteku prilikom spremanjaNatragOsnovna putanja:Beta verzije sadrže najnovije funkcije i poboljÅ¡anja, ali mogu biti i nestabilnije.Postavi sve naprijedNeispravna PO datoteka: msgstr oblika množine koristi se bez msgid_pluralNeispravna PO datoteka: msgstr oblika jednine koristi se zajedno s msgid_pluralNeispravno oznaÄavanje u prijevodu.PregledajPretraži datotekeStandardno se preuzimaju i netoÄni izrazi, koji se oznaÄuju da zahtijevaju doradu. Odaberi ovu opciju za preuzimanje samo jednakih izraza.OdustaniPrekidanje …Nije moguće izraditi privremenu mapu.Nije moguće izvrÅ¡iti program: %sNepoznati jezik se ne može pretprevesti.Nije moguće unaprijed prevesti bez izvornog teksta.Pretvori u velika poÄetna slovaUpravljanje &katalozimaUpravljanje &katalozimaUpravljanje katalozimaPromijeni jezik suÄeljaKodna stranica:Provjeri dokument sadaProvjeri gramatiku i pravopisProvjeri pravopis tijekom tipkanjaProvjeri nadogradnje …Provjeri ima li greÅ¡aka u prijevoduProvjeri nadogradnje …Provjeri pravopisUkloniIsprazni izbornikUkloni prijevodIsprazni izbornikUkloni prijevodZatvoriOblakPojavljivanja kodaPojavljivanja kodaSuraÄ‘uj s drugim ljudima online.Skupljanje izvornih datoteka …Naredba za izdvajanje prijevoda:KomentarKomentar:Komentari s predznakom:Kompiliraj u MO …Kompiliraj u…Kompilirane datoteke prijevodaKonfiguriraj izdvajanje izvornog koda u svojstvima.PotvrdaPoveži Poedit s podržanim platformama lokalizacije za sinkroniziranje prijevoda.KopirajKopiraj iz jednineKopiraj iz izvornog tekstaKopiraj iz jednineKopiraj iz izvornog tekstaIspravi pravopis automatskiNeuspjelo preuzimanje detalja projekta Localazy.Nije moguće uÄitati datoteku, vjerojatno je oÅ¡tećena.Nije bilo moguće spremiti datoteku %s.Stvori novi prijevodIzradi novi prijevodIzradi novi prijevod iz POT predloÅ¡ka.Izradi novi prevodilaÄki projektCrowdin greÅ¡kaCrowdin je online platforma za upravljanje prevoÄ‘enjem i alat za suradniÄko prevoÄ‘enje. I mi koristimo Crowdin za prevoÄ‘enje Poedita na mnoge jezike i sviÄ‘a nam se.Izr&ežiPrilagoÄ‘eni izdvajaÄi:PrilagoÄ‘eni izdvajaÄi:Prilagodi alatnu traku …IzrežiVeliÄina baze podataka na disku:IzbriÅ¡iIzbriÅ¡i iz prevodilaÄke memorijeIzbriÅ¡i izdvajaÄIzbriÅ¡i iz prevodilaÄke memorijeIzbriÅ¡i projektIzbriÅ¡i komentarIzbriÅ¡i projektBrisanje projekta neće izbrisati nijednu prevodilaÄku datoteku.UtvrÄ‘ivanje razlika…Mape:ŽeliÅ¡ li izbrisati projekt „%sâ€?ŽeliÅ¡ li ponovo uÄitati datoteku s diska? Time ćeÅ¡ izgubiti sve nespremljene promjene u Poeditu.ŽeliÅ¡ li ukloniti sve prijevode koji su isti kao izvorni tekst?ŽeliÅ¡ li ukloniti sve prijevode koji se viÅ¡e ne koriste?&Nemoj spremitiNemoj spremitiNe prikazuj ponovoNe oznaÄuj jednake izraze, da zahtijevaju doraduNe prikazuj ponovoPreuzimanje najnovijih prijevoda…Preuzimanje prijevoda je deaktivirano u ovom projektu.Povuci mape ili datoteke ovamoPovuci mape ili datoteke ovamo&Izlaz&Izvezi u HTML …UrediUredi &komentarUredi &komentarUredi komentarUredi komentarUredi projektUredi projektUreÄ‘ivanjeUredi …E-adresa:Cjeloekranski prikazUnosi u ovoj datoteci nemaju isti broj oblika množine, kao Å¡to je zadano pravilom u zaglavlju datotekePostavi izraze s greÅ¡kama na vrhPostavi izraze s greÅ¡kama na vrhPrijevodi s greÅ¡kama oznaÄeni su crvenom bojom. Kad se takav prijevod odabere, prikazat će se detalji greÅ¡ke.GreÅ¡ka prilikom otvaranja datotekeGreÅ¡ka prilikom spremanja datotekeGreÅ¡ka kod uÄitavanja XLIFF datoteke: %sGreÅ¡ka: GreÅ¡keSveToÄna podudaranja s TM-omIskljuÄene putanjeIzvezi u TMX datoteku …Izvezi kao …Izvezi u HTML…Izvezi u TMX datoteku …Izvoz u HTMLNeuspio izvoz prevodilaÄke memorije u „%sâ€.Izvoz prijevoda …Izdvoji iz izvoraIzdvoji napomene za prevodioce iz:Izdvoji tekst iz izvornih datoteka u sljedećim mapama:Izdvajanje prevodivih izraza iz %s datoteke…Izdvajanje prevodivih izraza iz %s datoteka…Izdvajanje prevodivih izraza iz %s datoteka…Postavke izdvajaÄaIzdvajaÄiNeuspjela komunikacija s Poedit procesom.Izdvajanje nizova iz izvornog koda neuspjelo.Neuspjelo uÄitavanje datoteke s izdvojenim prijevodima.Spajanje gettext kataloga nije uspjelo.Neuspjelo aktualiziranje prevodilaÄke memorije: %sDatotekaDatoteka se ne može otvoritiDatoteka „%s†ne postoji.Datoteka „%s†nije prevodilaÄka datoteka.Datoteka „%s†je zaÅ¡tićena i ne może se spremiti. Spremi je pod drugim imenom.PronaÄ‘iPronaÄ‘i sljedećePronaÄ‘i prethodnoPronaÄ‘i i zamijeni …PronaÄ‘i u komentarimaPronaÄ‘i u izvornom tekstuPronaÄ‘i u prijevodimaPronaÄ‘i sljedećePronaÄ‘i prethodnoIspravi jezikIspravi jezikIspravi zaglavljeIspravi zaglavljeFlutter datoteke prijevodaOblik %iOblik %i (neupotrebljeno)GNU gettextOpćeHTML datotekePomoćSakrij boÄnu trakuSakrij traku stanjaSakrij ovu obavijestKako funkcionira sinkronizacija?IDAko nastaviÅ¡ s poniÅ¡tavanjem, svi prijevodi oznaÄeni kao izbrisani, bit će trajno uklonjeni. Morat ćeÅ¡ ih ponovno prevesti, ako se u budućnosti opet dodaju.Ako si prethodno odbio/la pristup datotekama, to možeÅ¡ dozvoliti u Postavke sustava > Sigurnost i privatnost > Privatnost > Datoteke i mape.Ako si prethodno odbio/la pristup datotekama, to možeÅ¡ dozvoliti u Postavke sustava > Sigurnost i privatnost > Privatnost > Datoteke i mape.ZanemariZanemari veliÄinu slovaUvezi iz TMX datoteke …Uvezi datoteke prijevoda …Uvezi iz TMX datoteke …Uvezi datoteke prijevoda …Uvoz iz “%sâ€â€¦Uvoz prijevodne memorije nije uspio.Uvoz prijevoda …U: %sUkljuÄi beta verzijeNedosljednost velikih/malih slovaNedosljednost bjelinePodaci prevodiocaInstalirajNevažeća datotekaPokretanje:ProblemProblemiJSON datoteke prijevodaZadržiNaziv jezika ili kodJezik prijevoda jednak je jeziku izvora.Jezik prijevoda nije postavljen.Jezik prijevoda:Odabir jezikaJeziÄna ekipa:Jezik:Posljednja izmjenaSaznaj viÅ¡e o gettext kljuÄnim rijeÄimaSaznaj viÅ¡e o oblicima množineSaznaj viÅ¡eViÅ¡e informacija o usluzi %sSaznaj viÅ¡e o CrowdinuSaznajte viÅ¡e o GNU gettextuRedakRedak %d u datoteci „%s†je oÅ¡tećen (%s podaci nisu valjani).Vrsta prijeloma:Popis datoteÄnih nastavaka, odvojeni toÄka-zarezom (npr. *.cpp;*.h):UÄitaj engleskiLocalazy je automatizirana platforma za lokalizaciju, koja svakome omogućuje jednostavno prevoÄ‘enje vlastitih proizvoda i sadržaja na viÅ¡e jezika.MO datoteke se ne mogu izravno ureÄ‘ivati u Poeditu.Pretvori u mala slovaPretvori u velika slovaIzradi novi prijevod iz ove POT datoteke.Nepravilno zaglavlje: „%sâ€Upravljaj raÄunimaUpravljaj spremiÅ¡tem …Spajanje razlika…UmanjiIme projekta, na koji se prijevod odnosiIme:S&ljedeći nedovrÅ¡eniS&ljedeći nedovrÅ¡eniZahtijeva doraduZahtijeva doraduMrežna greÅ¡ka: %s (%d)Nikad ne dopusti popisu izraza da preuzme fokus. Ako je ukljuÄeno, koristi CTRL + strelice za navigaciju. Tekst možeÅ¡ upisati i izravno u polje prijevoda, bez potrebe pritiskanja tabulatora za fokusiranje polja.NoviNova iz &POT/PO datoteke …Novi izraziNova iz &POT/PO datoteke …Novi izraziNovi nizovi za prijevod:Sljedeći oblik množineSljedeći oblik množineNeNema poklapanjaNema pretprijevoda za niti jedan izraz.U datoteci nisu navedeni podaci o pojavljivanjima ovog izraza u izvornom kodu.Nema poklapanjaNema problema s prijevodom.Nema prevoditeljskih projekata na tvom raÄunu.Nema informacija o koriÅ¡tenjuNisu prevedeni svi oblici množine.NemaÅ¡ potrebna prava. Prijavi se ponovo.Napomene za prevodioceU reduJedanUkljuÄi samo, ako vjerujeÅ¡ kvaliteti tvoje prevodilaÄke memorije. Svi preuzeti izrazi iz prevodilaÄke memorije oznaÄuju se s oznakom, da zahtijevaju doradu. Provjeri ih prije upotrebe.Preuzmi samo jednake izrazeOtvori prijevod u oblaku …Otvori nedavneOtvori i uredi prevodilaÄke datoteke.Otvori prijevod u oblakuOtvori prijevod u oblaku …Otvori datotekuOtvori u ureÄ‘ivaÄuOtvori u ureÄ‘ivaÄuOtvori nedavneOtvori referentnu datotekuOtvori …Otvori …OpcijeOstaloP&rethodni nedovrÅ¡eniP&rethodni nedovrÅ¡eniPO datoteke prijevodaPOT predloÅ¡ci prijevodaPOT datoteke su samo predloÅ¡ci i ne sadrže prijevode. Za prevoÄ‘enje, izradi novu PO datoteku na osnovi predloÅ¡ka.UmetniUmetni i uskladi stilPutanjeAktualizira sve datoteke projekta iz izvornog koda.Zabranjen pristup.Rezervirano mjesto „%s†nedostaje u prijevodu.Ispravnost rezerviranih mjestaUmjesto toga otvorite i uredite odgovarajuću PO datoteku. Kada je spremite, i MO datoteka će se ažurirati.Najprije spremi datoteku. Tek nakon toga možeÅ¡ ureÄ‘ivati ovaj odjeljak.MnožinaPrijevodi množineIzraz oblika množine koriÅ¡ten u datoteci nije uobiÄajen za %s.Oblici množine:PoeditPoedit – UpravljaÄ katalogaPoedit je automatski ispravio nevaljni sadržaj u datoteci „%sâ€.Poedit može pokuÅ¡ati popuniti nove izraze, samo iz prethodnih prijevoda u datoteci ili iz tvoje cjelokupne prevodilaÄke memorije. Upotreba prevodilaÄke memorije nije naroÄito efikasna, ukoliko je relativno prazna, no efikasnost raste koliÄinom tvojih prijevoda.Poedit ne može prikazati izvorni kod na mjestu na kojem se izraz koristi, jer datoteka nije dostupna na navedenom mjestu ili je se radi o simboliÄnoj referenci koja ne upućuje na stvarnu datoteku.Poedit je jednostavan program za ureÄ‘ivanje prijevoda.Poedit „%s†nije uspio otvoriti datoteku.Pret&prevedi …PretprevediPretprevedenoPretpreveden je %u izrazPretprevedena su %u izrazaPretprevedeno je %u izrazaPretprevoÄ‘enje pomoću prevodilaÄke memorije …PretprevoÄ‘enje …PretprevoÄ‘enje automatski pronalazi i preuzima jednake ili približno jednake izraze za neprevedene prijevode iz prevodilaÄke memorije.Predhodni prijevod zahtijeva da je izvorni tekst dostupan. Ne funkcionira ako se koriste samo ID-ovi bez stvarnog teksta.PretprevoÄ‘enje zahtijeva poznavanje jezika izvornog teksta. Poedit ga nije mogao otkriti u ovoj datoteci.PostavkePostavke …Postavke …Pripremanje izraza …Zadrži formatiranje postojećih datotekaPrethodni oblik množinePrethodni oblik množinePrijaÅ¡nji izvorni tekstPrethodno promijenjenoPrethodno promijenjenoIme i verzija projekta:Ime projekta:Projekt:ProjektiProvjere interpunkcijePoniÅ¡tiPoniÅ¡ti izbrisane prijevodeZatvoriNeuspjelo Äitanje sadržaja datoteke. GreÅ¡ka: %sNedavno koriÅ¡tene datotekePonoviOsvježiPonovo uÄitaj datotekuPonovo uÄitaj datotekuPreostalo: %dUkloniUkloni prijevode koji su isti kao izvorUkloni prijevode koji su isti kao izvorUklonjeni izraziUklonjeni izraziUklonjeni nizovi (viÅ¡e se ne koriste):ZamijeniZamijeni &sveZamijeni &sveZamjenski izrazZamijeni …Nedostaje obavezno pravilo za oblike množine u zaglavlju.IsprazniIsprazni prevodilaÄku memorijuPražnjenjem prevodilaÄke memorije, briÅ¡u se svi spremljeni prijevodi. Ovaj korak je nepovrativ.Prikaži u FinderuPregledajSpremiSpremi k&ao…Spremi k&ao…Svejedno spremiSvejedno spremiSpremi kaoSpremi kao …Spremi promjeneSpremi datotekuSpremanje na drugu lokaciju nije podržano za XCLOC datoteke.Snimke zaslona:Odaberi &sveOdaberi sveOdaberi TMX datoteke za izvozOdaberi mapuOdaberi prevodilaÄku datotekuOdaberi datoteke prijevoda za uvozOdaberi prevodilaÄki predložakOdaberi željeni jezikPostavi jezikPostavi jezikPostavkePostavke …Prikaži boÄnu trakuPrikaži pravopis i gramatikuPrikaži traku stanjaPrikaži &ID izrazaPrikaži zamjenePrikaži alatnu trakuPrikaži upozorenjaPrikaži u pretraživaÄuPrikaži u mapiPrikaži ili sakrij boÄnu trakuPrikaži boÄnu trakuPrikaži statusnu trakuPrikaži &ID izrazaPrikaži upozorenjaBoÄna trakaPrijavi seOdjavi sePrijavi sePrijavi se na %sPrijavi se na raÄun oblakaPrijavi se na CrowdinPrijavi se na raÄun oblakaOdjavi seJedninaPametno kopiranje/umetanjePametne crticePametne poveznicePametni navodniciRazvrstaj po redoslijedu &datotekeRazvrstaj po &izvornom tekstuRazvrstaj po &prijevoduRazvrstaj po redoslijedu &datotekeRazvrstaj po &izvornom tekstuRazvrstaj po &prijevoduKodna stranica izvornog koda:IzdvajaÄi izvornog koda koriste se za pronalaženje i izdvajanje prevodivih izraza u datotekama izvornog koda kako bi se mogli prevesti.Izvorni kod nije dostupan.Izvorni kod nije pronaÄ‘enIzvorni tekstID izvornog tekstaIzvorni tekst — %sKljuÄne rijeÄi izvoraPutanje do izvoraKljuÄne rijeÄi izvoraPutanje do izvoraGovorProvjera pravopisa je deaktivirana, jer %s rjeÄnik nije instaliran.Pravopis i gramatikaZapoÄni s govoromPrekini s govoromSpremljeni prijevodi:Kontekst stringa: %sIdentifikator stringa: %sBroj znakova izrazaBroj znakova izraza: prijevod | izvorTraženi izrazNisu podržani Crowdin projekti temeljeni na nizovima.ZamjenePrijedloziPrijedlozi nisu dostupni, ako jezik prijevoda nije ispravno postavljen. Druge funkcije, kao Å¡to su oblici množine, takoÄ‘er ovise o tome.SuviÅ¡no rezervirano mjesto „%s†koje nije u izvornom tekstu.Podržava sve programske jezike, koje GNU gettext alati prepoznaju (PHP, C/C++, C#, Perl, Python, Java, JavaScript, i dr.).SinkronizirajSinkronizacija s CrowdinomSinkroniziraj prijevod s CrowdinomSinkronizacijaGreÅ¡ka prilikom sinkronizacijeSinkronizacija s Crowdinom nije uspjela.SintaktiÄka greÅ¡ka u pravilu za oblike množine („%s“).PMTMX datotekePreuzmi prevodive izraze iz postojećeg POT predloÅ¡ka.Ime ekipe, email adresa ili URLZamjena tekstaPrevodilaÄka memorija ne sadrži izraze, koji sliÄe sadržaju ove datoteke. Poluautomatsko prevoÄ‘enje će biti moguće, tek nakon Å¡to Poedit dovoljno nauÄi na osnovi tvojih vlastitih prijevoda.Nevaljani oblik TMX datoteke.Ako spremiÅ¡, izgubit ćeÅ¡ sve promjene koje su uraÄ‘ene s drugim programom.Datoteka se ne može kompilirati u MO format i koristiti.Datoteka je sadržavala duple izraze, Å¡to nije dozvoljeno u PO datotekama, te bi vjerojatno onemogućilo njenu upotrebu. Poedit je to ispravio. Ipak provjeri sve prijevode koji su oznaÄeni da zahtijevaju doradu, te ih ispravi, ako je potrebno.Nije bilo moguće spremiti datoteku s kodnom stranicom „%sâ€, kako je odreÄ‘eno u svojstvima prijevoda. Spremljena je u formatu UTF-8, a postavka je promijenjena shodno tome.Datoteka je promijenjena. ŽeliÅ¡ li spremiti promjene?Datoteka je u formatu koji je nepoznat Poedit-u.Datoteka je kompilirana u MO formatu, ali vjerojatno neće ispravno raditi.Datoteka je sigurno spremljena i kompilirana u MO format, ali vjerojatno neće ispravno raditi.Datoteka je sigurno spremljena, ali se ne može kompilirati u MO format, niti koristiti.Datoteka je sigurno spremljena.Datoteku „%s“ nije moguće otvoriti.Datoteka “%s†nije mogla biti spremljena.Datoteka „%s†je promijenjena s jednim drugim programom.PrijaÅ¡nji izvorni tekst (prije nego Å¡to je promijenjen prilikom aktualiziranja), koji odgovara sada netoÄnom prijevodu.Najjednostavniji naÄin za popunjavanje ove datoteke s prijevodima je putem aktualiziranja datoteke pomoću POT datoteke:Prijevod ne zapoÄinje razmakom.Prijevod zavrÅ¡ava s prijelomom retka, no izvorni tekst ne.Prijevod zavrÅ¡ava s razmakom, no izvorni tekst ne.Prijevod zavrÅ¡ava sa „%sâ€, no izvorni tekst zavrÅ¡ava sa „%sâ€.Prijevodu na kraju nedostaje prijelom retka.Prijevodu na kraju nedostaje razmak.Prijevod je spreman za upotrebu, ali %d izraz joÅ¡ nije preveden.Prijevod je spreman za upotrebu, ali %d izraza joÅ¡ nisu prevedena.Prijevod je spreman za upotrebu, ali %d izraza joÅ¡ nije prevedeno.Prijevod je spreman za upotrebu.Prijevod bi trebao zavrÅ¡iti sa „%sâ€.Prijevod ne bi trebao zavrÅ¡iti sa „%sâ€.Prijevod bi trebao zapoÄeti velikim slovom.Prijevod bi trebao zapoÄeti malim slovom.Prijevod zapoÄinje razmakom, no izvorni tekst ne.Prijevodi su oznaÄeni da zahtijevaju doradu, jer možda nisu ispravni. Provjeri ispravnost prijevoda.Nema prijevoda. To je neobiÄno.Problem prilikom formatiranja datoteke (datoteka je ipak ispravno spremljena).Dogodila se greÅ¡ka prilikom prijenosa prijevoda na Localazy.DoÅ¡lo je do greÅ¡aka prilikom uÄitavanja datoteke. Zbog toga neki podaci možda nedostaju ili su oÅ¡tećeni.Ove postavke utjeÄu na unutarnje formatiranje PO datoteka. Podesi ih, ako imaÅ¡ posebne zahtjeve, npr. zbog kontrole verzija.Ova JSON datoteka nije prijevod i Poedit je ne može ureÄ‘ivati.Ova će radnja izbrisati sve prijevode koji su isti kao izvorni tekst. Ovo je nepovratna radnja.Ova datoteka sadrži prijevode s oblicima množine, ali pravilo za oblike množine nije zadano u zaglavlju.Ova datoteka koristi stringove ID-ove umjesto izvornog teksta. Poedit može za vas uÄitati tekst iz datoteke "%s.Ova se naredba koristi za pokretanje izdvajaÄa. %o preuzima ime izlazne datoteke, %K popis kljuÄnih rijeÄi, %F popis ulaznih datoteka, %C oznaku kodne stranice (vidi ispod).Ovaj je izraz naÄ‘en u prevodilaÄkoj memoriji Poedita.Ovo će biti dodano u naredbenom retku, samo ako je zadana kodna stranica izvornog koda. %c preuzima njenu vrijednost.Ovo će se dodati naredbenom retku jednom za svaku ulaznu datoteku. %f preuzima ime datoteke.Ovo će biti dodano u naredbenom retku svakoj kljuÄnoj rijeÄi. %k preuzima kljuÄnu rijeÄ.UkupnoTransformacijePrevodivi unosi ne dodaju se ruÄno u sustavu Gettext, već se automatski izdvajaju iz izvornog koda. Na taj naÄin ostaju ažurni i toÄni. Prevoditelji obiÄno koriste datoteke PO predložaka (POTs) koje je za njih pripremio programer.Prevedi projekt u oblakuPrevedeno: %d od %d (%d %%)PrijevodJezik prijevodaPrevodilaÄka memorijaPrijevod zahtijeva &doraduSvojstva prijevodaDatoteka prijevoda je već ažurirana, nisu napravljene nikakve izmjene nizova.Prijevodna datoteka ažurirana je s %s promjenom.Prijevodna datoteka ažurirana je s %s promjene.Prijevodna datoteka ažurirana je s %s promjena.Baza podataka prevodilaÄke memorije je oÅ¡tećena: %s (%d).GreÅ¡ka prevodilaÄke memorije: %s (%d).Prijevod zahtijeva &doraduSvojstva prijevodaPrijedlozi za prijevodPrijedlozi prijevoda zahtijevaju da je izvorni tekst dostupan. Ne rade ako se koriste samo ID-ovi bez stvarnog teksta.Prijedlozi za prijevod zahtijevaju da je jezik izvornog teksta poznat. Poedit ga nije mogao otkriti u ovoj datoteci.Prijevod — %sNije bilo moguće ažurirati prijevode iz izvornog koda, jer nije pronaÄ‘en kod na mjestu koje je odreÄ‘eno u svojstvima datoteke.DvaUTF-8 (preporuÄeno)PoniÅ¡tiNeoÄekivano nedostaje sadržaj u XCLOC datoteci.Dogodila se neobradiva iznimka: %sUnix (preporuÄeno)Nepoznata Crowdin greÅ¡ka.Nepoznata greÅ¡kaNeprevedenoAktualizirajAžuriraj sažetakAktualiziraj sveAktualiziraj sve kataloge u projektuAktualizirati sve kataloge u projektu?Aktualiziraj iz &POT datoteke…Aktualiziraj iz &POT datoteke…Aktualiziraj iz kodaAktualiziraj iz POT datotekeAktualiziraj iz kodaAktualiziraj iz izvornog kodaAžuriraj sažetakNadogradnjeAktualiziranje nije uspjeloAžuriranje kataloga projekataAžuriranje prijevodaAžuriranje podataka korisnika…Prijenos prijevoda na %s nije uspio.Prijenos prijevoda na %s…PrenoÅ¡enje prijevoda…Koristi prilagoÄ‘eno praviloPrilagodi font za izraze:Prilagodi font za prijevode:Koristi standardna pravila za ovaj jezikKoristi ove kljuÄne rijeÄi (imena funkcija) za prepoznavanje prevodivih izraza u izvornim datotekama:Koristi prevodilaÄku memorijuProvjeriRezultati provjereVerzija %sVidi pojedinosti…Vidi pojedinosti…Čekanje na autenitifikaciju …Upozorenje: DobrodoÅ¡li u Poedit!Prilikom aktualiziranja iz izvoraSamo cijele rijeÄiProzorWindowsŽelite li koristiti engleski izvorni tekst?BeskonaÄna pretragaPrijelom pri:XLIFF datoteke prijevodaXcode katalog lokalizacijeDaPrevodive izraze možeÅ¡ izdvojiti neposredno iz izvornog koda:Ne možeÅ¡ povući viÅ¡e od jedne datoteke u Poedit prozor.NemaÅ¡ dozvolu za Äitanje datoteka izvornog koda s mjesta koje je odreÄ‘eno u svojstvima datoteke.Za primjenu promjene, ponovo pokreni Poedit.Tvoje imeAko ih ne spremiÅ¡, izgubit ćeÅ¡ promjene.Tvoje ime i e-adresa koriste se samo za postavljanje zadnjeg prevodioca (Last-Translator) u zaglavlju GNU gettext datoteka.NulaPovećajZahtijeva doradunemoj izbrisati privremene datoteke (služe za uklanjanje greÅ¡aka)npr. nplurals=2; plural=(n > 1);greÅ¡ka: koristi sliÄne prijevode iz datotekeidi na stavku u odreÄ‘enom retkuobradi poedit:// URIAlt+Ctrl+DoljeEnterLijevoDesnoShift+GorealtctrlshiftO programu %sSakrij %sSakrij ostaloPostavke...Zatvori %sUslugePrikaži svepretprevedi pomoću prevodilaÄke memorijenepoznat jeziknepodržana verzija (%s)upozorenje: tvojeime@primjer.com„%s†nije valjana POT datoteka.poedit-3.6.3/locales/fi.mo0000644000175100001660000017014115011674363011060 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-¨O ø‘’/’E’6[’’’)¨’)Ò’Rü’JO“gš“ ”” ”0)”Z”c”x” ”‹” ””Ÿ”¦”®”¶”ʔޔ ç”ñ”ú”•*•2•N•j•p•v• •‹• •µ•¹•½•̕ەä•í• õ• ––$–:–!K–!m––—–¦– ®–¸–Ë–é– — — #—/—6—R—n—ˆ—¢—¹—ЗÙ—á—ù—! ˜ ,˜ 9˜D˜Z˜_˜e˜m˜˜•˜ª˜»˜Ô˜æ˜ý˜™(™9™R™b™€™™«™Ä™à™û™ š2š'Ršzš#Šš®šÇšÏš*ך,›0/›%`›5†›¼› Å›kÑ›=œVNœ`¥œ&-3§Dìô!ž%ž2Ež:xž³žÆžÛžðžŸ $Ÿ/Ÿ,GŸ+tŸ Ÿ¶ŸÕŸëŸ     5 G \ b h } $’ · .×  ¡ ¡¡8¡ M¡W¡1u¡ §¡r±¡$¢+¢>¢V¢i¢&¢+¨¢>Ô¢ £4£=£!Q£s£ £¼£Z¤c¤x¤¤§¤¯¤ʤѤ ì¤ú¤¥%¥6¥5F¥|¥’¥$›¥pÀ¥G1¦Iy¦æÓ¦â¦3÷¦+§"@§Bc§&¦§&ͧô§ü§¨¨0¨D¨W¨j¨|¨ލ —¨ ¢¨°¨`̨-©K©‰i©ó©ª%/ªUª]ªeª'lª”ª¦ª¼ª̪ãªùª7«H«d«.y«@¨«sé«]¬p¬3y¬,­¬GÚ¬."­,Q­~­‡­#ž­,­Yï­I® N®\®k®}®Ž®¥® »®É® Ø® å® ò® ¯¯*¯3¯ N¯Z¯b¯q¯v¯‰¯š¯²¯Ò¯»Õ¯¨‘°®:±é±ï± ²!²=²T²p²&Œ²³² ͲÚ²(ö²!³A³Z³a³ w³³‰³’³«³±³-dz&õ³´1´@´Q´X´$j´´ ­´¹´Ô´í´ µHµ YµIgµ±µ˜Àµ1Y¶‹¶ ¶,µ¶#â¶· ·#· C·6M·„·Š·£·¼·Ë·Ú·ï·ò¸÷¸¹%¹ A¹#O¹s¹‰¹Ÿ¹¢¹)º¹Jä¹/º'Gº'oº—º*ªº#Õºùº»»¦»#Ļ軼%¼9¼N¼ f¼t¼„¼”¼§¼º¼¼ʼÓ¼ؼò¼ ½#½8½Ö½Þ½÷½Fý½ D¾'R¾z¾g’¾@ú¾;¿C¿Ha¿ª¿¹¿À¿JÝ¿(ÀÃ/Á/óÁ1#ÂU fÂsÂ7‚Â(ºÂãÂøÂšˆÃw#Ä ›Ä ¥Ä ²Ä¿Ä/ÚÄ Å!Å8ÅLÅ]ÅnňŠ˜Å ¢Å¬ÅÄÅ ÍÅîÅ*õÅ Æ 8Æ FÆPÆiƂƑÆ*˜Æ*ÃÆîÆÇ.ÇIÇPÇ_ÇnÇ ~Ç'‰Ç ±Ç»Ç†ÖÇ]È pÈ}ȆȜȲÈÁÈÐÈâÈ÷È É6ÉSÉeÉuɄɣɲÉ$ÍÉòÉ Ê %Ê 1Ê =Ê GÊTÊ$gÊŒÊÊ·ÊÊÊßÊóÊË Ë?ËRËcË}Ë ‘ËœË ¥Ë³Ë¼ËÒËèËüË Ì Ì)ÌIÌaÌtÌ,ŽÌ»Ì ×Ì(øÌ!Í =Í^Í¡vÍ$Î=Î TÎaÎrΆΜέÎÃÎÔÎbÙÎ<ÏYÏjÏ{ϖϰÏÉÏ.ãÏÐ.%Ð TÐ _ПjÐ9 ÑuDÑ ºÑÄÑ ÙÑ úÑÒ%Ò4@ÒuÒ |ÒHŠÒ)ÓÒýÒõ ÓÔBÔ?aÔû¡Ô²Õ4PÖ.…ÖL´Ök×_m×%Í×ó×"Ø05ØfØcæØ#JÙ<nÙ=«ÙFéÙ*0Ú+[Ú•‡ÚÛ+;Û.gÛ'–Û1¾Û;ðÛŠ,Ü'·ÜEßÜ0%ÝoVÝ™ÆÝU`Þu¶Þ^,ß“‹ß·à3×àp ád|á`áá Bâ LâWâfã~ã ™ã¤ã¸ãÉãçãLäaOä5±ä!çä å'åBå£Wåwûås憅æ çç%ç1+ç']ç…ç—ç±ç Âç Íç×çïç$è-%èSèqèè¨èÂèÛèôè éé"0éSé$qé2–é+Ééõéê-ê<ê)Sêl}êêêë ë !ë+ë=ëOë gërë‡ë¥ë»ëÂë6Êë ììì1ìLìBSì2–ìtÉìJ>í‰í.íp¿í0î6î=î:Mî!ˆîªî1²î)äîï*ï/ï5ï>ïDïJïPï Xïbïfïkïrï ˆï ’ï žï «ïµï¾ï Íïîïÿï ð ð)7ð|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-13 10:16 Last-Translator: Language-Team: Finnish Language: fi_FI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: fi X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (muokattu) (tallentamaton)%d esiintymä koodissa%d esiintymää koodissa%d viesti%d viestiä%d kohta esikäännettiin.%d kohtaa esikäännettiin.%d virhe%d virhettä%d virhe tapahtui.%d virhettä tapahtui.%d virhe tapahtui:%d virhettä tapahtui:Lähdeteksteissä havaittiin %d ongelma.Lähdeteksteissä havaittiin %d ongelmaa.Käännöksestä löytyi %d ongelma.Käännöksestä löytyi %d ongelmaa.%i rivi tiedostosta â€%s†ei latautunut oikein.%i riviä tiedostosta â€%s†ei latautunut oikein.%s-muotoilu%sin asetukset%s-muotoilu%s käännös tuotiin.%s käännöstä tuotiin.&Tietoja&Tietoja Poeditistä&Käytä&Takaisin&Peruuta&Tyhjennä&Sulje&Kopioi&Poista&Valmis ja seuraava&Valmis ja seuraava&Muokkaa&Tiedosto&Etsi…&GNU gettextin manuaali&GNU gettextin manuaali&Siirry&Ryhmittele konteksteittain&Ryhmittele konteksteittain&Ohje&Uusi&Uusi…&Seuraava >&Seuraava käännös&Seuraava käännös&Ei&Ok&Ohje verkossa&Ohje verkossa&Avaa...&Avaa…L&iitäA&setukset&Asetukset…&Edellinen käännös&Edellinen käännösOm&inaisuudet…P&uhdista poistetut käännöksetP&uhdista poistetut käännökset&Lopeta&Tee uudelleen&KorvaaTa&llennaT&allenna nimellä&Näytä esiintymät koodissa&Näytä esiintymät koodissaAloitusikkunaAloitusikkuna&KäännösK&umoaKääntämättö&mät ensinKääntämättö&mät ensin&Päivitä lähdekoodista&Päivitä lähdekoodista&Validoi käännökset&Validoi käännökset&NäytäK&yllä(Käytä oletuskieltä)(ei kirjautunut)(vaatii Windows 8:n tai uudemman)< &EdellinenTietoja %s-ohjelmastaTiliTilitLisääLisää kommenttiLisää tiedostoja…Lisää kansioita…Lisää projektiLisää korvausmerkki…Lisää kommenttiLisää kansio listaanLisää tiedostoja…Lisää kansioita…Lisää projektiLisää korvausmerkki…LisäavainsanatLisävalitsimet xgettextille:LisäasetuksetPoiminnan lisäasetukset…Poiminnan lisäasetuksetPoiminnan lisäasetukset…Kaikki käännöstiedostotKaikki kommentitKaikki merkkijonotKäytä myös oletusavainsanoja tuetuille kielilleKohdista aina tekstinsyöttökenttäänTapahtui virhe.Kohde syöttötiedostojen listassa:Kohde avainsanalistassa:UlkoasuKäytäLäheiset vastaavuudet käännösmuististaHaluatko varmasti poistaa “%s“-poimimen?Haluatko varmasti tyhjentää käännösmuistin?Tarkista päivitykset automaattisestiMuunna automaattisesti MO-tiedostoksi tallennettaessaTakaisinKantapolku:Beta-versiot sisältävät uusimmat ominaisuudet ja parannukset, mutta saattavat olla hieman epävakaampia.Tuo kaikki eteenRikkinäinen PO-tiedosto: monikkomuotoista msgstr:ää käytetty ilman msgid_plural:iaRikkinäinen PO-tiedosto: yksikkomuotoista msgstr:ää käytetty yhdessä msgid_plural:in kanssaKäännöstekstissä on merkkausvirhe.SelaaSelaa tiedostojaOletusarvoisesti myös epätarkat tulokset sisällytetään, mutta merkitään keskeneräisiksi. Valitse tämä, jos haluat sisällyttää vain täydelliset vastineet.PeruutaPeruutetaan…Tilapäiskansiota ei voida luoda.Ei voida suorittaa ohjelmaa: %sEi voida esikääntää tuntemattomalta kieleltä.Esikääntäminen ei ole mahdollista ilman lähdetekstiä.Isot alkukirjaimetKatalo&gien hallintaKatalo&gien hallintaKatalogien hallintaVaihda käyttöliittymän kieliMerkistö:Tarkista dokumentti nytTarkista kielioppi oikeinkirjoituksen ohellaTarkista oikeinkirjoitus näppäilyn aikanaEtsi päivityksiä…Tarkasta käännöksen virheetEtsi päivityksiä…Tarkista oikeinkirjoitusTyhjennäTyhjennä valikkoTyhjennä käännösTyhjennä valikkoTyhjennä käännösSuljePilviEsiintymät koodissaEsiintymät koodissaTyöskentele verkossa muiden kanssa.Kerätään lähdetiedostoja…Komento käännettävien tekstien poimimiseen:KommenttiKommentti:Kommentit, joiden alussa on:Muunna MO-muotoon…Muunna…Muunnetut käännöstiedostotKonfiguroi lähdekoodista poimiminen asetuksissa.VahvistusYhdistä Poedit tuettuihin pilvilokalisointialustoihin käännösten saumatonta synkronointia ja hallintaa varten.KopioiKopioi yksiköstäKopioi lähdetekstistäKopioi yksiköstäKopioi lähdetekstistäKorjaa oikeinkirjoitus automaattisestiLocalazy-projektin tietoja ei voitu ladata.Tiedostoa ei voitu ladata. Se on todennäköisesti vioittunut.Tiedostoa %s ei voitu tallentaa.Luo uusiLuo uusi käännösLuo uusi käännös POT-pohjasta.Luo uusi käännösprojektiCrowdin-virheCrowdin on online käännösten hallinta-alusta ja yhteistyössä toimiva käännöstyökalu. Hyödynnämme itse Crowdiniä Poeditin käännöksessä useille kielille, ja rakastamme sitä.&LeikkaaMukautetut poimimet:Mukautetut poimimet:Mukauta työkaluriviä…LeikkaaTietokannan koko levyllä:PoistaPoista käännösmuististaPoista poiminPoista käännösmuististaPoista projektiPoista kommenttiPoista projektiProjektin poistaminen ei poista käännöstiedostoja.Tunnistetaan eroja…Kansiot:Haluatko poistaa â€%sâ€-projektin?Haluatko ladata tiedoston uudelleen levyltä? Poeditin tallentamattomat muokkaukset menetetään, jos teet niin.Haluatko todella poistaa kaikki lähdetekstiä vastaavat käännökset?Haluatko todella poistaa kaikki käännökset, joita ei enää käytetä?&Älä tallennaÄlä tallennaÄlä näytä enääÄlä merkitse tarkkoja vastineita keskeneräisiksiÄlä näytä enääLadataan uusimmat käännökset…Käännösten lataus on poistettu käytöstä tässä projektissa.Vedä kansioita tai tiedostoja tähänVedä kansioita tai tiedostoja tähän&LopetaV&ie HTML-tiedostoon…MuokkaaMuokkaa &kommenttiaMuokkaa &kommenttiaMuokkaa kommenttiaMuokkaa kommenttiaMuokkaa projektiaMuokkaa projektiaMuokkausMuokkaa…Sähköposti:Siirry koko näytön tilaanTämän tiedoston viesteillä on eri määrä monikkomuotoja kuin sen Plural-Forms-otsake kertooVirheitä sisältävät ensinVirheitä sisältävät ensinVirheelliset viestit on merkitty listassa punaisella värillä. Tällaisen viestin valitsemalla näytetään tarkemmat tiedot virheestä.Virhe tiedoston avaamisessaVirhe tallennettaessa tiedostoaVirhe ladattaessa XLIF-tiedostoa: %s.Virhe: VirheetKaikkiTarkat vastaavuudet käännösmuististaOhitettavat polutVie TMX-tiedostoon…Vie nimellä…Vie HTML-tiedostoon…Vie TMX-tiedostoon…Vienti HTML-tiedostoonKäännösmuistin vienti polkuun â€%s†epäonnistui.Viedään käännöksiä…Poimi lähdekoodistaPoimi huomautukset kääntäjille lähteestä:Pura tekstit lähdekoodeista, jotka ovat seuraavissa kansioissa:Poimitaan käännettäviä merkkijonoja %s tiedostosta…Poimitaan käännettäviä merkkijonoja %s tiedostosta…Poimimen asetuksetPoimimetKommunikointi Poedit-prosessin kanssa epäonnistui.Merkkijonoja ei voitu poimia lähdekoodista.Poimitut käännökset sisältävän tiedoston lataaminen epäonnistui.Gettext-katalogien yhdistäminen epäonnistui.Käännösmuistin päivitys epäonnistui: %sTiedostoTiedostoa ei voi avataTiedostoa â€%s†ei ole olemassa.Tiedosto â€%s†ei ole käännöstiedosto.Tiedostoa â€%s†voidaan vain lukea, mutta ei tallentaa. Tallenna se toisella nimellä.EtsiEtsi seuraavaEtsi edellinenEtsi ja korvaa…Hae kommenteistaEtsi lähdeteksteistäEtsi käännöksistäEtsi seuraavaEtsi edellinenKorjaa kieliKorjaa kieliKorjaa otsakeKorjaa otsakeFlutter-käännöstiedostotMuoto %iMuoto %i (käyttämätön)GNU gettextYleisetHTML-tiedostotOhjePiilota sivupalkkiPiilota tilariviPiilota tämä ilmoitusMiten pilvisynkronointi toimii?IDJos teet puhdistuksen, kaikki poistetuiksi merkityt käännökset hävitetään lopullisesti. Jos samat alkutekstit tulevaisuudessa palaavat käyttöön, ne täytyy kääntää uudelleen.Mikäli olet aikaisemmin estänyt pääsyn tiedostoihisi, voit sallia sen kohdasta Järjestelmäasetukset > Suojaus ja yksityisyys > Yksityisyys > Tiedostot ja kansiot.Mikäli olet aiemmin estänyt tiedostoidesi käyttöoikeuden, voit myöntää sen Järjestelmäasetusten kohdasta Suojaus ja yksityisyys > Yksityisyys > Tiedostot ja kansiot.OhitaÄlä huomioi kirjainkokoaTuo TMX-tiedostosta…Tuo käännöstiedostoja…Tuo TMX-tiedostosta…Tuo käännöstiedostoja…Tuodaan lähteestä "%s"…Käännösmuistin tuonti epäonnistui.Tuodaan käännöksiä…Tiedosto: %sTarkista myös beta-versiotEpäjohdonmukaiset isot/pienet kirjaimetEpäjohdonmukaisia tyhjemerkkejäTietoja kääntäjästäAsennaVirheellinen tiedostoSuoritus:OngelmaOngelmatJSON-käännöstiedostotPidäKielen nimi tai koodiKäännöksen kieli on sama kuin lähdekieli.Käännöksen kieltä ei ole asetettu.Käännöksen kieli:Kielen valintaKäännöstiimi:Kieli:Muokattu viimeksiLisätietoja Gettextin avainsanoistaLisätietoja monikkomuodoistaLue lisääLisätietoja palvelusta %sLisätietoja CrowdinistaLisätietoja GNU gettextistäRiviRivi %d tiedostossa â€%s†on vioittunut (%s-data ei ole kelvollista).Rivinvaihdot:Lista tiedostopäätteistä eroteltuna puolipisteillä (esim. *.cpp;*.h):Lataa englantiLocalazy on erittäin automatisoitu lokalisointialusta, jonka avulla kuka tahansa voi kääntää tuotteensa ja sisällönsä useille kielille helposti.MO-tiedostoja ei voi suoraan muokata Poeditillä.Muuta pienaakkosiksiMuuta suuraakkosiksiLuo uusi käännös tästä POT-tiedostosta.Vääränmuotoinen otsake: â€%sâ€Hallitse tilejäHallitse…Yhdistetään eroavaisuuksia…PienennäProjektin nimi, jolle tämä käännös on tarkoitettuNimi:Se&uraava keskeneräinenSe&uraava keskeneräinenKeskeneräinenKeskeneräinenVerkkovirhe: %s (%d)Älä koskaan kohdista tekstilistaan. Jos tämä on käytössä, siirtymiseen täytyy käyttää Ctrl-nuolia näppäimistöä käytettäessä, mutta toisaalta tekstiä voi kirjoittaa välittömästi ilman tarvetta painaa sarkainta kohdistuksen vaihtamiseksi.UusiUusi &POT/PO-tiedostosta…Uudet merkkijonotUusi &POT/PO-tiedostosta…Uudet tekstitUudet käännettävät merkkijonot:Seuraava monikkomuotoSeuraava monikkomuotoEiVastaavuuksia ei löydyYhtään kohtaan ei voitu esikääntää.Tiedosto ei sisällä tietoa tämän tekstin esiintymistä lähdekoodissa.Vastaavuuksia ei löydyKäännöksestä ei löytynyt ongelmia.Tililläsi ei ole käännösprojekteja.Ei käyttötietojaKaikkia monikkomuotoja ei ole käännetty.Ei valtuutusta; kirjaudu uudelleen.Huomautukset kääntäjilleOKYksiOta käyttöön vain, jos luotat käännösmuistin laatuun. Muussa tapauksessa kaikki täsmäävyydet merkitään vajaiksi ja ne on syytä tarkistaa ennen käyttöä.Täytä vain tarkat täsmäävyydetAvaa pilvikäännös…Avaa äskettäinenAvaa ja muokkaa käännöstiedostoja.Avaa pilvikäännösAvaa pilvikäännös…Avaa tiedostoAvaa editorissaAvaa editorissaAvaa äskettäinenAvaa viitetiedostoAvaa...Avaa…ValinnatMuutE&dellinen keskeneräinenE&dellinen keskeneräinenPO-käännöstiedostotPOT-käännöspohjatPOT-tiedostot ovat pelkkiä käännöspohjia, eivätkä itse sisällä käännöksiä. Tee käännös luomalla uusi PO-tiedosto käännöspohjan perusteella.SijoitaLiitä ja sovita tyyliinPolutSuorittaa päivityksen lähdekoodista kaikille projektin tiedostoille.Lupa evätty.Käännöksestä puuttuu muuttuja "%s".Muuttujien oikeellisuusAvaa ja muokkaa sen sijaan vastaavaa PO-tiedostoa. Kun se tallennetaan, MO-tiedosto päivittyy samalla.Tallenna tiedosto ensin. Tätä osaa ei voi muokata sitä ennen.MonikkoMonikkomuotojen käännöksetTiedostossa käytetty monikkomuotolauseke on epätavallinen kielelle %s.Monikkomuodot:PoeditPoedit - Katalogien hallintaPoedit korjasi automaattisesti tiedoston â€%s†virheellisen sisällön.Poedit voi yrittää täyttää uudet viestit vain tiedoston aiempien käännösten pohjalta tai koko käännösmuistista. Lähes tyhjän käännösmuistin käyttö ei ole kovinkaan hyödyllistä, mutta uusien käännösten lisäämisen myötä toiminta paranee.Poedit ei voi näyttää lähdekoodia, jossa tekstiä käytetään, koska tiedosto ei joko ole saatavilla viitatussa paikassa tai se on symbolinen viittaus, joka ei osoita todelliseen tiedostoon.Poedit on helppokäyttöinen käännöseditori.Poedit ei onnistunut avaamaan tiedostoa â€%sâ€.Esi&käännä…EsikäännäEsikäännettyEsikäännettiin %u tekstiEsikäännettiin %u tekstiäEsikäännetään käännösmuistista…Esikäännetään…Esikääntäminen etsii kääntämättömille teksteille tarkasti tai osittain täsmäävät käännökset käännösmuistista automaattisesti.Esikäännös edellyttää, että varsinainen lähdeteksti on käytettävissä. Se ei toimi, jos käytetään vain tunnisteita ilman varsinaista tekstiä.Esikääntäminen edellyttää, että lähdetekstin kieli on tiedossa. Poedit ei tunnistanut sitä tästä tiedostosta.AsetuksetAsetukset...Asetukset…Valmistellaan tekstejä…Säilytä olemassa olevien tiedostojen muotoiluEdellinen monikkomuotoEdellinen monikkomuotoAiempi lähdetekstiAiemmin muokattuAiemmin muokattuProjektin nimi ja versio:Projektin nimi:Projekti:ProjektitVälimerkkitarkastuksetPuhdistaPuhdista poistetut käännöksetLopetaTiedoston sisällön luku epäonnistui: %sÄskettäiset tiedostotTee uudelleenVirkistäLataa tiedosto uudelleenLataa tiedosto uudelleenJäljellä: %dPoistaPoista lähteestä kopioidut käännöksetPoista lähteestä kopioidut käännöksetPoistetut merkkijonotPoistetut merkkijonotPoistetut merkkijonot (ei enää käytössä):KorvaaKorvaa k&aikkiKorvaa k&aikkiKorvaava teksti&Korvaa…Pakollinen otsake Plural-Forms puuttuu.TyhjennäTyhjennä käännösmuistiKäännösmuistin tyhjentäminen tuhoaa kaikki sen sisältämät käännökset peruuttamattomasti. Tätä toimenpidettä ei voi perua.Näytä FinderissaKatselmointiTallennaTallenna &nimellä…Tallenna &nimellä…Tallenna siltiTallenna siltiTallenna nimelläTallenna nimellä…Tallenna muutoksetTallenna tiedostoXCLOC-tiedostojen tallennusta eri sijaintiin ei tueta.Kuvankaappaukset:Valitse k&aikkiValitse kaikkiValitse tuotavat TMX-tiedostotValitse kansioValitse käännöstiedostoValitse tuotavat käännöstiedostotValitse käännösmalliValitse ensisijainen kieliAseta kieliAseta kieliAsetuksetAsetukset…Näytä sivupalkkiNäytä oikeinkirjoitus ja kielioppiNäytä tilariviNäytä tekstin &tunnisteNäytä korvauksetNäytä työkaluriviNäytä varoituksetAvaa resurssienhallinnassaNäytä kansiossaNäytä tai piilota sivupalkkiNäytä sivupalkkiNäytä tilariviNäytä tekstin &tunnisteNäytä varoituksetSivupalkkiKirjauduKirjaudu ulosKirjauduKirjaudu palveluun %sKirjaudu pilvitililleKirjaudu CrowdiniinKirjaudu pilvitililleKirjaudu ulosYksikköÄlykäs kopiointi/liittäminenÄlykkäät yhdysmerkitÄlykkäät linkitÄlykkäät lainausmerkitJärjestä &tiedostojen järjestyksen mukaanJärjestä läht&een mukaanJärjestä &käännöksen mukaanJärjestä &tiedostojärjestyksen mukaanJärjestä läht&een mukaanJärjestä &käännöksen mukaanLähdekoodin merkistö:Lähdekoodipoimimia käytetään käännettävien tekstien etsimiseen lähdekooditiedostoista sekä näiden tekstien poimimiseen käännöksen tekemistä varten.Lähdekoodi ei ole käytettävissä.Lähdekoodia ei löydyLähdetekstiLähdetekstin IDLähdeteksti — %sLähteiden avainsanatLähteiden polutLähteiden avainsanatLähteiden polutPuheOikeinkirjoituksen tarkistus on poissa käytöstä, koska kielelle %s ei ole asennettu sanakirjaa.Oikeinkirjoitus ja kielioppiAloita puhuminenLopeta puhuminenTallennetut käännökset:Merkkijonon konteksti: %sMerkkijonon tunniste: %sTekstin pituus merkkeinäTekstin pituus merkkeinä: käännös | lähdeEtsittävä tekstiString-tyyppisiä Crowdin-projekteja ei tueta.KorvauksetEhdotuksetEhdotukset 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.Tarpeeton muuttuja "%s", joka ei sisälly lähdetekstiin.Tukee kaikkia GNU gettextin tunnistamia ohjelmointikieliä (PHP, C/C++, C#, Perl, Python, Java, JavaScript ja muita).SynkronoiSynkronoi CrowdiniinSynkronoi Crowdin-käännökseenSynkronoidaanSynkronointivirheSynkronointi Crowdiniin epäonnistui.Kielioppivirhe Plural-Forms -otsakkeessa (â€%sâ€).MuistiTMX-tiedostotPoimi käännettävät tekstit olemassa olevasta POT-käännöspohjasta.Tiimin nimi ja sähköpostiosoite tai URLTekstin korvausKäännösmuisti ei sisällä yhtään tämän tiedoston sisältöä muistuttavaa tekstiä. Käännösmuisti toimii tehokkaasti puoliautomaattiseen kääntämiseen vasta kun Poedit on oppinut tarpeeksi manuaalisesti käännetyistä tiedostoista.TMX-tiedosto on viallinen.Toisen sovelluksen tekemät muutokset menetetään, jos tallennat.Tiedostoa ei voi muuntaa MO-muotoon eikä sitä voi käyttää.Tiedosto sisälsi kahdenkertaisia kohtia, mikä on kiellettyä PO-tiedostoissa ja estäisi tiedoston käytön. Poedit korjasi ongelman, mutta käännöksestä on syytä käydä läpi kaikki keskeneräisiksi merkityt viestit ja tarvittaessa korjata ne.Tiedostoa ei voitu tallentaa katalogin ominaisuuksissa on määriteltyssä â€%sâ€-merkistössä. Se tallennettiin sen sijaan UTF-8-muodossa ja asetusta muutettiin vastaavasti.Tiedostoa on muokattu. Haluatko tallentaa muutokset?Tiedosto on muodossa, jota Poedit ei tunnista.Tiedosto muunnettiin MO-muotoon, mutta se ei todennäköisesti toimi oikein.Tiedosto tallennettiin turvallisesti ja muunnettiin MO-muotoon, mutta se ei todennäköisesti toimi oikein.Tiedosto tallennettiin turvallisesti, mutta sitä ei voida muuntaa MO-muotoon eikä käyttää.Tiedosto tallennettiin turvallisesti.Tiedostoa "%s" ei voitu avata.Tiedostoa "%s" ei voitu tallentaa.Toinen sovellus on muuttanut tiedostoa “%sâ€.Tähän keskeneräiseksi muuttuneeseen käännökseen liittyvä vanha lähdeteksti (ennen sen muuttumista päivityksen aikana).Yksinkertaisin tapa täyttää tämä tiedosto käännöksillä on päivittää se POT-tiedostosta:Käännös ei ala välilyönnillä.Käännös päättyy rivinvaihtoon toisin kuin lähdeteksti.Käännös päättyy välilyöntiin toisin kuin lähdeteksti.Käännöksen lopussa on â€%s", mutta lähdetekstin lopussa â€%sâ€.Käännöksen lopusta puuttuu rivinvaihto.Käännöksen lopusta puuttuu välilyönti.Käännös on käyttövalmis, mutta %d viesti on vielä kääntämättä.Käännös on käyttövalmis, mutta %d viestiä on vielä kääntämättä.Käännös on käyttövalmis.Käännöksen lopussa tulisi olla â€%sâ€.Käännöksen lopussa ei tulisi olla â€%sâ€.Käännöksen tulisi alkaa virkkeellä.Käännöksen tulisi alkaa pienellä kirjaimella.Käännös alkaa välilyönnillä toisin kuin lähdeteksti.Käännökset merkittiin keskeneräisiksi, sillä ne voivat olla virheellisiä. Ne on syytä käydä läpi oikeellisuuden varmistamiseksi.Käännöksiä ei ole. Sepä erikoista.Tiedoston muotoilemisessa oli ongelma (mutta sen tallennus onnistui).Virhe tallennettaessa käännöksiä Localazyyn.Tiedostoa ladattaessa kohdattiin virheitä. Osa tiedosta saattaa sen seurauksena puuttua tai olla vioittunutta.Nämä asetukset vaikuttavat PO-tiedostojen sisäiseen muotoiluun. Niitä voi tarvittaessa muuttaa esim. versionhallinnasta johtuvien vaatimusten vuoksi.Tämä JSON-tiedosto ei ole käännöstiedosto eikä sitä voida muokata Poeditillä.Tämä poistaa kaikki käännökset, jotka ovat tarkkoja lähdetekstin kopioita. Toimintoa ei ole mahdollista kumota.Tässä tiedostossa on monikkomuotoisia viestejä, vaikka Plural-Forms -otsake on asettamatta.Tämä tiedosto käyttää lähdetekstin sijaan merkkijonojen tunnisteita. Poedit voi puolestasi ladata englanninkieliset tekstit "%s" tiedostosta.Tätä komentoa käytetään poimimen suorittamiseen. %o laajennetaan tulostiedoston nimeksi, %K avainsana- listaksi, %F syötetiedostojen listaksi, %C merkistölipuksi (ks. alempaa).Tämä teksti löytyi Poeditin käännösmuistista.Tämä liitetään komentoriville vain, jos kohteen koodimerkistö on annettu. %c laajennetaan merkistöarvoksi.Tämä liitetään komentoriville kerran kuhunkin syötetiedostoon. %f laajennetaan tiedostonimeksi.Tämä liitetään komentojen listaan kerran kuhunkin avainsanaan. %f laajennetaan avainsanaksi.YhteensäMuunnoksetKäännettäviä viestejä ei Gettext-järjestelmässä lisätä manuaalisesti, vaan ne poimitaan lähdekoodista automaattisesti. Näin ne pysyvät ajan tasalla ja tarkkoina. Kääntäjät käyttävät yleensä kehittäjän heitä varten luomia PO-mallitiedostoja (POT).Käännä pilviprojektiKäännetty: %d/%d (%d %%)KäännösKäännöksen kieliKäännösmuistiKäännös on &keskeneräinenKäännöksen ominaisuudetKäännöstiedosto on jo ajan tasalla, eikä merkkijonoihin tehty muutoksia.Käännöstiedosto päivitettiin %s muutoksella.Käännöstiedosto päivitettiin %s muutoksella.Käännösmuistin tietokanta on turmeltunut: %s (%d).Käännösmuistin virhe: %s (%d).Käännös on &keskeneräinenKäännöksen ominaisuudetKäännösehdotuksetKäännösehdotukset edellyttävät, että varsinainen lähdeteksti on käytettävissä. Se ei toimi, jos käytetään vain tunnisteita ilman varsinaista tekstiä.Esikääntäminen edellyttää, että lähdetekstin kieli on tiedossa. Poedit ei tunnistanut sitä tästä tiedostosta.Käännös — %sKäännösten päivittäminen lähdekoodista ei onnistunut, koska tiedoston ominaisuuksissa annetusta sijainnista ei löytynyt koodia.KaksiUTF-8 (suositeltu)KumoaYllättävä puute XCLOC-tiedoston sisällössä.Tapahtui käsittelemätön poikkeus: %sUnix (suositeltu)Tuntematon Crowdin-virhe.Tuntematon virheEi käännPäivitäPäivityksen yhteenvetoPäivitä kaikkiPäivitä projektin kaikki katalogitPäivitetäänkö projektin kaikki katalogit?Päivitä &POT-tiedostosta…Päivitä &POT-tiedostosta…Päivitä lähdekoodistaPäivitä POT-tiedostostaPäivitä lähdekoodistaPäivitä lähdekoodistaPäivityksen yhteenvetoPäivityksetPäivitys epäonnistuiPäivitetään projektiluetteloitaPäivitetään käännöksiäPäivitetään käyttäjätietoja…Käännösten tallennus palveluun %s epäonnistui.Tallennetaan käännöksiä palveluun %s…Lähetetään käännöksiä…Käytä omaa lausekettaListan fontti:Tekstikenttien fontti:Käytä tämän kielen oletussääntöjäKäytä näitä avainsanoja (funktion nimiä) tunnistettaessa lähdetiedostoista käännettäviä tekstejä:Käytä käännösmuistiaValidoiValidoinnin tuloksetVersio %sNäytä tiedot…Näytä tiedot…Odotetaan todennusta…Varoitus: Tervetuloa PoeditiinPäivitettäessä lähteistäVain kokonaiset sanatIkkunaWindowsHaluatko käyttää englanninkielistä lähdetekstiä?Jatka alustaRivitys:XLIFF-käännöstiedostotXcode-lokalisointikatalogiKylläVoit myös poimia käännettävät tekstit suoraan lähdekoodista:Poedit-ikkunaan voi pudottaa vain yhden tiedoston.Sinulla ei ole tarvittavia oikeuksia lukea lähdekooditiedostoja tiedoston asetuksissa määritellystä sijainnista.Poedit täytyy käynnistää uudestaan muutoksien käyttöön ottamiseksi.NimesiMuutokset menetetään, ellet tallenna niitä.Nimeäsi ja sähköpostiosoitettasi käytetään ainoastaan GNU-gettext-tiedostojen Last-Translator-otsakkeessa.NollaZoomaaKeskeneräisiäälä poista tilapäistiedostoja (vianjäljitystä varten)esim. nplurals=2; plural=(n > 1);virhe: käytä sumeaa täsmäystä tiedoston sisäisestisiirry annetulla rivillä olevaan kohtaankäsittele poedit://-osoiteAlt+Ctrl+AlanuoliEnterVasenOikeaVaihto+YlänuolialtctrlvaihtoTietoja %s-ohjelmastaKätke %sKätke muutAsetukset...Lopeta %sPalvelutNäytä kaikkiesikäännä käännösmuististatuntematon kieliei-tuettu versio (%s)varoitus: osoitteesi@example.comâ€%s†ei ole kelvollinen POT-tiedosto.poedit-3.6.3/locales/ro.mo0000644000175100001660000017330215011674351011101 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-ÕO %’ 2’A>’%€’d¦’ “@*“@k“œ¬“„I”¿Î” Ž•˜• §•b±•––+–4– =– H– S– ]–g–p–…–š–£– ¬–º–Ζ â–ì–——&—+— 3—?—V—m—q—u—„— “—  — ­— ·—Ä—Ô—ì—˜˜5˜ T˜^˜e˜ t˜ ˜˜­˜͘ä˜ û˜ ™!™!3™U™s™‘™©™ Á™ΙÒ™ ð™!ý™ š +š 7šAšFšNšVšiš}ššŸš³šÆšâšöš››,›G›f› n›› ­›Λì›ÿ›?œ4Oœ„œ,˜œ&Åœìœóœûœ,-Ft+¼ÄjÓ>žRQžZ¤ž*ÿž *Ÿ7Ÿ¢MŸ ðŸúŸ#  !. 4P +… ± Ê ã ü ¡/¡A¡![¡)}¡§¡+¾¡ê¡¢ ¢#¢3¢H¢X¢m¢v¢|¢Ž¢% ¢Æ¢$å¢ £ £!£:£P£`£:€£ »£‚Æ£I¤R¤h¤ƒ¤™¤´¤7Ó¤? ¥ K¥l¥|¥)•¥$¿¥ä¥Àó¥ ´¦À¦Û¦%ö¦ §'§F§ N§o§ §¢§²§ƧAÖ§¨ 6¨$B¨og¨Kר=#© a©k©t©0Š©»©"Ñ©>ô©3ªRªqªzª ªšª°ªƪ۪𪫫 «)«1«pJ«»«Û«}û«!y¬›¬+º¬æ¬ï¬õ¬ù¬ ­­2­A­V­j­7}­µ­Ì­%Þ­A®–F®Ý® ó®,þ®0+¯9\¯'–¯0¾¯ï¯÷¯°34°nh° ×°á°õ° ±(±A±^±v±б ž± ¬±º±ʱÚ±ø±² ²%² -²;²B²Z²!q²+“²¿²¬Â²±o³˜!´º´´Ô´!è´ µ!µ@µ*Zµ…µœµ¤µ!¼µÞµ÷µ ¶"¶ 2¶ <¶F¶O¶ j¶v¶/ж!º¶ܶî¶ÿ¶··+/·[·z·Š·¤·"÷æ·>ì·+¸A?¸¸£”¸28¹ k¹ y¹,‡¹´¹ιã¹ó¹ º.ºGºMºbºwº‡º—ºû®ºª»®» ɻջ ð»ü»¼.¼I¼L¼)e¼[¼ë¼*½6/½#f½(н0³½ä½ý½¾É¾"Ͼò¾¿-"¿P¿ n¿¿ ¿´¿È¿!Ø¿ ú¿ ÀÀÀ"À7ÀLÀeÀ€ÀÁÁ:ÁM?ÁÁ/£ÁÓÁ‚ïÁcrÂÖÂÝÂNüÂKÃ\Ã#cÃF‡ÃÎÃÔíÄ4ÂÅ.÷Å&Æ 8Æ FÆ@QÆ)’Æ¼Æ’ÎÆŠaÇzìÇ gÈsȂȑÈ,¬ÈÙÈõÈÉ&É6ÉFÉ aÉoÉxÉÉ œÉ¦ÉÄÉDÍÉÊ#Ê)Ê<ÊPÊ dÊpÊ<xÊ,µÊâÊôÊ*Ë 1Ë?ËRËbËuË'†Ë ®Ë¹Ëy×ËQÌ cÌ pÌzÌ‹ÌœÌ­Ì ¾ÌËÌÛÌñÌOÍSÍeÍvÍ,†Í³Í ÈÍ5éÍ Î @ÎaÎqÎÎ ‰Î”Î «ÎÌÎâÎòÎÏ Ï4ÏHÏ%YÏϖϬϼÏÐÏ àÏ îÏ úÏÐ!Ð?Ð!YÐ {ЇÐЬÐÀÐÖÐìÐ Ñ$Ñ?Ñ_ÑwÑ’Ñ„¯Ñ4ÒMÒ kÒwÒ†Ò™Ò ­Ò¸Ò ÌÒ ×Ò^áÒ@ÓZÓoÓƒÓ–Ó§Ó¾Ó.ÙÓÔ7Ô OÔZÔœcÔ@ÕŒAÕ ÎÕÛÕ$õÕ Ö'Ö";Ö7^Ö–Ö ™Ö8¦Ö*ßÖ ×É×ä×HØ<K؈ØË¡Ù;mÚA©ÚTëÚ}@Û_¾Û5Ü)TÜ(~Ü:§ÜzâÜg]Ý$ÅÝBêÝ?-ÞNmÞ4¼Þ-ñÞàß!à."à1Qà4ƒà6¸à;ïà+á'«áZÓá=.â`lâ’ÍâU`ãs¶ãZ*ä“…äÕå9ïå˜)ætÂæl7ç¤ç ªç¸çÉèáè ûèéé+éGéW_éµ·é@mê%®êÔêðêë“냯ë3ì“DìØìÞì ñì>ûì$:í_íqíŽí¢í ªí¸íÍí+ßí0 î!<î!^î€î–î¬îÂîßî õîï%ï>ï*[ï*†ï"±ïÔï"ðï+ð2?ð1rðs¤ðñ 8ñCñ Vñcñsñƒñ£ñ²ñ'Êñòñ òò8ò"Tòwò†ò¢ò¾òHÁò; óoFóL¶ó ô7ôuGô½ô ÂôÌô1Ûô õ-õ)6õ.`õõ¬õ±õ·õ»õÁõÉõÑõØõÜõàõåõ ëõ õõöö ö*ö 3ö>öOöcö~ö ö&›ö|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-07 10:16 Last-Translator: Language-Team: Romanian Language: ro_RO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: ro X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (modificat) (nesalvat)%d apariÈ›ie în cod%d apariÈ›ii în cod%d de apariÈ›ii în cod%d intrare%d intrări%d de intrări%d intrare a fost pre-tradusă.%d intrări au fost pre-traduse.%d de intrări au fost pre-traduse.%d eroare%d erori%d de eroriA apărut o eroare.Au apărut %d erori.Au apărut %d de erori.A apărut o eroare:Au apărut %d erori:Au apărut %d de erori:A fost detectată %d problemă cu È™irurile sursă.Au fost detectate %d probleme cu È™irurile sursă.Au fost detectate %d de probleme cu È™irurile sursă.A fost găsită %d problemă cu traducerea.Au fost găsite %d probleme cu traducerea.Au fost găsite %d de probleme cu traducerea.%i linie din fiÈ™ierul „%s†nu a fost încărcată corect.%i linii din fiÈ™ierul „%s†nu au fost încărcate corect.%i de linii din fiÈ™ierul „%s†nu au fost încărcate corect.Format %sPreferinÈ›e %sFormat %s%s traducere a fost importată.%s traduceri au fost importate.%s de traduceri au fost importate.&Despre&Despre Poedit&Aplică&ÃŽnapoi&Anulează&Curăță&ÃŽnchide&Copiază&Șterge&Gata È™i următorul&Gata È™i următorul&Editare&FiÈ™ier&GăseÈ™te…Manual &GNU gettextManual &GNU gettext&Mergi la&Grupează după context&Grupează după context&Ajutor&Nou&Nou…&Următor >Traducerea &următoareTraducerea &următoare&Nu&OkAjutor &onlineAjutor &online&Deschide...&Deschide…&LipeÈ™te&PreferinÈ›e&PreferinÈ›e…Traducerea &anterioarăTraducerea &anterioară&Proprietăți…&Curăță traducerile È™terse&Curăță traducerile È™terse&ÃŽnchide&Refă&ÃŽnlocuieÈ™te&Salvează&Salvează ca&AfiÈ™ează apariÈ›iile în cod&AfiÈ™ează apariÈ›iile în codFereastră de &pornireFereastră de &pornire&Traducere&AnuleazăMai întâi intrările &netraduseMai întâi intrările &netraduse&Actualizează din cod sursă&Actualizează din cod sursă&Validează traducerile&Validează traducerile&Vizualizare&Da(FoloseÈ™te limba implicită)(neconectat)(necesită Windows 8 sau mai nou)< &AnteriorDespre %sContConturiAdaugăAdaugă comentariuAdaugă fiÈ™iere…Adaugă dosare…Adaugă proiectAdaugă wildcard…Adaugă comentariuAdaugă director în listăAdaugă fiÈ™iere…Adaugă dosare…Adaugă proiectAdaugă wildcard…Cuvinte cheie suplimentareMarcaje xgettext suplimentare:AvansatSetări avansate de extragere…Setări avansate de extragereSetări avansate de extragere…Toate fiÈ™ierele de traducereToate comentariileToate È™irurileFoloseÈ™te È™i cuvinte cheie implicite pentru limbile acceptateFocalizează mereu câmpul de introducere a textuluiA apărut o eroare.Un element în lista de fiÈ™iere de intrare:Un element în lista de cuvinte cheie:AspectAplicăPotriviri aproximative din TMSigur vrei să È™tergi extractorul „%sâ€?Sigur vrei să resetezi memoria de traducere?Caută actualizări automatCompilează automat fiÈ™ierul MO la salvareÃŽnapoiCale de bază:Versiunile beta conÈ›in ultimele noi caracteristici È™i îmbunătățiri, dar pot fi puÈ›in mai instabile.Adu tot în fațăFiÈ™ier PO deteriorat: forma de plural msgstr a fost folosită fără msgid_pluralFiÈ™ier PO deteriorat: forma de singular msgtr a fost folosită împreună cu msgid_pluralMarcaj deteriorat în È™irul de traducere.RăsfoieÈ™teRăsfoieÈ™te fiÈ™iereÃŽn mod implicit, sunt incluse È™i rezultatele inexacte, dar marcate ca necesitând lucru. Bifează această opÈ›iune pentru a include numai potrivirile perfecte.AnuleazăSe anulează…Nu se poate crea director temporar.Nu se poate executa programul: %sNu se poate pre-traduce dintr-o limbă necunoscută.Nu se poate pre-traduce fără text sursă.Cu majusculă iniÈ›ialăAdministrator &cataloageAdministrator &cataloageAdministrator cataloageSchimbă limba interfeÈ›eiSet de caractere:Verifică documentul acumVerifică gramatica cu ortografieVerifică ortografia în timpul tastăriiCaută actualizări…Verifică dacă există erori în traducereCaută actualizări…Verificare ortograficăCurățăCurăță meniuCurăță traducereaCurăță meniuCurăță traducereaÃŽnchideCloudApariÈ›ii în codApariÈ›ii în codColaborează cu alte persoane online.Colectare fiÈ™ierele sursă…Comandă pentru extragere traduceri:ComentariuComentariu:Comentarii prefixate cu:Compilează în MO…Compilare la…FiÈ™iere de traducere compilateConfigurează extragerea codului sursă în Proprietăți.ConfirmareConectează Poedit cu platformele de localizare în cloud acceptate pentru a sincroniza perfect traducerile gestionate pe acestea.CopiazăCopiază din singularCopiază din textul sursăCopiază din singularCopiază din textul sursăCorectează ortografia automatNu s-au putut descărca detaliile proiectului Localazy.Nu s-a putut încărca fiÈ™ierul, probabil că este deteriorat.Nu s-a putut salva fiÈ™ierul %s.Traducere nouăCreează traducere nouăCreează traducere nouă din È™ablon POT.Creează un nou proiect de traduceriEroare CrowdinCrowdin este o platformă online de gestiune a traducerilor È™i un instrument colaborativ de traducere. Folosim Crowdin noi înÈ™ine pentru a traduce Poedit în mai multe limbi È™i iubim asta.&DecupeazăExtractoare personalizate:Extractoare personalizate:Personalizare bară de instrumente…DecupeazăMărime bază de date pe disc:ȘtergeȘterge din memoria de traducereȘterge extractorȘterge din memoria de traducereȘterge proiectȘterge comentariulȘterge proiectȘtergerea proiectului nu va È™terge niciun fiÈ™ier de traducere.Se determină diferenÈ›ele…Directoare:Vrei să È™tergi proiectul „%sâ€?Vrei să reîncarci fiÈ™ierul de pe disc? Modificările tale nesalvate din Poedit vor fi pierdute dacă o faci.DoreÈ™ti să È™tergi toate traducerile care sunt identice cu textul-sursă?Vrei să elimini toate traducerile care nu mai sunt folosite?&Nu salvaNu salvaNu mai afiÈ™a din nouNu marca potrivirile exacte ca necesitând lucruNu mai afiÈ™a din nouSe descarcă ultimele traduceri…Descărcarea traducerilor este dezactivată în acest proiect.Trage aici dosare sau fiÈ™iereTrage aici dosare sau fiÈ™iereI&eÈ™ireE&xportă în HTML…EditeazăEditează &comentariuEditează &comentariuEditează comentariuEditează comentariuEditare proiectEditează proiectulEditareEditează…E-mail:Intră în ecran completIntrările din acest fiÈ™ier au un număr de forme de plural diferit de cel din antetul Plural-Forms din fiÈ™ierMai întâi intrările cu eroriMai întâi intrările cu eroriIntrările cu erori au fost marcate cu roÈ™u în listă. Detaliile erorii va fi afiÈ™ate când selectezi o astfel de intrare.Eroare la deschiderea fiÈ™ieruluiEroare la salvarea fiÈ™ieruluiEroare la încărcarea fiÈ™ierului XLIF: %sEroare: EroriTotRezultate exacte din TMCăi excluseExportă în TMX…Exportă ca…Exportă în HTML…Exportă în TMX…Exportare în HTMLExportarea memoriei de traducere în „%s†a eÈ™uat.Exportare traduceri…Extrage din surseExtrage note pentru traducători din:Extrage textul din fiÈ™ierele sursă în următoarele directoare:Extrag È™irurile traductibile dintr-un fiÈ™ier…Extrag È™irurile traductibile din %s fiÈ™iere…Extrag È™irurile traductibile din %s de fiÈ™iere…Configurare extractorExtractoriAm eÈ™uat în a comunica cu procesul Poedit.Extragerea È™irurilor din codul sursă a eÈ™uat.ÃŽncărcarea fiÈ™ierului cu traducerile extrase a eÈ™uat.Fuziunea cataloagelor gettext a eÈ™uat.Eroare la actualizarea memoriei de traducere: %sFiÈ™ierFiÈ™ierul nu poate fi deschisFiÈ™ierul „%s†nu există.FiÈ™ierul „%s†nu este un fiÈ™ier de traducere.FiÈ™ierul „%s†este doar în citire È™i nu poate fi salvat. Te rugăm să îl salvezi sub un nume diferit.GăseÈ™teRezultatul următorRezultatul anteriorGăseÈ™te È™i înlocuieÈ™te…GăseÈ™te în comentariiGăseÈ™te în textele sursăGăseÈ™te în traduceriRezultatul următorRezultatul anteriorRepară limbaRepară limbaRepară antetulRepară antetulFiÈ™iere de traducere FlutterForma %iForma %i (neutilizată)GNU gettextGeneralFiÈ™iere HTMLAjutorAscunde bară lateralăAscunde bară de stareAscunde acest mesaj de notificareCum funcÈ›ionează sincronizarea în cloud?IDDacă vei continua curățarea, toate traducerile marcate ca È™terse vor fi eliminate definitiv. Va trebui să le traduci din nou dacă vor fi adăugate înapoi în viitor.Dacă ai refuzat anterior accesul la fiÈ™ierele tale, îl poÈ›i permite în PreferinÈ›e de sistem > Securitate È™i confidenÈ›ialitate > ConfidenÈ›ialitate > FiÈ™iere È™i dosare.Dacă ai refuzat anterior accesul la fiÈ™ierele tale, îl poÈ›i permite în Setări de sistem > ConfidenÈ›ialitate È™i securitate > FiÈ™iere È™i dosare.IgnorăIgnoră majusculeImportă din TMX…Importă fiÈ™iere de traducere…Importă din TMX…Importă fiÈ™iere de traducere…Importare din „%sâ€â€¦Importarea memoriei de traducere a eÈ™uat.Importare traduceri…În: %sInclude versiunile betaMajuscule/minuscule inconsistenteSpaÈ›iu alb inconsistentInformaÈ›ii despre traducătorInstaleazăFiÈ™ier nevalidInvocare:ProblemăProblemeFiÈ™iere de traducere JSONPăstreazăNume sau cod limbăLimba traducerii este aceeaÈ™i cu limba sursă.Limba traducerii nu este setată.Limba traducerii:Selectare limbăEchipă de traducere:Limbă:Ultima modificareÃŽnvățaÈ›i despre cuvintele cheie gettextAflă despre formele de pluralAflă mai multeAflă mai multe despre %sAflă mai multe despre CrowdinAflă mai multe despre GNU gettextLinieLinia %d de fiÈ™ier „%s†este coruptă (data %s invalida).Delimitatori linii:Lista de extensii separate cu punct È™i virgulă (ex. *.cpp;*.h):ÃŽncarcă englezăLocalazy este o platformă de localizare extrem de automatizată care permite oricui să-È™i traducă produsele È™i conÈ›inutul cu uÈ™urință în mai multe limbi.FiÈ™ierele MO nu pot fi editate direct în Poedit.ÃŽn minusculeÃŽn majusculeFă o traducere nouă din acest fiÈ™ier POT.Antet malformat: „%sâ€Gestionează conturiGestionează…Fuzionare diferenÈ›e…MinimizeazăNumele proiectului pentru care este traducereaNume:Neterminat u&rmătorNeterminat u&rmătorNecesită lucruNecesită lucruEroare reÈ›ea: %s (%d)Nu lasă niciodată lista de È™iruri să preia focalizarea. Dacă este activată, trebuie să foloseÈ™ti Ctrl-săgeÈ›i pentru a naviga cu tastatura, dar poÈ›i È™i să tastezi textul imediat, fără a trebui să apeÈ™i Tab pentru a schimba focalizarea.NouNou din fiÈ™ier &POT/PO…Șiruri noiNou din fiÈ™ier &POT/PO…Șiruri noiȘiruri noi de tradus:Forma de plural următoareForma de plural următoareNuNicio potrivire găsităNicio intrare nu a putut fi pre-tradusă.ÃŽn fiÈ™ier nu sunt furnizate informaÈ›ii despre apariÈ›iile acestui È™ir în codul sursă.Nicio potrivire găsităNu au fost găsite probleme cu traducerea.Nu sunt listate proiecte de traducere în contul tău.Nu există informaÈ›ii de utilizareNu toate formele de plural sunt traduse.Neautorizat, te rugăm să te conectezi din nou.Note pentru traducătoriOkUnulActivează doar dacă ai încredere în calitatea memoriei tale de traducere. ÃŽn mod implicit, toate potrivirile din MT sunt marcate ca necesitând lucru È™i ar trebui revizuite înainte de utilizare.Completează doar potriviri exacteDeschide traducere în cloud…Deschise recentDeschide È™i editează fiÈ™iere de traducere.Deschide traducerea în cloudDeschide traducerea în cloud…Deschide fiÈ™ierDeschide în editorDeschide în editorDeschise recentDeschide fiÈ™ierul de referințăDeschide...Deschide…OpÈ›iuniAlteleNeterminat a&nteriorNeterminat a&nteriorFiÈ™iere de traducere POȘabloane de traducere POTFiÈ™ierele POT sunt doar È™abloane È™i nu conÈ›in nicio traducere. Pentru a face o traducere, creează un fiÈ™ier PO nou bazat pe acest È™ablon.LipeÈ™teLipeÈ™te È™i potriveÈ™te stilulCăiEfectuează actualizare din codul sursă pentru toate fiÈ™ierele din proiect.Permisiune refuzată.Substituentul „%s†lipseÈ™te din traducere.Corectitudine substituenÈ›iTe rugăm să deschizi È™i să editezi fiÈ™ierul PO corespunzător. Când îl salvezi, fiÈ™ierul MO va fi actualizat, de asemenea.Te rugăm să salvezi mai întâi fiÈ™ierul. Această secÈ›iune nu poate fi editată până atunci.PluralTraducerile formelor de pluralExpresia formelor de plural folosită de fiÈ™ier este neobiÈ™nuită pentru %s.Forme de plural:PoeditPoedit - Administrator de cataloagePoedit corectează automat conÈ›inutul nevalid în fiÈ™ierul „%sâ€.Poedit poate încerca să completeze intrările noi doar de la traducerile anterioare din fiÈ™ier sau din întreaga ta memorie de traducere. Folosind MT nu va fi foarte eficient în cazul în care este aproape goala, dar acesta va fi mai bună pe măsură ce adaugi mai multe traduceri.Poedit nu poate afiÈ™a codul sursă acolo unde este folosit È™irul, pentru că fiÈ™ierul fie nu este disponibil în locaÈ›ia menÈ›ionată, fie este o referință simbolică care nu indică către un fiÈ™ier real.Poedit este un editor de traduceri uÈ™or de folosit.Poedit nu a putut deschide fiÈ™ierul „%sâ€.Pre-&traducere…Pre-traducerePre-tradusPre-tras %u sir%u È™iruri pre-traduse%u de È™iruri pre-tradusePre-traducere din memoria de traducere…Se pre-traduce…Pre-traducerea găseÈ™te automat potrivirile exacte sau neclare pentru È™iruri netraduse în memoria de traducere È™i le completează traducerile.Pre-traducerea necesită ca textul sursă să fie disponibil. Nu funcÈ›ionează dacă sunt folosite doar ID-uri fără textul propriu-zis.Pre-traducerea necesită ca limba textului sursă să fie cunoscută. Poedit nu a putut să o detecteze în acest fiÈ™ier.PreferinÈ›ePreferinÈ›e...PreferinÈ›e…Se pregătesc È™irurile…Păstrează formatarea fiÈ™ierelor existenteForma de plural anterioarăForma de plural anterioarăText sursă anteriorEditat anteriorEditat anteriorNume È™i versiune proiect:Nume proiect:Proiect:ProiecteVerificări de punctuaÈ›ieCurățăCurăță traducerile È™terseÃŽnchideCitirea conÈ›inutului fiÈ™ierului a eÈ™uat cu următoarea eroare: %sFiÈ™iere recenteRefăReîmprospăteazăReîncarcă fiÈ™ierReîncarcă fiÈ™ierRămase: %dȘtergeȘterge traducerile care se potrivesc exact cu textul-sursăȘterge traducerile similare textelor-sursăȘiruri eliminateȘiruri eliminateȘiruri eliminate (nu mai sunt utilizate):ÃŽnlocuieÈ™teÃŽnlocuieÈ™te &totÃŽnlocuire &totȘir de înlocuireÃŽnlocuieÈ™te…Antetul necesar Plural-Forms lipseÈ™te.ReseteazăResetare memorie de traducereResetarea memoriei de traducere va È™terge definitiv toate traducerile stocate în ea. Nu poÈ›i anula această operaÈ›ie.Arată în FinderRevizuieÈ™teSalveazăSalvează &ca…Salvează &ca…Salvează oricumSalvează oricumSalvează caSalvează ca…Salvează modificăriSalvează fiÈ™ierSalvarea într-o locaÈ›ie diferită nu este acceptată pentru fiÈ™ierele XCLOC.Capturi de ecran:Selectează &totSelectează totSelectează fiÈ™iere TMX pentru a le importaSelectează directorSelectează fiÈ™ier de traducereSelectează fiÈ™iere de traducere pentru a le importaSelectează È™ablon de traducereSelectează-È›i limba preferatăSetează limbăSetează limbăSetăriSetări…Arată bară lateralăArată ortografie È™i gramaticăArată bară de stareArată &ID È™irArată înlocuiriArată bară de instrumenteArată avertismenteArată în ExplorerArată în dosarAfiÈ™ează sau ascunde bara lateralăArată bară lateralăArată bară de stareArată &ID È™irArată avertismenteBară lateralăAutentificareDeconectareAutentificareConectează-te la %sConectează-te la contul de cloudAutentificare în CrowdinConectează-te la contul de cloudDeconectareSingularCopiere/lipire inteligentăCratime inteligenteLegături inteligenteGhilimele inteligenteSortează după &ordine fiÈ™ierSortează după &sursăSortează după &traducereSortează după &ordine fiÈ™ierSortează după &sursăSortează după &traducereSet de caractere cod sursă:Extractoarele de cod sursă sunt folosite pentru a găsi È™iruri traductibile în codul sursă È™i a le extrage pentru a fi traduse.Cod sursă indisponibil.Codul sursă nu a fost găsitText sursăID text sursăSursă text — %sSurse cuvinte cheieCăi surseSurse cuvinte cheieCăi surseEnunÈ›areVerificarea ortografiei este dezactivată, pentru că dicÈ›ionarul pentru %s nu este instalat.Ortografie È™i gramaticăPorneÈ™te enunÈ›areaOpreÈ™te enunÈ›areaTraduceri stocate:Context È™ir: %sIdentificator È™ir: %sLungime È™ir în caractereLungime È™ir în caractere: traducere | sursăȘir de găsitProiectele bazate pe È™iruri Crowdin nu sunt acceptate.ÃŽnlocuiriSugestiiSugestiile 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.Substituentul de prisos „%s†care nu este în textul sursă.Suportă toate limbajele de programare recunoscute de instrumentele GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript È™i altele).SincronizareSincronizează cu CrowdinSincronizează traducerea cu CrowdinSincronizareEroare sincronizareSincronizarea cu Crowdin a eÈ™uat.Eroare de sintaxă în antetul Plural-Forms („%sâ€).MTFiÈ™iere TMXIa È™irurile traductibile dintr-un È™ablon POT existent.Nume echipă È™i adresă de e-mail sau URLÃŽnlocuire textMT nu conÈ›ine niciun È™ir similar cu conÈ›inutul acestui fiÈ™ier. Este eficient doar pentru traducerile semi-automate după ce Poedit le învață suficient din fiÈ™ierele pe care le-ai tradus manual.FiÈ™ierul TMX este malformat.Modificările făcute de altă aplicaÈ›ie vor fi pierdute dacă salvezi.FiÈ™ierul nu poate fi compilat È™i utilizat în formatul MO.FiÈ™ierul conÈ›inea elemente duplicate, ceea ce nu este permis în fiÈ™iere PO È™i ar împiedica utilizarea fiÈ™ierului. Poedit a rezolvat problema, dar ar trebui să revizuieÈ™ti traducerile oricăror elemente marcate ca necesitând lucru È™i să le corectezi dacă este necesar.FiÈ™ierul nu a putut fi salvat în setul de caractere „%s†în conformitate cu setările traducerii. Acesta a fost salvat în UTF-8 în schimb È™i setarea a fost modificată în mod corespunzător.FiÈ™ierul a fost modificat. Vrei să salvezi modificările?FiÈ™ierul este într-un format care nu este recunoscut de Poedit.FiÈ™ierul a fost compilat în formatul MO, dar probabil că nu va funcÈ›iona corect.FiÈ™ierul a fost salvat în condiÈ›ii de siguranță È™i compilat în formatul MO, dar, probabil că nu va funcÈ›iona corect.FiÈ™ierul a fost salvat în siguranță, dar nu poate fi compilat È™i utilizat în formatul MO.FiÈ™ierul a fost salvat în condiÈ›ii de siguranță.FiÈ™ierul „%s†nu a putut fi deschis.FiÈ™ierul „%s†nu a putut fi salvat.FiÈ™ierul „%s†a fost modificat de o altă aplicaÈ›ie.Vechiul text sursă (înainte de a fi schimbat în timpul unei actualizări) care acum corespunde unei traduceri inexacte.Cel mai simplu mod de a completa acest fiÈ™ier cu traduceri este de a-l actualiza dintr-un fiÈ™ier POT:Traducerea nu începe cu un spaÈ›iu.Traducerea se termină cu o linie nouă, dar nu È™i textul sursă.Traducerea se termină cu un spaÈ›iu, dar nu È™i textul sursă.Traducerea se termină cu „%sâ€, dar textul sursă se termină cu „%sâ€.Traducerii îi lipseÈ™te o linie nouă la sfârÈ™it.Traducerii îi lipseÈ™te un spaÈ›iu la final.Traducerea este gata de utilizat, dar %d intrare nu este încă tradusă.Traducerea este gata de utilizat, dar %d intrări nu sunt încă traduse.Traducerea este gata de utilizat, dar %d de intrări nu sunt încă traduse.Traducerea este gata de utilizat.Traducerea trebuie să se termine cu „%sâ€.Traducerea nu trebuie să se termine cu „%sâ€.Traducerea ar trebui să înceapă ca o propoziÈ›ie.Traducerea ar trebui să înceapă cu un caracter mic.Traducerea începe cu un spaÈ›iu, dar nu È™i textul sursă.Traducerile au fost marcate ca necesitând lucru, pentru că acestea pot fi inexacte. Ar trebui revizuite pentru corectitudine.Nu există traduceri. Este neobiÈ™nuit.A fost o problemă la formatarea frumoasă a fiÈ™ierului (dar totul a fost salvat corect).A apărut o eroare la încărcarea traducerilor în Localazy.Au existat erori la încărcarea fiÈ™ierului. Unele date pot lipsi sau sunt corupte ca rezultat.Aceste setări afectează formatarea internă a fiÈ™ierelor PO. Ajustează-le dacă ai cerinÈ›e specifice, de ex. din cauza controlului versiunii.Acest fiÈ™ier JSON nu este un fiÈ™ier de traducere È™i nu poate fi editat în Poedit.Această acÈ›iune va È™terge toate traducerile care se potrivesc exact cu textul-sursă. Procesul este ireversibil.Acest fiÈ™ier are intrări cu forme de plural, dar nu are antetul Plural-Forms configurat.Acest fiÈ™ier foloseÈ™te ID-uri de È™ir în loc de text sursă. Poedit poate încărca pentru tine texte în limba engleză din fiÈ™ierul „%sâ€.Aceasta este comanda folosită pentru a lansa extractorul. %o se extinde la numele fiÈ™ierului de ieÈ™ire, %K la lista de cuvinte cheie, %F la lista de fiÈ™iere de intrare, %C la setul de caractere (vezi mai jos).Acest È™ir a fost găsit în memoria de traducere Poedit.Aceasta va fi ataÈ™ată la linia de comandă doar dacă setul de caractere al codului sursă a fost dat. %c se extinde la valoarea setului de caractere.Aceasta va fi ataÈ™ată la linia de comandă pentru fiecare fiÈ™ier de intrare. %f se extinde la numele fiÈ™ierului.Aceasta va fi ataÈ™ată la linia de comandă pentru fiecare cuvânt cheie. %k se extinde la cuvântul cheie.TotalTransformăriIntrările traductibile nu sunt adăugate manual în sistemul Gettext, dar sunt extrase automat din codul sursă. ÃŽn acest fel, acestea sunt actualizate È™i exacte. Traducătorii folosesc de obicei fiÈ™iere È™ablon PO (POT-uri) pregătite pentru ei de către dezvoltator.Tradu proiect în cloudTradus: %d din %d (%d %%)TraducereLimbă traducereMemorie de traducereTraducerea necesită &lucruProprietăți traducereFiÈ™ierul de traducere este deja actualizat, nu au fost făcute modificări la È™iruri.FiÈ™ierul de traducere a fost actualizat cu %s modificare.FiÈ™ierul de traducere a fost actualizat cu %s modificări.FiÈ™ierul de traducere a fost actualizat cu %s de modificări.Baza de date a memoriei de traducere este deteriorată: %s (%d).Eroare memorie de traducere: %s (%d).Traducerea necesită &lucruProprietăți traducereSugestii traducereSugestiile de traducere necesită ca textul sursă să fie disponibil. Nu funcÈ›ionează dacă sunt folosite doar ID-uri fără textul propriu-zis.Sugestiile de traducere necesită ca limba textului sursă să fie cunoscută. Poedit nu a putut să o detecteze în acest fiÈ™ier.Traducere — %sTraducerile nu au putut fi actualizate din codul sursă, deoarece codul nu a fost găsit în locaÈ›ia specificată în proprietățile fiÈ™ierului.DouăUTF-8 (recomandat)AnuleazăConÈ›inutul lipseÈ™te în mod neaÈ™teptat din fiÈ™ierul XCLOC.A apărut o excepÈ›ie netratată: %sUnix (recomandat)Eroare Crowdin necunoscută.Eroare necunoscutăNetrad.ActualizeazăRezumat actualizăriActualizează totActualizează toate cataloagele din proiectActualizezi toate cataloagele din acest proiect?Actualizează din fiÈ™ier &POT…Actualizează din fiÈ™ier &POT…Actualizează din codActualizează din POTActualizează din codActualizează din cod sursăActualizează rezumatActualizăriActualizarea a eÈ™uatActualizarea cataloagelor de proiecteSe actualizează traducerileSe actualizează informaÈ›ii utilizator…Încărcarea traducerilor în %s a eÈ™uat.Se încarcă traducerile în %s…Se încarcă traducerile…FoloseÈ™te expresie personalizatăFoloseÈ™te font personalizat pentru listă:FoloseÈ™te font personalizat pentru câmpuri text:FoloseÈ™te reguli implicit pentru această limbăFoloseÈ™te aceste cuvinte cheie (nume de funcÈ›ii) pentru a recunoaÈ™te È™irurile traductibile în fiÈ™iere sursă:FoloseÈ™te memoria de traducereValideazăRezultate validareVersiunea %sVezi detalii…Vezi detalii…Se aÈ™teaptă autentificarea…AtenÈ›ionare: Bine ai venit la PoeditAtunci când se actualizează din surseDoar cuvinte întregiFereastrăWindowsVrei să foloseÈ™ti limba engleză pentru textul sursă?Continuă căutarea de la începutÃŽncadrare la:FiÈ™iere de traducere XLIFFCatalog de localizare XcodeDaDe asemenea, poÈ›i extrage È™iruri traductibile direct din codul sursă:Nu poÈ›i plasa mai mult de un fiÈ™ier în fereastra Poedit.Nu ai permisiunea de a citi fiÈ™ierele de cod sursă din locaÈ›ia specificată în proprietățile fiÈ™ierului.Trebuie să reporneÈ™ti Poedit pentru ca această schimbare să aibă efect.Numele tăuModificările tale vor fi pierdute dacă nu le salvezi.Numele È™i adresa de e-mail sunt folosite doar pentru a configura antetul Last-Translator din fiÈ™ierele GNU gettext.ZeroMăreÈ™teNecesita lucrunu È™terge fiÈ™ierele temporare (pentru depanare)ex. nplurals=2; plural=(n > 1);eroare: potriveÈ™te È™irurile neclare în fiÈ™iermergi la elementul de pe linia cu numărul datgetionează un URI poedit://Alt+Ctrl+JosEnterStângaDreaptaShift+SusaltctrlshiftDespre %sAscunde %sAscunde restulPreferinÈ›e...ÃŽnchide %sServiciiArată totpre-tradu din MTlimbă necunoscutăversiune neacceptată (%s)atenÈ›ionare: tu@exemplu.ro„%s†nu este un fiÈ™ier POT valid.poedit-3.6.3/locales/fa.po0000644000175100001660000030727515011674363011065 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Persian\n" "Language: fa_IR\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: fa\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "این اعلان را پنهان Ú©Ù†" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "دیگر نمایش داده نشود" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "دیگر نمایش داده نشود" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "خلاصه به‌روز رسانی" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "بستن" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "پرونده" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "رشته‌های جدید" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "در حال جمع آوری پرونده‌های منبع…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "بارگزاری پرونده از ترجمه‌های استخراج شده، شکست خورد." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "در: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "کد منبع موجود نیست." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "ترجمه ها را نمی‌توان از کد منبع به‌روزرسانی کرد، زیرا هیچ کدی در مکان مشخص‌شده " "در ویژگی‌های ÙØ§ÛŒÙ„ ÛŒØ§ÙØª نشد." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "خطای دسترسی." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "شما اجازه ندارید ÙØ§ÛŒÙ„ های کد منبع را از مکان مشخص شده در ویژگی های ÙØ§ÛŒÙ„ " "بخوانید." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "اگر پیش از این دسترسی به پرونده‌ها را رد کرده‌اید، می‌توانید از بخش ترجیحات " "سیستم > امنیت Ùˆ حریم شخصی > حریم شخصی > پرونده‌ها Ùˆ پوشه‌ها به آن اجازه دهید." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "اگر پیش از این دسترسی به پرونده‌ها را رد کرده‌اید، می‌توانید از بخش ترجیحات " "سیستم > امنیت Ùˆ حریم شخصی > حریم شخصی > پرونده‌ها Ùˆ پوشه‌ها مجدداً به آن اجازه " "دهید." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "نمی‌توان پرونده «%s» را باز کرد." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "به‌روز رسانی ترجمه‌ها" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "در حال ادغام موارد مختلÙ…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "سربرگ بدشکل: «%s»" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "پرونده‌های ترجمهٔ PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "الگوهای ترجمهٔ POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "پرونده‌های ترجمهٔ XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "ÙØ§ÛŒÙ„ های ترجمه JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "ÙØ§ÛŒÙ„ های ترجمه Ùلاتر" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "تمام پرونده‌های ترجمه" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "ÙØ±Ù…ت ÙØ§ÛŒÙ„ توسط Poedit شناخته نشد." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "این ÙØ§ÛŒÙ„ JSON یک ÙØ§ÛŒÙ„ ترجمه نیست Ùˆ نمی‌توان آن را در Poedit ویرایش کرد." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "خواندن محتوای پرونده با خطای زیر ناموÙÙ‚ بود: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "پروندهٔ «â¨%sâ©Â» Ùقط خواندنی است Ùˆ نمی‌تواند ذخیره شود\n" "Ù„Ø·ÙØ§Ù‹ آن را با نام دیگری ذخیره نمایید." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "نمی‌توان پروندهٔ â¨%s⩠را ذخیره کرد." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "اسکرین شات ها:" #: src/catalog_po.cpp:134 #, 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] "%Id خط از پروندهٔ «â¨%sâ©Â» درست بارگزاری نشده است." msgstr[1] "%Id خط از پروندهٔ «â¨%sâ©Â» درست بارگزاری نشده است." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "خط %Id از پروندهٔ «â¨%sâ©Â» خراب است (داده معتبر %s نیست)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "پرونده PO شکسته: ÙØ±Ù… Ù…ÙØ±Ø¯ MSGSTR همراه با msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "پرونده PO شکسته: ÙØ±Ù… جمع MSGSTR Ø§Ø³ØªÙØ§Ø¯Ù‡ شده بدون msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "پرونده بارگیری نشد، احتمالاً آسیب دیده است." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "هنگام بارگیری ÙØ§ÛŒÙ„ خطاهایی وجود داشت. در نتیجه ممکن است برخی از داده ها Ú¯Ù… " "شده یا خراب شده باشند." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "هنگام قالب‌بندی پرونده به صورت کاملاً صحیح، مشکلی به وجود آمد(ولی به هرحال " "پرونده ذخیره شد)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "پرونده نمی‌تواند در مجموعه‌نویسه «%s» Ú©Ù‡ در تنظیمات ترجمه مشخص شده، ذخیره " "شود.\n" "\n" "به‌جای آن در «UTF-8» ذخیره Ùˆ تنظیمات بر اساس آن تغییر ÛŒØ§ÙØª." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "خطا هنگام ذخیرهٔ پرونده" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "«â¨%sâ©Â» یک پروندهٔ معتبر POT نیست." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "خطا هنگام بارکردن پرونده XLIFF:†%s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "نگارش پشتیبانی‌نشده (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "نشانه گذاری شکسته در رشته ترجمه." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "حساب کاربری" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(وارد نشده‌اید)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "باز کردن ترجمه ابری" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "مدیریت حساب‌های کاربری" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "پروژه:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "زبان:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "ورود به حساب کاربری ابری" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "ورود به حساب کاربری ابری" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "در حال دانلود آخرین ترجمه…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "ورود به حساب %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "همگام‌سازی" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "در حال بارگذاری ترجمه‌ها به %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "در حال بارگذاری ترجمه‌ها به %s شکست خورد." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "خطای همگام‌سازی" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Ø§ÙØ²ÙˆØ¯Ù†" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "خطای ناشناخته Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "بدون تأیید هویت، Ù„Ø·ÙØ§Ù‹ مجددا وارد شوید." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "بارگیری ترجمه‌های این پروژه ØºÛŒØ±ÙØ¹Ø§Ù„ است." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "ورود" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "ورود" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "خروج" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "خروج" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "دربارهٔ Crowdin بیشتر بدانید" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "در حال انتظار برای تأیید هویت…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "به‌روز رسانی اطلاعات کاربر…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "ورود به Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "همگام سازی با Crowdin موÙقیت آمیز نبود." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "خطای Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "در حال بارگذاری ترجمه…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&رونوشت" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "بیشتر بدانید" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&راهنما" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "پرونده‌های MO نمی‌توانند به طور مستقیم در Poedit ویرایش شوند." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "خطا هنگام گشودن پرونده" #: src/edapp.cpp:735 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 نیز به‌روز خواهد شد." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "پرونده‌های موقّتی را پاک نکنید(برای Ø±ÙØ¹ باگ)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "اداره کردن یک نشانی ‪poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "Ø±ÙØªÙ† به شمارهٔ خط داده شده" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "عدم موÙقیت در ارتباط با ÙØ±Ø¢ÛŒÙ†Ø¯ ارسال Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "استثناء غیرقابل اداره، رخ داده است: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "گزینش الگؤ ترجمه" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "پروندهٔ نامعتبر" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "گزینش پروندهٔ ترجمه" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "â€Poedit ابزاری آسان برای ویرایش ترجمه‌ها است." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "شما نمی‌توانید بیش از یک پرونده را در پنجرهٔ Poedit بیندازید." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "پروندهٔ «â¨%sâ©Â» یک پروندهٔ ترجمه نیست." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "پروندهٔ «â¨%sâ©Â» وجود ندارد." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "بررسی املاء ØºÛŒØ±ÙØ¹Ø§Ù„ است، زیرا لغت‌نامه‌ای برای زبان %s نصب نشده است." #: src/edframe.cpp:871 msgid "Install" msgstr "نصب" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "پروندهٔ «â¨%sâ©Â» توسط برنامهٔ دیگری تغییر کرده است." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "بارگزاری مجدد پرونده" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "آیا می‌خواهید پرونده را مجدداً از دیسک بارگزاری کنید؟ در این صورت ویرایش‌های " "ذخیره نشده شما در Poedit از بین می‌روند." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ù†Ø§Ø¯ÛŒØ¯Ù‡â€ŒÚ¯Ø±ÙØªÙ†" #: src/edframe.cpp:968 msgid "Reload File" msgstr "بارگزاری مجدد پرونده" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "پرونده اصلاح شده است. آیا می‌خواهید تغییرات را ذخیره کنید؟" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "ذخیرهٔ تغییرات" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "اگر ذخیره نکنید، تغییرات شما از بین Ù…ÛŒ رود." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "ذخیره" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "ذخیره Ù†Ú©Ù†" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "ذخیره Ù†Ú©Ù†" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "درصورت ذخیره، تغییرات ایجاد شده توسط برنامه دیگر از بین می‌رود." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "لغو" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "به‌هرحال ذخیره شود" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "به‌هرحال ذخیره شود" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "ذخیره به عنوان…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "کامپایل به…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "پرونده‌های ترجمه کامپایل شدند" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "پرونده‌های اچ‌تی‌ام‌ال" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "به‌روز رسانی شکست خورد" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "به‌روز رسانی از پروندهٔ &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "به‌روز رسانی از پروندهٔ &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%Id مشکل در ترجمه ÛŒØ§ÙØª شد." msgstr[1] "%Id مشکل در ترجمه ÛŒØ§ÙØª شد." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "نتایج ارزیابی" #: src/edframe.cpp:1842 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 "" "ورودی‌های همراه خطا به صورت قرمز در سیاهه نشانه گذاری شده‌اند. جزئیات خطا " "هنگامی Ú©Ù‡ شما ورودی را بر می‌گزینید، نمایش داده خواهند شد." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "پرونده به صورت ایمن ذخیره شده‌است." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "پرونده به صورت ایمن ذخیره Ùˆ به قالب MO کامپایل شد، امّا احتمالاً به درستی کار " "نخواهد کرد." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "پرونده به صورت ایمن ذخیره شده‌است، امّا نمی‌توان آن را به قالب MO کامپایل Ùˆ از " "آن Ø§Ø³ØªÙØ§Ø¯Ù‡ کرد." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "پرونده به قالب MO کامپایل شد، امّا احتمالاً به درستی کار نخواهد کرد." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "نمی‌توان پرونده را به قالب MO کامپایل Ùˆ از آن Ø§Ø³ØªÙØ§Ø¯Ù‡ کرد." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "هیچ مشکلی در ترجمه ÛŒØ§ÙØª نشد." #: src/edframe.cpp:1894 #, 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] "ترجمه آمادهٔ Ø§Ø³ØªÙØ§Ø¯Ù‡ است، امّا هنوز %Id ورودی ترجمه نشده‌است." msgstr[1] "ترجمه آمادهٔ Ø§Ø³ØªÙØ§Ø¯Ù‡ است، امّا هنوز %Id ورودی ترجمه نشده‌اند." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "ترجمه آمادهٔ Ø§Ø³ØªÙØ§Ø¯Ù‡ است." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø± Poedit به طور خودکار محتوای نامعتبر در پروندهٔ «â¨%sâ©Â» را درست خواهد " "کرد." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "این پرونده حاوی موارد تکراری است Ú©Ù‡ در پرونده‌های PO مجاز نیست Ùˆ از Ø§Ø³ØªÙØ§Ø¯Ù‡ " "از پرونده جلوگیری Ù…ÛŒ کند. Poedit موضوع را Ø±ÙØ¹ کرد، اما شما باید ترجمه هر یک " "از اقلام مشخص شده به عنوان مورد نیاز را بررسی کنید Ùˆ در صورت لزوم آنها را " "اصلاح کنید." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "زبان ترجمه مشخص نشده است." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "انتخاب زبان" #: src/edframe.cpp:2317 msgid "Set language" msgstr "انتخاب زبان" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "اگر زبان ترجمه به درستی تنظیم نشده باشد پیشنهادات در دسترس نیست. سایر ویژگی " "ها، از قبیل ÙØ±Ù… های جمع، ممکن است تحت تاثیر قرار گیرد." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "زبانی Ú©Ù‡ قصد دارید به آن ترجمه کنید همان زبان پروندهٔ ترجمه است." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "تعمیر زبان" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "تعمیر زبان" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "این ÙØ§ÛŒÙ„ دارای ورودی هایی با ÙØ±Ù… های جمع است، اما سربرگ Plural-Forms " "پیکربندی نشده است." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "ورودی‌های این ÙØ§ÛŒÙ„ دارای تعداد اشکال جمع Ù…ØªÙØ§ÙˆØªÛŒ از آنچه Ø³Ø±ØµÙØ­Ù‡ Plural-Forms " "ÙØ§ÛŒÙ„ می‌گوید دارند" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "سربرگ مورد نیاز به ÙØ±Ù… جمع موجود نیست." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "در سرایند به ÙØ±Ù… جمع اشتباه نوشتاری وجود دارد (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "تعمیر سرایند" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "عبارت جمع Ø§Ø³ØªÙØ§Ø¯Ù‡ شده توسط ÙØ§ÛŒÙ„ برای %s غیرمعمول است." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "بازبینی" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "بارگذاری انگلیسی" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "ترجمه‌شده: %Id از %Id (â¦%IdÙªâ©)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "باقی‌مانده: %Id" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%Id خطا" msgstr[1] "%Id خطا" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%Id ورودی" msgstr[1] "%Id ورودی" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (ذخیره نشده)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (ØªØºÛŒÛŒØ±ÛŒØ§ÙØªÙ‡)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "به‌روز رسانی Ø­Ø§ÙØ¸Ù‡Ù” ترجمه شکست خورد: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "نگه‌دار" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "پاکسازی ترجمه‌های حذ٠شده" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "آیا از برداشتن همهٔ ترجمه‌هایی Ú©Ù‡ دیگر Ø§Ø³ØªÙØ§Ø¯Ù‡ نمی‌شوند، مطمئنید؟" #: src/edframe.cpp:2879 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 "" "اگر به پاکسازی ادامه دهید، تمام ترجمه‌هایی Ú©Ù‡ به عنوان حذÙ‌شده علامت‌گذاری " "شده‌اند، برای همیشه برداشته می‌شوند. اگر در آینده اضاÙÙ‡ شوند، مجبور خواهید بود " "دوباره آنها را ترجمه کنید." #: src/edframe.cpp:2883 msgid "Purge" msgstr "پاکسازی" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "رونوشت از متن منبع" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "رونوشت از متن منبع" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "مهار+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "پاک‌کردن ترجمه" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "پاک‌کردن ترجمه" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "ویرایش دیدگاه" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "ویرایش دیدگاه" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "وقایع کد" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "وقایع کد" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "پنهان کردن نوار کناری" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "نمایش نوار کناری" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "پنهان کردن نوار وضعیت" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "نمایش نوار وضعیت" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "طول رشته به نویسه: ترجمه | منبع" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "طول رشته به نویسه" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "متن منبع" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Ù…ÙØ±Ø¯" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "جمع" #: src/editing_area.cpp:477 msgid "Translation" msgstr "ترجمه" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "پیش‌ترجمه" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "نیازمند کار" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "نیازمند کار" #: src/editing_area.cpp:566 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" "n\\برای ترجمه، یک ÙØ§ÛŒÙ„ PO جدید بر اساس الگو ایجاد کنید." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "ایجاد ترجمه جدید" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "یک ترجمهٔ جدید از این پروندهٔ POT ایجاد شود." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "شناسه متن منبع" #: src/editing_area.cpp:768 msgid "Everything" msgstr "همه چیز" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "حالت %Id" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "حالت %Id (بدون Ø§Ø³ØªÙØ§Ø¯Ù‡)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "ØµÙØ±" #: src/editing_area.cpp:788 msgid "One" msgstr "یک" #: src/editing_area.cpp:790 msgid "Two" msgstr "دو" #: src/editing_area.cpp:804 msgid "Other" msgstr "غیره" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Ø¨Ø§ÙØªØ§Ø± رشته: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "شناسه رشته: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "قالب %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "قالب %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "ترجمه — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "شناسه" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "متن منبع — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "زبان ناشناخته" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "ادغام کاتالوگ gettext شکست خورد." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "گشودن در ویرایشگر" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "گشودن در ویرایشگر" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "هیچ اطلاعاتی در مورد وقوع این رشته در کد منبع در ÙØ§ÛŒÙ„ ارائه نشده است." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "بدون اطّلاعات کارکرد" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%Id رخداد کد" msgstr[1] "%Id رخداد کد" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "کد منبع ÛŒØ§ÙØª نشد" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit نمی تواند کد منبع را در جایی Ú©Ù‡ رشته Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ شود نشان دهد، زیرا " "ÙØ§ÛŒÙ„ یا در محل ارجاع شده در دسترس نیست یا یک مرجع نمادین است Ú©Ù‡ به یک ÙØ§ÛŒÙ„ " "واقعی اشاره نمی کند." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "نمی‌توان پرونده را گشود" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø± Poedit نتوانست پروندهٔ «â¨%sâ©Â» را بگشاید." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "ÛŒØ§ÙØªÙ†" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "جای‌گزینی" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "گزینه‌ها" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "نادیده Ú¯Ø±ÙØªÙ† بزرگی Ùˆ Ú©ÙˆÚ†Ú©ÛŒ حروÙ" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "پیچیدن به اطراÙ" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Ùقط کلمه کامل" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "ÛŒØ§ÙØªÙ† در متون منبع" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "ÛŒØ§ÙØªÙ† در ترجمه‌ها" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "ÛŒØ§ÙØªÙ† در دیدگاه‌ها" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "جای‌گزینی &همه" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "جای‌گزینی &همه" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&جای‌گزینی" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &قبلی" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&بعدی >" #: src/findframe.cpp:235 msgid "String to find" msgstr "عبارت برای ÛŒØ§ÙØªÙ†" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "عبارت جای‌گزین" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "کد یا نام زبان" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "زبان ترجمه" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "زبان برای ترجمه:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "همه رشته ها" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "پروژه ها" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "درباره %s بیشتر بدانید" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Ø§ÙØ²ÙˆØ¯Ù† پروژه" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Ø§ÙØ²ÙˆØ¯Ù† پروژه" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "â€Poedit - مدیر کاتالوگ‌ها" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "ویرایش…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "ایجاد یک پروژهٔ ترجمهٔ جدید" #: src/manager.cpp:145 msgid "Delete the project" msgstr "حذ٠پروژه" #: src/manager.cpp:146 msgid "Edit the project" msgstr "ویرایش پروژه" #: src/manager.cpp:176 msgid "Update all" msgstr "به‌روز رسانی همه" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "به‌روز رسانی همهٔ کاتالوگ‌های پروژه" #: src/manager.cpp:378 msgid "Total" msgstr "جمع Ú©Ù„" #: src/manager.cpp:379 msgid "Untrans" msgstr "ترجمه نشده" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "نیازمند کار" #: src/manager.cpp:381 msgid "Errors" msgstr "خطاها" #: src/manager.cpp:382 msgid "Last modified" msgstr "آخرین تغییر" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "گزینش شاخه" #: src/manager.cpp:433 msgid "Directories:" msgstr "شاخه‌ها:" #: src/manager.cpp:503 msgid "" msgstr "<بی‌نام>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "آیا از حذ٠پروژهٔ «â¨%sâ©Â» مطمئنید؟" #: src/manager.cpp:540 msgid "Delete project" msgstr "حذ٠پروژه" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "حذ٠پروژه، هیچ‌کدام از پرونده‌های ترجمه را حذ٠نخواهد کرد." #: src/manager.cpp:571 msgid "Confirmation" msgstr "تأیید" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "همهٔ کاتالوگ‌های این پروژه به‌روز رسانی شوند؟" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "به‌روز رسانی از کد منبع را در تمام ÙØ§ÛŒÙ„‌های پروژه انجام می‌دهد." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "بررسی برای به‌روز رسانی‌ها…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "مدیریت کاتالوگ" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&ترجیحات…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&ویرایش" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "برگردان" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "انجام دوباره" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "جای‌گذاری Ùˆ تطابق سَبک" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "حذÙ" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "املاء Ùˆ دستور زبان" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "نمایش املاء Ùˆ دستورزبان" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "سند را بررسی Ú©Ù†" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "بررسی املاء در هنگام نوشتن" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "بررسی دستور زبان با املاء" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "تصحیح خودکار املاء" #: src/menus.cpp:219 msgid "Substitutions" msgstr "جای‌گزینی‌ها" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "نمایش جای‌گزینی‌ها" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "رونوشت/جای‌گذاری هوشمند" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "نقل‌قول هوشمند" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "خط تیره‌های هوشمند" #: src/menus.cpp:226 msgid "Smart Links" msgstr "پیوندهای هوشمند" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "جای‌گزینی متن" #: src/menus.cpp:230 msgid "Transformations" msgstr "تغییر شکل‌ها" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "حرو٠را بزرگ Ú©Ù†" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "حرو٠را Ú©ÙˆÚ†Ú© Ú©Ù†" #: src/menus.cpp:234 msgid "Capitalize" msgstr "درشت نویسی" #: src/menus.cpp:237 msgid "Speech" msgstr "Ú¯ÙØªØ§Ø±" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "شروع به صحبت کردن" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "توق٠صحبت کردن" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&نما" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "نمایش نوار ابزار" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Ø³ÙØ§Ø±Ø´ÛŒâ€ŒØ³Ø§Ø²ÛŒ نوار ابزار…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "حالت تمام ØµÙØ­Ù‡" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "پنجره" #: src/menus.cpp:263 msgid "Minimize" msgstr "Ú©ÙˆÚ†Ú© سازی" #: src/menus.cpp:264 msgid "Zoom" msgstr "بزرگنمايی" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "خوش آمدید به Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "آوردن همه به جلو" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "اطلاعات در مورد مترجم" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "نام:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "اسم شما" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "رایانامه:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "نام Ùˆ نشانی رایانامهٔ شما Ùقط برای تنظیم Last-Translator در سرایند پرونده‌های " "GNU gettext Ø§Ø³ØªÙØ§Ø¯Ù‡ می‌شود." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "در حال ویرایش" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "به صورت خودکار پروندهٔ MO را هنگام ذخیره کامپایل Ú©Ù†" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "بررسی املاء" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "همیشه تمرکز به محوطه درونداد متن تغییر داده شود" #: src/prefsdlg.cpp:211 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 "" "هرگز اجازه‌نده Ú©Ù‡ سیاههٔ رشته‌ها تمرکز را بگیرد. اگر ÙØ¹Ø§Ù„ باشد، شما باید از " "مهار-پیکان‌های ØµÙØ­Ù‡â€ŒÚ©Ù„ید برای ØµÙØ­Ù‡â€ŒÙ†ÙˆØ±Ø¯ÛŒ Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید ولی همچنین می‌توانید " "Ø¨Ù„Ø§ÙØ§ØµÙ„Ù‡ نگارش متن را بدون ÙØ´Ø§Ø± دادن کلید جهش برای تغییر تمرکز انجام دهید." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "ظاهر" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Ø§Ø³ØªÙØ§Ø¯Ù‡ از قلم Ø³ÙØ§Ø±Ø´ÛŒ برای سیاههٔ:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Ø§Ø³ØªÙØ§Ø¯Ù‡ از قلم Ø³ÙØ§Ø±Ø´ÛŒ برای قسمت‌های متن:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "تغییر زبان واسط کاربری" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(ویندوز Û¸ یا جدیدتر لازم است)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "عمومی" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Ø§Ø³ØªÙØ§Ø¯Ù‡ از Ø­Ø§ÙØ¸Ù‡Ù” ترجمه" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "مدیریت…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "هنگام به‌روز رسانی از منبع" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "همتاسازی پوششی در پرونده" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "پیش‌ترجمه از ت‌م" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit می‌تواند سعی کند ورودی های جدید را Ùقط از ترجمه های قبلی موجود در ÙØ§ÛŒÙ„ " "یا از Ú©Ù„ Ø­Ø§ÙØ¸Ù‡ ترجمه شما Ù¾ÙØ± کند. Ø§Ø³ØªÙØ§Ø¯Ù‡ از TM در صورتی Ú©Ù‡ تقریباً خالی باشد " "بسیار مؤثر نخواهد بود، اما با Ø§ÙØ²ÙˆØ¯Ù† ترجمه‌های بیشتر به آن، بهتر می‌شود." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "ترجمه‌های ذخیره شده:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "اندازهٔ پایگاه‌دادهٔ روی دیسک:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "درون‌ریزی پرونده‌های ترجمه…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "درون‌ریزی پرونده‌های ترجمه…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "درون‌ریزی از TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "درون‌ریزی از TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "برون‌ریزی به TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "برون‌ریزی به TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "بازنشانی" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "گزینش پرونده‌های ترجمه برای درون‌ریزی" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "گزینش پرونده‌های TMX برای درون‌ریزی" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "پرونده‌های TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "درون‌ریزی ترجمه‌ها…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "برون‌ریزی به عنوان…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "برون‌ریزی ترجمه‌ها…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "برون‌ریزی Ø­Ø§ÙØ¸Ù‡Ù” ترجمه به «â¨%sâ©Â» شکست خورد." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "بازنشانی Ø­Ø§ÙØ¸Ù‡Ù” ترجمه" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "آیا از بازنشانی Ø­Ø§ÙØ¸Ù‡Ù” ترجمه مطمئنید؟" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "بازنشانی Ø­Ø§ÙØ¸Ù‡Ù” ترجمه، تمام ترجمه‌های ذخیره شده را به طور برگشت ناپذیر حذ٠" "می‌کند. نمی‌توانید این عملیات را بازگردانید." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "ت‌م" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Ø­Ø§ÙØ¸Ù‡Ù” ترجمه" #: src/prefsdlg.cpp:730 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 "" "استخراج‌کننده‌های کد منبع برای ÛŒØ§ÙØªÙ† رشته‌های قابل ترجمه در ÙØ§ÛŒÙ„‌های کد منبع Ùˆ " "استخراج آن‌ها به‌منظور ترجمه Ø§Ø³ØªÙØ§Ø¯Ù‡ می‌شوند." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "استخراج کننده‌های Ø³ÙØ§Ø±Ø´ÛŒ:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "استخراج کننده‌های Ø³ÙØ§Ø±Ø´ÛŒ:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "از همهٔ زبان‌هایی Ú©Ù‡ توسط ابزار GNU gettext شناخته می‌شود، پشتیبانی می‌شود " "(پی‌اچ‌پی، سی Ùˆ سی پلاس پلاس، سی شارپ، پرل، پایتون، جاوا، جاوااسکریپت Ùˆ غیره)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "حذ٠استخراج کننده" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "آیا از حذ٠استخراج کننده «%s» مطمئنید؟" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "استخراج کننده" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "حساب‌ها" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "بررسی بروزرسانی ها بصورت خودکار" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "شامل نگارش‌های بتا" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "نسخه های بتا شامل آخرین ویژگی های جدید Ùˆ Ù¾ÛŒØ´Ø±ÙØªÙ‡ هستند، اما ممکن است Ú©Ù…ÛŒ " "ناپایدار باشند." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "به‌روز رسانی‌ها" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "این تنظیمات بر قالب‌بندی داخلی ÙØ§ÛŒÙ„ های PO تأثیر می‌گذارد. اگر نیازمندی خاصی " "دارید، مانند کنترل نسخه، آن‌ها را تنظیم کنید." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "انتهای خط:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "یونیکس (توصیه شده)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "ویندوز" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "پیچیدن در:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Ø­ÙØ¸ قالب‌بندی ÙØ§ÛŒÙ„‌های موجود" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Ù¾ÛŒØ´Ø±ÙØªÙ‡" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "در حال آماده‌سازی رشته‌ها…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "پیش‌ترجمه از Ø­Ø§ÙØ¸Ù‡Ù” ترجمه…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u رشته پیش‌ترجمه شد" msgstr[1] "%u رشته پیش‌ترجمه شد" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "پیش‌ترجمه…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%Id ورودی پیش‌ترجمه شد." msgstr[1] "%Id ورودی پیش‌ترجمه شد." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "ترجمه‌ها به عنوان نیاز به کار نشانه‌گذاری شدند، زیرا ممکن است نادرست باشند. " "شما باید آن‌ها را از نظر درستی بررسی کنید." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "هیچ ورودی نمی‌تواند از پیش‌ترجمه شود." #: src/pretranslate.cpp:218 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 هیچ رشته‌ای مشابه محتوای این ÙØ§ÛŒÙ„ ندارد. Ùقط پس از اینکه Poedit از " "ÙØ§ÛŒÙ„‌هایی Ú©Ù‡ به صورت دستی ترجمه کرده‌اید یاد بگیرد، برای ترجمه‌های نیمه خودکار " "مؤثر است." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "پیش‌ترجمه" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "پیش‌ترجمه نیازمند موجود بودن متن منبع است. اگر Ùقط از شناسه‌های بدون متن واقعی " "Ø§Ø³ØªÙØ§Ø¯Ù‡ شود، کار نمی‌کند." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "امکان پیش ترجمه زبان ناشناخته نیست." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "پیش از ترجمه مستلزم آن است Ú©Ù‡ زبان متن مبدأ مشخص باشد. Poedit نتوانست آن را " "در این ÙØ§ÛŒÙ„ شناسایی کند." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Ùقط مطابقت های دقیق را پر کنید" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "به‌طور Ù¾ÛŒØ´â€ŒÙØ±Ø¶ØŒ نتایج نادرست نیز گنجانده شده است، اما با «نیازمند کار» " "علامت‌گذاری شده است. این گزینه را علامت بزنید تا Ùقط موارد منطبق کامل را شامل " "شود." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "همتاسازی‌های دقیق را به عنوان نیاز به کار نشانه‌گذاری نکنید" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Ùقط در صورتی ÙØ¹Ø§Ù„ کنید Ú©Ù‡ به Ú©ÛŒÙیت TM خود اعتماد دارید. به طور Ù¾ÛŒØ´â€ŒÙØ±Ø¶ØŒ همه " "موارد همتا از TM به عنوان نیاز به کار نشانه‌گذاری شده‌اند Ùˆ باید قبل از " "Ø§Ø³ØªÙØ§Ø¯Ù‡ بررسی شوند." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "پیش ترجمه به طور خودکار مطابقت های دقیق یا مبهم رشته های ترجمه نشده را در " "Ø­Ø§ÙØ¸Ù‡ ترجمه پیدا Ù…ÛŒ کند Ùˆ ترجمه های آنها را پر Ù…ÛŒ کند." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "در حال لغو کردن…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "پوشه‌ها یا پرونده‌ها را اینجا رها کنید" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "پوشه‌ها یا پرونده‌ها را اینجا رها کنید" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "پوشه های اضاÙÙ‡ شده…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Ø§ÙØ²ÙˆØ¯Ù† پوشه‌ها…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Ø§ÙØ²ÙˆØ¯Ù† پرونده‌ها…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Ø§ÙØ²ÙˆØ¯Ù† پرونده‌ها…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Ø§ÙØ²ÙˆØ¯Ù† با شتاب…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Ø§ÙØ²ÙˆØ¯Ù† با شتاب…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "نشان دادن در یابنده" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "نمایش در Ø§Ú©ØªØ´Ø§ÙØ§Øª" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "نمایش در پوشه" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "مسیرها" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "مسیر های جدا شده" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "تنظیمات Ù¾ÛŒØ´Ø±ÙØªÙ‡Ù” استخراج" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "استخراج یادداشت‌ها برای مترجمان از:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "دیدگاه‌ها با پیشوند:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "همهٔ دیدگاه‌ها" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "پرچم‌های اضاÙÛŒ xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "کلیدواژه‌های اضاÙÛŒ" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "نام پروژه‌ای Ú©Ù‡ ترجمه برای آن است" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "نام تیم Ùˆ آدرس ایمیل یا پیوند" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "به عنوان مثال nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (توصیه شده)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "Ù„Ø·ÙØ§ ابتدا ÙØ§ÛŒÙ„ را ذخیره کنید. این بخش تا آن زمان قابل ویرایش نیست." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "درستی متغیرها" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "متغیر “%s†در ترجمه دچار خطا است." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "مکان‌نمای اضاÙÛŒ «%s» Ú©Ù‡ در متن منبع نیست." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "ترجمه به صورت جمع" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "همه اَشکال جمع ترجمه نشدند." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "حرو٠بزرگ/Ú©ÙˆÚ†Ú© ناسازگار" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "ترجمه باید به صورت یک جمله شروع شود." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "ترجمه باید با حرو٠کوچک شروع شود." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "ÙØ¶Ø§ÛŒ خالی ناسازگار" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "ترجمه با یک ÙØ§ØµÙ„Ù‡ شروع نشده است." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "ترجمه با یک ÙØ§ØµÙ„Ù‡ شروع شده، ولی متن منبع اینطور نیست." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "ترجمه یک خط‌جدید در آخر را ÙØ±Ø§Ù…وش کرده است." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "ترجمه با یک خط‌جدید به پایان رسیده، ولی متن منبع اینطور نیست." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "ترجمه یک ÙØ§ØµÙ„Ù‡ در آخر را ÙØ±Ø§Ù…وش کرده است." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "ترجمه با یک ÙØ§ØµÙ„Ù‡ به پایان رسیده، ولی متن منبع اینطور نیست." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "بررسی نقطه‌گذاری" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "ترجمه باید با یک “%s†به پایان برسد." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "ترجمه نباید با یک “%s†به پایان برسد." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "ترجمه با “%s†به پایان رسیده اما متن منبع با “%s†به پایان رسیده است." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "پاک‌کردن Ùهرست" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "پاک‌کردن Ùهرست" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "دیدگاه:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "به‌روز رسانی" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&حذÙ" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "حذ٠دیدگاه" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "ویرایش پروژه" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "نام پروژه:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "مرور" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Ø§ÙØ²ÙˆØ¯Ù† شاخه به سیاهه" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "تأیید" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&پرونده" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&جدید…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "جدید از پروندهٔ &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "جدید از پروندهٔ &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&گشودن…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "گشودن موارد اخیر" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "گشودن موارد اخیر" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "باز کردن ترجمه ابری…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "باز کردن ترجمه ابری…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&شروع پنجره" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&شروع پنجره" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&مدیر کاتالوگ‌ها" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&مدیر کاتالوگ‌ها" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&بستن" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&ذخیره" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "ذخیره به &عنوان…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "ذخیره به &عنوان…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "کامپایل به MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "بررسی برای به‌روز رسانی‌ها…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "تنظیمات…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&ترجیحات" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&خروج" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "خروج" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "رونوشت از Ù…ÙØ±Ø¯" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "رونوشت از Ù…ÙØ±Ø¯" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "ترجمه نیازمند کار" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "ترجمه نیازمند کار" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "ویرایش &دیدگاه" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "ویرایش &دیدگاه" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "پیشنهادات" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&ÛŒØ§ÙØªÙ†â€¦" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "جای‌گزینی…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "ÛŒØ§ÙØªÙ† بعدی" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "ÛŒØ§ÙØªÙ† قبلی" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "ÛŒØ§ÙØªÙ† Ùˆ جای‌گزینی…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "ÛŒØ§ÙØªÙ† بعدی" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "ÛŒØ§ÙØªÙ† قبلی" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "نمایش &شناسهٔ رشته" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "نمایش &شناسهٔ رشته" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "نمایش هشدارها" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "نمایش هشدارها" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "مرتب‌کردن بر اساس ترتیب &پرونده" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "مرتب‌کردن بر اساس ترتیب &پرونده" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "مرتب‌کردن بر اساس &منبع" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "مرتب‌کردن بر اساس &منبع" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "مرتب‌کردن بر اساس &ترجمه" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "مرتب‌کردن بر اساس &ترجمه" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&گروه‌بندی بر اساس زمینه" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&گروه‌بندی بر اساس زمینه" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "ابتدا ورودی‌های همراه خطا" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "ابتدا ورودی‌های همراه خطا" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "ابتدا ورودی‌های ترجمه‌&نشده" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "ابتدا ورودی‌های ترجمه‌&نشده" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&نمایش رخداد کد" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&نمایش رخداد کد" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "نمایش نوار جانبی" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "نمایش نوار وضعیت" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&ترجمه" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&به‌روز رسانی از کد منبع" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&به‌روز رسانی از کد منبع" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "همگام‌سازی با Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "پیش‌&ترجمه…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&اعتبارسنجی ترجمه‌ها" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&اعتبارسنجی ترجمه‌ها" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&پاکسازی ترجمه‌های حذ٠شده" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&پاکسازی ترجمه‌های حذ٠شده" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&ویژگی‌ها…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&برو" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&انجام Ùˆ بعدی" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&انجام Ùˆ بعدی" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "قبلا ویرایش شده است" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "قبلا ویرایش شده است" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "ترجمهٔ &قبلی" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "ترجمهٔ &قبلی" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "ترجمهٔ &بعدی" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "ترجمهٔ &بعدی" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "ناتمام &قبلی" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "ناتمام &قبلی" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "ناتمام &بعدی" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "ناتمام &بعدی" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "حالت جمع قبلی" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "حالت جمع قبلی" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "حالت جمع بعدی" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "حالت جمع بعدی" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "راهنمای &برخط" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "راهنمای &برخط" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "کتابچهٔ راهنمای &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "کتابچهٔ راهنمای &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "دربارهٔ Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&درباره" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "برپا کردن استخراج کننده" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "سیاههٔ پسوندهای جدا شده توسط سمیکلون (به عنوان مثال *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "احضاریه:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "ÙØ±Ù…ان برای استخراج ترجمه‌ها:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "این دستوری است Ú©Ù‡ برای راه‌اندازی استخراج‌کننده Ø§Ø³ØªÙØ§Ø¯Ù‡ می‌شود.\n" "%o به نام ÙØ§ÛŒÙ„ خروجی، %K به Ùهرست\n" "کلیدواژه‌ها، %F به Ùهرست ÙØ§ÛŒÙ„‌های ورودی،\n" "%C به پرچم مجموعه نویسه‌ها گسترش می‌یابد (در زیر ببینید)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "یک مورد در سیاههٔ کلیدواژه‌ها:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "این به خط ÙØ±Ù…ان یکبار برای هر پرونده‌ی درونداد ضمیمه خواهد شد. %k به کلیدواژه " "گسترش می‌یابد." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "یک مورد در سیاههٔ پرونده‌های درونداد:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "این به خط ÙØ±Ù…ان یکبار برای هر پرونده‌ی درونداد ضمیمه خواهد شد. %f به نام " "پرونده گسترش می‌یابد." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "مجموعه‌نویسه کد منبع:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Ùقط در صورتی Ú©Ù‡ مجموعه نویسه کد منبع داده شده باشد، \n" " این به خط ÙØ±Ù…ان متصل می‌شود. %c به مقدار مجموعه نویسه گسترش Ù…ÛŒ یابد." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "ویژگی‌های ترجمه" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "نگارش Ùˆ نام پروژه:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "گروه ترجمه:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "حالت‌های جمع:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Ø§Ø³ØªÙØ§Ø¯Ù‡ از قوانین پیش‌گزیده برای این زبان" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Ø§Ø³ØªÙØ§Ø¯Ù‡ از عبارت Ø³ÙØ§Ø±Ø´ÛŒ" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "دربارهٔ حالت‌های جمع بخوانید" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "مجموعه‌نویسه:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "تنظیمات Ù¾ÛŒØ´Ø±ÙØªÙ‡Ù” استخراج…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "تنظیمات Ù¾ÛŒØ´Ø±ÙØªÙ‡Ù” استخراج…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "ویژگی‌های ترجمه" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "مسیرهای منبع" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "مسیرهای منبع" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "متن را از ÙØ§ÛŒÙ„‌های منبع در مسیرهای زیر استخراج کنید:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "مسیر پایه:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "کلیدواژه‌های منبع" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "کلیدواژه‌های منبع" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "از این کلمات کلیدی (نام توابع) برای تشخیص رشته های قابل ترجمه\n" "ÙØ§ÛŒÙ„ منبع Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "هم چنین از کلیدواژه‌های Ù¾ÛŒØ´â€ŒÙØ±Ø¶ برای زبان‌های پشتیبانی شده Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "دربارهٔ کلیدواژه‌های gettext بخوانید" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "گشودن پرونده" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "ذخیرهٔ پرونده" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "اعتبارسنجی" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "بررسی برای خطاها در ترجمه" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "به‌روز رسانی از کد" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "به‌روز رسانی از کد" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "به‌روز رسانی از کد منبع" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "نوار کناری" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "نمایش یا پنهان کردن نوار کناری" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "متن منبع قبلی" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "متن منبع قدیمی (قبل از تغییر در Ø·ÛŒ به‌روز رسانی) Ú©Ù‡ ترجمه اکنون نادرست با آن " "مطابقت دارد." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "یادداشت‌ها برای مترجمان" #: src/sidebar.cpp:196 msgid "Comment" msgstr "دیدگاه" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Ø§ÙØ²ÙˆØ¯Ù† دیدگاه" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Ø§ÙØ²ÙˆØ¯Ù† دیدگاه" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "حذ٠از Ø­Ø§ÙØ¸Ù‡Ù” ترجمه" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "حذ٠از Ø­Ø§ÙØ¸Ù‡Ù” ترجمه" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "پیشنهادات ترجمه" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "مورد منطبقی ÛŒØ§ÙØª نشد" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "مورد منطبقی ÛŒØ§ÙØª نشد" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "این رشته در Ø­Ø§ÙØ¸Ù‡Ù” ترجمهٔ Poedit پیدا شده است." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "پیشنهادات ترجمه مستلزم آن است Ú©Ù‡ زبان متن مبدأ شناخته شده باشد. Poedit " "نتوانست آن را در این ÙØ§ÛŒÙ„ شناسایی کند." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "نمی‌توان برنامه را اجرا کرد: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "ÙØ§ÛŒÙ„ TMX بد Ø´Ú©Ù„ است." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "پایگاه داده Ø­Ø§ÙØ¸Ù‡ ترجمه خراب است: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "خطای Ø­Ø§ÙØ¸Ù‡Ù” ترجمه: %s (%Id)" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Ø§Ø³ØªÙØ§Ø¯Ù‡ از زبان پیش‌گزیده)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "گزینش زبان" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "گزینش زبان ترجیحی شما" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "شما باید Poedit را برای اعمال این تغییرات دوباره راه‌اندازی نمایید." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "نمی‌توان مسیر موقت محلی را ساخت." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "هیچ ترجمه‌ای وجود ندارد. این غیرعادی است." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "ساده‌ترین راه برای پر کردن این ÙØ§ÛŒÙ„ با ترجمه، به‌روز رسانی آن از یک POT است:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "به‌روز رسانی از POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "رشته‌های قابل ترجمه را از یک الگوی POT موجود برمی‌دارد." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "هم‌چنین می‌توانید رشته‌های قابل ترجمه را به صورت مستقیم از کد منبع استخراج کنید:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "استخراج از منبع" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "استخراج کد منبع را در ترجیحات پیکربندی کنید." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "نگارش %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "ایجاد جدید" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "ترجمه‌ای جدید از الگوی POT ایجاد Ú©Ù†." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "مرور پرونده‌ها" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "گشودن Ùˆ ویرایش پرونده‌های ترجمه." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "ترجمه پروژه ابری" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "به صورت برخط با Ø§ÙØ±Ø§Ø¯ دیگر همکاری کنید." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "پرونده‌های اخیر" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "همگام‌سازی" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "همگام‌سازی ترجمه با Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "درباره %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "ترجیحات %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "درباره %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "خدمات" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "پنهان کردن %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "پنهان کردن بقیه" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "نمایش همه" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "خروج %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "ترجیحات…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "ترجیحات..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "ترجیحات..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&اعمال" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "اعمال" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&بازگشت" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "بازگشت" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&لغو" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&پاک‌کردن" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "پاک‌کردن" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "رونوشت" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&برش" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "برش" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "ویرایش" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&خروج" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "راهنما" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&جدید" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "جدید" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&خیر" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "خیر" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&تأیید" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "گشودن…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&گشودن..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "گشودن..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&جای‌گذاری" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "جای‌گذاری" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "ترجیحات" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "انجام &دوباره" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "تازه‌سازی" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&ذخیره به عنوان" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "ذخیره به عنوان" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "گزینش &همه" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "گزینش همه" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&برگردان" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&بله" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "بله" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "تبدیل+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "ورود" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "بالا" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "پایین" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Ú†Ù¾" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "راست" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "مهار" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "دگرساز" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "تبدیل" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/hu.po0000644000175100001660000027305115011674363011105 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-18 10:16\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: hu\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Ezen értesítÅ‘ üzenet elrejtése" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ne jelenjen meg újra" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ne jelenjen meg újra" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Frissítési összefoglaló" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Frissítési összefoglaló" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Bezárás" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problémák" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Fájl" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Sor" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Probléma" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Új karakterláncok" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Új szövegek" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Eltávolított karakterláncok" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Eltávolított karakterláncok" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Forrásfájlok összegyűjtése…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Fordítható karakterláncok kinyerése %s fájlból…" msgstr[1] "Fordítható karakterláncok kinyerése %s fájlból…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Nem sikerült betölteni a fájlt kibontott fordításokkal." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Ebben: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Nem áll rendelkezésre forráskód." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "A fordításokat nem lehet frissíteni a forráskódból, mert a fájl " "tulajdonságaiban megadott helyen nem található kód." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Engedély megtagadva." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Nincs engedélyed a forráskód fájlok olvasására a fájl tulajdonságaiban a " "megadott helyrÅ‘l." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Ha korábban megtagadta a fájljaihoz való hozzáférést, engedélyezheti azt a " "Rendszerbeállítások > Adatvédelem és biztonság > Fájlok és mappák " "menüpontban." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Ha korábban megtagadtad a fájlokhoz való hozzáférést, akkor engedélyezheted " "a Rendszerbeállítások > Biztonság és adatvédelem > Adatvédelem > Fájlok és " "mappák menüben." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Nem sikerült a karakterláncok kinyerése a forráskódból." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "A(z) „%s†fájl nem nyitható meg." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Fordítások frissítése" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Különbségek meghatározása…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Eltérések összefésülése…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "A fordítási fájl már naprakész, a karakterláncok nem változtak." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "A fordítási fájl %s változással frissült." msgstr[1] "A fordítási fájl %s változással frissült." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Új karakterláncok fordítása:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Eltávolított karakterláncok (már nincsenek használva):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "%d problémát észleltünk a forrás karakterláncokkal kapcsolatban." msgstr[1] "%d problémát észleltünk a forrás karakterláncokkal kapcsolatban." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Részletek megtekintése…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Részletek megtekintése…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Hibás fejléc: „%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO fordítási fájlok" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT fordítási sablonok" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF fordítási fájlok" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode fordítási katalógus" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON fordítási fájlok" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter fordítási fájlok" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Minden fordítási fájl" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "A fájl formátumát a Poedit nem ismeri fel." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "Ez a JSON fájl nem fordítási fájl, és nem szerkeszthetÅ‘ a Poedittel." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "A fájl tartalmának olvasása sikertelen a következÅ‘ hibával: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "A(z) „%s†fájl csak olvasható és nem lehet menteni.\n" "Mentse el a fájlt más néven." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "A(z) %s fájl mentése nem sikerült." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "KépernyÅ‘képek:" #: src/catalog_po.cpp:134 #, 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] "A(z) „%2$s†fájl %1$i sora nem lett megfelelÅ‘en betöltve." msgstr[1] "A(z) „%2$s†fájl %1$i sora nem lett megfelelÅ‘en betöltve." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "A(z) „%2$s†fájl %1$d. sora sérült (érvénytelen %3$s adat)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Sérült PO fájl: egyes számú msgstr van használva msgid_plural megadással" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Sérült katalógusfájl: többes számú msgstr van használva msgid_plural nélkül" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "A fájl nem tölthetÅ‘ be, valószínűleg sérült." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Hibák történtek a fájl betöltése során. Ezért egyes adatok hiányozhatnak " "vagy megsérülhettek." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Probléma történt a fájl szépre formázása közben (de rendben mentve lett)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "A fájlt nem lehet a fordítás beállításainál megadott „%s†karakterkódolással " "menteni.\n" "\n" "Ehelyett a mentés UTF-8 kódolással történt, és a beállítás ennek megfelelÅ‘en " "módosult." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Hiba a fájl mentése során" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "A(z) „%s†nem érvényes POT fájl." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Váratlanul hiányzó tartalom az XCLOC fájlban." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Az XCLOC fájlok más helyre mentése nem támogatott." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Hiba az XLIFF-fájl betöltése során: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "nem támogatott verzió (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Hibás jelölés a fordítás szövegében." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Kapcsolja a Poeditet egy támogatt felhÅ‘s honosítási platformhoz, hogy " "zökkenÅ‘mentesen szinkronizálja a rajtuk kezelt fordításokat." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Hogyan működik a felhÅ‘s szinkronizálás?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Fiók" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(nincs bejelentkezve)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "FelhÅ‘s fordítás megnyitása" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Fiókok kezelése" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekt:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Nyelv:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Bejelentkezés egy felhÅ‘s fiókba" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Bejelentkezés egy felhÅ‘s fiókba" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Nem szerepel fordítási projekt a fiókjában." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "A legújabb fordítások letöltése…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Bejelentkezés ide: %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Szinkronizálás" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Fordítások feltöltése ide: %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "A fordítások feltöltése ide sikertelen: %s." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Szinkronizálási hiba" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Hozzáadás" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Ismeretlen Crowdin hiba." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Nem engedélyezett, kérjük jelentkezzen be újra." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "A karakterlánc-alapú Crowdin projektek nem támogatottak." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "A fordítások letöltése ebben a projektben le van tiltva." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Bejelentkezés" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Bejelentkezés" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Kijelentkezés" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Kijelentkezés" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Tudjon meg többet a Crowdinról" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "A Crowdin egy online fordításkezelÅ‘ platform és kollaboratív fordítási " "eszköz. Mi magunk is a Crowdint használjuk a Poedit számos nyelvre történÅ‘ " "fordításához, és nagyon szeretjük." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Várakozás a hitelesítésre…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Felhasználói adatok frissítése…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Bejelentkezés a Crowdinra" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Nem sikerült szinkronizálni a Crowdinnel." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin hiba" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Fordítások feltöltése…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Másolás" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "További információk" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Súgó" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Az MO fájlok nem szerkeszthetÅ‘k közvetlenül a Poeditben." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Hiba a fájl megnyitása során" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Kérjük, nyissa meg és szerkessze helyette a megfelelÅ‘ PO fájlt. Amikor " "menti, a MO fájl is frissülni fog." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ne törölje az ideiglenes fájlokat (hibakereséshez)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "egy poedit:// URI kezelése" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "ugrás a tételhez a megadott sorszámnál" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Nem sikerült kommunikálni a Poedit folyamattal." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Nem kezelt kivétel történt: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Fordítási sablon kiválasztása" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Érvénytelen fájl" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Fordítási fájl kiválasztása" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "A Poedit egy könnyen használható fordítás szerkesztÅ‘." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "A Poedit ablakára egyszerre több fájlt nem lehet ráhúzni." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "A(z) „%s†fájl nem fordítási fájl." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "A(z) „%s†fájl nem létezik." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Helyesírás-ellenÅ‘rzés le van tiltva, mert a(z) %s szótár nincs telepítve." #: src/edframe.cpp:871 msgid "Install" msgstr "Telepítés" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "“%s†fájlt egy másik alkalmazás megváltoztatta." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Fájl újratöltése" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Újra szeretné tölteni a fájlt a lemezrÅ‘l? Ha betölti, a Poedit programban " "elmentett módosításai elvesznek." #: src/edframe.cpp:968 msgid "Ignore" msgstr "MellÅ‘zés" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Fájl újratöltése" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "A fájl megváltozott. Szeretné menteni a változásokat?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Változások mentése" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "A változtatások elvesznek, ha nem menti azokat." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Mentés" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ni&ncs mentés" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Nincs mentés" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "A más alkalmazás által végrehajtott módosítások elvesznek, ha menti a fájlt." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Mégse" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Mentés mindenképp" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Mentés mindenképp" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Mentés másként…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Lefordítás…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Lefordított fordítási fájlok" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Exportálás HTML fájlba…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML fájlok" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Exportálás HTML fájlba" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Sikertelen frissítés" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Referencia fájl megnyitása" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Frissítés &POT fájlból…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Frissítés &POT fájlból…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d probléma van a fordítással." msgstr[1] "%d probléma van a fordítással." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Érvényesítés eredménye" #: src/edframe.cpp:1842 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 "" "A hibás bejegyzések pirossal meg lettek jelölve a listában. A hiba részletei " "megjelennek, ha egy ilyen bejegyzést választ ki." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "A fájl biztonságosan el lett mentve" #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "A fájl biztonságosan el lett mentve, de lehetséges, hogy nem fog megfelelÅ‘en " "működni." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "A fájl mentése sikerült, de nem lehet MO formátumúra fordítani és használni." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "A fájl át lett fordítva MO formátumra, de lehetséges, hogy nem fog " "megfelelÅ‘en működni." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "A fájlt nem lehet MO formátumra fordítani és használni." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "A fordítással nincsenek problémák." #: src/edframe.cpp:1894 #, 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] "A fordítás használatra kész, de %d bejegyzés még nincs lefordítva." msgstr[1] "A fordítás használatra kész, de %d bejegyzés még nincs lefordítva." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "A fordítás használatra kész." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "A Poedit automatikusan kijavította a(z) „%s†fájlban lévÅ‘ érvénytelen " "tartalmat." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "A fájl ismétlÅ‘dÅ‘ elemeket tartalmazott, amely a PO fájlokban nem " "engedélyezett, és megakadályozza a fájl használatát. A Poedit kijavította " "ezt a problémát, de minden bizonytalannak jelölt fordítási bejegyzés " "felülvizsgálata és esetleges javítása szükséges." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "A fordítás nyelve nincs beállítva." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Nyelv kiválasztása" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Válasszon nyelvet" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 érhetÅ‘ek el, ha a fordítás nyelve nincs pontosan beállítva. " "Ez más funkciókra, például a többes számú alakokra is hatással lehet." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "A fordítás nyelve megegyezik a forrásnyelvvel." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Nyelv kijavítása" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Nyelv kijavítása" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Ebben a fájlban többes számú bejegyzések vannak, de nincs Plural-Forms " "fejléc beállítva." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "A fájlban lévÅ‘ egyes bejegyzéseknek eltérÅ‘ darabszámú többes számuk van, " "mint amit a katalógus Plural-Forms fejléce mond" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "A szükséges Plural-Forms fejléc hiányzik." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Szintaktikai hiba a Plural-Forms fejlécben („%sâ€)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Fejléc javítása" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Fejléc javítá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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "A fájl á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 file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Felülvizsgálat" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Szeretné az angolt használni forrásszövegként?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Ez a fájl szöveges azonosítókat használ forrásszöveg helyett. A Poedit be " "tudja tölteni az angol szövegeket a következÅ‘ fájlból: „%sâ€." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Angol betöltése" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Lefordítva: %d/%d (%d%%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Maradt: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d hiba" msgstr[1] "%d hiba" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d bejegyzés" msgstr[1] "%d bejegyzés" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (nincs mentve)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (módosítva)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Nem sikerült frissíteni a fordítási memóriát: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "„%s†fájlt nem lehetett elmenteni." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "A forrással azonos fordítások eltávolítása" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "El szeretné távolítani az összes olyan fordítást, amely azonos a " "forrásszöveggel?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Ez a művelet törli a forrásszövegnek pontosan megfelelÅ‘ fordításokat. Ezt " "nem lehet visszavonni." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Megtartás" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Eltávolítás" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Törölt fordítások tisztítása" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Tényleg törölni szeretné a már nem használt fordításokat?" #: src/edframe.cpp:2879 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 "" "Ha folytatja a tisztítást, akkor a töröltként megjelölt fordítások végleg " "eltávolításra kerülnek. Újra kell fordítania Å‘ket, ha ezek a jövÅ‘ben újra " "hozzá lesznek adva." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Tisztítás" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Másolás a forrásszövegbÅ‘l" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Másolás a forrásszövegbÅ‘l" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Fordítás törlése" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Fordítás törlése" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Megjegyzés szerkesztése" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Megjegyzés szerkesztése" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Kód elÅ‘fordulásai" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Kód elÅ‘fordulásai" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Oldalsáv elrejtése" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Oldalsáv megjelenítése" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Ãllapotsor elrejtése" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Ãllapotsor megjelenítése" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Karakterlánc hossza: fordítás | forrás" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Karakterlánc hossza" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Forrásszöveg" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Egyes szám" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Többes szám" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Fordítás" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "ElÅ‘fordított" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Munkát igényel" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Munkát igényel" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Új fordítási projekt létrehozása" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Készítsen új fordítást ebbÅ‘l a POT fájlból." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Forrásszöveg-azonosító" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Minden" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "%i. alak" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Form %i (nem használt)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nulla" #: src/editing_area.cpp:788 msgid "One" msgstr "Egy" #: src/editing_area.cpp:790 msgid "Two" msgstr "KettÅ‘" #: src/editing_area.cpp:804 msgid "Other" msgstr "Egyéb" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Karakterlánc szövegösszefüggése: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Karakterláncazonosító: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s formátum" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s formátum" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Fordítás — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "Azonosító" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Forrásszöveg – %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "ismeretlen nyelv" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Hálózati hiba: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Ismeretlen hiba" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "A gettext katalógusok egyesítése meghiúsult." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Megnyitás a szerkesztÅ‘ben" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Megnyitás a szerkesztÅ‘ben" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "A fájl nem tartalmaz információt a karakterlánc forráskódban való " "elÅ‘fordulásáról." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Nincs használati információ" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kód elÅ‘fordulása" msgstr[1] "%d kód elÅ‘fordulásai" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Forráskód nem található" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "A Poedit nem tudja megjeleníteni a forráskódot ott, ahol a karakterláncot " "használják, mert a fájl vagy nem érhetÅ‘ el a hivatkozott helyen, vagy " "szimbolikus hivatkozás, amely nem egy valós fájlra mutat." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "A fájl nem nyitható meg" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "A Poedit nem tudja megnyitni ezt a fájlt: “%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Keresés" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Csere" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Beállítások" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Nem kis-nagybetű érzékeny" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Körkörös keresés" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Csak teljes szóra" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Keresés a forrásszövegben" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Keresés a fordításban" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Keresés a megjegyzésekben" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Össz&es cseréje" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Össz&es cseréje" #: src/findframe.cpp:150 msgid "&Replace" msgstr "Cse&re" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &ElÅ‘zÅ‘" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&KövetkezÅ‘ >" #: src/findframe.cpp:235 msgid "String to find" msgstr "KeresendÅ‘ karakterlánc" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "BehelyettesítendÅ‘ karakterlánc" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "figyelmeztetés: " #: src/gexecute.cpp:171 msgid "error: " msgstr "hiba: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Nyelv nyeve vagy kódja" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Fordítás nyelve" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "A fordítás nyelve:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Összes karakterlánc" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Nem sikerült letölteni a Localazy projekt részleteit." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Hiba történt a fordtások Localazyre történÅ‘ feltöltése során." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projektek" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "BÅ‘vebben a %s szolgáltatásról" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "A Localazy egy magas szinten automatizált honosítási platform, amely " "lehetÅ‘vé teszi, hogy bárki egyszerűen több nyelvre fordíthassa le a termékét " "vagy tartalmát." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Projekt hozzáadása" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Projekt hozzáadása" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit – KatalóguskezelÅ‘" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Szerkesztés…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Új fordítási projekt létrehozása" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Projekt törlése" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Projekt szerkesztése" #: src/manager.cpp:176 msgid "Update all" msgstr "Összes frissítése" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "A projekt összes katalógusának frissítése" #: src/manager.cpp:378 msgid "Total" msgstr "Összes" #: src/manager.cpp:379 msgid "Untrans" msgstr "Lefordítatlan" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Munkát igényel" #: src/manager.cpp:381 msgid "Errors" msgstr "Hibák" #: src/manager.cpp:382 msgid "Last modified" msgstr "Utoljára módosítva" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Válassza ki a könyvtárat" #: src/manager.cpp:433 msgid "Directories:" msgstr "Könyvtárak:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Biztos, hogy törli ezt a projektet: „%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Projekt törlése" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "A projekt törlése nem törli a fordítási fájlokat." #: src/manager.cpp:571 msgid "Confirmation" msgstr "MegerÅ‘sítés" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "A projekt összes katalógusának frissítése?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "A forráskódból frissítést hajt végre a projekt összes fájlján." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Projektkatalógusok frissítése" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Frissítések keresése…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "KatalóguskezelÅ‘" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Beállítások…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "Sz&erkesztés" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Visszavonás" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Mégis" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Beillesztés és stílus egyeztetése" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Törlés" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Helyesírás és nyelvhelyesség" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Helyesírás és nyelvhelyesség megjelenítése" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Dokumentum ellenÅ‘rzése most" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Helyesírás-ellenÅ‘rzés beíráskor" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Nyelvhelyesség és helyesírás ellenÅ‘rzése" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Automatikus helyesírás-javítás" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Cserejavaslatok" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Cserejavaslatok megjelenítése" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Intelligens másolás/beillesztés" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Intelligens idézÅ‘jelek" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Intelligens kötÅ‘jelek" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Intelligens hivatkozások" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Szöveg csere" #: src/menus.cpp:230 msgid "Transformations" msgstr "Ãtalakítások" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Nagybetűvel" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Kisbetűvel" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Nagy kezdÅ‘betű" #: src/menus.cpp:237 msgid "Speech" msgstr "Beszéd" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Beszéd kezdése" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Beszéd leállítása" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Nézet" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Eszköztár megjelenítése" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Eszköztár testreszabása…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Váltás teljes képernyÅ‘re" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Ablak" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimalizálás" #: src/menus.cpp:264 msgid "Zoom" msgstr "Nagyítás" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Üdvözöljük a Poeditben" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Összes elÅ‘rehozása" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Információk a fordítóról" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Név:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Az Ön neve" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-mail:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "nev@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Az Ön neve és e-mail címe csak a GNU gettext fájlok\n" "Last-Translator fejlécének beállítására szolgál." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Szerkesztés" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "MO fájl automatikus létrehozása mentéskor" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Helyesírás-ellenÅ‘rzés" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Mindig a beviteli mezÅ‘ legyen az aktív" #: src/prefsdlg.cpp:211 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 "" "Soha ne legyen aktív a szöveglista. Ha be van kapcsolva, akkor a mozgáshoz a " "Ctrl+nyilakat kell használni, de a szöveg azonnal gépelhetÅ‘ anélkül, hogy " "elÅ‘tte Tabot kellene nyomni a fókusz váltásához." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Megjelenés" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Egyéni lista betűtípus használata:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Egyéni szövegmezÅ‘ betűtípus használata:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Felület nyelvének változtatása" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 vagy újabb szükséges)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Ãltalános" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Fordítási memória használata" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Kezelés…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Forrásokból frissítésekor" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "fuzzy megfelelÅ‘ a fájlon belül" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "elÅ‘fordítás FM-ból" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "A Poedit megpróbálhat újabb bejegyzéseket betölteni a fájlban lévÅ‘ korábbi " "fordításokból, vagy a teljes fordítási memóriából. A FM használata nem " "igazán hatásos, ha majdnem üres, de ahogy egyre több fordítást ad hozzá, úgy " "egyre jobb lesz." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Tárolt fordítások:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Adatbázis méret a lemezen:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Fordítási fájlok importálása…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Fordítási fájlok importálása…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importálás TMX fájlból…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importálás TMX fájlból…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Exportálás TMX fájlba…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Exportálás TMX fájlba…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Törlés" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Importálandó fordítás fájlok kiválasztása" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Válasszon importálandó TMX fájlt" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX fájlok" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Fordítások importálása…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "A fordítási memória importálása sikertelen." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importálás innen: „%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s fordítás lett importálva." msgstr[1] "%s fordítás lett importálva." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exportálás másként…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Fordítások exportálása…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Nem sikerült a fordítási memória exportálása ide: „%sâ€." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Fordítási memória törlése" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Biztos, hogy törli a fordítási memóriát?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "A fordítási memória törlésével visszavonhatatlanul töröl minden benne tárolt " "fordítást. Ez a művelet nem vonható vissza." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "FM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Fordítási memória" #: src/prefsdlg.cpp:730 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 "" "A forráskód kivonatoló szolgál a lefordítható karakterláncok forráskód " "fájlokban való megkeresésére és kivonatolására annak érdekében, hogy le " "lehessen Å‘ket fordítani." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Egyéni kivonatolók:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Egyéni kivonatolók:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Támogatja az összes, GNU gettext eszközök által ismert programozási nyelvet " "(PHP, C/C++, C#, Perl, Python, Java, JavaScript és mások)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Kivonatoló törlése" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Biztos, hogy törli a(z) „%s†kivonatolót?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Kivonatolók" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Fiókok" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Frissítések automatikus keresése" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Beleértve a béta verziókat is." #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "A béta verziók a legújabb funkciókat és fejlesztéseket tartalmazzák, de " "elÅ‘fordulhat, hogy egy kicsit kevésbé stabilak." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Frissítések" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Ezek a beállítások befolyásolják a PO fájlok belsÅ‘ formázását. Csak " "speciális követelmények, például verziókezelés esetén változtassa meg Å‘ket." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Sorvégek:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (javasolt)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Szövegszélesség:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "A meglévÅ‘ fájlok formázásának megÅ‘rzése" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Speciális" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Beállítások" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Karakterláncok elÅ‘készítése…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "ElÅ‘fordítás fordítási memóriából…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u sor elÅ‘fordítva" msgstr[1] "%u sor elÅ‘fordítva" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "ElÅ‘fordítás…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d elem elÅ‘fordítva." msgstr[1] "%d elem elÅ‘fordítva." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "A fordítások munkát igénylÅ‘ként lettek megjelölve, mert lehet, hogy " "pontatlanok. A pontosításukhoz át kellene nézni ezeket." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Pontos egyezések a TM-ból" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "HozzávetÅ‘leges egyezések a TM-ból" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Egy bejegyzést sem lehet elÅ‘fordítani." #: src/pretranslate.cpp:218 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 FM nem tartalmaz a fájl tartalmához hasonló karakterláncokat. Csak azután " "lesz alkalmas félautomata fordításokhoz, ha a Poedit eleget tanult a Ön " "által kézzel lefordított fájlokból." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "A forrásszöveg nélkül nem lehet elÅ‘fordítani." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "ElÅ‘fordítás" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Az elÅ‘fordításhoz szükséges a forrásszöveg megléte. Nem működik csak " "azonosítókkal, a valódi szöveg használata nélkül." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Ismeretlen nyelvrÅ‘l nem lehet elÅ‘fordítani." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Az elÅ‘fordítás elÅ‘feltétele, hogy a forrásszöveg nyelve ismert legyen. A " "Poedit ezt nem észlelte a fájlban." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Kitöltés csak pontos egyezés esetén" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Alapesetben a pontatlan eredmények is belekerülnek, de munkát igénylÅ‘ként " "lesznek megjelölve. Kapcsolja be ezt a lehetÅ‘séget, hogy csak pontos egyezés " "esetén kerüljenek bele." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Ne jelölje meg munkát igénylÅ‘ként a pontosan egyezÅ‘ket" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Csak akkor engedélyezze, ha megbízik a FM minÅ‘ségében. Alapértelmezés " "szerint a FM minden egyezése munkát igénylÅ‘ként lesz megjelölve, és " "használat elÅ‘tt ellenÅ‘riznie kell." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Az elÅ‘fordítás automatikusan megtalálja a fordítási memóriában a " "lefordítatlan karakterláncok pontos vagy bizonytalan egyezéseit, és kitölti " "velük a fordításokat." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Hiba: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d hiba történt:" msgstr[1] "%d hiba történt:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Hiba történt." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d hiba történt." msgstr[1] "%d hiba történt." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Megszakítás…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Húzza ide a mappákat vagy fájlokat" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Húzza ide a mappákat vagy fájlokat" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Mappák hozzáadása…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Mappák hozzáadása…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Fájlok hozzáadása…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Fájlok hozzáadása…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "HelyettesítÅ‘ karakter hozzáadása…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "HelyettesítÅ‘ karakter hozzáadása…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Megjelenítés a Finder-ben" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Megnyitás az IntézÅ‘ben" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Megjelenítés mappában" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Útvonalak" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Kizárt elérési utak" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Speciális kivonatoló beállítások" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Fordítóknak szóló jegyzetek kinyerése:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Megjegyzések elÅ‘taggal:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Összes megjegyzés" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "KiegészítÅ‘ xgettext jelzÅ‘k:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "További kulcsszavak" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "A projekt megnevezése, amelyhez a fordítás tartozik" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Csapat neve és e-mail-címe vagy webcíme" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "például nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (javasolt)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "ElÅ‘ször mentse el a fájlt. Ez a szakasz addig nem lesz szerkeszthetÅ‘." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "HelykitöltÅ‘k helyessége" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "A(z) „%s†helykitöltÅ‘ hiányzik a fordításból." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Felesleges „%s†helykitöltÅ‘, amely nem szerepel a forrásszövegben." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Többes számú fordítások" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Nincs az összes többes számú alak lefordítva." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Inkonzisztens nagy- és kisbetűk" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "A fordítást mondatként kell kezdeni." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "A fordítást kisbetűvel kell kezdeni." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Inkonzisztens szóköz" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "A fordítás nem szóközzel kezdÅ‘dik." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "A fordítás szóközzel kezdÅ‘dik, de a forrásszöveg nem." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "A fordítás végén hiányzik egy sortörés." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "A fordítás egy új sorral végzÅ‘dik, de a forrásszöveg nem." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "A fordítás végén hiányzik egy szóköz." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "A fordítás szóközzel végzÅ‘dik, de a forrásszöveg nem." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Ãrásjelek ellenÅ‘rzése" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "A fordítás végére „%s†kell." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "A fordítás végére nem kell „%sâ€." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "A fordítás végén „%s†van, ellenben a forrásszöveg végén „%s†van." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "FelhÅ‘" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Menü törlése" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Menü törlése" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Megjegyzés:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Frissítés" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Törlés" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "A megjegyzés törlése" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Projekt szerkesztése" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Projekt neve:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Tallózás" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Könyvtár hozzáadása a listához" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Fájl" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "Ú&j…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Új &POT/PO fájlból…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Új &POT/PO fájlból…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Megnyitás…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Legutóbbi megnyitása" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Legutóbbi megnyitása" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "FelhÅ‘s fordítás megnyitása…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "FelhÅ‘s fordítás megnyitása…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&KezdÅ‘ ablak" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&KezdÅ‘ ablak" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&KatalóguskezelÅ‘" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&KatalóguskezelÅ‘" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "Be&zárás" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "Menté&s" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Mentés &másként…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Mentés &másként…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Fordítás MO-ra…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "Exportálás HTML fájlba…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Frissítések ellenÅ‘rzése…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Beállítások…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Beállítások" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "K&ilépés" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Kilépés" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Másolás az egyes számból" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Másolás az egyes számból" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Fordítási munkát i&gényel" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Fordítási munkát i&gényel" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "&Megjegyzés szerkesztése" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "&Megjegyzés szerkesztése" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Javaslatok" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Keresés…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Csere…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "KövetkezÅ‘ keresése" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "ElÅ‘zÅ‘ keresése" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Keresés és csere…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "KövetkezÅ‘ keresése" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "ElÅ‘zÅ‘ keresése" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Karakterlánc-azonosító megjelenítése" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Karakterlánc-&azonosító megjelenítése" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Figyelmeztetések megjelenítése" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Figyelmeztetések megjelenítése" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Rendezés &fájlsorrend szerint" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Rendezés &fájlsorrend szerint" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Rendezés f&orrás szerint" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Rendezés f&orrás szerint" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Rendezés for&dítás szerint" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Rendezés for&dítás szerint" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "Cs&oportosítás környezet szerint" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "Cs&oportosítás környezet szerint" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Hibás bejegyzések elöl" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Hibás bejegyzések elöl" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Lefordítatlan bejegyzések elÅ‘re" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Lefordítatlan bejegyzések elÅ‘re" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&KódelÅ‘fordulások megjelenítése" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&KódelÅ‘fordulások megjelenítése" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Oldalsáv megjelenítése" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Ãllapotsor megjelenítése" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Fordítás" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "Frissítés a &forráskódból" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "Frissítés a &forráskódból" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Szinkronizáció a Crowdinnel" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "&ElÅ‘fordítás…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "Fordítások ér&vényesítése" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "Fordítások ér&vényesítése" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "A forrással azonos fordítások eltávolítása" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "Törölt fordítások &tisztítása" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "Törölt fordítások &végleges törlése" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Tulajdonságok…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Ugrás" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Kész és következÅ‘" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Kész és következÅ‘" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Korábban szerkesztve" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Korábban szerkesztve" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&ElÅ‘zÅ‘ fordítás" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&ElÅ‘zÅ‘ fordítás" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&KövetkezÅ‘ fordítás" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&KövetkezÅ‘ fordítás" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "El&Å‘zÅ‘ befejezetlen" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "El&Å‘zÅ‘ befejezetlen" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "KövetkezÅ‘ &befejezetlen" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "KövetkezÅ‘ &befejezetlen" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "ElÅ‘zÅ‘ többes számú alak" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "ElÅ‘zÅ‘ többes számú alak" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "KövetkezÅ‘ többes számú alak" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "KövetkezÅ‘ többes számú alak" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Online súgó" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Online súgó" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext kézikönyv" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext kézikönyv" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "A Poedit &névjegye" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Névjegy" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Kivonatoló beállítása" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Kiterjesztések listája pontosvesszÅ‘vel elválasztva (pl. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Végrehajtás:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Fordításkinyerési parancs:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ezzel a paranccsal lesz indítva a kivonatoló.\n" "A %o a kimeneti fájl nevét, a %K a kulcsszavak\n" "listáját, a %F a bemeneti fájlokat,\n" " a %C pedig a karakterkódolást (lásd lejjebb) jelenti." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Egy elem a kulcsszavak listájában:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Ez minden kulcsszónál egyszer a parancssor\n" "végéhez lesz fűzve. A %k jelenti a kulcsszót." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Egy elem a bemeneti fájlok listájában:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Ez minden bemeneti fájlnál egyszer a parancssor\n" "végéhez lesz fűzve. %f jelenti a fájl nevét." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Forráskód karakterkódolás:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Ez csak akkor lesz a parancssorhoz fűzve, ha forráskód\n" "karakterkódolás meg lett adva. %c jelenti a karakterkódolás értékét." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Fordítás tulajdonságai" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Projekt neve és verziószáma:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Nyelvi csapat:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Többes számú alakok:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Alapértelmezett szabályok használata ehhez a nyelvhez" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Egyéni kifejezés használata" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Tudjon meg többet a többes számú alakokról" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Karakterkódolás:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Speciális kivonatolási beállítások…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Speciális kivonatolási beállítások…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Fordítás tulajdonságai" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Források útvonalai" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Források útvonalai" #: src/resources/properties.xrc:164 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:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Alap útvonal:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Források kulcsszavai" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Források kulcsszavai" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Használja ezeket a kulcsszavakat (függvény neveket) a forrásfájlokban lévÅ‘\n" "lefordítható szövegek felismeréséhez:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "A támogatott nyelvek alapértelmezett kulcsszavai is használhatók" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Tudjon meg többet a gettext kulcsszavakról" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Fájl megnyitása" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Fájl mentése" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Érvényesítés" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Hibák keresése a fordításban" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Frissítés a kódból" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Frissítés a kódból" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Frissítés a forráskódból" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Oldalsáv" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "ElÅ‘zÅ‘ forrásszöveg" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "A régi forrásszöveg (a frissítést megelÅ‘zÅ‘ állapotú), ami bizonytalan " "fordításnak tekinthetÅ‘." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Megjegyzések a fordítóknak" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Megjegyzés" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Hozzászólás" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Hozzászólás" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Törlés a fordítási memóriából" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Törlés a fordítási memóriából" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Fordítási javaslatok" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Nincs találat" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Nincs találat" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Ez a karakterlánc a Poedit fordítási memóriájában lett találva." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "A fordítási javaslatokhoz szükséges a forrásszöveg megléte. Nem működnek " "csak azonosítókkal, a valódi szöveg használata nélkül." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "A fordítási feladatok elÅ‘feltétele, hogy a forrásszöveg nyelve ismert " "legyen. A Poedit ezt nem észlelte a fájlban." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "A programot nem lehet futtatni: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "A TMX fájl formátuma hibás." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "A fordítási memória adatbázis sérült: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Fordítási memória hiba: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Alapértelmezett nyelv használata)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Nyelvválasztás" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Válassza ki a kívánt nyelvet" #: src/uilang.cpp:263 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." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Az ideiglenes fájlok könyvtárát nem lehet létrehozni." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Nem léteznek fordítások. Ez szokatlan." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "A fordítható bejegyzéseket nem kézileg adják hozzá a Gettext rendszerben, " "hanem automatikusan kinyerésre kerülnek a forráskódból. Ãgy naprakészek és " "pontosak maradnak. A fordítók általában a fejlesztÅ‘ által készített PO " "sablonfájlokat (POT-okat) használják." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Tudjon meg többet a GNU gettextrÅ‘l" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "A fájl fordítással történÅ‘ kitöltésének legegyszerűbb módja a POT-ról " "történÅ‘ frissítés:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Frissítés POT fájlból" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Lefordítható karakterláncok átvétele egy már létezÅ‘ POT sablonból." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Közvetlenül a forráskódból is kinyerhet lefordítható karakterláncokat:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Kinyerés forrásfájlokból" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Forráskódkinyerés beállítása a Tulajdonságokban." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "%s verzió" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Új készítése" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Új fordítás készítése POT sablonból." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Fájlok böngészése" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Fordítási fájl megnyitása és szerkesztése." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "FelhÅ‘s projekt fordítása" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Együttműködés más emberekkel online." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Legutóbbi fájlok" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Szinkronizáció" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Fordítások szinkronizálása a Crowdinnel" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "A %s névjegye" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s beállításai" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "A %s névjegye" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Szolgáltatások" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "A %s elrejtése" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Többi elrejtése" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Összes megjelenítése" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Kilépés a %sbÅ‘l" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Beállítások…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Beállítások..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Beállítások…" #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "Alkalmaz" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Alkalmaz" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "Vissza" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Vissza" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "Mégse" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Törlés" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Törlés" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Másolás" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Kivágás" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Kivágás" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Szerkesztés" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Kilépés" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Súgó" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "Ú&j" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Új" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Nem" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Nem" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Megnyitás…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Megnyitás…" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Megnyitás..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Beillesztés" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Beillesztés" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Beállítások" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Mégis" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Frissítés" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "Mentés &másként" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Mentés másként" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Min&den kijelölése" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Minden kijelölése" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Visszavonás" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Igen" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Igen" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Fel" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Le" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Balra" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Jobbra" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Figyelmeztetés: " poedit-3.6.3/locales/pt_BR.mo0000644000175100001660000017231015011674351011465 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-¹O ’ ’4%’Z’Aq’³’%Ä’%ê’_“Ep“w¶“ .”9” M”=X”–””­”¶” ¾”È”ДØ”à”è”ú” •• •+•E•_•c•z•‘•˜•ž• §•³•È•Ý•ã• ç• õ• – –––-–?–T–i–z–˜–¶–¼– Å–Ñ– Ù– æ– —(—8— H— T—"^—"—¤—À—Ü—ñ— ˜˜˜-˜!A˜ c˜ o˜ z˜…˜‹˜ ’˜œ˜²˜Șܘ$™A™W™k™}™™!·™ Ù™+ã™(š+8šdš„ššš>«š1êš›(-›#V› z›…››8­›Dæ›'+œ3Sœ‡œ ŽœjœœIQh,ºç𥞨ž ±ž.¿ž"îž;Ÿ4MŸ‚Ÿ¡Ÿ¼Ÿן'ñŸ 1 %M &s š ¶ Ó ï ¡ ¡¡ )¡5¡G¡N¡T¡l¡#„¡¨¡#È¡ ì¡ ø¡¢$¢8¢!I¢:k¢ ¦¢ˆ´¢=£D£W£q£„£#ž£2£Fõ£%<¤ b¤m¤-ƒ¤ ±¤Ò¤È⤫¥³¥Î¥$饦#¦9¦"@¦c¦"s¦–¦¦¦»¦>̦ § *§%7§p]§OΧB¨ a¨ n¨z¨<‘¨Ψ(å¨:©I©i©‰©©¦©­©Á©Õ©è©û© ªª $ª.ª5ª~Jªɪ媄«†«ž«$·«Ü«ã«é«î« ¬¬1¬B¬X¬l¬;¬½¬׬!ê¬; ­`H­©­ Ä­-Ï­.ý­;,®(h®2‘®Ä®Ì®ë®4¯a<¯ž¯¤¯µ¯Ưà¯÷¯°$°5°F°Y°l°ƒ°š°¹°Ȱä°ó° ù°± ±&±'A±,i±–±Â™±¨\²œ³¢³!ª³̳"ß³´"´8´.R´´›´¢´&¸´ß´ÿ´µ'µ 9µFµ OµYµuµ|µ6–µ+͵ùµ¶#¶3¶;¶*Q¶$|¶ ¡¶®¶ƶ#ã¶·B ·P·Ca·¥·¥¶·=\¸š¸¬¸5¾¸ô¸¹ !¹.¹ G¹+Q¹}¹ƒ¹—¹«¹¿¹Ó¹Óé¹½ºº ݺëº »»0»F»\» a»)‚»^¬» ¼/,¼6\¼“¼0¯¼)༠½ ½#½«&½)Ò½ü½¾&(¾O¾i¾ †¾”¾¤¾´¾þà¾é¾ò¾û¾¿¿)¿C¿™]¿÷¿ý¿ÀI$ÀnÀ5À"·ÀÚÀS\Á°Á ·ÁFØÁÂ1Â"8ÂI[Âý¥ÂÉ£Ã4mÄ1¢ÄÔÄ æÄôÄ3Å.8ÅgÅŸzÅ~Æw™Æ ÇÇ0ÇAÇ0WLjǞǴÇÍÇãÇùÇÈ%È.È7ÈUÈ]È}ÈD‚ÈÇÈÙÈ áÈëÈþÈ ÉÉ''É+OÉ{ÉÉ%ŸÉ ÅÉÐÉáÉòÉ Ê:ÊTÊ ZÊŽ{Ê Ë!Ë)Ë0Ë@ËPËkË †Ë’ˡ˲Ë@ÁË ÌÌ Ì&0ÌWÌ mÌ-ŽÌ!¼ÌÞÌýÌ ÍÍ+Í>ÍVÍvÍͨÍÀÍÝÍìÍÎ#Î5ÎKÎcÎ{Î ŠÎ˜ÎžÎ£Î ©ÎµÎÍÎÞÎöÎûÎÏÏ2ÏEÏ"XÏ{Ï’Ï"­ÏÐÏçÏ(М+ÐÈÐèÐÑÑ)Ñ@ÑZÑnшќÑ_¡ÑÒÒ*Ò9ÒRÒiÒ#…Ò7©ÒáÒ=òÒ0Ó @ÓªKÓFöÓ•=Ô ÓÔßÔ&ùÔ Õ.Õ'FÕ:nÕ©Õ ¬Õ6¹Õ(ðÕÖÎ1Ö ×I!×9k×¥×ϧØ9wÙ;±ÙZíÙmHÚV¶Ú# Û)1Û([Û1„Ût¶Ûd+Ü)ÜCºÜ?þÜE>Ý3„Ý/¸ÝžèÝ"‡Þ$ªÞ)ÏÞ.ùÞ7(ß?`ß ß&"àMIà?—àk×àŸCáVãáv:âj±âvãß“ã=s䓱änEåg´åæ"æ3æCç]ç xçƒç˜ç!±çÓçVîçsEèG¹è*é!,éNéi鎂éƒê•ê”§ê<ëAëUë3^ë'’ëºëÍëëëýë ìì,ì(;ì,dì‘ì®ìËìàìñìí!í4íCí!Zí|í+”í'Àí(èí!î3î"Qî-tî#¢îfÆî-ïMïUï oïzï‘ï ¨ïÉïÑïåïððð4&ð[ð mðxð#•ð¹ðM½ðB ñoNñ;¾ñúñ;òv?ò¶ò»òÀò4Ôò ó)ó(0ó(Yó‚óŸó¤ó ªó´óºóÃóËóÒóÛóßóäó êó õóôô $ô /ô 9ôFôZônôŠô’ô$£ô|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-06 10:16 Last-Translator: Language-Team: Portuguese, Brazilian Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: pt-BR X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (modificado) (não salvo)%d ocorrência no código%d ocorrências no código%d entrada%d entradas%d entrada foi pré-traduzida.%d entradas foram pré-traduzidas.%d erro%d erros%d erro ocorrido.%d erros ocorridos.%d erro ocorrido:%d erros ocorridos:%d problema detectado com os textos fonte.%d problemas com as strings de origem foi detectado.%d problema achado na tradução.%d problemas achados na tradução.%i linha do arquivo "%s" não foi carregada corretamente.%i linhas do arquivo "%s" não foram carregadas corretamente.Formato %sPreferências do %sFormato %s%s tradução foi importada.%s traduções foram importadas.&Sobre&Sobre o Poedit&Aplicar&Voltar&Cancelar&Limpar&Fechar&Copiar&Apagar&Feito e Próximo&Feito e próximo&Editar&ArquivoLocali&zar…&Manual do gettext do GNU&Manual do gettext do GNU&Ir&Agrupar Pelo Contexto&Agrupar pelo contexto&Ajuda&Novo&Novo…&Próximo >&Tradução Seguinte&Tradução seguinte&Não&Ok&Ajuda Online&Ajuda online&Abrir...A&brir…&Colar&Preferências&Preferências…&Tradução Anterior&Tradução anterior&Propriedades…&Remover Traduções Apagadas&Remover traduções apagadas&Sair&Refazer&Substituir&Salvar&Salvar como&Mostrar Ocorrências no Código&Mostrar ocorrências no código&Janela Inicial&Janela inicial&Tradução&Desfazer&Entradas Não Traduzidas Primeiro&Entradas não traduzidas primeiro&Atualizar do Código Fonte&Atualizar do código fonte&Validar traduções&Validar traduções&Visualizar&Sim(Usar idioma padrão)(não está logado)(requer o Windows 8 ou mais novo)< &AnteriorSobre o %sContaContasAdicionarAdicionar ComentárioAdicionar Arquivos…Adicionar Pastas…Adicionar ProjetoAdicionar Caractere Especial…Adicionar comentárioAdicionar diretório a listaAdicionar arquivos…Adicionar Pastas…Adicionar projetoAdicionar caractere especial…Palavras-chave adicionaisBandeiras adicionais do xgettext:AvançadoConfigurações Avançadas de Extração…Configurações avançadas da extraçãoConfigurações avançadas de extração…Todos os Arquivos de TraduçãoTodos os comentáriosTodas as stringsUsar também as palavras-chave padrão pros idiomas suportadosSempre mudar o foco pro campo de entrada do textoOcorreu um erro.Um item na lista de arquivos de entrada:Um item na lista de palavras-chave:AparênciaAplicarCombinações aproximadas da MTVocê tem certeza que você quer apagar o extrator "%s"?Você tem certeza que você quer resetar a memória das traduções?Procurar atualizações automaticamenteCompilar automaticamente o arquivo MO quando salvarVoltarCaminho base:As versões beta contém novas funções e melhorias mais recentes mas podem ser um pouco menos estáveis.Trazer Tudo pra FrenteArquivo PO quebrado: a forma plural do msgstr é usada sem o msgid_pluralArquivo PO quebrado: a forma singular do msgstr é usada junto com o msgid_pluralMarcação quebrada na string da tradução.ExplorarExplorar arquivosPor padrão os resultados imprecisos também estão incluídos mas marcados como precisando de trabalho. Marque esta opção pra incluir só combinações perfeitas.CancelarCancelando…Não consegue criar um diretório temporário.Não pôde executar o programa: %sNão pode pré-traduzir a partir de um idioma desconhecido.Não é possível pré-traduzir sem texto de origem.Letras Iniciais em MaiúsculasGerenciador de &CatálogosGerenciador de &catálogosGerenciador de catálogosMudar o idioma da interface do usuárioConjunto de caracteres:Verificar o Documento AgoraVerificar a Gramática com OrtografiaVerificar a Ortografia enquanto DigitaVerificar Atualizações…Procurar erros na traduçãoVerificar atualizações…Verificar ortografiaLimparLimpar MenuLimpar TraduçãoLimpar menuLimpar traduçãoFecharNuvemOcorrências no CódigoOcorrências no códigoColabore com outras pessoas online.Coletando arquivos de origem…Comando pra extrair as traduções:ComentárioComentário:Comentários pré-fixados com:Compilar para MO…Compilar para…Arquivos de Tradução CompiladosConfigurar a extração do código fonte nas Propriedades.ConfirmaçãoConecte o Poedit com as plataformas suportadas de localização da nuvem pra sincronizar perfeitamente as traduções gerenciadas nelas.CopiarCopiar do SingularCopiar do Texto de OrigemCopiar do singularCopiar do texto de origemCorrigir ortografia automaticamenteNão pôde baixar os detalhes do projeto Localazy.Não foi possível carregar o arquivo, provavelmente está corrompido.Não foi possível salvar arquivo %s.Criar novaCriar nova traduçãoCriar nova tradução a partir do modelo POT.Criar novo projeto de traduçãoErro do CrowdinO Crowdin é uma plataforma de gerenciamento de traduções online e ferramenta de tradução colaborativa. Nós usamos o Crowdin nós mesmos pra traduzir o Poedit em muitos idiomas e nós amamos ele.Co&rtarExtratores Personalizados:Extratores personalizados:Personalizar barra de ferramentas…CortarTamanho do banco de dados no disco:ApagarApagar da Memória das TraduçõesApagar extratorApagar da memória das traduçõesExcluir projetoApagar o comentárioApagar o projetoExcluir o projeto não excluirá nenhum arquivo de tradução.Determinando as diferenças…Diretórios:Você deseja excluir o projeto “%s?Você quer recarregar o arquivo do disco? Suas edições não salvas no Poedit serão perdidas se você o fizer.Você quer remover todas as traduções que são idênticas ao texto de origem?Você quer remover todas as traduções que não são mais usadas?Nã&o salvarNão salvarNão mostrar novamenteNão marcar combinações exatas como precisando de trabalhoNão mostrar novamenteBaixando as traduções mais recentes…O download das traduções está desativado neste projeto.Arraste Pastas ou Arquivos AquiArraste pastas ou arquivos aquiS&airE&xportar como HTML…EditarEditar &ComentárioEditar &comentárioEditar ComentárioEditar comentárioEditar projetoEditar o projetoEdiçãoEditar…Email:Entrar em Tela CheiaAs entradas neste arquivo têm contagem de formas no plural diferentes do que o cabeçalho das formas no plural do arquivo dizEntradas com erros primeiroEntradas com erros primeiroAs entradas com erros foram marcadas em vermelho na lista. Os detalhes do erro serão mostrados quando você selecionar tal entrada.Erro ao abrir o arquivoErro ao salvar o arquivoErro ao carregar o arquivo XLIFF: %sErro: ErrosTudoCombinações exatas da MTCaminhos excluídosExportar pro TMX…Exportar como…Exportar para HTML…Exportar pro TMX…Exportando para HTMLA exportação da memória das traduções pro "%s" falhou.Exportando traduções…Extrair das fontesExtrair notas pros tradutores do:Extrair texto dos arquivos fonte nos seguintes diretórios:Extraindo strings traduzíveis de %s arquivo…Extraindo strings traduzíveis de %s arquivos…Configuração do extratorExtratoresFalhou em comunicar com o processo do Poedit.Falhou em extrair as strings do código fonte.Falhou em carregar o arquivo com as traduções extraídas.Falhou em unir os catálogos do gettext.Falhou em atualizar a memória das traduções: %sArquivoO arquivo não pode ser abertoO arquivo "%s" não existe.O arquivo “%s†não é um arquivo de tradução.O arquivo "%s" é somente leitura e não pode ser salvo. Por favor salve-o com um nome diferente.AcharAchar o PróximoAchar o AnteriorLocalizar e Substituir…Achar nos comentáriosAchar nos textos fonteAchar nas traduçõesAchar o próximoAchar o anteriorConsertar o IdiomaConsertar o IdiomaConsertar o CabeçalhoConsertar o cabeçalhoArquivos de tradução FlutterFormulário %iFormulário %i (não usado)gettext do GNUGeralArquivos HTMLAjudaEsconder a Barra LateralEsconder a Barra de StatusEsconder esta mensagem de notificaçãoComo a sincronização com a nuvem funciona?IDSe você continuar com a remoção todas as traduções marcadas como apagadas serão removidas permanentemente. Você terá que traduzi-las de novo se elas forem adicionadas de volta no futuro.Se você negou anteriormente o acesso aos seus arquivos você pode permití-lo em Preferências do Sistema > Segurança & Privacidade > Privacidade > Arquivos & Pastas.Se você negou anteriormente o acesso aos seus arquivos, você pode permiti-lo em Configurações do Sistema > Privacidade e Segurança > Arquivos e Pastas.IgnorarIgnorar maiúsculas e minúsculasImportar do TMX…Importar Arquivos de Tradução…Importar do TMX…Importar arquivos de tradução…Importando do “%sâ€â€¦Falhou em importar a memória das traduções.Importando traduções…Em: %sIncluir versões betaMaiúsculas/minúsculas inconsistentesEspaço em branco inconsistenteInformações sobre o tradutorInstalarArquivo inválidoInvocação:ProblemaProblemasArquivos de tradução JSONManterNome ou código do idiomaO idioma da tradução é o mesmo do idioma de origem.O idioma da tradução não está definido.Idioma da tradução:Seleção de idiomaTime do idioma:Idioma:Última modificaçãoAprenda sobre as palavras-chave do gettextSaiba mais sobre as formas no pluralAprenda maisAprenda mais sobre o %sAprenda Mais Sobre o CrowdinAprenda mais sobre o gettext do GNULinhaA linha %d do arquivo "%s" está corrompida (dados %s inválidos).Finais de linha:Lista de extensões separadas por ponto e vírgula (ex: *.cpp;*.h):Carregar InglêsA Localazy é uma plataforma de localização altamente automatizada que permite a qualquer um traduzir seus produtos e conteúdos pra múltiplos idiomas facilmente.Os Arquivos MO não podem ser editados diretamente no Poedit.Tornar MinúsculaTornar MaiúsculaCriar uma nova tradução a partir deste arquivo POT.Cabeçalho malformado: "%s"Gerenciar contasGerenciar…Mesclando diferenças…MinimizarNome do projeto para o qual é a traduçãoNome:In&acabada SeguinteIn&acabada seguintePrecisa de TrabalhoPrecisa de trabalhoErro de rede: %s (%d)Nunca deixa a lista de strings tirar o foco. Se ativado você deve usar o Ctrl-setas pra navegação pelo teclado mas você também pode digitar o texto imediatamente sem ter que pressionar Tab pra mudar o foco.NovoNovo do Arquivo &POT/PO…Novas StringsNovo do arquivo &POT/PO…Novas stringsNovas strings pra traduzir:Forma Plural SeguinteForma plural seguinteNãoNão Foram Achadas CombinaçõesNenhuma entrada pôde ser pré-traduzida.Nenhuma informação sobre as ocorrências da string no código-fonte é fornecida no arquivo.Não foram achadas combinaçõesNão foram encontrados problemas na tradução.Não há projetos de tradução listados na sua conta.Nenhuma informação de usoNem todas as formas no plural estão traduzidas.Não autorizado, por favor logue de novo.Notas pros tradutoresOkUmSó ative se você confia na qualidade da sua MT. Por padrão todas as combinações da MT estão marcadas como precisando de trabalho e devem ser revisadas antes de usar.Só preencher com as combinações exatasAbrir Tradução da Nuvem...Abrir RecentesAbrir e editar arquivos de tradução.Abrir tradução da nuvemAbrir tradução da nuvem...Abrir arquivoAbrir no EditorAbrir no editorAbrir recentesAbrir arquivo de referênciaAbrir...Abrir…OpçõesOutroI&nacabada AnteriorI&nacabada anteriorArquivos de Tradução POModelos de Tradução POTOs arquivos POT são apenas modelos e eles mesmos não contêm quaisquer traduções. Pra fazer uma tradução crie um novo arquivo PO baseado no modelo.ColarColar e Combinar com o EstiloCaminhosExecuta a atualização do código fonte em todos os arquivos do projeto.Permissão negada.O espaço reservado "%s" está ausente na tradução.Correção dos espaços reservadosPor favor abra e edite o arquivo PO correspondente ao invés disto. Quando você salvá-lo o arquivo MO também será atualizado.Por favor salve o arquivo primeiro. Esta seção não pode ser editada até então.PluralTraduções das formas no pluralA expressão usada de formas no plural pelo arquivo é incomum pra %s.Formas no Plural:PoeditPoedit - Gerenciador de catálogosO Poedit consertou automaticamente o conteúdo inválido no arquivo "%s".O Poedit pode tentar preencher novas entradas só das traduções anteriores no arquivo ou da memória das traduções inteira. Usar da MT não será muito efetivo se ela estiver quase vazia mas ficará melhor conforme você adicionar traduções a ela.O Poedit não pode mostrar o código-fonte aonde a string é usada porque o arquivo ou não está disponível no local referenciado ou é uma referência simbólica que não aponta pra um arquivo real.O Poedit é um editor de traduções fácil de usar.O Poedit foi incapaz de abrir o arquivo “%sâ€.Pré-&traduzir…Pré-traduzirPré-traduzidas%u string pré-traduzida%u strings pré-traduzidasPré-traduzindo da memória das traduções…Pré-traduzindo…A pré-tradução automática acha combinações exatas ou imprecisas pras strings não traduzidas na memória das traduções e preenche as traduções delas.A pré-tradução requer que o texto de origem esteja disponível. Não funciona se apenas IDs sem o texto atual forem usados.A pré-tradução requer que o idioma do texto de origem seja conhecido. O Poedit não pôde detectá-lo neste arquivo.PreferênciasPreferências...Preferências…Preparando strings…Preservar a formatação dos arquivos existentesForma Plural AnteriorForma plural anteriorTexto de origem anteriorEditado AnteriormenteEditado anteriormenteNome e versão do projeto:Nome do projeto:Projeto:ProjetosVerificações de pontuaçãoRemoverRemover as traduções apagadasSairNão foi possível ler o conteúdo do arquivo pelo seguinte erro: %sArquivos recentesRefazerAtualizarRecarregar ArquivoRecarregar arquivoRestantes: %dRemoverRemover Traduções Iguais as da OrigemRemover traduções idênticas às da fonteStrings RemovidasStrings RemovidasStrings removidas (não mais usadas):SubstituirSubstituir &TudoSubstituir &tudoString de substituiçãoSubstituir…O cabeçalho requerido das formas no plural está ausente.ResetResetar memória das traduçõesResetar a memória das traduções apagará irreversivelmente todas as traduções armazenadas nela. Você não pode desfazer esta operação.Revelar no DescobridorRevisarSalvarSalvar &Como…Salvar &como…Salvar de Qualquer ManeiraSalvar de qualquer maneiraSalvar comoSalvar como…Salvar mudançasSalvar arquivoSalvar num local diferente não é suportado nos arquivos XCLOC.Screenshots:Selecionar &TudoSelecionar TudoSelecione os arquivos TMX pra importarSelecionar diretórioSelecionar arquivo de traduçãoSelecione arquivos de tradução pra importarSelecionar o modelo de traduçãoSelecione seu idioma preferidoDefinir IdiomaDefinir idiomaConfiguraçõesConfigurações…Mostrar a Barra LateralMostrar Ortografia e GramáticaMostrar a Barra de StatusMostrar a &ID da StringMostrar SubstituiçõesMostrar Barra de FerramentasMostrar AvisosMostrar no ExplorerMostrar na PastaMostrar ou esconder a barra lateralMostrar barra lateralMostrar barra de statusMostrar a &ID da stringMostrar avisosBarra lateralLogarSairLogarLogar no %sLogar na Conta da NuvemLogar no CrowdinLogar na conta da nuvemSairSingularCopiar/Colar InteligenteHífens InteligentesLinks InteligentesAspas inteligentesOrganizar pela &Ordem dos ArquivosOrganizar pela &OrigemOrganizar pela &TraduçãoOrganizar pela &ordem dos arquivosOrganizar pela &origemOrganizar pela &traduçãoConjunto de caracteres do código fonte:Os extratores do código fonte são usados pra achar as strings traduzíveis nos arquivos do código fonte e extraí-las pra que elas possam ser traduzidas.Código-fonte não disponível.Código fonte não encontradoTexto de orígemID do texto fonteTexto de origem — %sPalavras-Chave das FontesCaminhos das FontesPalavras-chave das fontesCaminhos das fontesFalaA verificação ortográfica está desativada porque o dicionário pro %s não está instalado.Ortografia e gramáticaComeçar a FalarParar de FalarTraduções armazenadas:Contexto da string: %sIdentificador da string: %sComprimento da string em caracteresComprimento da string em caracteres: tradução | fonteString pra acharProjetos do Crowdin baseados em strings não são suportados.SubstituiçõesSugestõesAs sugestões não estão disponíveis se o idioma da tradução não está definido corretamente. Outras funções tais como formas no plural também podem ser afetadas.O espaço reservado supérfluo "%s" que não está no texto de origem.Suporta todas as linguagens de programação reconhecidas pelas ferramentas gettext do GNU (PHP, C/C++, c#, Perl, Python, Java, JavaScript e outras).SincronizarSincronizar com o CrowdinSincronizar a tradução com o CrowdinSincronizandoErro de sincronizaçãoA sincronização com o Crowdin falhou.Erro de sintaxe no cabeçalho das formas no plural ("%s").MTArquivos TMXPegar strings traduzíveis de um modelo POT existente.Nome do time e endereço de email ou URLSubstituição de textoA MT não contém quaisquer strings similares ao conteúdo deste arquivo. Ela só é efetiva pra traduções semi-automáticas após o Poedit aprender o bastante dos arquivos que você traduziu manualmente.O arquivo TMX está mal-formado.As mudanças feitas por outro aplicativo serão perdidas se você salvar.O arquivo não pôde ser compilado no formato MO e usado.O arquivo continha itens duplicados, o que é proibido em arquivos PO e impediria o arquivo de ser usado. O Poedit consertou o problema mas você deve revisar traduções de quaisquer itens marcados como precisando de trabalho e corrigí-los se necessário.O arquivo não pôde ser salvo na tabela de caracteres “%s†conforme especificado nas configurações da tradução. Ao invés disto ele foi salvo como UTF-8 e a configuração foi modificada de acordo.O arquivo foi modificado. Você quer salvar as mudanças?O arquivo está em um formato não reconhecido pelo Poedit.O arquivo foi compilado no formato MO mas ele provavelmente não funcionará corretamente.O arquivo foi salvo com segurança e compilado no formato MO mas provavelmente não funcionará corretamente.O arquivo foi salvo com segurança mas não pôde ser compilado no formato MO e usado.O arquivo foi salvo com segurança.O arquivo “%s†não pôde ser aberto.O arquivo “%s†não pôde ser salvo.O arquivo “%s" foi mudado por outro aplicativo.O texto de origem antigo (antes que mudasse durante uma atualização) que a tradução agora imprecisa corresponde.A maneira mais simples de preencher este arquivo com traduções é atualizá-lo a partir de um POT:A tradução não começa com um espaço.A tradução termina com uma nova linha mas o texto de origem não.A tradução termina com um espaço mas o texto de origem não.A tradução termina com "%s" mas o texto de origem termina com "%s".Está faltando uma nova linha no fim da tradução.Está faltando um espaço no fim da tradução.A tradução está pronta pra uso mas a entrada %d ainda não foi traduzida.A tradução está pronta pra uso mas as entradas %d ainda não foram traduzidas.A tradução está pronta pra uso.A tradução deve terminar com "%s".A tradução não deve terminar com "%s".A tradução deve começar como uma sentença.A tradução deve começar com um caractere minúsculo.A tradução começa com um espaço mas o texto de origem não.As traduções foram marcadas como precisando de trabalho porque elas podem ser imprecisas. Você deve revisá-las por exatidão.Não há traduções. Isso é incomum.Houve um problema ao formatar bem o arquivo (mas ele foi salvo corretamente).Houve um erro quando fazia upload das traduções pro Localazy.Houveram erros quando carregava o arquivo. Alguns dados podem estar ausentes ou corrompidos como resultado.Estas configurações afetam a formatação interna dos arquivos PO. Ajuste-os se você tem requerimentos específicos. Ex: por causa do controle das versões.Este arquivo JSON não é um arquivo de traduções e não pode ser editado no Poedit.Esta ação apagará quaisquer traduções que combinem exatamente com o texto de origem. Isto não pode ser desfeito.Este arquivo tem entradas com formas no plural mas não tem um cabeçalho de formas no plural configurado.Este arquivo usa IDs em vez de texto de origem. O Poedit pode carregar textos em inglês do arquivo “%s" para você.Este é o comando usado pra executar o extrator. %o expande o nome do arquivo de saída, %K para a lista de palavras-chave, %F para a lista de arquivos de entrada, %C para a bandeira do conjunto de caracteres (veja abaixo).Esta string foi achada na memória das traduções do Poedit.Isto será anexado a linha de comando só se o conjunto de caracteres do código fonte foi dado. %c expande para o valor do conjunto de caracteres.Isto será anexado na linha de comando uma vez pra cada arquivo de entrada. %f expande para o nome do arquivo.Isto será anexado na linha de comando uma vez pra cada palavra-chave. %k expande para a palavra-chave.TotalTransformaçõesEntradas traduzíveis não são adicionadas manualmente no sistema Gettext, mas são automaticamente extraídas do código-fonte. Desta forma, ficam atualizados e precisos. Os tradutores geralmente usam arquivos de modelo PO (POT) preparados para eles pelo desenvolvedor.Traduzir projeto da nuvemTraduziu: %d de %d (%d %%)TraduçãoIdioma da TraduçãoMemória das TraduçõesA Tradução Precisa de &TrabalhoPropriedades da TraduçãoO arquivo de tradução já está atualizado, não foram feitas mudanças nas strings.O arquivo de tradução foi atualizado com %s alteração.O arquivo de tradução foi atualizado com %s mudanças.O banco de dados da memória das traduções está corrompido: %s (%d).Erro da memória das traduções: %s (%d).A tradução precisa de &trabalhoPropriedades da traduçãoSugestões de traduçãoAs sugestões de tradução exigem que o texto de origem esteja disponível. Eles não funcionam se apenas IDs sem o texto atual forem usados.As sugestões de tradução requerem que o idioma do texto de origem seja conhecido. O Poedit não pôde detectá-lo neste arquivo.Tradução — %sAs traduções não puderam ser atualizadas do código-fonte porque nenhum código foi encontrado no local especificado nas propriedades do arquivo.DoisUTF-8 (recomendado)DesfazerConteúdo inesperadamente ausente no arquivo XCLOC.Ocorreu uma exceção não manejada: %sUnix (recomendado)Erro desconhecido do Crowdin.Erro desconhecidoNão traduzidasAtualizarAtualizar o SumárioAtualizar tudoAtualizar todos os catálogos no projetoAtualizar todos os catálogos deste projeto?Atualizar do Arquivo &POT…Atualizar do arquivo &POT…Atualizar do CódigoAtualizar do POTAtualizar do códigoAtualizar do código fonteAtualizar sumárioAtualizaçõesA atualização falhouAtualizando catálogos do projetoAtualizando traduçõesAtualizando as informações do usuário…O upload das traduções pro %s falhou.Fazendo upload das traduções pro %s...Fazendo upload das traduções…Usar expressão personalizadaUsar fonte personalizada da lista:Usar fonte personalizada dos campos de texto:Usar regras padrão pra este idiomaUse estas palavras-chave (nomes das funções) pra reconhecer strings traduzíveis nos arquivos fonte:Usar a memória das traduçõesValidarResultados da validaçãoVersão %sVisualizar Detalhes…Visualizar detalhes…Esperando pela autenticação…Aviso: Bem-vindo ao PoeditQuando atualizar das fontesSó palavras inteirasJanelaWindowsVocê gostaria de usar Inglês para texto de origem?Pesquisa circularQuebra em:Arquivos de Tradução XLIFFCatálogo de Localização do XcodeSimVocê também pode extrair strings traduzíveis diretamente do código fonte:Você não pode soltar mais do que um arquivo na janela do Poedit.Você não tem permissão para ler arquivos do código-fonte do local especificado nas propriedades do arquivo.Você deve reiniciar o Poedit pra esta mudança ter efeito.Seu NomeSuas alterações serão perdidas se você não salvá-las.Seu nome e endereço de email só são usados pra definir o cabeçalho do último tradutor de arquivos gettext do GNU.ZeroZoomPrecisa de Trabalhonão apagar arquivos temporários (para depuração)ex: nplurals=2; plural=(n > 1);erro: Combinação imprecisa dentro do arquivoVá até o item no número de linha dadoManejar uma URI do poedit://Alt+Ctrl+Pra BaixoEnterEsquerdaDireitaShift+Pra CimaaltctrlshiftSobre o %sEsconder o %sEsconder OutrosPreferências...Sair do %sServiçosMostrar TudoPré-traduzir da MTIdioma desconhecidoversão não suportada (%s)aviso: voce@exemplo.com"%s" não é um arquivo POT válido.poedit-3.6.3/locales/id.po0000644000175100001660000026246615011674363011075 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-19 10:16\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\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" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: id\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Sembunyikan pesan pemberitahuan ini" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Jangan Tampilkan Lagi" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Jangan tampilkan lagi" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Perbarui rangkuman" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Tutup" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Masalah" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Berkas" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Baris" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Masalah" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Kalimat baru" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Mengumpulkan berkas sumber…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Mengekstrak untaian yang dapat diterjemahkan dari %s berkas…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Gagal memuat berkas dengan terjemahan yang terekstrak." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Pada: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Kode sumber tidak tersedia." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Terjemahan tidak dapat diperbarui dari kode sumber, karena kode tidak " "ditemukan di lokasi yang dinyatakan dalam Properti berkas." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Izin ditolak." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Anda tidak punya izin untuk membaca berkas-berkas kode sumber dari lokasi " "yang dinyatakan dalam Properti berkas." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Bila Anda sebelumnya ditolak mengakses berkas-berkas Anda, Anda dapat " "mengizinkannya dalam Pengaturan Sistem > Keamanan & Privasi > Berkas & " "Folder." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Bila Anda sebelumnya ditolak mengakses berkas-berkas Anda, Anda dapat " "mengizinkannya dalam Preferensi Sistem > Keamanan & Privasi > Privasi > " "Berkas & Folder." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Berkas “%s†tidak bisa dibuka." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Memperbarui terjemahan" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Menggabungkan perbedaan…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Tampilkan Rincian…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Header cacat: \"%s\"" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Berkas Terjemahan PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Templat Terjemahan POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Berkas Terjemahan XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Berkas Terjemahan JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Berkas Terjemahan Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Semua Berkas Terjemahan" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Berkas dalam format yang tidak dikenali oleh Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Berkas JSON ini bukan berkas terjemahan dan tidak bisa diubah di Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" "Gagal membaca isi berkas dengan kesalahan:\n" "%s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Berkas \"%s\" hanya bisa dibaca dan tidak bisa disimpan.\n" "\n" "Harap simpan dengan nama berbeda." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Tidak bisa menyimpan berkas %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Tangkapan layar:" #: src/catalog_po.cpp:134 #, 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 baris dari berkas \"%s\" tidak dimuat dengan benar." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Baris %d dari berkas \"%s\" rusak (data %s tak valid)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Berkas PO rusak: msgstr bentuk tunggal dipakai bersama dengan msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Berkas PO rusak: msgstr bentuk jamak dipakai tanpa msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Tidak dapat memuat berkas, mungkin rusak." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Ada kesalahan ketika memuat berkas. Sebagian data mungkin hilang atau rusak." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Ada masalah pemformatan berkas secara rapi (tapi berkas telah disimpan " "secara baik)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Berkas tak bisa disimpan dalam set karakter \"%s\" sebagaimana dinyatakan " "dalam pengaturan terjemahan.\n" "\n" "Sebagai gantinya itu disimpan dalam UTF-8 dan pengaturan disesuaikan." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Kesalahan saat menyimpan berkas" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "\"%s\" bukan berkas POT yang valid." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Masalah saat memuat berkas XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "versi tidak didukung (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Markup yang rusak di string terjemahan." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Hubungkan Poedit dengan platform pelokalan awan yang didukung untuk " "menyinkronkan terjemahan yang dikelola dengan lancar." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Bagaimana sinkronisasi awan bekerja?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Akun" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(tidak masuk)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Buka terjemahan awan" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Kelola akun" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Proyek:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Bahasa:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Masuk ke Akun Awan" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Masuk ke akun awan" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Tidak ada proyek terjemahan yang terdaftar dalam akun Anda." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Unduh terjemahan terbaru…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Masuk ke %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Menyelaraskan" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Mengunggah terjemahan ke %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Mengunggah terjemahan ke %s gagal." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Galat penyelarasan" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Tambah" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Masalah Crowdin yang tak diketahui." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Tidak berwenang, silakan masuk lagi." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Proyek Crowdin berbasis untaian tidak didukung." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Mengunduh terjemahan dinonaktifkan dalam proyek ini." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Masuk" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Masuk" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Keluar" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Keluar" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Pelajari lebih lanjut tentang Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin adalah platform manajemen penerjemahan daring dan alat penerjemahan " "kolaboratif. Kami sendiri menggunakan Crowdin untuk menerjemahkan Poedit ke " "dalam banyak bahasa, dan kami menyukainya." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Menunggu otentikasi…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Memutakhirkan informasi pengguna…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Masuk ke Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Penyelarasan dengan Crowdin gagal." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Kesalahan Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Mengunggah terjemahan…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Salin" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Pelajari lebih lanjut" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Bantuan" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Berkas MO tak dapat langsung disunting di Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Kesalahan saat membuka berkas" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Silakan membuka dan menyunting berkas PO yang sesuai. Ketika Anda menyimpan, " "berkas MO juga akan diperbarui." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "jangan hapus berkas sementara (untuk pengawakutuan)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "menangani URI poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "pergi ke butir pada nomor baris yang didiberikan" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Gagal berkomunikasi dengan proses Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Eksepsi tidak tertangani terjadi: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Pilih templat terjemahan" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Berkas tak valid" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Pilih berkas terjemahan" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit adalah penyunting terjemahan yang mudah dipakai." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Anda tak bisa menjatuhkan lebih dari satu berkas pada jendela Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Berkas \"%s\" bukan sebuah berkas terjemahan." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Berkas \"%s\" tidak ada." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Pemeriksaan ejaan dinonaktifkan, karena kamus untuk %s tidak diinstal." #: src/edframe.cpp:871 msgid "Install" msgstr "Instal" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Berkas \"%s\" telah diubah oleh aplikasi lain." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Muat ulang berkas" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Apakah Anda ingin memuat ulang berkas dari diska? Suntingan Anda dalam " "Poedit yang belum tersimpan akan hilang." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Abaikan" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Muat Ulang Berkas" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Berkas telah diubah. Apakah Anda ingin menyimpan perubahan?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Simpan perubahan" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Perubahan yang Anda buat akan hilang bila tidak Anda simpan." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Simpan" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Jangan simpan" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Jangan Simpan" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Perubahan yang dibuat oleh aplikasi lain akan hilang bila Anda menyimpan." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Batal" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Simpan Saja" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Simpan saja" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Simpan sebagai…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Kompail ke…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Berkas Terjemahan Dikompilasi" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Ekspor ke HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Berkas HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Mengekspor ke HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Gagal Memperbarui" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Mutakhirkan dari Berkas &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Mutakhirkan dari berkas &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d masalah pada terjemahan ditemukan." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Hasil validasi" #: src/edframe.cpp:1842 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 "" "Entri dengan kesalahan ditandai dengan warna merah dalam daftar. Rincian " "kesalahan akan ditampilkan ketika Anda memilih entri tersebut." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Berkas disimpan dengan aman." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "File disimpan dengan aman dan dikompail ke format MO, tapi itu mungkin tidak " "akan bekerja dengan benar." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Berkas disimpan secara aman, tapi tak bisa dikompail ke dalam format MO dan " "dipakai." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Berkas telah dikompail ke format MO, tapi mungkin tak akan bekerja dengan " "benar." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Berkas tak dapat dikompail ke dalam format MO dan digunakan." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Tidak ditemukan masalah dengan terjemahan." #: src/edframe.cpp:1894 #, 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] "" "Terjemahan siap untuk digunakan, tetapi %d entri belum diterjemahkan." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Terjemahan siap digunakan." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "Poedit secara otomatis memperbaiki isi yang tak valid dalam berkas \"%s\"." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Berkas memuat butir-butir duplikat, yang tak diijinkan dalam berkas PO dan " "akan mencegah berkas dipakai. Poedit memperbaiki masalah ini, tapi Anda " "mesti meninjau terjemahan yang ditandai sebagai perlu tindak lanjut dan " "memperbaiki mereka bila perlu." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Bahasa terjemahan belum dipilih." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Atur bahasa" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Bahasa terjemahan sama dengan bahasa sumber." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Perbaiki Bahasa" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Perbaiki bahasa" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Berkas punya entri dengan bentuk jamak, tapi tak punya header Plural-Forms " "yang terkonfigurasi." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Entri dalam berkas ini memilik cacah bentuk jamak yang berbeda dengan apa " "kata header Plural-Forms" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Kurang tajuk Plural-Forms yang diperlukan." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Kesalahan sintaks di header Plural-Forms (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Perbaiki Header" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Perbaiki header" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Ekspresi bentuk jamak yang dipakai oleh berkas tidak umum bagi %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Tinjau" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Maukah Anda menggunakan Bahasa Inggris sebagai teks sumbernya?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Berkas ini memakai ID string bukan teks sumber. Poedit bisa memuat teks " "bahasa Inggris dari berkas \"%s\" untuk Anda." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Muat Bahasa Inggris" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Diterjemahkan: %d dari %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Sisa: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d kesalahan" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entri" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (belum disimpan)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (telah diubah)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Gagal memperbarui ingatan terjemahan: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Buang terjemahan yang sama dengan sumber" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Apakah Anda ingin menghapus seluruh terjemahan yang identik dengan teks " "sumber?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Aksi ini akan menghapus sebarang terjemahan yang cocok eksak dengan teks " "sumber. Ini tidak dapat dibatalkan." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Pertahankan" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Hapus" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Buang terjemahan yang dihapus" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Apakah Anda ingin menghapus semua terjemahan yang tak dipakai lagi?" #: src/edframe.cpp:2879 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 "" "Bila Anda meneruskan pembersihan, semua terjemahan yang ditandai sebagai " "terhapus akan dibuang secara permanen. Anda mesti menerjemahkan ulang bila " "mereka ditambahkan kembali di masa mendatang." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Buang" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Salin dari teks sumber" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Salin dari Teks Sumber" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Bersihkan terjemahan" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Bersihkan Terjemahan" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Sunting komentar" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Sunting Komentar" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Kemunculan Kode" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Kemunculan kode" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Sembunyikan Bilah Sisi" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Tampilkan Bilah Sisi" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Sembunyikan Bilah Status" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Tampilkan Bilah Status" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Panjang string dalam karakter: terjemahan | sumber" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Panjang string dalam karakter" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Teks sumber" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Tunggal" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Jamak" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Terjemahan" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Dipraterjemahkan" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Belum Tuntas" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Belum tuntas" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Buat terjemahan baru" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Membuat suatu terjemahan baru dari berkas POT ini." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID teks sumber" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Segalanya" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Formulir %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Bentuk %i (tidak terpakai)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nol" #: src/editing_area.cpp:788 msgid "One" msgstr "Satu" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dua" #: src/editing_area.cpp:804 msgid "Other" msgstr "Lainnya" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Konteks string: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identifier string: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Format %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Terjemahan — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Teks sumber — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "bahasa tak dikenal" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Kesalahan jaringan: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Kesalahan tidak dikenal" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Gagal menggabung katalog-katalog gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Buka Dalam Penyunting" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Buka dalam penyunting" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Tidak ada informasi tentang kemunculan string ini dalam kode sumber yang " "disediakan dalam berkas." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Tidak ada informasi penggunaan" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kemunculan kode" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Kode sumber tidak ditemukan" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit tidak dapat menampilkan kode sumber dimana string dipakai, karena " "berkas mungkin tidak tersedia dalam lokasi yang dirujuk atau itu adalah " "suatu acuan simbolik yang tidak menunjuk ke suatu berkas nyata." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Berkas tidak dapat dibuka" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit tidak bisa membuka berkas \"%s\"." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Cari" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Ganti" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opsi" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Abaikan besar kecil huruf" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Ulang dari awal" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Hanya kata lengkap" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Cari dalam teks sumber" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Cari dalam terjemahan" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Cari dalam komentar" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Ganti Semu&a" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Ganti semu&a" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Gantikan" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< Se&belumnya" #: src/findframe.cpp:152 msgid "&Next >" msgstr "Berikut&nya >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Kalimat yang dicari" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Kalimat pengganti" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "peringatan: " #: src/gexecute.cpp:171 msgid "error: " msgstr "kesalahan: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Nama atau kode bahasa" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Bahasa Terjemahan" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Bahasa terjemahan:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Seluruh string" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Tidak bisa mengunduh rincian proyek Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Ada kesalahan saat mengunggah terjemahan ke Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Proyek" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Pelajari lebih lanjut mengenai %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy adalah platform pelokalan yang sangat terotomasi yang mengizinkan " "siapa pun menerjemahkan produk-produk dan konten mereka ke dalam beberapa " "bahasa secara mudah." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Tambah Proyek" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Tambah proyek" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Manajer katalog" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Sunting…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Buat projek terjemahan baru" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Hapus projek" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Menyunting projek" #: src/manager.cpp:176 msgid "Update all" msgstr "Perbarui semua" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Perbarui semua katalog dalam projek" #: src/manager.cpp:378 msgid "Total" msgstr "Total" #: src/manager.cpp:379 msgid "Untrans" msgstr "Belum" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Belum Tuntas" #: src/manager.cpp:381 msgid "Errors" msgstr "Galat" #: src/manager.cpp:382 msgid "Last modified" msgstr "Terakhir berubah" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Pilih direktori" #: src/manager.cpp:433 msgid "Directories:" msgstr "Direktori:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Apakah Anda ingin menghapus proyek \"%s\"?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Hapus proyek" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Menghapus proyek tidak akan menghapus sebarang berkas terjemahan." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Konfirmasi" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Perbarui semua katalog dalam proyek ini?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Lakukan pembaruan dari kode sumber pada semua berkas dalam proyek." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Memperbarui katalog proyek" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Periksa Pemutakhiran…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Manajer Katalog" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Preferensi…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Sunting" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Batal" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Jadi Lagi" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Tempel dan Cocokkan Gaya" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Hapus" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Ejaan dan Tata Bahasa" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Tampilkan Ejaan dan Tata Bahasa" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Periksa Dokumen Sekarang" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Periksa Ejaan Saat Mengetik" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Periksa Tata Bahasa Dengan Ejaan" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Perbaiki Ejaan Secara Otomatis" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Substitusi" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Tampilkan Substitusi" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Salin/Tempel Cerdas" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Tanda Kutip Cerdas" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Garis Hubung Cerdas" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Taut Cerdas" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Teks Pengganti" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformasi" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Jadikan Huruf Besar" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Jadikan Huruf Kecil" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Kapitalkan" #: src/menus.cpp:237 msgid "Speech" msgstr "Pidato" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Mulai Bicara" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Berhenti Bicara" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Lihat" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Tampilkan Bilah Alat" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Menyesuaikan Bilah Alat…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Masuk Layar Penuh" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Jendela" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimalkan" #: src/menus.cpp:264 msgid "Zoom" msgstr "Zum" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Selamat Datang di Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Bawa Semua ke Depan" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informasi tentang penerjemah" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nama:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Nama Anda" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Surel:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "anda@contoh.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Nama dan alamat surel Anda hanya digunakan untuk menetapkan header Last-" "Translator dari berkas gettext GNU." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Penyuntingan" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Otomatis mengkompilasi berkas MO saat menyimpan" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Periksa ejaan" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Selalu ubah fokus ke ruas masukan teks" #: src/prefsdlg.cpp:211 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 "" "Jangan pernah memfokuskan ke daftar kalimat. Jika diaktifkan gunakan Ctrl-" "panah keyboard untuk navigasi tapi juga dapat dituliskan secara langsung, " "tanpa menekan Tab untuk merubah fokus." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Penampilan" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Gunakan fon daftar khusus:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Gunakan fon bidang teks khusus:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Ubah bahasa UI" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(memerlukan Windows 8 atau yang lebih baru)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Umum" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Pakai ingatan terjemahan" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Mengelola…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Ketika memperbarui dari sumber" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "fuzzy cocok dengan file" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pra-menerjemahkan dari TM" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit dapat mencoba untuk mengisi entri baru dari terjemahan sebelumnya " "dalam file atau dari memori seluruh terjemahan Anda. Menggunakan TM tidak " "akan sangat efektif jika memang mendekati kosong, tapi itu akan membaik " "untuk Anda menambahkan terjemahan kedalamnya." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Terjemahan tersimpan:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Ukuran basis data pada disk:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Impor Berkas Terjemahan…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Impor berkas terjemahan…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Impor Dari TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Impor dari TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Ekspor Ke TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Ekspor ke TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Reset" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Pilih berkas terjemahan yang akan diimpor" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Pilih berkas TMX yang akan diimpor" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Berkas TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Mengimpor terjemahan…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Gagal mengimpor memori terjemahan." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Mengimpor dari \"%s\"…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s terjemahan diimpor." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Ekspor sebagai…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Mengekspor terjemahan…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Mengekspor memori terjemahan ke \"%s\" gagal." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Reset memori terjemahan" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Apakah Anda yakin Anda ingin me-reset memori terjemahan?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Me-reset memori terjemahan akan menghapus seterusnya semua terjemahan yang " "disimpan darinya. Anda tidak dapat membatalkan operasian ini." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Ingatan Terjemahan" #: src/prefsdlg.cpp:730 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 "" "Pengekstrak kode sumber digunakan untuk menemukan kalimat yang dapat " "diterjemahkan dalam berkas kode sumber dan mengekstrak mereka sehingga dapat " "diterjemahkan." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Pengekstraksi Ubahan:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Pengekstraksi ubahan:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Mendukung semua bahasa pemrograman yang dikenali oleh alat GNU gettext (PHP, " "C/C++, C#, Perl, Python, Java, JavaScript dan lain-lain)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Hapus ekstraktor" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Anda yakin Anda ingin menghapus ekstraktor \"%s\"?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Pengekstrak" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Akun" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Secara otomatis memeriksa pembaruan" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Termasuk versi beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Versi beta berisi fitur terbaru dan perbaikan, tetapi mungkin sedikit kurang " "stabil." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Pembaruan" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Pengaturan ini mempengaruhi pemformatan internal berkas PO. Sesuaikan mereka " "jika Anda memiliki persyaratan tertentu misalnya karena kontrol versi." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Akhiran baris:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (disarankan)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Tekuk pada:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Pertahankan format berkas yang sudah ada" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Tingkat lanjut" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Pengaturan" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Menyiapkan string…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Pra-terjemah dari ingatan terjemahan…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Dipraterjemahkan %u string" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Memraterjemahkan…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d entri dipraterjemahkan." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Terjemahan ditandai sebagai perlu tindak lanjut, karena mereka mungkin tidak " "akurat. Anda mesti meninjau benar tidaknya mereka." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Tidak ada entri yang bisa dipraterjemahkan." #: src/pretranslate.cpp:218 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 tidak mengandung string apapun yang mirip dengan isi dari berkas ini. Ini " "hanya efektif untuk penerjemahan semi otomatis setelah Poedit belajar cukup " "dari berkas yang Anda terjemahkan secara manual." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Tidak bisa mempraterjemahkan tanpa teks sumber." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pra-terjemah" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Praterjemahan memerlukan ketersediaan teks sumber. Itu tidak bekerja bila " "yang dipakai hanya ID tanpa teks sebenarnya." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Tidak bisa mempraterjemahkan dari bahasa yang tidak dikenal." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Praterjemahan memerlukan dikenalnya bahasa teks sumber. Poedit tidak bisa " "mendeteksi itu dalam berkas ini." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Hanya mengisi yang sama persis" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Secara baku, hasil yang tidak akurat juga disertakan, tapi ditandai sebagai " "perlu diperbaiki. Centang opsi ini untuk hanya menyertakan kecocokan " "sempurna." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Jangan tandai yang cocok persis sebagai perlu tindak lanjut" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Hanya fungsikan jika Anda mempercayai kualitas TM Anda. Secara default, " "semua kecocokan dari TM ditandai sebagai perlu tindak lanjut dan mesti " "ditinjau sebelum dipakai." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Pra-terjemahan secara otomatis menemukan kecocokan persis atau ragu untuk " "kalimat yang belum diterjemahkan dalam memori terjemahan dan mengisikan " "terjemahan mereka." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Kesalahan: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d kesalahan terjadi:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Terjadi kesalahan." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d kesalahan terjadi." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Membatalkan…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Seret Folder atau Berkas Ke Sini" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Seret folder atau berkas ke sini" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Tambah Folder…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Tambah folder…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Tambah Berkas…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Tambah berkas…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Tambah Wildcard…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Tambah wildcard…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Ungkapkan dalam Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Tampilkan dalam Explorer" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Tampilkan dalam Folder" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Path" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Path yang dikecualikan" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Pengaturan ekstraksi tingkat lanjut" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Ekstrak catatan untuk penerjemah dari:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Komentar diawali dengan:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Semua komentar" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Flag xgettext tambahan:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Kata kunci tambahan" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Terjemahan ini untuk projek bernama tersebut" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "URL atau alamat surel dan nama tim" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "mis. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (disarankan)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "Harap simpan dulu. Seksi ini tak bisa disunting sebelum itu." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Kebenaran pewakil" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Pewakil \"%s\" kurang dalam terjemahan." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Pewakil berlebih \"%s\" yang tak ada dalam teks sumber." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Terjemahan bentuk jamak" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Tidak semua bentuk jamak diterjemahkan." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Huruf besar/kecil yang tidak konsisten" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Terjemahan harus mulai sebagai satu kalimat." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Terjemahan harus mulai dengan karakter huruf kecil." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Whitespace yang tidak konsisten" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Terjemahan tidak diawali dengan sebuah spasi." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Terjemahan diawali dengan sebuah spasi, tapi teks sumber tidak." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Terjemahan kurang ganti baris di akhir." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Terjemahan berakhir dengan ganti baris, tapi teks sumber tidak." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Terjemahan kekurangan spasi di akhir." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Terjemahan berakhir dengan spasi, tapi teks sumber tidak." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Pemeriksaan tanda baca" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Terjemahan harus berakhir dengan \"%s\"." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Terjemahan tidak boleh berakhir dengan \"%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "Terjemahan berakhir dengan \"%s\", tapi teks sumber berakhir dengan \"%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Cloud" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Bersihkan Menu" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Bersihkan menu" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Komentar:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Perbarui" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Hapus" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Hapus komentar" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Sunting projek" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nama projek:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Ramban" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Tambahkan direktori ke daftar" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Berkas" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Baru…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Baru dari berkas &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Baru Dari Berkas &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Buka…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Buka Yang Baru-baru Ini" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Buka yang baru-baru ini" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Buka terjemahan awan…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Buka Terjemahan Awan…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Jendela awal mula" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Jendela Awal Mula" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Manajer katalog" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Manajer Katalog" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Tutup" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Simpan" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Simpan seb&agai…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Simp&an Sebagai…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Kompail ke MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&kspor sebagai HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Periksa pemutakhiran…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Pengaturan…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Preferensi" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Keluar" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Keluar" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Salin dari bentuk tunggal" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Salin Dari Bentuk Tunggal" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Terjemahan perlu tindak &lanjut" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Terjemahan Perlu Tindak &Lanjut" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Sunting &komentar" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Sunting &Komentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Saran" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Cari…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Ganti…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Cari berikutnya" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Cari sebelumnya" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Cari dan Ganti…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Cari Berikutnya" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Cari Sebelumnya" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Tampilkan &ID string" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Tampilkan &ID String" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Tampilkan peringatan" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Tampilkan Peringatan" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Urutkan berdasar urutan &berkas" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Urutkan Berdasar Urutan &Berkas" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Urutkan berdasar &sumber" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Urutkan Berdasar &Sumber" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Urutkan berdasar &terjemahan" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Urutkan Berdasar &Terjemahan" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Kelompokkan menurut konteks" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Kelompokkan Menurut Konteks" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Entri dengan kesalahan di awal" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Entri dengan Kesalahan Dulu" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Entri bel&um diterjemahkan di awal" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Entri Bel&um Diterjemahkan Di Awal" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "Tampilkan &kemunculan kode" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "Tampilkan &Kemunculan Kode" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Tampilkan bilah sisi" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Tampilkan bilah status" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Terjemahan" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "Perbar&ui dari kode sumber" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "Perbar&ui dari Kode Sumber" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Selaraskan dengan Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pra&terjemahkan…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validasikan terjemahan" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validasikan Terjemahan" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Buang Terjemahan Sama-dengan-Sumber" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "Buang terjemahan yang diha&pus" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "Buang Terjemahan Yang Diha&pus" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Properti…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Lompat" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Beres dan berikutnya" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Beres dan Berikutnya" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Suntingan sebelumnya" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Suntingan Sebelumnya" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Terjemahan se&belumnya" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Terjemahan Se&belumnya" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Terjemahan sela&njutnya" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Terjemahan Sela&njutnya" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Belum dite&rjemahkan sebelumnya" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Belum Dite&rjemahkan Sebelumnya" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Belum diterjemahkan berikutn&ya" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Belum Diterjemahkan Berikutn&ya" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Bentuk jamak sebelumnya" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Bentuk Jamak Sebelumnya" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Bentuk jamak berikutnya" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Bentuk Jamak Selanjutnya" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Bantuan &daring" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Bantuan &Daring" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Manual gettext &GNU" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Manual gettext &GNU" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "Tent&ang Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "Ihw&al" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Penyiapan ekstraktor" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Daftar ekstensi dipisah dengan titik koma (mis. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Invokasi:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Perintah untuk mengekstrak terjemahan:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ini adalah perintah yang dipakai untuk meluncurkan pengekstrak.\n" "%o diubah ke nama berkas keluaran, %K ke daftar\n" "kata kunci, %F ke daftar berkas masukan,\n" "%C ke flag set karakter (lihat di bawah)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Satu item di daftar kata kunci:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Ini akan dilampirkan ke baris perintah sekali\n" "untuk tiap kata kunci. %k diubah ke kata kunci." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Satu item di daftar berkas masukan:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Ini akan dilampirkan ke baris perintah sekali\n" "untuk tiap berkas masukan. %f diubah ke nama berkas" #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Set karakter kode sumber:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Ini akan dilampirkan ke baris perintah\n" "hanya jika sumber kode set karakter telah diberikan. %c diubah ke nilai set " "karakter." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Properti Terjemahan" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nama dan versi projek:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Tim bahasa:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Bentuk jamak:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Pakai aturan baku untuk bahasa ini" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Gunakan ekspresi pilihan sendiri" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Belajar tentang bentuk jamak" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Set karakter:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Pengaturan Ekstraksi Tingkat Lanjut…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Pengaturan ekstraksi tingkat lanjut…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Properti terjemahan" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Path Sumber" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Path sumber" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Ekstrak teks dari berkas sumber di direktori berikut:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Path dasar:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Kata Kunci Sumber" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Kata-kata kunci sumber" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Gunakan kata-kata kunci ini (nama-nama fungsi) untuk mengenali\n" "kalimat yang dapat diterjemahkan di berkas sumber:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Juga menggunakan kata kunci default untuk bahasa yang didukung" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Belajar tentang kata kunci gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Buka berkas" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Simpan berkas" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validasikan" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Periksa kesalahan dalam terjemahan" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Perbarui dari kode" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Perbarui dari Kode" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Perbarui dari kode sumber" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Bilah Sisi" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Tampilkan atau sembunyikan bilah sisi" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Teks sumber sebelumnya" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Teks sumber lama (sebelum berubah selama pemutakhiran) yang berkaitan dengan " "terjemahan kurang tepat." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Catatan bagi para penerjemah" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Komentar" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Tambah komentar" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Tambah Komentar" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Hapus Dari Memori Terjemahan" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Menghapus dari memori terjemahan" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Saran terjemahan" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Tak ditemukan yang cocok" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Tak Ditemukan Yang Cocok" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "String ini ditemukan dalam memori terjemahan Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Saran terjemahan memerlukan ketersediaan teks sumber. Mereka tidak bekerja " "bila yang dipakai hanya ID tanpa teks sebenarnya." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Saran terjemahan memerlukan dikenalnya bahasa teks sumber. Poedit tidak bisa " "mendeteksi itu dalam berkas ini." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Tak bisa menjalankan program: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Berkas TMX cacat." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Basis data memori terjemahan rusak: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Kesalahan memori terjemahan: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Pakai bahasa bawaan)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Pilihan bahasa" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Pilih bahasa yang disukai" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Jalankan ulang Poedit agar efek perubahan terlihat." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Tak bisa membuat direktori sementara." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Tidak ada terjemahan. Itu tidak biasa." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Entri-entri yang dapat diterjemahkan tidak ditambahkan secara manual dalam " "sistem Gettext, \n" "tapi diekstrak secara otomatis dari kode sumber. Dengan cara ini, mereka " "tetap mutakhir dan akurat. Penerjemah biasanya memakai berkas templat PO " "(POTs) yang disiapkan untuk mereka oleh pengembang." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Pelajari lebih lanjut tentang GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Cara paling sederhana untuk memenuhi berkas ini dengan terjemahan adalah " "dengan memutakhirkannya dari suatu POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Perbarui dari POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "" "Ambil kalimat-kalimat yang dapat diterjemahkan dari templat POT yang ada." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Anda juga dapat mengekstrak string yang dapat diterjemahkan secara langsung " "dari kode sumber:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Ekstrak dari sumber" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Atur konfigurasi ekstraksi kode sumber dalam Properti." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versi %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Buat baru" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Buat terjemahan baru dari templat POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Ramban berkas" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Buka dan sunting berkas-berkas terjemahan." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Terjemahkan proyek cloud" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Berkolaborasi dengan orang lain daring." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Berkas baru-baru ini" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Selaraskan" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Selaraskan terjemahan dengan Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Tentang %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Preferensi %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Tentang %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Layanan" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Sembunyikan %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Sembunyikan Yang Lain" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Tampilkan Semua" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Keluar %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Preferensi…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Preferensi..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferensi..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "Ter&apkan" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Terapkan" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "Mun&dur" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Mundur" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Batal" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Bersihkan" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Bersihkan" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Salin" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Po&tong" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Memotong" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Sunting" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Keluar" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Bantuan" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Baru" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Baru" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Tidak" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Tidak" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Buka…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Buka..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Buka..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "Tem&pel" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Tempel" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Preferensi" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "Jadi &Lagi" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Segarkan" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Simpan sebagai" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Simpan sebagai" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Pilih Semu&a" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Pilih Semua" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Batalkan" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Ya" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ya" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Naik" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Turun" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Kiri" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Kanan" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Peringatan: " poedit-3.6.3/locales/uk.mo0000644000175100001660000023512215011674352011100 Þ•ÇT¹Œ,p; q; };&ˆ;¯;<Ã;<&<&:<_a<JÁ<g = t=~= =;—=Ó= Ú=è=ï=õ=ý=> >>>(>7>=>C>L>`>t>x>Š>œ>¢>§>¯>·>É>Û>ß> ã> ð>ý>?? ?#?3?I?_?n?Š?¦?¬?²?»?Á?Ê?á? ø? @ @!@'@C@_@x@‘@¨@¿@Å@Ê@á@ñ@ A A%A.A6A?A CA OA\A kAwA ‡A“A ­AºA ÉAÕAåAùABB=BZBzB B B1©B'ÛBCC3C MCXC^C7zC6²CéC) D3D 8D]CD¡D<´DDñD$6E[E bE€oEðE ÷E"F(F+CF)oF ™F¤F¶FÈFÙFìFõFG$G@G#UGyGŽGG £G®G ÀGËGÝGãGéGúG% H1H LHmHuH~H–H §HµH/ÐH Ik IyI~I‘I§IºIÐI-ïI1JOJ hJsJ)ŠJ´J ÔJªâJK’K¥K¸KÍKÑKèKïKLL>LML`L;sL¯L ÊL'×L^ÿLL^M?«M ëM ùMN*NDN"WN5zN°NËNæNìNÿN O O O -O :OGOXO`OhOoOfOèOPuP’P¥P"·PÚPâP éPôP QQ *Q7QIQZQ0lQQ·Q#ÌQ<ðQ`-RŽR žR*©R+ÔR0S!1S'SS{S€S–S(µSTÞS3T 8T BTPTdTuTŠT ŸT ©T ·T ÄTÑTàTïT UU "U.U 6UAU FUSUcU‚UœU©ŸU‡IVzÑVLW SW_WrWŽW¡W½W$ØWýWXX4XRX jX‹X “X  X¬X²X¹XÐXÕX;ëX('YPYmY€Y Y ™Y§YÄY ÝYèYüYZ2Z:7Z rZ<€Z ½ZŒÊZ.W[†[–[*¦[Ñ[ì[ ü[\\*&\Q\W\h\ y\ „\\»¦\b]f] ]‹] ¤]°]Ê]Û]ì]ï]#^\$^^'’^/º^ê^$ÿ^%$_J_`_c_’g_ú_` /` ;`\`s` `—`¦` µ`Á`É`Ñ`Ù`ß`ô` aa8aÉaÏaåa=ëa)b1~…œ~J"cm[Ño-€«€7Im_ï[O‚«‚±‚ùÁ‚»ƒÓƒ ðƒüƒ„$„<„HS„Zœ„2÷„"*…M…e…|…~”…q†…†ˆ˜†!‡%‡9‡/>‡ n‡‡¢‡ ¹‡LJχÖ‡ å‡"ð‡$ˆ8ˆQˆjˆ{ˆ‹ˆœˆ´ˆÈˈÛˆõˆ ‰$(‰M‰m‰‡‰‰³‰#ЉVô‰KŠbŠkŠ ~Š‰Š™Š©Š ÇŠÑŠãŠþŠ‹‹.‹ M‹Y‹b‹z‹•‹H™‹5â‹mŒ7†Œ ¾Œ3ÈŒaüŒ^ch.… ´ÕÝùŽ0ŽBŽUŽgŽzŽŒŽŸŽ³ŽÃŽÔŽæŽùŽ*Fe}–¯ÅÖ ïù! O+{’’i¨’?“R“Gj”‡²”‡:•5•ùø–Yò—L™\™x™µˆ™>š[šmš…šš±šÚÓšçš2ùš2,›_› w››%’›%¸›Þ›-î›-œJœ Zœfœuœ#‹œ#¯œÓœÙœßœüœ.CUo%Œ%²Ø3ó3'ž [žgž{žžŸž,¶ž,㞟/ŸNŸ`Ÿ*tŸ*ŸŸ2ÊŸ2ýŸ&0 &W  ~ Œ ” ¬ =Ì  ¡"¡ 6¡@¡^¡ |¡‰¡§¡¡Û¡õ¡¢'0¢X¢s¢Œ¢¦¢,â-ð¢%£ED£BŠ£EÍ£$¤8¤R¤yd¤VÞ¤5¥;T¥6¥Ç¥ç¥%þ¥V$¦]{¦OÙ¦\)§†§§™¶§4P¨q…¨Š÷¨A‚©Ä©Ó©"ë©«!«A9«9{«gµ«w¬•¬$­¬$Ò¬#÷¬,­$H­0m­?ž­HÞ­*'®LR®;Ÿ®'Û®¯¯.¯L¯f¯„¯ “¯ž¯µ¯C̯5°@F°‡°˜°)ª°Ô°ô°8±jJ±µ±ïбÀ²*Ó²9þ²*8³9c³S³[ñ³dM´0²´ã´,ÿ´C,µ=pµ®µ+ŵñ¶2·26·?i·©·1º·ì·6ý·%4¸6Z¸‘¸!¯¸Ѹeï¸0U¹ †¹A¹±Ò¹j„ºGïº7»O»$g»bŒ»$ï»E¼\Z¼:·¼:ò¼ -½9½V½&k½&’½%¹½%ß½!¾!'¾I¾`¾ r¾7“¾¤Ë¾1p¿1¢¿½Ô¿-’À.ÀÀ<ïÀ,Á=ÁLÁSÁqÁÁ ªÁËÁçÁ$Â^'Â2†Â3¹ÂCíÂB1ÃKtÃ/ÀÄðÄ2ÅQ:ÅcŒÅ?ðÅI0ÆzÆ,ƒÆ$°Æ8ÕÆ¾Ç ÍÇÚÇ!úÇ%È$BÈ3gÈ$›ÈÀÈ!àÈÉÉ%:É%`É%†É ¬É*ºÉ åÉñÉÊÊ&!Ê&HÊ,oÊ:œÊ×ÊûÚÊ'ÖËþÌÎ#Î<Î7S΋Î7¢Î'ÚÎNÏ0QÏ‚Ï&‰ÏE°Ï'öÏ0ÐOÐ!dÐ †Ð”Ð¥Ð"¶ÐÙÐ!êÐM Ñ4ZÑѬÑ(ÀÑ éÑóÑ= Ò5KÒÒ–Ò#µÒ'ÙÒ ÓV Ó"cÓs†Ó-úÓ(ÔX1ÕŠÕ ©ÕJÊÕ@Ö6VÖÖ(¡ÖÊÖTãÖ8×5A×5w×+­×+Ù×$ØŠ*Ø µÙ#ÀÙäÙ#øÙÚ.0Ú*_Ú*ŠÚµÚ"ºÚWÝÚŠ5Û"ÀÛJãÛd.Ü5“Ü;ÉÜAÝ0GÝ xÝ…Ý8ŽÝ5ÇÞ3ýÞ#1ßGUß0ß3Îßà&à&CàjàŠàžà ²à½à9Æà9á :á%[áùá{â1Œâ ¾âqÉâ';ãDcã/¨ã·Øã”ä%å(4åk]åÉåäå+ëå\æ°tæU%è\{é<Øé)ê%?ê-eêé“êN}ë9Ìëìé íÅõí»îÔîðî( ïG5ï,}ï,ªï4×ï' ð'4ð,\ð‰ð ¤ð²ð'Áðéð2øð +ñc6ñšñ´ñÇñ'Öñ'þñ&ò?òTPòT¥òúòóQ2ó„ó•ó®óÇóßóMóóAô1Pôâ‚ôeõ €õ‹õœõ¶õ Ðõ ñõö(öAö]öjwöâöýö÷3*÷^÷*x÷D£÷.è÷&ø>øVønø‡ø(£øRÌø(ù%Hùnù6Œù-Ãù(ñùú>7ú(vú(Ÿú%Èú-îúû 4û Aû LûYûDnû³û<Íû ü ü8"ü[ü!sü•ü;±ü-íü-ý;Iý-…ý-³ýCáý%þ3)ÿ1]ÿÿ& ÿ&Çÿ;îÿ*;Eœ†­?4#t'˜&Àç)11Tc¸FÐ $é9t#Șa%~8¤Ý)ø<"R_"² ÕYâS<}ª"( yK ~Å žD ã K DO —” ¯,tÜ4Q4†4»JðŠ;ƒÆ?J€Šh ƒtYøCRß–>vGµLýRJlg ”r7¦?hæÀO-t>¬³ `Ñ ÓYàè:¥# ®É x!‡!× !1x#(ª#Ó#ä#"$=#$)a$l‹$ø$U&9^&=˜&)Ö&''('Ñ.()í)*" *0*IC*<*!Ê*(ì*+5+Q+`+€+C–+DÚ+$,$D,i, „,¥,1À,*ò,-&0-4W-'Œ-H´-Fý-8D.*}.F¨.[ï.hK/[´/0A1V1'k1“1,£1,Ð14ý122)M20w2 ¨2 É2Ô2wÜ2 T3b3#z3+ž3Ê3”Ñ3cf4³Ê4V~5Õ5Yæ5¿@67 7+"7UN7%¤7Ê7NÛ7U*8€8Ÿ8¤8ª8³8 ¹8 Ä8Ñ8 Ø8ã8ç8ì8 ò8ü89&9B9 S9`95x9®9.È9÷9:/":{ó˜Àç=Fý†‹Á½Í s-<>¹O•MD6}úvbÁa1Jºë×ÓwB™S³(.†Œ„[;W‘uE.HÚÆ»ÀL„r>¿¨>~Ù;%ðßîÊ\¸“í*ºêï]©cVáföK«ÙLÅ´ð”¢ëqæS~µ쨣q®AÏñ\Õƒ ]l‰7[mÑ?§¥c:àsâôoQ¼?¶Íÿ¹ùJÓ7TIíÜ_)ÒWIþE'wSPP€•_YX…Rü‘ZÎ’ *^ªAyŸ´ÔZ)i 2 …·ÑŒË/06ÅÔz‡8ÏF¬¢80OŸ/n¬n±jm¢Ì£+#R²T¾-ºÖŠiE)²}œ FeçB—jz|#y`àƒ(U,ƒæ÷3pNüldÃö_§Ž4óx`xY&¯Ã1  bÒ@\Ü <Áš·X`'É?©D~£p4"À˜Gaì±á¦ÈU$¯ ¿št­– Æû/±d“fÇ!œG©5‘¥³ä—v;ñãµõZtzˆ¦9÷îtåK,M½ÈÚÌ4¸Cu"«U%œXÄÂ{ú¶Þ¤¡û’þ“Y+›Rž$C!Æ-[ÝäV*qeé08»–¼«²W ¥=hVÂŒcµ9¤k7ª®‹›®ãÎŽÝgÛ^%g|ø(»s­·GoÖ¦ +‚‚°w5‚ÄeP’¸ÊÄylÉÞ9¨DréCQ$j{<ô™ òK‰–Õ]åuêJHõkÃo½ødNv×A†‡ÿ„¶k¡¾§™ —¿xù¼´^M ØiI1N"a¾¤3‡QØg&­p,ž¬}=ÛHÇm' BŠ  òâ €ˆ2ª:èËOf…‰b5”ß.¡Ç³èš@|°Ðhž&@#6Tn˜ŸŠ‹¯2ˆ°Âr”›•Ѐï!ý ŽhLÅ3:¹ (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Ukrainian Language: uk_UA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3)); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: uk X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (змінено) (не збережено)%d збіг у коді%d збіги у коді%d збігів у коді%d збігів у коді%d запиÑ%d запиÑи%d запиÑів%d запиÑи%d Ð·Ð°Ð¿Ð¸Ñ Ð±ÑƒÐ»Ð¾ попередньо перекладено.%d запиÑи було попередньо перекладено.%d запиÑів було попередньо перекладено.%d запиÑи було попередньо перекладено.%d помилка%d помилки%d помилок%d помилкиСталаÑÑ %d помилка.СталиÑÑ %d помилки.СталиÑÑ %d помилок.СталаÑÑ %d помилка.СталаÑÑ %d помилка:СталиÑÑ %d помилки:СталиÑÑ %d помилок:СталаÑÑ %d помилка:ВиÑвлено %d проблему з початковими Ñ€Ñдками.ВиÑвлено %d проблеми з початковими Ñ€Ñдками.ВиÑвлено %d проблем з початковими Ñ€Ñдками.ВиÑвлено %d проблеми з початковим Ñ€Ñдком.Знайдено %d проблему з перекладом.Знайдено %d проблеми з перекладом.Знайдено %d проблем із перекладом.Знайдено %d проблеми із перекладом.%i Ñ€Ñдок файлу «%s» було завантажено некоректно.%i Ñ€Ñдки файлу «%s» було завантажено некоректно.%i Ñ€Ñдків файлу «%s» було завантажено некоректно.%i Ñ€Ñдка файлу «%s» було завантажено некоректно.Формат %sÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ %sФормат %sІмпортовано %s переклад.Імпортовано %s переклади.Імпортовано %s перекладів.Імпортовано %s переклад.&Про заÑтоÑунок&Про Poedit...&ЗаÑтоÑувати&ПовернутиÑÑ&СкаÑувати&ОчиÑтитиЗ&акрити&Копіювати&Вилучити&Завершити та до наÑтупного&Завершити та до наÑтупного&РедагуваннÑ&Файл&Знайти…&Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ GNU gettext&Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ GNU gettextПере&йти&Групувати за контекÑтом&Групувати за контекÑтом&Довідка&Ðовий&Ðовий…&ÐаÑтупний >ÐаÑтупний перекладÐаÑтупний переклад&ÐÑ–&ОК&Онлайн-довідка&Онлайн-довідка&Відкрити...&Відкрити…&Ð’Ñтавити&ÐалаштуваннÑ&ÐалаштуваннÑ…Попередній перекладПопередній переклад&ВлаÑтивоÑті…&Знищити вилучені переклади&Знищити вилучені переклади&Вийти&Повторити&Замінити&Зберегти&Зберегти Ñк&Показувати збіги в коді&Показувати збіги в коді&Початкове вікно&Початкове вікно&Переклад&СкаÑуватиÐеперекладене — &вгорі&Ðеперекладене — вгорі&Оновити з початкового коду&Оновити з початкового коду&Перевірити переклад&Перевірити переклад&ВиглÑд&Так(Типова мова)(не авторизовано)(потрібна Windows 8 або новіші верÑÑ–Ñ—)< &Попередній<без назви>Про %sОбілковий запиÑОблікові запиÑиДодатиДодати коментарДодати файли…Додати теки…Додати проєктДодати шаблон…Додати коментарДодати теку до ÑпиÑкуДодати файли…Додати теки…Додати проєктДодати шаблон…Додаткові ключові ÑловаДодаткові прапорці xgettext:Розширені параметриРозширені Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ…Розширені Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½ÑРозширені Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ…УÑÑ– файли перекладуУÑÑ– коментаріУÑÑ– Ñ€ÑдкиТакож типово викориÑтовувати ключові Ñлова Ð´Ð»Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ñ… мовЗавжди вÑтановлювати Ñ„Ð¾ÐºÑƒÑ Ñƒ поле вводу текÑтуСталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°.Елемент в ÑпиÑку вхідних файлів:Елемент ÑпиÑку ключових Ñлів:Зовнішній виглÑдЗаÑтоÑуватиПриблизний збіг з ППВи впевнені, що бажаєте видалити екÑтрактор "%s"?Ви впевнені, що хочете очиÑтити пам'Ñть перекладів?Ðвтоматично перевірÑти наÑвніÑть оновленьÐвтоматично компілювати файл MO під Ñ‡Ð°Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½ÑПовернутиÑÑБазовий шлÑÑ…:Бета-верÑÑ–Ñ— міÑÑ‚Ñть новітні функції Ñ– поліпшеннÑ, але можуть бути менш Ñтабільними.ВивеÑти вÑе на передній планПошкоджений файл PO: msgstr у множині викориÑтовуєтьÑÑ Ð±ÐµÐ· msgid_pluralПошкоджений файл PO: msgstr у однині викориÑтана разом із формою множини msgid_pluralЗламана розмітка у Ñ€Ñдку перекладу.ВибратиОглÑд файлівУÑталено, неточні результати також включаютьÑÑ, але позначаютьÑÑ Ñ‚Ð°ÐºÐ¸Ð¼Ð¸, що потребують доопрацюваннÑ. Увімкніть цю опцію, щоб включалиÑÑ Ð»Ð¸ÑˆÐµ ідеальні збіги.СкаÑуватиСкаÑуваннÑ…Ðе вдалоÑÑ Ñтворити тимчаÑову теку.Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ програму: %sÐеможливо зробити попередній переклад з невідомої мови.Ðеможливо здійÑнити попередній переклад без початкового текÑту.Перша великаМенеджер &каталогівМенеджер &каталогівМенеджер каталогівЗмінити мову інтерфейÑÑƒÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ:Перевірити документ заразПеревірити граматику Ñ– орфографіюПеревірÑти орфографію під Ñ‡Ð°Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð½ÑПеревірити оновленнÑ…Перевірити переклад на наÑвніÑть помилокПеревірити наÑвніÑть оновлень…Перевірка орфографіїОчиÑтитиОчиÑтити менюСтерти перекладОчиÑтити менюСтерти перекладЗакритиХмараПоÑва в кодіПоÑва в кодіСпівпрацюйте з іншими людьми онлайн.Ð—Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¸Ñ… файлів…Команда Ð´Ð»Ñ Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ:КоментарКоментар:Коментарі з префікÑом:Компілювати в MO…Компілювати в…Скомпільовані файли перекладуÐалаштувати Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ð³Ð¾ коду у ВлаÑтивоÑÑ‚ÑÑ….ПідтвердженнÑЗ'єднайте Poedit з підтримуваними хмарними платформами локалізації, щоб безперешкодно Ñинхронізувати переклади, оброблювані на них.КопіюватиКопіювати форму одниниКопіювати з початкового текÑтуКопіювати форму одниниКопіювати з початкового текÑтуВиправлÑти автоматично орфографічні помилкиÐе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ відомоÑті про проєкт Localazy.Ðеможливо завантажити файл. Імовірно, він пошкоджений.Ðеможливо зберегти файл %s.Створити новийСтворити новий перекладСтворити новий переклад з POT-шаблону.Створити новий проєкт перекладівПомилка CrowdinCrowdin це онлайн платформа ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ð°Ð¼Ð¸ та заÑіб Ð´Ð»Ñ Ñпільного перекладу. Ми Ñамі викориÑтовуємо Crowdin, щоб перекладати Poedit багатьма мовами, Ñ– ми любимо його.Ви&різатиКориÑтувацькі екÑтрактори:КориÑтувацькі екÑтрактори:Ðалаштувати панель інÑтрументів…ВирізатиРозмір бази даних на диÑку:ВидалитиВидалити з пам'Ñті перекладівВидалити екÑтракторВидалити з пам'Ñті перекладівВидалити проєктВидалити коментарВидалити Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ не видалить жодного файлу перекладу.Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð±Ñ–Ð¶Ð½Ð¾Ñтей…Теки:Справді хочете видалити проєкт «%s»?Хочете перезавантажити файл з диÑка? Якщо це зробити, ваші незбережені зміни в Poedit буде втрачено.Видалити вÑÑ– переклади, Ñкі ідентичні початковому текÑту?Що робити з невикориÑтаним перекладом?Ðе зберігатиÐе зберігатиÐе показувати зновуÐе позначати точні збіги Ñк «потребує доопрацюваннÑ»Ðе показувати Ð·Ð½Ð¾Ð²ÑƒÐ—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð°Ð¹Ð½Ð¾Ð²Ñ–ÑˆÐ¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒâ€¦Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñ–Ð² вимкнено в цьому проєкті.ПеретÑгніть теки або файли ÑюдиПеретÑгніть теки або файли Ñюди&ВийтиЕ&кÑпорт до HTML…РедагуватиРедагувати &коментарРедагувати &коментарРедагувати коментарРедагувати коментарРедагувати проєктРедагувати проєктРедагуваннÑЗмінити…Електронна пошта:Перейти в повноекранний режимЕлементи цього файлу мають форми множини, відмінні від вказаних у заголовку Plural-Formms файлуЗапиÑи з помилками — вгоріЗапиÑи з помилками — вгоріЕлементи з помилками позначені у ÑпиÑку червоним. Виділіть елемент, щоб переглÑнути подробиці помилки.Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файлПомилка Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»ÑƒÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ XLIFF: %sПомилка: ПомилкиУÑеТочний збіг з ППВиключені шлÑхиЕкÑпорт до TMX…ЕкÑпортувати Ñк…ЕкÑпорт до HTML…ЕкÑпорт до TMX…ЕкÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ HTMLÐе вдалоÑÑ ÐµÐºÑпортувати пам'Ñть перекладів до “%sâ€.ЕкÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñ–Ð²â€¦Ð’Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ з початкового кодуВидобути нотатки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ð°Ñ‡Ñ–Ð² з:Шукати початковий текÑÑ‚ у цих теках:Ð’Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдків Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ з %s Ñ„Ð°Ð¹Ð»Ñƒâ€¦Ð’Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдків Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ з %s Ñ„Ð°Ð¹Ð»Ñ–Ð²â€¦Ð’Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдків Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ з %s Ñ„Ð°Ð¹Ð»Ñ–Ð²â€¦Ð’Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдків Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ з %s файлу…ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐµÐºÑтрактораЕкÑтракториÐе вдалоÑÑ Ð·Ð²'ÑзатиÑÑ Ð· Poedit.Ðе вдалоÑÑ Ð²Ð¸Ñ‚Ñгти Ñ€Ñдки з початкового коду.Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ файл з видобутими перекладами.Ðе вдалоÑÑ Ð¾Ð±'єднати gettext-каталоги.Ðе вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ пам'Ñть перекладів: %sФайлÐеможливо відкрити файлФайлу “%s†не Ñ–Ñнує.Файл «%s» не Ñ” файлом перекладу.Файл «%s» доÑтупний лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ– не може бути збережений. Будь лаÑка, збережіть його з іншою назвою.ЗнайтиЗнайти наÑтупнийЗнайти попереднійЗнайти та замінити…Шукати в коментарÑхШукати у початкових текÑтахШукати у перекладахЗнайти наÑтупнийЗнайти попереднійВиправити мовуВиправити мовуВиправити заголовокВиправити заголовокФайли перекладу FlutterФорма %iФорма %i (невикориÑтана)GNU gettextЗагальніHTML файлиДовідкаСховати бічну панельСховати панель ÑтануСховати це повідомленнÑЯк працює хмарна ÑинхронізаціÑ?IDТочно вилучити з каталогу вÑÑ– невикориÑтані переклади? Якщо вони знову знадоблÑтьÑÑ Ð² майбутньому, вам доведетьÑÑ Ñ‰Ðµ раз перекладати Ñ—Ñ….Якщо ви раніше відмовили у доÑтупі до файлів, то можете дозволити його в СиÑтемних налаштуваннÑÑ… > Безпека та конфіденційніÑть > КонфіденційніÑть > Файли та теки.Якщо ви раніше відмовили у доÑтупі до файлів, то можете дозволити його в СиÑтемних налаштуваннÑÑ… > Безпека та конфіденційніÑть > Файли та теки.ЗнехтуватиІгнорувати регіÑтрІмпорт з TMX…Імпортувати файли перекладу…Імпорт з TMX…Імпортувати файли Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒâ€¦Ð†Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð· “%sâ€â€¦Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ пам'Ñть перекладів.Ð†Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñ–Ð²â€¦Ð£: %sВключити бета-верÑÑ–Ñ—ÐепоÑлідовний верхній/нижній регіÑтрÐепоÑлідовний пробілВідомоÑті про перекладачаВÑтановитиÐеправильний файлВиклик:ПроблемаПроблемиФайли перекладу JSONЗалишитиÐазва мови або кодМова перекладу така ж, Ñк Ñ– мова оригіналу.Мову перекладу не зазначено.Мова перекладу:Вибір мовиКоманда перекладачів:Мова:ОÑтанні зміниДокладніше про ключові Ñлова GettextДокладніше про форми множиниДокладнішеДокладніше про %sДокладніше про CrowdinДокладніше про GNU gettextРÑдокРÑдок %d файлу «%s» пошкоджений (недійÑні дані %s).Ð—Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ€Ñдків:СпиÑок розширень, розділених крапкою з комою (наприклад, *.cpp;*.h):Завантажити англійÑькоюLocalazy — платформа локалізації з виÑоким рівнем автоматизації, що дозволÑÑ” будь-кому легко перекладати Ñвої продукти й матеріали різними мовами.Файли MO не можна редагувати безпоÑередньо в Poedit.У нижній регіÑтрУ верхній регіÑтрСтворити новий переклад з цього POT-файлу.Ðеправильний формат заголовка: «%s»Керувати обліковими запиÑÐ°Ð¼Ð¸ÐšÐµÑ€ÑƒÐ²Ð°Ñ‚Ð¸â€¦Ð—Ð»Ð¸Ñ‚Ñ‚Ñ Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð½Ð¾Ñтей…МінімізуватиÐазва проєкту, Ð´Ð»Ñ Ñкого призначений перекладІм'Ñ:До н&аÑтупного незавершеногоДо н&аÑтупного незавершеногоПотребує доопрацюваннÑПотребує доопрацюваннÑПомилка мережі: %s (%d)Ðіколи не дозволÑйте ÑпиÑку Ñ€Ñдків отримати фокуÑ. Якщо активовано, можна викориÑтовувати Ctrl+Ñтрілки Ð´Ð»Ñ Ð½Ð°Ð²Ñ–Ð³Ð°Ñ†Ñ–Ñ— за допомогою клавіатури, але вводити текÑÑ‚ можна починати одразу не натиÑкаючи Tab Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ фокуÑу.ÐовийÐовий з &POT/PO-файлу…Ðові Ñ€ÑдкиÐовий з &POT/PO-файлу…Ðові Ñ€ÑдкиÐові Ñ€Ñдки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ:ÐаÑтупна форма множиниÐаÑтупна форма множиниÐіЗбігів не знайденоÐемає запиÑів, Ñкі можна попередньо переклаÑти.Ðемає даних про виÑÐ²Ð»ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ñ€Ñдка у початковому коді вказаному у файлі.Збігів не знайденоЖодних проблем з перекладом не знайдено.У вашому обліковому запиÑÑ– немає проєктів з перекладу.Ðемає даних про викориÑтаннÑПерекладено не вÑÑ– форм множини.Ðе авторизовані, увійдіть повторно.Примітки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ð°Ñ‡Ñ–Ð²Ð“Ð°Ñ€Ð°Ð·Ð´ÐžÐ´Ð¸Ð½Ð£Ð²Ñ–Ð¼ÐºÐ½Ñ–Ñ‚ÑŒ це лише Ñкщо ви впевнені в ÑкоÑті Ñвоєї пам'Ñті перекладів. Типово вÑÑ– збіги з пам'Ñті перекладів позначаютьÑÑ Â«Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” доопрацюваннÑ» й підлÑгають перевірці.Заповнювати лише точні збігиВідкрити хмарний переклад…Відкрити нещодавніВідкрити й редагувати файли перекладу.Відкрити хмарний перекладВідкрити хмарний переклад…Відкрити файлВідкрити в редакторіВідкрити в редакторіВідкрити недавніВідкрити...Відкрити…ОпціїІншеДо п&опереднього незавершеногоДо п&опереднього незавершеногоФайли перекладу POШаблони перекладу POTPOT файли — лише шаблони й Ñамі не міÑÑ‚Ñть будь-Ñких перекладів. Щоб зробити переклад, Ñтворіть новий файл PO, заÑнований на цьому шаблоні.Ð’ÑтавитиВÑтавити в поточному ÑтиліШлÑхиВиконує Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð· початкового коду Ð´Ð»Ñ Ð²ÑÑ–Ñ… файлів проєкту.У доÑтупі відмовлено.У перекладі відÑутній заповнювач «%s»КоректніÑть заповнювачівБудь лаÑка, відкрийте Ñ– редагуйте відповідний PO-файл. Коли ви збережете його, MO-файл також оновитьÑÑ.Будь лаÑка, Ñпершу збережіть файл. Без Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ†ÐµÐ¹ розділ редагувати не можна.МножинаПереклад форм множиниВираз форми множини, заÑтоÑований у файлі, незвичний Ð´Ð»Ñ %s.Форми множини:PoeditPoedit. Менеджер каталогівPoedit автоматично виправив хибний вміÑÑ‚ у файлі «%s».Poedit може Ñпробувати заповнити нові Ñ€Ñдки тільки попередніми перекладами з цього файлу або з вашої пам'Ñті перекладів. ВикориÑÑ‚Ð°Ð½Ð½Ñ ÐŸÐŸ буде не дуже ефективним, Ñкщо вона майже порожнÑ, але буде поліпшуватиÑÑ Ð² міру Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñ–Ð².Poedit не може показати початковий код, де викориÑтовуєтьÑÑ Ñ€Ñдок, оÑкільки файл або недоÑтупний у вказаному розташуванні, або він має Ñимволічне поÑиланнÑ, Ñке не вказує на Ñправжній файл.Poedit — проÑтий у викориÑтанні редактор перекладів.Poedit не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл «%s».Попередній &переклад…Попередній перекладПопередньо перекладенийПопередньо перекладено %u Ñ€ÑдокПопередньо перекладено %u Ñ€ÑдкиПопередньо перекладено %u Ñ€ÑдківПопередньо перекладено %u Ñ€ÑдкаПопередній переклад з пам'Ñті перекладів…Виконати попередній переклад…Попередній переклад автоматично знаходить точні або нечіткі збіги Ð´Ð»Ñ Ð½ÐµÐ¿ÐµÑ€ÐµÐºÐ»Ð°Ð´ÐµÐ½Ð¸Ñ… Ñ€Ñдків в пам'Ñті перекладів Ñ– заповнює в Ñ—Ñ… перекладах.Попередній переклад вимагає, щоб був доÑтупний початковий текÑÑ‚. Він не працює, Ñкщо викориÑтовуютьÑÑ Ð»Ð¸ÑˆÐµ ID без Ñамого текÑту.Попередній переклад потребує, щоб мова початкового текÑту була відомою. Poedit не зміг знайти Ñ—Ñ— в цьому файлі.ÐалаштуваннÑÐалаштуваннÑ...ÐалаштуваннÑâ€¦ÐŸÑ–Ð´Ð³Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдків…Зберігати Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ñвних Ñ„Ð°Ð¹Ð»Ñ–Ð²ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð° Ð¼Ð½Ð¾Ð¶Ð¸Ð½Ð¸ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð° множиниПопередній початковий текÑтРаніше відредагованоРаніше відредагованоÐазва та верÑÑ–Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ:Ðазва проєкту:Проєкт:ПроєктиПеревірки пунктуаціїЗнищитиЗнищити вилучені перекладиВийтиÐе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ вміÑÑ‚ файлу через таку помилку: %sÐедавні файлиВідновитиОновитиПерезавантажити файлПерезавантажити файлЗалишилоÑÑ: %dВилучитиВилучити переклади, Ñкі збігаютьÑÑ Ð· джереломВилучити переклади, Ñкі збігаютьÑÑ Ð· джереломВилучені Ñ€ÑдкиВилучені Ñ€ÑдкиВилучені Ñ€Ñдки (більше не викориÑтовуютьÑÑ):ЗамінитиЗамінити &вÑеЗамінити &вÑеРÑдок заміниЗамінити…ВідÑутній обов’Ñзковий заголовок Plural-Forms.СкинутиСкинути пам'Ñть перекладівПри очищенні пам'Ñті перекладів будуть безповоротно видалені вÑÑ– збережені переклади. Ви не зможете ÑкаÑувати цю операцію.Показати у FinderОглÑдЗберегтиЗберегти &Ñк…Зберегти &Ñк…ВÑе одно зберегтиВÑе одно зберегтиЗберегти ÑкЗберегти Ñк…Зберегти зміниЗберегти Ñ„Ð°Ð¹Ð»Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð² іншому міÑці не підтримуєтьÑÑ Ð´Ð»Ñ XCLOC файлів.Знімки екрана:Вибрати &вÑеВибрати вÑеВиберіть файл TMX Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ’Ð¸Ð±ÐµÑ€Ñ–Ñ‚ÑŒ текуВибрати файл перекладуВиберіть файли перекладу Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ’Ð¸Ð±Ñ€Ð°Ñ‚Ð¸ шаблон перекладуВиберіть бажану мовуВибрати мовуВибрати мовуÐалаштуваннÑÐалаштуваннÑ…Показати бічну панельПоказати орфографічні та граматичні помилкиПоказати панель ÑтануПоказувати &ID Ñ€ÑдківПоказати заміниПоказати панель інÑтрументівПоказувати попередженнÑПоказати у провідникуПоказати в теціПоказати або Ñховати бічну панельПоказати бічну панельПоказати панель ÑтануПоказувати &ID Ñ€ÑдківПоказувати попередженнÑБічна панельУвійтиВийтиУвійтиУвійти до %sУвійти до хмарного облікового запиÑуУвійти до CrowdinУвійти у хмарний обліковий запиÑВийтиОднинаРозумне копіюваннÑ/вÑтавленнÑРозумні тиреРозумні поÑиланнÑРозумні цитатиСортувати за положеннÑм у &файліСортувати за &оригіналомСортувати за &перекладомСортувати за положеннÑм у &файліСортувати за &оригіналомСортувати за &Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ð¾Ð¼ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² з початковим кодом:ЕкÑтрактори заÑтоÑовуютьÑÑ Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ Ñ€Ñдків, що перекладаютьÑÑ, у файлах початкового коду та витÑгують Ñ—Ñ… так, щоб Ñ—Ñ… можна було переклаÑти.Початковий код недоÑтупний.Початковий код не знайденоОригіналID початкового текÑтуПочатковий текÑÑ‚ — %sКлючові Ñлова початкових файлівШлÑÑ… до джерелКлючові Ñлова джерельних файлівШлÑÑ… до джерелМовленнÑПеревірка орфографії вимкнена, тому що не вÑтановлено Ñловник Ð´Ð»Ñ Ð¼Ð¾Ð²Ð¸ %s.Перевірка орфографії та граматикиПочати озвучуваннÑЗупинити озвучуваннÑЗбережені переклади:КонтекÑÑ‚ Ñ€Ñдка: %sІдентифікатор Ñ€Ñдка: %sКількіÑть Ñимволів у Ñ€ÑдкуКількіÑть Ñимволів у Ñ€Ñдку: переклад | джерелоРÑдок пошукуРÑдкові проєкти Crowdin не підтримуютьÑÑ.ЗаміниПропозиціїПропозиції будуть недоÑтупними, Ñкщо неправильно вказано мову перекладу. Це може вплинути на інші функції, Ñк-от форми множини.Зайвий Ñимвол-заповнювач «%s», Ñкого немає у початковому текÑті.ПідтримуютьÑÑ Ð²ÑÑ– мови програмуваннÑ, що розпізнаютьÑÑ Ñ–Ð½Ñтрументами GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript тощо).Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð· CrowdinСинхронізувати переклад з CrowdinСинхронізаціÑПомилка ÑинхронізаціїÐе вдалоÑÑ Ñинхронізувати з Crowdin.СинтакÑична помилка в заголовку Plural-Forms («%s»).Пам'Ñть перекладівTMX файлВитÑг Ñ€Ñдків Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ з наÑвного POT-шаблону.Ðазва команди та адреÑа е-пошти або поÑиланнÑЗаміна текÑтуПам'Ñть перекладів не міÑтить ніÑких Ñ€Ñдків, Ñхожих на вміÑÑ‚ цього файлу. Вона підходить тільки Ð´Ð»Ñ Ð½Ð°Ð¿Ñ–Ð²Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ перекладу піÑÐ»Ñ Ñ‚Ð¾Ð³Ð¾, Ñк Poedit збере доÑтатньо даних з файлів, Ñкі ви переклали ÑамоÑтійно.TMX-файл пошкоджено.ВнеÑені іншим заÑтоÑунком зміни буде втрачено під Ñ‡Ð°Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ.Ðе вдалоÑÑ Ñкомпілювати файл у формат MO Ð´Ð»Ñ Ð¿Ð¾Ð´Ð°Ð»ÑŒÑˆÐ¾Ð³Ð¾ викориÑтаннÑ.Файл міÑтив дубльовані елементи, що не дозволено у PO-файлах та унеможливлює викориÑÑ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ. Poedit виправив цю помилку, проте ви повинні переглÑнути переклади, позначені «потребує доопрацюваннÑ», та, за потреби, виправити Ñ—Ñ….Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ файл в кодуванні «%s», Ñк це зазначено в налаштуваннÑÑ… перекладу. Він був збережений в UTF-8, Ñ– відповідним чином були змінені налаштуваннÑ.Файл був змінений. Хочете зберегти зміни?Файл у форматі, Ñкий не розпізнає Poedit.Файл був Ñкомпільований у формат MO, але, швидше за вÑе, не буде правильно працювати.Файл був збережений Ñ– Ñкомпільований в формат MO. Ðле, швидше за вÑе, не буде правильно працювати.Файл збережений, але не може бути зібраний та викориÑтаний Ñк MO.Файл був уÑпішно збережений.Ðеможливо відкрити файл «%s».Ðеможливо зберегти файл «%s».Файл «%s» було змінено іншим заÑтоÑунком.Старий початковий текÑÑ‚ (до оновленнÑ), Ñкому відповідає неточний переклад.ÐайпроÑтіший ÑпоÑіб заповнити цей файл перекладами — оновити його з POT:Переклад не починаєтьÑÑ Ð· пробілу.Переклад закінчуєтьÑÑ Ñимволом нового Ñ€Ñдка, а початковий текÑÑ‚ — ні.Переклад закінчуєтьÑÑ Ð¿Ñ€Ð¾Ð±Ñ–Ð»Ð¾Ð¼, а початковий текÑÑ‚ — ні.Переклад закінчуєтьÑÑ Ð½Ð° «%s», але початковий текÑÑ‚ закінчуєтьÑÑ Ð½Ð° «%s».У переклад відÑутній Ñимвол нового Ñ€Ñдка вкінці.У перекладі відÑутній пробіл вкінці.Переклад готовий до викориÑтаннÑ, але %d Ð·Ð°Ð¿Ð¸Ñ Ñ‰Ðµ не перекладено.Переклад готовий до викориÑтаннÑ, але %d запиÑи ще не перекладено.Переклад готовий до викориÑтаннÑ, але %d запиÑів ще не перекладено.Переклад готовий до викориÑтаннÑ, але %d запиÑи ще не перекладено.Переклад готовий до викориÑтаннÑ.Переклад повинен закінчуватиÑÑ Ð½Ð° «%s».Переклад не повинен закінчуватиÑÑ Ð½Ð° «%s».Переклад повинен починатиÑÑ Ð· великої букви.Переклад повинен починатиÑÑ Ð· Ñимволу в нижньому регіÑтрі.Переклад починаєтьÑÑ Ð· пробілу, а початковий текÑÑ‚ — ні.Переклади були позначені Ñк "потребує доопрацюваннÑ". Перевірте Ñ—Ñ… правильніÑть.Дивно, але переклад відÑутній.СталиÑÑ Ð½ÐµÐ³Ð°Ñ€Ð°Ð·Ð´Ð¸ при Ñпробі правильного Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ (але його вÑе одно збережено).Виникла помилка під Ñ‡Ð°Ñ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñ–Ð² на Localazy.Під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. Ð’ результаті деÑкі дані можуть бути відÑутні або пошкоджені.Ці параметри впливають на внутрішнє Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² PO. Скоректуйте Ñ—Ñ…, Ñкщо у Ð²Ð°Ñ Ñ” Ñпеціальні вимоги, наприклад, Ñкщо ви кориÑтуєтеÑÑ ÑиÑтемою контролю верÑій.Цей файл JSON не Ñ” файлом перекладів Ñ– не може бути змінений у Poedit.УÑÑ– переклади, Ñкі збігаютьÑÑ Ð· початковим текÑтом, буде видалено. Цю дію неможливо ÑкаÑувати.Цей файл міÑтить елементи з формами множини, але не має налаштованого заголовка Plural-Forms.Цей файл викориÑтовує ID Ñ€Ñдків заміÑть початкового текÑту. Poedit може завантажувати текÑти англійÑькою з файлу «%s».Ð¦Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° запуÑкає екÑтрактор. %o розширює назву початкового файлу, %K — ÑпиÑок ключових Ñлів, %F — ÑпиÑок вхідних файлів, %C — ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ (див. нижче).Цей Ñ€Ñдок був знайдений в пам'Ñті перекладів Poedit.Це буде додано до командного Ñ€Ñдка лише Ñкщо вказано ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² з початкового коду. %c замінюєтьÑÑ Ð½Ð° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ.Це буде додано до командного Ñ€Ñдка Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ вхідного файлу. %f замінюєтьÑÑ Ð½Ð° ім'Ñ Ñ„Ð°Ð¹Ð»Ñƒ.Це буде додано до командного Ñ€Ñдка Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ ключового Ñлова. %k замінюєтьÑÑ Ð½Ð° ключове Ñлово.ЗагаломПеретвореннÑЗапиÑи, що перекладаютьÑÑ, не додаютьÑÑ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ в ÑиÑтему Gettext, а автоматично видобуваютьÑÑ Ð· початкового коду. Таким чином забезпечуєтьÑÑ Ñ—Ñ…Ð½Ñ Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ–Ñть Ñ– точніÑть. Перекладачі, зазвичай, працюють з PO-файлами (POT-шаблони), Ñкі підготував Ð´Ð»Ñ Ð½Ð¸Ñ… розробник.ПереклаÑти проєкт із хмариПерекладено: %d з %d (%d %%)ПерекладМова перекладуПам'Ñть перекладівПереклад потребує &доопрацюваннÑВлаÑтивоÑті перекладуФайл перекладу вже актуальний, змін до Ñ€Ñдків не вноÑилоÑÑŒ.Файл перекладу оновлений з %s зміною.Файл перекладу оновлений з %s змінами.Файл перекладу оновлений з %s змінами.Файл перекладу оновлений з %s зміною.Пошкоджено базу даних пам'Ñті перекладів: %s (%d).Помилка пам'Ñті перекладу: %s (%d).Переклад потребує &доопрацюваннÑВлаÑтивоÑті перекладуПропозиції перекладуПропозиції перекладу потребують, щоб початковий текÑÑ‚ був доÑтупний. Вони не працювали в разі, Ñкщо викориÑтовуютьÑÑ Ð»Ð¸ÑˆÐµ ID без Ñамого текÑту.Пропозиції перекладу потребують, щоб мова початкового текÑту була відомою. Poedit не зміг визначити Ñ—Ñ— у цьому файлі.Переклад — %sПереклади не можуть бути оновлені з початкового коду, оÑкільки програмний код не знайдений у теці, вказаній у влаÑтивоÑÑ‚ÑÑ… файлу.ДваUTF-8 (рекомендовано)СкаÑуватиÐеÑподівано відÑутній вміÑÑ‚ у файлі XCLOC.СтавÑÑ Ð½ÐµÐ¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¸Ð¹ винÑток: %sUnix (рекомендовано)Ðевідома помилка Crowdin.Ðевідома помилкаÐе перекладеноОновитиОновити підÑумокОновити вÑеОновити вÑÑ– каталоги в цьому проєктіОновити вÑÑ– каталоги в цьому проєкті?Оновити з POT-&файлу…Оновити з POT-&файлу…Оновити з кодуОновити з POT-файлуОновити з кодуОновити з початкового кодуПідÑумок про оновленнÑОновленнÑÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð½Ðµ вдалоÑÑÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñ–Ð² Ð¿Ñ€Ð¾Ñ”ÐºÑ‚ÑƒÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñ–Ð²ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¾Ð¼Ð¾Ñтей про кориÑтувача…Ðе вдалоÑÑ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ переклади до %s.Ð’Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñ–Ð² до %s…ÐадÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒâ€¦Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñтовувати кориÑтувацький виразВикориÑтовувати кориÑтувацький шрифт Ð´Ð»Ñ ÑпиÑку:ВикориÑтовувати кориÑтувальницький текÑÑ‚ в полÑÑ… вводу:ВикориÑтовувати Ñтандартні правила Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— мовиВикориÑтовувати ці ключові Ñлова (назви функцій) додатково до типових Ð´Ð»Ñ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ Ñƒ початкових файлах Ñ€Ñдків, придатних Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ:ВикориÑтовувати пам'Ñть перекладівПеревіритиРезультати перевіркиВерÑÑ–Ñ %sПереглÑнути подробиці…ПереглÑнути Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð¸Ñ†Ñ–â€¦ÐžÑ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ—â€¦ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ: ЛаÑкаво проÑимо до PoeditПід Ñ‡Ð°Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð· джерелЛише Ñлово цілкомВікноWindowsБажаєте викориÑтовувати англійÑьку мову Ð´Ð»Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ð³Ð¾ текÑту?По колуПеренеÑеннÑ:Файли перекладу XLIFFКаталог локалізації XcodeТакРÑдки, що перекладаютьÑÑ, можна також отримати безпоÑередньо з програмного коду:Ðе можна перетÑгувати у вікно Poedit більше одного файлу.У Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” дозволу читати файли початкового коду з розташуваннÑ, вказаного у влаÑтивоÑÑ‚ÑÑ… файлу.Зміни набудуть чинноÑті піÑÐ»Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑку Poedit.Ваше ім'ÑВнеÑені зміни буде втрачено, Ñкщо Ñ—Ñ… не зберегти.Ваше ім'Ñ Ñ‚Ð° пошту буде викориÑтано лише Ð´Ð»Ñ Ð²ÐºÐ°Ð·Ñ–Ð²ÐºÐ¸ оÑтаннього перекладача в заголовках GNU gettext файлів.ÐульМаÑштабуватиПотребує доопрацюваннÑне видалÑти тимчаÑові файли (Ð´Ð»Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ)напр. nplurals=2; plural=(n > 1);помилка: підбирати Ñхожий переклад вÑередині файлуперейти до елемента у Ñ€Ñдку з указаним номеромобробити poedit:// URIAlt+Ctrl+ВнизEnterВлівоВправоShift+ВгоруaltctrlshiftПро %sСховати %sСховати іншіÐалаштуваннÑ...Вийти з %sСлужбиПоказати вÑепопередній переклад через ППневідома мованепідтримувана верÑÑ–Ñ (%s)попередженнÑ: you@example.com«%s» — некоректний POT-файл.poedit-3.6.3/locales/bg.mo0000644000175100001660000023364415011674363011062 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-ªOú‘’=&’%d’Š’ “G,“Gt“‘¼“YN”¨”F•[•v•Q‹•ݕ핖 – $–0–F–Z–l–(€–(©–Ò– ê–ô–(—(0—Y—)m—)—— Á—Í— Õ—à—ò— ˜ ˜ &˜2˜K˜d˜y˜Ž˜¢˜¶˜͘æ˜ÿ˜:™:O™ Š™–™ª™¼™Й9í™9'š aš ‚š £š ±š&¿š&æš2 ›2@›)s›)› Ǜ՛7Û›œ-1œ_œsœƒœ •œ¢œ±œ&œ'éœ#"54X&6´'ë#ž"7ž4Zž0ž8Àžùž@ Ÿ=MŸ@‹Ÿ-ÌŸúŸ •4 DÊ ¡D.¡>s¡²¡Æ¡9Ù¡u¢e‰¢Bï¢Y2£ Œ£—£º®£'i¤‘‘¤™#¥O½¥ ¦*¦I¦ O§[§Oq§GÁ§n ¨vx¨ï¨+ ©+6©+b©Ž©ª©(é<ì©B)ª-lª:šª-Õª(«,«&A«(h«&‘«)¸«â« ö«¬¬O;¬:‹¬9Ƭ­­,$­/Q­­% ­FÆ­ ®æ&® ¯¯1>¯p¯-¯?¾¯jþ¯ei°Aϰ±,0±G]±=¥±ã±Eû±A³BU³B˜³OÛ³+´3>´r´8†´D¿´8µ$=µ*bµ&µp´µ/%¶ U¶@a¶­¢¶‰P·zÚ·U¸p¸*Џgµ¸*¹:H¹\ƒ¹6à¹6º Nº"Zº}º-•º-ú-ñº-»(M»*v»¡»¸»Ò»ñ»² ¼-¼¼-ê¼æ½2ÿ½62¾>i¾¨¾ ·¾ ľ)Ѿ'û¾ #¿D¿!a¿ ƒ¿¤¿Uÿ'À4AÀJvÀkÁÀŸ-Á*ÍÁøÁG ÂaSÂ_µÂMÃ^cÃÂÃ7ËÃ0Ä94ÄknÄÚÄ&ìÄ&Å!:Å)\Å1†Å%¸Å&ÞÅ&Æ,ÆKÆ.jÆ.™Æ-ÈÆ öÆ*Ç /Ç;ÇDÇ XÇ/cÇ<“Ç1ÐÇEÈHÈ%cÈ ‰Éí”Ê‚Ë,ËÊË7åËÌ78ÌpÌEÌ%ÖÌüÌ)ÍD-ÍLrÍ,¿ÍìÍÎÎ3ÎBÎ9SÎ Î"™ÎT¼Î*Ï<ÏZÏyÏ –Ï Ï>ÀÏ7ÿÏ7Ð-SÐ(Ð,ªÐ×ÐeÞÐ(DÑ`mÑ?ÎÑ ÒdÓ}ÓšÓN¹Ó/Ô,8ÔeÔ1}Ô¯ÔÈÔßÔ$çÔ$ Õ 1Õ >Õ$KÕ®pÕ×1×Q×gׇ×(˜×.Á×.ðר$ØkBØ„®Ø3Ù;QÙIÙE×Ù\ÚQzÚ(ÌÚ õÚÛ? ÛDJÜ6Ü9ÆÜQÝ3RÝ6†Ý½Ý$ÜÝ$Þ/&Þ4VÞ‹ÞŸÞ³Þ ÆÞ&ÓÞ&úÞ !ß BßñcßUà:hà £àv°à#'áAKá8áÒÆá|™â!ã58ã‰nã2øã+ä52änhäÍ×ä8¥æPÞç;/è+kè'—è'¿èoçèVWé*®éÙéöÝêéÔë¾ìÑìïì1íX7í*í*»í*æí#î#5î+Yî…î ¡î¯î.¾îíî9ï >ïxIï0Âïóïð(ð(Fðoð„ðm™ðmñ!uñ!—ñZ¹ñò)òIòiò~òN“òâòBÿòùBó <ô]ônô‚ô¢ô*Âô*íôõ4õ*Sõ ~õgŸõö$öBö7`ö ˜ö+¹ö6åö/÷5L÷‚÷¡÷À÷Ó÷6é÷& ø>GøG†ø.Îø@ýø8>ùwù$–ùD»ù6ú>7úGvú8¾ú÷úû &û1ûBû1Yû ‹û1¬û Þûéû, ü6üLübü!zü4œü%Ñü!÷ü2ý%Lý5rý¿¨ý@hþ0©þÚþ;ôþ 0ÿ2Qÿ(„ÿ2­ÿ(àÿ ƒ&˜"¿â+"-,P7}aµZ&˜ ¯n¼¾+ê';/k0ˆ;¹Zõ P[cnJÒ$-BVp”Çk\ ÁÈ Š h‹ [ô nP €¿ ƒ@ÄAäA&Oh´¸mFþXE[žXú;S>ëÎ9ºGôN<W‹TãY8¦’J9r„d÷ƒ\àséÊ]( ÆvÓ9JÞ„¹c¼ Úç› 7ž!%Ö! ü! ""!/"$Q"{v"¥ò"]˜#:ö#!1$$S$(x$ï¡$ê‘%|&Ñ•&g'$n' “'S '1ô'#&(/J(!z(œ(³(*È(-ó(O!)Jq)*¼)*ç)"*+5*"a*7„* ¼*É*(Þ*B+,J+Qw+PÉ+7,-R, €,/¡,2Ñ,5-°:-;ë-'.*=.h.1x.1ª.7Ü./3/6R/‰/œ/­/_µ/#090)S06}0´0l¹0h&1¬1l<2©2p½2Ô.34 4 4$4,¦4Ó4[â46>56u5¬5±5 ·5Ä5 Ê5×5æ5 í5ú5þ56 66346h6†6 ™6$¦61Ë6ý6*7F7e7.u7|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Bulgarian Language: bg_BG MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: bg X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (незапазен) (незапазен)%d Ñрещане в кода%d ÑÑ€ÐµÑ‰Ð°Ð½Ð¸Ñ Ð² кода%d елемент%d елемента%d Ð·Ð°Ð¿Ð¸Ñ Ðµ предварително преведен.%d запиÑа Ñа предварително преведени.%d грешка%d грешкиВъзникна %d грешка.Възникнаха %d грешки.Възникна %d грешка:Възникнаха %d грешки:Открит е %d проблем в изходните низове.Открити Ñа %d проблема в изходните низове.С превода има %d проблем.С превода има %d проблема.%i ред от файла „%s“ не е зареден правилно.%i реда от файла „%s“ не Ñа заредени правилно.Формат на %sÐаÑтройки на %sформат на %s%s превод беше внеÑен.%s превода бÑха внеÑени.&ОтноÑно&ОтноÑно Poedit&Прилагане&Ðазад&Отказ&ИзчиÑтване&ЗатварÑне&Копиране&Изтриване&Готово, към ÑледващиÑ&Готово, към ÑледващиÑ&Редактиране&Файл&ТърÑене…&РъководÑтво на GNU gettext&РъководÑтво на GNU gettextО&бхождане&Групиране по контекÑÑ‚&Групиране по контекÑтПомо&щ&Ðов&Ðов…Следващ &>&Следващ низ&Следващ низ&Ðе&ДобреОн&лайн помощОн&лайн помощ&ОтварÑне…&ОтварÑне…По&ÑтавÑне&ÐаÑтройки&ÐаÑтройки…&Предишен низ&Предишен низ&СвойÑтва…&ПрочиÑтване на изтрити преводи&ПрочиÑтване на изтрити преводиИз&ход&ПовтарÑне&ЗаменÑне&ЗапазванеЗапазване &катоПоказване на &ÑрещаниÑта в кодаПоказване на &ÑрещаниÑта в кода&Ðачален прозорец&Ðачален прозорец&Превод&ОтмÑнаÐ&епреведените първиÐ&епреведените първиОбновÑване от &Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ÐžÐ±Ð½Ð¾Ð²Ñване от &Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´&Валидиране на превода&Валидиране на превода&Изглед&Да(Ползване на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ ÐµÐ·Ð¸Ðº)(не Ñте впиÑан/а)(изиÑква Windows 8 или по-нов)&< Предишен<без име>ОтноÑно %sПрофилПрофилиДобавÑнеДобавÑне на коментарДобавÑне на файлове…ДобавÑне на папки…ДобавÑне на проектДобавÑне на замеÑтващ знак…ДобавÑне на коментарДобавÑне на папка към ÑпиÑъкаДобавÑне на файлове…ДобавÑне на папки…ДобавÑне на проектДобавÑне на замеÑтващ знак…Допълнителни ключови думиДопълнителни флагове към xgettext:РазширениРазширени наÑтройки за извличане…Разширени наÑтройки за извличанеРазширени наÑтройки за извличане…ВÑички файлове за преводВÑички коментариВÑички низовеСъщо така да бъдат ползвани ключовите думи по подразбиране за поддържаните езициполето за превод да е &винаги на фокуÑВъзникна грешка.Елемент от ÑпиÑъка Ñ Ð²Ñ…Ð¾Ð´Ñщи файлове:Елемент от ÑпиÑъка Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¸ думи:Външен видПрилаганеПриблизителни ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¾Ñ‚ ППÐаиÑтина ли желаете да изтриете инÑтрументът за извличане „%s“?ÐаиÑтина ли желаете паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ да бъде нулирана?автоматична &проверка за обновÑване&автоматично компилиране до файл MO при запазванеÐазадОÑновен път:ИзданиÑта бета Ñъдържат поÑледните нови възможноÑти и подобрениÑ, но може да бъдат по-малко Ñтабилни.Ð’Ñички на преден планПовреден файл PO: използвана е форма за множеÑтвено чиÑло на msgstr, а msgid_plural липÑваПовреден файл PO: използвана е форма за единÑтвено чиÑло на msgstr при наличие на msgid_pluralТекÑтът за превод е Ñ ÑƒÐ²Ñ€ÐµÐ´ÐµÐ½Ð¾ форматиране.ИзбиранеРазглеждане на файловеПо подразбиране, неточните резултати Ñъщо биват добавÑни, но отбелÑзани като мъглÑви. Отметнете, за да бъдат добавÑни Ñамо точните ÑъвпадениÑ.О&тказОтказване…Временната папка не може да бъде Ñъздадена.Програмата не може да бъде изпълнена: %sÐе може да Ñе извърши предварителен превод от непознат език.Предварителен превод не може да бъде извършен без изходен текÑÑ‚.Ð’ главни букви&Управление на каталози&Управление на каталози&Управление на каталозиСмÑна на &езикаЗнаков набор:Проверка на документаПроверка на граматика и правопиÑПроверка на правопиÑа при въвежданеПроверка за обновÑване…ПроверÑване за грешки в преводаПроверка за обновÑване…Проверка на правопиÑаИзчиÑтванеИзчиÑтване на менютоИ&зчиÑтване на преводaИзчиÑтване на менютоИ&зчиÑтване на превода&ЗатварÑÐ½ÐµÐžÐ±Ð»Ð°ÐºÐ¡Ñ€ÐµÑ‰Ð°Ð½Ð¸Ñ Ð² ÐºÐ¾Ð´Ð°Ð¡Ñ€ÐµÑ‰Ð°Ð½Ð¸Ñ Ð² кодаРаботете ÑъвмеÑтно Ñ Ð´Ñ€ÑƒÐ³Ð¸ хора в Интернет.Събиране на изходните файлове…Команда за извличане на низове:Коментар&Коментар:ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð½Ð° &коментарите:Компилиране до файл на MO…Компилиране до…Компилирани преводиÐаÑтройка на извличане от изходен код.ПотвърждениеСвържете Poedit Ñ Ð¿Ð¾Ð´Ð´ÑŠÑ€Ð¶Ð°Ð½Ð¸Ñ‚Ðµ облачни ÑиÑтеми за локализациÑ, за да Ñинхронизирате безпроблемно преводите, управлÑвани от Ñ‚ÑÑ….КопиранеКопиране от ед. ч.Копиране от Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ‚ÐµÐºÑтКопиране от ед. ч.&Копиране Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚Ðвтоматична ÐºÐ¾Ñ€ÐµÐºÑ†Ð¸Ñ Ð½Ð° правопиÑаПодробноÑтите за проекта в Localazy не могат да бъдат Ñвалени.Файлът не може да бъде зареден. Ðай-вероÑтно е повреден.Файлът „%s“ не може да бъде запазен.Създаване на новСъздаване на &нов преводСъздаване на нов превод от шаблон на POT.Създаване на нов проект за преводГрешка в CrowdinCrowdin е уеб ÑиÑтема за управление на преводите и инÑтрумент за ÑъвмеÑтен превод. Ðие Ñъщо използваме Crowdin за превеждане на ÑÐ°Ð¼Ð¸Ñ Poedit на много езици, и имаме невероÑтни впечатлениÑ.&ИзрÑзванеПотребителÑки команди за извличане:ПотребителÑки команди за извличане:ПерÑонализиране на лентата Ñ Ð¸Ð½Ñтрументи…ИзрÑзванеГолемина на базата от данни:&ИзтриванеИзтриване от паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð˜Ð·Ñ‚Ñ€Ð¸Ð²Ð°Ð½Ðµ на инÑтрумент за извличанеИзтриване от паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð˜Ð·Ñ‚Ñ€Ð¸Ð²Ð°Ð½Ðµ на проектИзтриване на коментараИзтриване на проектаИзтриването на проекта нÑма да изтрие файловете му за превод.ОпределÑне на разликите…Папки:ИÑкате ли да изтриете проекта „%s“?ИÑкате ли да презаредите файла? Ðко го направите, незапазените промени в Poedit ще бъдат загубени.ИÑкате ли да премахнете вÑички преводи, които Ñа еднакви Ñ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»Ð½Ð¸Ñ Ð½Ð¸Ð·?ИÑкате ли да премахнете вÑички преводи, които вече не Ñе използват?&Без запазванеБез запазванеДа не Ñе показва повечеТочните ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð´Ð° не бъдат отбелÑзвани като мъглÑвиДа не Ñе показва повечеИзтеглÑне на текущите преводи…ИзтеглÑнето на преводи е изключено за този проект.ПуÑнете папки или файлове тукПуÑнете папки или файлове тук&ИзходИз&наÑÑне като HTML…&РедактиранеРедактиране на &коментарРедактиране на &коментарРедактиране на &коментарРедактиране на &коментарРедактиране на проектРедактиране на проектаРедактиранеРедактиране…Електронна поща:Ðа &цÑл екранФайлът Ñъдържа текÑтове Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ за множеÑтвено чиÑло, които не отговарÑÑ‚ на заглавката „Plural-Forms“Преводите Ñ Ð³Ñ€ÐµÑˆÐºÐ¸ първиПреводите Ñ Ð³Ñ€ÐµÑˆÐºÐ¸ първиÐизовете Ñ Ð³Ñ€ÐµÑˆÐºÐ¸ Ñа разграничени в ÑпиÑъка Ñ Ñ‡ÐµÑ€Ð²ÐµÐ½ цвÑÑ‚ на фона. ПодробноÑти ще бъдат показани, когато изберете такъв запиÑ.Грешка при отварÑне на файлГрешка при запазване на файлаГрешка при зареждане на файл XLIFF: %sГрешка: ГрешкиВÑичкоТочни ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¾Ñ‚ ПППренебрегнати пътищаИзнаÑÑне като TMX…ИзнаÑÑне като…ИзнаÑÑне като HTML…ИзнаÑÑне като TMX…ИзнаÑÑне като HTMLГрешка при изнаÑÑне на памет Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ от „%s“.ИзнаÑÑне на преводи…ÐÐºÑ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ &изходен кодИзвличане на бележки към преводачите от:Извличане на низове от изходните файлове в Ñледните папки:Извличане на низовете за превод от %s файл…Извличане на низовете за превод от %s файла…ÐаÑтройка на извличанеИзвличанеГрешка в комуникациÑта Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° Poedit.Ðизовете не могат да бъдат извлечени от Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´.Файлът Ñ Ð¸Ð·Ð½ÐµÑените преводи не може да бъде зареден.ÐеуÑпешно обединÑване на каталози на gettext.Ðктуализирането на паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ е неуÑпешно: %sФайлФайлът не може да бъде отворенФайлът „%s“ не ÑъщеÑтвува.Файлът „%s“ не е файл за превод.Файлът „%s“ е без право на запиÑ. Запазете го под друго име.ТърÑене…&Следващо Ñъвпадение&Предишно ÑъвпадениеТърÑене и замÑна…ТърÑене в &коментаритеТърÑене в изходните низовеТърÑене в &преводите&Следващо Ñъвпадение&Предишно ÑъвпадениеПромÑна на езикаПромÑна на езикаКоригиране на заглавкатаКоригиране на заглавкатаФайлове Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ на FlutterФорма %iФорма %i (не Ñе използва)GNU gettextОбщиHTML файловеПомощ&Скриване Ñтранична лентаСкриване на лента за ÑÑŠÑтоÑниетоСкриване на това ÑъобщениеКак работи Ñинхронизирането Ñ Ð¾Ð±Ð»Ð°ÐºÐ°?ИдентификаторÐко продължите Ñ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñтването, вÑички преводи, обозначени като изтрити ще бъдат премахнати. Ще трÑбва да ги превеждате отново, ако в поÑледÑтвие бъдат върнати.Ðко Ñте забранили доÑтъп до файловете Ñи, можете да го разрешите в СиÑтемните наÑтройки > Защита и поверителноÑÑ‚ > ПоверителноÑÑ‚ > Файлове и папки.Ðко Ñте забранили доÑтъп до файловете Ñи, можете да го разрешите в СиÑтемните наÑтройки > Защита и поверителноÑÑ‚ > Файлове и папки.ПренебрегванеÐезачитане на региÑтъраВнаÑÑне от TMX…ВнаÑÑне на файлове за превод…ВнаÑÑне от TMX…ВнаÑÑне на файлове за превод…ВнаÑÑне от „%s“…Грешка при внаÑÑне на памет Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸.ВнаÑÑне на преводи…В: %s&включително beta-верÑииÐеÑъответÑтвие на главни/малки буквиÐеÑъответÑтващи интервали и празни меÑÑ‚Ð°Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° преводачаИнÑталиранеÐевалиден файлИзвикване:ПроблемПроблемиФайлове Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ във формат JSON&ОтказИме или код на езикЕзикът на превода е ÑъщиÑÑ‚ като Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐµÐ·Ð¸Ðº.ЛипÑва език на превода.Език на превода:Избиране на езикЕкип преводачи:Език:ПоÑледна промÑнаПовече за ключовите думи на GNU gettextПовече за множеÑтвените формиÐаучете повечеÐаучете повече отноÑно %sÐаучете повече за CrowdinÐаучете повече за GNU gettextРедРед %d от файла „%s“ е неправилен (неправилни данни за %s).&Ñимвол за край на ред:СпиÑък на разширениÑта разделени Ñ â€ž;“ (напр. *.cpp; *.h):Зареждане на английÑките текÑтовеLocalazy е Ñилно автоматизирана ÑиÑтема за локализациÑ, коÑто дава възможноÑÑ‚ на вÑеки леÑно да преведе Ñвоите продукти и Ñъдържание на много езици.MO файловете не могат да бъдат директно променÑни Ñ Poedit.Към малки буквиКъм главни буквиСъздайте нов файл за превод от този файл POT.Ðеправилна заглавка: „%s“Управление на профилитеУправление…ОбединÑване на разликите…Минимизиранеиме и верÑиÑИме:С&ледващ незавършенС&ледващ незавършенМъглÑвМъглÑвМрежова грешка: %s (%d)Ðе позволÑва на ÑпиÑъка Ñ Ð½Ð¸Ð·Ð¾Ð²Ðµ да приеме фокуÑ. Ðко е отметнато, трÑбва да използвате Ctrl+Ñтрелки за управление Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ð°Ñ‚Ð°, но така можете да въвеждате текÑÑ‚ веднага, без да Ñе налага да натиÑкате табулатора, за да промените фокуÑа.&ДобавÑнеÐов от &файл POT/PO…Ðови низовеÐов от &файл POT/PO…ДобавениÐови низове за превод:Следващата форма за мн. ч.Следващата форма за мн. ч.ÐеÐÑма ÑъвпадениÑÐÑма запиÑи, които могат да бъдат предварително преведени.Файлът не Ñъдържа Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° ÑрещаниÑта на този текÑÑ‚ в Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´.ÐÑма ÑъвпадениÑÐе Ñа открити проблеми в преводаÐÑма проекти за превод във Ð’Ð°ÑˆÐ¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð».ÐÑма Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° начина на ползванеÐе вÑички форма за множеÑтвено чиÑло Ñа преведени.Ðе Ñте удоÑтоверени, молÑ, впишете Ñе отново.Бележки към преводачаД&обреЕдинОтметнете, Ñамо ако вÑрвате в качеÑтвото на паметта за преводи. По подразбиране вÑички ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¾Ñ‚ ПП Ñе отбелÑзват като мъглÑви и трÑбва да бъдат проверени преди употреба.Попълване Ñамо на точните ÑъвпадениÑОтварÑне на Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´â€¦ÐžÑ‚Ð²Ð°Ñ€Ñне на поÑледните файловеОтварÑне и редактиране на файлове Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸.ОтварÑне на Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´ÐžÑ‚Ð²Ð°Ñ€Ñне на Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´â€¦ÐžÑ‚Ð²Ð°Ñ€Ñне на файлОтварÑне Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€ÐžÑ‚Ð²Ð°Ñ€Ñне Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€ÐžÑ‚Ð²Ð°Ñ€Ñне на Ñкорошен файлОтварÑне на файл ÑÑŠÑ ÑправкиОтварÑне…ОтварÑне…ÐаÑтройкиПовечеП&редишен незавършенП&редишен незавършенФайлове Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð¨Ð°Ð±Ð»Ð¾Ð½ за преводиФайловете POT Ñа Ñамо шаблони и Ñами по Ñебе Ñи не Ñъдържат преводи. За да започнете превод Ñъздайте нов файл PO базиран на този шаблон.ПоÑтавÑнеВмъкване ÑÑŠÑ Ð·Ð°Ð¿Ð°Ð·Ð²Ð°Ð½Ðµ на ÑтилаПътищаИзвършва обновÑване от Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на вÑички файлове в проекта.ДоÑтъпът е отказан.ЗамеÑтителÑÑ‚ „%s“ липÑва в превода.СъответÑтвие на замеÑтителитеМолÑ, вмеÑто това отворете и променете ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» PO. При запазване на промените, файлът MO Ñъщо ще бъде обновен.МолÑ, първо запазете файла. Тези наÑтройки ще Ñа неактивни дотогава.МножеÑтвено чиÑлоПреводи на множеÑтвени чиÑлаИзразът за формите на множеÑтвеното чиÑло във файла е необичаен за езика %s.Форми за множеÑтвено чиÑло:PoeditPoedit — управление на каталозиPoEdit автоматично оправи невалидно Ñъдържание във файла „%s“.Poedit може да Ñе опита да попълни новите запиÑи чрез вече ÑъщеÑтвуващите преводи във файла или като използва цÑлата памет за преводи. Използването на ПП нÑма да е оÑобено ефикаÑно, ако в Ð½ÐµÑ Ð½Ñма много запиÑ, но това ще Ñтава вÑе по-добре при попълването Ñ.Poedit не може да покаже Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´, където този текÑÑ‚ Ñе ползва, тъй като или файлът не е наличен на поÑоченото мÑÑто, или е Ñимволна връзка, коÑто не Ñочи към иÑтинÑки файл.Poedit е леÑен за ползване редактор на преводи.Poedit не може да отвори файла „%s“.Предварителен &превод…Предварителен преводПредварителен преводПредварително преведен %u низПредварително преведени %u низаПредварителен превод чрез паметта за преводи…Предварителен превод…ПредварителниÑÑ‚ превод намира автоматично точни или мъглÑви ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð·Ð° непреведените низове в паметта за преводи и попълва преводите им.Предварителените преводи Ñе нуждаÑÑ‚ от иÑтинÑки изходен текÑÑ‚. Те не могат да работÑÑ‚, ако във файла има Ñамо текÑтови идентификатори.За извършването на предварителен превод трÑбва да е ÑÑно кой е изходниÑÑ‚ език на текÑта. Poedit не може да го разпознае в този файл.ÐаÑтройкиПредпочитаниÑ...ÐаÑтройки…ПодготвÑне на текÑтовете…&запазване на формата на ÑъщеÑтвуващите файловеПредишна форма за мн. ч.Предишна форма за мн. ч.Предишен изходен текÑтПоÑледно променÑниПоÑледно променÑниИме и верÑÐ¸Ñ Ð½Ð° проекта:Име на проекта:Проект:ПроектиПроверки на пунктуациÑтаПрочиÑтванеПрочиÑтване на изтрити преводиИзходПри четенето на Ñъдържанието на файла възникна Ñледната грешка: %sПоÑледно отварÑни файловеПовтарÑнеОпреÑнÑванеПрезареждане на файлаПрезареждане на файлаОÑтаващи: %dПремахванеПремахване на преводите, които Ñа еднакви Ñ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»Ð½Ð¸Ñ Ð½Ð¸Ð·ÐŸÑ€ÐµÐ¼Ð°Ñ…Ð²Ð°Ð½Ðµ на преводите, които Ñа еднакви Ñ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»Ð½Ð¸Ñ Ð½Ð¸Ð·ÐŸÑ€ÐµÐ¼Ð°Ñ…Ð½Ð°Ñ‚Ð¸ низовеПремахнати низовеПремахнати низове (които вече нÑма да Ñе ползват):ЗамеÑтванеЗамÑна на &вÑичкиЗамÑна на &вÑичкиЗамеÑтване&ЗаменÑне…Задължителната заглавка „Plural-Forms“ липÑва.ВъзÑтановÑванеВъзÑтановÑване на паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð’ÑŠÐ·ÑтановÑването на паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ñ‚Ðµ безвъзвратно ще изтрие вÑички запомнени от Ð½ÐµÑ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸. Тази Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ може да бъде отменена.Показване във FinderРецензиÑ&ЗапазванеЗапазване &като…Запазване &като…Запазване въпреки товаЗапазване въпреки товаЗапазване катоЗапазване като…Запазване на променитеЗапазване на файлЗапазването на друго мÑÑто не Ñе поддържа за файлове XCLOC.Екранни Ñнимки:Избор на &вÑичкоИзбор на &вÑичкоИзберете файлове TMX за внаÑÑнеИзбиране на папкаИзберете файл за преводИзбиране на файлове за импортИзберете шаблон за преводИзбиране на предпочитан езикЗадаване на езикЗадаване на езикÐаÑтройкиÐаÑтройки…&Показване на Ñтранична Ð»ÐµÐ½Ñ‚Ð°ÐŸÑ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð¸ граматикаПоказване на лента за ÑÑŠÑтоÑниетоПоказване на &идентификатора на текÑтаПоказване на замеÑтваниÑПоказване на лентата Ñ Ð¸Ð½ÑтрументиПоказване на предупреждениÑтаПоказване в ExplorerПоказване в папкатаПоказва или Ñкрива Ñтраничната лента&Показване на Ñтранична лентаПоказване на лента за ÑÑŠÑтоÑниетоПоказване на &идентификатора на текÑтаПоказване на предупреждениÑтаСтранична лентаВпиÑванеИзходВпиÑванеВпиÑване в %sВпиÑване в Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð’Ð¿Ð¸Ñване Ñе в CrowdinВпиÑване в Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð˜Ð·Ñ…Ð¾Ð´Ð•Ð´Ð¸Ð½Ñтвено чиÑлоУмно копиране/поÑтавÑнеУмни тиретаУмни връзкиУмни кавичкиСортиране по &файлПодреждане по &изходен текÑтСортиране по &преводСортиране по &файлСортиране по &изходен текÑтСортиране по &преводЗнаков набор на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´:ИнÑтрументът намира годни за превод низове във файлове Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код и ги извлича, за да бъдат преведени.ИзходниÑÑ‚ код не е на разположение.ИзходниÑÑ‚ код не е наличенИзходен текÑтИдентификатор на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ‚ÐµÐºÑтИзходен текÑÑ‚ – %sКлючови думи в Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ÐŸÑŠÑ‚Ð¸Ñ‰Ð° за претърÑванеКлючови думи в Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ÐŸÑŠÑ‚Ð¸Ñ‰Ð° за претърÑванеГоворПроверката на правопиÑа е изключена, защото не е инÑталиран речник за %s.ÐŸÑ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð¸ граматикаÐачало на изчитанеКрай на изчитанеБрой запомнени преводи:КонтекÑÑ‚ на низа: %sИдентификатор на низа: %sДължина на текÑта в брой знациДължина на текÑта в брой знаци: превод | изходен текÑтТърÑенеПроекти в Crowdin оÑновани на низове не Ñе поддържат.ЗамеÑтваниÑПредложениÑПредложениÑта Ñа недоÑтъпни за неправилно конфигурирани езици. Други възможноÑти като формите за множеÑтвено чиÑло Ñъщо може да бъдат заÑегнати.Излшен замеÑтител „%s“, който не приÑÑŠÑтва в Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚.Поддържа вÑички програмни езици, признати от инÑтрументите на GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript и други).СинхронизиранеСинхронизиране Ñ CrowdinСинхронизиране на превода Ñ CrowdinСинхронизиранеГрешка при ÑинхронизиранеÐеуÑпешно Ñинхронизиране Ñ Crowdin.Синтактична грешка в заглавката „Plural-Forms“ („%s“).ПаметФайлове TMXИзползване на изходни низове от ÑъщеÑтвуващ шаблон POT.Име и електронна поща на екипа или адреÑ:ЗамеÑтване на текÑтПаметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ не Ñъдържа низове Ñ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾ Ñъдържание. Ð¢Ñ Ðµ ефективна Ñамо за полу-автоматичен превод Ñлед като Ñе е обучила от файловете, които ръчно превеждате.Файлът TMX е повреден или неправилно форматиран.Ðко запазите файла, промените направени от другото приложение ще бъдат загубени.Файлът не може да бъде компилиран във формат MO и използван.Файлът Ñъдържа дублиращи Ñе елементи, което е забранено във файлове PO и ще предотвратÑÑ‚ използването му. PoEdit решава този проблем, но е необходим преглед на преводите на вÑички елементи, отбелÑзани като мъглÑви и ако е необходимо да ги коригирате.Файлът не може да бъде запазен в Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð·Ð½Ð°ÐºÐ¾Ð² набор „%s“, указан в наÑтройките. ВмеÑто това е запазен в UTF-8, а наÑтройките му Ñа променени.Файлът е променен. ИÑкате ли промените да бъдат запазени?Файлът е във формат, който не Ñе разпознава от Poedit.Файлът е компилиран във формат MO, но вероÑтно нÑма да работи.Файлът е запазен и компилиран във формат MO, но вероÑтно нÑма да работи.Файлът е запазен, но не може да бъде компилиран във формат MO и използван.Файлът е запазен.Файлът „%s“ не може да бъде отворен.Файлът „%s“ не може да бъде запазен.Файлът „%s“ е променен от друго приложение.СтариÑÑ‚ изходен текÑÑ‚ (преди промÑната при обновÑване), на който ÑъответÑтва вече Ð½ÐµÑ‚Ð¾Ñ‡Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´.Ðай-леÑÐ½Ð¸Ñ Ð½Ð°Ñ‡Ð¸Ð½ за попълване на файла Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ е да бъде обновен от файл на POT:ЛипÑва интервал в началото на превода.Преводът завършва Ñ Ð½Ð¾Ð² ред, но изходниÑÑ‚ низ не.Преводът завършва Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð», но изходниÑÑ‚ низ не.Преводът завършва Ñ â€ž%s“, а изходниÑÑ‚ низ Ñ â€ž%s“.ЛипÑва нов ред в ÐºÑ€Ð°Ñ Ð½Ð° превода.ЛипÑва интервал в ÐºÑ€Ð°Ñ Ð½Ð° превода.Преводът е готов за използване, но вÑе още има %d непреведен низ.Преводът е готов за използване, но вÑе още има %d непреведени низа.Преводът е готов за използване.Преводът би трÑбвло да завършва Ñ â€ž%s“.Преводът не би трÑбвало да завършва Ñ â€ž%s“.Преводът би трÑбвало да започва като изречение.Преводът би трÑбвало да започва Ñ Ð¼Ð°Ð»ÐºÐ° буква.Преводът започва Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð», но изходниÑÑ‚ низ не.Преводите Ñа отбелÑзани като мъглÑви, защото може да Ñа неточни. ТрÑбва да бъдат проверени.ÐÑма низове за превод. Това е необичайно.Възникна проблем при форматиране на файлa, но той беше запазен.Възникна грешка при изпращането на преводите към Localazy.Грешки при зареждане на файла. Може да има липÑващи или повредени данни.Тези наÑтройки влиÑÑÑ‚ върху Ð²ÑŠÑ‚Ñ€ÐµÑˆÐ½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ на файловете PO. ÐаÑтройте ги, ако имате конкретни изиÑкваниÑ, например, заради контрол на верÑиите.Файлът JSON не е файл Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ и не може да бъде редактиран Ñ Poedit.Това дейÑтвие ще изтрие вÑички преводи, които Ñа абÑолютно еднакви Ñ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»Ð½Ð¸Ñ Ð½Ð¸Ð·. ДейÑтвието е необратимо.Файлът Ñъдържа текÑтове Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ за множеÑтвено чиÑло, но заглавката „Plural-Forms“ липÑва.Във файла Ñе ползват идентификатори вмеÑто реален текÑÑ‚ като изходен материал. Poedit може да зареди английÑките текÑтове от файла „%s“, ако желаете.Това е командата за изпълнение на извличаниÑ. %o Ñе замеÑтва Ñ Ð¸Ð¼ÐµÑ‚Ð¾ на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð», %K – ÑÑŠÑ ÑпиÑъка от ключови думи, %F – ÑÑŠÑ ÑпиÑъка от входните файлове, %C – ÑÑŠÑ Ð·Ð½Ð°ÐºÐ¾Ð²Ð¸Ñ Ð½Ð°Ð±Ð¾Ñ€ на анализатора (виж по-долу).Ðиз от паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ на Poedit.Това ще бъде добавено към ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´, Ñамо ако е зададен знаков набор за Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. %c Ñе замеÑтва ÑÑŠÑ Ð·Ð½Ð°ÐºÐ¾Ð²Ð¸Ñ Ð½Ð°Ð±Ð¾Ñ€.Това ще бъде добавено по веднъж за вÑеки входÑщ файл към ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´. %f Ñе замеÑтва Ñ Ð¸Ð¼ÐµÑ‚Ð¾ на файла.Това ще бъде добавено по веднъж за вÑÑка ключова дума към ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´. %k Ñе замеÑтва Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð°Ñ‚Ð° дума.Ð’ÑичкоТранÑформацииТекÑтовете за превод не Ñе добавÑÑ‚ ръчно в Gettext, а Ñе извличат автоматично от Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. По този начин те Ñа винаги актуални и точни. Преводачите обикновено използват файлове-шаблони PO (POT), подготвени за Ñ‚ÑÑ… от разработчика.Превеждане на Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚ÐŸÑ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸: %d от %d (%d%%)ПреводЕзикПамет Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ÐŸÑ€ÐµÐ²Ð¾Ð´ÑŠÑ‚ е &мъглÑвСвойÑтва на преводаФайлът за превод вече е актуален. Ðе Ñа правени промени по низовете.Във файла за превод беше направена %s промÑна.Във файла за превод бÑха направена %s промени.Базата данни на паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ е повредена: %s (%d).Грешка в паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸: %s (%d).Преводът е &мъглÑвСвойÑтва на Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð°ÐŸÑ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð° преводПредложениÑта за превод Ñе нуждаÑÑ‚ от реален изходен текÑÑ‚. Те не могат да работÑÑ‚, ако във файла има Ñамо текÑтови идентификатори.За използването на Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð° превод трÑбва да е ÑÑно кой е изходниÑÑ‚ език на текÑта. Poedit не може да го разпознае в този файл.Превод на — %sÐе вÑички преводи Ñа обновени от Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´, защото такъв не е открит на поÑоченото в наÑтройките на файла мÑÑто.ДваUTF-8 (препоръчително)ОтмÑнаÐеочаквано липÑващо Ñъдържание във файла XCLOC.Ðеприхванато изключение: %sUnix (препоръчително)ÐеизвеÑтна грешка от Crowdin.ÐеизвеÑтна грешкаÐепреведениОбновÑванеОбновÑване на резюмето&Ðктуализиране на вÑичкоÐктуализиране на вÑички каталози в проектаОбновÑване на вÑички каталози в проекта?ОбновÑване от &файл POT…ОбновÑване от &файл POT…ОбновÑване от кодаÐÐºÑ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ &файл POTОбновÑване от кодаÐктуализиране от Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´Ð ÐµÐ·ÑŽÐ¼ÐµÐžÐ±Ð½Ð¾Ð²ÑванеГрешка при обновÑванеОбновÑване на каталозите на проектаОбновÑване на преводитеОбновÑване на информациÑта за потребителÑ…Преводите не могат да бъдат изпратени към %s.Изпращане на преводите към %s…Изпращане на преводите…Специфичен &изразшрифт за &ÑпиÑъка Ñ Ð½Ð¸Ð·Ð¾Ð²ÐµÑˆÑ€Ð¸Ñ„Ñ‚ за &текÑтовите полетаСпоред &Ñтандартните правилаКлючови думи (имена на функции) за разпознаване на текÑтове Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´ във файловете Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код:Използване на &паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸&ВалидиранеРезултат от валидиранеВерÑÐ¸Ñ %sПреглед на подробноÑтите…Преглед на подробноÑтите…Изчакване на удоÑтоверÑване…Предупреждение: Здравейте от PoeditПри обновÑване от изходен код&Цели думиПрозорецWindowsИÑкате ли изходниÑÑ‚ текÑÑ‚ да бъде на английÑки език?Безконечно търÑенепренаÑÑне &на:Файлове на XLIFF Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð›Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¾Ð½ÐµÐ½ каталог на XcodeДаМоже да извличате низове за превод директно от изходен код:Ðе може да пуÑнете повече от един файл в прозореца на Poedit.ÐÑмате права за четене на файловете Ñ Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑоченото в наÑтройките на файла мÑÑто.ТрÑбва да реÑтартирате Poedit, за да влезе в Ñила тази промÑна.Вашето имеÐаправените промени ще бъдат загубени, ако не бъдат запазени.Името и електронната ви поща ще бъдат ползвани Ñамо за попълването на заглавката „Last-Translator“ на файловете на GNU gettext.ÐулаМащабМъглÑввременните файлове да не бъдат премахвани (за отÑтранÑване на дефекти)например nplurals=2; plural=(n > 1);грешка: напаÑване на Ñходните текÑтове в рамките на файлакъм елемента на Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð¸Ñ Ñ€ÐµÐ´ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ на протокола poedit://Alt+Ctrl+ÐадолуEnterÐалÑвоÐадÑÑноShift+ÐагореaltctrlshiftОтноÑно %sСкриване на %sСкриване на вÑички оÑтаналиПредпочитаниÑ...Изход от %sУÑлугиПоказване на вÑичкипредварителен превод от ППнеизвеÑтен езикнеподдържана верÑÐ¸Ñ (%s)предупреждение: you@example.com„%s“ е неправилен файл POT.poedit-3.6.3/locales/zh_CN.po0000644000175100001660000025440115011674230011461 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\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" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: zh-CN\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "éšè—è¿™æ¡æ¶ˆæ¯" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "ä¸å†æ˜¾ç¤º" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "ä¸å†æ˜¾ç¤º" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "更新摘è¦" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "更新摘è¦" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "关闭" #: src/cat_update.cpp:161 msgid "Issues" msgstr "问题" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "文件" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "行" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "问题" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "新字符串" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "新建字串" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "已移除字符串" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "已移除字符串" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "æ­£åœ¨æ”¶é›†æºæ–‡ä»¶â€¦" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "正在从 %s 个文件æå–å¯ç¿»è¯‘字符串…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "无法加载æå–翻译的文件。" #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "在: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "æºä»£ç ä¸å¯ç”¨ã€‚" #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "无法利用æºç æ›´æ–°ï¼Œå› ä¸ºæœªèƒ½åœ¨æ–‡ä»¶å±žæ€§æ‰€æŒ‡å®šçš„ä½ç½®å†…找到代ç ã€‚" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "æƒé™è¢«æ‹’ç»ã€‚" #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "æ‚¨æ²¡æœ‰è¯»å–æ–‡ä»¶å±žæ€§æ‰€æŒ‡å®šä½ç½®çš„æºä»£ç æ–‡ä»¶çš„æƒé™ã€‚" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "å¦‚æžœæ‚¨ä»¥å‰æ‹’ç»äº†è®¿é—®æ‚¨çš„æ–‡ä»¶ï¼Œå¯ä»¥é‡æ–°åœ¨ 系统设置>éšç§å’Œå®‰å…¨>文件和文件夹 中" "å…许访问。" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "如果您之å‰ç¦ç”¨äº†ç›¸åº”的访问æƒé™ï¼Œå¯ä»¥åœ¨ç³»ç»Ÿé¦–选项 > 安全和éšç§ > éšç§ > 文件和" "文件夹 䏭釿–°å…许。" #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "从æºä»£ç æå–字符串失败。" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "无法打开文件“%sâ€ã€‚" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "正在更新翻译" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "正在测定差异…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "正在åˆå¹¶å·®å¼‚…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "翻译文件已是最新,没有对字符串åšä»»ä½•更改。" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "翻译文件已更新,%s 处更改。" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "需翻译的新字符串:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "已移除字符串(ä¸å†ä½¿ç”¨ï¼‰ï¼š" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "检测到æºå­—符串的 %d 个问题。" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "查看详情…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "查看详情…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "首部格å¼å¼‚常:“%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO 翻译文件" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT 翻译模æ¿" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF 翻译文件" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode 本地化编目" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON 翻译文件" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter 翻译文件" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "所有翻译文件" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Poedit 无法识别该文件的格å¼ã€‚" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "该 JSON æ–‡ä»¶ä¸æ˜¯ä¸€ä»½ç¿»è¯‘文件,无法使用 Poedit 编辑。" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "è¯»å–æ–‡ä»¶å†…容失败,错误:%s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "文件“%sâ€ä¸ºåªè¯»ï¼Œæ— æ³•ä¿å­˜ã€‚\n" "请使用其他åç§°ä¿å­˜ã€‚" #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "无法ä¿å­˜æ–‡ä»¶ %s。" #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "å±å¹•截图:" #: src/catalog_po.cpp:134 #, 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] "文件“%2$sâ€çš„第 %1$i 行未能正确加载。" #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "文件“%2$sâ€çš„第 %1$d 行已æŸåï¼ˆä¸æ˜¯æœ‰æ•ˆçš„ %3$s æ•°æ®ï¼‰ã€‚" #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "æŸåçš„POæ–‡ä»¶ï¼šå•æ•°å½¢å¼çš„ msgstr 被用在 msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "æŸåçš„POæ–‡ä»¶ï¼šå¤æ•°å½¢å¼çš„ msgstr 被用在没有 msgid_plural çš„ä½ç½®" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "无法加载文件,该文件å¯èƒ½å·²æŸå。" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "加载文件时é‡åˆ°é”™è¯¯ã€‚有些数æ®å¯èƒ½ç¼ºå¤±æˆ–æŸå。" #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "在精确格å¼åŒ–文件时出现了问题(但文件已完整ä¿å­˜ï¼‰ã€‚" #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "无法按翻译设置中所指定的将文件ä¿å­˜ä¸º “%s†字符集。\n" "\n" "å°†ä¿å­˜ä¸º UTF-8 字符集,设置也会相应地被修改。" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "ä¿å­˜æ–‡ä»¶æ—¶å‘生错误" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%sâ€ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„ POT 文件。" #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "XCLOC 文件中缺失内容。" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "XCLOC æ–‡ä»¶ä¸æ”¯æŒåœ¨ä¸åŒä½ç½®ä¿å­˜ã€‚" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "加载 XLIFF文件:%s 时出错" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "䏿”¯æŒçš„版本 (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "ç¿»è¯‘æ–‡ä»¶ä¸­çš„æ ‡è®°ä¸æ­£ç¡®ã€‚" #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "å°† Poedit 与支æŒçš„云端本地化平å°è¿žæŽ¥ï¼Œä»¥æ— ç¼åŒæ­¥ç¿»è¯‘。" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "äº‘åŒæ­¥å¦‚何工作?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "账户" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(未登录)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "打开云翻译" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "管ç†è´¦æˆ·" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "项目:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "语言:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "登录云账户" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "登录云账户" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "您的账户中没有列出翻译项目。" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "正在下载最新的翻译…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "登录至 %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "åŒæ­¥ä¸­" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "正在上传翻译到 %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "上传翻译到 %s 失败。" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "åŒæ­¥å‡ºé”™" #: src/commentdlg.cpp:48 msgid "Add" msgstr "添加" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "未知的 Crowdin 错误。" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "未授æƒï¼Œè¯·å°è¯•釿–°ç™»å½•。" #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "䏿”¯æŒåŸºäºŽå­—符串的 Crowdin 项目。" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "此项目ç¦ç”¨äº†ç¿»è¯‘下载。" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "登录" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "登录" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "退出" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "退出" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "了解更多有关 Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin 是一个在线翻译管ç†å¹³å°å’Œå作翻译工具。我们也使用 Crowdin å°† Poedit ç¿»" "译为许多ç§è¯­è¨€ï¼Œæˆ‘们爱它。" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "正在等待身份验è¯â€¦" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "正在更新用户信æ¯â€¦" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "登录到 Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "与 Crowdin åŒæ­¥å¤±è´¥ã€‚" #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin 错误" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "正在上传翻译…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "å¤åˆ¶(&C)" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "了解更多" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "帮助(&H)" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "无法在 Poedit 中直接编辑MO 文件。" #: src/edapp.cpp:733 msgid "Error opening file" msgstr "打开文件时出错" #: src/edapp.cpp:735 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 文件也将被更新。" #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ä¸åˆ é™¤ä¸´æ—¶æ–‡ä»¶ï¼ˆç”¨äºŽè°ƒè¯•)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "å¤„ç† poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "跳转到给定行å·é¡¹ç›®" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "无法与 Poedit 的进程通信。" #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "å‘生了ä¸èƒ½å¤„ç†çš„异常:%s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "选择翻译模æ¿" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "无效文件" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "选择翻译文件" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit 是一个易于使用的翻译编辑器。" #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "您ä¸èƒ½æ‹–放一个以上的文件到 Poedit 窗å£ã€‚" #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "文件“%sâ€ä¸æ˜¯ä¸€ä¸ªç¿»è¯‘文件。" #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "文件“%sâ€ä¸å­˜åœ¨ã€‚" #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "拼写检查被ç¦ç”¨ï¼Œå› ä¸º %s 的字典没有安装。" #: src/edframe.cpp:871 msgid "Install" msgstr "安装" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "文件“%sâ€å·²è¢«å¦ä¸€ä¸ªåº”ç”¨ç¨‹åºæ›´æ”¹ã€‚" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "釿–°è½½å…¥æ–‡ä»¶" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "你想è¦ä»Žç£ç›˜ä¸Šé‡æ–°è½½å…¥æ–‡ä»¶å—?如果你这样åšï¼Œä½ åœ¨ Poedit 中未ä¿å­˜çš„编辑将会丢" "失。" #: src/edframe.cpp:968 msgid "Ignore" msgstr "忽略" #: src/edframe.cpp:968 msgid "Reload File" msgstr "釿–°è½½å…¥æ–‡ä»¶" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "文件已修改。您è¦ä¿å­˜æ›´æ”¹ï¼Ÿ" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "ä¿å­˜æ›´æ”¹" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "如果您ä¸ä¿å­˜ï¼Œæ‚¨çš„æ›´æ”¹å°†ä¸¢å¤±ã€‚" #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "ä¿å­˜" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "ä¸ä¿å­˜(&N)" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "ä¸ä¿å­˜" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "如果您ä¿å­˜ï¼Œå¦ä¸€ä¸ªåº”ç”¨ç¨‹åºæ‰€ä½œçš„æ›´æ”¹å°†ä¸¢å¤±ã€‚" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "å–æ¶ˆ" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "ä»ç„¶ä¿å­˜" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "ä»ç„¶ä¿å­˜" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "å¦å­˜ä¸ºâ€¦" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "编译到…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "已编译的翻译文件" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "导出到 HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML 文件" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "正在导出到 HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "更新失败" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "打开å‚考文件" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "从 POT 文件更新(&P)…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "从 POT 文件更新(&P)…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "在翻译中å‘现了 %d 个问题。" #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "验è¯ç»“æžœ" #: src/edframe.cpp:1842 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 "" "有错误的æ¡ç›®åœ¨åˆ—表中被标记为红色。您选择这样的æ¡ç›®æ—¶å°†æ˜¾ç¤ºé”™è¯¯çš„详细信æ¯ã€‚" #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "文件已被安全地ä¿å­˜ã€‚" #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "文件已安全地ä¿å­˜ï¼Œå¹¶ç¼–è¯‘æˆ MO æ ¼å¼çš„æ–‡ä»¶ï¼Œä½†å®ƒå¯èƒ½æ— æ³•正常工作。" #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "文件已安全地ä¿å­˜ï¼Œä½†å®ƒæ— æ³•è¢«ç¼–è¯‘æˆ MO æ ¼å¼å¹¶ä½¿ç”¨ã€‚" #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "æ–‡ä»¶è¢«ç¼–è¯‘æˆ MO æ ¼å¼ï¼Œä½†å®ƒå¯èƒ½æ— æ³•正常工作。" #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "æ–‡ä»¶æ— æ³•ç¼–è¯‘æˆ MO æ ¼å¼å¹¶ä½¿ç”¨ã€‚" #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "翻译中未å‘现问题。" #: src/edframe.cpp:1894 #, 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] "翻译å¯ä»¥ä½¿ç”¨äº†ï¼Œä¸è¿‡è¿˜æœ‰ %d 个æ¡ç›®æ²¡æœ‰è¢«ç¿»è¯‘。" #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "翻译å¯ä»¥ä½¿ç”¨äº†ã€‚" #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit 自动修å¤äº†â€œ%sâ€æ–‡ä»¶ä¸­çš„æ— æ•ˆå†…容。" #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "该文件中包å«é‡å¤çš„项目,这是ä¸å…许的,并且影å“了该文件被使用。Poedit ä¿®å¤äº†è¯¥" "问题,但您应该审阅任何已被标记为“需è¦å¤„ç†â€çš„翻译和纠正它们(如有必è¦ï¼‰ã€‚" #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "翻译语言未设置。" #: src/edframe.cpp:2317 msgid "Set Language" msgstr "设置语言" #: src/edframe.cpp:2317 msgid "Set language" msgstr "选择语言" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "å¦‚æžœç¿»è¯‘è¯­è¨€è®¾ç½®ä¸æ­£ç¡®ï¼Œå»ºè®®å°†ä¸å¯ç”¨ã€‚å…¶ä»–ç‰¹æ€§ï¼ˆä¾‹å¦‚å¤æ•°å½¢å¼ï¼‰ä¹Ÿå¯èƒ½å—到影" "å“。" #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "翻译语言与æºè¯­è¨€ç›¸åŒã€‚" #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "ä¿®å¤è¯­è¨€" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "ä¿®å¤è¯­è¨€" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "æ­¤æ–‡ä»¶åŒ…å«æœ‰å¤æ•°å½¢å¼çš„æ¡ç›®ï¼Œä½†æœªé…ç½®å¤æ•°å½¢å¼å¤´éƒ¨ã€‚" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "这个文件中的æ¡ç›®çš„夿•°å½¢å¼æ•°é‡ä¸Žæ–‡ä»¶çš„ Plural-Forms 头所说明的ä¸åŒ" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "缺少必需的头 Plural-Forms。" #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "在 Plural-Forms 头中存在语法错误 (\"%s\")。" #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "ä¿®å¤æ–‡ä»¶å¤´" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "è¯¥æ–‡ä»¶ä¸­æ‰€ä½¿ç”¨çš„å¤æ•°å½¢å¼å¯¹äºŽ %s 是ä¸åŒå¯»å¸¸çš„。" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "检查" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "是å¦è¦ä½¿ç”¨è‹±æ–‡ä½œä¸ºæºæ–‡æœ¬ï¼Ÿ" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "此文件采用了字符串 ID è€Œéžæºæ–‡æœ¬ã€‚Poedit å¯ä»¥ä¸ºæ‚¨ä»Žâ€œ%sâ€æ–‡ä»¶åŠ è½½è‹±æ–‡æ–‡æœ¬ã€‚" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "加载英文" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "已翻译:%d 共计 %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "剩余:%d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d 错误" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d æ¡ç›®" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (未ä¿å­˜ï¼‰" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (已修改)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "更新翻译记忆库失败: %s " #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "无法打开文件“%sâ€ã€‚" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "ç§»é™¤ç›¸åŒæºæ–‡çš„翻译" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "ç¡®å®šç§»é™¤æ‰€æœ‰ä¸Žæºæ–‡æœ¬ç›¸åŒçš„翻译å—?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "æ­¤æ“ä½œå°†ç§»é™¤ä¸Žæºæ–‡æœ¬å®Œå…¨åŒ¹é…的所有翻译。该æ“作ä¸å¯é€†ã€‚" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "ä¿æŒ" #: src/edframe.cpp:2856 msgid "Remove" msgstr "移除" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "清除已删除的翻译" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "您确定è¦ç§»é™¤æ‰€æœ‰ä¸å†ä½¿ç”¨çš„翻译å—?" #: src/edframe.cpp:2879 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 "" "如果您继续清除,则所有被标记为已删除的翻译都将被永久移除。如果未æ¥å®ƒä»¬è¢«æ·»åŠ " "回æ¥ï¼Œæ‚¨å¿…é¡»å†ç¿»è¯‘一é。" #: src/edframe.cpp:2883 msgid "Purge" msgstr "清除" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "å¤åˆ¶æºæ–‡æœ¬" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "å¤åˆ¶æºæ–‡æœ¬" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "清除翻译" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "清除翻译" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "编辑注释" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "编辑注释" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "代ç å‡ºçްä½ç½®" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "代ç å‡ºçްä½ç½®" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "éšè—ä¾§è¾¹æ " #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "显示侧边æ " #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "éšè—çŠ¶æ€æ " #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "æ˜¾ç¤ºçŠ¶æ€æ " #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "字符串长度:翻译 | 原文" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "字符串长度(字符)" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "æºæ–‡æœ¬" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "啿•°" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "夿•°" #: src/editing_area.cpp:477 msgid "Translation" msgstr "翻译" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "已预翻译" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "需è¦å¤„ç†" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "需è¦å¤„ç†" #: src/editing_area.cpp:566 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 文件。" #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "创建新的翻译" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "利用此 POT 文件创建新翻译" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "æºæ–‡æœ¬ ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "一切" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "表格 %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "æ¥è‡ª %i (未使用)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "é›¶" #: src/editing_area.cpp:788 msgid "One" msgstr "一" #: src/editing_area.cpp:790 msgid "Two" msgstr "二" #: src/editing_area.cpp:804 msgid "Other" msgstr "å…¶ä»–" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "字符串上下文:%s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "字符串标识符:%s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s æ ¼å¼" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s æ ¼å¼" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "翻译 — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "æºæ–‡æœ¬ — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "未知语言" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "网络错误:%s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "未知错误" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "无法åˆå¹¶ gettext 编目。" #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "在编辑器中打开" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "在编辑器中打开" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "文件中未æä¾›æœ‰å…³æ­¤å­—符串在æºä»£ç ä¸­çš„出现ä½ç½®ä¿¡æ¯ã€‚" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "暂无用法信æ¯" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d 个代ç å‡ºçްä½ç½®" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "未找到æºç " #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit 无法显示字符串所用的æºç ï¼Œå› ä¸ºç›¸åº”的文件未存在于引用ä½ç½®æˆ–其是未指å‘实" "际文件的符å·å¼•用。" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "无法打开文件" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit 无法打开 “%s†文件。" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "查找" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "替æ¢" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "选项" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "忽略大å°å†™" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "全字匹é…" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "仅整个å•è¯" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "åœ¨æºæ–‡æœ¬ä¸­æŸ¥æ‰¾" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "在翻译中查找" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "在注释中查找" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "全部替æ¢(&A)" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "全部替æ¢(&A)" #: src/findframe.cpp:150 msgid "&Replace" msgstr "替æ¢(&R)" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< 上一个(&P)" #: src/findframe.cpp:152 msgid "&Next >" msgstr "下一个(&N) >" #: src/findframe.cpp:235 msgid "String to find" msgstr "è¦æŸ¥æ‰¾çš„字符串" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "替æ¢å­—符串" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "警告: " #: src/gexecute.cpp:171 msgid "error: " msgstr "错误: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "语言å称或代ç " #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "翻译" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "è¦ç¿»è¯‘的语言:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "所有字符串" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "无法下载 Localazy 项目详情。" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "上传翻译到 Localazy 出错。" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "项目" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "了解更多关于 %s 的信æ¯" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy 是一个高度自动化的本地化平å°ï¼Œäººäººéƒ½èƒ½è½»æ¾å°†è‡ªå·±çš„产å“和内容翻译到多" "ç§è¯­è¨€ã€‚" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "添加项目" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "添加项目" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - 编目管ç†å™¨" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "编辑…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "创建新的翻译项目" #: src/manager.cpp:145 msgid "Delete the project" msgstr "删除项目" #: src/manager.cpp:146 msgid "Edit the project" msgstr "编辑项目" #: src/manager.cpp:176 msgid "Update all" msgstr "更新全部" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "更新项目中的所有编目" #: src/manager.cpp:378 msgid "Total" msgstr "总计" #: src/manager.cpp:379 msgid "Untrans" msgstr "未翻译" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "需è¦å¤„ç†" #: src/manager.cpp:381 msgid "Errors" msgstr "错误" #: src/manager.cpp:382 msgid "Last modified" msgstr "最åŽä¿®æ”¹" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "选择目录" #: src/manager.cpp:433 msgid "Directories:" msgstr "目录:" #: src/manager.cpp:503 msgid "" msgstr "<未命å>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "您想è¦åˆ é™¤é¡¹ç›®â€œ%sâ€å—?" #: src/manager.cpp:540 msgid "Delete project" msgstr "删除项目." #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "删除项目ä¸ä¼šåˆ é™¤å…¶ä»–翻译文件。" #: src/manager.cpp:571 msgid "Confirmation" msgstr "确认" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "更新此项目中的所有目录?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "从æºä»£ç å¯¹é¡¹ç›®ä¸­çš„æ‰€æœ‰æ–‡ä»¶æ‰§è¡Œæ›´æ–°ã€‚" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "正在更新项目目录" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "检查更新…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "编目管ç†å™¨" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "首选项(&P)…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "编辑(&E)" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "撤销" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "é‡åš" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "ç²˜è´´å¹¶åŒ¹é…æ ·å¼" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "删除" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "拼写和语法" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "显示拼写和语法" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "ç«‹å³æ£€æŸ¥æ–‡æ¡£" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "在输入时检查拼写" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "检查拼写和语法" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "自动更正拼写错误" #: src/menus.cpp:219 msgid "Substitutions" msgstr "替æ¢" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "显示替æ¢é¡¹ç›®" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "智能å¤åˆ¶/粘贴" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "智能引å·" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "智能短划线" #: src/menus.cpp:226 msgid "Smart Links" msgstr "智能链接" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "文本替æ¢" #: src/menus.cpp:230 msgid "Transformations" msgstr "转æ¢" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "转为大写" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "转为å°å†™" #: src/menus.cpp:234 msgid "Capitalize" msgstr "大写" #: src/menus.cpp:237 msgid "Speech" msgstr "朗读" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "开始朗读" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "åœæ­¢æœ—读" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "查看(&V)" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "显示工具æ " #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "自定义工具æ â€¦" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "è¿›å…¥å…¨å±æ¨¡å¼" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "窗å£" #: src/menus.cpp:263 msgid "Minimize" msgstr "最å°åŒ–" #: src/menus.cpp:264 msgid "Zoom" msgstr "缩放" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "欢迎使用 Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "å…¨éƒ¨å¸¦åˆ°æœ€å‰æ–¹" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "关于翻译者的信æ¯" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "å称:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "ä½ çš„åå­—" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "电å­é‚®ä»¶ï¼š" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "ä½ çš„å称和电å­é‚®ä»¶åœ°å€ä»…用于设置 GNU gettext 文件的 Last-Translator ä¿¡æ¯ã€‚" #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "编辑" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "在ä¿å­˜æ—¶è‡ªåŠ¨ç¼–è¯‘ MO 文件" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "检查拼写" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "总是将焦点移动到文本输入字段" #: src/prefsdlg.cpp:211 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 "" "从ä¸è®©å­—串列表å–得焦点。如果å¯ç”¨ï¼Œæ‚¨å¿…须使用 “Ctrl-æ–¹å‘键†进行键盘导航,但您" "也å¯ä»¥ç«‹å³è¾“入文本,ä¸ç”¨æŒ‰ Tab 改å˜ç„¦ç‚¹ã€‚" #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "外观" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "使用自定义的列表字体:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "使用自定义的编辑区字体:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "更改用户界é¢è¯­è¨€" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "ï¼ˆéœ€è¦ Windows 8 或更高版本)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "常规" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "使用翻译记忆" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "管ç†â€¦" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "å½“ä»Žæºæ–‡æ›´æ–°æ—¶" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "在文件内模糊匹é…" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "æ ¹æ®ç¿»è¯‘记忆预翻译" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit å¯ä»¥æ ¹æ®ä»¥å‰çš„翻译文件或你的翻译记忆库æ¥å°è¯•填写新æ¡ç›®ã€‚接近空的翻译记" "忆库ä¸ä¼šå¾ˆæœ‰æ•ˆï¼Œä½†å¦‚果你为它添加了更多的翻译,它也会å˜å¾—更好。" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "存储翻译:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "ç£ç›˜ä¸Šæ•°æ®æ–‡ä»¶çš„大å°ï¼š" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "导入译文文件…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "导入译文文件…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "导入 TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "导入 TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "导出 TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "导出 TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "é‡ç½®" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "选择需è¦å¯¼å…¥çš„翻译文件" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "选择è¦å¯¼å‡ºçš„ TMX 文件" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX 文件" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "正在导入翻译…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "导入翻译记忆失败。" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "正在从“%sâ€å¯¼å…¥â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "导入了 %s 个翻译。" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "导出为…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "正在导出译文…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "导出翻译记忆 “%s†失败。" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "é‡ç½®ç¿»è¯‘记忆库" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "你确定你è¦é‡ç½®ç¿»è¯‘记忆库å—?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "é‡ç½®ç¿»è¯‘è®°å¿†åº“å°†æ— å¯æŒ½å›žåœ°åˆ é™¤å…¶ä¸­å­˜å‚¨çš„æ‰€æœ‰ç¿»è¯‘。你无法撤消此æ“作。" #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "翻译记忆" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "翻译记忆" #: src/prefsdlg.cpp:730 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 "" "æºä»£ç æå–器用于在æºä»£ç æ–‡ä»¶ä¸­æ‰¾åˆ°å¯ç¿»è¯‘字符串和æå–它们,以便它们å¯ä»¥è¢«ç¿»" "译。" #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "自定义æå–器:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "自定义æå–器:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "æ”¯æŒ GNU gettext 工具å¯è¯†åˆ«çš„æ‰€æœ‰ç¼–程语言(PHPã€C/C++ã€C#ã€Perlã€Pythonã€" "Javaã€JavaScript 等)。" #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "删除æå–器" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "您确定è¦åˆ é™¤â€œ%sâ€æå–器å—?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "æå–器" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "è´¦å·" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "自动检查更新" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "包括测试版本" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "æµ‹è¯•ç‰ˆåŒ…å«æœ€æ–°åŠŸèƒ½å’Œæ”¹è¿›ï¼Œä½†å¯èƒ½æœ‰ç‚¹ä¸å¤ªç¨³å®šã€‚" #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "æ›´æ–°" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "è¿™äº›è®¾ç½®ä¼šå½±å“ PO 文件的内部格å¼ã€‚å¦‚æžœä½ æœ‰ç‰¹å®šçš„è¦æ±‚例如版本控制时,调整它" "们。" #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "行尾风格:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix(推è)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "æ¢è¡Œåœ¨ï¼š" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "ä¿ç•™çŽ°æœ‰æ–‡ä»¶çš„æ ¼å¼" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "高级" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "设置" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "正在准备字符串…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "利用翻译内存预翻译..." #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "已预翻译 %u 个字符串" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "正在预翻译…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d 个æ¡ç›®å·²è¿›è¡Œé¢„翻译。" #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "这些翻译被标记为需è¦å¤„ç†ï¼Œå› ä¸ºå…¶å¯èƒ½ä¸å‡†ç¡®ã€‚请检查它们的准确性。" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "翻译记忆精确匹é…" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "翻译记忆大致匹é…" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "没有æ¡ç›®å¯é¢„翻译。" #: src/pretranslate.cpp:218 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 需è¦é€šè¿‡ä½ æ‰‹åŠ¨ç¿»è¯‘" "的文件æ¥å¾—åˆ°å……åˆ†çš„å­¦ä¹ ï¼Œç„¶åŽæ‰èƒ½åœ¨åŠè‡ªåŠ¨ç¿»è¯‘ä¸­å‘æŒ¥ä½œç”¨ã€‚" #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "æ— æ³•åœ¨æ²¡æœ‰æºæ–‡æœ¬æ—¶é¢„翻译。" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "预翻译" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "é¢„ç¿»è¯‘éœ€è¦æºæ–‡æœ¬ã€‚å¦‚æžœåªæœ‰éžå®žé™…文本的 ID 则ä¸èƒ½ç”¨ã€‚" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "无法从未知语言预翻译。" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "预翻译需è¦äº†è§£æºæ–‡æœ¬çš„语言。Poedit 在此文件中没有检测到。" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "仅填补完全匹é…的项" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "默认设置下,会包å«ä¸å‡†ç¡®çš„结果,但标记为需è¦å¤„ç†ã€‚选中此选项则åªåŒ…å«ç²¾ç¡®åŒ¹é…" "的项。" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "ä¸å°†ç²¾ç¡®åŒ¹é…标为需è¦å¤„ç†" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "ä»…åœ¨æ‚¨ä¿¡ä»»ä½ çš„ç¿»è¯‘è®°å¿†çš„è´¨é‡æ—¶å¯ç”¨ã€‚默认情况下,从翻译记忆匹é…的所有æ¡ç›®è¢«æ ‡" "记为模糊,在使用å‰åº”加以审查。" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "预翻译自动在翻译记忆库中查找未翻译字符串的精确或模糊匹é…项,并将其填入翻译。" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "错误: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "å‘生 %d 个错误:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "å‘生一个错误。" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "å‘生 %d 个错误。" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "æ­£åœ¨å–æ¶ˆâ€¦" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "拖拽文件夹或文件于此" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "拖拽文件夹或文件于此" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "添加文件夹…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "添加文件夹…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "添加文件…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "添加文件…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "添加通é…符…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "添加通é…符…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "显示于查找器" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "显示于资æºç®¡ç†å™¨" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "显示于文件夹之内" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "路径" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "排除的路径" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "高级æå–设置" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "为译者æå–注释自:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "有此å‰ç¼€çš„æ³¨é‡Šï¼š" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "所有注释" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "é¢å¤–çš„ xgettext 标志︰:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "é¢å¤–的关键字" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "翻译的项目åç§°" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "团队å称和电å­é‚®ä»¶åœ°å€æˆ– URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "例如: nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8(推è)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "请先ä¿å­˜æ–‡ä»¶ã€‚以下内容在文件ä¿å­˜ä¹‹å‰æ— æ³•被编辑。" #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "å ä½ç¬¦æ­£ç¡®æ€§" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "译文缺少å ä½ç¬¦â€œ%sâ€ã€‚" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "存在原文没有的å ä½ç¬¦â€œ%sâ€ã€‚" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "夿•°å½¢å¼ç¿»è¯‘" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "夿•°å½¢å¼ä¸éœ€å…¨éƒ¨ç¿»è¯‘。" #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "大å°å†™ä¸ä¸€è‡´" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "翻译应该为一个å¥å­ã€‚" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "翻译开头应该为å°å†™å­—æ¯ã€‚" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "空格ä¸ä¸€è‡´" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "翻译没有以空格开头。" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "ç¿»è¯‘å¼€å¤´å­˜åœ¨æºæ–‡æœ¬æ²¡æœ‰çš„空格。" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "翻译结尾缺少æ¢è¡Œã€‚" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "翻译以æ¢è¡Œç¬¦ç»“å°¾ï¼Œä½†æ˜¯æºæ–‡æœ¬æ²¡æœ‰æ¢è¡Œç¬¦ã€‚" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "翻译结尾缺少空格。" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "ç¿»è¯‘ä»¥ç©ºæ ¼ç»“å°¾ï¼Œä½†æ˜¯æºæ–‡æœ¬æ²¡æœ‰ç©ºæ ¼ã€‚" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "标点检查" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "翻译应以“%sâ€ç»“尾。" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "翻译ä¸åº”以“%sâ€ç»“尾。" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "翻译以“%sâ€ç»“å°¾ï¼Œä½†æ˜¯æºæ–‡æœ¬æ˜¯â€œ%sâ€ã€‚" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "云" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "清除èœå•" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "清除èœå•" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "注释:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "æ›´æ–°" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "刪除(&D)" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "删除注释" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "编辑项目" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "项目å称:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "æµè§ˆ" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "将目录添加到列表" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "确定" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "文件(&F)" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "新建(&N)…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "从 POT/PO 文件新建(&P)..." #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "从 POT/PO 文件新建(&P)..." #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "打开(&O)…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "打开最近的" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "打开最近的" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "打开云翻译..." #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "打开云翻译..." #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "å¯åŠ¨çª—å£(&S)" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "å¯åŠ¨çª—å£(&S)" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "编目管ç†å™¨(&M)" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "编目管ç†å™¨(&M)" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "关闭(&C)" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "ä¿å­˜(&S)" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "å¦å­˜ä¸º(&A)…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "å¦å­˜ä¸º(&A)…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "编译为 MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "导出到 HTML(&X)…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "检查更新…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "设置…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "首选项(&P)" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "退出(&X)" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "退出" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "å¤åˆ¶å•æ•°" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "å¤åˆ¶å•æ•°" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "翻译需è¦å¤„ç†(&W)" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "翻译需è¦å¤„ç†(&W)" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "编辑注释(&C)" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "编辑注释(&C)" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "建议" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "查找(&F)…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "替æ¢â€¦" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "查找下一个" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "查找上一个" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "查找和替æ¢â€¦" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "查找下一个" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "查找上一个" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "显示字符串 ID(&I)" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "显示字符串 ID(&I)" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "显示警告" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "显示警告" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "æŒ‰æ–‡ä»¶é¡ºåºæŽ’åº(&F)" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "æŒ‰æ–‡ä»¶é¡ºåºæŽ’åº(&F)" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "æŒ‰æºæ–‡æŽ’åº(&S)" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "æŒ‰æºæ–‡æŽ’åº(&S)" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "按翻译排åº(&T)" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "按翻译排åº(&T)" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "按上下文分组(&G)" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "按上下文分组(&G)" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "带有错误的æ¡ç›®ä¼˜å…ˆ" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "带有错误的æ¡ç›®ä¼˜å…ˆ" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "未翻译æ¡ç›®ä¼˜å…ˆ(&U)" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "未翻译æ¡ç›®ä¼˜å…ˆ(&U)" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "显示代ç å‡ºçްä½ç½®(&S)" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "显示代ç å‡ºçްä½ç½®(&S)" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "显示侧边æ " #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "æ˜¾ç¤ºçŠ¶æ€æ " #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "翻译(&T)" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "从æºä»£ç æ›´æ–°(&U)" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "从æºä»£ç æ›´æ–°(&U)" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "与 Crowdin åŒæ­¥" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "预翻译(&T)…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "验è¯ç¿»è¯‘(&V)" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "验è¯ç¿»è¯‘(&V)" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "ç§»é™¤ç›¸åŒæºæ–‡çš„翻译" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "清除已删除的翻译(&P)" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "清除已删除的翻译(&P)" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "属性(&P)…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "转到(&G)" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "完æˆå¹¶è½¬åˆ°ä¸‹ä¸€ä¸ª(&D)" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "完æˆå¹¶è½¬åˆ°ä¸‹ä¸€ä¸ª(&D)" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "已被编辑" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "已被编辑" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "å‰ä¸€ä¸ªç¿»è¯‘(&P)" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "å‰ä¸€ä¸ªç¿»è¯‘(&P)" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "下一个翻译(&N)" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "下一个翻译(&N)" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "上一个未完æˆ(&R)" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "上一个未完æˆ(&R)" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "下一个未完æˆ(&X)" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "下一个未完æˆ(&X)" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "ä¸Šä¸€ä¸ªå¤æ•°å½¢å¼" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "ä¸Šä¸€ä¸ªå¤æ•°å½¢å¼" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "ä¸‹ä¸€ä¸ªå¤æ•°å½¢å¼" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "ä¸‹ä¸€ä¸ªå¤æ•°å½¢å¼" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "在线帮助(&O)" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "在线帮助(&O)" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "GNU gettext 手册(&G)" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "GNU gettext 手册(&G)" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "关于 Poedit (&A)" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "关于(&A)" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "æå–器安装" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "用分å·åˆ†éš”的扩展å列表(例如 *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "调用:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "æå–翻译的命令:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "这是用æ¥å¯åЍæå–器的命令。\n" "%o æå–到输出文件的å称,%K \n" "关键字的列表,%F \n" "输入文件的列表,%C \n" "字符集标记(è§ä¸‹é¢ï¼‰ã€‚" #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "在关键字列表中的项:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "对于æ¯ä¸ªå…³é”®å­—,这将被附加到命令行一次。\n" "%k 展开æˆå…³é”®å­—。" #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "在输入文件列表中的项:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "对于æ¯ä¸ªè¾“入文件,这将被附加到命令行一次。\n" "%f å±•å¼€æˆæ–‡ä»¶å。" #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "æºä»£ç å­—符集:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "仅在指定了æºä»£ç å­—符集时,这æ‰è¢«é™„加到命令行。\n" "%c 展开æˆå­—符集值。" #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "翻译属性" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "项目å称和版本:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "语言团队:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "夿•°å½¢å¼ï¼š" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "使用默认语言" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "使用自定义表达å¼" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "äº†è§£å¤æ•°å½¢å¼" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "字符集:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "高级æå–设置…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "高级æå–设置…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "翻译属性" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "æºè·¯å¾„" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "æºè·¯å¾„" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "ä»Žä¸‹åˆ—ç›®å½•ä¸­çš„æºæ–‡ä»¶æå–文本:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "基本路径:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "æºå…³é”®å­—" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "æºå…³é”®å­—" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "使用这些关键字(函数å)æ¥è¯†åˆ«æºæ–‡ä»¶ä¸­çš„å¯ç¿»è¯‘字串:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "支æŒçš„语言也使用默认的关键字" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "了解 gettext 关键字" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "打开文件" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "ä¿å­˜æ–‡ä»¶" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "验è¯" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "检查翻译中的错误" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "ä»Žä»£ç æ›´æ–°" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "ä»Žä»£ç æ›´æ–°" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "从æºä»£ç æ›´æ–°" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "ä¾§è¾¹æ " #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "显示或éšè—ä¾§è¾¹æ " #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "å…ˆå‰çš„æºæ–‡æœ¬" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "现在ä¸å‡†ç¡®çš„ç¿»è¯‘å¯¹åº”çš„æ—§çš„æºæ–‡æœ¬ï¼ˆåœ¨æ­¤æ¬¡æ›´æ–°çš„å˜æ›´å‰ï¼‰ã€‚" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "翻译者注释" #: src/sidebar.cpp:196 msgid "Comment" msgstr "注释" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "添加注释" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "添加注释" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "从翻译记忆中删除" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "从翻译记忆中删除" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "翻译建议" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "未找到匹é…项" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "未找到匹é…项" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Poedit 的翻译记忆库中找到此字符串。" #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "ç¿»è¯‘å»ºè®®éœ€è¦æºæ–‡æœ¬ã€‚å¦‚æžœåªæœ‰éžå®žé™…文本的 ID 则ä¸èƒ½ç”¨ã€‚" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "翻译建议需è¦äº†è§£æºæ–‡æœ¬çš„语言。Poedit 在此文件中没有检测到。" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "无法执行程åºï¼š %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX 文件格å¼ä¸æ­£ç¡®ã€‚" #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "翻译记忆数æ®åº“å·²æŸå:%s (%d)。" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "翻译记忆错误:%s (%d)。" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(使用默认语言)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "语言选择" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "选择您的首选语言" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "æ‚¨å¿…é¡»é‡æ–°å¯åЍ Poedit ä»¥ä½¿å˜æ›´ç”Ÿæ•ˆã€‚" #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "无法创建临时目录。" #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "找ä¸åˆ°ç¿»è¯‘æ–‡ä»¶ï¼Œè¿™ä¸æ­£å¸¸ã€‚" #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Gettext 系统中手动添加å¯ç¿»è¯‘æ¡ç›®ï¼Œè€Œæ˜¯è‡ªåŠ¨ä»Žæºä»£ç ä¸­æå–。\n" "如此一æ¥ï¼Œæˆ‘们å¯ä»¥æ‰‹æ¡æœ€æ–°ã€æœ€å‡†ç¡®çš„需è¦ç¿»è¯‘çš„æ¡ç›®ã€‚\n" "译员通常使用由开å‘者为他们准备的 PO æ¨¡æ¿æ–‡ä»¶ï¼ˆPOT)。" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "了解更多关于 GNU gettext 的内容" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "用翻译填写此文件最简å•的方å¼å°±æ˜¯åˆ©ç”¨ POT 更新它:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "从 POT 文件更新" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "从现有的 POT 模æ¿ä¸­æå–å¯ç¿»è¯‘的字符串。" #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "你也å¯ä»¥ç›´æŽ¥ä»Žæºä»£ç ä¸­æå–å¯ç¿»è¯‘的字符串:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "从æºä»£ç ä¸­æå–" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "在属性中é…ç½®æºä»£ç æå–。" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "版本 %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "新建" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "利用 POT 模æ¿åˆ›å»ºæ–°ç¿»è¯‘。" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "æµè§ˆæ–‡ä»¶" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "打开并编辑翻译文件。" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "翻译云工程" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "与其他人在线åˆä½œã€‚" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "最近的文件" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "åŒæ­¥" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "与 Crowdin åŒæ­¥ç¿»è¯‘" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "关于 %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s 首选项" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "关于 %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "æœåŠ¡" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "éšè— %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "éšè—å…¶ä»–" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "全部显示" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "退出 %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "首选项…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "首选项..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "首选项..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "应用(&A)" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "应用" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "返回(&B)" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "返回" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "å–æ¶ˆ(&C)" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "清除(&C)" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "清除" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "å¤åˆ¶" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "剪切(&T)" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "剪切" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "编辑" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "退出(&Q)" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "帮助" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "新建(&N)" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "新建" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "å¦(&N)" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "å¦" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "确定(&O)" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "打开…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "打开(&O)..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "打开..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "粘贴(&P)" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "粘贴" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "首选项" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "æ¢å¤(&R)" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "刷新" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "å¦å­˜ä¸º(&S)" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "å¦å­˜ä¸º" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "全选(&A)" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "全选" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "撤销(&U)" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "是(&Y)" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "是" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "å·¦" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "å³" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "警告: " poedit-3.6.3/locales/ru.mo0000644000175100001660000023703315011674351011111 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-MO’¯’{È’CD“wˆ“?•@•Е9`–Ûš—Ov˜Æ™Ö™왿ü™¼š!Óšõš ››/›E›Y›o›4›4´› é› ÷›œ,œ,Aœnœ5~œ5´œêœþœ)!:&\ ƒ )™)Ãížž-žEž(`ž#‰ž­ž9Æž9Ÿ:ŸJŸ^ŸtŸŒŸ1«Ÿ1ÝŸ   0 Q e Ow OÇ 6¡6N¡&…¡&¬¡ Ó¡ ß¡;é¡ %¢,F¢s¢„¢˜¢±¢À¢Ñ¢'⢠£)£H£'f£'Ž£+¶£â£¤ ¤'>¤8f¤1Ÿ¤ѤAì¤>.¥Am¥"¯¥Ò¥ð¥ˆ¦M¦ Û¦7ü¦54§j§€§X§Tè§Z=¨Q˜¨]ê¨ H©S©™l©AªŒHª“ÕªKi« µ«À«>Þ« ­*­UB­=˜­lÖ­lC® °®"Ñ®"ô®¯.5¯d¯#x¯5œ¯FÒ¯9°BS°9–°+аü°±±=±W±u± „±‘±­±Sɱ9²<W²”²«²;ò0ÿ² 0³<Q³k޳ú³Ö´ì´Eµ0GµExµ0¾µUïµSE¶V™¶7ð¶((·(Q·Az·9¼·ö·A ¸M¹8c¹8œ¹;Õ¹º3"ºVº1eº#—º1»ºíº% »/»hK»*´» ß»Pë»É<¼|½_ƒ½ã½¾&¾d?¾&¤¾=˾R ¿:\¿:—¿Ò¿â¿ü¿* À*6À%aÀ%‡À­ÀÉÀ åÀòÀ"Á7'ÁÃ_ÁE#ÂEiÂë¯Â/›Ã,ËÃ9øÃ2Ä AÄNÄFUĜļÄ&ÕÄüÄÅ/ÅYFÅ$ Å/ÅÅBõÅd8Æ9Æ)×ÇÈHÈQaÈa³ÈBÉHXÉ¡É+ªÉ*ÖÉDÊ«FÊ òÊ ýÊ Ë!Ë(5Ë/^Ë"ŽË ±Ë ¼ËÇËãË%ÿË%%Ì#KÌ oÌ-}Ì «Ì ·ÌÂÌ ÒÌ(ßÌ,Í*5ÍD`Í¥Í+ªÍ<ÖÎ Ð Ñ&9Ñ`Ñ-yѧÑ-ÀÑîÑO Ò"ZÒ}Ò$„ÒM©Ò-÷Ò.%ÓTÓ!iÓ ‹Ó—Ó¨Ó ¹ÓÚÓ)ëÓNÔ,dÔ‘Ô¬Ô(ÂÔ ëÔ%õÔ;ÕDW՜կÕÏÕ!íÕ ÖeÖ‚Öx¡Ö'×B×__Ø¿ØÐØ=ãØ@!Ù)bÙŒÙ"¤ÙÇÙ7ØÙÚ2Ú2KÚ~ÚžÚ¾ÚmÝÚKÜ-Z܈Ü- ÜÎÜ0æÜEÝE]Ý£Ý(ªÝ“ÓÝsgÞ(ÛÞ9ßH>ß;‡ßTÃßNà4gàœà¡àjªà5â1Kâ}â=â.Ûâ1 ã<ã$Tã$yãžã,¾ãëãýãä "ä4/ä4dä™ä#¸ä»Üä˜å3©å Ýånèå#WæI{æFÅæ¼ çÉçIèAdè{¦è3"éVé(]én†éØõéXÎëd'í4Œí'Áíéí îË)îGõî;=ïyï0{ð°¬ñ]òpò†ò"œòU¿òGóG]ó0¥ó7Öó7ô0Fô wô ˜ô¦ô%µôÛô4ìô !õL,õyõ•õ¨õ#¹õ#ÝõööZ%öZ€öÛöûöM÷i÷z÷—÷´÷Î÷Nâ÷ 1ø0<øÌmø:ùUùhù!{ù!ù$¿ù$äù ú#ú'@úhúl„úñúû û56ûlû*ˆûD³û.øû6'ü^ütüŠüü,³ü:àü0ý=Lý2Šý6½ý-ôý("þKþ@jþ,«þ0Øþ= ÿ-Gÿuÿ ‘ÿ œÿ §ÿ²ÿÃÿàÿöÿ I7J-Ì/ú4*D_5¤4ÚD5T/Šìº-§)Õÿ$"@9c/9Í/7Ž@)Ï#ù+*I!t+–+ÂNî=JY ¤±íÈe¶Õ ò + :9 t ' :· Nò A F `U [¶  , -® ‰Ü “fÊúÅcäAHŠެ0;6l:£JÞ’)мDGoŒhüeMå@3Ãt88CqHµOþRNc¡Š=„ÎYSÆ­)t~ž¦ ”Ä ÎY!("V:#Α#«`$­ % º%Å%Ãâ%'¦'(Î'÷'( (3@(!t({–(9)GL*4”*3É*!ý*:+Z+Än,3-ÌJ-..;.UL.H¢.!ë., /#:/^/x/%‰/¯/CÇ/D 0,P0,}0ª0$É0î01 1&?1f1${18 1'Ù1H2>J25‰2&¿23æ2S3!n3^3œï38Œ4Å4%Ø4þ4*5*95*d55)®5<Ø5$6:6C6kK6·6Ô6!ä6+727‰77RÁ7›8z°8+9_;9È›9d:m:|:Iœ:-æ:;H#;Rl;-¿;í;ò;ø;< < !<.<5<O<S<X<^<w<‡<§<½<Ð<ß<H÷<@=2`=“=$²=C×=|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-10 10:16 Last-Translator: Language-Team: Russian Language: ru_RU MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3)); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: ru X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (изменён) (не Ñохранён)%d вхождение кода%d Ð²Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°%d вхождений кода%d вхождений кода%d запиÑÑŒ%d запиÑи%d запиÑей%d запиÑей%d Ñтрока была заполнена предварительным переводом.%d Ñтроки были заполнены предварительным переводом.%d Ñтрок были заполнены предварительным переводом.%d Ñтрок были заполнены предварительным переводом.%d ошибка%d ошибки%d ошибок%d ошибокПроизошла %d ошибка.Произошло %d ошибки.Произошло %d ошибок.Произошло %d ошибок.Произошла %d ошибка:Произошло %d ошибки:Произошло %d ошибок:Произошло %d ошибок:%d проблема обнаружена Ñ Ð¸Ñходными Ñтроками%d проблем обнаружено Ñ Ð¸Ñходными Ñтроками%d проблем обнаружено Ñ Ð¸Ñходными Ñтроками%d проблем обнаружено Ñ Ð¸Ñходными ÑтрокамиВ переводе найдена %d проблема.Ð’ переводе найдены %d проблемы.Ð’ переводе найдено %d проблем.Ð’ переводе найдено %d проблем.%i Ñтрока файла "%s" не была корректно загружена.%i Ñтроки файла "%s" не были корректно загружены.%i Ñтрок файла "%s" не было корректно загружено.%i Ñтрок файла "%s" не было корректно загружено.Формат %sÐаÑтройки %sФормат %s%s перевод импортирован.%s перевода импортировано.%s переводов импортировано.%s переводов импортировано.&О программеО программе Poedit (&A)Применить (&A)Ðазад (&B)Отмена (&C)ОчиÑтить (&C)Закрыть (&C)&Копировать&УдалитьЗакончить и перейти далее (&D)Закончить и перейти далее (&D)&Правка&ФайлÐайти (&F)…РуководÑтво по GNU gettext (&G)РуководÑтво по GNU gettext (&G)&ПерейтиГруппировать по контекÑту (&G)Группировать по контекÑту (&G)Справка (&H)Создать (&N)Создать (&N)…След. > (&N)Следующий переводСледующий перевод (&N)Ðет (&N)ОК (&O)Справка в интернете (&O)Справка в интернете (&O)Открыть (&O)...Открыть (&O)…&Ð’ÑтавитьÐаÑтройки (&P)ÐаÑтройки (&P)…Предыдущий перевод (&P)Предыдущий переводСвойÑтва (&P)…ОчиÑтить удалённые переводы (&P)ОчиÑтить удалённые переводы (&P)Выход (&Q)&ПовторитьЗаменить (&R)Сохранить (&S)Сохранить как (&S)Показать Ð²Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð° (&S)Показать Ð²Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð° (&S)Ðачальное окно (&S)Ðачальное окно (&S)Перевод (&T)&ОтменитьПоказать непереведённые запиÑи в начале (&U)Показать непереведённые запиÑи в начале (&U)Обновить из иÑходного кода (&U)Обновить из иÑходного кода (&U)Проверить перевод (&V)Проверить перевод (&V)Вид (&V)Да (&Y)(ИÑпользовать Ñзык по умолчанию)(вход не выполнен)(требует Windows 8 или новее)< Пред. (&P)<без имени>О программе %sÐккаунтÐккаунтыДобавитьДобавить комментарийДобавить файлы…Добавить папки…Добавить проектДобавить по шаблону…Добавить комментарийДобавить папку в ÑпиÑокДобавить файлы…Добавить папки…Добавить проектДобавить по шаблону…Дополнительные ключевые ÑловаДополнительные флаги xgettext:ДополнительноРаÑширенные наÑтройки извлечениÑ…РаÑширенные наÑтройки извлечениÑРаÑширенные наÑтройки извлечениÑ…ВÑе файлы переводаВÑе комментарииВÑе ÑтрокиТакже иÑпользовать ключевые Ñлова по умолчанию Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ñ… ÑзыковВÑегда переключатьÑÑ Ð½Ð° поле ввода текÑтаПроизошла ошибка.Пункт в ÑпиÑке входных файлов:Пункт в ÑпиÑке ключевых Ñлов:Внешний видПринÑтьПриблизительные ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¸Ð· памÑти переводовВы уверены, что хотите удалить ÑкÑтрактор «%s»?Ð’Ñ‹ уверены, что хотите очиÑтить памÑть переводов?ÐвтоматичеÑки проверÑть наличие обновленийÐвтоматичеÑки компилировать файл MO при ÑохраненииÐазадБазовый путь:Бета-верÑии Ñодержат новейшие функции и улучшениÑ, но могут быть менее Ñтабильными.ПомеÑтить вÑе окна на передний планÐеправильный файл PO: форма множеÑтвенного чиÑла msgstr иÑпользуетÑÑ Ð±ÐµÐ· msgid_pluralÐеправильный файл PO: форма единÑтвенного чиÑла msgstr иÑпользуетÑÑ Ð²Ð¼ÐµÑте Ñ msgid_pluralÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñ€Ð°Ð·Ð¼ÐµÑ‚ÐºÐ° в Ñтроке перевода.ОбзорПроÑмотр файловПо умолчанию не полноÑтью Ñовпадающие результаты также будут заполнены и помечены как требующие доработки. Отметьте Ñтот вариант, чтобы заполнÑть только полные ÑовпадениÑ.ОтменаОтменÑетÑÑ…Ðе удаётÑÑ Ñоздать папку Ð´Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… файлов.Ðе удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ программу: %sÐевозможно предварительно перевеÑти Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтного Ñзыка.Ðевозможно предварительно перевеÑти без иÑходного текÑта.С заглавной буквыДиÑпетчер папок (&M)ДиÑпетчер папок (&M)ДиÑпетчер папокИзменить Ñзык интерфейÑаКодировка:Проверить документПроверÑть также и грамматикуПроверÑть правопиÑание во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð²Ð¾Ð´Ð°ÐŸÑ€Ð¾Ð²ÐµÑ€Ð¸Ñ‚ÑŒ наличие обновлений…Проверить наличие ошибок в переводеПроверить наличие обновлений…ПроверÑть правопиÑаниеЯÑноОчиÑтить менюУдалить переводОчиÑтить менюУдалить Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð—Ð°ÐºÑ€Ñ‹Ñ‚ÑŒÐžÐ±Ð»Ð°ÐºÐ¾Ð’Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°Ð’Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°ÐŸÐµÑ€ÐµÐ²Ð¾Ð´Ð¸Ñ‚Ðµ ÑовмеÑтно Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ людьми в Ñети.Сбор данных в иÑходных файлах…Команда Ð´Ð»Ñ Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð°:КомментарийКомментарий:Из комментариев, начинающихÑÑ Ñ:Компилировать в формат MO…Компилировать в…Скомпилированные файлы переводаÐаÑтройте извлечение иÑходного кода в разделе «СвойÑтва».ПодтверждениеПодключите Poedit к поддерживаемым облачным платформам локализации, чтобы легко Ñинхронизировать переведённые Ñ Ð½Ð¸Ð¼Ð¸.КопироватьКопировать форму единÑтвенного чиÑлаКопировать иÑходный текÑтКопировать форму единÑтвенного чиÑлаКопировать иÑходный текÑÑ‚ÐвтоматичеÑки иÑправлÑть ошибки правопиÑаниÑÐе удалоÑÑŒ Ñкачать информацию о проекте Localazy.Ðе удалоÑÑŒ загрузить файл, похоже он повреждён.Ðе удалоÑÑŒ Ñохранить файл «%s».Создать новый переводСоздать новый переводСоздать новый перевод из шаблона POT.Создать новый проект переводовОшибка CrowdinCrowdin – Ñто онлайн-платформа Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð°Ð¼Ð¸ и инÑтрумент Ð´Ð»Ñ ÑовмеÑтного перевода. Мы Ñами иÑпользуем Crowdin Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð° Poedit на многие Ñзыки, и нам Ñто очень нравитÑÑ.Вырезать (&T)ПользовательÑкие ÑкÑтракторы:ПользовательÑкие ÑкÑтракторы:ÐаÑтроить панель инÑтрументов…ВырезатьРазмер базы данных на диÑке:УдалитьУдалить из памÑти переводаУдалить ÑкÑтракторУдалить из памÑти переводаУдалить проектУдалить комментарийУдалить проектУдаление проекта не приведёт к удалению файлов перевода.Определение различий…Папки:Ð’Ñ‹ дейÑтвительно хотите удалить проект «%s»?Ð’Ñ‹ хотите перезагрузить файл Ñ Ð´Ð¸Ñка? Ваши неÑохранённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Poedit будут потерÑны, еÑли вы Ñто Ñделаете.Ð’Ñ‹ хотите удалить вÑе переводы, которые идентичны иÑходному текÑту?ДейÑтвительно удалить вÑе неиÑпользуемые переводы?Ðе ÑохранÑть (&N)Ðе ÑохранÑтьБольше не показыватьÐе помечать полные ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ ÐºÐ°Ðº требующие доработкиБольше не показыватьЗагружаютÑÑ Ð¿Ð¾Ñледние переводы…Загрузка переводов отключена в Ñтом проекте.Перетащите Ñюда папки или файлыПеретащите Ñюда папки или файлыВыход (&X)ЭкÑпорт в HTML…ПравитьПравить комментарий (&C)Править комментарий (&C)Править комментарийПравить комментарийПравка проектаПравить Ð¿Ñ€Ð¾ÐµÐºÑ‚ÐŸÑ€Ð°Ð²ÐºÐ°ÐŸÑ€Ð°Ð²Ð¸Ñ‚ÑŒâ€¦Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð°:Перейти в полноÑкранный режимЗапиÑи в Ñтом файле имеют количеÑтво форм множеÑтвенного чиÑла, отличное от указанного в заголовке Plural-FormsПоказывать запиÑи Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð¼Ð¸ в началеПоказывать запиÑи Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð¼Ð¸ в началеЗапиÑи Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð¼Ð¸ были выделены в ÑпиÑке краÑным цветом. ЕÑли выбрать такую запиÑÑŒ, будут показаны подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± ошибке.Ошибка при открытии файлаОшибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°ÐžÑˆÐ¸Ð±ÐºÐ° при загрузке файла XLIFF: %sОшибка: ОшибкиВÑёТочные ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¸Ð· памÑти переводовИÑключенные путиЭкÑпорт в TMX…ЭкÑпортировать как…ЭкÑпорт в HTML…ЭкÑпорт в TMX…ЭкÑпорт в HTMLÐе удалоÑÑŒ ÑкÑпортировать памÑть перевода в «%s».ЭкÑпорт переводов…Извлечь из иÑходного кодаИзвлекать пометки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ñ‡Ð¸ÐºÐ¾Ð²:Извлекать текÑÑ‚ из иÑходных файлов в Ñледующих папках:Извлечение переводимых Ñтрок из %s файла…Извлечение переводимых Ñтрок из %s файлов…Извлечение переводимых Ñтрок из %s файлов…Извлечение переводимых Ñтрок из %s файлов…ÐаÑтройка ÑкÑтрактораЭкÑтракторыÐе удалоÑÑŒ подключитьÑÑ Ðº процеÑÑу Poedit.Ðе удалоÑÑŒ извлечь Ñтроки из иÑходного кода.Ðе удалоÑÑŒ загрузить файл Ñ Ð¸Ð·Ð²Ð»ÐµÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼Ð¸ переводами.Ðе удалоÑÑŒ объединить каталоги gettext.Ðе удалоÑÑŒ обновить памÑть переводов: %sФайлÐе удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файлФайл «%s» не ÑущеÑтвует.Файл «%s» не ÑвлÑетÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ перевода.Файл «%s» доÑтупен только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ, и его Ð½ÐµÐ»ÑŒÐ·Ñ Ñохранить. Сохраните файл под другим именем.ÐайтиДалееÐазадÐайти и заменить…ИÑкать в комментариÑхИÑкать в иÑходных текÑтахИÑкать в переводахДалееÐазадИÑправить ÑзыкИÑправить ÑзыкИÑправить заголовокИÑправить заголовокФайлы перевода FlutterФорма %iФорма %i (не иÑпользуетÑÑ)GNU gettextОбщееФайлы HTMLПомощьСкрыть боковую панельСкрыть Ñтроку ÑоÑтоÑниÑСкрыть Ñто уведомлениеКак работает Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð°Ñ ÑинхронизациÑ?ИДЕÑли продолжить, то вÑе переводы, помеченные как удалённые, будут безвозвратно удалены. ЕÑли они будут повторно добавлены в будущем, их придётÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾ переводить.ЕÑли вы ранее отказали в доÑтупе к файлам, то вы можете разрешить его в «СиÑтемные наÑтройки» > «КонфиденциальноÑть и безопаÑноÑть» > «КонфиденциальноÑть» > «Файлы и папки».ЕÑли вы ранее отказали в доÑтупе к файлам, вы можете разрешить Ñто в «СиÑтемные наÑтройки» > «КонфиденциальноÑть и безопаÑноÑть» > «Файлы и папки».ИгнорироватьÐе учитывать региÑтрИмпорт из TMX…Импорт файлов перевода…Импорт из TMX…Импорт файлов перевода…Импорт из «%s»…Ðе удалоÑÑŒ импортировать памÑть переводов.Импорт переводов…В: %sÐ’ÐºÐ»ÑŽÑ‡Ð°Ñ Ð±ÐµÑ‚Ð°-верÑииÐеÑоответÑтвие верхнего/нижнего региÑтраÐеÑоглаÑованные Ð¿Ñ€Ð¾Ð±ÐµÐ»Ñ‹Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ переводчикеУÑтановитьÐедопуÑтимый файлВызов:ПроблемаПроблемыФайлы перевода JSONОÑтавитьÐазвание Ñзыка или кодЯзык перевода Ñовпадает Ñ Ð¸Ñходным Ñзыком.Язык перевода не указан.Язык перевода:Выбор ÑзыкаКоманда переводчиков:Язык:ПоÑледнее изменениеПодробнее о ключевых Ñловах gettextУзнать о формах множеÑтвенного чиÑлаПодробнееУзнать больше о %sПодробнее о CrowdinПодробнее о GNU gettextСтрока%d Ñтрока файла «%s» повреждена (недопуÑтимые данные в %s).ÐžÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ñтрок:СпиÑок раÑширений, разделённых точкой Ñ Ð·Ð°Ð¿Ñтой (например, *.cpp; *.h):Загрузить английÑкийLocalazy - Ñто выÑоко Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸, позволÑÑŽÑ‰Ð°Ñ Ð»ÑŽÐ±Ð¾Ð¼Ñƒ человеку легко переводить Ñвои продукты и контент на неÑколько Ñзыков.Файлы MO Ð½ÐµÐ»ÑŒÐ·Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ непоÑредÑтвенно в Poedit.СтрочныеПропиÑныеСделать новый перевод из файла POT.ÐедопуÑтимый формат заголовка: «%s»Управление аккаунтамиУправление…СлиÑние различий…СвернутьÐазвание проекта перевода длÑИмÑ:Следующий незаконченный (&X)Следующий незаконченный (&X)Требует проверкиТребует проверкиОшибка Ñети: %s (%d)Ðе фокуÑироватьÑÑ Ð½Ð° ÑпиÑке Ñтрок. ЕÑли включено, Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ клавиатуры необходимо нажимать Ctrl+Ñтрелки, но при Ñтом можно вводить текÑÑ‚ немедленно, без Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð¾ÐºÑƒÑа клавишей Tab.СоздатьСоздать из файла POT/PO (&P)…Ðовые ÑтрокиСоздать из файла POT/PO (&P)…Ðовые ÑтрокиÐовые Ñтроки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð°:Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° множеÑтвенного чиÑÐ»Ð°Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° множеÑтвенного чиÑлаÐетСовпадений не найденоСтроки, которые можно было бы заполнить предварительным переводом, отÑутÑтвуют.Ð’ файле нет информации о вхождениÑÑ… Ñтой Ñтроки в иÑходный код.Совпадений не найденоÐе найдено проблем Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð¾Ð¼.Ð’ вашем аккаунте нет проектов перевода.Ðет Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± иÑпользованииÐе вÑе формы множеÑтвенного чиÑла переведены.Ðе авторизованы, пожалуйÑта войдите Ñнова.ÐŸÑ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ñ‡Ð¸ÐºÐ¾Ð²ÐžÐšÐžÐ´Ð¸Ð½Ð’ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ðµ Ñто только еÑли вы уверены в качеÑтве вашей памÑти переводов. По умолчанию вÑе ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¸Ð· памÑти переводов отмечаютÑÑ ÐºÐ°Ðº требующие доработки и подлежат проверке перед иÑпользованием.Только при точном ÑовпаденииОткрыть облачный перевод…Ðедавно открытыеОткрыть и править файлы перевода.Открыть облачный переводОткрыть облачный перевод…Открыть файлОткрыть в редактореОткрыть в редактореÐедавно открытыеОткрыть Ñправочный файлОткрыть...Открыть…ÐаÑтройкиДругоеПредыдущий незаконченный (&R)Предыдущий незаконченный (&R)Файлы перевода POШаблоны перевода POTФайлы POT ÑвлÑÑŽÑ‚ÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸ и не Ñодержат переводов. Чтобы Ñделать перевод, Ñоздайте файл PO из шаблона.Ð’ÑтавитьСтиль ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ вÑтавкиПапкиВыполнÑет обновление из иÑходного кода вÑех файлов проекта.Ð’ доÑтупе отказано.Ð’ переводе отÑутÑтвует заполнитель «%s».ПравильноÑть Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÐµÐ¹Ð’Ð¼ÐµÑто Ñтого откройте и измените ÑоответÑтвующий файл PO. Когда вы Ñохраните его, файл MO тоже обновитÑÑ.Сначала нужно Ñохранить файл. До Ñтого данный раздел Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ.МножеÑтвенноеПереводы форм множеÑтвенного чиÑлаФорма множеÑтвенного чиÑла, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð² файле, необычна Ð´Ð»Ñ Â«%s».Формы множеÑтвенного чиÑла:PoeditPoedit — диÑпетчер папокPoedit автоматичеÑки иÑправил неверное Ñодержимое в файле «%s».Poedit может попытатьÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ новые Ñтроки только предыдущими переводами из Ñтого файла либо из вашей памÑти переводов. ИÑпользование памÑти перевода будет не очень Ñффективным, еÑли она почти пуÑта, но будет улучшатьÑÑ Ð¿Ð¾ мере Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² неё переводов.Poedit не может показать иÑходный код, в котором иÑпользуетÑÑ Ñтрока, потому что файл либо недоÑтупен в указанном меÑте, либо Ñто ÑимволичеÑÐºÐ°Ñ ÑÑылка, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ указывает на наÑтоÑщий файл.Poedit — Ñто проÑтой в иÑпользовании редактор переводов.Poedit не Ñмог открыть файл «%s».Черновой перевод (&T)…Черновой переводЧерновой переводÐачерно переведена %u ÑтрокаÐачерно переведены %u ÑтрокиÐачерно переведено %u ÑтрокÐачерно переведено %u ÑтрокЧерновой перевод из памÑти переводов…Выполнение чернового перевода…Черновой перевод автоматичеÑки находит в памÑти переводов точные или неточные ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñтрок без перевода и заполнÑет их переводами.Ð”Ð»Ñ Ñ‡ÐµÑ€Ð½Ð¾Ð²Ð¾Ð³Ð¾ перевода требуетÑÑ, чтобы был доÑтупен иÑходный текÑÑ‚. Эта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ будет работать, еÑли иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ идентификаторы без фактичеÑкого текÑта.Черновой перевод требует Ð·Ð½Ð°Ð½Ð¸Ñ Ñзыка иÑходного текÑта. Poedit не Ñмог обнаружить его в Ñтом файле.ÐаÑтройкиÐаÑтройки...ÐаÑтройки…Подготовка Ñтрок…СохранÑть форматирование ÑущеÑтвующих Ñ„Ð°Ð¹Ð»Ð¾Ð²ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° множеÑтвенного чиÑÐ»Ð°ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° множеÑтвенного чиÑлаПредыдущий иÑходный текÑтПредыдущий отредактированныйПредыдущий отредактированныйÐазвание и верÑÐ¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°:Ðазвание проекта:Проект:ПроектыПроверки пунктуацииОчиÑтитьОчиÑтить удалённые переводыВыходЧтение файла было прервано из-за ошибки: %sÐедавние файлыПовторитьОбновитьПерезагрузить файлПерезагрузить файлОÑталоÑÑŒ: %dУдалитьУдалить переводы, Ñовпадающие Ñ Ð¸Ñходным текÑтомУдалить переводы, Ñовпадающие Ñ Ð¸Ñходным текÑтомУдалённые ÑтрокиУдалённые ÑтрокиУдалённые Ñтроки (больше не иÑпользуютÑÑ):ЗаменитьЗаменить вÑе (&A)Заменить вÑе (&A)Строка заменыЗаменить…Ðеобходимый заголовок Plural-Forms отÑутÑтвует.СброÑОчиÑтить памÑть переводовОчиÑтка памÑти переводов необратимо удалит вÑе переводы, хранÑщиеÑÑ Ð² ней. Ð’Ñ‹ не Ñможете отменить Ñту операцию.Показать в FinderПроверитьСохранитьСохранить как (&A)…Сохранить как (&A)…Сохранить вÑÑ‘ равноСохранить вÑÑ‘ равноСохранить какСохранить как…Сохранение измененийСохранить файлСохранение в другом меÑте не поддерживаетÑÑ Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² XCLOC.Скриншоты:Выбрать вÑе (&A)Выбрать вÑеВыберите TMX-файлы Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°Ð’Ñ‹Ð±ÐµÑ€Ð¸Ñ‚Ðµ папкуВыберите файл переводаВыберите файлы переводов Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°Ð’Ñ‹Ð±ÐµÑ€Ð¸Ñ‚Ðµ шаблон переводаВыберите предпочитаемый ÑзыкВыбор ÑзыкаЗадать ÑзыкÐаÑтройкиÐаÑтройки…Показать боковую панельПоказывать ошибки правопиÑаниÑПоказать Ñтроку ÑоÑтоÑниÑПоказать идентификатор Ñтроки (&I)Показывать варианты заменыПоказать панель инÑтрументовПоказать предупреждениÑПоказать в проводникеПоказать в папкеПоказать или Ñкрыть боковую панельПоказать боковую панельПоказать Ñтроку ÑоÑтоÑниÑПоказать идентификатор Ñтроки (&I)Показать предупреждениÑÐ‘Ð¾ÐºÐ¾Ð²Ð°Ñ Ð¿Ð°Ð½ÐµÐ»ÑŒÐ’Ð¾Ð¹Ñ‚Ð¸Ð’Ñ‹Ð¹Ñ‚Ð¸Ð’Ð¾Ð¹Ñ‚Ð¸Ð’Ð¾Ð¹Ñ‚Ð¸ в %sВойти в аккаунтВойти в CrowdinВойти в аккаунтВыйтиЕдинÑтвенноеИнтеллектуальное копирование и вÑÑ‚Ð°Ð²ÐºÐ°Ð˜Ð½Ñ‚ÐµÐ»Ð»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ñ€Ð°ÑÑтановка переноÑовИнтеллектуальные ÑÑылкиИнтеллектуальные кавычкиУпорÑдочивать как в файле (&F)УпорÑдочивать по иÑходному текÑту (&S)УпорÑдочивать по переводу (&T)УпорÑдочивать как в файле (&F)УпорÑдочивать по иÑходному текÑту (&S)УпорÑдочивать по переводу (&T)Кодировка иÑходного кода:ЭкÑтракторы иÑпользуютÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка переводимых Ñтрок в файлах иÑходного кода и извлекают их так, чтобы их можно было перевеÑти.ИÑходный код недоÑтупен.ИÑходный код не найденИÑходный текÑтИД иÑходного текÑтаИÑходный текÑÑ‚ — %sКлючевые Ñлова иÑходных файловПапки Ñ Ð¸Ñходными файламиКлючевые Ñлова иÑходных файловПапки Ñ Ð¸Ñходными файламиРечьПроверка правопиÑÐ°Ð½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°, так как Ñловарь Ð´Ð»Ñ Ñзыка «%s» не уÑтановлен.Проверка правопиÑаниÑÐачать озвучиваниеОÑтановить озвучиваниеСохранённых переводов:КонтекÑÑ‚ Ñтроки: %sИдентификатор Ñтроки: %sДлина Ñтроки в ÑимволахДлина Ñтроки в Ñимволах: перевод | иÑточникИÑÐºÐ¾Ð¼Ð°Ñ ÑтрокаСтрочные проекты Crowdin не поддерживаютÑÑ.ЗаменыПредложениÑÐŸÑ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтупны, пока не выбран Ñзык перевода. Также не будут поддерживатьÑÑ Ñ„Ð¾Ñ€Ð¼Ñ‹ множеÑтвенного чиÑла и другие функции.Лишний заполнитель «%s», которого нет в иÑходном текÑте.Поддерживает вÑе Ñзыки программированиÑ, которые раÑпознают инÑтрументы GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript и другие).СинхронизациÑСинхронизировать Ñ CrowdinСинхронизировать перевод Ñ CrowdinСинхронизациÑОшибка ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ð¸Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ Crowdin не удалаÑÑŒ.Ошибка ÑинтакÑиÑа в заголовке Plural-Forms («%s»).ППTMX-файлыИзвлечь переводимые Ñтроки из имеющегоÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° POT.Ð˜Ð¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ и Ð°Ð´Ñ€ÐµÑ Ñлектронной почты или URL-адреÑЗамена текÑтаПамÑть переводов не Ñодержит Ñтрок, похожих на Ñодержимое Ñтого файла. Она подходит только Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÐ°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого перевода поÑле того, как Poedit Ñоберёт доÑтаточно данных из файлов, которые вы перевели вручную.Ðеверный формат TMX-файла.ИзменениÑ, внеÑённые другим приложением, будут потерÑны еÑли вы Ñохраните.Ðе удаётÑÑ Ñкомпилировать данный файл в формат MO Ð´Ð»Ñ Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐµÐ³Ð¾ иÑпользованиÑ.Этот файл Ñодержал в Ñебе повторÑющиеÑÑ Ñлементы, которые недопуÑтимы в файлах PO и могли бы помешать его иÑпользованию. Poedit иÑправил проблему, но Ñледует проÑмотреть вÑе переводы, помеченные как требующие доработки, и иÑправить их при необходимоÑти.Файл не может быть Ñохранен в кодировке «%s» как указано в наÑтройках перевода. ВмеÑто Ñтого он был Ñохранён в UTF-8 и, ÑоответÑтвенно, были изменены наÑтройки.Этот файл был изменён. Ð’Ñ‹ желаете Ñохранить изменениÑ?Ðе удалоÑÑŒ определить формат файла.Файл был Ñкомпилирован в формат MO, но Ñкорее вÑего не будет правильно работать.Файл был Ñохранён и Ñкомпилирован в формат MO. Ðо он может работать неправильно.Файл был Ñохранён, но его не удалоÑÑŒ Ñкомпилировать в формат MO и иÑпользовать.Файл был уÑпешно Ñохранён.Файл «%s» не может быть открыт.Файл «%s» не может быть Ñохранён.Файл «%s» был изменён другим приложением.Старый иÑходный текÑÑ‚ (до обновлениÑ), которому ÑоответÑтвует неточный перевод.Самый проÑтой ÑпоÑоб заполнить Ñтот файл переводами, Ñто обновить его из POT:Этот перевод не начинаетÑÑ Ñ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð°.Перевод заканчиваетÑÑ Ð½Ð¾Ð²Ð¾Ð¹ Ñтрокой, но иÑходный текÑÑ‚ - нет.Перевод заканчиваетÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð¾Ð¼, но иÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñтрока - нет.Перевод заканчиваетÑÑ Ð½Ð° «%s», но иÑходный текÑÑ‚ заканчиваетÑÑ Ð½Ð° «%s».Ð’ переводе пропущена Ð½Ð¾Ð²Ð°Ñ Ñтрока в конце.Ð’ переводе пропущен пробел в конце.Перевод готов к иÑпользованию, но %d запиÑÑŒ ещё не переведена.Перевод готов к иÑпользованию, но %d запиÑи ещё не переведены.Перевод готов к иÑпользованию, но %d запиÑей ещё не переведено.Перевод готов к иÑпользованию, но %d запиÑей ещё не переведено.Перевод готов к иÑпользованию.Перевод должен заканчиватьÑÑ Ð½Ð° «%s».Перевод не должен заканчиватьÑÑ Ð½Ð° «%s».Перевод должен начинатьÑÑ ÐºÐ°Ðº предложение.Перевод должен начинатьÑÑ Ñ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¾Ð¹ буквы.Перевод начинаетÑÑ Ñ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð°, но иÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñтрока - нет.Переводы были отмечены как требующие доработки. Проверьте их правильноÑть.Перевод отÑутÑтвует. Это Ñтранно.Возникла проблема при форматировании файла (но он был уÑпешно Ñохранён).Произошла ошибка при загрузке переводов на Localazy.При загрузке файла произошли ошибки. Ð’ результате чего некоторые данные могут быть потерÑны или повреждены.Эти наÑтройки влиÑÑŽÑ‚ на внутреннее форматирование файлов PO. Измените их, еÑли у Ð²Ð°Ñ ÐµÑть оÑобые требованиÑ, например, еÑли вы иÑпользуете ÑиÑтему ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð²ÐµÑ€Ñий.Этот JSON файл — не файл перевода, и не может быть отредактирован в Poedit.Это дейÑтвие удалит вÑе переводы, Ñовпадающие Ñ Ð¸Ñходным текÑтом. Это невозможно отменить.Ð’ Ñтом файле еÑть запиÑи Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ð¼Ð¸ множеÑтвенного чиÑла, но нет заголовка Plural-Forms.Этот файл иÑпользует идентификаторы вмеÑто иÑходного текÑта. Poedit может загрузить английÑкий текÑÑ‚ из файла «%s».Эта команда запуÑкает ÑкÑтрактор. %o означает название выходного файла, %K — ÑпиÑок ключевых Ñлов, %F — ÑпиÑок входных файлов, %C — кодировку (Ñм. ниже).Эта Ñтрока была найдена в памÑти переводов Poedit.Это будет добавлено в командную Ñтроку, только еÑли была указана кодировка иÑходного кода. %c означает кодировку.Это будет добавлено в командную Ñтроку Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ входного файла. %f означает название файла.Это будет добавлено в командную Ñтроку Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ключевого Ñлова. %k означает ключевое Ñлово.Ð’ÑегоПреобразованиÑПереводимые запиÑи не добавлÑÑŽÑ‚ÑÑ Ð² ÑиÑтему Gettext вручную, а автоматичеÑки извлекаютÑÑ Ð¸Ð· иÑходного кода. Таким образом, они оÑтаютÑÑ Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ð¼Ð¸ и точными. Переводчики обычно иÑпользуют файлы шаблонов PO (POT), подготовленные Ð´Ð»Ñ Ð½Ð¸Ñ… разработчиком.ПеревеÑти проект CrowdinПереведено: %d из %d (%d %%)ПереводЯзык переводаПамÑть переводовПеревод требует проверки (&W)СвойÑтва переводаФайл перевода уÑтарел, никаких изменений в Ñтроках Ñделано не было.Файл перевода был обновлён Ñ %s изменениемФайл перевода был обновлён Ñ %s изменениÑмиФайл перевода был обновлён Ñ %s изменениÑмиФайл перевода был обновлён Ñ %s изменениÑмиБаза памÑти переводов повреждена: %s (%d).Ошибка памÑти перевода: %s (%d).Перевод требует проверки (&W)СвойÑтва переводаПредлагаемые варианты Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð°Ð”Ð»Ñ Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ перевода нужно, чтобы был доÑтупен иÑходный текÑÑ‚. Эта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ будет работать, еÑли иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ идентификаторы без текÑта.ПереводчеÑкие переводы требуют, чтобы иÑходный текÑÑ‚ был извеÑтен. Poedit не Ñмог обнаружить его в Ñтом файле.Перевод — %sПеревод не может быть обновлён из иÑходного кода, так как код не был найден в меÑте, указанном в ÑвойÑтвах файла.ДваUTF-8 (желательна)ОтменитьÐеожиданно отÑутÑтвует Ñодержимое в файле XCLOC.Произошло непредвиденное иÑключение: %sUnix (рекомендуетÑÑ)ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° Crowdin.ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°Ðе переведеноОбновитьПоÑледние изменениÑОбновить вÑёОбновить вÑе каталоги в Ñтом проектеОбновить вÑе каталоги в Ñтом проекте?Обновить из файла POT (&P)…Обновить из файла POT (&P)…Обновить из кодаОбновить из POT-файлаОбновить из кодаОбновить из иÑходного кодаСводка об обновленииОбновлениÑÐе удалоÑÑŒ обновитьОбновление каталогов проектовОбновление переводовОбновление информации о пользователе…Загрузка переводов в %s не удалаÑÑŒ.Идёт загрузка переводов в %s…Выгрузка переводов…ПользовательÑкое выражениеИÑпользовать наÑтраиваемый шрифт Ð´Ð»Ñ ÑпиÑка:Шрифт полей ввода:ИÑпользование правила по умолчанию Ð´Ð»Ñ Ñтого ÑзыкаИÑкать переводимые Ñтроки в иÑходных файлах по Ñтим ключевым Ñловам (именам функций):ИÑпользовать памÑть переводовПроверитьРезультаты проверкиВерÑÐ¸Ñ %sПоказать подробноÑти…Показать подробноÑти…Ожидание авторизации…Предупреждение: Добро пожаловать в PoeditПри обновлении из иÑходного кодаТолько полные ÑловаОкноWindowsХотите иÑпользовать английÑкий Ñзык Ð´Ð»Ñ Ð¸Ñходного текÑта?ИÑкать по кругуПереноÑ:Файлы перевода XLIFFКаталог локализации XcodeДаПереводимые Ñтроки можно также извлечь непоÑредÑтвенно из иÑходного кода:Ð’ окно Poedit можно перетащить только один файл.У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° чтение иÑходных кодов из меÑта, указанного в ÑвойÑтвах файла.Чтобы Ñто изменение вÑтупило в Ñилу, необходимо перезапуÑтить Poedit.Ваше имÑВаши Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны, еÑли не Ñохранить их.Ваше Ð¸Ð¼Ñ Ð¸ почта будут иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ при указании поÑледнего переводчика в заголовках файлов GNU gettext.ÐольМаÑштабТребует проверкине удалÑть временные файлы (Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸)например, nplurals=2; plural=(n > 1);ошибка: подбирать похожий перевод внутри файлаперейти к Ñлементу Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ номером Ñтрокиобрабатывать Ð°Ð´Ñ€ÐµÑ poedit://Alt+Ctrl+Стрелка внизEnterВлевоВправоShift+Стрелка вверхaltctrlshiftО программе %sСкрыть %sСкрыть оÑтальноеÐаÑтройки...Выйти из %sСервиÑыПоказать вÑёпереводить начерно из памÑти переводовнеизвеÑтный ÑÐ·Ñ‹ÐºÐ½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ (%s)предупреждение: ваша_почта@пример.com«%s» не ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым файлом POT.poedit-3.6.3/locales/sr@latin.mo0000644000175100001660000016510415011674351012236 Þ•ÅD³l,8; 9; E;&P;w;<‹;È;&Û;&<J)<gt< Ü<æ< õ<;ÿ<;= B=P=W=]=e=l=s=y===Ÿ=¥=«=´=È=Ü=à=ò=> >>>>1>C>G> K> X>e>n>w> ~>‹>›>±>Ç>Ö>ò>???#?)?2?I? `? n? |?‰??«?Ç?à?ù?@'@-@2@I@Y@ w@ ƒ@@–@ž@§@ «@ ·@Ä@ Ó@ß@ ï@û@ A"A 1A=AMAaA|A…A¥AÂAâA øA B1B'CBkB~B›B µBÀBÆB7âB6CQC)qC›C  C]«C D<DDYD$žDÃD ÊD€×DXE _E"mEE+«E)×E F FF0FAFTF]FpFŒF¨F#½FáFöFG GG (G3GEGKGQGbG%sG™G ´GÕGÝGæGþG HH/8H hHkuHáHæHùHI"I8I-WI1…I·I ÐIÛI)òIJ —M—_—p——–—¥—½—Ï—à—ï—˜˜6˜#?˜ c˜#„˜¨˜½˜ Ϙ:ݘ*™C™ Y™z™š™¡™2©™3Ü™7šHš/fš–šœšU­š›I›Gh›&°› ×›ᛣô›˜œ¡œ)°œ"Úœ8ýœ76 n£·Ê åðž!'ž"Iž$lž‘žªž¾ž ÆžÔž äžòžŸ ŸŸ&Ÿ;Ÿ*YŸ„Ÿ£Ÿ ¬Ÿ¶ŸÕŸêŸýŸ2 N ‡V Þ æ ú ¡*¡F¡8b¡8›¡)Ô¡ þ¡ ¢+¢#K¢o¢¹ƒ¢=£D£]£v£•£›£ ´£"¾£á£"ô£¤)¤;¤6M¤„¤¤+¦¤hÒ¤F;¥<‚¥ ¿¥ Ê¥Ô¥+祦!&¦5H¦#~¦#¢¦ƦΦߦå¦õ¦§§#§8§ G§S§\§d§W§Ù§ñ§j ¨t¨“¨7±¨ é¨ó¨û¨2ÿ¨2©B© R©`©p©€©3’©Æ©שï©5 ªËCª« '«22«7e«7«)Õ«2ÿ«2¬;¬Z¬x¬h˜¬­ ­­1­ F­ P­^­f­y­ ­ ›­©­»­Í­æ­ï­ ®® ®)®0®D®Z®*r®® ®Ž1¯À¯@°I°i°{°•°§°Á°'Õ°ý° ±±/0±!`±‚± ›±¦± º±űͱÖ±ì±õ±- ²9²U² d²q²‚²‰²,š²%Dzí²ü²³2³O³AV³˜³=ª³賡ù³6›´Ò´è´&µ%'µMµ `µmµ‡µ)޵¸µ½µÓµéµùµ ¶È$¶í¶ó¶·"·>·-M·{·–·±·´·/÷Tó·H¸#W¸/{¸«¸%˸)ñ¸¹1¹9¹Æ?¹ºº:º&Jºqº‰º¤º´ºɺÞºîº » »»$»*»A»X»l»p»ò»ù»¼7¼O¼*b¼¼l¦¼P½d½m½Vˆ½ß½ò½ù½F¾ý^¾½\¿*À,EÀrÀŠÀžÀn²À:!Á\Á›xÁeÂzz õÂÃÃ"Ã)8ÃbÃ~ÚòÃÄÃÖÃðà Ä ÄÄ)Ä2ÄQÄ7XÄġĨİÄÈÄ àÄîÄ õÄ Å7ÅOÅ.gÅ–Å Å ©ÅµÅ ÆÅ3ÑÅÆ"ÆL1Æ~Æ ’ƜƥƶÆÇÆÙÆ ëÆøÆÇÇ9+ÇeÇ tÇ ÇÇ ¨Ç¶ÇÍÇìÇÈ È *È8ÈAÈQÈgÈ…È •È¡È±È ÌÈØÈîÈ É"É8É HÉ TÉ `É mÉ zÉ „ÉɡɻÉÎÉ èÉòÉúÉ Ê'Ê7ÊIÊbʂʚʳÊÓÊëÊcËhË„Ë  Ë®ËÁË ÖË÷Ë Ì5ÌRÌJXÌ£Ì ¸ÌÆÌÕÌéÌþÌÍ+4Í`ÍBsͶͽÍjÆÍC1ÎvuÎ ìÎøÎ Ï4ÏCÏ)_ÏM‰Ï×Ï àÏ:íÏ"(Ð KÐÒYÐ,ÑNLÑD›Ñ¥àѨ†Ò7/Ó0gÓJ˜ÓVãÓV:Ô‘Ô(¨Ô)ÑÔ0ûÔE,ÕgrÕÚÕ6÷Õ3.ÖEbÖ&¨Ö$ÏÖÌôÖÁ×+Ý×- Ø&7Ø$^Ø/ƒØ=³ØñØLÙ8[Ùc”ÙŽøÙI‡ÚsÑÚhEÛw®Û˜&Ü?¿ÜuÿÜfuÝcÜÝ@ÞGÞVÞrÞÞ ”Þ¢Þ¹ÞÓÞMäÞ<2ß+oߛߵ߯ßeÚßw@à ¸à}ÆàDáHá`á2há'›áÃá×áöá â ââ1â!@â6bâ™â·âÕâçâãã3ã FãRãjãˆã&œã%Ããéãää0ä?ä$Yäb~äáäåå /å:åNåbå åŽå ¤åÅåÕåÜå*äå ææ$æ;æVæEYæ8ŸæiØæKBç Žç,˜çqÅç7è<è@è9Pè Šè «è#µèÙèøèééé$é*é/é5é<éAéEéJéPé oé yé †é ’éŸé ¦é&³éÚééé êê$êÃ’sS¸€% *Ý è•­"M–±óÜtÖH{oŒŸX]Ñ¢SÏ‚ A_fXD:žž%!ZBš,Æ´Þ7!¶úèƒì}g¤À^—%wº˜¿g8yï†)РãqCa—ð„â¤n4.¿$»¥n’#¥JÄrÍ=O «Œ Ź~NR‰´rc5WqÁŠ[…ù-Ú®\Yûḱ´Âj'±æ¡Ž,˜2{åeV1£‰I2\1l‡kƒñô;Jp¦®` ‰‚L$؆cG›5”«eí„?‹Na80»FbŽf¢È¦ìkçîóñõOS Ò°‡Û"¾€œêhØÚæ&ARc6ÓÁ®9C4!“v-¬ò=2{Œ¸ªj à#ÎýĦ@é›Z¨âõŠb^_[ZÑ)BÉü>ÂT3z:.vœ°îJÄh*„íbs’³ (à< 6µg¶<'ÓY>kˆ;‘Ë$Þo ÷]zš1§À8Îôÿ…·³°ÙtÛ‹ëFª<ÐEy”EÌäX·4d¯žÇQmL–êÏ¡Ý\ /¯|76—†}²HÌ|wB7»0rFÊ)d¡u÷‡?ã+³y^¬©˜øßKd ¼D­û}¹OeRGPoÁˆ¨*`á|½þÇ åDaxµP ";l¬‘¹:‚©E&h£Ëu3öK' •(ˆx«(0ÒÍÔ§ºÉ߯øÔzQVQï²n™½U§¿¾ÃLò[Õ3u-Žö`C ¥ð/ýIäŠjY]i•ëº>šü™W‹© “I À~qþ@ÂM–Ÿ¶UÅKÊ™”w5ÿ›G+pú¨@œ€iƒmv¯t¤“ù£/?9P&p=HAç­¼xm~Ÿ,Öf·VªÃ.M¼²Åiµ+ÜÈTÕT¾¢‘Ù9½#×l×ésUW_ …N (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Serbian (Cyrillic) Language: sr_SP MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: sr X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (izmenjeno) (nesaÄuvano)%d pojavljivanje u kodu%d pojavljivanja u kodu%d pojavljivanja u kodu%d unos%d unosa%d unosaPreliminarno je preveden %d unos.Preliminarno su prevedena %d unosa.Preliminarno je prevedeno %d unosa.%d greÅ¡ka%d greÅ¡ke%d greÅ¡akaDoÅ¡lo je do %d greÅ¡ke.DoÅ¡lo je do %d greÅ¡ke.DoÅ¡lo je do %d greÅ¡aka.DoÅ¡lo je do %d greÅ¡ke:DoÅ¡lo je do %d greÅ¡ke:DoÅ¡lo je do %d greÅ¡aka:PronaÄ‘en je %d problem u prevodu.PronaÄ‘ena su %d problema u prevodu.PronaÄ‘eno je %d problema u prevodu.%i red u datoteci „%s†nije ispravno uÄitan.%i reda u datoteci „%s†nisu ispravno uÄitana.%i redova u datoteci „%s†nije ispravno uÄitano.%s formatPodeÅ¡avanja %s-a%s formatUvezen je %s prevod.Uvezena su %s prevoda.Uvezeno je %s prevoda.&O programu&O Poedit-u&Primeni&Nazad&Otkaži&ObriÅ¡i&Zatvori&KopirajIz&briÅ¡i&ZavrÅ¡i i nastavi&ZavrÅ¡i i nastavi&UreÄ‘ivanje&DatotekaP&ronaÄ‘i…P&riruÄnik za GNU gettextP&riruÄnik za GNU gettext&Navigacija&GrupiÅ¡i po kontekstu&GrupiÅ¡i po kontekstuPo&moć&Novo&Novo…&Sledeće >&Sledeći prevod&Sledeći prevod&Ne&U reduO&nlajn pomoćO&nlajn pomoć&Otvori…&Otvori…&Nalepi&PodeÅ¡avanja&PodeÅ¡avanja…&Prethodni prevod&Prethodni prevodS&vojstva…&OÄisti izbrisane prevode&OÄisti izbrisane prevode&IzaÄ‘i&PonoviZa&meni&SaÄuvaj&SaÄuvaj kaoPojavljivanja u &koduPojavljivanja u &kodu&Uvodni prozor&Uvodni prozorP&revod&OpozoviPrvo &neprevedeni unosiPrvo &neprevedeni unosi&Ažuriraj iz izvornog koda&Ažuriraj iz izvornog kodaP&roveri valjanost prevodaP&roveri valjanost prevoda&Prikaz&Da(podrazumevani jezik)(niste prijavljeni)(potreban je Windows 8 ili noviji)< &PrethodnoO %s-uNalogNalozi&DodajDodaj komentarDodaj datoteke…Dodaj foldere…Dodaj projekatDodaj zamenski znak…Dodaj komentarDodajte folder na listuDodaj datoteke…Dodaj foldere…Dodaj projekatDodaj zamenski znak…Dodatne kljuÄne reÄiDodatne xgettext oznake:NaprednoNapredna podeÅ¡avanja izdvajanja…Napredna podeÅ¡avanja izdvajanjaNapredna podeÅ¡avanja izdvajanja…Sve datoteke prevodaIz svih komentaraSvi stringoviKoristi i podrazumevane kljuÄne reÄi za podržane jezikeUvek prebaci fokus na polje za unos tekstaDoÅ¡lo je do greÅ¡ke.Stavka u listi ulaznih datoteka:Stavka u listi kljuÄnih reÄi:IzgledPrimeniPribližna podudaranja sa prevodilaÄkom memorijomŽelite li zaista da izbriÅ¡ete izdvajaÄ â€ž%sâ€?Želite li zaista da resetujete prevodilaÄku memoriju?Automatski traži ažuriranjaAutomatski kompajliraj MO datoteku pri ÄuvanjuNazadOsnovna putanja:Beta verzije sadrže najnovije funkcije i poboljÅ¡anja, ali mogu biti manje stabilne.Postavi sve u prednji planPO datoteka je oÅ¡tećena: koristi se msgstr za množinu bez msgid_pluralPO datoteka je oÅ¡tećena: koristi se msgstr za jedninu uz msgid_pluralNeispravna oznaka u stringu za prevod.&PotražiPregledaj datotekePodrazumevano se prikazuju i približni rezultati, ali su oznaÄeni da im je potrebna dorada. OznaÄite ovu opciju kako bi se prikazivala samo potpuna podudaranja.&OtkažiOtkazivanje…Nije moguće napraviti privremeni folder.Nije moguće izvrÅ¡iti program: %sNije moguće preliminarno prevesti sa nepoznatog jezika.Nije moguće preliminarno prevesti bez izvornog teksta.Pretvori u velika poÄetna slova&Menadžer kataloga&Menadžer katalogaMenadžer katalogaPromenite jezik interfejsaKodiranje:Odmah proveri dokumentProvera gramatike sa pravopisomProveravaj pravopis tokom kucanjaProveri d&a li postoje ispravke…Proveri da li ima greÅ¡aka u prevoduPotr&aži ažuriranja…Proveravaj pravopisObriÅ¡iObriÅ¡i listuObri&Å¡i prevodObriÅ¡i listuObri&Å¡i prevod&ZatvoriOblakPojavljivanja u koduPojavljivanja u koduSaraÄ‘ujte sa drugima onlajn.Prikupljanje datoteka sa izvornim kodom…Komanda za izdvajanje prevoda:KomentarKomentar:Iz komentara koji poÄinju sa:Ko&mpajliraj u MO…Kompajliranje u…Kompajlirane datoteke prevodaPodesite izdvajanje iz izvornog koda u svojstvima.PotvrdaPovežite Poedit sa podržanim platformama u oblaku za lokalizaciju da biste s lakoćom sinhronizovali prevode koji se nalaze na njima.KopirajKopiraj iz &jednineKopiraj iz iz&vornog tekstaKopiraj iz &jednineKopiraj iz iz&vornog tekstaAutomatski ispravi pravopisNije moguće preuzeti podatke o projektu na Localazy-ju.Nije moguće uÄitati datoteku. Verovatno je oÅ¡tećena.Nije moguće saÄuvati datoteku „%sâ€.Napravi noviNapravi novi prevodNapravite novi prevod pomoću POT Å¡ablona.Napravi novi prevodilaÄki projekatGreÅ¡ka u Crowdin-uCrowdin je internet platforma zadužena za upravljanje prevodima i alat za kolaborativno prevoÄ‘enje. I sami koristimo Crowdin kako bismo preveli Poedit na mnoge jezike i obožavamo ga.&IseciPrilagoÄ‘eni izdvajaÄi:PrilagoÄ‘eni izdvajaÄi:Prilagodi traku sa alatkama…IseciVeliÄina baze na disku:&IzbriÅ¡iIzbriÅ¡i iz prevodilaÄke memorijeIzbriÅ¡i izdvajaÄIzbriÅ¡i iz prevodilaÄke memorijeIzbriÅ¡i projekatIzbriÅ¡i komentarIzbriÅ¡i projekatBrisanjem projekta nećete izbrisati datoteke prevoda.UporeÄ‘ivanje razlika…Folderi:Želite li da izbriÅ¡ete projekat „%sâ€?Želite li da ponovo uÄitate datoteku sa diska? Time ćete izgubiti sve nesaÄuvane promene u Poedit-u.Želite li da uklonite sve prevode koje su identiÄne izvodnom tekstu?Želite li da uklonite sve prevode koji se viÅ¡e ne koriste?&Ne ÄuvajNe ÄuvajNe prikazuj ponovoPotpuna podudaranja ne oznaÄavaj za doraduNe prikazuj ponovoPreuzimanje najnovijih prevoda…Preuzimanje prevoda iz ovog projekta je onemogućeno.Ovde prevucite foldere ili datotekeOvde prevucite foldere ili datoteke&IzaÄ‘iI&zvoz u HTML…UrediUredi ko&mentarUredi ko&mentarUredi komentarUredi komentarUreÄ‘ivanje projektaUredi projekatUreÄ‘ivanjeUredi…&Imejl:PreÄ‘i u režim celog ekranaBroj množinskih oblika u unosima se razlikuje od onoga Å¡to piÅ¡e u zaglavlju datotekePrvo unosi sa greÅ¡kamaPrvo unosi sa greÅ¡kamaUnosi sa greÅ¡kama su oznaÄeni crvenom bojom. Kada izaberete takav unos, prikazaće se detalji o greÅ¡ci.GreÅ¡ka pri otvaranju datotekeGreÅ¡ka pri Äuvanju datotekeDoÅ¡lo je do greÅ¡ke pri uÄitavanju XLIFF datoteke: %sGreÅ¡ka: GreÅ¡keSveIdentiÄna podudaranja sa prevodilaÄkom memorijomIzuzete putanjeIzvezi u TMX…Izvezi kao…Izvoz u HTML…Izvezi u TMX…Izvoženje u HTMLIzvoz prevodilaÄke memorije u „%s†nije uspeo.Izvoz prevoda…Izdvoj iz izvornog kodaIzdvoj napomene prevodiocima:Izdvoj tekst iz izvornih datoteka u sledeće foldere:Izdvajanje linija teksta koje je moguće prevesti iz %s datoteke…Izdvajanje linija teksta koje je moguće prevesti iz %s datoteke…Izdvajanje linija teksta koje je moguće prevesti iz %s datoteka…PodeÅ¡avanje izdvajaÄaIzdvajaÄiNije moguće komunicirati sa Poedit-ovim procesom.Nije uspelo izdvajanje linija teksta iz izvornog kôda.Nije moguće uÄitati datoteku sa izdvojenim prevodima.Nije moguće objediniti gettext kataloge.Nije moguće ažurirati prevodilaÄku memoriju: %sDatotekaNije moguće otvoriti datotekuDatoteka „%s†ne postoji.„%s†nije datoteka prevoda.Datoteka „%s†je dostupna samo za Äitanje i ne može se saÄuvati. SaÄuvajte je pod drugim imenom.PronaÄ‘iPronaÄ‘i &sledećePronaÄ‘i prðodnoPronaÄ‘i i zameni…KomentariIzvorni tekstPrevodiPronaÄ‘i &sledećePronaÄ‘i prðodnoIspravi jezikIspravi jezikIspravi zaglavljeIspravi zaglavljeFlutter datoteke prevodaOblik %iOblik %i (ne koristi se)GNU gettextOpÅ¡teHTML datotekePomoćSakrij boÄnu trakuSakrij statusnu trakuSakrij ovo obaveÅ¡tenjeKako funkcioniÅ¡e sinhronizacija u oblaku?IDAko nastavite, trajno ćete ukloniti sve prevode oznaÄene kao izbrisane. Moraćete da ponovo prevedete stringove ako budu dodati u budućnosti.Ako ste ranije zabranili pristup datotekama, to možete promeniti u System Preferences → Security & Privacy → Privacy → Files & Folders.Ako ste ranije zabranili pristup datotekama, to možete promeniti u System Settings → Privacy & Security → Files & Folders.ZanemariNe razlikuj velika i mala slovaUvezi iz TMX-a…Uvezi datoteke prevoda…Uvezi iz TMX-a…Uvezi datoteke prevoda…Uvoz iz „%sâ€â€¦Nije uspeo uvoz prevodilaÄke memorije.Uvoz prevoda…Datoteka: %sUkljuÄi beta verzijeNedoslednost pri upotrebi velikih i malih slovaNedoslednost pri upotrebi razmakaInformacije o prevodiocuInstalirajNevažeća datotekaPozivanje:ProblemProblemiJSON datoteke prevoda&ZadržiNaziv ili kôd jezikaJezik prevoda se poklapa sa izvornim jezikom.Nije naveden jezik prevoda.Jezik prevoda:Izbor jezikaTim prevodilaca:Jezik:Poslednja izmenaSaznajte viÅ¡e o kljuÄnim reÄima gettext-aSaznajte viÅ¡e o množinskim oblicimaSaznajte viÅ¡eSaznajte viÅ¡e o usluzi %sSaznajte viÅ¡e o Crowdin-uSaznajte viÅ¡e o GNU gettextLinijaRed %d u datoteci „%s†je oÅ¡tećen (nevažeći podaci u %s).ZavrÅ¡eci redova:Lista ekstenzija razdvojenih taÄka-zarezom (npr. *.cpp;*.h):UÄitaj engleskiLocalazy je platforma za lokalizaciju sa visokim nivoom automatizacije koja svakome omogućava da jednostavno prevede svoje proizvode i sadržaj na viÅ¡e jezika.MO datoteke se ne mogu direktno ureÄ‘ivati u Poedit-u.Pretvori u mala slovaPretvori u velika slovaNapravite novi prevod iz POT datoteke.Neispravan format zaglavlja: „%sâ€Upravljaj nalozimaUpravljaj…Objedinjavanje razlika…UmanjiNaziv projekta za koji je namenjen prevodIme:S&ledeći nedovrÅ¡eniS&ledeći nedovrÅ¡eniPotrebna doradaPotrebna doradaGreÅ¡ka na mreži: %s (%d)Ne dozvoljava da lista stringova zauzme fokus. Ako je omogućeno, morate da koristite Ctrl i strelice za navigaciju. Tekst možete da unosite direktno u polje a da ne pritiskate Tab za promenu fokusa.&NovoNo&vo iz POT/PO datoteke…Nove linije tekstaNo&vo iz POT/PO datoteke…Novi stringoviNove linije teksta koje je potrebno prevesti:Sle&deći množinski oblikSle&deći množinski oblikNeNema rezultataNijedan unos se ne može preliminarno prevesti.U datoteci nije navedena informacija o pojavljivanjima ovog stringa u izvornom kodu.Nema rezultataNisu pronaÄ‘eni problemi u prevodu.Nema prevodilaÄkih projekata na vaÅ¡em nalogu.Nema informacija o korišćenjuNisu svi množinski oblici prevedeni.Nemate ovlašćenja. Ponovo se prijavite.Napomene prevodiocima&U reduJedanUkljuÄite ovu opciju samo ako ste sigurni u kvalitet vaÅ¡e prevodilaÄke memorije. Podrazumevano se svim podudaranjima dodeljuje oznaka „potrebna dorada†i takve stringove bi trebalo proveriti.Samo potpuna podudaranjaOtvori prevod iz oblaka…Otvori &nedavneOtvorite i ureÄ‘ujte datoteke prevoda.Otvori prevod iz oblakaOtvori prevod iz oblaka…Otvori datotekuOtvori u ureÄ‘ivaÄuOtvori u ureÄ‘ivaÄuOtvori &nedavneOtvori referentnu datotekuOtvori…Otvori…OpcijeDrugoP&rethodni nedovrÅ¡eniP&rethodni nedovrÅ¡eniPO datoteke prevodaPOT Å¡abloni prevodaPOT datoteke su samo Å¡abloni bez prevoda. Da biste zapoÄeli prevod, napravite novu PO datoteku prema Å¡ablonu.NalepiNalepi i uskladi stilPutanjeAžuriraćete sve datoteke u projektu iz izvornog koda.Zabranjen pristup.U prevodu nedostaje Äuvar mesta „%sâ€.Ispravnost Äuvara mestaUmesto toga otvorite i ureÄ‘ujte odgovarajuću PO datoteku. Kada je saÄuvate, ažuriraće se i MO datoteka.Prvo saÄuvajte datoteku. Ovaj odeljak se ne može ureÄ‘ivati dok to ne uradite.MnožinaPrevodi množinskih oblikaPravilo za množinske oblike koje je navedeno u datoteci nije uobiÄajeno za %s jezik.Množinski oblici:PoeditPoedit – menadžer katalogaPoedit je automatski ispravio nevažeći sadržaj u datoteci „%sâ€.Poedit može pokuÅ¡ati da popuni nove unose samo iz prethodnih prevoda u datoteci ili iz Äitave prevodilaÄke memorije. Upotreba prevodilaÄke memorije neće imati mnogo uÄinka ako je slabo popunjena, ali će biti sve bolja kako dodajete nove prevode.Poedit ne može da prikaže izvorni kôd u kom se string koristi, jer datoteka nije dostupna na navedenoj lokaciji ili se radi o simboliÄkoj referenci koja ne upućuje na stvarnu datoteku.Poedit je jednostavan alat za prevoÄ‘enje.Poedit ne može da otvori datoteku „%sâ€.&Preliminarni prevod…Preliminarni prevodPreliminarni prevodPreliminarno je preveden %u stringPreliminarno su prevedena %u stringaPreliminarno je prevedeno %u stringovaPreliminarno prevoÄ‘enje pomoću prevodilaÄke memorije…Preliminarno prevoÄ‘enje…Preliminarni prevod automatski pronalazi potpuna ili približna podudaranja za neprevedene stringove u prevodilaÄkoj memoriji i popunjava njihove prevode.Za preliminarni prevod je potreban izvorni tekst. Ova funkcija neće raditi samo sa identifikatorima.Da biste koristili preliminarni prevod potrebno je da izvorni jezik bude poznat. Poedit ga nije prepoznao u ovoj datoteci.PodeÅ¡avanjaPodeÅ¡avanja…PodeÅ¡avanja…Priprema stringova…OÄuvaj formatiranje postojećih datotekaPrðodni množinski oblikPrðodni množinski oblikPrethodni izvorni tekstPrethodna &izmenaPrethodna &izmenaNaziv i verzija projekta:Naziv projekta:Projekat:ProjektiProvere interpunkcije&ObriÅ¡iÄŒišćenje izbrisanih prevodaIzaÄ‘iDoÅ¡lo je do sledeće greÅ¡ke pri Äitanju datoteke: %sNedavne datotekePonoviOsvežiPonovo uÄitaj datotekuPonovo uÄitaj datotekuPreostalo: %dUkloniUkloni prevode identiÄne izvoruUkloni prevode identiÄne izvoruUklonjene linije tekstaUklonjene linije tekstaUklonjene linije teksta (viÅ¡e se ne koriste):ZameniZ&ameni sveZ&ameni sveString za zamenu&Zameni…U zaglavlju nedostaje obrazac za množinske oblike.PoniÅ¡tiResetovanje prevodilaÄke memorijeObrisaćete sve prevode u prevodilaÄkoj memoriji. Ova radnja je nepovratna.Prikaži u Finder-uPregledajSaÄuvajSaÄuvaj &kao…SaÄuvaj &kao…Svejedno saÄuvajSvejedno saÄuvajSaÄuvaj kaoSaÄuvaj kao…Čuvanje promenaSaÄuvaj datotekuNije podržano Äuvanje XCLOC datoteke na drugu lokaciju.Snimci ekrana:Izaberi &sveIzaberi sveIzbor TMH datoteka za uvozIzbor folderaIzbor datoteke prevodaIzbor datoteke prevoda za uvozIzbor Å¡ablona prevodaIzaberite željeni jezikIzaberi jezikIzaberi jezikPostavkePodeÅ¡avanja…Prikaži boÄnu trakuPrikaži pravopis i gramatiku&Statusna trakaID &stringaPrikaži zamenePrikaži traku sa alatkama&UpozorenjaPrikaži u Explorer-uPrikaži u folderuPrikaži ili sakrij boÄnu trakuPrikaži boÄnu traku&Statusna trakaID &stringa&UpozorenjaBoÄna trakaPrijavite seOdjavi mePrijavi mePrijavite se u %sPrijava na nalog u oblakuPrijava na CrowdinPrijava na nalog u oblakuOdjavi meJedninaPametno kopiranje/nalepljivanjePametne crtePametni linkoviPametni navodniciSortiraj kao u &datoteciSortiraj prema &izvornom tekstuSortiraj prema p&revoduSortiraj kao u &datoteciSortiraj prema &izvornom tekstuSortiraj prema p&revoduKodiranje izvornog koda:IzdvajaÄi se koriste za pronalaženje i izdvajanje stringova za prevod u datotekama izvornog koda.Izvorni kôd je nedostupan.Izvorni kôd nije pronaÄ‘enIzvorni tekstID izvornog tekstaIzvorni tekst – %sKljuÄne reÄi izvornih datotekaPutanje do izvornih datotekaKljuÄne reÄi izvornih datotekaPutanje do izvornih datotekaGovorProvera pravopisa je onemogućena jer nije instaliran reÄnik za %s jezik.Pravopis i gramatikaPokreni govorZaustavi govorSaÄuvanih prevoda:Kontekst stringa: %sIdentifikator stringa: %sDužina stringa u znakovimaDužina stringa u znakovima: prevod | izvorString za pretraguNisu podržani Crowdin projekti u kojima se prevode linije teksta.ZamenePredloziPredlozi nisu dostupni ako nije izabran jezik prevoda. Isto važi i za množinske oblike i druge funkcije.Nepotreban Äuvar mesta „%s†koji ne postoji u izvornom tekstu.Podržava sve programske jezike koje prepoznaju GNU gettext alatke (PHP, C/C++, C#, Python, Java, JavaScript i druge).Sinhronizuj&Sinhronizuj sa Crowdin-omSinhronizuj prevod sa Crowdin-omSinhronizacijaGreÅ¡ka pri sinhronizovanjuSinhronizacija sa Crowdin-om nije uspela.SintaktiÄka greÅ¡ka u zaglavlju kod obrasca za množinske oblike („%sâ€).MemorijaTMX datotekePreuzmite stringove za prevod iz postojećeg POT Å¡ablona.Naziv grupe i imejl-adresa ili URLZamena tekstaPrevodilaÄka memorija ne sadrži stringove koji su sliÄni onima u trenutnoj datoteci. Ova opcija je korisna za poluautomatske prevode tek nakon Å¡to Poedit nauÄi dovoljno iz datoteka koje ste ruÄno preveli.Neispravan format TMX datoteke.Ako saÄuvate, promene koje je napravila druga aplikacija će biti izgubljene.Datoteka se ne može kompajlirati u MO format za dalje korišćenje.Datoteka je sadržala duplikate, Å¡to nije dozvoljeno. Poedit je ispravio problem, ali je poželjno da proverite i ispravite sve prevode koji su oznaÄeni za doradu.Nije moguće saÄuvati datoteku u kodiranju „%sâ€, kako je navedeno u podeÅ¡avanjima prevoda. SaÄuvana je u UTF-8 formatu, a podeÅ¡avanje je izmenjeno shodno tome.Datoteka je izmenjena. Želite li da saÄuvate promene?Datoteka je u formatu koji Poedit ne prepoznaje.Datoteka je kompajlirana u MO format, ali verovatno neće ispravno raditi.Datoteka je saÄuvana i kompajlirana u MO format, ali verovatno neće ispravno raditi.Datoteka je saÄuvana, ali se ne može kompajlirati u MO format za dalje korišćenje.Datoteka je saÄuvana.Nije moguće otvoriti datoteku „%sâ€.Nije moguće saÄivati datoteku „%sâ€.Datoteku „%s†je promenila druga aplikacija.Stari izvorni tekst (do ažuriranja) koji odgovara netaÄnom prevodu.Najjednostavniji naÄin da popunite ovu datoteku prevodima jeste da je ažurirate pomoću POT datoteke:Prevod ne poÄinje razmakom.Prevod se zavrÅ¡ava novim redom, ali izvorni tekst ne.Prevod se zavrÅ¡ava razmakom, ali izvorni tekst ne.Prevod se zavrÅ¡ava znakom „%sâ€, a izvorni tekst znakom „%sâ€.U prevodu nedostaje novi red na kraju.U prevodu nedostaje razmak na kraju.Prevod je spreman za korišćenje, ali %d unos joÅ¡ nije preveden.Prevod je spreman za korišćenje, ali %d unosa joÅ¡ nisu prevedena.Prevod je spreman za korišćenje, ali %d unosa joÅ¡ nije prevedeno.Spreman je za korišćenje.Prevod se mora zavrÅ¡avati znakom „%sâ€.Prevod se ne sme zavrÅ¡avati znakom „%sâ€.Prevod mora poÄinjati velikim slovom.Prevod mora poÄinjati malim slovom.Prevod poÄinje razmakom, ali izvorni tekst ne.Prevodi su oznaÄeni za doradu. Proverite njihovu ispravnost.Nema unosa. To je neobiÄno.Datoteka je uspeÅ¡no saÄuvana, iako je doÅ¡lo do problema pri formatiranju.DoÅ¡lo je do greÅ¡ke pri otpremanju prevoda na Localazy.DoÅ¡lo je do greÅ¡aka pri uÄitavanju datoteke. Zbog toga su neki podaci izgubljeni ili oÅ¡tećeni.Ova podeÅ¡avanja utiÄu na formatiranje PO datoteka. Prilagodite ih svojim potrebama, npr. ako koristite sistem za upravljanje izvornim kodom.Ova JSON datoteka ne sadrži prevode i ne može se ureÄ‘ivati u Poedit-u.Ova akcija će ukloniti sve prevode koji se u potpunosti podudaraju sa izvornim tekstom. Ovo nije moguće opozvati.Ova datoteka sadrži unose sa množinskim oblicima, ali joj nedostaje zaglavlje sa pravilom za množinu.Ova datoteka koristi identifikatore umesto izvornog teksta. Poedit može da uÄita engleski tekst iz datoteke „%sâ€.Ova komanda pokreće izdvajaÄ. %o – naziv izlazne datoteke, %K – lista kljuÄnih reÄi, %F – lista ulaznih datoteka, %C – kodiranje (v. ispod).Ovaj string je pronaÄ‘en u Poedit-ovoj prevodilaÄkoj memoriji.Ovo će biti dodato u komandnu liniju samo ako je navedeno kodiranje izvornog koda. Parametar %c oznaÄava kodiranje.Ovo će biti dodato u komandnu liniju za svaku ulaznu datoteku. Parametar %f oznaÄava naziv datoteke.Ovo će biti dodato u komandnu liniju za svaku kljuÄnu reÄ. Parametar %k oznaÄava kljuÄnu reÄ.UkupnoTransformacijePrevedite projekat u oblakuPrevedeno: %d od %d (%d%%)PrevodJezik prevodaPrevodilaÄka memorijaOznaÄi prevod za &doraduSvojstva prevodaDatoteka prevoda je već ažurna, nisu naÄinjene promene u linijama prevoda.Baza podataka prevodilaÄke memorije je oÅ¡tećena: %s (%d).GreÅ¡ka u prevodilaÄkoj memoriji: %s (%d).OznaÄi prevod za &doraduSvojstva prevodaPredloženi prevodiZa predložene prevode je potreban izvorni tekst. Ova funkcija neće raditi samo sa identifikatorima.Da biste koristili predloge prevoda potrebno je da izvorni jezik bude poznat. Poedit ga nije prepoznao u ovoj datoteci.Prevod – %sNije moguće ažurirati prevode iz izvornog koda, jer nije pronaÄ‘en kôd na lokaciji koja je navedena u svojstvima datoteke.DvaUTF-8 (preporuÄuje se)OpozoviNeoÄekivano nedostaje sadržaj iz XCLOC datoteke.DoÅ¡lo je do neoÄekivanog izuzetka: %sUnix (preporuÄeno)Nepoznata greÅ¡ka u Crowdin-u.Nepoznata greÅ¡kaNeprevedenoAžurirajRezime ažuriranjaA&žuriraj sveAžuriraj sve kataloge u projektuŽelite li da ažurirate sve kataloge u ovom projektu?A&žuriraj iz POT datoteke…A&žuriraj iz POT datoteke…Ažuriraj iz kodaAžuriraj pomoću POT datotekeAžuriraj iz kodaAžuriraj iz izvornog kodaRezime ažuriranjaAžuriranjaAžuriranje nije uspeloAžuriranje kataloga projektaAžuriranje prevodaAžuriranje informacija o korisniku…Otpremanje prevoda na %s nije uspelo.Otpremanje prevoda na %s…Prevodi se otpremaju…PrilagoÄ‘eni izrazFont za listu:Font za tekstualna polja:&Podrazumevana pravila za ovaj jezikTraži stringove za prevod u izvornim datotekama prema ovim kljuÄnim reÄima (nazivima funkcija):Koristi prevodilaÄku memorijuProveri valjanostRezultati provere valjanostiVerzija %sPrikaži detalje…Prikaži detalje…Čeka se potvrda identiteta…Upozorenje: Dobro doÅ¡li u PoeditPri ažuriranju iz izvornog kodaSamo cele reÄiProzorWindowsŽelite li da engleski bude izvorni tekst?Traži ukrugPrelom:XLIFF datoteke prevodaXcode katalog lokalizacijeDaStringove za prevod možete da izdvojite i direktno iz izvornog koda:U Poedit-ov prozor možete prevući samo jednu datoteku.Nemate dozvolu za Äitanje datoteka sa izvornim kodom na lokaciji koja je navedena u svojstvima datoteke.Potrebno je da ponovo pokrenete Poedit kako bi ova izmena stupila na snagu.VaÅ¡e imeIzgubićete sve promene ako ih ne saÄuvate.VaÅ¡e ime i imejl-adresa se koriste samo pri postavljanju poslednjeg prevodioca u zaglavlju GNU gettext datoteka.NulaZumPotrebna doradane briÅ¡i privremene datoteke (radi otklanjanja greÅ¡aka)npr. nplurals=2; plural=(n > 1);greÅ¡ka: koristi sliÄne prevode iz datotekeidi na stavku u navedenom reduobrada URI adrese poedit://Alt+Ctrl+DoleEnterLevoDesnoShift+GorealtctrlshiftOsnovni podaci o %s aplikacijiSakrij %sSakrij drugePostavke...IzaÄ‘i iz %sUslugePrikaži sveprevedi pomoću prevodilaÄke memorijenepoznat jeziknepodržana verzija (%s)upozorenje: adresa@domen.rs„%s†je nevažeća POT datoteka.poedit-3.6.3/locales/pt_PT.mo0000644000175100001660000017200515011674351011506 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-®O þ‘ ’4’R’Ai’«’$¼’$á’Y“O`“}°“ .”9” M”=X”–”ž”®”·” ¿”ɔєٔá”é”ü”• • !•/•C•W•[•q•‡•Ž•”• •©•¾•Ó•Ù• Ý• ë• ù• – ––#–5–J–_–p––°–¶– ¿–Ë– Ô– â– —$—4— D— P—Z—t—$Ž—$³—Ø—í—˜˜ ˜*˜"B˜ e˜ q˜ |˜‰˜˜ –˜ ˜¶˜͘á˜ó˜ ™!™?™V™j™|™”™®™ Ê™(Ô™%ý™(#š Lšmšƒš:”š(Ïšøš) ›#3›W›^›f›8…›?¾›'þ›&œFœ MœT[œ°œEËœR.d“œœ¯Lž Už2cž*–ž;Áž4ýž 2Ÿ>ŸTŸjŸŸ›ŸªŸ#ß çŸ # @ [ v  } ‰  › § ¹ À Æ Þ "ö ¡!7¡ Y¡ e¡r¡¡£¡"´¡9ס ¢†¢¦¢­¢Æ¢Þ¢÷¢#£?3£Gs£)»£ å£ð£-¤!4¤V¤Ôf¤;¥C¥^¥$y¥ž¥"¥¥È¥!Ï¥ñ¥!¦$¦4¦I¦HX¦¡¦ ½¦3ʦmþ¦Jl§C·§ û§ ¨¨/-¨]¨*t¨1Ÿ¨%Ѩ%÷¨©#©:©A©U©i©|©©ž©­© ¶©À© È©qé©[ªwª~“ª«)«%D«j«q«w«|«–«ª«¿«Ыæ«û«F¬Y¬s¬†¬5¦¬Hܬ%­ 9­,D­6q­6¨­1ß­0®B®"K® n®2®i® ,¯6¯I¯\¯v¯‘¯¬¯ƯÙ¯ì¯ü¯ ° °4°T°]° s°°…°”°š°°°&Ȱ0ï° ±œ#±µÀ±˜v²³³7³#J³n³#³¥³,¿³ì³´ ´&#´J´g´´Š´ ´ª´ ³´½´Ú´á´5û´+1µ]µsµ‡µµ¥µ*»µæµ ¶¶)¶ D¶e¶Gk¶³¶Cö·Œ·5¥·Û·ô·6 ¸ D¸ e¸r¸{¸ —¸¡¸¿¸ŸÞ¸ ÷¸ ¹ ¹ê!¹ º$º 6º$Dº iºwº”ºªºÀºź-ÙºW»_»+s»<Ÿ»!Ü».þ»,-¼Z¼p¼x¼›|¼'½@½]½'l½”½®½˽Ú½ê½ú½ ¾'¾0¾9¾B¾H¾a¾z¾•¾Œ¯¾<¿%B¿h¿Fq¿¸¿7Í¿%Àz+ÀR¦ÀùÀÁRÁqÁÁˆÁM¦ÁôÁÑÃ4ÖÃ2 Ä>Ä RÄ`Ä5oÄ,¥ÄÒıåÄ|—Å{Æ ÆžÆ¯ÆÀÆ,ÖÆÇÇ/ÇDÇZÇpNjǜǥǮÇÌÇÔÇóÇ<øÇ5ÈHÈ PÈ[ÈoÈ ƒÈŽÈ#–È#ºÈÞÈðÈ$É 'É2ÉCÉTÉ lÉ&zÉ¡É!§ÉxÉÉBÊTÊZÊbÊsÊ„Ê˜Ê ¬Ê¹ÊÉÊÞÊGïÊ7ËJË[Ë%kË‘Ë ¦Ë/ÇË÷Ë Ì7ÌFÌ UÌbÌr̨̈ÌÀÌÕÌíÌ ÍÍ/Í"@ÍcÍyÍ‘Í¦Í µÍÃÍÓÍäÍôÍ Î&ÎBÎ^ÎoÎxÎΩÎÁÎÔÎôÎÏÏ?ÏRÏjϤŠÏ'/ÐWÐ uÐГЦÐÀÐÓÐíÐÑfÑlÑ „Ñ ‘ќѳÑÉÑ"äÑ6Ò>Ò8OÒˆÒ ˜Òº£Ò;^ÓššÓ5ÔEÔ$_Ô„Ô”Ô#¬Ô2ÐÔÕ Õ3Õ+HÕtÕÔŒÕ aÖH‚Ö5ËÖ׿Ø8ÅØ:þØ[9Ù{•Ù:Ú$LÚ-qÚ ŸÚ5ÀÚeöÚV\Û)³Û@ÝÛ<ÜJ[Ü,¦Ü(ÓܘüÜ,•Ý(ÂÝ-ëÝ*Þ4DÞ<yÞt¶Þ++ßOWß9§ßiá߇KàXÓà|,áb©áu ââ‚â?eã‹¥ã{1är­ä å&å 7åCæ]æ yæ„æ™æ±æÇæMâæw0çE¨ç)îçè.èIè”bè‡÷èé ‘é2ê7êKê0Tê&…ê¬ê¿êÝê ïê üêëë(-ë,Vë&ƒë&ªëÑë%ïëì#3ìWìoì~ì&‘ì¸ì*Îì3ùì!-íOí!gí%‰í9¯í/éíxî’î²îºî Ôîßîïîÿîï$ï8ïPïfïmï2uï ¨ï µïÀïÞïüïHð=Ið}‡ð6ñ <ñ7Gñ}ñýñ ò ò0ò Iòjò&qò-˜òÆòÝòâòèòîòôòýòó óóóó ó -ó8óGó Xó có mózó‘ó¥óÁóÉó)Ûó|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-08 10:16 Last-Translator: Language-Team: Portuguese Language: pt_PT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: pt-PT X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (modificado) (não guardado)%d ocorrência de código%d ocorrências de código%d entrada%d entradas%d entrada foi pré-traduzida.%d entradas foram pré-traduzidas.%d erro%d errosOcorreu %d erro.Ocorreram %d erros.Ocorreu %d erro:Ocorreram %d erros:Detetado %d problema nas cadeias de origem.Detetados %d problemas nas cadeias de origem.Foi encontrado %d erro na tradução.Foram encontrados %d erros na tradução.%i linha do ficheiro “%s“ não foi carregada corretamente.%i linhas do ficheiro "%s" não foram carregadas corretamente.Formato %sPreferências do %sFormato %s%s tradução foi importada.%s traduções foram importadas.&Acerca&Sobre o Poedit&Aplicar&Recuar&Cancelar&LimparFe&char&Copiar&Apagar&Pronta e avançar&Pronta e avançar&Editar&FicheiroLocali&zar…Manual &GNU gettextManual &GNU gettext&IrA&grupar por contextoA&grupar por contextoAj&uda&Novo&Novo…Segui&nte >Tradução &seguinteTradução &seguinte&Não&OKAjuda na &webAjuda na &web&Abrir...&Abrir…Co&lar&Preferências&Preferências…Tradução &anteriorTradução &anterior&Propriedades…&Remover traduções eliminadas&Remover traduções eliminadas&Sair&RefazerSubstitui&r&GuardarGuardar &comoMostrar ocorrência&s de códigoMostrar ocorrência&s de códigoJanela i&nicialJanela i&nicial&Tradução&DesfazerNão trad&uzidas primeiroNão trad&uzidas primeiroAt&ualizar a partir do código fonteAt&ualizar a partir do código fonte&Validar traduções&Validar traduções&Ver&Sim(Utilizar idioma predefinido)(sessão não iniciada)(requer Windows 8 ou mais recente)< An&teriorAcerca de %sContaContasAdicionarAdicionar comentárioAdicionar ficheiros…Adicionar pastas…Adicionar projetoAdicionar "wildcard"…Adicionar comentárioAdicionar diretório à listaAdicionar ficheiros…Adicionar pastas…Adicionar projetoAdicionar "wildcard"…Palavras-chave adicionaisMarcas xgettext adicionais:AvançadoDefinições avançadas de extração…Definições avançadas de extraçãoDefinições avançadas de extração…Todos os ficheiros de traduçãoTodos os comentáriosTodas as cadeiasUtilizar também palavras-chave para os idiomas suportadosFocar sempre o campo da entrada de textoOcorreu um erro.Um item na lista de ficheiros de entrada:Um item na lista de palavras-chave:AspetoAplicarOcorrências aproximadas na MTTem a certeza de que deseja remover o extrator “%s“?Tem a certeza que pretende reiniciar a memória de traduções?Procurar atualizações automaticamenteCompilar ficheiro MO ao guardarRecuarCaminho base:As versões Beta possuem novas funcionalidades e melhorias mas podem ser instáveis.Trazer para primeiro planoFicheiro PO danificado: usadas formas plurais msgstr sem msgid_pluralFicheiro PO danificado: usada a forma singular msgstr em conjunto com msgid_pluralMarcação danificada na cadeia de tradução.ExplorarExplorar ficheirosPor definição, os resultados imprecisos também são incluídos mas marcados para revisão. Assinale esta opção para apenas incluir ocorrências exatas.CancelarA cancelar…Não foi possível criar o diretório temporário.Não foi possível executar o programa: %sNão foi possível pré-traduzir de um idioma desconhecido.Não é possível pré-traduzir sem texto de origem.CapitalizarGest&or de catálogosGest&or de catálogosGestor de catálogosMudar idioma da aplicaçãoCodificação:Analisar documento agoraVerificar gramática com ortografiaVerificar ortografia ao escreverProcurar atualizações…Procurar erros na traduçãoProcurar atualizações…Verificação ortográficaLimparLimpar menuLimpar traduçãoLimpar menuLimpar traduçãoFecharNuvemOcorrências de códigoOcorrências de códigoColabore online com outras pessoasA obter os ficheiros fonte…Comando para extrair traduções:ComentárioComentário:Comentários prefixados com:Compilar para MO…Compilar para…Ficheiros de tradução compiladosConfigure a extração do código fonte nas propriedades.ConfirmaçãoConecte o Poedit com plataformas de tradução na nuvem suportadas, para sincronizar de forma transparente as traduções aí geridas.CopiarCopiar da forma singularCopiar entrada originalCopiar da forma singularCopiar entrada originalCorrigir ortografia automaticamenteNão foi possível descarregar os detalhes do projeto Localazy.Não foi possível carregar o ficheiro, provavelmente está danificado.Não foi possível guardar o ficheiro %s.Criar novoCriar nova traduçãoCriar nova tradução a partir do modelo POT.Criar novo projeto de traduçõesErro do CrowdinCrowdin é uma plataforma online de gestão de traduções e uma ferramenta de tradução colaborativa. Nós também utilizamos a plataforma Crowdin para traduzir o Poedit e não podíamos estar mais satisfeitos.Cor&tarExtratores personalizados:Extratores personalizados:Personalizar barra de ferramentas…CortarTamanho da base de dados no disco:ApagarApagar da memória de traduçõesRemover extratorApagar da memória de traduçõesRemover projetoEliminar comentárioApagar projetoA remoção do projeto não implica a perda dos ficheiros de tradução.A determinar diferenças…Diretórios:Tem a certeza de que deseja remover o projeto "%s"?Deseja recarregar o ficheiro do disco? As suas edições não guardadas no Poedit serão perdidas se o fizer.Pretende remover todas as traduções que sejam idênticas ao texto fonte?Pretende remover todas as traduções que já não são utilizadas?&Não guardarNão guardarNão mostrar novamenteNão marcar ocorrências exatas como imprecisasNão mostrar novamenteA descarregar traduções mais recentes...Este projeto desativou a descarga de traduções.Arraste pastas ou ficheiros para aquiArraste pastas ou ficheiros para aqui&SairE&xportar para HTML…EditarEditar &comentárioEditar &comentárioEditar comentárioEditar comentárioEditar projetoEditar projetoEdiçãoEditar…E-mail:Entrar no modo de ecrã completoAs entradas deste ficheiro possuem formas plurais que diferem das que estão definidas no cabeçalho Plural-FormsEntradas com erros primeiroEntradas com erros primeiroAs entradas com erros estão marcadas a vermelho. Os detalhes do erro serão mostrados ao selecionar a entrada correspondente.Erro ao abrir ficheiroErro ao guardar o ficheiroErro ao carregar o ficheiro XLIFF: %sErro: ErrosTudoOcorrências exatas na MTCaminhos excluídosExportar para TMX…Exportar como…Exportar para HTML…Exportar para TMX…Exportação para HTMLOcorreu uma falha ao exportar a memória de traduções para “%sâ€.A exportar traduções…Extrair das fontesExtrair notas de tradução em:Extrair texto dos ficheiros fonte nestes diretórios:A extrair cadeias de %s ficheiro…A extrair cadeias de %s ficheiros…Configurar extratorExtratoresFalha ao comunicar com o processo do Poedit.Falha ao extrair as cadeias a partir do código-fonte.Falha ao carregar ficheiro com traduções extraídas.Não foi possível unir os catálogos do gettext.Falha ao atualizar a memória de traduções: %sFicheiroNão é possível abrir o ficheiroO ficheiro “%s“ não existe.O ficheiro "%s" não é um ficheiro de tradução.O ficheiro "%s" é apenas de leitura e não pode ser guardado. Por favor, guarde-o com um nome diferente.LocalizarLocalizar seguinteLocalizar anteriorLocalizar e substituir…Localizar nos comentáriosLocalizar nos textos fonteLocalizar nas traduçõesLocalizar seguinteLocalizar anteriorCorrigir idiomaCorrigir idiomaCorrigir cabeçalhoCorrigir cabeçalhoFicheiros de tradução FlutterForma %iForma %i (não usada)GNU gettextGeralFicheiros HTMLAjudaOcultar barra lateralOcultar barra de estadoOcultar esta mensagem de notificaçãoComo é que funciona a sincronização na nuvem?IDSe continuar, todas as traduções marcadas como apagadas serão removidas permanentemente. Se as entradas forem respostas, terá que as traduzir novamente.Se você negou anteriormente o acesso aos seus ficheiros, pode agora autorizar esse acesso em Preferências do sistema > Segurança e privacidade > Privacidade > Ficheiros e pastas.Se, previamente, lhe foi negado o acesso aos seus ficheiros, pode permiti-lo em Definições do sistema > Privacidade e Segurança > Ficheiros e pastas.IgnorarIgnorar maiúsculas/minúsculasImportar de TMX…Importar ficheiros de tradução…Importar de TMX…Importar ficheiros de tradução…A importar de “%sâ€â€¦Falha ao importar a memória de traduções.A importar traduções…Em: %sIncluir versões betaMaiúsculas/minúsculas inconsistentesEspaço branco inconsistenteInformações do tradutorInstalarFicheiro inválidoInvocação:ProblemaProblemasFicheiros de tradução JSONManterNome ou código do idiomaO idioma de tradução é o mesmo que o idioma fonte.O idioma da tradução não está definido.Idioma da tradução:Seleção de idiomaEquipa de tradução:Idioma:Última modificaçãoSaber mais sobre as palavras-chave gettextSaber mais sobre formas pluraisSaber maisSaber mais acerca de %sSaber mais sobre o CrowdinSaber mais acerca de GNU gettextLinhaA linha %d do ficheiro “%s“ está danificada (dados %s inválidos).Final de linha:Lista de extensões separadas por ponto e vírgula (ex. *.cpp;*.h):Carregar inglêsLocalazy é uma plataforma altamente automatizada que permite facilmente a qualquer um traduzir os seus produtos e/ou conteúdos facilmente.Os ficheiros MO não podem ser editados com o Poedit.Converter em minúsculasConverter em maiúsculasCriar uma nova tradução a partir deste ficheiro POT.Cabeçalho mal formado: “%s“Gerir contasGerir…A incorporar diferenças…MinimizarNome do projeto de traduçãoNome:Seguinte &não terminadaSeguinte &não terminadaPor reverPor reverErro de rede: %s (%d)Não deixar que a lista de cadeias obtenha o foco. Se ativa, tem que usar Control+Teclas do cursor para mudar de linhas com o teclado, mas também pode digitar o texto imediatamente, sem ter que premir a tecla Tab para mudar de campo.NovoNovo a partir de ficheiro &POT/PO…Novas cadeiasNovo a partir de ficheiro &POT/PO…Novas cadeiasNovas cadeias para traduzir:Forma plural seguinteForma plural seguinteNãoNenhuma ocorrênciaNão foi possível pré-traduzir as entradas.O ficheiro não indica informação sobre as ocorrências desta frase no código-fonte.Nenhuma ocorrênciaNão foram encontrados erros na tradução.Não existem projetos de tradução associados à sua conta.Sem informações de utilizaçãoNem todas as formas plurais estão traduzidas.Não autorizado. Inicie novamente a sessão.Notas para tradutoresAceitarUmaApenas deve ativar esta opção se confiar plenamente na MT. Por definição, todas as ocorrências obtidas a partir da MT serão marcadas como imprecisas.Preencher apenas as ocorrências exatasAbrir tradução na nuvem…Abrir recentesAbrir e editar ficheiros de tradução.Abrir tradução na nuvemAbrir tradução na nuvem…Abrir ficheiroAbrir no editorAbrir no editorAbrir recentesAbrir ficheiro de referênciaAbrir...Abrir…OpçõesOutraAn&terior não terminadaAn&terior não terminadaFicheiros de tradução POModelos de tradução POTOs ficheiros POT são apenas modelos e estes não contêm quaisquer traduções. Para traduzir, crie um novo ficheiro PO com base no modelo.ColarColar com a formatação do documentoCaminhosAtualiza todos os ficheiros do projeto tendo por base o código fonte.Permissão recusada.O marcador de posição "%s" não existe na tradução.Correção de marcadores de posiçãoPor favor abra e edite o ficheiro PO correspondente. Quando guardar o ficheiro PO, o ficheiro MO também será atualizado.Por favor guarde o ficheiro. Esta secção não pode ser editada até que o faça.PluraisTraduções plurais de formaA expressão de formas de plural utilizadas pelo ficheiro são invulgares para %s.Formas plurais:PoeditPoedit - Gestor de catálogosO Poedit corrigiu automaticamente o conteúdo inválido do ficheiro “%s“.O Poedit pode tentar preencher as novas entradas a partir das traduções antigas do ficheiro ou a partir da memória de traduções. A memória de traduções será ineficaz se estiver quase vazia, mas à medida que lhe for adicionando as suas traduções irá melhorar.O Poedit não pode mostrar o código-fonte onde a frase é usada, porque o ficheiro ou não está disponível no local referenciado ou é uma referência simbólica que não aponta para um ficheiro verdadeiro.O Poedit é um editor de traduções fácil de usar.O Poedit não conseguiu abrir o ficheiro “%sâ€.Pré-&tradução…Pré-traduzirPré-traduzida%u entrada pré-traduzida%u entradas pré-traduzidasPré-tradução da memória de tradução…A pré-traduzir…A pré-tradução localiza automaticamente as ocorrências exatas ou similares para as cadeias não traduzidas a partir da memória de tradução e preenche as suas traduções.A pré-tradução requer que o texto original esteja disponível. Não funciona se apenas IDs sem o texto real forem usados.A pré-tradução requer que o idioma do texto de origem seja conhecido. O Poedit não conseguiu detetá-lo neste ficheiro.PreferênciasPreferências...Preferências…A preparar cadeias…Manter formatação dos ficheiros existentesForma plural anteriorForma plural anteriorTexto fonte anteriorEditada anteriormenteEditada anteriormenteNome e versão do projeto:Nome do projeto:Projeto:ProjetosVerificações de pontuaçãoRemoverRemover traduções eliminadasSairFalha ao ler o conteúdo do ficheiro com o seguinte erro: %sFicheiros recentesRefazerRecarregarRecarregar ficheiroRecarregar ficheiroFaltam: %dRemoverRemover traduções iguais à fonteRemover traduções iguais à fonteCadeias removidasCadeias removidasCadeias removidas (não utilizadas):SubstituirSubstituir t&udoSubstituir t&udoTexto de substituiçãoSubstituir…O cabeçalho Plural-Forms não existe.ReporReiniciar memória de traduçõesSe reiniciar a memória de traduções, apagará todas as traduções guardadas. Esta operação não pode ser desfeita.Mostrar no FinderReverGuardarGuardar &como…Guardar &como…Guardar mesmo assimGuardar mesmo assimGuardar comoGuardar como…Guardar alteraçõesGuardar ficheiroPara ficheiros XCLOC, não é possível guardar noutras localizações.Capturas de ecrã:Selecion&ar tudoSelecionar tudoSelecione os ficheiros TMX a importarEscolha o diretórioSelecione ficheiro de traduçãoSelecione os ficheiros de tradução a importarSelecione modelo de traduçãoSelecione o seu idioma preferidoDefinir idiomaDefinir idiomaDefiniçõesDefinições…Mostrar barra lateralMostrar ortografia e gramáticaMostrar barra de estadoMostrar &ID da linhaMostrar substituiçõesMostrar barra de ferramentasMostrar avisosMostrar no ExploradorMostrar na PastaMostrar ou ocultar a barra lateralMostrar barra lateralMostrar barra de estadoMostrar &ID da linhaMostrar avisosBarra lateralIniciar sessãoTerminar sessãoIniciar sessãoIniciar sessão em %sInicie sessão na sua contaInicie a sessão na CrowdinInicie sessão na sua contaTerminar sessãoSingularColar/Colar inteligenteTravessões inteligentesLigações inteligentesAspas inteligentesOrdenar pela ordem do &ficheiro&Ordenar por fonteOrdenar por &traduçãoOrdenar pela ordem do &ficheiro&Ordenar por fonteOrdenar por &traduçãoCodificação do código fonte:Os extratores de código fonte são utilizados para localizar as entradas, nos ficheiros fonte, que podem ser traduzidas e extraem-nas para que possam ser editadas.O código fonte não está disponível.Código fonte não encontradoTexto fonteID do texto fonteTexto fonte — %sPalavras-chave das fontesCaminho das fontesPalavras-chave das fontesCaminho das fontesFalaA verificação ortográfica está inativa porque o dicionário para o idioma %s não está instalado.Ortografia e gramáticaIniciar falaParar falaTraduções guardadas:Contexto da frase: %sIdentificador da frase: %sComprimento da frase em caracteresComprimento da frase em caracteres: tradução | fonteTexto a procurarOs projetos Crowdin "String-based" não são suportados.SubstituiçõesSugestõesAs sugestões não estão disponíveis se o idioma de tradução não estiver definido corretamente. Outras funcionalidades, tais como as formas de plural, poderão ser também afetadas.O marcador de posição "%s" não existe no texto original.Ativa o suporte a todas as linguagens de programação reconhecidas pelas ferramentas GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript e mais).SincronizaçãoSincronizar com o CrowdinSincronizar tradução com a CrowdinSincronizaçãoErro de sincronizaçãoFalha ao sincronizar com o Crowdin.Erro de sintaxe no cabeçalho Plural-Forms ("%s").MTFicheiros TMXObter cadeias a traduzir a partir de um modelo POT.Nome da equipa e endereço de e-mail ou URLSubstituição de textoA memória de traduções não contém quaisquer cadeias 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.O ficheiro TMX está danificado.As alterações feitas por outra aplicação serão perdidas se guardar.O ficheiro não pode ser compilado para o formato MO.O ficheiro contém itens duplicados, o que não é permitido em ficheiros PO e que impede a utilização do ficheiro. O Poedit corrigiu este problema, mas você deve rever a traduções dos itens marcados como imprecisos e efetuar as correções necessárias.Não foi possível guardar o ficheiro no formato “%s“, como especificado nas definições da tradução. Este foi guardado no formato UTF-8 e a definição foi alterada em concordância.O ficheiro foi alterado. Deseja guardar as alterações?O ficheiro está num formato não reconhecido pelo Poedit.O ficheiro foi compilado para o formato MO mas é provável que não funcione corretamente.O ficheiro foi guardado com sucesso e o ficheiro MO foi compilado. No entanto, é possível que não funcione corretamente.O ficheiro foi guardado mas o ficheiro MO não foi criado.O ficheiro foi guardado com sucesso.Não foi possível abrir o ficheiro “%sâ€.Não foi possível guardar "%s".O ficheiro “%s" foi alterado por outra aplicação.O texto fonte anterior (antes de uma atualização) a que as traduções inexatas agora correspondem.O método mais fácil para preencher este ficheiro é atualizá-lo de um ficheiro POT:A tradução não começa com um espaço.A tradução termina com uma nova linha, mas o texto fonte não.A tradução termina com um espaço, mas o texto fonte não.A tradução termina com “%sâ€, mas o texto fonte termina com “%sâ€.A tradução não tem uma nova linha no fim.A tradução não tem um espaço no fim.A tradução pode ser utilizada mas %d entrada ainda não está traduzida.A tradução pode ser utilizada mas %d entradas ainda não estão traduzidas.A tradução está pronta para utilização.A tradução deve terminar com “%sâ€.A tradução não deve terminar com “%sâ€.A tradução deve começar como uma frase.A tradução deve começar com uma letra minúscula.A tradução começa com um espaço, mas o texto fonte não.As traduções foram marcadas como imprecisas porque podem não ser exatamente iguais. Deve rever estas traduções.Não existem traduções. Isto é estranho.Ocorreu um problema ao formatar o ficheiro (mas este foi guardado com sucesso).Ocorreu um erro ao carregar as traduções para Localazy.Ocorreram erros ao carregar o ficheiro. Como resultado, alguns dados podem estar em falta ou danificados.Estas definições afetam a formatação interna dos ficheiros PO. Deve ajustar as definições caso necessite de requisitos especiais.Este ficheiro JSON não é um ficheiro de traduções e não pode ser editado no Poedit.Esta ação irá apagar todas as traduções que correspondam, exatamente, ao texto fonte. A ação não pode ser revertida.Este ficheiro tem entradas com formas plurais, mas não tem o cabeçalho Plural-Forms configurado.Este ficheiro utiliza IDs de frase em vez do texto original. Poedit pode carregar textos em inglês do ficheiro "%s".Este é o comando utilizado para iniciar o extrator. %o será substituído pelo nome do ficheiro de destino, %K pela lista de palavras chave, %F pela lista de ficheiros de entrada e %C pelo tipo de codificação (veja abaixo).Esta linha foi encontrada na memória de traduções do Poedit.Isto será anexado à linha de comandos se a codificação do código fonte tiver sido fornecida. %c será substituído pela codificação.Isto será anexado à linha de comandos uma vez para cada ficheiro de entrada. %f será substituído pelo nome do ficheiro.Isto será anexado à linha de comandos uma vez para cada palavra-chave. %k será substituído pela palavra-chave.TotalTransformaçõesAs entradas passíveis de tradução em sistemas Gettext são extraidas diretamente do código-fonte e não podem ser adicionadas manualmente. Desta forma, as cadeias estão sempre atualizadas e precisas. Normalmente, os programadores utilizam os catálogos PO (POT).Traduzir projeto na nuvemTraduzido: %d de %d (%d %%)TraduçãoIdioma da traduçãoMemória de traduçõesTradução por re&verPropriedades da traduçãoO ficheiro de tradução está atualizado e nenhuma alteração foi efetuada.O ficheiro de tradução foi atualizado com %s alteração.O ficheiro de tradução foi atualizado com %s alteraçõesA base de dados da memória de traduções está danificada: %s (%d).Erro na memória de traduções: %s (%d).Tradução por re&verPropriedades da traduçãoSugestões de traduçãoAs sugestões de tradução requerem que o texto de origem esteja disponível. As mesmas não funcionam se apenas IDs sem o texto real forem usadas.As sugestões de tradução requerem que o idioma do texto de origem seja conhecido. O Poedit não conseguiu detetá-lo neste ficheiro.Tradução — %sAs traduções não foram atualizadas a partir do código fonte porque o código não foi encontrado na localização especificada nas propriedades do ficheiro.DuasUTF-8 (recomendado)DesfazerEncontrado conteúdo em falta no ficheiro XCLOC.Ocorreu uma exceção não tratada: %sUnix (recomendado)Erro desconhecido do Crowdin.Erro desconhecidoPor traduzirAtualizarResumo da atualizaçãoAtualizar tudoAtualizar todos os catálogos do projetoAtualizar todos os catálogos deste projeto?Atualizar a partir de ficheiro &POT…Atualizar a partir de ficheiro &POT…Atualizar a partir do códigoAtualizar com base em ficheiro POT...Atualizar a partir do códigoAtualizar a partir do código fonteResumo da atualizaçãoAtualizaçõesFalha ao atualizarAtualização de catálogos do projetoAtualizar traduçõesA atualizar informações do utilizador…Não foi possível carregar as traduções para %s.A carregar traduções para %s…A enviar traduções…Utilizar expressão personalizadaUtilizar tipo de letra personalizada:Utilizar tipo de letra personalizada nos campos de texto:Utilizar regras pré-definidas para este idiomaUtilizar estas palavras-chave (nomes de funções) para reconhecer cadeias passíveis de tradução nos ficheiros fonte:Utilizar memória de traduçãoValidarResultados da validaçãoVersão %sVer detalhes…Ver detalhes…A aguardar autenticação…Aviso: Bem-vindo ao PoeditAo atualizar das fontesSó palavras inteirasJanelaWindowsGostaria de usar o inglês para o texto de origem?Moldar textoQuebra em:Ficheiros de tradução XLIFFCatálogo de tradução XcodeSimTambém pode extrair as cadeias a traduzir diretamente do código fonte:Não pode largar mais do que um ficheiro na janela do Poedit.Não tem permissões para ler ficheiros de código fonte a partir da localização especificada nas propriedades do ficheiro.Tem que reiniciar o Poedit para aplicar a alteração.O seu nomeSe não guardar as alterações, estas serão perdidas.O seu nome e endereço eletrónico só serão utilizados para definir o cabeçalho Last-Translator dos ficheiros GNU gettext.ZeroAmpliaçãoPor revernão apagar ficheiros temporários (depuração)ex.: nplurals=2; plural=(n > 1);erro: preencher com ocorrências do ficheiroir para o item indicado pelo número de linhagerir um URI poedit://Alt+Ctrl+BaixoEnterEsquerdaDireitaShift+CimaaltctrlshiftAcerca de %sOcultar %sOcultar outrosPreferências...Sair de %sServiçosMostrar tudopré-traduzir com a MTidioma desconhecidoversão não suportada (%s)aviso: você@exemplo.com“%s“ não é um ficheiro POT válido.poedit-3.6.3/locales/zh_TW.mo0000644000175100001660000016103515011674352011515 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-°O ’ ’’ 3’$@’ e’r’‰’( ’É’3é’ “'“ 7“A“ ^“i“ {“ †“ ‘“ œ“ §“ ²“ ½“"È“"ë“ ” ” $”2”I” `”k”…” Ÿ” ª” µ”ÔÓ”ç”û” ••• 0• >• L•W•h•|•• ¤•²•Ï• ì• ÷• – – –&–C–`–q– ‚– –˜–²–"Ì–"ï–—#— 4—?—G—\—"k—Ž— ž— ª—´—»—— É—Ö—æ— ù—˜ ˜)˜?˜O˜ b˜o˜…˜˜˜µ˜¼˜Ò˜å˜û˜ ™ ™-(™*V™™$‘™$¶™Û™â™'é™#š!5šWšjšŠš ‘šDŸšäšHúšGC›$‹›°› ·›“Ä›Xœ _œlœˆœ$ œ3Åœ ùœ4G cpƒ™²Âá ñþ ž ž ž ,ž9ž@žGžZžmžŒž¥ž¼ž ÞÍžàž ÷žŸ0ŸNŸ\UŸ²Ÿ¹ŸÒŸâŸûŸ  + *J u Ž •  ¥ Æ Ù ”è  }¡ˆ¡›¡®¡Á¡%È¡î¡õ¡¢!¢ =¢ J¢ W¢3d¢˜¢ ±¢»¢eÙ¢B?£-‚£°£ Á£Σ6Þ£ ¤"¤!A¤c¤‚¤ ¡¤¬¤¤ɤÚ¤ ë¤ ø¤ ¥ ¥¥ &¥0¥F¥\V¥³¥Ï¥fë¥R¦k¦'‡¦ ¯¦¹¦À¦'Ö¦þ¦§ &§3§E§]§'r§š§°§'À§.è§4¨L¨ \¨ f¨*‡¨*²¨!ݨ ÿ¨ ©'©:© Q©Pr©éʩکê©ý©ª#ª6ªFª Vª cª pª }ªŠª œª¦ª ¼ªȪ ϪÛªâªòª««7«“:«~Ϋ–M¬ä¬ë¬­­/­G­]­{­š­°­¹­É­Ü­ ï­ü­ ® ®®!®(®7®>®$T®y®•® ¥®²® ®Ì®ß®þ® ¯!¯1¯F¯_¯<f¯£¯8·¯ ð¯uý¯*s° ž° «°&¸° ß° ± ±± -±7± M±W±t± ‘± ›±¥±Ô¼±‘²˜² ´²¾² Ú²ä²ý²³/³3³-R³?€³À³ß³$û³ ´$3´'X´€´“´š´Ï¡´qµµ¦µµáµôµ ¶¶-¶ C¶P¶ c¶ m¶w¶~¶…¶¢¶ ¿¶̶‡Ý¶e·l·‚·9‰·÷1Ó·¸R¸Hn¸·¸¾¸AѸ ¹ ¹'¹5C¹èy¹‘bº(ôº$»B» V» c»p»$»²»lλx;¼m´¼ "½/½?½O½*b½½¦½¿½Õ½å½õ½¾ ¾(¾ /¾<¾C¾\¾2c¾ –¾ £¾ °¾½¾о㾿$¿$,¿Q¿a¿*q¿œ¿£¿´¿ Å¿ Ò¿&Ü¿À ÀZ À{ÀÀ”À›À¯À ÃÀ ÐÀ ÝÀçÀ ÷À Á.Á@ÁPÁ aÁnÁ ŒÁ™Á¬ÁËÁÞÁ ÷Á  Â%Â5ÂKÂ[Âo‚’¥»ÂÎÂçÂ÷ÂÃà .Ã8Ã?ÃFà MÃZÃpÃÕÜã÷à Çà ÔÃáÃþÃÄ,ÄIÄ`ÄwÄr“ÄÅ%Å8Å?Å OÅ]ÅvŌťŻÅ=ÂÅÆ Æ Æ*Æ>ÆSÆ!hÆ?ŠÆ ÊÆ*ׯ Ç Ç~Ç=›ÇˆÙÇbÈiÈ‚È ›È¥È¸È-ÔÈ É É2É*MÉ xɳ…É9ÊESÊ:™Ê×ÔÊp¬Ë*Ì%HÌCnÌa²ÌUÍj̓͡Í/¿ÍTïÍDDÎ$‰ÎE®ÎEôÎ::Ï'uÏ'Ï=ÅÏÐ Ð#=ÐaÐ$€ÐE¥ÐiëÐ!UÑTwÑ+ÌÑQøÑŽJÒAÙÒQÓDmÓg²Ó¢Ô5½ÔjóÔX^Õ[·ÕÖÖú!Ö×4/×d× k×x×ˆ× œ×E©×1ï×%!Ø"GØjØ ~Ø ‹Øx˜ØmÙ ÙcÙñÙøÙ Ú-ÚHÚfÚzÚ –Ú£ÚªÚ ±Ú ¾Ú!ËÚ*íÚ!Û!:Û\Û{ÛÛ¬Û ÅÛÒÛ ÙÛæÛÜÜ4ÜPÜoÜ…Ü›Ü!·Ü!ÙÜUûÜQÝgÝ nÝ {Ý…Ý›Ý±Ý ÍÝ×Ý!ëÝ Þ#Þ*Þ*2Þ ]ÞjÞzÞŠÞ£Þ6§Þ8ÞÞHß8`ß ™ß6¦ß`Ýß>àBà Ià$Sà"xà ›à!¥àÇàãàøàýà á á á á'á .á8á<áAá Gá Qá [áhá xá‚á ‰á$–á»áËá ãáíáýá|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Chinese Traditional Language: zh_TW MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: zh-TW X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (已修改) (未儲存)%d 個程å¼ç¢¼å‡ºç¾è™•%d 個項目%d 筆原文已完æˆå‰ç½®ç¿»è­¯ã€‚%d 項錯誤發生 %d 個錯誤。發生 %d å€‹éŒ¯èª¤ï¼šåµæ¸¬åˆ°ä¾†æºå­—串有 %d 個å•é¡Œã€‚è­¯æ–‡ä¸­ç™¼ç¾ %d 個å•題。總計 %i 列 (檔案為 %s) 沒有正確載入。%s æ ¼å¼%s å好設定%s æ ¼å¼å·²ç¶“匯入 %s æ¢è­¯æ–‡ã€‚關於(&A)關於 Poedit(&A)套用(&A)返回(&B)å–æ¶ˆ(&C)清除(&C)關閉(&C)複製(&C)刪除(&D)完æˆä¸¦å‰å¾€ä¸‹ä¸€ç­†è­¯æ–‡(&D)完æˆä¸¦å‰å¾€ä¸‹ä¸€ç­†è­¯æ–‡(&D)編輯(&E)檔案(&F)尋找(&F)…GNU gettext 手冊(&G)GNU gettext 手冊(&G)å‰å¾€(&G)便“šä¸Šä¸‹æ–‡åˆ†çµ„(&G)便“šä¸Šä¸‹æ–‡åˆ†çµ„(&G)說明(&H)新增(&N)新增(&N)…下一筆(&N) >下一筆譯文(&N)下一筆譯文(&N)å¦(&N)確定(&O)線上說明(&O)線上說明(&O)開啟(&O)...開啟(&O)…貼上(&P)å好設定(&P)å好設定(&P)…å‰ä¸€ç­†è­¯æ–‡(&P)å‰ä¸€ç­†è­¯æ–‡(&P)屬性(&P)…清除已刪除的譯文(&P)清除已刪除的譯文(&P)離開(&Q)é‡åš(&R)å–代(&R)儲存(&S)å¦å­˜ç‚º(&S)顯示程å¼ç¢¼å‡ºç¾è™•(&S)顯示程å¼ç¢¼å‡ºç¾è™•(&S)啟動視窗(&S)啟動視窗(&S)翻譯(&T)復原(&U)未翻譯項目優先(&U)未翻譯項目優先(&U)從原始程å¼ç¢¼é€²è¡Œæ›´æ–°(&U)從原始程å¼ç¢¼é€²è¡Œæ›´æ–°(&U)驗證譯文(&V)驗證譯文(&V)檢視(&V)是(&Y)(使用é è¨­èªžè¨€)(尚未登入)(éœ€è¦ Windows 8 或更新版本)< å‰ä¸€ç­†(&P)<未命å>關於 %s帳戶帳號加入新增註解加入檔案…加入資料夾…新增專案加入è¬ç”¨å­—元…新增註解將目錄加入清單加入檔案…加入資料夾…新增專案加入è¬ç”¨å­—元…é¡å¤–的關éµå­—é¡å¤–çš„ xgettext 旗標:進階進階擷å–設定…進階擷å–設定進階擷å–è¨­å®šâ€¦å…¨éƒ¨è­¯æ–‡æª”æ¡ˆå…¨éƒ¨è¨»è§£æ‰€æœ‰å­—ä¸²åŒæ™‚為支æ´çš„語言使用é è¨­é—œéµå­—æ°¸é å°‡ç„¦é»žæ”¾åœ¨æ–‡å­—輸入欄ä½ä¸­ç™¼ç”ŸéŒ¯èª¤ã€‚輸入檔清單中的一個項目:關éµå­—清單中的一個項目:外觀套用來自譯文記憶的大致符åˆé …目確定è¦åˆªé™¤ã€Œ%sã€æ“·å–器?確定è¦é‡è¨­è­¯æ–‡è¨˜æ†¶åº«ï¼Ÿè‡ªå‹•檢查更新儲存時自動編譯 MO 檔案返回基底路徑:Beta ç‰ˆæœ¬åŒ…å«æœ€æ–°åŠŸèƒ½å’Œæ”¹é€²ï¼Œä½†å¯èƒ½æœ‰é»žä¸ç©©å®šã€‚å…¨éƒ¨å¸¶åˆ°æœ€å‰æ–¹ææ¯€çš„ PO 檔:沒有 msgid_plural,å»ä½¿ç”¨è¤‡æ•¸å½¢å¼çš„ msgstrææ¯€çš„ PO 檔:單數形å¼çš„ msgstr è·Ÿ msgid_plural 一åŒä½¿ç”¨ç¿»è­¯å­—串中有æå£žçš„æ¨™è¨˜ã€‚ç€è¦½ç€è¦½æª”案é è¨­æƒ…æ³ä¸‹ï¼Œä¸ç²¾ç¢ºçš„項目也會包å«åœ¨å…§ï¼Œä½†æœƒå°‡ä¹‹æ¨™è¨˜ç‚ºéœ€è¦è™•ç†ã€‚勾鏿­¤é¸é …以僅åªç´å…¥å®Œç¾Žç¬¦åˆçš„é …ç›®ã€‚å–æ¶ˆå–消中...無法建立暫存目錄。無法執行程å¼ï¼š%s無法å‰ç½®æœªçŸ¥èªžè¨€çš„ç¿»è­¯ã€‚ç„¡æ³•åœ¨æ²’æœ‰ä¾†æºæ–‡å­—時進行é å…ˆç¿»è­¯ã€‚轉為大寫編目檔管ç†å“¡(&M)編目檔管ç†å“¡(&M)編目檔管ç†å“¡è®Šæ›´ä½¿ç”¨è€…介é¢èªžè¨€å­—å…ƒé›†ï¼šç«‹åˆ»æª¢æŸ¥æ–‡ä»¶æª¢æŸ¥æ–‡æ³•èˆ‡æ‹¼å­—æ‰“å­—åŒæ™‚æª¢æŸ¥æ‹¼å­—æª¢æŸ¥æ›´æ–°â€¦æª¢æŸ¥è­¯æ–‡ä¸­æ˜¯å¦æœ‰éŒ¯èª¤æª¢æŸ¥æ›´æ–°â€¦æ‹¼å­—檢查清除清除é¸å–®æ¸…除譯文清除é¸å–®æ¸…除譯文關閉雲端程å¼ç¢¼å‡ºç¾è™•程å¼ç¢¼å‡ºç¾è™•與其他人在線上å”ä½œã€‚æ­£åœ¨æ”¶é›†ä¾†æºæª”...æ“·å–譯文的命令:註解註解:註解å‰ç½®è©žï¼šç·¨è­¯æˆ MO 檔案…編譯æˆâ€¦å·²ç·¨è­¯çš„譯文檔案在「屬性ã€ä¸­è¨­å®šåŽŸå§‹ç¢¼æŠ½å‡ºé …ç›®ã€‚ç¢ºèªå°‡ Poedit 和支æ´çš„雲端在地化平å°é€£ç·šï¼Œç„¡ç¸«åŒæ­¥ä»£ç®¡å¹³å°ä¸Šçš„翻譯。複製從單數型內容複製從原文複製從單數型內容複製從原文複製自動校正拼字無法下載 Localazy 專案詳細資訊。無法載入檔案,檔案å¯èƒ½æå£žã€‚無法儲存檔案 %s。新增建立新譯文從 POT 模æ¿å»ºç«‹æ–°ç¿»è­¯ã€‚建立譯文專案Crowdin 錯誤Crowdin 是一個線上翻譯管ç†å¹³å°å’Œå”作翻譯工具。我們自己也使用 Crowdin å°‡ Poedit 翻譯æˆå¤šç¨®èªžè¨€ï¼Œä¹Ÿå¾ˆå–œæ­¡å®ƒã€‚剪下(&T)自訂擷å–器:自訂擷å–器:自訂工具列…剪下譯文記憶庫使用的儲存空間:刪除從譯文記憶庫中刪除刪除擷å–器從譯文記憶庫中刪除刪除專案刪除註解刪除專案「刪除專案ã€ä¸æœƒåˆªé™¤å…¶ä»–翻譯檔案。正在比å°å·®ç•°â€¦â€¦ç›®éŒ„:是å¦åˆªé™¤ã€Œ%sã€å°ˆæ¡ˆï¼Ÿæ˜¯å¦å¾žç¡¬ç¢Ÿé‡æ–°è¼‰å…¥æª”æ¡ˆï¼Ÿé€™éº¼åšæœƒå°Žè‡´æ‚¨åœ¨ Poedit 的未儲存編輯消失ä¸è¦‹ã€‚è«‹å•æ‚¨æ˜¯å¦æƒ³è¦ç§»é™¤æ‰€æœ‰å’Œä¾†æºæ–‡å­—相åŒçš„譯文?確定è¦ç§»é™¤å…¨éƒ¨ä¸å†ä½¿ç”¨çš„譯文?ä¸è¦å„²å­˜(&N)ä¸è¦å„²å­˜ä¸è¦å†é¡¯ç¤ºä¸è¦å°‡å®Œå…¨ç›¸ç¬¦çš„譯文標示為「待校閱ã€ä¸å†é¡¯ç¤ºæ­£åœ¨ä¸‹è¼‰æœ€æ–°çš„翻譯⋯此專案已åœç”¨ç¿»è­¯ä¸‹è¼‰ã€‚æ‹–æ›³è³‡æ–™å¤¾æˆ–æª”æ¡ˆè‡³æ­¤æ‹–æ›³è³‡æ–™å¤¾æˆ–æª”æ¡ˆè‡³æ­¤çµæŸ(&X)匯出為 HTML(&X)…編輯編輯註解(&C)編輯註解(&C)編輯註解編輯註解編輯專案編輯專案編輯編輯…電å­éƒµä»¶åœ°å€ï¼šé€²å…¥å…¨èž¢å¹•這個檔案中æ¢ç›®çš„è¤‡æ•¸å½¢å¼æ•¸ç›®ï¼Œèˆ‡æª”案中 Plural-Forms 標頭的記錄ä¸ç¬¦åŒ…å«éŒ¯èª¤çš„項目優先包å«éŒ¯èª¤çš„項目優先出錯的項目在清單中以紅色標記。您å¯ä»¥é»žé¸è©²é …目以顯示詳細的錯誤資訊。開啟檔案發生錯誤儲存檔案時發生錯誤載入 XLIFF 檔案時發生錯誤:%s錯誤:錯誤單複數åˆä½µè­¯æ–‡ä¾†è‡ªè­¯æ–‡è¨˜æ†¶çš„完全符åˆé …ç›®æŽ’é™¤çš„è·¯å¾‘åŒ¯å‡ºæˆ TMX 檔案…匯出æˆâ€¦åŒ¯å‡ºç‚º HTMLâ€¦åŒ¯å‡ºæˆ TMX 檔案…正在匯出為 HTML無法將譯文記憶庫匯出至 %sã€‚æ­£åœ¨åŒ¯å‡ºè­¯æ–‡â€¦å¾žä¾†æºæ›´æ–°ã€Œè­¯è€…注æ„äº‹é …ã€æ“·å–來æºï¼šæ“·å–ä¸‹åˆ—ç›®éŒ„ä¸­çš„åŽŸå§‹ç¨‹å¼æª”文字:正在從 %s 個檔案中擷å–å¯ç¿»è­¯å­—串……擷å–器設定擷å–器無法與 Poedit ç¨‹åºæºé€šã€‚無法從原始程å¼ç¢¼ä¸­æ“·å–å­—ä¸²ã€‚ç„¡æ³•è¼‰å…¥åŒ…å«æ“·å–翻譯的檔案。無法åˆä½µ gettext 編目檔。無法更新譯文記憶庫:%s檔案無法開啟檔案檔案 %s ä¸å­˜åœ¨ã€‚「%sã€æª”æ¡ˆä¸æ˜¯ç¿»è­¯æª”。檔案 %s 因設定為唯讀而無法儲存。 請以ä¸åŒæª”å儲存檔案。尋找尋找下一筆尋找上一筆尋找åŠå–代…在註解中尋找在原文中尋找在譯文中尋找尋找下一筆尋找上一筆修正語言修正語言修正標頭修正標頭Flutter ç¿»è­¯æª”å½¢å¼ %iå½¢å¼ %i (未使用)GNU gettext一般HTML 檔案說明隱è—å´é‚Šæ¬„éš±è—狀態列隱è—這項通知訊æ¯é›²ç«¯åŒæ­¥å¦‚何é‹ä½œï¼ŸID如果繼續清除,全部標示為已刪除的譯文便會永久移除。如果未來這些訊æ¯å†æ¬¡åŠ å…¥ï¼Œå°±å¿…é ˆå†é‡æ–°ç¿»è­¯ä¸€æ¬¡ã€‚è‹¥æ‚¨å…ˆå‰æ‹’絕檔案存å–,å¯ä»¥åˆ°ç³»çµ±å好設定 > å®‰å…¨æ€§èˆ‡éš±ç§æ¬Š > éš±ç§æ¬Š > æª”æ¡ˆèˆ‡è³‡æ–™å¤¾æ”¾è¡Œã€‚è‹¥æ‚¨å…ˆå‰æ‹’絕檔案存å–,å¯ä¾å¾ªã€Œç³»çµ±è¨­å®šã€ >「 éš±ç§æ¬Šèˆ‡å®‰å…¨æ€§ã€ > ã€Œéš±ç§æ¬Šã€ > 「檔案與檔案夾ã€è®Šæ›´æ”¾è¡Œã€‚忽略忽略字æ¯å¤§å°å¯«å¾ž TMX 檔案匯入…匯入譯文檔案…從 TMX 檔案匯入…匯入譯文檔案…正在從「%sã€åŒ¯å…¥â€¦â€¦ç„¡æ³•匯入譯文記憶庫。正在匯入譯文…在:%såŒ…å« Beta 版大å°å¯«ä¸ä¸€è‡´ç©ºç™½æ•¸ä¸ä¸€è‡´è­¯è€…è³‡è¨Šå®‰è£æª”案無效喚起:å•題å•題JSON 翻譯檔ä¿ç•™èªžè¨€å稱或代碼目標語言與來æºèªžè¨€ç›¸åŒã€‚å°šæœªè¨­å®šç›®æ¨™èªžè¨€ã€‚è­¯æ–‡èªžè¨€ï¼šèªžè¨€é¸æ“‡èªžè¨€åœ˜éšŠï¼šèªžè¨€ï¼šä¸Šæ¬¡ä¿®æ”¹æ™‚間深入瞭解 gettext é—œéµå­—深入瞭解複數型深入瞭解深入瞭解 %s深入瞭解 Crowdin深入瞭解 GNU gettext橫列第 %d 列 (檔案為 %s) 已毀æ (無效的 %s 資料)ã€‚è¡Œå°¾çµæŸç¬¦è™Ÿ:è«‹ä»¥åˆ†è™Ÿéš”é–‹å‰¯æª”åæ¸…å–® (例如 *.cpp; *.h):載入英文Localazy 是一個高度自動化的在地化平å°ï¼Œå¯è®“任何人輕鬆將產å“和內容翻譯æˆå¤šç¨®èªžè¨€ã€‚無法在 Poedit 中直接編輯 MO 檔。轉為å°å¯«è½‰ç‚ºå¤§å¯«å¾žé€™å€‹ POT 檔案建立新翻譯。格å¼éŒ¯èª¤çš„æª”案標頭:%s管ç†å¸³æˆ¶ç®¡ç†â€¦æ­£åœ¨åˆä½µå·®ç•°â€¦æœ€å°åŒ–本地化專案å稱姓å:下一筆未完æˆè­¯æ–‡(&X)下一筆未完æˆè­¯æ–‡(&X)待校閱待校閱網路錯誤:%s (%d)æ°¸é ä¸è¦è®“字串清單å–得焦點。如果您啟用這個é¸é …,就得並用 Ctrl éµèˆ‡æ–¹å‘鵿‰èƒ½ä»¥éµç›¤å°Žè¦½ï¼Œä¸éŽåŒæ™‚您能立å³è¼¸å…¥æ–‡å­—,而ä¸å¿…先按 Tab éµè®Šæ›´è¼¸å…¥ç„¦é»žã€‚新增從 &POT/PO 檔案新增…新字串從 &POT/PO 檔案新增…新字串è¦ç¿»è­¯çš„æ–°å­—ä¸²ï¼šä¸‹ä¸€ç­†è¤‡æ•¸åž‹è­¯æ–‡ä¸‹ä¸€ç­†è¤‡æ•¸åž‹è­¯æ–‡å¦æ‰¾ä¸åˆ°ç¬¦åˆæ¢ä»¶çš„項目沒有任何原文å¯ä»¥å®Œæˆå‰ç½®ç¿»è­¯ã€‚檔案中沒有這個字串在原始碼中的出ç¾è™•資料。找ä¸åˆ°ç¬¦åˆæ¢ä»¶çš„項目找ä¸åˆ°è­¯æ–‡çš„å•題。您的帳戶中尚無翻譯專案。沒有用é‡è³‡è¨Šè¤‡æ•¸åž‹å…§å®¹ä¸¦æœªå…¨éƒ¨ç¿»è­¯ã€‚尚未ç²å¾—æŽˆæ¬Šï¼Œè«‹é‡æ–°ç™»å…¥ã€‚çµ¦è­¯è€…çš„å‚™è¨»ç¢ºå®šå–®æ•¸åªæœ‰åœ¨ä¿¡ä»»è­¯æ–‡è¨˜æ†¶çš„å“質時æ‰å•Ÿç”¨é€™é …設定。ä¾ç…§é è¨­ï¼Œèˆ‡è­¯æ–‡è¨˜æ†¶æ¯”å°å¾Œï¼Œå®Œå…¨ç›¸ç¬¦çš„項目代入的譯文都會標記為「待校閱ã€ï¼Œä¸¦è«‹åœ¨æŽ¡ç”¨å‰å…ˆè¡Œæ ¡é–±ã€‚僅代入完全相符的譯文開啟雲端翻譯…開啟最近使用的檔案開啟åŠç·¨è¼¯ç¿»è­¯æª”案。開啟雲端翻譯開啟雲端翻譯…開啟檔案在編輯器中開啟在編輯器中開啟開啟最近開啟åƒç…§æª”案開啟...開啟…é¸é …å…¶ä»–å‰ä¸€ç­†æœªå®Œæˆè­¯æ–‡(&R)å‰ä¸€ç­†æœªå®Œæˆè­¯æ–‡(&R)PO 翻譯檔POT 譯文模本POT 檔案僅是譯文範本,檔案內ä¸åŒ…å«ä»»ä½•譯文。 è‹¥è¦é€²è¡Œç¿»è­¯ï¼Œè«‹ä»¥é€™å€‹ç¯„本建立新的 PO è­¯æ–‡æª”æ¡ˆã€‚è²¼ä¸Šè²¼ä¸Šä¸¦æ¯”å°æ¨£å¼è·¯å¾‘自來æºç¢¼é€²è¡Œæ‰€æœ‰å°ˆæ¡ˆä¸­çš„æª”案的字串更新權é™ä¸è¶³ã€‚é ç•™ä½ç½® “%s†並未出ç¾åœ¨ç¿»è­¯ä¸­ã€‚é ç•™ä½ç½®æº–ç¢ºæ€§è«‹æ”¹é–‹å•Ÿä¸¦ç·¨è¼¯å°æ‡‰çš„ PO 檔。當您儲存時,MO æª”æœƒåŒæ™‚æ›´æ–°ã€‚è«‹å…ˆå„²å­˜æª”æ¡ˆã€‚å„²å­˜å®Œç•¢å¾Œï¼Œé€™å€‹å€æ®µæ‰èƒ½é€²è¡Œç·¨è¼¯ã€‚複數複數形å¼ç¿»è­¯æª”案所採用的複數形å¼è¡¨è¿°å¼ï¼Œå°%s來說ä¸å¸¸è¦‹ã€‚複數型:PoeditPoedit - 編目檔管ç†å“¡Poedit 已自動修正 %s 檔案中無效的內容。Poedit 會嘗試將舊版檔案中的譯文或譯文記憶中的譯文代入新項目中。如果譯文記憶中累ç©çš„譯文é‡å¾ˆå°‘ï¼Œé€™é …åŠŸèƒ½çš„æ•ˆæžœå°±ä¸æœƒå¾ˆå¥½ï¼Œä½†æ˜¯æœƒéš¨è‘—譯文é‡çš„å¢žåŠ é€æ¼¸æ”¹å–„效果。Poedit 無法顯示使用這個字串的原始碼,因為檔案無法從åƒè€ƒä½ç½®å–得,或是一個未指å‘真實檔案的符號åƒè€ƒã€‚Poedit 是個易用的翻譯編輯器。Poedit 無法開啟「%sã€æª”案。å‰ç½®ç¿»è­¯(&T)…å‰ç½®ç¿»è­¯å‰ç½®ç¿»è­¯å·²å‰ç½®ç¿»è­¯ %u 筆字串從翻譯記憶體å‰ç½®ç¿»è­¯ä¸­...正在進行å‰ç½®ç¿»è­¯â€¦å‰ç½®ç¿»è­¯æœƒå¾žè­¯æ–‡è¨˜æ†¶åº«ä¸­è‡ªå‹•å°‹æ‰¾å®Œå…¨ç›¸åŒæˆ–相似的譯文代入未翻譯的項目中。é å…ˆç¿»è­¯éœ€è¦å¯ä¾›ä½¿ç”¨çš„ä¾†æºæ–‡å­—。如果僅使用沒有實際文字的 ID,é å…ˆç¿»è­¯å°‡ç„¡æ³•é‹ä½œã€‚需è¦å…ˆçŸ¥é“ä¾†æºæ–‡å­—的語言,æ‰èƒ½é€²è¡Œå‰ç½®ç¿»è­¯ã€‚Poedit ç„¡æ³•å¾žé€™å€‹æª”æ¡ˆåµæ¸¬èªžè¨€ã€‚å好設定設定å好...å好設定…準備字串中...ä¿ç•™ç¾æœ‰æª”案的格å¼åŒ–è™•ç†æ–¹å¼å‰ä¸€ç­†è¤‡æ•¸åž‹è­¯æ–‡å‰ä¸€ç­†è¤‡æ•¸åž‹è­¯æ–‡éŽåŽ»çš„ä¾†æºæ–‡å­—å…ˆå‰ç·¨è¼¯éŽå…ˆå‰ç·¨è¼¯éŽå°ˆæ¡ˆå稱åŠç‰ˆæœ¬ï¼šå°ˆæ¡ˆåç¨±ï¼šå°ˆæ¡ˆï¼šå°ˆæ¡ˆæ¨™é»žæª¢æŸ¥æ¸…é™¤æ¸…é™¤å·²åˆªé™¤çš„è­¯æ–‡é€€å‡ºè®€å–æª”案內容時發生錯誤,錯誤為:%sæœ€è¿‘æª”æ¡ˆå†æ¬¡å‹•ä½œé‡æ–°æ•´ç†é‡æ–°è¼‰å…¥æª”æ¡ˆé‡æ–°è¼‰å…¥æª”案尚餘 %d ç­†åŽŸæ–‡æœªç¿»è­¯ç§»é™¤ç§»é™¤å’Œä¾†æºæ–‡å­—相åŒçš„ç¿»è­¯ç§»é™¤å’Œä¾†æºæ–‡å­—相åŒçš„翻譯移除的字串移除的字串已經移除的字串(ä¸å†ä½¿ç”¨ï¼‰ï¼šå–代全部å–代(&A)全部å–代(&A)å–代字串å–代…éºå¤±å¿…è¦çš„ Plural-Forms 標頭。é‡è¨­é‡è¨­è­¯æ–‡è¨˜æ†¶åº«é‡è¨­è­¯æ–‡è¨˜æ†¶åº«å°‡æ°¸ä¹…刪除全部已儲存的譯文。這項æ“作無法復原。在 Finder 顯示校閱儲存å¦å­˜æ–°æª”(&A)…å¦å­˜æ–°æª”(&A)…ä»è¦å„²å­˜ä»è¦å„²å­˜å¦å­˜ç‚ºå¦å­˜æ–°æª”â€¦å„²å­˜è®Šæ›´å„²å­˜æª”æ¡ˆä¸æ”¯æ´å°‡ XCLOC 檔案存在ä¸åŒä½ç½®ã€‚螢幕截圖:é¸å–全部(&A)é¸å–全部é¸å–è¦åŒ¯å…¥çš„ TMX 檔案é¸å–ç›®éŒ„é¸æ“‡ç¿»è­¯æª”案é¸å–è¦åŒ¯å…¥çš„è­¯æ–‡æª”æ¡ˆé¸æ“‡ç¿»è­¯æ¨¡æ¿é¸å–您å好的語言設定語言設定語言設定系統設定顯示å´é‚Šæ¬„顯示拼字與文法顯示狀態列顯示字串 ID(&I)顯示替æ›é …目顯示工具列顯示警告訊æ¯åœ¨æª”案總管顯示在資料夾顯示顯示或隱è—å´é‚Šæ¬„顯示å´é‚Šæ¬„顯示狀態列顯示字串 ID(&I)顯示警告訊æ¯å´é‚Šæ¬„登入登出登入登入至 %s登入至雲端帳戶登入 Crowdin登入至雲端帳戶登出單數智慧複製/è²¼ä¸Šæ™ºæ…§ç ´æŠ˜è™Ÿæ™ºæ…§é€£çµæ™ºæ…§å¼•è™Ÿä¾æ“šæª”æ¡ˆé †åºæŽ’åº(&F)便“šåŽŸæ–‡æŽ’åº(&S)便“šè­¯æ–‡æŽ’åº(&T)便“šæª”æ¡ˆé †åºæŽ’åº(&F)便“šåŽŸæ–‡æŽ’åº(&S)便“šè­¯æ–‡æŽ’åº(&T)原始程å¼ç¢¼å­—元集:原始程å¼ç¢¼æ“·å–器用於尋找原始程å¼ç¢¼ä¸­çš„å¯ç¿»è­¯å­—串,並將之擷å–出來進行本地化。原始程å¼ç¢¼ç„¡æ³•使用。找ä¸åˆ°åŽŸå§‹ç¢¼åŽŸæ–‡ä¾†æºæ–‡å­— ID原文 — %s原始程å¼ç¢¼é—œéµå­—原始程å¼ç¢¼è·¯å¾‘原始程å¼ç¢¼é—œéµå­—原始程å¼ç¢¼è·¯å¾‘æœ—è®€ç”±æ–¼å°šæœªå®‰è£ %s 字典,因此拼字檢查已åœç”¨ã€‚æ‹¼å­—èˆ‡æ–‡æ³•é–‹å§‹æœ—è®€åœæ­¢æœ—讀已儲存的譯文:字串上下文:%s字串識別碼:%s以字元數表示的字串長度以字元數表示的字串長度:翻譯字串 | 來æºå­—ä¸²å°‹æ‰¾å­—ä¸²ä¸æ”¯æ´å­—串基底的 Crowdin 專案。替æ›é …目譯文建議如果沒有正確設定目標語言,便無法使用建議譯文;其他功能如複數型設定,也å¯èƒ½å—到影響。多餘的é ç•™ä½ç½® “%s†並未出ç¾åœ¨åŽŸå§‹æœ¬æ–‡ã€‚æ”¯æ´å…¨éƒ¨ GNU gettext 工具能辨識的程å¼èªžè¨€ï¼ŒåŒ…å« PHPã€C/C++ã€C#ã€Perlã€Pythonã€Javaã€JavaScript 等程å¼èªžè¨€ã€‚åŒæ­¥èˆ‡ Crowdin é€²è¡ŒåŒæ­¥èˆ‡ Crowdin åŒæ­¥è­¯æ–‡åŒæ­¥ä¸­åŒæ­¥ç™¼ç”ŸéŒ¯èª¤èˆ‡ Crowdin åŒæ­¥å¤±æ•—。Plural-Forms 標頭中有語法錯誤 (%s)。譯文記憶TMX 檔案從既有的 POT æ¨¡æ¿æª”æ‹¿å–å¯ç¿»è­¯å­—串。團隊å稱和電å­éƒµä»¶ä½å€æˆ–ç¶²å€æ–‡å­—å–代譯文記憶並未包å«ä»»ä½•與這個檔案內容類似的字串。這項功能在 Poedit å„²å­˜ä½¿ç”¨è€…å¤ å¤šçš„æ‰‹å‹•ç¿»è­¯çµæžœå¾Œï¼Œå°åŠè‡ªå‹•ç¿»è­¯æ‰æœƒç”¢ç”Ÿæ•ˆæžœã€‚TMX 檔案格å¼éŒ¯èª¤ã€‚å¦‚æžœå„²å­˜ï¼Œå…¶ä»–æ‡‰ç”¨ç¨‹å¼æ‰€åšçš„變更就會消失ä¸è¦‹ã€‚ç„¡æ³•ç·¨è­¯æˆ MO æ ¼å¼çš„æª”案,所以無法使用。檔案包å«é‡è¤‡é …目,然而 PO 檔並ä¸å…許é‡è¤‡ï¼Œé€²è€Œä½¿æª”案無法使用。Poedit 已修正這個å•題,但您應該校閱任何標記為需è¦è™•ç†çš„項目,如有需è¦ä¹Ÿè«‹æ ¡æ­£å…¶å…§å®¹ã€‚檔案ä¸èƒ½å­˜æˆç¿»è­¯è¨­å®šæ‰€æŒ‡å®šçš„「%sã€å­—元集。 å·²æ”¹å­˜æˆ UTF-8ï¼Œäº¦å·²ä¿®æ”¹å°æ‡‰è¨­å®šã€‚檔案已經修改。是å¦å„²å­˜è®Šæ›´ï¼ŸPoedit ä¸èªè­˜é€™å€‹æª”案格å¼ã€‚å·²ç·¨è­¯æˆ MO æ ¼å¼çš„æª”案,但有å¯èƒ½ç„¡æ³•正確é‹ä½œã€‚檔案已順利儲存,且æˆåŠŸç·¨è­¯ç‚º MO æ ¼å¼çš„æª”案,但有å¯èƒ½ç„¡æ³•正確é‹ä½œã€‚æª”æ¡ˆå·²é †åˆ©å„²å­˜ï¼Œä½†ç„¡æ³•ç·¨è­¯æˆ MO æ ¼å¼çš„æª”案,所以無法使用。檔案已順利儲存。無法開啟檔案「%sã€ã€‚無法儲存「%sã€æª”案。「%sã€æª”案已被其他應用程å¼ä¿®æ”¹ã€‚ç¾åœ¨çš„ä¸ç²¾ç¢ºè­¯æ–‡å°æ‡‰çš„æ˜¯ï¼ˆåœ¨ç”¨æ¨¡æ¿æª”更新之å‰ï¼‰èˆŠçš„æºæ–‡ã€‚å¡«å……ç¿»è­¯è‡³æª”æ¡ˆçš„æœ€ç°¡æ˜“è§£æ³•ï¼Œå°±æ˜¯å¾ž POT 檔更新:譯文應該以空白字元開始。譯文以新行字元çµå°¾ï¼Œä½†åŽŸæ–‡ä¸¦æœªä»¥æ–°è¡Œå­—å…ƒçµå°¾ã€‚譯文以空白字元çµå°¾ï¼Œä½†åŽŸæ–‡ä¸¦æœªä»¥ç©ºç™½å­—å…ƒçµå°¾ã€‚譯文以「%sã€çµå°¾ï¼Œä½†åŽŸæ–‡æ˜¯ä»¥ã€Œ%sã€çµå°¾ã€‚è­¯æ–‡çµæŸä½ç½®éºæ¼æ–°è¡Œå­—å…ƒã€‚è­¯æ–‡çµæŸä½ç½®éºæ¼ç©ºç™½å­—å…ƒã€‚è­¯æ–‡å·²æº–å‚™å°±ç·’ï¼Œä½†ä»æœ‰ %d 個項目尚未翻譯。譯文已準備就緒。譯文應該以「%sã€çµæŸã€‚è­¯æ–‡ä¸æ‡‰è©²ä»¥ã€Œ%sã€çµæŸã€‚譯文應該以å¥å­é–‹å§‹ã€‚譯文應該以å°å¯«å­—元開始。譯文以空白字元開始,但原文並未以空白字元開始。這些譯文已標示為「待校閱ã€ï¼Œå¯èƒ½ç¿»è­¯å°šæœªæ˜Žç¢ºã€‚ä½ æ‡‰è©²æ ¡é–±å®ƒå€‘æ˜¯å¦æ­£ç¢ºã€‚沒有譯文。這並ä¸å°‹å¸¸ã€‚試圖讓檔案的排版格å¼è®Šå¾—整齊時é­é‡å•題 (但ä»èˆŠé †åˆ©å„²å­˜)。上傳翻譯至 Localazy 時發生錯誤。載入檔案時發生錯誤,因此å¯èƒ½å°Žè‡´éƒ¨åˆ†è³‡æ–™éºå¤±æˆ–æ˜¯ææ¯€ã€‚這些設定會影響 PO 檔案的內部格å¼åŒ–è™•ç†æ–¹å¼ã€‚如果有特定需求æ‰éœ€è¦èª¿æ•´å®ƒå€‘,例如需è¦é€²è¡Œç‰ˆæœ¬æŽ§åˆ¶ã€‚本 JSON æª”æ¡ˆä¸æ˜¯ç¿»è­¯æª”案,故無法在 Poedit ç·¨è¼¯ã€‚é€™å€‹å‹•ä½œæœƒåˆªé™¤æ‰€æœ‰å’Œä¾†æºæ–‡å­—完全相åŒçš„譯文,ä¸èƒ½å–消。這個檔案有複數型æ¢ç›®ï¼Œå»æœªè¨­å®š Plural-Forms 標頭。此檔案使用字串 ID 而éžä¾†æºæ–‡å­—。Poedit å¯ä»¥ç‚ºæ‚¨å¾žã€Œ%sã€æª”案載入英文文字。這是用來啟動抽å–器的指令。 %o 會展開æˆè¼¸å‡ºæª”çš„å稱,%K 是 é—œéµå­—清單,%F 是輸入檔清單, %C 是字集旗標 (åƒé–±ä¸‹æ–¹)。這個字串已儲存於 Poedit çš„è­¯æ–‡è¨˜æ†¶åº«ã€‚åªæœ‰åœ¨çµ¦å®šåŽŸå§‹ç¢¼å­—é›†æ™‚ï¼Œé€™å€‹å…§å®¹ æ‰æœƒé™„到命令列中。%c 會展開æˆå­—集的值。這個內容會按照æ¯å€‹è¼¸å…¥æª”逿¬¡ 附到命令列中。%f æœƒå±•é–‹æˆæª”å。這個內容會按照æ¯å€‹é—œéµå­—逿¬¡ 附到命令列中。%k 會展開æˆé—œéµå­—。總計轉æ›åœ¨ Gettext 系統中,å¯ç¿»è­¯é …ç›®ä¸¦éžæ‰‹å‹•新增,而是自動從原始程å¼ç¢¼ä¸­æ“·å–。如此一來,這些項目æ‰èƒ½ä¿æŒæœ€æ–°ç‹€æ…‹å’Œæº–確性。翻譯人員通常會使用開發人員為其準備的 PO 範本檔案(POT)。翻譯雲端專案已翻譯 %d 筆,總計 %d ç­† (完æˆåº¦ç‚º %d%%)譯文譯文語言譯文記憶庫譯文待校閱(&W)譯文屬性翻譯檔案已經是最新狀態,因此未å°å­—串進行更動。翻譯檔已經更新,共進行 %s é …æ›´å‹•ã€‚è­¯æ–‡è¨˜æ†¶åº«å·²ææ¯€ï¼š%s (%d)。譯文記憶庫錯誤:%s (%d)。譯文待校閱(&W)譯文屬性翻譯建議翻譯建議需è¦å¯ä¾›ä½¿ç”¨çš„ä¾†æºæ–‡å­—。如果僅使用沒有實際文字的 ID,翻譯建議將無法é‹ä½œã€‚需è¦å…ˆçŸ¥é“ä¾†æºæ–‡å­—的語言,æ‰èƒ½æä¾›ç¿»è­¯å»ºè­°ã€‚Poedit ç„¡æ³•å¾žé€™å€‹æª”æ¡ˆåµæ¸¬èªžè¨€ã€‚譯文 — %sç”±æ–¼åœ¨æª”æ¡ˆã€Œå±¬æ€§ã€æŒ‡å®šçš„路徑中找ä¸åˆ°ç¨‹å¼ç¢¼ï¼Œç¿»è­¯ç„¡æ³•從原始碼更新。複數UTF-8 (建議採用)å–æ¶ˆå‹•作XCLOC 檔案中有éžé æœŸçš„éºå¤±å…§å®¹ã€‚é­é‡æœªè™•ç†çš„例外:%sUnix (建議採用)未知的 Crowdin éŒ¯èª¤ã€‚æœªçŸ¥éŒ¯èª¤æœªè­¯æ›´æ–°æ›´æ–°æ‘˜è¦æ›´æ–°å…¨éƒ¨æ›´æ–°å°ˆæ¡ˆä¸­çš„æ‰€æœ‰ç·¨ç›®æª”æ˜¯å¦æ›´æ–°å°ˆæ¡ˆä¸­çš„æ‰€æœ‰ç·¨ç›®æª”?從 POT 檔案進行更新(&P)…從 POT 檔案進行更新(&P)…從原始程å¼ç¢¼é€²è¡Œæ›´æ–°å¾ž POT 檔更新從原始程å¼ç¢¼é€²è¡Œæ›´æ–°å¾žåŽŸå§‹ç¨‹å¼ç¢¼æ›´æ–°æ›´æ–°æ‘˜è¦æ›´æ–°æ›´æ–°å¤±æ•—正在更新專案編目檔正在更新翻譯正在更新使用者資訊⋯無法上傳翻譯至 %s。正在上傳翻譯至 %s……正在上傳翻譯⋯使用自訂é‹ç®—å¼ä½¿ç”¨è‡ªè¨‚清單字型:使用自訂文字欄ä½å­—型:使用這個語言的é è¨­è¦å‰‡åœ¨åŽŸå§‹ç¨‹å¼ç¢¼ä¸­ä½¿ç”¨é€™äº›é—œéµå­— (函å¼å稱) 以辨識å¯ç¿»è­¯å­—ä¸²ï¼šä½¿ç”¨è­¯æ–‡è¨˜æ†¶åº«é©—è­‰é©—è­‰çµæžœç‰ˆæœ¬ %s檢視詳細資訊…檢視詳細資訊…正在等候身分核å°â‹¯è­¦å‘Šï¼šæ­¡è¿Žä½¿ç”¨ Poedit從原始程å¼ç¢¼é€²è¡Œæ›´æ–°æ™‚全字拼寫須相符視窗Windows您è¦ä½¿ç”¨è‹±æ–‡ä½œç‚ºä¾†æºæ–‡å­—嗎?循環尋找æ›è¡Œä½ç½®ï¼šXLIFF 翻譯檔Xcode 在地化編目檔是您也å¯ä»¥ç›´æŽ¥å¾žåŽŸå§‹ç¢¼æŠ½å‡ºå¯ç¿»è­¯å­—串:請ä¸è¦æ‹–放超éŽä¸€å€‹æª”案至 Poedit è¦–çª—ä¸­ã€‚æ‚¨ç„¡æ¬Šè®€å–æª”æ¡ˆã€Œå±¬æ€§ã€æŒ‡å®šä¹‹è·¯å¾‘中的原始碼檔案。您得è¦é‡æ–°å•Ÿå‹• Poedit é€™é …æ›´å‹•æ‰æœƒç”Ÿæ•ˆã€‚您的姓å如果ä¸å„²å­˜ï¼Œä¾¿æœƒå¤±åŽ»å‰›å‰›é€²è¡Œçš„è®Šæ›´ã€‚æ‚¨çš„å§“å與電å­éƒµä»¶ä½å€åƒ…用於設定 GNU gettext 檔案的 Last-Translator 標頭。零縮放待校閱ä¸è¦åˆªé™¤æš«å­˜æª” (用於åµéŒ¯)例如 nplurals=2; plural=(n > 1);錯誤:在檔案內部進行模糊比å°å‰å¾€æŒ‡å®šåˆ—è™Ÿçš„é …ç›®è™•ç† poedit:// URIAlt+Ctrl+å‘下éµEnterå‘å·¦éµå‘å³éµShift+å‘上éµaltctrlshift關於 %séš±è— %séš±è—其他設定å好...çµæŸ %sæœå‹™é¡¯ç¤ºå…¨éƒ¨ä½¿ç”¨è­¯æ–‡è¨˜æ†¶é€²è¡Œå‰ç½®ç¿»è­¯æœªçŸ¥çš„èªžè¨€ä¸æ”¯æ´çš„版本 (%s)警告:you@example.com「%sã€æ˜¯ç„¡æ•ˆçš„ POT 檔。poedit-3.6.3/locales/lv.po0000644000175100001660000023511215011674364011107 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Latvian\n" "Language: lv_LV\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: lv\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "NerÄdÄ«t Å¡o paziņojumu" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "TurpmÄk nerÄdÄ«t" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "TurpmÄk nerÄdÄ«t" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Atjaunot kopsavilkumu" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "AizvÄ“rt" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Fails" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Jaunas virknes" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "VÄc avota datnes…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Kļūda ielÄdÄ“jot failu ar tulkojumiem." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Uz: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "SÄkumkods nav pieejams." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Tulkojums nevar tikt jauninÄts no sÄkumkoda, jo kods nav atrasts norÄdÄ«tajos " "failu IestatÄ«jumos." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Piekļuve aizliegta." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Jums nav tiesÄ«bu sÄkumkoda failu piekļuvei norÄdÄ«tajos failu IestatÄ«jumos." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Ja agrÄk tika atteikts piekļuve failiem, to var atjaunot SistÄ“mas " "iestatÄ«jumi > Drošība un konfidencialitÄte > KonfidencialitÄte > Faili un " "mapes." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "JauninÄt tulkojumus" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Apvieno atšķirÄ«bas…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Nepareizi veidota galvene: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO tulkojumu faili" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT tulkojumu faili" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF tulkojumu datnes" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Visi tulkojumu faili" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Fails \"%s\" ir tikai lasÄms un nevar tikt saglabÄts.\n" "LÅ«dzu saglabÄjiet to ar citu nosaukumu." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "NevarÄ“ja saglabÄt failu %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "" #: src/catalog_po.cpp:134 #, 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 rindiņas failÄ \"%s\" netika ielÄdÄ“tas pareizi." msgstr[1] "%i rindiņa failÄ \"%s\" netika ielÄdÄ“ta pareizi." msgstr[2] "%i rindiņas failÄ \"%s\" netika ielÄdÄ“tas pareizi." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Rinda %d failÄ \"%s\" ir bojÄta (nederÄ«gi %s dati)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "BojÄts PO fails: vienskaitļa forma msgstr lietota kopÄ ar msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "BojÄts PO fails: daudzskaitļa forma msgstr lietota bez msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "RadÄs kļūdas ielÄdÄ“jot failu. RezultÄtÄ daži dati varÄ“tu bÅ«t bojÄti vai " "varÄ“tu iztrÅ«kt." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "RadÄs kļūda formatÄ“jot failu (bet tomÄ“r tika veiksmÄ«gi saglabÄts)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Failu nevar saglabÄt \"%s\" kodÄ“jumÄ, kÄ norÄdÄ«ts kataloga iestatÄ«jumos.\n" "\n" "Tas tÄ vietÄ tika saglabÄts UTF-8 kodÄ“jumÄ un iestatÄ«jums tika attiecÄ«gi " "izmainÄ«ts." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Kļūda saglabÄjot failu" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†nav derÄ«gs POT fails." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "" #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekts:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Valoda:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "LejupielÄdÄ“t jaunÄko tulkojumu…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Notiek sinhronizēšana" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "SinhronizÄcijas kļūda" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Pievienot" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "NoraidÄ«ts, lÅ«dzu pierakstÄ«ties no jauna." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Å ajÄ projektÄ tulkojumu lejupielÄde ir atspÄ“jota." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "PieslÄ“gties" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "PieslÄ“gties" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Izlogoties" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Izlogoties" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "UzzinÄt vairak par Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Gaida autentifikÄciju…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Atjauno lietotÄja informÄciju…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "PieslÄ“gties Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Sinhronizēšana ar Crowdin neizdevÄs." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin kļūda" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "AugÅ¡upielÄdÄ“ tulkojumus…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "KopÄ“t" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "UzzinÄt vairÄk" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&PalÄ«dzÄ«ba" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO failu nevar tieÅ¡i rediģēt Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Kļūda, atverot failu" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "LÅ«dzu, atveriet un rediģējiet atbilstoÅ¡o PO failu tÄ vietÄ. SaglabÄjot to, " "tiks atjauninÄts arÄ« MO fails." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "neizdzÄ“st pagaidu failus (atkļūdoÅ¡anas nolÅ«kos)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "rÄ«koties ar poedit://URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "KomunikÄcija ar Poedit procesu neizdevÄs." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "NeapstrÄdÄts izņēmums notika: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "NederÄ«gs fails" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit ir vienkÄrÅ¡i izmantojams tulkojumu redaktors." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "" #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Fails “%s†nav tulkojuma fails." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Fails “%s†nepastÄv." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "PareizrakstÄ«bas pÄrbaude ir atslÄ“gta, jo nav instalÄ“ta %s valodas vÄrdnÄ«ca." #: src/edframe.cpp:871 msgid "Install" msgstr "InstalÄ“t" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" #: src/edframe.cpp:968 msgid "Ignore" msgstr "IgnorÄ“t" #: src/edframe.cpp:968 msgid "Reload File" msgstr "PÄrlÄdÄ“t failu" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Fails tika izmainÄ«ts. Vai vÄ“laties saglabÄt izmaiņas?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "SaglabÄt izmaiņas" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Ja nesaglabÄsiet izmaiņas, tÄs tiks zaudÄ“tas." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "SaglabÄt" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&NesaglabÄt" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "NesaglabÄt" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "SaglabÄjot failu citu programmu ieviestÄs izmaiņas tiks zaudÄ“tas." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Atcelt" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Vienalga saglabÄt" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Vienalga saglabÄt" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "SaglabÄt kÄ…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "KompilÄ“t uz…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "KompilÄ“tie tulkojuma faili" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML faili" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "NeizdevÄs atjauninÄt" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Atjaunot no &POT faila…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Atjaunot no &POT faila…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "PÄrbaudes rezultÄts" #: src/edframe.cpp:1842 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 "" "Ieraksti ar kļūdÄm tika izdalÄ«ti sarkanÄ krÄsÄ. Ja izvÄ“lÄ“ties tÄdu ierakstu, " "tiks parÄdÄ«ta informÄcija par kļūdu." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Fails veiksmÄ«gi tika saglabÄts." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Fails tika saglabÄts un kompilÄ“ts MO formÄtÄ, bet iespÄ“jams, ka darbosies " "nekorekti." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Fails bija saglabÄts, bet to neizdevÄs nokompilÄ“t MO formÄtÄ un izmantot." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "Fails tika sakompilÄ“ts MO formÄtÄ, bet visticamÄk darbosies nekorekti." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "" #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "" #: src/edframe.cpp:1894 #, 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] "" msgstr[1] "" msgstr[2] "" #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "" #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "" #: src/edframe.cpp:2317 msgid "Set Language" msgstr "" #: src/edframe.cpp:2317 msgid "Set language" msgstr "" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Tulkojuma valoda ir tÄda pati kÄ avota valoda." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Labot valodu" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Labot valodu" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "" #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Sintakses kļūda daudzskaitļa formu galvenÄ“ (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Salabot galveni" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "SkatÄ«t" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Iztulkoti: %d no %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "AtlikuÅ¡i: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d kļūdas" msgstr[1] "%d kļūda" msgstr[2] "%d kļūdas" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (nesaglabÄts)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (modificÄ“ts)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "NeizdevÄs atjauninÄt tulkojumu atmiņu: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "PaturÄ“t" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "&IztÄ«rÄ«t dzÄ“stos tulkojumus" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Vai vÄ“laties izņemt visus tulkojumus, kas vairs netiek izmantoti?" #: src/edframe.cpp:2879 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 "" "Ja jÅ«s turpinÄsiet ar iztÄ«rīšanu, visi tulkojumi, kas atzÄ«mÄ“ti kÄ dzÄ“sti, " "tiks pilnÄ«bÄ izņemti. IespÄ“jams, ka vÄ“lÄk tie jums bÅ«s jÄtulko vÄ“lreiz, ja " "tie vÄ“lÄk tiks pievienoti atpakaļ." #: src/edframe.cpp:2883 msgid "Purge" msgstr "IztÄ«rÄ«t" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "KopÄ“t no avota teksta" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "KopÄ“t no avota teksta" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "NotÄ«rÄ«t tulkojumu" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "NotÄ«rÄ«t tulkojumu" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Rediģēt komentÄru" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Rediģēt komentÄru" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "SlÄ“pt sÄnjoslu" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "RÄdÄ«t sÄnjoslu" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "SlÄ“pt statusa joslu" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "RÄdÄ«t statusa joslu" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Avota teksts" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Vienskaitlis" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Daudzskaitlis" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Tulkojums" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "JÄpÄrbauda" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "JÄpÄrbauda" #: src/editing_area.cpp:566 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 faili ir tikai veidnes, kas nesatur tulkojumus.\n" "Lai tulkotu, izveidojiet no tÄ jaunu PO failu." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Izveidot jaunu tulkojumu" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Visi" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Forma %i (neizmantota)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nulle" #: src/editing_area.cpp:788 msgid "One" msgstr "Viens" #: src/editing_area.cpp:790 msgid "Two" msgstr "Divi" #: src/editing_area.cpp:804 msgid "Other" msgstr "Cits" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Tulkojums — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Avota teksts — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "nezinÄma valoda" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "NeizdevÄs apvienot gettext katalogus." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "AtvÄ“rt redaktorÄ" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "AtvÄ“rt redaktorÄ" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Atrast" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "AizstÄt" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "IestatÄ«jumi" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "IgnorÄ“t reÄ£istru" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "MeklÄ“t visÄ" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Tikai veselus vÄrdus" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "MeklÄ“t avota tekstÄ" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "MeklÄ“t tulkojumÄ" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "MeklÄ“t komentÄros" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "&AizstÄt visus" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "&AizstÄt visus" #: src/findframe.cpp:150 msgid "&Replace" msgstr "" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< Ie&priekšējais" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&NÄkamais >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Atrast" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "AizstÄt ar" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Tulkojuma valoda" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Tulkojuma valoda:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - katalogu pÄrvaldnieks" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Rediģēt…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Izveidot jaunu tulkoÅ¡anas projektu" #: src/manager.cpp:145 msgid "Delete the project" msgstr "IzdzÄ“st projektu" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Rediģēt projeku" #: src/manager.cpp:176 msgid "Update all" msgstr "Atjaunot visus" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Atjaunot visus katalogus Å¡ajÄ projektÄ" #: src/manager.cpp:378 msgid "Total" msgstr "KopÄ" #: src/manager.cpp:379 msgid "Untrans" msgstr "Neiztulk" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "JÄpÄrbauda" #: src/manager.cpp:381 msgid "Errors" msgstr "Kļūdas" #: src/manager.cpp:382 msgid "Last modified" msgstr "PÄ“dÄ“jo reizi modificÄ“ts" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "IzvÄ“lieties mapi" #: src/manager.cpp:433 msgid "Directories:" msgstr "Mapes:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "" #: src/manager.cpp:540 msgid "Delete project" msgstr "" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" #: src/manager.cpp:571 msgid "Confirmation" msgstr "ApstiprinÄjums" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "MeklÄ“t atjauninÄjumus…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Katalogu pÄrvaldnieks" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&IestatÄ«jumi…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "R&ediģēt" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Atsaukt" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Atcelt atsaukÅ¡anu" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "IelÄ«mÄ“t un pieskaņot stilam" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "IzdzÄ“st" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "PareizrakstÄ«ba un gramatika" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "RÄdÄ«t pareizrakstÄ«bu un gramatiku" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "PÄrbaudÄ«t dokumentu" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "PÄrbaudÄ«t pareizrakstÄ«bu rakstīšanas laikÄ" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "PÄrbaudÄ«t gramatiku kopÄ ar pareizrakstÄ«bu" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Izlabot pareizrakstÄ«bu automÄtiski" #: src/menus.cpp:219 msgid "Substitutions" msgstr "AizvietoÅ¡anas" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "RÄdÄ«t aizvietoÅ¡anas" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Gudrs Copy/Paste" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "FigÅ«rpÄ“diņas" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "DomuzÄ«me" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Saites" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Teksta aizstÄÅ¡ana" #: src/menus.cpp:230 msgid "Transformations" msgstr "TransformÄcijas" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "" #: src/menus.cpp:234 msgid "Capitalize" msgstr "" #: src/menus.cpp:237 msgid "Speech" msgstr "Runa" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "SÄkt izrunÄt" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Beigt izrunÄt" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Skats" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "ParÄdÄ«t rÄ«ku joslu" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "PielÄgot rÄ«ku joslu…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Logs" #: src/menus.cpp:263 msgid "Minimize" msgstr "MinimizÄ“t" #: src/menus.cpp:264 msgid "Zoom" msgstr "" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "InfoermÄcija par tulkotÄju" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "VÄrds:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "JÅ«su vÄrds" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-pasts:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Rediģēšana" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "SaglabÄjot automÄtiski kompilÄ“t MO failu" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "PÄrbaudÄ«t pareizrakstÄ«bu" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "VienmÄ“r fokusÄ“ties uz teksta ievades lauku" #: src/prefsdlg.cpp:211 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 "" "Nekad neļaut virkņu sarakstam pÄrņemt fokusu. Ja aktivizÄ“ts, jums jÄlieto " "Ctrl-bultiņas tastatÅ«ras navigÄcijai, bet jÅ«s varat arÄ« rakstÄ«t tekstu " "nekavÄ“joties, nenospiežot Tab taustiņu, lai mainÄ«tu fokusu." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Izskats" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "MainÄ«t lietojumprogrammas valodu" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(nepiecieÅ¡ama Windows 8 vai jaunÄka)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "VispÄrÄ«gi" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Izmantot tulkojumu atmiņu" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "PÄrvaldÄ«t…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "SaglabÄti tulkojumi:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "DatubÄzes lielums:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "ImportÄ“t tulkojuma failus…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "ImportÄ“t tulkojuma failus…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "ImportÄ“t no TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "ImportÄ“t no TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "EksportÄ“t uz TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "EksportÄ“t uz TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "AtiestatÄ«t" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX faili" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "ImportÄ“ tulkojumus…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "EksportÄ“t kÄ…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Tulkojumu atmiņa" #: src/prefsdlg.cpp:730 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 "" #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Atbalsta visas programmēšanas valodas, kuras atpazÄ«st GNU gettext rÄ«ki (PHP, " "C/C++, C#, Perl, Python, Java, JavaScript u.c.)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Konti" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "AutomÄtiski meklÄ“t atjauninÄjumus" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Iekļaut beta versijas" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta versijÄs ir jaunas funkcijas un uzlabojumi, taÄu tÄs var bÅ«t nedaudz " "mazÄk stabilas." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "AtjauninÄjumi" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (ieteicamais)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Papildu" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "" #: src/pretranslate.cpp:218 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 "" #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Pievienot mapes…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Pievienot mapes…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Pievienot failus…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Pievienot failus…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Ceļi" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Visi komentÄri" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "piem. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (ieteicamais)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "" #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "KomentÄrs:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&DzÄ“st" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Rediģēt projektu" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Projekta nosaukums:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "PÄrlÅ«kot" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Pievienot mapi sarakstam" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Labi" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Fails" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Jauns…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Jauns no &POT/PO faila…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Jauns no &POT/PO faila…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&AtvÄ“rt…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Katalogu &pÄrvaldnieks" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Katalogu &pÄrvaldnieks" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "Ai&zvÄ“rt" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&SaglabÄt" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "SaglabÄt &kÄ…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "SaglabÄt &kÄ…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "KompilÄ“t uz MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "MeklÄ“t atjauninÄjumus…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&IestatÄ«jumi" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "I&ziet" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Iziet" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "KopÄ“t vienskaitļa formu" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "KopÄ“t vienskaitļa formu" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Rediģēt &komentÄru" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Rediģēt &komentÄru" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Ieteikumi" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Atrast…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "AizstÄt…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Atrast nÄkamo" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Atrast iepriekšējo" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Atrast un aizstÄt…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "MeklÄ“t komentÄros" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Atrast iepriekšējo" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "RÄdÄ«t rindas &ID" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "RÄdÄ«t rindas &ID" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "RÄdÄ«t brÄ«dinÄjumus" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "RÄdÄ«t brÄ«dinÄjumus" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "KÄrtot pÄ“c &faila secÄ«bas" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "KÄrtot pÄ“c &faila secÄ«bas" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "KÄrtot pÄ“c a&vota" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "KÄrtot pÄ“c a&vota" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "KÄrtot pÄ“c &tulkojuma" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "KÄrtot pÄ“c &tulkojuma" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&GrupÄ“t pÄ“c konteksta" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&GrupÄ“t pÄ“c konteksta" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Vispirms ierakstus ar kļūdÄm" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Vispirms ierakstus ar kļūdÄm" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Vispirms neizt&ulkotos ierakstus" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Vispirms neizt&ulkotos ierakstus" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "RÄdÄ«t sÄnjoslu" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "RÄdÄ«t statusa joslu" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "Atja&unot no avota koda" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "Atja&unot no avota koda" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "SinhronizÄ“t ar Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&PÄrbaudÄ«t tulkojumu" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&PÄrbaudÄ«t tulkojumu" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&IztÄ«rÄ«t dzÄ“stos tulkojumus" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "IztÄ«rÄ«t &dzÄ“stos tulkojumus" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&RekvizÄ«ti…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Iet" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "Pa&beigt un pÄriet uz nÄkamo" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "Pa&beigt un pÄriet uz nÄkamo" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "I&priekšējais tulkojums" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "I&priekšējais tulkojums" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&NÄkamais tulkojums" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&NÄkamais tulkojums" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Iep&riekÅ¡ejais nepabeigtais" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Iep&riekÅ¡ejais nepabeigtais" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "NÄ&kamais nepabeigtais" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "NÄ&kamais nepabeigtais" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "IepriekšējÄ daudzskaitļa forma" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "IepriekšējÄ daudzskaitļa forma" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "NÄkamÄ daudzskaitļa forma" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "NÄkamÄ daudzskaitļa forma" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&TieÅ¡saistes palÄ«dzÄ«ba" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&TieÅ¡saistes palÄ«dzÄ«ba" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext rokasgrÄmata" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext rokasgrÄmata" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "P&ar Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "P&ar..." #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "PaplaÅ¡inÄjumu saraksts, atdalÄ«ts ar semikoliem (piem., *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "IzsaukÅ¡ana:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Vienums atslÄ“gvÄrdu sarakstÄ:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Å is vienums tiks pievienots komandrindai, vienreiz katram\n" "atslÄ“gvÄrdam. %k atbilst atslÄ“gvÄrdam." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Vienums ievades failu sarakstÄ:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Å is vienums tiks pievienots komandrindai, vienreiz katram\n" "ievades failam. %f atbilst faila nosaukumam." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Pirmkoda simbolkopa:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Å is vienums tiks pievienots komandrindai tikai tad, ja\n" "bÅ«s doda pirmkoda simbolkopa. %c atbilst simbolkopas vÄ“rtÄ«bai." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Tulkojuma rekvizÄ«ti" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Projekta nosaukums un versija:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "TulkotÄju komanda:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Daudzskaitļa formas:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "VairÄk par daudzskaitļa formÄm" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Simbolkopa:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Tulkojuma rekvizÄ«ti" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Avotu ceļi" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Izvilkt tekstu no avotu failiem sekojoÅ¡ajÄs mapÄ“s:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "BÄzes ceļš:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Avotu atslÄ“gvÄrdi" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Lietot Å¡os atslÄ“gvÄrdus (funkciju nosaukumus), lai atpazÄ«tu tulkojamÄs " "virknes\n" "avota failos:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "VairÄk par gettext atslÄ“gvÄrdiem" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "PÄrbaudÄ«t" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "PÄrbaudÄ«t, vai tulkojumÄ nav kļūdu" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "SÄnjosla" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "RÄdÄ«t vai slÄ“pt sÄnjoslu" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "" #: src/sidebar.cpp:196 msgid "Comment" msgstr "" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Pievienot komentÄru" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Pievienot komentÄru" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "DzÄ“st no tulkojumu atmiņas" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "DzÄ“st no tulkojumu atmiņas" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Nav atrasta neviena atbilstÄ«ba" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Nav atrasta neviena atbilstÄ«ba" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "" #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Nevar palaist programmu: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "" #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Tulkojumu atmiņas datubÄze ir bojÄta: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Tulkojumu atmiņas kļūda: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Lietot noklusÄ“juma valodu)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Valodas izvÄ“le" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "AtlasÄ«t vÄ“lamo valodu" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "RestartÄ“t Poedit, lai novÄ“rot Å¡o izmaiņu." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Nevar izveidot pagaidu datu mapi." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "" #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "AtjauninÄt no POT faila" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "" #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versija %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "SinhronizÄ“t tulkojumu ar Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Par %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s iestatÄ«jumi" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Par %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Iziet no %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "IestatÄ«jumi…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "IestatÄ«jumi..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "IestatÄ«jumi..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Lietot" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "KopÄ“t" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Izgriezt" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Rediģēt" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "PalÄ«dzÄ«ba" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Jauns" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&NÄ“" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "NÄ“" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Labi" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "AtvÄ“rt…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&AtvÄ“rt..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "AtvÄ“rt..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "IelÄ«mÄ“t" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "IestatÄ«jumi" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "AtsvaidzinÄt" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&SaglabÄt kÄ" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "SaglabÄt kÄ" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "&AtlasÄ«t visu" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "AtlasÄ«t visu" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&JÄ" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "JÄ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Left" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Right" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/af.po0000644000175100001660000026201515011674362011054 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Afrikaans\n" "Language: af_ZA\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: af\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Versteek hierdie kennisgewingsboodskap" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Moenie Weer Toon Nie" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Moenie weer toon nie" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Werk opsomming by" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Maak toe" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Lêer" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Nuwe stringe" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Versamel tans bronlêers…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Ekstraheer tans vertaalbare stringe van %s-lêer…" msgstr[1] "Ekstraheer tans vertaalbare stringe van %s-lêers…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Kon nie lêer met geëkstraheerde vertalings laai nie." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "In: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Bronkode nie beskikbaar." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Vertalings kon nie vanuit die bronkode bygewerk word nie omdat geen kode in " "die gespesifiseerde ligging in die lêereienskappe gevind is nie." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Toestemming geweier." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "U het nie toestemming om bronkodelêers vanuit die gespesifiseerde ligging in " "die lêer se Eienskappe te lees nie." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Indien u voorheen toegang tot u lêers geweier het, kan u dit in " "Stelselinstellings > Privaatheid & Sekuriteit > Lêers & Vouers toelaat." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Indien u voorheen toegang tot u lêers geweier het, kan u dit in " "Stelselvoorkeure > Sekuriteit & Privaatheid > Privaatheid > Lêers & Vouers " "toelaat." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Fiilde \"%s\" horiima udditaade." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Werk tans vertalings by" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Voeg tans verskille saam…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Misvormde kop: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO-vertaallêers" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT-vertaalsjablone" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF-vertaallêers" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Piille Fire JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Piillde Firo Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Alle Vertaallêers" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Fiilde ndee woni ko e mbayka ko Poedit heftinaani." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "Ndee fiilde JSON wonaa fiilde firo etee waawaa taÆ´teede e Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Targol loowdi fiilde woorii kadi addii ndee-É—oo juumre: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Lêer “%s†is leesalleen en kan nie bewaar word nie.\n" "Bewaar dit onder ’n ander naam." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Kon nie lêer %s bewaar nie." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Skermkiekies:" #: src/catalog_po.cpp:134 #, 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 reël van lêer “%s†is nie korrek gelaai nie." msgstr[1] "%i reëls van lêer “%s†is nie korrek gelaai nie." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Reël %d van lêer “%s†is korrup (geen geldige %s-data)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "Gebroke PO-lêer: enkelvoudvorm msgstr is gebruik saam met msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Gebroke PO-lêer: meervoudvorm msgstr is gebruik sonder msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Horiima loowde fiilde ndee, ena gasa nde moÆ´Æ´aani." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Daar was foute tydens die laai van die lêer. As gevolg daarvan kan sommige " "data ontbreek of korrup wees." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Iets het skeefgeloop met netjiese formattering van die lêer (maar dit is wel " "bewaar)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Die lêer kon nie met die “%s†karakterstel gestoor word soos aangedui in die " "vertalingsinstellings nie.\n" "\n" "Daarom is dit met UTF-8 kodering gestoor en die opstelling is aangepas." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Fout met bewaar van lêer" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†is nie ’n geldige POT-lêer nie." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Juumre tuma loowgol fiilde XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "Yamre (%s) tammbitaaka" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Gebroke markup in vertaalstring." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Koppel Poedit met ondersteunde wolklokaliseringsplatforms om vertalings " "daarop naatloos te sinchroniseer." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Hoe werk wolksinchronisering?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Rekening" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(nie aangeteken nie)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Open wolkvertaling" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Bestuur rekeninge" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projek:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Taal: " #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Teken aan op wolkrekening" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Teken aan op wolkrekening" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Geen vertaalprojekte aanwesig in u rekening nie." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Laai tans nuutste vertalings af…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Teken aan by %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sinchronisering" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Laai tans vertalings op na %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Oplaai van vertalings na %s het misluk." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Sinchroniseerfout" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Voeg toe" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Onbekende Crowdin-fout." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Nie gemagtig nie, teken weer aan." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "String-gebaseerde Crowdin-projekte word nie ondersteun nie." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Aflaai van vertalings vir hierdie projek is gedeaktiveer." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Teken Aan" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Teken aan" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Teken Af" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Teken af" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Leer meer oor Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin is ’n aanlyn vertaalbestuurplatform en meewerkingsvertaalnutsmiddel. " "Ons gebruik self Crowdin om Poedit in vele tale te vertaal, en ons is mal " "daaroor." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Wag tans vir bekragtiging…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Werk tans gebruikersinligting by…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Teken aan op Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Sinchronisering met Crowdin het misluk." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin-fout" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Laai tans vertalings op…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopieer" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Leer meer" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Hulp" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO-lêers kan nie direk in Poedit gewysig word nie." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Fout tydens open van lêer" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Open en wysig liewer die ooreenstemmende PO-lêer. Wanneer u dit bewaar, word " "die MO-lêer ook bygewerk." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "moenie tydelike lêers skrap nie (vir foutopsporing)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "gebruik poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "gaan na item met gegewe reëlnommer" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Kommunikasie met die Poedit-proses het misluk." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Onhanteerde uitsondering het voorgekom: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Kies vertalingsjabloon" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Ongeldige lêer" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Kies vertalingslêer" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit is ’n maklik-om-te-gebruik vertaalwysiger." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "U kan nie meer as een lêer in die Poedit-venster los nie." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Lêer “%s†is nie ’n vertaallêer nie." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Lêer “%s†bestaan nie." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit " #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Speltoets is gedeaktiveer omdat die woordeboek vir %s nie geïnstalleer is " "nie." #: src/edframe.cpp:871 msgid "Install" msgstr "Installeer" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Die lêer “%s†is deur ’n ander toepassing verander." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Herlaai lêer" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Wil u die lêer vanaf die skyf herlaai? U onbewaarde wysigings in Poedit sal " "verlore gaan indien u dit doen." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignoreer" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Herlaai lêer" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Die lêer is verander. Wil u die veranderinge bewaar?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Bewaar veranderinge" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "U veranderinge gaan verlore indien u dit nie bewaar nie." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Bewaar" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Mo&enie bewaar nie" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Moenie Bewaar Nie" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Die veranderinge wat deur die ander toepassing gemaak is, sal verlore gaan " "indien u bewaar." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Kanseleer" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Bewaar in elk geval" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Bewaar in elk geval" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Bewaar as…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Kompileer na…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Gekompileerde Vertaallêers" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Stuur uit na HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML-lêers" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Stuur tans uit na HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Bywerking het misluk" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Werk by vanuit &POT-lêer…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Werk by vanuit &POT-lêer…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d probleem met die vertaling gevind." msgstr[1] "%d probleme met die vertaling gevind." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Valideringsresultate" #: src/edframe.cpp:1842 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 "" "Inskrywings met foute is in rooi gemerk in die lys. Details van die fout " "word vertoon wanneer u so ’n inskrywing kies." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Die lêer is veilig bewaar." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Die lêer is veilig bewaar en in die MO-formaat gekompileer maar sal " "waarskynlik nie korrek werk nie." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Die lêer is veilig bewaar maar dit kan nie in die MO-formaat gekompileer en " "gebruik word nie." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Die lêer is in die MO-formaat gekompileer maar sal waarskynlik nie reg werk " "nie." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Die lêer kan nie in die MO-formaat gekompileer en gebruik word nie." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Geen probleme met die vertaling gevind." #: src/edframe.cpp:1894 #, 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] "" "Die vertaling is gereed vir gebruik maar %d inskrywing is nog nie vertaal " "nie." msgstr[1] "" "Die vertaling is gereed vir gebruik maar %d inskrywings is nog nie vertaal " "nie." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Die vertaling is gereed vir gebruik." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit het ongeldige inhoud in die lêer “%s†outomaties gerepareer." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Die lêer het duplikaatitems bevat, wat ontoelaatbaar in PO-lêers is en die " "lêer onbruikbaar sal maak. Poedit het die fout herstel maar u moet nuwe " "vertalings van enige items wat vir aandag gemerk is nagaan en regstel indien " "nodig." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Taal vir die vertaling is nie ingestel nie." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Stel Taal In" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Stel taal" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Voorstelle is nie beskikbaar indien die vertaaltaal verkeer ingestel is nie. " "Ander funksies, soos meervoudsvorme, kan ook hierdeur geraak word." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Taal van die vertaling is dieselfde as brontaal." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Repareer Taal" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Repareer taal" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Hierdie lêer bevat inskrywings met meervoudsvorme maar geen Meervoudsvorm-" "kop is opgestel nie." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Inskrywings in hierdie lêer se meervoudsformtelling verskil van wat die lêer " "se Meervourdsvorm-kop sê" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Vereiste Meervoudsvorm-kop ontbreek." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Sintaksfout in Meervoudsvorm-kop (“%sâ€)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Repareer die Kop" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Repareer die kop" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "Meervoudsvormuitdrukking wat deur die lêer vir %s gebruik word, is ongewoon." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Hersien" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Wil u Engels as bronteks gebruik?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Hierdie lêer gebruik string-ID’s i.p.v. bronteks. Poedit kan vir u Engelse " "tekse van die “%sâ€-lêer laai." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Laai Engels" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Vertaal: %d van %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Oorblywend: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d fout" msgstr[1] "%d foute" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d inskrywing" msgstr[1] "%d inskrywings" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (onbewaar)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (verander)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Kon nie vertaalgeheue bywerk nie: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Verwyder dieselfde-as-bron-vertalings" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Wil u alle vertalings wat identies aan die bronteks is, verwyder?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Hierdie aksie sal enige vertalings skrap wat presies met die bronteks " "ooreenkom. Dit kan nie ontdaan word nie." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Behou" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Verwyder" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Purgeer geskrapte vertalings" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Wil u alle vertalings wat nie meer gebruik word nie, verwyder?" #: src/edframe.cpp:2879 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 "" "Indien u met purgering voortgaan word alle vertalings wat as “skrap†gemerk " "is, verwyder. U sal dit weer moet vertaal sou dit in die toekoms weer " "toegevoeg word." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Purgeer" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Kopieer vanaf bronteks" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopieer vanaf Bronteks" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Wis vertaling" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Wis Vertaling" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Wysig kommentaar" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Wysig Kommentaar" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Kodevoorkomste" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Kodevoorkomste" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Versteek Systaaf" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Toon Systaaf" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Versteek Statusbalk" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Toon Statusbalk" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Stringlengte in karakters: vertaling | bron" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Stringlengte in karakters" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Bronteks" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Enkelvoud" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Meervoud" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Vertaling" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Voorafvertaal" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Kort Werk" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Kort aandag" #: src/editing_area.cpp:566 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-lêers is slegs sjablone en bevat self geen vertalings nie.\n" "Skep ’n nuwe PO-lêer, gebaseer op die sjabloon, om ’n vertaling te maak." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Skep nuwe vertaling" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Skep ’n nuwe vertaling van hierdie POT-lêer." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID binndol iwdi" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Alles" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Vorm %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Vorm %i (ongebruik)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nul" #: src/editing_area.cpp:788 msgid "One" msgstr "Een" #: src/editing_area.cpp:790 msgid "Two" msgstr "Twee" #: src/editing_area.cpp:804 msgid "Other" msgstr "Ander" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Stringkonteks: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Stringidentifiseerder: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s-Formaat" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s-formaat" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Vertaling — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Bronteks — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "onbekende taal" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Netwerkfout: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Onbekende fout" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Kon nie gettext-katalogi saamvoeg nie." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Open in Wysiger" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Open in wysiger" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Geen inligting oor hierdie string se voorkomste in die bronkode word in die " "lêer verskaf nie." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Geen gebruiksinligting" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kodevoorkoms" msgstr[1] "%d kodevoorkomste" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Bronkode nie gevind nie" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit kan nie die bronkode toon waar die string gebruik word nie omdat die " "lêer òf nie beskikbaar is in die ligging waarna verwys word nie òf dit is ’n " "simboliese verwysing wat nie na ’n werklike lêer wys nie." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Lêer kan nie geopen word nie" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit kon nie die “%sâ€-lêer open nie." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Soek" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Vervang" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opsies" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignoreer hoof-/kleinletters" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Omvou" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Slegs heel woorde" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Soek in brontekste" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Soek in vertalings" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Vind in kommentaar" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Vervang &Alles" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Vervang &alles" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Vervang" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Vorige" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Volgende >" #: src/findframe.cpp:235 msgid "String to find" msgstr "String om te soek" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Vervangende string" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "waarskuwing: " #: src/gexecute.cpp:171 msgid "error: " msgstr "fout: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Taalnaam of -kode" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Taal van Vertaling" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Taal van die vertaling:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Alle stringe" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Kon nie Localazy-projekdetails aflaai nie." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Daar was ’n fout met die oplaai van vertalings na Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projekte" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Leer meer oor %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy is ’n hoogs geoutomatiseerde lokaliseringsplatform wat enigeen " "toelaat om maklik hul produkte en inhoud in meerdere tale te vertaal." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Voeg projek toe" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Voeg projek toe" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Katalogusbestuurder" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Wysig…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Skep nuwe vertaalprojek" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Skrap die projek" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Wysig die projek" #: src/manager.cpp:176 msgid "Update all" msgstr "Werk alles by" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Werk alle katalogusse in die projek by" #: src/manager.cpp:378 msgid "Total" msgstr "Totaal" #: src/manager.cpp:379 msgid "Untrans" msgstr "Onvertaal" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Kort Werk" #: src/manager.cpp:381 msgid "Errors" msgstr "Foute" #: src/manager.cpp:382 msgid "Last modified" msgstr "Laas gewysig" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Kies gids " #: src/manager.cpp:433 msgid "Directories:" msgstr "Gidse:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Wil u projek “%s†skrap?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Skrap projek" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Skrap van die projek sal geen vertaallêers skrap nie." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Bevestiging" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Werk alle katalogusse in hierdie projek by?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" "Dit voer ’n bywerking vanaf die bronkode op alle lêers in die projek uit." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Werk tans projekkatalogusse by" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Gaan na vir Bywerkings…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Katalogusbestuurder" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Voorkeure…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "W&ysig" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Ontdaan" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Herdoen" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Plak en Pas Styl Aan" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Skrap" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Spelling en Grammatika" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Toon Spelling en Grammatika" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Gaan Dokument Nou Na" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Gaan Spelling Intyds Na" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Gaan Grammatika Met Spelling Na" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Korrigeer Spelling Outomaties" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Vervangings" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Toon Vervangings" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Slimkopieer/-plak" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Slimaanhalingstekens" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Slimstrepe" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Slimskakels" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Teksvervanging" #: src/menus.cpp:230 msgid "Transformations" msgstr "Omvormings" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Maak Hoofletters" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Maak Kleinletters" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Maak Beginhoofletters" #: src/menus.cpp:237 msgid "Speech" msgstr "Spraak" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Begin Praat" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Hou op Praat" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Bekyk" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Toon Nutsbalk" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Pas Taakbalk Aan…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Gaan na Volskerm" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Venster" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimaliseer" #: src/menus.cpp:264 msgid "Zoom" msgstr "Vergroot/verklein" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Welkom by Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Bring Alles na Vore" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Inligting oor die vertaler" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Naam:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "U Naam" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-pos:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "gebruiker@voorbeeld.co.za" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "U naam en e-posadres word slegs gebruik om die “Laaste-Vertalerâ€-kop van die " "GNU-gettext-lêers in te stel." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Wysiging" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Maak outomaties MO-lêer tydens stoor" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Gaan spelling na" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Verander altyd fokus na teks-toevoerveld" #: src/prefsdlg.cpp:211 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 "" "Moet nooit die stringlys laat fokus nie. Indien dit geaktiveer is moet Ctrl-" "pyltjies vir sleutelbordnavigasie gebruik word maar teks kan ook onmiddellik " "toegevoer word sonder om Tab te druk om fokus te verander." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Voorkoms" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Gebruik pasgemaakte lysfont:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Gebruik pasgemaakte teksveldfont:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Verander koppelvlaktaal" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(vereis Windows 8 of nuwer)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Algemeen" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Gebruik vertaalgeheue" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Bestuur…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Tydens bywerking vanuit bronne" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "wollerige trefslae binne die lêer" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "voorafvertaal vanaf TM" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit kan probeer om nuwe inskrywings slegs vanaf vorige vertalings in die " "lêer of vanuit u gehele vertaalgeheue in te vul. Gebruik van die TM sal nie " "baie effektief indien dit byna leeg is nie, maar dit sal beter raak soos u " "meer vertalings toevoeg." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Bewaarde vertalings:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Databasisgrootte op skyf:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Voer Vertaallêers In…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Voer vertaallêers in…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Voer In Vanaf TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Voer in vanaf TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Stuur Uit Na TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Stuur uit na TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Herstel" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Kies vertaalleêrs om in te voer" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Kies TMX-lêers om in te voer" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX-lêers" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Vertalings word ingevoer…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Invoer van vertaalgeheue van het misluk." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Voer tans in vanaf “%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s vertaling is ingevoer." msgstr[1] "%s vertalings is ingevoer." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Stuur Uit as…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Stuur vertalings uit…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Uitstuur van vertaalgeheue van “%s†het misluk." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Herstel vertaalgeheue" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Is u seker u wil die vertaalgeheue herstel?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Deur die vertaalgeheue te herstel sal alle bewaarde vertalings permanent " "geskrap word. Dit kan nie ontdaan word nie." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Vertaalgeheue" #: src/prefsdlg.cpp:730 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 "" "Bronkodeëkstraheerders word gebruik om vertaalbare stringe in die " "bronkodelêers te soek en vir vertaling te ekstraheer." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Pasgemaakte Ekstraheerders:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Pasgemaakte ekstraheerders:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Ondersteun alle programmeringstale wat deur GNU-gettext-nutsmiddels herken " "word (PHP, C/C++, C#, Perl, Python, Java, JavaScript en andere)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Skrap ekstraheerder" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Is u seker u wil die “%sâ€-ekstraheerder skrap?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Ekstraheerders" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Rekeninge" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Soek outomaties na bywerkings" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Sluit betaweergawes in" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Betaweergawes bevat die nuutste funksies en verbeteringe maar is minder " "stabiel." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Bywerkings" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Hierdie instellings beïnvloed interne formattering van PO-lêers. Pas dit aan " "indien u spesifieke behoeftes het, bv. weens weergawebeheer." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Reëleindes:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (aanbeveel)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Vou om by:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Behou formattering van bestaande lêers" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Gevorderd" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Instellings" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Berei tans stringe voor…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Voorvertaling vanaf vertaalgeheue…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u string is voorafvertaal" msgstr[1] "%u stringe is voorafvertaal" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Vertaal tans vooraf…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d inskrywing is voorafvertaal." msgstr[1] "%d inskrywings is voorafvertaal." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Die vertalings is vir aandag gemerk omdat dit onakkuraat mag wees. U moet " "dit vir juistheid nagaan." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Geen inskrywings kon voorafvertaal word nie." #: src/pretranslate.cpp:218 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 "" "Die vertaalgeheue bevat geen stringe soortgelyk aan die inhoud van hierdie " "lêer nie. Dit is slegs effektief vir halfoutomatiese vertalings nadat Poedit " "genoeg geleer het van lêers wat u per hand vertaal het." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Kan nie vooraf vertaal sonder bronteks nie." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Voorafvertaling" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Voorafvertaling vereis dat bronteks beskikbaar is. Dit werk nie indien slegs " "ID’s sonder die werklike teks gebruik word." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Kan nie vanuit onbekende taal voorafvertaal nie." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Voorafvertaling vereis dat die brontekstaal bekend is. Poedit kon dit nie in " "hierdie lêer bespeur nie." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Vul slegs presiese trefslae in" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Onakkurate resultate word by verstek ook ingesluit, maar gemerk vir aandag. " "Merk hierdie blokkie om slegs akkurate trefslae in te sluit." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Moenie presiese trefslae vir aandag merk nie" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Aktiveer slegs indien u die gehalte van u TM vertrou. Alle trefslae vanuit " "die TM word by verstek vir aandag gemerk en moet hersien word voor gebruik." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Voorafvertaling vind presiese of wollerige trefslae vir onvertaalde stringe " "outomaties in die vertaalgeheue en vul hul vertalings in." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Fout: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d fout het voorgekom:" msgstr[1] "%d foute het voorgekom:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "’n Fout het voorgekom." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d fout het voorgekom." msgstr[1] "%d foute het voorgekom." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Kanselleer tans…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Sleep vouers of lêers hier" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Sleep vouers of lêers hier" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Voeg Vouers Toe…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Voeg vouers toe…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Voeg Lêers Toe…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Voeg lêers toe…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Voeg Swartpiet toe…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Voeg swartpiet toe…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Toon in Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Toon in Explorer" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Toon in vouer" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Paaie" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Uitgesluite paaie" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Gevorderde ekstraheerinstellings" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Ekstraheer notas vir vertalers vanaf:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Kommentaar voorafgegaan deur:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Alle kommentare" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Aanvullende xgettext-vlae:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Aanvullende sleutelwoorde" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Naam van die projek waarvoor die vertaling is" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Spannaam en e-posadres of bronadres" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "bv. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (aanbeveel)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Bewaar eers die lêer. Hierdie afdeling kan tot dan nie bewerk word nie." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Korrektheid van plekhouers" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Plekhouer “%s†word uit vertaling vermis." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "’n Oorbodige plekhouer “%s†wat nie in brontekst is nie." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Meervoudsvertalings" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Nie alle meervoudsvorme is vertaal nie." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Inkonsekwente groot/kleinlettergebruik" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Die vertaling moet as ’n sin begin." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Die vertaling moet met ’n kleinletter begin." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Inkonsekwente witruimte" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Die vertaling begin nie met ’n spasie nie." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Die vertaling begin met ’n spasie maar nie die bronteks nie." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Die vertaling makeer ’n reëlafbreking aan die einde." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Die vertaling eindig met ’n reëlafbreking maar nie die bronteks nie." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Die vertaling makeer ’n spasie aan die einde." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Die vertaling eindig met ’n spasie maar nie die bronteks nie." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Leestekenkontrole" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Die vertaling moet met “%s†eindig." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Die vertaling moet nie met “%s†eindig nie." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Die vertaling eindig met “%s†maar die bronteks eindig met “%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Wolk" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Wis kieslys" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Wis kieslys" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Kommentaar:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Werk by" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Skrap" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Verwyder die kommentaar" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Wysig projek" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Projeknaam:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Blaai" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Voeg gids tot die lys toe" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Goed" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Lêer" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "Open Onlangse&Nuut…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nuut vanuit &POT/PO-lêer…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nuut Vanuit POT/PO-lêer…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Open…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Open Onlangse" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Open onlangse" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Open wolkvertaling…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Open wolkvertaling…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Beginvenster" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Beginvenster" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Katalogus&bestuurder" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Katalogus&bestuurder" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "Maak &toe" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Bewaar" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Bewaar &as…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Bewaar &As…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Kompileer na MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "S&tuur uit as HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Soek na bywerkings…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Instellings…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Voorkeure" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Verlaat" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Sluit Af" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopieer vanuit enkelvoudsvorm" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopieer Vanuit Enkelvoudsvorm" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Vertaling kort &aandag" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Vertaling Kort &Aandag" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "&Wysig kommentaar" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Wysig &Kommentaar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Voorstelle" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Soek…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Vervang…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Soek volgende" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Soek vorige" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Soek en Vervang…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Soek Volgende" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Soek Vorige" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Toon string-&ID" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Toon String-&ID" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Toon waarskuwings" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Toon Waarskuwings" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Sorteer volgens &lêervolgorde" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Sorteer volgens &Lêervolgorde" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Sorteer volgens &bron" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Sorteer volgens &Bron" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Sorteer volgens &vertaling" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Sorteer volgens &Vertaling" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Groepeer volgens konteks" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Groepeer Volgens Konteks" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Inskrywings met foute eerste" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Inskrywings met Foute Eerste" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Onvertaalde inskrywings eerste" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Onvertaalde Inskrywings Eerste" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Toon kodevoorkomste" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Toon kodevoorkomste" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Toon systaaf" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Toon Statusbalk" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Vertaling" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Werk by vanuit bronkode" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Werk By vanuit Bronkode" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sinchroniseer met Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Vooraf&vertaal…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Valideer vertalings" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Valideer Vertalings" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Verwyder dieselfde-as-bron-vertalings" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Verwyder vertalings wat vir uitvee gemerk is" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Purgeer Geskrapte Vertalings" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Eienskappe…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Gaan" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Gereed en volgende" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Gereed en Volgende" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Voorheen geredigeer" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Voorheen geredigeer" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Vorige vertaling" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Vorige Vertaling" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Volgende vertaling" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Volgende Vertaling" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "V&orige onvoltooide" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "V&orige Onvoltooide" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "&Volgende onvoltooide" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "&Volgende Onvoltooide" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Vorige meervoudsvorm" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Vorige Meervoudsvorm" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Volgende meervoudsvorm" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Volgende Meervoudsvorm" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Aanlynhulp" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Aanlynhulp" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU-gettext-handleiding" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU-gettext-handleiding" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Oor Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Oor" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Ekstraheeropstelling" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lys van uitbreidings geskei deur kommapunte (bv. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Aanroeping:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Bevel om vertalings te ekstraheer:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Dit is die bevel wat gebruik word om die ekstraheerder te lanseer.\n" "%o brei uit na die naam van die afvoerlêer, %K na sleutelwoordlys,\n" "%F na toevoerlêerlys, %C na karakterstelvlag (sien hieronder)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "’n Item in sleutelwoordelys:" #: src/resources/prefs.xrc:84 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." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "’n Item in toevoerlêerlys:" #: src/resources/prefs.xrc:107 #, 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." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Bronkodekarakterstel:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Dit word tot die opdragreël toegevoeg\n" "indien slegs bronkodekarakterstel gegee is. %c brei uit na " "karakterstelwaarde." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Vertaaleienskappe" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Projeknaam en -weergawe:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Taalspan:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Meervoudsvorme:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Gebruik verstekreëls vir hierdie taal" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Gebruik pasgemaakte uitdrukking" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Meer inligting oor meervoudsvorme" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Karakterstel:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Gevorderde Ekstraheerinstellings…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Gevorderde ekstraheerinstellings…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Vertaaleienskappe" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Bronpaaie" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Bronpaaie" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Ekstraheer teks uit die bronlêers in die volgende gidse:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Basispad:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Bronsleutelwoorde" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Bronsleutelwoorde" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Gebruik hierdie sleutelwoorde (funksiename) om vertaalbare stringe\n" "in bronlêers te herken:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Gebruik ook versteksleutelwoorde vir ondersteunde tale" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Meer inligting oof gettext-sleutelwoorde" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Open lêer" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Bewaar lêer" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Valideer" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Gaan die vertaling na vir foute" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Werk by vanuit kode" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Werk By vanuit Kode" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Werk by vanuit bronkode" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Systaaf" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Toon of versteek die systaaf" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Vorige bronteks" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Die ou bronteks (voor dit gedurende ’n bywerking verander is) waar die nou " "onakkurate vertaling mee ooreenstem." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Notas vir vertalers" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Kommentaar" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Skryf kommentaar" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Skryf Kommentaar" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Skrap Uit Vertaalgeheue" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Skrap uit vertaalgeheue" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Vertaalvoorstelle" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Geen trefslae gevind" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Geen Trefslae Gevind" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Hierdie string is in Poedit se vertaalgeheue gevind." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Vertalingsvoorstelle vereis dat bronteks beskikbaar is. Hulle werk nie " "indien slegs ID’s sonder die werklike teks gebruik word." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Vertaalvoorstelle vereis dat die brontekstaal bekend is. Poedit kon dit nie " "in hierdie lêer bespeur nie." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Kan nie program uitvoer nie: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Die TMX-lêer is misvorm." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Vertaalgeheuedatabasis is gekorrupteer: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Vertaalgeheuefout: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Gebruik verstektaal)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Taalkeuse" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Kies aseblief u voorkeurtaal" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Herbegin Poedit vir hierdie verandering om in werking te tree." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Kan nie tydelike gids skep nie." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Daar is geen vertalings. Dit is vreemd." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Vertaalbare inskrywings word nie handmatig tot die Gettext-stelsel toegevoeg " "nie maar word outomaties vanuit die bronkode geëkstraheer. Op hierdie manier " "bly hulle op datum en akkuraat. Vertalers gebruik tipies PO-sjabloonlêers " "(POT’e) wat deur die ontwikkelaar voorberei is." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Kom meer te wete oor GNU-gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Die eenvoudigste manier om hierdie lêer met vertalings aan te vul is deur " "dit vanuit ’n POT by te werk:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Werk by vanuit POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Kry vertaalbare stringe vanuit ’n bestaande POT-sjabloon." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "U kan ook vertaalbare stringe direk vanaf die bronkode ekstraheer:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Ekstraheer vanuit bronne" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Stel bronkode-ekstrahering op in Eienskappe." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Weergawe %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Skep nuwe" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Skep nuwe vertaling vanaf POT-sjabloon." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Blaai deur lêers" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Open en wysig vertaallêers." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Vertaal wolkprojek" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Werk aanlyn saam met ander mense." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Onlangse lêers" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sinchroniseer" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sinchroniseer die vertaling met Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Oor %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s Voorkeure" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Oor %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Dienste" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Verberg %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Verberg Andere" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Toon Alles" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Sluit %s af" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Voorkeure…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Voorkeure…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Voorkeure…" #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Pas Toe" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Pas Toe" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Terug" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Terug" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Kanselleer" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Wis" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Wis" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopieer" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Kni&p" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Knip" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Wysig" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Sluit Af" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Hulp" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nuut" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Nuwe" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Nee" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Nee" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Goed" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Open…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Open…" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Open…" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Plak" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Plak" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Voorkeure" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Herdoen" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Verfris" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Bewaar as" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Bewaar as" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Kies &Alles" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Kies Alles" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Ontdaan" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Ja" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ja" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Wissel+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Doen" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Op" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Af" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Links" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Regs" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "beheer" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "wissel" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Waarskuwing: " poedit-3.6.3/locales/nl.po0000644000175100001660000026604515011674364011110 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-23 10:16\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: nl\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Verberg deze melding" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Niet meer weergeven" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Niet meer weergeven" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Update samenvatting" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Samenvatting van de update" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Sluiten" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problemen" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Bestand" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Probleem" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Nieuwe tekenreeksen" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Nieuwe tekenreeksen" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Verwijderde tekenreeksen" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Verwijderde tekenreeksen" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Bronbestanden verzamelen..." #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Niet mogelijk het bestand met geëxtraheerde vertalingen te laden." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "In: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Broncode niet beschikbaar." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "De vertalingen konden niet bijgewerkt worden vanuit de broncode, omdat er " "geen code gevonden is op de locatie, opgegeven in de bestandseigenschappen." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Toegang geweigerd." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Je hebt niet het recht broncodebestanden te lezen vanaf de in de " "bestandseigenschappen opgegeven locatie." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Als je eerder de toegang tot je bestanden hebt geweigerd, kun je deze " "toestaan in Systeeminstellingen > Privacy & Security > Bestanden & Mappen." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Als u eerder toegang tot uw bestanden hebt geweigerd, kunt u deze toestaan " "in Systeem Voorkeuren > Beveiliging & Privacy > Privacy > Bestanden & Mappen." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Het bestand \"%s\" kon niet worden geopend." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Vertalingen bijwerken" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Verschillen samenvoegen..." #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Vertaalbestand is bijgewerkt met %s wijziging." msgstr[1] "Vertaalbestand is bijgewerkt met %s wijzigingen." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Nieuwe te vertalen tekenreeksen:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Verwijderde tekenreeksen (niet meer gebruikt):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "%d probleem met de brontekenreeksen werd gedetecteerd." msgstr[1] "%d problemen met de brontekenreeksen zijn gedetecteerd." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Details bekijken…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Details bekijken…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Verkeerd vormgegeven header: \"%s\"" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO-vertaalbestanden" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT-vertaalsjablonen" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF-vertaalbestanden" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON vertaalbestanden" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter Vertaalbestanden" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Alle vertaalbestanden" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Het bestand is in een formaat niet herkend door Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Dit JSON-bestand is geen vertalingsbestand en kan niet worden bewerkt in " "Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Het lezen van bestandsinhoud is mislukt door de volgende fout: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, 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 opgeslagen;\n" "sla het op onder een andere naam." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Bestand '%s' kon niet worden opgeslagen." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Schermafbeeldingen:" #: src/catalog_po.cpp:134 #, 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 regel van bestand \"%s\" is niet correct geladen." msgstr[1] "%i regels van bestand \"%s\" zijn niet correct geladen." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Regel %d van bestand \"%s\" is beschadigd (ongeldige %s-gegevens)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Beschadigd PO-bestand: enkelvoudsvorm 'msgstr' samen met 'msgid_plural' " "gebruikt" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Beschadigd PO-bestand: meervoudsvorm 'msgstr' gebruikt zonder 'msgid_plural'" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Kon het bestand niet laden, het is waarschijnlijk beschadigd." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Er zijn fouten opgetreden bij het laden van het bestand; er kunnen hierdoor " "enkele gegevens ontbreken of beschadigd zijn." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Er ging iets mis bij het netjes opmaken van het bestand (maar het is wel " "opgeslagen)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Het bestand kon niet worden opgeslagen in de \"%s\"-karakterset zoals " "gespecificeerd is in de vertalingsinstellingen.\n" "\n" " Het werd in plaats daarvan opgeslagen in UTF-8 en de instelling werd " "dienovereenkomstig gewijzigd." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Fout bij opslaan bestand" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "\"%s\" is geen geldig POT-bestand." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Fout bij het laden van XLIFF-bestand: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "niet-ondersteunde versie (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Beschadigde markering in vertalingstekenreeks." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Verbind Poedit met ondersteunde cloudlokalisatieplatforms om vertalingen die " "erop worden beheerd naadloos te synchroniseren." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Hoe werkt cloud synchronisatie?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Account" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(niet aangemeld)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Open cloudvertaling" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Accounts beheren" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Project:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Taal:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Aanmelden bij Cloud-account" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Aanmelden bij Cloud-account" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Er zijn geen vertaalprojecten in uw account vermeld." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "De recentste vertalingen aan het downloaden…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Aanmelden bij %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Synchroniseren" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Vertalingen uploaden naar %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Het uploaden van vertalingen naar %s is mislukt." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Synchronisatiefout" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Toevoegen" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Onbekende Crowdin-fout." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Niet geautoriseerd; log opnieuw in." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Het downloaden van vertalingen is uitgeschakeld in dit project." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Inloggen" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Inloggen" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Uitloggen" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Uitloggen" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Meer te weten komen over Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Wachten op autorisatie…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Gebruikersinformatie bijwerken…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Inloggen bij Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Synchronisatie met Crowdin mislukt." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin-fout" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Vertalingen uploaden…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopiëren" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Meer te weten komen" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Hulp" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO-bestanden kunnen niet direct bewerkt worden in Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Fout bij openen van bestand" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Open en bewerk in plaats daarvan het corresponderende PO-bestand; als je dat " "opslaat zal het MO-bestand eveneens worden bijgewerkt." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "tijdelijke bestanden niet verwijderen (voor foutopsporing)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "omgaan met een poedit://-URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "ga naar het item op het gegeven regelnummer" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Communicatie met het Poedit-proces mislukt." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Er is een niet-verwerkte uitzondering opgetreden: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Vertaalsjabloon kiezen" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Ongeldig bestand" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Vertaalbestand kiezen" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit is een eenvoudig te gebruiken vertalingsbewerker." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "U kunt niet meer dan één bestand in het Poedit-venster plaatsen." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Bestand \"%s\" is niet een vertaalbestand." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Bestand \"%s\" bestaat niet." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Spellingscontrole is uitgeschakeld, omdat het woordenboek voor %s niet " "geïnstalleerd is." #: src/edframe.cpp:871 msgid "Install" msgstr "Installeren" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Het bestand \"%s\" werd aangepast door een ander programma." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Bestand opnieuw laden" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Wilt u het bestand opnieuw laden van de schijf? Niet opgeslagen wijzigingen " "in Poedit zullen verloren gaan." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Negeren" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Bestand opnieuw laden" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Het bestand is veranderd; wilt u de wijzigingen opslaan?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Sla de wijzigingen op" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "De wijzigingen zullen verloren gaan als u ze niet opslaat." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Opslaan" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Niet opslaan" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Niet opslaan" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Wijzigingen die door de andere applicatie zijn aangebracht, gaan verloren " "wanneer je het bestand opslaat." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Annuleren" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Toch opslaan" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Toch opslaan" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Opslaan als" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Compileren naar..." #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Gecompileerde vertaalbestanden" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Exporteren naar HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML-bestanden" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Exporteren naar HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Bijwerken mislukt" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Werk bij vanuit het &POT-bestand…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Werk bij vanuit het &POT-bestand…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d probleem gevonden met de vertaling." msgstr[1] "%d problemen gevonden met de vertaling." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Valideringsresultaten" #: src/edframe.cpp:1842 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 "" "Invoer met fouten is rood gemarkeerd in de lijst. Details van de fout zullen " "weergegeven worden als u zo'n invoer selecteert." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Het bestand is veilig opgeslagen." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Het bestand is veilig opgeslagen en gecompileerd naar het mo-formaat, maar " "het zal waarschijnlijk niet goed werken." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Het bestand is veilig opgeslagen, maar het kan niet gecompileerd worden naar " "het mo-formaat en dus niet gebruikt worden." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Het bestand is gecompileerd naar het MO-formaat, maar zal waarschijnlijk " "niet goed werken." #: src/edframe.cpp:1870 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." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Geen problemen met de vertaling gevonden." #: src/edframe.cpp:1894 #, 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] "" "De vertaling is klaar voor gebruik, maar regel %d is nog niet vertaald." msgstr[1] "" "De vertaling is klaar voor gebruik, maar regels %d zijn nog niet vertaald." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "De vertaling is klaar voor gebruik." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "Poedit heeft automatisch ongeldige content gerepareerd in het bestand '%s'." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Het bestand bevat dubbele items; dat is niet toegestaan in PO-bestanden, " "omdat dit het gebruik van het bestand zou belemmeren. Poedit heeft de fout " "hersteld, maar u moet vertalingen van alle items die als onduidelijk " "gemarkeerd zijn, nakijken en ze zo nodig corrigeren." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "De taal van de vertaling is niet ingesteld." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Stel de taal in" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Stel de taal in" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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; dit kan ook invloed hebben op andere functies, zoals " "meervoudsvormen." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Taal van de vertaling is hetzelfde als de brontaal." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Taal repareren" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Taal repareren" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Dit bestand bevat invoergegevens met meervoudsvormen, maar de header " "'Meervoudsvormen' ervan is niet geconfigureerd." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "De invoergegevens in dit bestand bevatten aantallen meervoudsvormen die " "verschillen van wat er in de meervoudsvorm-header van het bestand staat" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "De vereiste meervoudsvorm-header ontbreekt." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntaxfout in meervoudsvorm-header ('%s')." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "De header repareren" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Repareer de header" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "De door het bestand gebruikte meervoudsvorm-expressie is ongebruikelijk voor " "%s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Nakijken" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Wil je Engels gebruiken voor brontekst?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Dit bestand gebruikt tekenreeks-ID's in plaats van brontekst. Poedit kan " "Engelse teksten uit het \"%s\" bestand voor je laden." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Laad Engels" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Vertaald: %d van %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Resterend: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d fout" msgstr[1] "%d fouten" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d woord" msgstr[1] "%d woorden" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr "(niet-opgeslagen)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (gewijzigd)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Bijwerken van vertaalgeheugen mislukt: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Het bestand \"%s\" kon niet worden opgeslagen." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Zelfde als bron vertalingen verwijderen" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Wil je alle vertalingen verwijderen die identiek zijn aan de brontekst?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Deze actie zal alle vertalingen verwijderen die exact overeenkomen met de " "brontekst. Dit kan niet ongedaan worden gemaakt." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Behouden" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Verwijderen" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Verwijder de &gewiste vertalingen definitief" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Wilt u alle vertalingen verwijderen die niet meer worden gebruikt?" #: src/edframe.cpp:2879 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 "" "Als u doorgaat met verwijderen zullen alle vertalingen die gemarkeerd staan " "als 'gewist', definitief worden verwijderd; u zult ze dan opnieuw moeten " "vertalen als ze in de toekomst weer toegevoegd worden." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Definitief verwijderen" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Kopiëren vanuit brontekst" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopiëren vanuit brontekst" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Vertaling wissen" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Vertaling wissen" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Opmerking bewerken" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Opmerking bewerken" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Voorkomen van de code" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Voorkomen van de code" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Verberg de zijbalk" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Zijbalk tonen" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Statusbalk verbergen" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Statusbalk weergeven" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Lengte van de tekenreeks in aantal karakters: vertaling | bron" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Tekenreekslengte in aantal karakters" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Brontekst" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Enkelvoudig" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Meervoud" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Vertaling" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Vooraf vertaald" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Controle nodig" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Moet worden nagekeken" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Maak een nieuwe vertaling aan" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Maak een nieuwe vertaling vanuit dit POT-bestand." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Brontekst-ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Alles" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Vorm %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Formulier %i (ongebruikt)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nul" #: src/editing_area.cpp:788 msgid "One" msgstr "Één" #: src/editing_area.cpp:790 msgid "Two" msgstr "Twee" #: src/editing_area.cpp:804 msgid "Other" msgstr "Overige" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Context van tekenreeks: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Tekenreeks-ID: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s-Formaat" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s-formaat" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Vertaling — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Brontekst — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "onbekende taal" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Netwerkfout: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Onbekende fout" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Gettext-catalogi samenvoegen mislukt." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Openen in editor" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Openen in editor" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Er is in het bestand geen informatie verstrekt over het voorkomen van deze " "tekenreeksen in de broncode." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Geen gebruiksinformatie" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d maal voorkomen van de code" msgstr[1] "%d maal voorkomen van de code" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Broncode niet gevonden" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit kan geen broncode tonen waarin de tekenreeks wordt gebruikt, omdat " "het bestand of niet beschikbaar is op de locatie waarnaar verwezen wordt, of " "omdat het een symbolische link is die niet naar een echt bestand verwijst." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Bestand kan niet geopend worden" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit was niet in staat bestand \"%s\" te openen." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Zoeken" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Vervangen" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opties" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Hoofd-/kleine letters negeren" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Tekstomloop" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Alleen hele woorden" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "In bronteksten zoeken" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "In vertalingen zoeken" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "In opmerkingen zoeken" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "&Alles vervangen" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "&Alles vervangen" #: src/findframe.cpp:150 msgid "&Replace" msgstr "Ve&rvangen" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Vorige" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Volgende >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Te zoeken term" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Vervangende term" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "waarschuwing: " #: src/gexecute.cpp:171 msgid "error: " msgstr "fout: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Taalnaam of code" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Taal van de vertaling" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Taal van de vertaling:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Alle tekenreeksen" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Kon Localazy projectdetails niet downloaden." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" "Er is een fout opgetreden bij het uploaden van vertalingen naar Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projecten" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Meer informatie over %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy is een sterk geautomatiseerd lokalisatieplatform waarmee iedereen " "zijn producten en inhoud gemakkelijk in meerdere talen kan vertalen." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Project toevoegen" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Project toevoegen" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit-catalogusbeheerder" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Bewerken…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Maak een nieuw vertaalproject aan" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Verwijder project" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Bewerk het project" #: src/manager.cpp:176 msgid "Update all" msgstr "Alles bijwerken" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Werk alle catalogi in het project bij" #: src/manager.cpp:378 msgid "Total" msgstr "Totaal" #: src/manager.cpp:379 msgid "Untrans" msgstr "Onvertaald" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Controle nodig" #: src/manager.cpp:381 msgid "Errors" msgstr "Fouten" #: src/manager.cpp:382 msgid "Last modified" msgstr "Voor het laatst gewijzigd" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Selecteer de directory" #: src/manager.cpp:433 msgid "Directories:" msgstr "Directory's:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Wilt u project \"%s\" \" verwijderen?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Verwijder project" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Het verwijderen van het project zal geen vertaalbestanden verwijderen." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Bevestiging" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Alle catalogen in dit project bijwerken?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Voert een update vanuit broncode uit op alle bestanden in het project." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Controleer op updates…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Catalogusbeheerder" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Voorkeuren…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "B&ewerken" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Ongedaan maken" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Opnieuw" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Plakken en aan de stijl aanpassen" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Verwijderen" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Spelling en grammatica" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Spelling en grammatica weergeven" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Document nu controleren" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Spelling controleren tijdens typen" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Grammatica en spelling controleren" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Corrigeer de spelling automatisch" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Vervanging" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Toon vervangingen" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Slim kopiëren/plakken" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Slimme aanhalingstekens" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Slimme streepjes" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Slimme links" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Tekstvervanging" #: src/menus.cpp:230 msgid "Transformations" msgstr "Omzettingen" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Zet om in hoofdletters" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Zet om in kleine letters" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Zet om in beginhoofdletters" #: src/menus.cpp:237 msgid "Speech" msgstr "Spraak" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Beginnen met spreken" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Stoppen met spreken" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "B&eeld" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Toon de taakbalk" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Pas de taakbalk aan…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Ga naar volledig scherm" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Venster" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimaliseren" #: src/menus.cpp:264 msgid "Zoom" msgstr "In-/uitzoomen" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Welkom bij Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Alles naar de voorgrond" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informatie over de vertaler" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Naam:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Uw naam" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-mailadres:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "jij@voorbeeld.nl" #: src/prefsdlg.cpp:190 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 header 'Recentste-" "vertaler' van de GNU-gettext-bestanden in te stellen." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Bewerken" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Automatisch het MO-bestand compileren bij het opslaan" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Controleer de spelling" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Altijd de cursor in het tekstinvoerveld zetten" #: src/prefsdlg.cpp:211 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 "" "Nooit de lijst met strings als actief venster instellen; als deze optie " "aanstaat, moet je Ctrl-pijltjestoetsen gebruiken voor de " "toetsenbordnavigatie, maar je kan ook meteen tekst typen, zonder met de " "tabtoets het actieve venster te hoeven veranderen." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Weergave" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Aangepast lettertype voor lijst gebruiken:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Aangepast lettertype voor tekstvelden gebruiken:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Verander de interface-taal" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(vereist Windows 8 of hoger)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Algemeen" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Gebruik het vertaalgeheugen" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Beheren…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Tijdens het bijwerken vanuit bronnen" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "onduidelijke overeenkomst binnen het bestand" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "gebruik vooraf-vertalen vanuit TM" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit kan proberen nieuwe invoer alleen vanuit eerdere vertalingen in het " "bestand in te vullen of vanuit het gehele vertaalgeheugen. Het gebruik van " "het TM zal niet erg effectief zijn als het bijna leeg is, maar het zal beter " "worden als u er meer vertalingen aan toevoegt." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Opgeslagen vertalingen:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Databasegrootte op schijf:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importeer vertaalbestanden…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importeer vertaalbestanden…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importeer vanuit TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importeer vanuit TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Exporteer naar TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Exporteer naar TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Resetten" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Selecteer de te importeren taalbestanden" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Selecteer de te importeren TMX-bestanden" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX-bestanden" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Vertalingen importeren..." #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Vertaalgeheugen importeren mislukt." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importeren van \"%s\"…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s vertaling is geïmporteerd." msgstr[1] "%s vertalingen zijn geïmporteerd." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exporteren als..." #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Vertalingen exporteren…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Vertaalgeheugen exporteren naar “%s†mislukt." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Reset het vertaalgeheugen" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Weet u zeker dat u het vertaalgeheugen wilt resetten?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Het resetten van het vertaalgeheugen zal onherroepelijk alle opgeslagen " "vertalingen eruit wissen; u kunt deze actie niet ongedaan maken." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Vertaalgeheugen" #: src/prefsdlg.cpp:730 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 "" "Er worden broncode-extraheerders gebruikt om vertaalbare tekenreeksen in de " "broncode-bestanden te vinden en te extraheren, zodat ze vertaald kunnen " "worden." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Aangepaste extraheerders:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Aangepaste extraheerders:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU-gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Ondersteunt alle programmeertalen herkend door GNU-gettext-tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript en andere)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Verwijder de extraheerder" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Weet u zeker dat u de extraheerder '%s' wilt verwijderen?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extraheerders" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Accounts" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Automatisch op updates controleren" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Neem bèta-versies op" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Bèta-versies bevatten de nieuwste functies en verbeteringen, maar kunnen " "iets minder stabiel zijn." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Updates" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Deze instellingen hebben invloed op de interne opmaak van de PO-bestanden; " "pas ze aan als u specifieke eisen hebt, bijv. vanwege versiecontrole." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Regeleindes:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (aanbevolen)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Tekstterugloop bij:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Behoud de opmaak van bestaande bestanden" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Geavanceerd" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Instellingen" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Tekenreeksen voorbereiden…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Vooraf vertalen vanuit het vertaalgeheugen…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u string vooraf vertaald" msgstr[1] "%u strings vooraf vertaald" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Vooraf vertalen…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d invoer is vooraf-vertaald." msgstr[1] "%d woorden zijn vooraf-vertaald." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "De vertalingen zijn gemarkeerd ter controle, omdat ze mogelijk onnauwkeurig " "zijn; u dient te controleren of ze juist zijn." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Er konden geen invoergegevens vooraf vertaald worden." #: src/pretranslate.cpp:218 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 gelijk zijn aan de inhoud van dit " "bestand; het is alleen effectief voor semi-automatische vertalingen, nadat " "Poedit voldoende geleerd heeft van bestanden die u handmatig vertaald hebt." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Kan niet vooraf vertalen zonder brontekst." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Vooraf vertalen" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Vooraf-vertaling vereist dat brontekst beschikbaar is. Het werkt niet als " "alleen ID's zonder de werkelijke tekst worden gebruikt." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Kan niet vooraf vertalen uit onbekende taal." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Vooraf-vertaling vereist dat de taal van de brontekst gekend is. Poedit kon " "deze niet detecteren in dit bestand." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Vul alleen exacte overeenkomsten in" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Standaard worden onnauwkeurige resultaten ook opgenomen, maar gemarkeerd als " "werk nodig. Vink deze optie aan om alleen perfecte overeenkomsten op te " "nemen." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Exacte overeenkomsten niet markeren ter controle" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Schakel dit alleen in als u de kwaliteit van het TM vertrouwt; standaard " "worden alle overeenkomsten uit het TM gemarkeerd voor controle en moeten ze " "vóór het gebruik nagekeken worden." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "De vooraf-vertaling zoekt automatisch exacte of onduidelijke overeenkomsten " "in het vertaalgeheugen voor niet-vertaalde tekenreeksen en vult hun " "vertaling in." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Fout: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d fout opgetreden:" msgstr[1] "%d fouten opgetreden:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Er is een fout opgetreden." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d fout opgetreden." msgstr[1] "%d fouten opgetreden." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Annuleren…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Sleep mappen of bestanden hierheen" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Sleep mappen of bestanden hierheen" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Voeg mappen toe…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Voeg mappen toe…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Voeg bestanden toe…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Voeg bestanden toe…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Voeg joker toe…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Voeg joker toe…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Geef weer in de Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Toon in de Verkenner" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Toon in Map" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Paden" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Uitgesloten paden" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Geavanceerde extractie-instellingen" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Extraheer opmerkingen voor vertalers vanuit:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Opmerkingen voorafgegaan door:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Alle opmerkingen" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Aanvullende xgettext-vlaggen:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Aanvullende zoektermen" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Naam van het project waar de vertaling voor is" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Teamnaam en e-mailadres of URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "bijv. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (aanbevolen)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Sla het bestand eerst op; deze sectie kan tot dan toe niet bewerkt worden." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Placeholders correctheid" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Plaatsvervanger \"%s\" ontbreekt in de vertaling." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Een overbodige aanduiding \"%s\" die geen brontekst bevat." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Meervoudsvorm-vertalingen" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Niet alle meervoudsvormen zijn vertaald." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Inconsistent gebruik van hoofd- en kleine letters" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "De vertaling moet beginnen als een zin." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "De vertaling moet beginnen met een kleine letter." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Inconsistent gebruik van witruimte" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "De vertaling begint niet met een spatie." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "De vertaling begint met een spatie, maar de brontekst niet." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "In de vertaling ontbreekt een regelafbreking aan het eind." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "De vertaling eindigt met een regelafbreking, maar de brontekst niet." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "In de vertaling ontbreekt een spatie aan het eind." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "De vertaling eindigt met een spatie, maar de brontekst niet." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Leestekencontroles" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "De vertaling moet eindigen met \"%s\"." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "De vertaling mag niet eindigen met \"%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "De vertaling eindigt met \"%s\", maar de brontekst met \"%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Cloud" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Menu wissen" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Menu wissen" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Opmerking:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Bijwerken" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Verwijderen" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Verwijder de opmerking" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Wijzig project" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Projectnaam:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Bladeren" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Map aan de lijst toevoegen" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Oké" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Bestand" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Nieuw..." #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nieuw vanuit &POT/PO-bestand..." #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nieuw vanuit &POT/PO-bestand..." #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Openen..." #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Recent bestand openen" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Open recente" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Open cloudvertaling…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Open cloudvertaling…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Startscherm" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Startscherm" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Catalogus&beheerder" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Catalogus&beheerder" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Sluiten" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "Op&slaan" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Opslaan &als…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Opslaan &als…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Naar MO-formaat compileren..." #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&xporteren als HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Controleer op updates…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Instellingen…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Voorkeuren" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Afsluiten" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Afsluiten" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopiëren vanuit de enkelvoudsvorm" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopiëren vanuit de enkelvoudsvorm" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "De vertaling behoeft &controle" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "De vertaling behoeft &controle" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Bewerk de &opmerking" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Bewerk de &opmerking" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Suggesties" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Zoeken…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Vervangen…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Volgende zoeken" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Vorige zoeken" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Zoeken en vervangen…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Volgende zoeken" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Vorige zoeken" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Toon het tekenreeks-&ID" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Toon tekenreeks-&ID" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Toon waarschuwingen" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Toon waarschuwingen" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Sorteren op bestands&volgorde" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Sorteer op bestands&volgorde" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Sorteren op &bron" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Sorteren op &bron" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Sorteren op ver&taling" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Sorteren op ver&taling" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Groeperen naar context" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Groeperen naar context" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Invoer met fouten eerst" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Invoer met fouten eerst" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Onvertaalde invoer eerst" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Onvertaalde invoer eerst" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Toon hoe vaak de code voorkomt" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Toon hoe vaak de code voorkomt" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Toon de zijbalk" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Toon de statusbalk" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Vertaling" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Bijwerken vanuit de broncode" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Bijwerken vanuit de broncode" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Synchroniseren met Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Vooraf-ver&talen…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "Vertalingen &valideren" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "Vertalingen &valideren" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Zelfde als bron vertalingen verwijderen" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Gewiste vertalingen definitief verwijderen" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Gewiste vertalingen definitief verwijderen" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "Eigenscha&ppen..." #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Navigeren" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Klaar en volgende" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Klaar en volgende" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Eerder bewerkt" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Eerder bewerkt" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Vorige vertaling" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Vorige vertaling" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Volgende vertaling" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Volgende vertaling" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Vo&rige onvoltooide" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Vo&rige onvoltooide" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "&Volgende onvoltooide" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "&Volgende onvoltooide" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Vorige meervoudsvorm" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Vorige meervoudsvorm" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Volgende meervoudsvorm" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Volgende meervoudsvorm" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Online-&hulp" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Online-hulp" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Handleiding &GNU-gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU-gettext-handleiding" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Over Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Over" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Instellen extraheerder" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lijst met extensies, gescheiden door puntkomma's (bijv. *.cpp; *.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Oproep:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Commando om vertalingen te extraheren:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Dit is het commando dat gebruikt wordt om de extraheerder te starten;\n" "%o wordt aangevuld naar de naam van het uitvoerbestand, %K naar de lijst\n" " met trefwoorden, %F naar de lijst met invoervelden,\n" "%C naar de karakterset-vlag (zie hieronder)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Een item in de trefwoordenlijst:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Dit wordt voor elk trefwoord aan de opdrachtregel \n" " toegevoegd; %k wordt aangevuld tot het hele trefwoord." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Een item in de lijst met invoerbestanden:" #: src/resources/prefs.xrc:107 #, c-format 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 \n" " aan de opdrachtregel toegevoegd; %f wordt aangevuld tot de bestandsnaam." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Broncode-karakterset:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Dit wordt alleen aan de opdrachtregel toegevoegd als de broncode-" "karakterset \n" "is opgegeven; %c wordt aangevuld tot de karaktersetwaarde." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Vertalingseigenschappen" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Projectnaam en versie:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Taalteam:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Meervoudsvormen:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Gebruik de standaardregels voor deze taal" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Aangepaste expressie gebruiken" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Kom meer te weten over meervoudsvormen" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Karakterset:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Geavanceerde extraheer-instellingen…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Geavanceerde extraheer-instellingen…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Vertalingseigenschappen" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Bronpaden" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Bronpaden" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Extraheer tekst uit de bronbestanden in de volgende directory's:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Root-pad:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Trefwoorden van de bronnen" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Trefwoorden van bronnen" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Gebruik deze trefwoorden (functienamen) om vertaalbare strings in\n" "bronbestanden te herkennen:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Gebruik ook standaardtrefwoorden voor ondersteunde talen" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Kom meer te weten over gettext-trefwoorden" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Open het bestand" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Sla het bestand op" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Valideren" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "De vertaling op fouten controleren" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Bijwerken vanuit de code" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Bijwerken vanuit de code" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Bijwerken vanuit de broncode" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Zijbalk" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "De zijbalk weergeven of verbergen" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Vorige brontekst" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "De oude brontekst (voordat hij gewijzigd werd tijdens een update) waar de nu " "onnauwkeurige vertaling naar verwijst." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Opmerkingen voor vertalers" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Opmerking" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Opmerking toevoegen" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Opmerking toevoegen" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Verwijder uit het vertaalgeheugen" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Verwijder uit het vertaalgeheugen" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Vertaalsuggesties" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Geen overeenkomsten gevonden" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Geen overeenkomsten gevonden" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Deze tekenreeks is gevonden in het vertaalgeheugen van Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Vertaalsuggesties vereisen dat brontekst beschikbaar is. Ze werken niet als " "alleen ID's zonder de actuele tekst worden gebruikt." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Vertaalsuggesties vereisen dat de brontaal van de tekst gekend is. Poedit " "kon het niet detecteren in dit bestand." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Programma: %s kan niet uitgevoerd worden" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Het TMX-bestand heeft een verkeerde opmaak." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "De vertaalgeheugen-database is beschadigd: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Vertaalgeheugenfout: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Gebruik de standaardtaal)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Taalselectie" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Kies uw voorkeurstaal" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "U moet Poedit opnieuw starten voordat deze verandering effect heeft." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Tijdelijke map maken niet mogelijk." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Er zijn geen vertalingen; dat is ongebruikelijk." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "De eenvoudigste manier om dit bestand te vullen met vertalingen is het bij " "te werken vanuit een POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Bijwerken vanuit POT-bestand" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Haal vertaalbare tekenreeksen uit een bestaand POT-sjabloon." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "U kunt ook vertaalbare tekenreeksen rechtstreeks extraheren uit de broncode:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Extraheer vanuit de bronnen" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Configureer broncode-extractie in 'Eigenschappen'." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versie %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Maak een nieuw aan" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Maak een nieuwe vertaling aan vanuit een POT-sjabloon." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Blader door de bestanden" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Open en bewerk de vertaalbestanden." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Cloud project vertalen" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Werk online samen met andere mensen." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Recente bestanden" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Synchroniseren" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Synchroniseer de vertaling met Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Over %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s-voorkeuren" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Over %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Services" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Verberg %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Verberg overige" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Toon alle" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Stoppen met %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Voorkeuren…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Voorkeuren..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Voorkeuren..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Toepassen" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Toepassen" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Terug" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Terug" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Annuleren" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Wissen" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Wissen" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopiëren" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Kni&ppen" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Knippen" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Bewerken" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Afsluiten" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Hulp" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nieuw" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Nieuw" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Nee" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Nee" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Oké" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Openen…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Openen..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Openen..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Plakken" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Plakken" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Voorkeuren" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "Opnie&uw doen" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Vernieuwen" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Opslaan als" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Opslaan als" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "&Alles selecteren" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Alles selecteren" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Ongedaan maken" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Ja" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ja" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Omhoog" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Omlaag" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Pijl naar links" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Pijl naar rechts" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Waarschuwing: " poedit-3.6.3/locales/kk.mo0000644000175100001660000021321715011674364011072 Þ•”¼q\) 7 !7 -7&87_7<s7°7JÃ7g8 v8€8 8™8  8®8µ8»8Ã8Ê8Ñ8×8ß8î8ý89 99&9:9>9P9b9h9m9u9}99¡9¥9 ©9 ¶9Ã9Ì9Õ9 Ü9é9ù9:%:4:P:l:r:x::‡::§: ¾: Ì: Ú:ç:í: ;%;>;W;n;…;‹;;§;·; Õ; á;ë;ô;ü;< < <"< 1<=< M<Y< s<€< <›<«<¿<Ú<ã<= =@= V= c=1o='¡=É=æ= > >7>6I>€>) >Ê> Ï>]Ú>8?<K?Dˆ?$Í?ò? ù?€@‡@ Ž@"œ@¿@+Ú@)A 0A;AMA_ApAƒAŒAŸA»A×A#ìAB%B4B :BEB WBbBtBzB‹B%œBÂB ÝBþBCC'C 8CFC/aC ‘CkžC DD"D8DKDaD-€D1®DàD ùDE)EEE eEsExE‹EžE³E·EÎEÕEôEF$F3FFF;YF •F'¢F^ÊF?)G iG wG„G*—GÂG"ÕG5øG.HIHdHjH oH }H ‹H ˜H ¥H²HÃHËHÓHÚHfìHSImIu‡IýIJ""JEJ LJWJfJ wJ„J0•JÆJàJ#õJ<KVK fK*qK0œK!ÍK'ïKLL2L(QLTzLÏL ÔL ÞLìLMM&M ;M EM SM `MmM|M‹M¥M­M ¾MÊM ÒMÝM âMïMÿMN8N©;N‡åNzmOèO ïOûOP*P=PYPsPzPP®P ÆPçP ïP üPQQ$Q;:Q(vQŸQ¼QÏQ ÞQ èQöQR ,R7RKR:dR ŸR<­R êRŒ÷R.„S³SÃS*ÓSþST )T3TJT*ST~T„T•T ¦T ±T»¼TxU|U•U ®UºUËUÜUßU#ðU\VqV'‚V/ªVÚV$ïV%W:WPWSW’WWêWX X +XLXcX }X‡X–X ¥X±X¹XÁXÉXÏXäXùXY(Y¹Y¿YÕY=ÛYZ1,Z^ZnwZEæZ,[3[;L[ ˆ[–[[@·[õø[¿î\,®],Û]^ ^(^27^*j^•^ލ^w7_j¯_ `&`5`D`%Y``”`©`¾`Ð`â` ü` aaa/a5aPa8Ua Ža›a a ¨a ´a ÀaÎa Öa ãaða b(b7b=bzVbÑbâbéb îb úb c cc &c 1c >c Hc Uc aclc‡c˜c"°cÓcïc d d (d 4dAd[dkd{d Žd ›d©dºdÉd âdïdÿd ee%e-e6e >eLeeexe‘eše£e ´e Áe ÍeÚeîeþef'f7fLf†afèfg g%g4gGg Xgfg wg…gKŒgØgíg üg hh2hHh1dh–h ¥h ³hŽ¿h=NiŒi jj(#jLj Tjbj+j«j ®j8¸j"ñjkÂ%kèkCl8Glî€lŸom8n1HnRzncÍnQ1oƒo'žo:ÆolpPnp-¿pCípA1qKsq0¿q.ðqŽr!®r)Ðr-úr+(s8TsCsuÑs,GtLtt;Át]ýt…[uJáu[,voˆv«øv7¤wmÜw_Jx[ªxy yy4y Qy]yry…yy2´y"çy z"z9z~QzqÐzB{ˆU{Þ{â{ö{ û{|/|F|N| U|"`|$ƒ|¨|Á|Ú|ë|û| }$}3};}K}a}$~}£}Ã}Ý}ó} ~#&~VJ~¡~¸~Á~ Ô~ß~ý~*;B.J y…ަHª5óm)€7—€ Ï€3Ù€a oty.– Åæ‚"‚9‚L‚^‚q‚ƒ‚–‚ª‚º‚Ë‚Ý‚ð‚ ƒ!ƒ=ƒ\ƒtƒƒ¦ƒ¼ƒ̓æƒ!öƒ§„À…à…Cú…>†gZ††wÚ†…R‡؇臈ˆ%ˆ:ˆ Oˆ[ˆnˆ ~ˆ ˆˆ –ˆ!¢ˆ!Ĉ æˆ ôˆ þˆ! ‰!-‰O‰-W‰-…‰ ³‰ ¿‰ ɉ։扊 Š(Š.ŠKŠ hŠ sŠ~ВЦнŠÜŠûŠ3‹3H‹ |‹†‹˜‹ ¬‹º‹/׋/Œ'7Œ'_Œ‡Œ—Œ:«Œ:æŒ-!-O(}(¦ ÏÙ*ß# ŽF.ŽuŽ‡Ž˜Ž¨Ž¹ŽÐŽÙŽíŽ +'Ai$}¢Áà'ö*/IyOLàO-‘2}‘°‘Α—è‘O€’:Ð’6 “B“X“Rl“Z¿“/”9J” „””²¨”([•g„•xì•De–ª–³–Ï–ç—ù—=˜AL˜SŽ˜râ˜U™,k™,˜™+Å™.ñ™ š(0šLYš@¦š*çš4›*G›r›Ž››!»›Ý›!û›œ&œDœVbœ8¹œBòœ5J"`/ƒ,³Fà‚'ž ªž ·ž ÁŸ/Ο7þŸ/6 7f Dž Oã g3¡3›¡Ï¡&é¡<¢7M¢…¢š¢4«¢4à¢1£G£7W£ £2š£#Í£2ñ£$¤#<¤`¤Rx¤ˤ9ۤإsî¥b¦s¦#„¦Y¨¦#§:&§ma§YϧY)¨ ƒ¨ ¨&š¨&Á¨%è¨%©4©N© h©s© ƒ© ©·°©7hª7 ª´Øª «&®«0Õ«¬¬$¬,D¬&q¬,˜¬gŬ0-­*^­K‰­iÕ­)?®i®:„®e¿®R%¯Tx¯ͯ)Ö¯)°3*°‡^°æ° ï°ü°' ±23±0f±#—± »±ȱ×±ï±+²3²-Q² ²*² ¸² IJϲ å²&ð²-³*E³Ip³º³½³!Í´ïµ · · -·7N· †·7§·.ß·¸&¸GD¸4Œ¸4Á¸ ö¸¹ ¹$+¹ P¹'[¹Cƒ¹:ǹº!º9ºNº(VºPº1к»'»B»\W»´»kÑ»&=¼d¼Lw½Ľã½C¾-D¾)r¾œ¾.®¾ ݾDê¾/¿$7¿$\¿¿™¿a±¿Á$Á$AÁfÁ |Á Á¾Á%ÅÁVëÁ}BÂ%ÀÂ=æÂm$Ã*’ÃD½ÃHÄ6KĂćÄsŽÄ9Æ+<ÆhÆE€Æ(ÆÆ+ïÆÇ/ÇKÇgÇ ƒÇ Ç—Ç ¨Ç&³Ç&ÚÇ"È#$ÈÑHÈÉA-É oÉw|É ôÉ8Ê+NÊ–zÊ{Ë Ë*˜ËgÃË+ÌFÌ0MÌ\~̼ÛÌI˜ÎUâÏ-8Ð"fЉÐ&¨ÐaÏÐI1Ñ!{ÑÑÈ´Ò­}Ó+Ô>ÔTÔ$jÔ`Ô"ðÔ"Õ/6Õ,fÕ,“Õ&ÀÕçÕ øÕÖ.Ö@Ö2OÖ‚Ö`‹ÖìÖ ××$,×$Q×v×…×$˜×$½×â×þ×@Ø UØ0bØù“Ø"Ù°Ù ¿ÙÌÙìÙ Ú)ÚFÚbÚ%Ú§ÚÁÚÙÚøÚCÛZÛ(tÛRÛ*ðÛ(ÜDÜ\ÜtÜ(ŠÜL³Ü/Ý0Ý+JÝ0vÝ'§Ý$ÏÝôÝ5Þ(FÞ/oÞŸÞ'¹ÞáÞùÞßß!ß,8ßeß,{ß¨ß ±ß5¾ßôß!à#4à8Xà:‘à/Ìà8üà:5á/pá) áúÊá1Åâ,÷â$$ã8Iã"‚ã/¥ã=Õã/ä=Cä ä~Žä9 åGåeå(ƒå!¬å#Îå?òåg2æšæ¸æÑæýäæPâçÉ3èýè1éDDé‰é!žéPÀéIê[ê^ê}sêTñê!Fëxhë3áì~íh”í£ýí¡ïW·ðYñ†iñ ðñ‘ò%"ó/HóIxó¦ÂóˆiôNòô–Aõ’ØõŽköMúöCH÷ÑŒ÷-^ø=ŒøAÊøE ùARùŽ”ùÙ#úTýúƒRûqÖû¬Hü#õüœþ¶þËDÿBZS¶®œeš ¨(Ã1ì-!K4m#¢UÆ24O#„'¨ÍвžQëgSZuOˆØ&ò 2 A Ea ]§ ' '- U #q • ,± Þ þ , '@ ;h _¤ C (H 6q B¨ Wë TC ¶˜ 2O‚#‘µ,Ç#ôAZ y†qŽ56%Lr wm¥†e,’M¬©ú¤«ºdÒ7=VE”Úú    + 2?CHN^nŒ ¢®Á0á)*T*dayb~ƒFga$0©ºðBçBì(IudŽh´%c•4–s›fXÙYc6ñ¤0BPf* 7~vgEl;>rSå c õUz¶˜d‘QKu“kÚÀçÓD’ÔÓNæ/öH–L|Zyá²@CS?L+ #þ,m'ÃHY›v’~ ; ÊÁIŠ×`r9±-\ªý%& µ =TÇËk³vìªãŒí„P¾h>bsDõѧ5 7[ò…ÿ<Û}'­ãô뙡!Á”1·!]÷­ñÔï` »×? "+«;Ì<Þ¸—X¥-úRàûå¨À’ÈG‹9AÊ»³^4´TâfÜ!¿È(« ÞÒP £ ‰$\0/Ãöíß}®"l k·Üm¼¸¹tRä1e5pWèºé? b˜}„ 8L¬…^½#$d®/eêF²jŽnÅO¯Y8€Ÿ9QCDwútoýaG-UGFÆŠ¼=E2qÆÛ[h'ˆ.üšè‡‰¿&1ùÍ4†i]&7MÖ—£{T)Ïû3¶•‡Ðq:@‘A“øtV2ŽV:î‹3gØßq_“¦‚Z,øn=ÂW„¦Äœ‹½Ëm,XCü(™…±Ð_`e>æÒžÝ^ÇN|€xiÙiK°¾ÕI)¤+{*"W‘@ä[JNw÷¡Sj|MZ§óòÄoOÎþáp.oxJˆzM.uQØêé°2¯šOΉŒ̓pH‚zù† EÕ¹ˆ#ŠÿU)¨É€Å¢¥ƒðÉ%à\µ3â5r¬KŸ*{y žRôxAós†”6nVëÚÖÑ¢8:ÝŒj‚Ï©6lï<w_Ì]‡J (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.UntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Kazakh Language: kk_KZ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: kk X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (түрлендірілген) (Ñақталмаған)%d код кездеÑуі бар%d код кездеÑуі бар%d жазба%d жазба%d жазба алдын-ала аударылды.%d жазба алдын-ала аударылды.%d қате%d қатеÐударма ішінен %d мәÑеле табылды.Ðударма ішінен %d мәÑеле табылды.%i жол "%s" файлынан Ð´Ò±Ñ€Ñ‹Ñ Ð¶Ò¯ÐºÑ‚ÐµÐ»Ð¼ÐµÐ³ÐµÐ½.%i жол "%s" файлынан Ð´Ò±Ñ€Ñ‹Ñ Ð¶Ò¯ÐºÑ‚ÐµÐ»Ð¼ÐµÐ³ÐµÐ½.%s пішімі%s баптаулары%s пішімі&ОÑÑ‹ туралыPoedit Ñ‚&уралыІÑке &аÑыру&Ðртқа&Ð‘Ð°Ñ Ñ‚Ð°Ñ€Ñ‚Ñƒ&ТазартуЖа&бу&КөшіруӨ&шіруДа&йын және келеÑіДа&йын және келеÑÑ–&Түзету&Файл&Табу…&GNU gettext нұÑқаулығы&GNU gettext нұÑқаулығыӨ&туКонтекÑÑ‚ бойынша &топтауКонтекÑÑ‚ бойынша &топтау&Көмек&Жаңа&Жаңа…&КелеÑÑ– >&КелеÑÑ– аударма&КелеÑÑ– аударма&Жоқ&ОКЖе&лідегі көмекЖе&лідегі көмекÐ&шу...Ð&шу…&КіріÑтіру&Баптаулар&Баптаулар…&Ðлдыңғы аударма&Ðлдыңғы аудармаҚаÑ&иеттері…Ө&шірілген аудармаларды жою&Өшірілген аудармаларды жою&ШығуҚа&йталауÐлмаÑты&ру&СақтауҚалайша &ÑақтауКод кездеÑулерін көр&ÑетуКод кездеÑулерін көр&ÑетуІ&Ñке қоÑылу терезеÑіІ&Ñке қоÑылу терезеÑÑ–&Ðударма&БолдырмауÐлд&ымен аударылмаған нәрÑелер Ðлд&ымен аударылмаған нәрÑелер &БаÑтапқы кодтан жаңарту&БаÑтапқы кодтан жаңартуÐудармаларды &текÑеруÐудармаларды &текÑеруТү&рі&Иә(Ðегізгі тілді қолдану)(кіру орындалмаған)(Windows 8 немеÑе одан жаңаÑын талап етеді)< &Ðлдыңғы<атауÑыз>%s туралыТіркелгіТіркелгілерҚоÑуПікір қоÑуФайлдарды қоÑу…Бумаларды қоÑу…Жобаны қоÑуШаблон бойынша қоÑу…Пікір қоÑуТізімге буманы қоÑуФайлдарды қоÑу…Бумаларды қоÑу…Жобаны қоÑуШаблон бойынша қоÑу…ҚоÑымша кілттік ÑөздерҚоÑымша xgettext жалаушалары:КеңейтілгенЭкÑтракторлардың кеңейтілген баптаулары…ЭкÑтракторлардың кеңейтілген баптауларыЭкÑтракторлардың кеңейтілген баптаулары…Барлық аудармалар файлдарыБарлық пікірлерБарлық жолдарСонымен қатар, үнÑіз келіÑім бойынша кілтÑөздерді қолдауы бар тілдер үшін қолдануФокуÑты әрқашан мәтін енгізу жолына Ð¾Ñ€Ð½Ð°Ñ‚ÑƒÐšÑ–Ñ€Ñ–Ñ Ñ„Ð°Ð¹Ð»Ð´Ð°Ñ€ тізімінің біреуі:Кілт Ñөздер тізімінің біреуі:Сыртқы түріІÑке аÑыру"%s" ÑкÑтракторын өшіруді шынымен қалайÑыз ба?Ðудармалар жадыÑын таÑтауды шынымен қалайÑыз ба?Жаңартуларға автотекÑеруСақтағанда, MO файлын авто жаÑауÐртқаÐегізгі жолы:Бета нұÑқаларында Ñоңғы мүмкіндіктер және жақÑартулар бар, бірақ, олар тұрақÑыздау болуы мүмкін.Барлығын алдына әкелуPO файлы қате: msgstr көпше түрі msgid_plural нәрÑеÑіз көрÑетілгенPO файлы қате: msgstr жекеше түрі msgid_plural нәрÑеÑімен бірге қолданылғанÐударма жолындағы жарамÑыз белгілеу.ШолуФайлдарды шолуҮнÑіз келіÑім бойынша, дәлÑіз нәтижелер де қоÑылады, бірақ, жөндеу керек етіп белгіленеді. Тек дәл ÑәйкеÑтіктерді қолдану үшін бұл опциÑны Ñ–Ñке қоÑыңыз.Ð‘Ð°Ñ Ñ‚Ð°Ñ€Ñ‚ÑƒÐ‘Ð°Ñ Ñ‚Ð°Ñ€Ñ‚Ñƒâ€¦Ð£Ð°Ò›Ñ‹Ñ‚ÑˆÐ° буманы жаÑау мүмкін емеÑ.Бағдарламаны орындау мүмкін емеÑ: %sБелгіÑіз тілден алдын-ала аудару мүмкін емеÑ.Қайнар көз мәтіні болмаған кезде алдын-ала аудару мүмкін емеÑ.Ð‘Ð°Ñ Ó™Ñ€Ñ–Ð¿Ð¿ÐµÐ½ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñ‚Ð°Ñ€ &баÑқарушыÑыКаталогтар &баÑқарушыÑыКаталогтар баÑқарушыÑыБағдарлама тілін өзгертуКодтауы:Құжатты қазір текÑеруГрамматиканы теру кезінде текÑеріп отыруЕмлені теру кезінде текÑеріп отыруЖаңартуларды текÑеру…Ðударманы қателерге текÑеруЖаңартуларды текÑеру…Емлені текÑеруТазартуМәзірді тазартуÐударманы тазартуМәзірді тазартуÐударманы тазартуЖабуКод кездеÑулеріКод кездеÑулеріБаÑқа адамдармен бірігіп онлайн Ð¶Ò±Ð¼Ñ‹Ñ Ð¶Ð°Ñаңыз.БаÑтапқы код файлдарын жинау…Ðудармаларды шығарып алу командаÑÑ‹:ТүÑіндірмеТүÑіндірме:Пікірлер префикÑÑ–:MO файлына компилÑциÑлау…Қалайша компилÑциÑлау…КомпилÑциÑланған аудармалар файлдарыБаптаулар ішінен баÑтапқы кодтан аудармаларды шығарып алуды баптаңыз.РаÑтауҚолдау көрÑетілетін бұлттық Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð°Ð»Ð°Ñ€Ñ‹Ð½Ð´Ð° баÑқарылатын аудармаларды Ñинхрондау үшін оларды Poedit қолданбаÑына байланыÑтырыңыз.КөшіруЖекеше түрден көшіріп алуБаÑтапқы код мәтінінен көшіруЖекеше түрден көшіріп алуБаÑтапқы код мәтінінен көшіруЕмлені автоматты түрде түзетіп отыруLocalazy жоба ақпаратын жүктеп алу мүмкін емеÑ.Файлдын жүктеу мүмкін емеÑ, ол зақымдалған болуы мүмкін.%s файлын Ñақтау мүмкін емеÑ.ЖаңаÑын жаÑауЖаңа аударманы жаÑауPOT файлынан жаңа аударманы жаÑау.Жаңа аудармалар жобаÑын жаÑауCrowdin қатеÑÑ–Òš&иып алуТаңдауыңызша ÑкÑтракторлар:Таңдауыңызша ÑкÑтракторлар:Саймандар панелін баптау…Қиып алуДерекқордың диÑкідегі өлшемі:ӨшіруÐудармалар жадыÑынан өшіруЭкÑтракторды өшіруÐудармалар жадыÑынан өшіруЖобаны өшіруТүÑіндірмені өшіруЖобаны өшіруЖобаны өшіру ешбір аударма файлын өшірмейді.Бумалар:"%s" жобаÑын өшіруді қалайÑыз ба?Файлды диÑктен қайта жүктеуді қалайÑыз ба? Олай Ñ–ÑтеÑеңіз, Poedit ішіндегі Ñақталмаған өзгеріÑтеріңіз жоғалатын болады.ОÑыдан былай қолданылмайтын аудармаларды өшіруді қалайÑыз ба?СақтамауСақтамауКелеÑіде көрÑетпеуДәл ÑәйкеÑтіктерді жөндеу керек етіп белгілемеуКелеÑіде көрÑетпеуСоңғы аудармаларды жүктеп алу…Бұл жобада аудармаларды жүктеп алу мүмкіндігі Ñөндірілген.ОÑында бумалар немеÑе файлдарды тартып әкеліңізОÑында бумалар немеÑе файлдарды тартып әкеліңіз&ШығуТүзетуТү&Ñіндірмені түзетуТү&Ñіндірмені түзетуТүÑіндірмені түзетуТүÑіндірмені түзетуЖобаны түзетуЖобаны түзетуӨңдеуТүзету…Пошта:Толық Ñкранға өтуБұл файлдағы нәрÑелердің көпше түрлері файлдың Plural-Forms өріÑіндегі көрÑетілген көпше түрінен өзгешеÐлдымен қателері бар нәрÑелерÐлдымен қателері бар нәрÑелерҚателері бар жолдар қызыл түÑпен белгіленді. Қате ақпараты ондай жол таңдалған кезде көрÑетіледі.Файлды ашу қатеÑіФайлды Ñақтау қатеÑÑ–XLIFF файлын жүктеу қатеÑÑ–: %sҚателерБарлығыЕлемейтін жолдарTMX пішіміне ÑкÑпорттау…Қалайша ÑкÑпорттау…TMX пішіміне ÑкÑпорттау…"%s" ішіне аудармалар жадыÑын ÑкÑпорттау ÑәтÑіз аÑқталды.Ðудармаларды ÑкÑпорттау…БаÑтапқы кодтардан алуÐудармашылар үшін пікірлерді қайдан алу:КелеÑÑ– бумалардағы баÑтапқы код файлдарынан мәтінді алу:ЭкÑтрактор баптауларыЭкÑтракторларPoedit үрдіÑімен байланыÑу қатеÑÑ–.Ðлынған аудармалары бар файлды жүктеу ÑәтÑіз аÑқталды.Gettext каталогтарын біріктіру ÑәтÑіз аÑқталды.Ðудармалар жадыÑын жаңарту ÑәтÑіз аÑқталды: %sФайлФайлды ашу мүмкін емеÑ"%s" файлы жоқ болып тұр."%s" файлы аударма файлы емеÑ."%s" файлы тек оқу үшін қолжетерліқ, Ñақталмайды. Оны баÑқа атымен Ñақтаңыз.ТабуКелеÑÑ–ÐлдыңғыТабу және алмаÑтыру…ТүÑіндірмелер ішінен іздеуБаÑтапқы мәтіндерден табуÐудармалардан табуКелеÑÑ–ÐлдыңғыТілді түзетуТілді түзетуТақырыптаманы дұрыÑтауӨріÑті дұрыÑтауFlutter аудармалар файлдарыПішім %iФорма %i (қолданылмайды)GNU gettextЖалпыHTML файлдарыКөмекБүйір панелін жаÑыруҚалып-күй жолағын жаÑыруБұл хабарламаны жаÑыруБұлттық Ñинхрондау қалай Ð¶Ò±Ð¼Ñ‹Ñ Ñ–Ñтейді?IDЖоюды таңдаÑаңыз, өшірілген деп белгіленген барлық аудармалар өшірілетін болады. Олар болашақта қайта қоÑылÑа, оларды қайта аударуға керек болады.Егер Ñіз файлдарыңызға қатынауды бұрын тайдырÑаңыз, оны Жүйелік баптаулар > ҚауіпÑіздік және жекелік > Жекелік > Файлдар және бумалар ішінен Ñ–Ñке қоÑа алаÑыз.Егер Ñіз файлдарыңызға қатынауды бұрын тайдырÑаңыз, оны Жүйелік баптаулар > ҚауіпÑіздік және жекелік > Файлдар және бумалар ішінен Ñ–Ñке қоÑа алаÑыз.ЕлемеуРегиÑтрді елемеуTMX-тан импорттау…Ðударма файлдарын импорттау…TMX-тан импорттау…Ðударма файлдарын импорттау…Ðудармаларды импорттау…Қайда: %sБета нұÑқаларын қоÑаЖоғарғы/төменгі региÑтр ÑәйкеÑÑÑ–Ð·Ð´Ñ–Ð³Ñ–Ð‘Ð¾Ñ Ð°Ñ€Ð°Ð»Ñ‹Ò›Ñ‚Ð°Ñ€ ÑәйкеÑÑіздігіÐудармашы жөніндегі ақпаратОрнатуЖарамÑыз файлШақыру:JSON аударма файлдарыҰÑтауТіл атауы немеÑе кодыÐударма тілі баÑтапқы тілмен бірдей.Ðударма тілі әлі көрÑетілмеген.Ðударманың тілі:Тілді таңдауТілдік топ:Тіл:Соңғы рет өзгертілгенGettext кілттік Ñөздері туралы көбірек біліңізКөпше түрлері жөнінде білуКөбірек білу%s туралы көбірек білуCrowdin туралыЖол %d, "%s" файлында, зақымдалған (жарамÑыз %s дерегі).Жол аÑқтаулары:Ðүктелі үтірмен ажыратылған кеңейтулер тізімі (мыÑ. *.cpp;*.h):Ðғылшын тілін жүктеуLocalazy – кез келген адамға өз өнімдері мен мазмұнын бірнеше тілге оңай аударуға мүмкіндік беретін жоғары автоматтандырылған Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð°ÑÑ‹.MO файлдарын Poedit ішінде түзетуге болмайды.Кіші әріпті Ò›Ñ‹Ð»ÑƒÐ‘Ð°Ñ Ó™Ñ€Ñ–Ð¿Ñ‚Ñ– қылуБұл POT файлынан жаңа аударманы жаÑау.ЖарамÑыз тақырыптама: "%s"Тіркелгілерді баÑқаруБаÑқару…ӨзгеріÑтерді біріктіру…БүктеуКелеÑÑ– үшін аударма жобаÑының аталуыÐты:Келе&ÑÑ– аÑқталмағанКеле&ÑÑ– аÑқталмағанЖөндеу керекЖөндеу керекЖолдарға Ñ„Ð¾ÐºÑƒÑ Ð°Ð»ÑƒÒ“Ð° тыйым Ñалу. ҚоÑулы тұрÑа, пернетақта навигациÑÑÑ‹ үшін Ctrl мен жақтар пернелерін қолдануғы тиіÑтіÑіз, бірақ мәтінді тере алаÑыз, фокуÑты алу үшін Tab пернеÑін баÑу керек емеÑ.ЖаңаPOT/PO &файлынан жаңа…POT/PO &файлынан жаңа…Жаңа жолдарКелеÑÑ– көпше түріКелеÑÑ– көпше түріЖоқСәйкеÑтік табылмадыБірде-бір жазбаны алдын-ала аудару мүмкін емеÑ.Файлда бұл жолдың баÑтапқы кодтарда кездеÑетіні туралы ақпарат жоқ.СәйкеÑтік табылмадыÐудармалар мәÑелелері табылмады.Сіздің тіркелгіңізде бірде-бір аударма жобаÑÑ‹ тіркелмеген.Қолданылу ақпараты жоқКөпше түрлер толығымен аударылмаған.ÐвторизациÑланбаған, қайтадан кіріңіз.Ðудармашылар үшін еÑкертулерОКБірӨзіңіздің ÐЖ ÑапаÑына Ñенімді болÑаңыз ғана Ñ–Ñке қоÑыңыз. ҮнÑіз келіÑім бойынша, ÐЖ ішінен келген барлық ÑәйкеÑтіктер жөндеу керек ретінде белгіленеді және оларды қолдану алдында текÑеру керек болады.Тек дәл ÑәйкеÑтіктерді толтыруБұлттық аударманы ашу…СоңғыÑын ашуÐудармалар файлдарын ашу және түзету.Бұлттық аударманы ашуБұлттық аударманы ашу…Файлды ашуТүзеткіште ашуТүзеткіште ашуЖуырдағыны ашуÐшу...Ðшу…ОпциÑларБаÑқаÐлдыңғ&Ñ‹ аÑқталмағанÐлдыңғ&Ñ‹ аÑқталмағанPO аударма файлдарыPOT аударма үлгілеріPOT файлдары тек үлгілер, олардың ішінде аудармалар жоқ. Ðударманы жаÑау үшін, үлгі негізінде жаңа PO файлын жаÑаңыз.КіріÑтіруКіріÑтіру және ÑәйкеÑтендіру ÑтиліЖолдарЖобадағы барлық файлдардан баÑтапқы кодтан жаңартуды орындайды.РұқÑат етілмеген.“%s†толтырғышы аудармада жоқ.Толтырғыштың дұрыÑтығыОрнына ÑÓ™Ð¹ÐºÐµÑ PO файлын ашып, түзетіңіз. Оны Ñақтаған кезде, MO файлы да жаңартылады.Ðлдымен файлды Ñақтаңыз. Оған дейін бұл Ñанатты түзету мүмкін емеÑ.КөпшеКөпше түрі аудармаларыФайл қолданатын көпше түрлерінің өрнегі %s үшін тән емеÑ.Көпше түрлері:PoeditPoedit - каталогтарды баÑқаруPoedit "%s" файлындағы жарамÑыз құраманы автотүзеткен.Poedit жаңа жолдарды тек файлдың алдыңғы аудармаларынан, немеÑе Ñіздің аудармалар жадыÑынан толтыру талабын жаÑай алады. Ðудармалар жадыÑÑ‹ Ð±Ð¾Ñ Ð±Ð¾Ð»Ò“Ð°Ð½ кезде оны қолдану пайдаÑÑ‹ аз, бірақ, оған жаңа аудармаларды қоÑқан кезде, пайдаÑÑ‹ арта түÑеді.Poedit бұл жол қолданылатын баÑтапқы код жерін көрÑете алмайды, өйткені ол файл көрÑетілген жерде жоқ болып тұр, немеÑе ол нақты файлға көрÑетіп тұрмаған Ñимволдық Ñілтеме болып тұр.Poedit - қолдануға ыңғайлы аудармалар түзетушіÑÑ–.Poedit "%s" файлын аша алмады.Ðлдын-ала ау&дару…Ðлдын-ала аударуÐлдын-ала аударылған%u жол алдын-ала аударылған%u жол алдын-ала аударылғанÐудармалар жадыÑынан алдын-ала аудару…Ðлдын-ала аудару…Ðлдын-ала аудару әрекеті аудармалар жадыÑынан аудармалары әлі жоқ жолдар үшін дәл немеÑе дәлÑіз ÑәйкеÑтіктерді тауып, олардың аудармаларын толтырады.Ðлдын-ала аудару қайнар көз мәтінінің бар болуын талап етеді. Ðақты мәтін орнына тек ID қолданÑа, ол жаÑамайды.Ðлдын-ала аудару қайнар көз тілінің белгілі болуы талап етеді. Poedit оны бұл файлдан таба алмады.БаптауларБаптаулар...Баптаулар…Жолдарды дайындау…Бар болып тұрған файлдардың пішімдеуін Ñақтап отыруÐлдыңғы көпше түріÐлдыңғы көпше түріБұрынғы қайнар көз мәтініОÑыған дейін түзетілгенОÑыған дейін түзетілгенЖоба аты мен нұÑқаÑÑ‹:Жоба аты:Жоба:Ð–Ð¾Ð±Ð°Ð»Ð°Ñ€Ð¢Ñ‹Ð½Ñ‹Ñ Ð±ÐµÐ»Ð³Ñ–Ð»ÐµÑ€Ñ–Ð½ текÑеруТазартуӨшірілген аудармаларды жоюШығуФайл құрамаÑын оқу келеÑÑ– қатемен ÑәтÑіз аÑқталды: %sЖуырдағы файлдарҚайталауЖаңартуФайлды қайта жүктеуФайлды қайта жүктеуҚалды: %dÐлмаÑтыруБ&арлығын алмаÑтыруБ&арлығын алмаÑтыруÐлмаÑтыру жолыÐлмаÑтыру…Міндетті Plural-Forms тақырыптамаÑÑ‹ жоқ.ТаÑтауÐудармалар жадыÑын таÑтауÐудармалар жадыÑын таÑтау әрекеті одан барлық Ñақталған аудармаларды қайтармаÑтай өшіреді. Бұл әрекетті болдырмау мүмкін ÐµÐ¼ÐµÑ Ð±Ð¾Ð»Ð°Ð´Ñ‹.Finder ішінен көрÑетуТекÑеруСақтауҚала&йша Ñақтау…Қала&йша Ñақтау…Сонда да ÑақтауСонда да ÑақтауҚалайша ÑақтауҚалайша Ñақтау…ӨзгеріÑтерді ÑақтауФайлды ÑақтауСкриншоттар:Б&арлығын таңдауБарлығын таңдауИмпорттау үшін TMX файлдарын таңдаңызБуманы таңдауÐударма файлын таңдауИмпорттау үшін аудармалар файларын таңдаңызÐударма үлгіÑін таңдауӨз тіліңізді таңдаңызТілді орнатуТілді орнатуБаптаулар…Бүйір панелін көрÑетуЕмлені текÑеру және грамматиканы көрÑетуҚалып-күй жолағын көрÑетуЖол &ID көрÑетуÐлмаÑтыруларды көрÑетуСаймандар панелін көрÑетуЕÑкертулерді көрÑетуExplorer ішінен көрÑетуБумада көрÑетуБүйір панелін көрÑету/жаÑыруБүйір панелді көрÑетуҚалып-күй жолағын көрÑетуЖол &ID көрÑетуЕÑкертулерді көрÑетуБүйір панеліЖүйеге кіруШығуКіру%s ішіне кіруБұлттық тіркелгіге кіруCrowdin-ға кіруБұлттық тіркелгіге кіруШығуЖекешеÐқылды көшіріп алу/кіріÑтіруÐқылды дефиÑтерÐқылды ÑілтемелерÐқылды тырнақшалар&Файлдар реті бойынша ÑұрыптауБа&Ñтапқы коды бойынша ÑұрыптауÐудар&ма бойынша Ñұрыптау&Файлдар реті бойынша ÑұрыптауБа&Ñтапқы коды бойынша ÑұрыптауÐудар&ма бойынша ÑұрыптауБаÑтапқы код кодталуы:БаÑтапқы кодтар ÑкÑтракторлары баÑтапқы кодтар файлдарынан аударуға келетін жолдарды табу және аудару үшін шығарып алуға қолданылады.БаÑтапқы коды қолжетерÑіз.БаÑтапқы коды табылмадыБаÑтапқы код мәтініБаÑтапқы мәтін идентификаторыБаÑтапқы мәтін — %sБаÑтапқы код кілт ÑөздеріБаÑтапқы кодтар орналаÑу жолдарыБаÑтапқы код кілт ÑөздеріБаÑтапқы кодтар орналаÑу жолдарыСөйлеуЕмлені текÑеру Ñөндірілген, өйткені %s тілі үшін Ñөздік орнатылмаған.Емлені текÑеру және грамматикаСөйлеуді баÑтауСөйлеуді аÑқтауСақталған аудармалар:Мәтін контекÑті: %sМәтін анықтағышы: %sЖолдың таңбалар еÑебімен ұзындығыЖолдың таңбалар еÑебімен ұзындығы: аударма | қайнар көзіІзделінетін жолÐлмаÑтыруларҰÑыныÑтарÐударма тілі Ð´Ò±Ñ€Ñ‹Ñ ÐºÓ©Ñ€Ñетілмеген болÑа, Ò±ÑыныÑтар қолжетерÑіз болады. Көпше түрлер ÑиÑқты, баÑқа да мүмкіндіктерге кері Ó™Ñер тиюі мүмкін.БаÑтапқы мәтінде жоқ артық “%s†толтырғышы.GNU gettext Ñаймандары танитын барлық бағадарламалау тілдерін қолдайды (PHP, C/C++, C#, Perl, Python, Java, JavaScript және баÑқалары).СинхрондауCrowdin қызметімен ÑинхрондауÐударманы Crowdin қызметімен ÑинхрондауСинхрондауСинхрондау қатеÑÑ–Crowdin қызметімен Ñинхрондау ÑәтÑіз аÑқталды.Plural-Forms өріÑіндегі ÑинтакÑÐ¸Ñ Ò›Ð°Ñ‚ÐµÑÑ– ("%s").TMTMX файлдарыÐударуға келетін жолдарды тікелей бар болып тұрған POT үлгіÑінен алу.Топ аты және Ñл. пошта адреÑÑ– немеÑе ÑілтемеÑіМәтінді алмаÑтыруÐудармалар жадыÑынан бұл файлдың құрамаÑына Ò±Ò›Ñайтын жолдар табылмады. Poedit Ñіз қолмен аударған файлдардан жеткілікті ақпарат жинағаннан кейін ғана бұл жартылай автоматты аудармалар үшін пайдалы болады.TMX файлының пішімі жарамÑыз.СақтаÑаңыз, баÑқа қолданбамен жаÑалған өзгеріÑтер жоғалатын болады.Файлды MO пішіміне компилÑцилау және қолдану мүмкін емеÑ.Бұл файлда қайталанатын жазбалар болды, ол PO файлдарында Ñ€Ò±Ò›Ñат етілмейді, және файлды қолдануға жол бермейді. Poedit мәÑелені шешті, бірақ, жөндеу керек етіп белгіленген барлық жазбаларды қарап шығыңыз және керек болÑа, түзетіңіз.Файлды оның баптауларындағыдай көрÑетілген "%s" кодталуында Ñақтау мүмкін емеÑ. Оның орнына ол UTF-8 ретінде Ñақталды, және баптау ÑәйкеÑінше өзгертілді.Файл өзгертілген. ӨзгеріÑтерді Ñақтау керек пе?Файл пішімі Poedit танымайтын пішім болып табылады.Файл MO пішіміне Ñәтті компилÑциÑланды, бірақ, ол Ð´Ò±Ñ€Ñ‹Ñ Ð¶Ð°Ñамайтын ÑиÑқты.Файл Ñәтті Ñақталды және MO пішіміне компилÑциÑланды, бірақ, ол Ð´Ò±Ñ€Ñ‹Ñ Ð¶Ð°Ñамайтын ÑиÑқты.Файл қаупÑіз Ñақталды, бірақ оны MO пішіміне түрлендіру мен қолдануға болмайды.Файл Ñәтті Ñақталды."%s" файлын ашу мүмкін емеÑ."%s" файлы баÑқа қолданбамен өзгертілген.ДәлÑіз аударма ÑÓ™Ð¹ÐºÐµÑ ÐºÐµÐ»ÐµÑ‚Ñ–Ð½ еÑкі баÑтапқы код мәтіні (жаңарту кезінде өзгергенге дейін).Бұл файлды аудармалармен толтырудың ең оңай жолы - оны POT файлынан жаңарту:Ðударма Ð±Ð¾Ñ Ð°Ñ€Ð°Ð»Ñ‹Ò›Ñ‚Ð°Ð½ баÑталып тұрған жоқ.Ðударма жол таÑымалдаумен аÑқталады, ал, қайнар көз хабарламаÑÑ‹ оған аÑқталмайды.Ðударма Ð±Ð¾Ñ Ð°Ñ€Ð°Ð»Ñ‹Ò›Ð¿ÐµÐ½ аÑқталады, ал, қайнар көз хабарламаÑÑ‹ онымен аÑқталмайды.Ðударма "%s" мәнімен аÑқталады, ал қайнар көз хабарламаÑÑ‹ "%s" мәнімен аÑқталады.Ðударма Ñоңында жол таÑымалдауы жетпейді.Ðударма Ñоңында Ð±Ð¾Ñ Ð°Ñ€Ð°Ð»Ñ‹Ò› жетпейді.Ðударма қолдануға дайын, бірақ, %d жазба әлі аударылмаған.Ðударма қолдануға дайын, бірақ, %d жазба әлі аударылмаған.Ðударма қолдануға дайын.Ðударма "%s" мәнімен аÑқталуы тиіÑ.Ðударма "%s" мәнімен аÑқталмауы тиіÑ.Ðударма Ñөйлем ретінде баÑталуы тиіÑ.Ðударма кіші әріптен баÑталуы тиіÑ.Ðударма Ð±Ð¾Ñ Ð°Ñ€Ð°Ð»Ñ‹Ò›Ñ‚Ð°Ð½ баÑталады, ал, қайнар көз хабарламаÑÑ‹ одан баÑталмайды.Ðудармалар толық ÑÓ™Ð¹ÐºÐµÑ Ð±Ð¾Ð»Ð¼Ð°ÑƒÑ‹ мүмкін Ñебебінен жөндеу керек етіп белгіленді. Олардың дұрыÑтығын текÑеруіңіз керек.Ðудармалар жоқ. Бұл әдепкі жағдай ÐµÐ¼ÐµÑ ÑиÑқты.Файлды жақÑÑ‹ пішімдеу кезінде қате кетті (бірақ ол файл Ñәтті Ñақталды).Ðудармаларды Localazy ішіне жүктеп жіберу кезінде қате орын алды.Файлды жүктеген кезде қателер орын алған. Кейбір ақпарат жоқ немеÑе зақымдалған болуы мүмкін.Бұл баптаулар PO файлдарының ішкі құрылымына Ó™Ñер етеді. Сізде арнайы талаптар болÑа ғана оларды өзгертіңіз, мыÑалы, нұÑқаларды баÑқару жүйелерді қолданÑаңыз.Бұл JSON файлы жарамды аудармалар файлы ÐµÐ¼ÐµÑ Ð¶Ó™Ð½Ðµ оны Poedit көмегімен түзету мүмкін емеÑ.Бұл файлда көпше түрі бар жолдар бар, бірақ файлдың Plural-Forms өріÑÑ– бапталмаған.Бұл файл қайнар көз мәтіні орнына жолдар ID қолданады. Poedit Ñіз үшін "%s" файлынан ағылшын мәтіндерін жүктей алады.Бұл - ÑкÑтракторды жөнелту үшін қолданылатын команда. %o ÑˆÑ‹Ò“Ñ‹Ñ Ñ„Ð°Ð¹Ð» атын, %K кілттік Ñөздер тізімін, %F ÐºÑ–Ñ€Ñ–Ñ Ñ„Ð°Ð¹Ð»Ð´Ð°Ñ€ тізімін, ал, %C - кодталу жалаушаÑын (төменде қараңыз) білдіреді.Бұл жол Poedit-тің аудармалар жадыÑÑ‹ ішінен табылды.Бұл жол баÑтапқы кодталу көрÑетÑе ғана командалық жолға қоÑылады. %c кодталу мәнімен алмаÑтырылады.Бұл жол әр ÐºÑ–Ñ€Ñ–Ñ Ñ„Ð°Ð¹Ð»Ñ‹ үшін командалық жолына қоÑылады. %f - файл атымен алмаÑтырылады.Бұл жол әр кілт Ñөзі үшін командалық жолына қоÑылады. %k - кілт Ñөзімен алмаÑтырылады.ЖалпыТүрлендірулерБұлттық жобаны аударыÐударылды: %d, барлығы %d (%d %%)ÐудармаÐударманың тіліÐудармалар жадыÑÑ‹Ðударма Ó©Ò£&деуді талап етедіÐударма қаÑиеттеріÐудармалар жадыÑÑ‹ дерекқоры зақымдалған: %s (%d).Ðударма жадыÑÑ‹ қатеÑÑ–: %s (%d).Ðударма Ó©Ò£&деуді талап етедіÐударма қаÑиеттеріÐудармаға Ò±ÑыныÑтарыÐударма Ò±ÑыныÑтары қайнар көз мәтінінің бар болуын талап етеді. Ðақты мәтін орнына тек ID қолданÑа, ол жаÑамайды.Ðударма Ò±ÑыныÑтары қайнар көз тілінің белгілі болуы талап етеді. Poedit оны бұл файлдан таба алмады.Ðударма — %sÐудармаларды баÑтапқы кодтардан жаңарту мүмкін емеÑ, өйткені файл баптауларында көрÑетілген орында баÑтапқы кодтар табылмады.ЕкіUTF-8 (Ò±Ñынылады)БолдырмауӨңделмеген ережеден Ñ‚Ñ‹Ñ Ð¶Ð°Ò“Ð´Ð°Ð¹ орын алды: %sUnix (Ò±Ñынылады)БелгіÑіз Crowdin қатеÑÑ–.ÐударылмағанЖаңартуБарлығын жаңартуЖобадағы барлық каталогтарды жаңартуБұл жобадағы барлық каталогтарды жаңарту керек пе?POT &файлынан жаңарту…POT &файлынан жаңарту…Кодтан жаңартуPOT файлынан жаңартуКодтан жаңартуБаÑтапқы кодтан жаңартуЖаңарту ақпаратыЖаңартуларЖаңарту ÑәтÑіз аÑқталдыÐудармаларды жаңартуПайдаланушы ақпаратын жаңарту…Ðудармаларды %s ішіне жүктеп жіберу ÑәтÑіз аÑқталды.Ðудармаларды %s ішіне жүктеп жіберу…Ðудармаларды жүктеу…Таңдауыңызша өрнекті қолдануТаңдауыңызша тізім қарібін қолдану:Таңдауыңызша мәтіндік өріÑтер қарібін қолдану:Бұл тіл үшін үнÑіз келіÑім ережелерін қолдануКелеÑÑ– кілт Ñөздерді (функциÑлар аттары) баÑтапқы кодтарда аударылатын жолдарды тану үшін қолдану:Ðудармалар жадыÑын қолдануТекÑеруТекÑеру нәтижелері%s нұÑқаÑÑ‹ÐутентификациÑны күту…Poedit-ке қош келдіңізБаÑтапқы кодтардан жаңарту кезіндеТек толық ÑөздерТерезеWindowsҚайнар көз мәтіні үшін ағылшын тілін пайдалануды қалайÑыз ба?Соңына жеткенде баÑына апаруТаÑымалдау:XLIFF аударма файлдарыИәСонымен қатар, Ñіз аударуға келетін жолдарды тікелей баÑтапқы кодтардан шығара алаÑыз:Сіз Poedit терезеÑіне бірден көп файлды тартып апара алмайÑыз.Сізде файл қаÑиеттерінде көрÑетілген орналаÑудан баÑтапқы код файлдарын оқу Ñ€Ò±Ò›Ñаты жоқ.ӨзгеріÑтерді Ñ–Ñке аÑыру үшін Poedit-ті қайта Ñ–Ñке қоÑыңыз.Сіздің атыңызӨзгеріÑтерді ÑақтамаÑаңыз, олар жоғалады.Сіздің атыңыз мен Ñл. пошта адреÑіңіз тек қана GNU gettext файлдарындағы Last-Translator жолы үшін керек.ÐөлМаÑштабЖөндеу керекуақытша файлдарды өшірмеу (жөндеу режимі үшін пайдалы)мыÑ., nplurals=1; plural=0;файл ішінен дәлÑіз ÑәйкеÑтендіруберілген жол нөмірі бар Ñлементке өтуpoedit:// URI-ін талдауCtrl+ТөменEnterСол жақОң жақShift+Жоғарыaltctrlshift%s туралы%s жаÑыруҚалғанын жаÑыруБаптаулар...%s шығуҚызметтерБарлығын көрÑетуÐЖ ішінен алдын-ала аударутіл белгіÑізқолдауы жоқ нұÑқаÑÑ‹ (%s)you@example.com"%s" - Ð´Ò±Ñ€Ñ‹Ñ POT файлы емеÑ.poedit-3.6.3/locales/ms.mo0000644000175100001660000015541215011674364011106 Þ• ‹*H8 I8 U8&`8‡8<›8Ø8Jë8g69 ž9¨9 ·9Á9 È9Ö9Ý9ã9ë9ò9ù9ÿ9::%:+:1:::N:b:f:x:Š::•::¥:·:É:Í: Ñ: Þ:ë:ô:ý: ;;!;7;M;\;x;”;š; ;©;¯;¸;Ï; æ; ô; <<<1<M<f<<–<­<³<¸<Ï<ß< ý< ===$=-= 1= ==J= Y=e= u== ›=¨= ·=Ã=Ó=ç=> >+>H>h> ~> ‹>1—>'É>ñ>? (?3?79?6q?¨?)È?ò? ÷?]@`@<s@D°@$õ@A !A€.A¯A ¶A"ÄAçA+B).B XBcBuB‡B˜B«B´BÇBãBÿB#C8CMC\C bCmC CŠCœC¢C¨C¹C%ÊCðC D,D4D=DUD fDtD/D ¿DkÌD8E=EPEfEyEE-®E1ÜEF 'F2F)IFsF “F¡F¦F¹FÌFáFåFüFG"G3GRGaGtG;‡G ÃG'ÐG^øGLWH?¤H äH òHÿH*I=I"PI5sI©IÄIßIåIøI ýI J J &J 3J@JQJYJaJhJfzJáJûJuK‹KžK"°KÓK ÚKåKôK LL$L05LfL€L#•L<¹LöL M*M0ZMZ \ZhZpZxZ€Z†Z›Z°ZÅZßZp[v[Œ[=’[Ð[1ã[\n.\E\ã\ê\;] ?]M]T]@n]õ¯]¿¥^,e_,’_¿_ Ñ_ß_2î_*!`L`Ž_`wî`jfa ÑaÝaìaûa%b6bKb`bub‡b™b ³bÁbÊbÓbæbìbc8 c EcRcWc _c kc wc…c"Œc"¯cÒc Úc çcôc d(d;dAdzZdÕdædíd òd þd e e"e *e 5e Be Le Ye eepe‹eœe"´e×eóe f f,f 5f AfNfhfxfˆf ›f ¨f¶fÇfÖf ïfüf g g*g2g:gCg KgYgrg…gžg§g°g Ág Îg Úgçgûg h h4hDhYh†nhõhi &i2iAiTi eisi „i’iK™iåiúi jj,j?jUj1qj£j ²j ÀjŽÌj=[k™kll(0lYl alol+Œl¸l »l8Ål"þl!mÂ2mõmCn8TnînŸ|o8p1UpR‡pcÚpQ>qq'«q:ÓqlrP{r-ÌrCúrA>sK€s0Ìs.ýsŽ,t!»t)Ýt-u+5u8auCšuuÞu,TvLv;Îv] w…hwJîwc9x[xoùx«iy7zmMz_»z[{w{}{{¥{ Â{Î{ã{ö{|2%|"X|{|“|ª|~Â|qA}³}ˆÆ}O~S~g~ l~~ ~ ·~Å~Í~ Ô~"ß~$'@Yjz‹£²ºÊà$ý"€B€\€r€ˆ€#¥€VÉ€ 7@ S^|Ž©ºÁ.É ø‚ ‚%‚H)‚5r‚m¨‚7ƒ Nƒ3XƒaŒƒîƒóƒøƒ.„ D„e„„¡„¸„ʄ݄…'…;…K…\…n……š…²…Î…í…††7†M†^†w†!‡†Ÿ©†IˆXˆjˆ |ˆ ‡ˆ¨ˆ$±ˆ4Öˆ ‰ ‰ "‰,‰5‰E‰L‰S‰ Z‰e‰l‰s‰z‰’‰ª‰³‰¹‰‰Ö‰ê‰ñ‰ Š#Š,Š 4Š ?ŠMŠdŠ{Š‚Š†ŠœŠ²Š»ŠÄŠ ÌŠ ׊åŠûŠ ‹‹8‹U‹ ]‹j‹q‹y‹‰‹ ‹·‹Ç‹ ׋ ã‹î‹ Œ,ŒHŒdŒwŒŠŒ‘Œ•Œ©Œ(¾Œ çŒ ôŒ   ,; LZ m!{¬ ½ËÞò Ž!Ž8Ž!WŽyŽ ŽœŽ1«Ž'ÝŽ##) MX)^2ˆ#»0ß c$ˆDžJã(.‘W‘ ]‘©h‘’’)'’!Q’5s’*©’Ô’å’÷’““ (“4“ M“n“Š“" “Ó Ù“ ç“ñ“””$”9”?”D”S”2b”•”&­”Ô”Û”ã”ú” ••.1• `•‡k•ó•ù• –#–:–Q–3n–:¢–Ý– ü– —-—M— l—z—‚—”—¦—º—!Á—ã—é—˜˜ 7˜ D˜ Q˜:^˜ ™˜$¤˜wɘJA™>Œ™Ë™ Ú™è™.û™*š"=š5`š–šµšÔšÜšðšøš››'›6›E› T› a›l›s›k…›ñ› œy)œ£œ¶œ%Ëœñœ ÷œ(;N/`ª$¾6ãž 1ž)=ž6gž$žž*Þîžóž Ÿ)"ŸZLŸ§Ÿ¬Ÿ¼ŸËŸÝŸïŸ  ,  ;  H U e u   —  ³ ¿   Ì Ô é  ¡)!¡K¡¦N¡’õ¡Œˆ¢£ £$£;£U£l£†£ Ÿ£©£!½£ߣü£¤"¤1¤9¤N¤W¤3l¤# ¤Ĥܤí¤ý¤¥$¥?¥^¥s¥&“¥8º¥ó¥F¦L¦ªd¦1§A§U§2i§œ§ ¶§Á§ɧ ä§ï§ ¨¨+¨ E¨ Q¨]¨»t¨0©7©S©o©©˜©±©·©#Í©`ñ©Rª+hª4”ªɪ*ãª/«>«U«X«¢]«¬¬3¬!F¬h¬€¬ ›¬¥¬»¬Ѭä¬ì¬ô¬ ü¬­­8­K­™b­ü­®®C ®d®,x®¥®l»®I(¯r¯x¯L¯ ݯë¯ò¯L °Y°Ó`±?4²%t²š² «² ¸²Ų5Þ²³˜'³mÀ³}.´ ¬´ ¶´ ôд%è´µ&µ>µTµjµ€µ —µ¤µ¬µ³µƵεêµ5ñµ'¶ :¶ F¶S¶d¶ u¶¶(‡¶(°¶Ù¶ ß¶ ì¶ù¶ ·4· H·U·‚u·ø· ¸¸¸1¸ D¸ O¸Z¸i¸{¸ Œ¸˜¸ ©¸ ¶¸¸à¸ð¸#¹*¹ C¹d¹t¹…¹ ¹˜¹«¹ȹݹñ¹º º%º;º Oºpºƒº˜º ¬º ºº ƺ Óº áºîº»»4» O»]»e»y» ˆ»–»¥»À»Ö»ð» ¼!¼;¼R¼ã¼þ¼ ½#½2½E½ W½e½ w½ …½@½ѽ ç½õ½¾¾/¾E¾2c¾–¾ ¦¾²¾Œ»¾=H¿Œ†¿ÀÀ!2À TÀ_À"pÀ2“ÀÆÀÉÀ>ÒÀ&Á8ÁÍIÁÂG.Â>vÂòµÂ«¨ÃBTÄ;—ÄZÓÄv.Åb¥Å#Æ,Æ*DÆmoÆ\ÝÆ-:ÇMhÇF¶ÇIýÇ6GÈ4~ÈD³ÈøÈ&É,;É2hÉ?›ÉGÛÉ{#Ê!ŸÊ\ÁÊ9ËUXËx®ËS'Ìn{ÌfểQÍÖÛÍ;²ÎsîÎabÏbÄÏ'Ð .Ð9Ð"NÐ qÐ|ÐТмÐ1ÍÐ"ÿÐ"Ñ<ÑMÑsaÑsÕÑIÒ…[ÒáÒåÒ øÒ+Ó.Ó@Ó_ÓuÓ „ÓÓ% Ó*ÆÓñÓÔ+Ô?ÔSÔgÔ‚Ô —Ô¢Ô¶Ô"ÏÔ!òÔÕ2ÕLÕ_ÕvÕ%Õa¶ÕÖ0Ö7ÖLÖUÖnÖ‡Ö¦Ö ¾ÖÈÖ?ÐÖ× !×-×C×JF×F‘×iØ×?BØ ‚Ø8ŒØlÅØ2Ù8Ù <Ù3HÙ |ÙÙ)¹ÙãÙþÙÚ ÚÚÚÚÚ&Ú)Ú-Ú2Ú 8Ú CÚ OÚ ]ÚjÚ yÚ †Ú“Ú¨Ú¿ÚÙÚ éÚÓ¢hå` »•ŠðQ@/Ä{j @È׋ËïBxÖ“eïe|”3é4‘µi-l‰²Y™/fHÎã%cš*^r#pÝŸ»²g‹Ê-!…œÑ7yÛa/ÿ‡lùC™hDøo†W€^•ŒàKá ƒÜByV‚@¢?%æÁàטڌ'2#zm p³nVJOŒ§&œR–þ ÙÍËÉŽç’„ä¤w^¯;9üj«M8) uýíj5qè÷¼ k;{b¤<9ƒ~cX6ðö‹…¹núfdT§<‰âS01Ó, N¬wW†X¼—çC.¡]É ë—‘ ·Òœ›|<Å–iî®›°òÈ}: ¥uØ`ytF¸5)“ÿ±[ [Sl°b3TÔ´³o…$ÍU]zô*)¹ãÆV'â0ÀhoN£SŠÎ¦K¥ép ›YE‡?>RP†Ž4õ1 ´!áe½¶!—?\Pì"î_=.QDÑŠÏì3ÐÂø:sW‡ÃÅ€\ßåRP|v#F2š1T>Ax x'GB“=Ì.`F$®H¿Eq,ÜU¬Aý5­IMqZ%6&LÔäÙ=dÁþæNž((_„Âê©ÄßQZAˆ ¦uÇÕÚ}c€DªXƒ˜êµ‚¾v¨4ÖY¸Cë \Ÿˆ(m’IvZOg™šGwñóõÌ ~9•ñHmó”’À£üº{ŸLíò:¨"Þ÷J +«]gž­è‘}_úk¯"ÒùºÝz86·ÃO7kö¡M0[½Ûs‚;iKŽØs-©7Ær+~ÊÕEa±¿žUǘ Þ8Lt&aI,Ï2d¾‰*ª>Gû¶nôfr„tˆ+JbÐû”$– (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Malay Language: ms_MY MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: ms X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (diubah suai) (tidak disimpan)%d kod kemunculan%d masukan%d masukan telah dipra-terjemah.%d ralat%d isu berkaitan terjemahan ditemui.Baris %i bagi fail "%s" tidak dimuatkan dengan baik.Format %sKeutamaan %sformat %sPerih&alPerih&al Poedit&Terap&Undur&Batal&Kosongkan&Tutup&SalinPa&dam&Selesai dan Berikutnya&Selesai dan berikutnya&Sunting&Fail&Cari…Manual &GNU gettextManual &GNU gettext&Pergi&Kumpul Mengikut Konteks&Kumpul mengikut konteks&BantuanBa&haruBa&haru…&Berikutnya >Terjemahan &BerikutnyaTerjemahan &berikutnya&Tidak&OKBantuan &Dalam Talian&Bantuan dalam talian&Buka...&Buka…&Tampal&Keutamaan&Keutamaan…Terjemahan &TerdahuluTerjemahan &terdahulu&Sifat…&Singkir Terjemahan Terpadam&Singkir terjemahan terpadam&KeluarBuat &Semula&Ganti&Simpan&Simpan sebagaiT&unjuk Kemunculan KodT&unjuk kemunculan kodTetingkap &MulaTetingkap &mula&TerjemahanBuat &Asal&Masukan Belum Terjemah Dahulu&Masukan belum terjemah dahulu&Kemas kini dari Kod Sumber&Kemas kini dari kod sumber&Sahkan Terjemahan&Sahkan terjemahan&Lihat&Ya(Guna bahasa lalai)(belum daftar masuk)(memerlukan Windows 8 atau lebih baharu)< &TerdahuluPerihal %sAkaunAkaunTambahTambah UlasanTambah Fail…Tambah Folder…Tambah ProjekTambah Kad Liar…Tambah ulasanTambah direktori ke dalam senaraiTambah fail…Tambah folder…Tambah projekTambah kad liar…Kata kunci tambahanBendera xgettext tambahan:LanjutanTetapan Pengekstrakan Lanjutan…Tetapan pengekstrakan lanjutanTetapan pengekstrakan lanjutan…Semua Fail TerjemahanSemua ulasanSemua rentetanGuna juga kata kunci lalai untuk bahasa tersokongSentiasa ubah fokus ke medan input teksSatu item dalam senarai fail input:Satu item dalam senarai kata kunci:PenampilanTerapAnda pasti mahu memadam pengekstrak "%s"?Anda pasti mahu menetap semula ingatan terjemahan?Periksa kemas kini secara automatikKompil fail MO secara automatik ketika menyimpanUndurLaluan dasar:Versi beta mengandungi fitur-fitur baharu dan penambahbaikan terkini, tetapi mungkin kurang stabil.Bawa Semua ke HadapanFail katalog rosak: msgstr bentuk jamak digunakan tanpa msgid_pluralFail PO rosak: msgstr bentuk tunggal digunakan bersama dengan msgid_pluralPenanda rosak dalam rentetan terjemahan.LayarLayar failSecara lalai, hasil yang tidak tepat juga turut disertakan, tetapi telah ditanda sebagai perlu disemak. Tandakan pilihan ini untuk menyertakan padanan yang tepat sahaja.BatalMembatalkan…Tidak dapat mencipta direktori sementara.Tidak dapat melakukan program: %sTidak dapat pra-terjemah bahasa yang tidak diketahui.Tidak boleh praterjemah tanpa teks sumber.Penghurufbesaran&Pengurus Katalog&Pegurus katalogPengurus KatalogUbah bahasa UISet Aksara:Periksa Dokumen SekarangPeriksa Tata Bahasa Dengan EjaanPeriksa Ejaan Ketika MenaipPeriksa Kemas Kini…Periksa kesalahan dalam terjemahanPeriksa kemas kini…Periksa ejaanKosongkanKosongkan MenuKosongkan TerjemahanKosongkan menuKosongkan terjemahanTutupAwanKemunculan KodKemunculan kodBekerjasama dengan orang lain secara dalam talian.Mengutip fail sumber…Perintah untuk mengekstrak terjemahan:UlasanUlasan:Ulasan diawali dengan:Kompil ke MO…Kompil ke…Fail Terjemahan TerkompilKonfigur pengekstrakan kod sumber dalam Sifat.PengesahanHubungkan Poedit dengan platform penyetempatan awan yang disokong untuk menyegerakkan terjemahan yang diuruskan dalamnya dengan lancar.SalinSalin Dari TunggalSalin dari Sumber TeksSalin daripada tunggalSalin dari sumber teksBetul Ejaan secara AutomatikTidak dapat memuat turun maklumat project Localazy.Tidak dapat memuatkan fail, ia berkemungkinan telah rosak.Tidak dapat menyimpan fail %s.Cipta baharuCipta terjemahan baruCipta terjemahan baharu daripada templat POT.Cipta projek terjemahan baharuRalat CrowdinPo&tongPengekstrak Suai:Pengekstrak suai:Suai Palang Alat…PotongSaiz pangkalan data dalam cakera:PadamPadam Dari Ingatan TerjemahanPadam pengekstrakPadam dari ingatan terjemahanPadam ProjekPadam UlasanPadam projekMemadam projek tidak akan memadam apa-apa fail terjemahan.Direktori:Anda pasti mahu memadam projek "%s"?Anda mahu memuatkan semula fail dari cakera? Suntingan tidak disimpan anda dalam Poedit akan hilang jika anda teruskan.Adakah anda mahu membuang semua terjemahan yang serupa dengan teks sumber?Anda mahu membuang semua terjemahan yang tidak digunakan lagi?&Jangan simpanJangan SimpanJangan Tunjuk LagiJangan tanda padanan tepat sebagai perlu semakJangan tunjuk lagiMemuat turun terjemahan terkini…Memuat turun terjemahan dilumpuhkan dalam projek ini.Seret Folder atau Fail Di SiniSeret folder atau fail di siniK&eluarE&ksport ke HTML…SuntingSunting &UlasanSunting &ulasanSunting UlasanSunting ulasanSunting projekSunting projekPenyuntinganSunting…E-mel:Masuk Skrin PenuhMasukan dalam fail ini mempunyai bentuk jamak yang berbeza dengan yang disebut dalam pengepala Bentuk-JamakMasukan dengan Ralat DahuluMasukan dengan ralat dahuluMasukan dengan ralat bertanda merah dalam senarai. Perincian ralat akan ditunjukkan ketika anda memilih masukan sebegitu.Ralat membuka failRalat menyimpan failRalat ketika memuatkan fail XLIFF: %sRalatKesemuanyaLaluan dikecualikanEksport Ke TMX…Eksport sebagai…Eksport ke HTML…Eksport ke TMX…Mengeksport ingatan terjemahan dari "%s" gagal.Mengeksport terjemahan…Ekstrak dari sumberEkstrak nota untuk penterjemah dari:Ekstrak teks dari fail sumber dalam direktori berikut:Persediaan pengekstrakPengekstrakGagal berkomunikasi dengan proses Poedit.Gagal memuatkan fail dengan terjemahan yang diekstrak.Gagal menggabungkan katalog gettext.Gagal mengemas kini ingatan terjemahan: %sFailFail tidak dapat dibukaFail "%s" tidak wujud.Fail “%s†bukan satu fail terjemahan.Fail "%s" adalah baca-sahaja dan tidak boleh disimpan. Sila simpan ia dengan nama berbeza.CariCari BerikutnyaCari TerdahuluCari dan Ganti…Cari dalam ulasanCari dalam teks sumberCari dalam terjemahanCari berikutnyaCari terdahuluBaiki BahasaBaiki bahasaBaiki PengepalaBaiki pengepalaFail Terjemahan FlutterBentuk %iBentuk %i (tidak digunakan)Gettext GNUAmFail HTMLBantuanSembunyi Palang sisiSembunyi Palang StatusSembunyi mesej pemberitahuan iniBagaimanakah penyegerakan awan berfungsi?IDJika anda teruskan penyingkiran, semua terjemahan bertanda dipadam akan kekal dibuang. Anda akan menterjemahkannya sekali lagi jika ia ditambah pada masa akan datang.Jika anda sebelum ini dinafikan capaian ke fail anda, benarkannya dalam Keutamaan Sistem > Keselamatan & Kerahsiaan > Kerahsiaan > Fail & Folder.Jika anda menafikan akses kepada fail anda sebelum ini, anda boleh membenarkannya di System Settings > Privacy & Security > Files & Folders.AbaiAbai kataImport Daripada TMX…Import Fail Terjemahan…Import daripada TMX…Import fail terjemahan…Mengimport terjemahan…Dalam: %sTermasuk versi betaHuruf besar/kecil tidak konsistenRuang kosong tidak konsistenMaklumat berkenaan penterjemahPasangFail tidak sahSeruan:Fail Terjemahan JSONKekalkanNama atau kod bahasaBahasa terjemahan adalah sama dengan bahasa sumber.Bahasa terjemahan tidak ditetapkan.Bahasa bagi terjemahan:Pemilihan bahasaPasukan bahasa:Bahasa:Terakhir diubah suaiKetahui berkenaan kata kunci gettextKetahui berkenaan bentuk jamakKetahui lebih lanjutKetahui lebih lanjut tentang %sKetahui lebih lanjut berkenaan CrowdinBaris %d bagi fail "%s" telah rosak (data %s tidak sah).Penghujung baris:Senarai sambungan dipisah oleh tanda titik bertindih (cth: *.cpp,*.h):Muatkan Bahasa InggerisLocalazy ialah platform penyetempatan yang sangat automatik yang membolehkan sesiapa sahaja menterjemah produk dan kandungan mereka ke dalam pelbagai bahasa dengan mudah.Fail MO tidak boleh disunting terus dalam Poedit.Jadikan Huruf KecilJadikan Huruf BesarBuat satu terjemahan baharu menerusi fail POT ini.Pengepala cacat: “%sâ€Urus akaunUrus…Menggabungkan perbezaan…MinimumkanNama bagi projek terjemahanNama:Tidak Selesai Be&rikutnyaTidak selesai be&rikutnyaPerlu SemakPerlu semakRalat rangkaian:%s(%d)Jangan biarkan senarai rentetan mengambil fokus. Jika diaktifkan, anda perlu gunakan Ctrl-panah untuk navigasi bahkan boleh terus menaip teks, tanpa perlu menekan Tab untuk megubah fokus.BaharuBaharu Dari Fail &POT/PO…Baharu dari fail &POT/PO…Rentetan baharuBentuk majmuk BerikutnyaBentuk majmuk berikutnyaTidakTiada Padanan DitemuiTiada masukan boleh dipra-terjemah.Tiada maklumat berkenaan kemunculan rentetan ini dalam kod sumber yang disediakan di dalam fail.Tiada padanan ditemuiTiada masalah berkaitan terjemahan ditemui.Tiada projek terjemahan tersenarai dalam akaun anda.Tiada maklumat penggunaanBukan semua bentuk jamak telah diterjemah.Tidak diizinkan, sila daftar masuk sekali lagi.Nota untuk penterjemahOKSatuHanya benarkan jika anda mempercayai kualiti TM anda. Secara lalai, semua padanan dari TM bertanda sebagai perlu semak dan patut dinilai semula sebelum digunakan.Hanya isi padanan tepatTerjemahan Awan Terbuka…Buka Baru-baru IniBuka dan sunting fail terjemahan.Terjemahan awan terbukaTerjemahan awan terbuka…Buka failBuka dalam PenyuntingBuka dalam penyuntingBuka baru-baru iniBuka...Buka…PilihanLain-lainTidak Selesai T&erdahuluTidak selesai t&erdahuluFail Terjemahan POTemplat Terjemahan POTFail POT hanyalah templat yang mengandungi sebarang terjemahan di dalamnya. Untuk membuat satu terjemahan, cipta satu fail PO baharu berdasarkan templat.TampalGaya Tampal dan PadanLaluanJalankan kemas kini daripada kod sumber semua fail di dalam projek.Keizinan dinafikan.Ruang letak “%s†tiada dalam terjemahan.Ketepatan ruang letakSila buka dan sunting fail PO sepadan sebagai ganti. Bila anda menyimpannya, fail MO akan dikemas kini juga.Sila simpan fail dahulu. Seksyen ini tidak boleh disunting buat masa ini.JamakTerjemahan bentuk jamakUngkapan bentuk jamak yang digunakan oleh fail adalah tidak sesuai untuk %s.Bentuk jamak:PoeditPoedit - Pengurus katalogPoedit secara automatik dapat tetapkan kandungan tidak sah dalam fail "% s".Poedit boleh cuba mengisi dalam masukan baharu hanya dari terjemahan terdahulu dalam fail atau dari keseluruhan ingatan terjemahan anda. Penggunaan TM tidak berkesan jika ia hampir kosong, tetapi ia akan bertambah baik bila anda menambah lebih banyak terjemahan.Poedit tidak dapat menunjukkan kod sumber yang mana rentetan tersebut digunakan, kerana fail sama ada tidak tersedia dalam lokasi rujukan atau ia hanyalah rujukan simbolik yang tidak menuju ke fail yang sebenar.Poedit ialah sebuah penyunting terjemahan yang mudah digunakan.Poedit tidak dapat membuka fail "%s".Pra-&terjemah…Pra-terjemahPra-terjemahPra-terjemah %u rentetanMembuat pra-terjemahan daripada ingatan terjemahan…Pra-menterjemah…Pra-terjemahan mencari secara automatik padanan tepat atau kabur untuk rentetan belum terjemah dalam ingatan terjemahan dan mengisi dalam terjemahannya.Praterjemahan memerlukan teks sumber tersedia. Ia tidak berfungsi jika hanya ID tanpa teks sebenar digunakan.Pra-terjemahan memerlukan teks bahasa sumber yang diketahui terlebih dahulu. Poedit tidak dapat mengesanya di dalam fail ini.KeutamaanKeutamaan...Keutamaan…Menyediakan rentetan…Kekal pemformatan bagi fail sedia adaBentuk majmuk TerdahuluBentuk majmuk terdahuluTeks sumber terdahuluDisunting Sebelum IniDisunting sebelum iniNama dan versi projek:Nama projek:Projek:ProjekSemakan tanda bacaSingkirSingkir terjemahan terpadamKeluarGagal membaca kandungan fail dengan ralat berikut: %sFail baru-baru iniBuat semulaSegar semulaMuat Semula FailMuat semula failBerbaki: %dBuangBuang terjemahan yang sama dengan sumberBuang terjemahan yang sama dengan sumberGantiGanti Semu&aGanti semu&aRentetan gantianGanti…Pengepala Bentuk-Jamak yang diperlukan telah hilang.Tetap semulaTetap semula ingatan terjemahanMenetap semula ingatan terjemahan akan memadam semua terjemahan tersimpan secara kekal. Anda tidak dapat membuat asal operasi ini.Dedah dalam FinderKaji semulaSimpanSimpan Seb&agai…Simpan seb&agai…Simpan JuaSimpan juaSimpan sebagaiSimpan sebagai…Simpan perubahanSimpan failTangkapan skrin:Pilih Semu&aPilih SemuaPilih fail TMX untuk diimportPilih direktoriPilih fail terjemahanPlih fail terjemahan untuk diimportPilih templat terjemahanPilih bahasa yang anda kehendakiTetapkan BahasaTetapkan bahasa TetapanTetapan…Tunjuk Palang SisiTunjuk Ejaan dan Tata BahasaTunjuk Palang StatusTunjuk &ID RentetanTunjuk PenggantianTunjuk Palang AlatTunjuk AmaranTunjuk dalam ExplorerTunjuk dalam FolderTunjuk atau sembunyi palang sisiTunjuk palang sisiTunjuk palang statusTunjuk &ID rentetanTunjuk amaranPalang sisiDaftar MasukDaftar KeluarDaftar masukDaftar masuk ke %sDaftar masuk ke Akaun AwanDaftar masuk ke CrowdinDaftar masuk ke akaun awanDaftar keluarTunggalSalin/Tampal PintarSempang PintarPautan PintarPetikan PintarIsih mengikut Tertib &FailIsih mengikut &SumberIsih mengikut &TerjemahanIsih mengikut tertib &failIsih mengikut &sumberIsih mengikut &terjemahanSet aksara kod sumber:Pengekstrak kod sumber digunakan untuk mencari rentetan yang boleh terjemah dalam fail kod sumber dan mengekstraknya supaya ia boleh diterjemah.Kod sumber tidak tersedia.Kod sumber tidak ditemuiTeks sumberID teks sumberTeks sumber — %sKata Kunci SumberLaluan SumberKata kunci sumberLaluan sumberPertuturanSemakan ejaan dilumpuhkan, kerana kamus untuk %s tidak dipasang.Ejaan dan Tata BahasaMula BercakapHenti BercakapTerjemahan tersimpan:Konteks rentetan: %sPengecam rentetan: %sPanjang rentetan dalam aksaraPanjang rentetan dalam aksara: terjemahan | sumberRentetan dicariPenggantianCadanganCadangan tidak tersedia jika bahasa terjemahan tidak ditetapkan dengan baik. Fitur-fitur lain, seperti bentuk majmuk, mungkin terjejas juga.Ruang letak berlebihan “%s†yang tiada dalam teks sumber.Menyokong semua bahasa pengaturcaraan yang diiktiraf oleh alatan gettext GNU (PHP, C/C++, C#, Perl, Python, Java, JavaScript dan lain-lain).SegerakSegerak dengan CrowdinSegerak terjemahan dengan CrowdinMenyegerakRalat menyegerakPenyegerakan dengan Crowdin gagal.Rakat sintaks dalam pengepala Bentuk-Jamak ("%s").TMFail TMXAmbil rentetan boleh terjemah dari satu templat POT sedia ada.Nama pasukan dan alamat e-mel atau URLPenggantian TeksTM tidak mengandungi sebarang rentetan yang sama dengan kandungan fail ini. Ianya hanya berkesan untuk terjemahan separa-automatik selepas Poedit belajar secukupnya dari fail yang diterjemah secara manual.Fail TMX adalah cacat.Perubahan telah dibuat oleh aplikasi lain akan hilang jika anda simpan.Fail tidak dapat dikompil dalam format MO dan boleh digunakan.Fail mengandungi item pendua, yang tidak dibenarkan dalam fail PO dan menghalang fail digunakan. Poedit membaiki isu ini, tetapi anda patut menilai semula terjemahan mana-mana item bertanda sebagai perlu semak dan membetulkan item jika perlu.Fail tidak dapat disimpan dalam set aksara "%s" yang dinyatakan dalam tetapan katalog. Ia sebaliknya disimpan dalam UTF-8 dan tetapan telah diubah suai dengan sewajarnya.Fail telah diubah suai. Anda mahu menyimpan perubahan yang dibuat?Fail ini dalam format yang tidak dikenal pasti oleh Poedit.Fail telah dikompil dalam format MO, tetapi ia berkemungkinan tidak berfungsi dengan baik.Fail telah disimpan secara selamat dan dikompil dalam format MO, tetapi ia berkemungkinan tidak berfungsi dengan baik.Fail telah disimpan dengan selamat, tetapi ia tidak dapat dikompil dengan format MO dan digunakan.Fail telah disimpan secara selamat.Fail "%s" gagal dibuka.Fail "%s" telah diubah oleh aplikasi lain.Teks sumber lama(sebelum ia diubah ketika satu kemas kini) yang berkaitan dengan terjemahan kini-tidak-tepat.Cara paling mudah untuk mengisi fail ini adalah dengan mengemas kininya daripada sebuah POT:Terjemahan tidak dimulakan dengan satu jarak.Terjemahan berakhir dengan satu baris baharu, tetapi tiada dalam teks sumber.Terjemahan berakhir dengan satu jarak, tetapi tiada dalam teks sumber.Terjemahan berakhir dengan "%s", tetapi teks sumber berakhir dengan "%s".Terjemahan tidak mempunyai baris baharu di penghujung.Terjemahan tidak mempunyai satu jarak di penghujung.Terjemahan sedia digunakan, tetapi %d masukan belum diterjemah lagi.Terjemahan sedia digunakan.Terjemahan patut berakhir dengan "%s".Terjemahan tidak patut berakhir dengan "%s".Terjemahan sepatutnya dimulakan sebagai satu ayat.Terjemahan sepatutnya dimulakan dengan satu aksara huruf kecil.Terjemahan dimulakan dengan satu jarak, tetapi tiada dalam teks sumber.Terjemahan telah ditandakan sebagai perlu semak, kerana ia mungkin tidak tepat. Anda patut menilai semula untuk pembetulan.Tiada terjemahan. Ini luar biasa.Terdapat satu masalah ketika memformat fail secara elok (tetapi telah disimpan dengan baik).Terdapat ralat semasa memuat naik terjemahan ke Localazy.Terdapat ralat ketika memuat fail. Hasilnya, beberapa data mungkin hilang atau rosak.Tetapan ini mempengaruhi pemformatan dalaman fail PO. Laras ia jika anda ada keperluan khusus cth. kerana kawalan versi.Fail JSON ini bukan sebuah fail terjemahan dan tidak dapat disunting dengan Poedit.Tindakan ini akan menghapuskan sebarang terjemahan yang serupa dengan teks sumber. Ini tidak boleh dibatalkan.Fail ini mempunyai masukan-masukan berbentuk jamak, tetapi tiada pengepala Bentuk-Jamak dikonfigurkan.Fail ini menggunakan ID rentetan dan bukannya teks sumber. Poedit boleh memuatkan teks Bahasa Inggeris daripada fail “%s†untuk anda.Ini ialah perintah yang digunakan untuk melancarkan pengekstrak. %o kembangkan ke nama fail output, %K untuk menyenaraikan, kata kunci, %F untuk menyenaraikan fail input, %C ke bendera set aksara (lihat di bawah).Rentetan ini telah ditemui dalam ingatan terjemahan Poedit.Ini akan lampirkan ke baris perintah hanya jika kod sumber set aksara diberikan. %c mengembang ke nilai set aksara.Ini akan dilampirkan ke baris perintah sekali untuk setiap fail input. %f dikembang ke nama fail.Ini akan dilampirkan ke baris perintah sekali untuk setiap kata kunci. %k dikembang ke kata kunci.JumlahPengubahanTerjemah projek awanSudah terjemah: %d dari %d (%d %%)TerjemahanBahasa Terjemahan Ingatan TerjemahanTerjemahan Perlu Di&semakSifat TerjemahanPangkalan data ingatan terjemahan rosak: %s (%d).Ralat ingatan terjemahan: %s (%d).Terjemahan perlu di&semakSifat terjemahanCadangan terjemahanCadangan terjemahan memerlukan teks sumber tersedia. Ia tidak berfungsi jika hanya ID tanpa teks sebenar digunakan.Cadangan terjemahan memerlukan bahasa teks sumber yang diketahui. Poedit tidak dapat mengesannya di dalam fail ini.Terjemahan — %sTerjemahan tidak dapat dikemas kini daripada kod sumber, kerana tidak ada kod ditemui di lokasi yang dinyatakan dalam Sifat fail ini.DuaUTF-8 (disarankan)Buat asalPengecualian tidak dikendalikan berlaku: %sUnix (disarankan)Ralat Crowdin tidak diketahui.Ralat tidak diketahuiBelum TerjemahKemas kiniKemas kini semuaKemas kini semua katalog dalam projekKemas kini semua katalog dalam projek ini?Kemas Kini dari Fail &POT…Kemas kini dari fail &POT…Kemas Kini dari KodKemas kini dari POTKemas kini dari kodKemas kini dari kod sumberKemas kini ringkasanKemas KiniMengemas kini gagalMengemas kini terjemahanMengemas kini maklumat pengguna…Muat naik terjemahan ke %s gagal.Muat naik terjemahan ke %s…Memuat naik terjemahan…Guna ungkapan suaiGuna fon senarai suai:Guna fon medan teks suai:Guna peraturan lalai untuk bahasa iniGuna kata kunci ini (nama fungsi) untuk mengenal pasti rentetan boleh terjemah dalam fail sumber:Guna ingatan terjemahanSahkanKeputusan pengesahanVersi %sMenunggu pengesahihan…Selamat Datang ke PoeditBila mengemas kini dari sumberKeseluruhan kata sahajaTetingkapWindowsAdakah anda mahu menggunakan Bahasa Inggeris untuk teks sumber?Lilit sekelilingLilit pada:Fail Terjemahan XLIFFYaAnda juga boleh mengekstrak rentetan boleh terjemah terus dari kod sumber:Anda tidak boleh lepas lebih daripada satu fail pada tetingkap Poedit.Anda tidak mempunyai keizinan untuk membaca fail-fail kod sumber dari lokasi dinyatakan dalam Sifat fail.Anda mesti mulakan semula Poedit supaya perubahan ini berkesan.Nama AndaPerubahan anda akan hilang jika anda tidak menyimpannya.Nama dan alamat e-mel anda hanya digunakan untuk menetapkan pengepala Last-Translator bagi fail gettext GNU.SifarZumPerlu Semakjangan padam fail sementara (untuk penyahpepijatan)cth. nplurals=2; plural=(n > 1);padanan kabur di dalam failpergi ke item pada nombor baris diberikankendali satu poedit:// URIAlt+Ctrl+DownEnterKiriRightShift+UpaltctrlshiftPerihal %sSembunyi %sSembunyi LainKeutamaan...Keluar dari %sPerkhidmatanTunjuk Semuapra-terjemah dari TMbahasa tidak diketahuiversi tidak disokong (%s)anda@contoh.com"%s" bukanlah fail POT yang sah.poedit-3.6.3/locales/he.po0000644000175100001660000030405315011674363011062 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-06 10:16\n" "Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " "n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "הסתר התר××” זו" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "×œ× ×œ×”×¦×™×’ שוב" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "×œ× ×œ×”×¦×™×’ שוב" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "תקציר העדכון" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "תקציר העדכון" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "סגירה" #: src/cat_update.cpp:161 msgid "Issues" msgstr "תקלות" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "קובץ" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "שורה" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "תקלה" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "מחרוזות חדשות" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "מחרוזות חדשות" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "מחרוזות שהוסרו" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "מחרוזות שהוסרו" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "קובצי המקור × ×ספי×…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "מחרוזות ×œ×ª×¨×’×•× ×ž×—×•×œ×¦×•×ª מקובץ %s…" msgstr[1] "מחרוזות ×œ×ª×¨×’×•× ×ž×—×•×œ×¦×•×ª מ־%s קבצי×…" msgstr[2] "מחרוזות ×œ×ª×¨×’×•× ×ž×—×•×œ×¦×•×ª מ־%s קבצי×…" msgstr[3] "מחרוזות ×œ×ª×¨×’×•× ×ž×—×•×œ×¦×•×ª מ־%s קבצי×…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "טעינת הקובץ ×¢× ×”×ª×¨×’×•×ž×™× ×”×ž×—×•×œ×¦×™× × ×›×©×œ×”." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "בקובץ: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "קוד המקור ×ינו זמין." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "×œ× × ×™×ª×Ÿ לעדכן ×ª×¨×’×•×ž×™× ×ž×§×•×“ המקור, מכיוון ×©×œ× × ×ž×¦× ×§×•×“ ×‘×ž×™×§×•× ×©×¦×•×™×™×Ÿ במ×פייני " "הקובץ." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "ההרש××” נדחתה." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "×ין לך הרש××” ×œ×§×¨×•× ×§×•×‘×¦×™ קוד מקור ×ž×”×ž×™×§×•× ×”×ž×¦×•×™×™×Ÿ במ×פייני הקובץ." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "×× ×‘×¢×‘×¨ מנעת גישה ×œ×§×‘×¦×™× ×©×œ×š, ניתן ל×פשר ×ותה תחת הגדרות המערכת > פרטיות " "ו×בטחה > ×§×‘×¦×™× ×•×ª×™×§×™×•×ª." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "×× ×‘×¢×‘×¨ מנעת גישה ×œ×§×‘×¦×™× ×©×œ×š, ניתן ל×פשר ×ותה תחת העדפות המערכת > ×בטחה " "ופרטיות > פרטיות > ×§×‘×¦×™× ×•×ª×™×§×™×•×ª." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "חילוץ המחרוזות מקוד המקור נכשל." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "××™ ×פשר לפתוח ×ת הקובץ „%sâ€." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "×”×ª×¨×’×•×ž×™× ×ž×ª×¢×“×›× ×™×" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "×”×”×‘×“×œ×™× ×ž×ª×•×רי×…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "ממזג בין ההבדלי×…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "קובץ ×”×ª×¨×’×•× ×›×‘×¨ עדכני, ×œ× ×‘×•×¦×¢×• ×©×™× ×•×™×™× ×œ×ž×—×¨×•×–×•×ª." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "מחרוזות חדשות לתרגו×:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "מחרוזות שהוסרו (יצ×ו מכלל שימוש):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "הצגת פרטי×…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "הצגת פרטי×…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "כותרת פגומה: „%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "קובצי ×ª×¨×’×•× PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "תבניות ×ª×¨×’×•× POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "קובצי ×ª×¨×’×•× ×ž×¡×•×’ XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "קטלוג ×ª×¨×’×•×ž×™× Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "קובצי ×ª×¨×’×•× JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "קובצי ×ª×¨×’×•× Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "כל קובצי התרגו×" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "הקובץ ×”×•× ×‘×ž×‘× ×” ש×ינו מזוהה על ידי Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "קובץ ×”Ö¾JSON ×ינו קובץ ×ª×¨×’×•×ž×™× ×•××™ ×פשר לערוך ×ותו ב־Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "קרי×ת תוכן הקובץ נכשלה עקב השגי××” הב××”: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "הקובץ “%s†הינו לקרי××” בלבד ×•×œ× × ×™×ª×Ÿ לשמור ×ותו.\n" "יש לשמור ×ותו תחת ×©× ×חר." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "×œ× × ×™×ª×Ÿ לשמור ×ת הקובץ %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "צילומי מסך:" #: src/catalog_po.cpp:134 #, 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[1] "%i שורות בקובץ „%sâ€ ×œ× × ×˜×¢× ×• כר×וי." msgstr[2] "%i שורות בקובץ „%sâ€ ×œ× × ×˜×¢× ×• כר×וי." msgstr[3] "%i שורות בקובץ „%sâ€ ×œ× × ×˜×¢× ×• כר×וי." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "שורה %d בקובץ “%s†הינה פגומה (נתוני %s ×œ× ×—×•×§×™×™×)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "קובץ PO פגו×: msgstr של צורת יחיד בשימוש יחד ×¢× msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "קובץ PO פגו×: msgstr של צורת ריבוי בשימוש בלי mdgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "×œ× × ×™×ª×Ÿ לטעון ×ת הקובץ, ×”×•× ×›×›×œ הנר××” פגו×." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "×ירעו שגי×ות בעת טעינת הקובץ. כתוצ××” מכך, ייתכן שחלק מהמידע חסר ×ו פגו×." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "הייתה בעיה בעת עיצוב הקובץ בצורה × ×§×™×™×” (×ך ×”×•× × ×©×ž×¨ כר×וי)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "×œ× × ×™×ª×Ÿ לשמור ×ת הקובץ בקידוד “%s†כפי שצוין בהגדרות התרגו×.\n" "\n" "×‘×ž×§×•× ×–×ת, ×”×•× × ×©×ž×¨ בקידוד UTF-8 וההגדרה שונתה בהת××." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "שגי××” בשמירת הקובץ" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†×ינו קובץ POT חוקי." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "תוכן חסר במפתיע בקובץ ×”Ö¾XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "שמירה ×œ×ž×§×•× ×—×œ×•×¤×™ ××™× ×” נתמכת לקובצי XCLOC." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "שגי××” בטעינת קובץ XLIFFâ€: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "גרסה בלתי־נתמכת (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "סימון שגוי במחרוזת תרגו×." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "×פשר לחבר ×ת Poedit לפלטפורמות ×ª×¨×’×•× ×¢× × ×™×•×ª נתמכות כדי לסנכרן מ×חורי ×”×§×œ×¢×™× " "×ª×¨×’×•×ž×™× ×©×ž× ×•×”×œ×™× ×‘×”×Ÿ." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "×יך עובד סנכרון ענן?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "חשבון" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(×œ× ×ž×—×•×‘×¨)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "פתיחת ×ª×¨×’×•× ×‘×¢× ×Ÿ" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "ניהול חשבונות" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "מיז×:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "שפה:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "כניסה לחשבון ענן" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "כניסה לחשבון ענן" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "×œ× ×ž×•×¤×™×¢×™× ×ž×™×–×ž×™ ×ª×¨×’×•× ×‘×—×©×‘×•×Ÿ שלך." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "×”×ª×¨×’×•×ž×™× ×”×¢×“×›× ×™×™× ×ž×ª×§×‘×œ×™×…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "כניסה ×ל %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "מסנכרן" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "×ª×¨×’×•×ž×™× × ×©×œ×—×™× ×ל %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "שליחת ×”×ª×¨×’×•×ž×™× ×ל %s נכשלה." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "שגי×ת סנכרון" #: src/commentdlg.cpp:48 msgid "Add" msgstr "הוספה" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "שגי×ת Crowdin ×œ× ×™×“×•×¢×”." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "×œ× ×ž×•×¨×©×”, × × ×œ×”×ª×—×‘×¨ שנית." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "×ין תמיכה במיזמי Crowdin מבוססי מחרוזות." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "הורדת ×ª×¨×’×•×ž×™× ×ž×•×©×‘×ª×ª ×‘×ž×™×–× ×–×”." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "התחברות" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "התחברות" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "התנתקות" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "התנתקות" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "מידע נוסף ×ודות Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin ×–×ת פלטפורמה מקוונת לניהול ×ª×¨×’×•×ž×™× ×•×›×œ×™ ×ª×¨×’×•× ×©×™×ª×•×¤×™. ×נו ×ž×©×ª×ž×©×™× " "ב־Crowdin בעצמנו כדי ×œ×ª×¨×’× ×ת Poedit למגוון שפות, ו×נחנו ××•×”×‘×™× ×ותה." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "מחכה ל×ימות…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "מעדכן נתוני משתמש…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "התחברות ×ל Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "הסנכרון ×¢× Crowdin נכשל." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "שגי×ת Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "מעלה תרגומי×…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "×”&עתק" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "מידע נוסף" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "×¢&זרה" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "×œ× × ×™×ª×Ÿ לערוך קובצי MO ישירות ב־Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "שגי××” בפתיחת הקובץ" #: src/edapp.cpp:735 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 יתעדכן " "בהת××." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "×œ× ×œ×ž×—×•×§ ×§×‘×¦×™× ×–×ž× ×™×™× (לצורך ניפוי שגי×ות)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "handle a poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "מעבר לפריט במספר שורה נתון" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "התקשורת ×¢× ×”×ª×”×œ×™×š Poedit נכשלה." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "×ירעה חריגה: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "בחירת תבנית תרגו×" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "קובץ שגוי" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "בחירת קובץ תרגו×" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit הינו עורך ×ª×¨×’×•×ž×™× ×¤×©×•×˜ לתפעול." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "×œ× × ×™×ª×Ÿ לשחרר יותר מקובץ ×חד בחלון של Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "הקובץ â€%s†×ינו קובץ תרגו×." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "הקובץ “%s†×ינו ×§×™×™×." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "בדיקת ×יות מושבתת, מכיוון שהמילון לשפה %s ×ינו מותקן." #: src/edframe.cpp:871 msgid "Install" msgstr "התקנה" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "הקובץ “%s†נערך ×¢×´×™ ×™×™×©×•× ×חר." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "טעינת הקובץ מחדש" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "לטעון ×ת הקובץ מהכונן מחדש? פעולה ×–×ת ×ª×’×¨×•× ×œ×ובדן ×”×©×™× ×•×™×™× ×©×œ× ×©×ž×¨×ª " "ב־Poedit." #: src/edframe.cpp:968 msgid "Ignore" msgstr "להתעל×" #: src/edframe.cpp:968 msgid "Reload File" msgstr "טעינת הקובץ מחדש" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "הקובץ שונה. ×”×× ×‘×¨×¦×•× ×š לשמור ×ת השינויי×?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "שמירת שינויי×" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "×”×©×™× ×•×™×™× ×©×‘×™×¦×¢×ª ×™×בדו ×× ×œ× ×ª×©×ž×•×¨ ×ות×." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "שמירה" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&×œ× ×œ×©×ž×•×¨" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "×ל תשמור" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "בחירה בשמירת ×”×©×™× ×•×™×™× ×ª×’×¨×•× ×œ×ובדן ×”×©×™× ×•×™×™× ×©×‘×•×¦×¢×• ×¢×´×™ ×”×™×™×©×•× ×”×חר." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "ביטול" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "לשמור בכל מקרה" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "לשמור בכל מקרה" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "שמירה בש×…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "ביצוע הידור ל…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "קובצי ×ª×¨×’×•× ×ž×”×•×“×¨×™×" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "×™×™×¦×•× ×œÖ¾HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "קובצי HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "×™×™×¦×•× ×œÖ¾HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "העדכון נכשל" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "פתיחת קובץ סימוכין" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "עדכון מקובץ &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "עדכון מקובץ &POT…" #: src/edframe.cpp:1834 #, c-format 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[3] "נמצ×ו %d בעיות ×¢× ×”×ª×¨×’×•×." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "תוצ×ות ×”×ימות" #: src/edframe.cpp:1842 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 "" "רשומות ×¢× ×©×’×™×ות סומנו ב××“×•× ×‘×¨×©×™×ž×”. פרטי השגי××” יופיעו בעת בחירת רשומה " "שכז×ת." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "הקובץ נשמר בבטחה." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "הקובץ נשמר בבטחה והודר לפורמט ×”-MO, ×ך יתכן ×©×”×•× ×œ× ×™×¢×‘×•×“ כר×וי." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "הקובץ נשמר בבטחה, ×ך ×œ× × ×™×ª×Ÿ להדר ×ותו לפורמט ×”-MO לצורך שימוש." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "הקובץ הודר לפורמט ×”-MO, ×ך יתכן ×©×”×•× ×œ× ×™×¢×‘×•×“ כר×וי." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "×œ× × ×™×ª×Ÿ להדר קובץ ×–×” לפורמט ×”-MO לצורך שימוש." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "×œ× × ×ž×¦×ו בעיות בתרגו×." #: src/edframe.cpp:1894 #, 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] "×”×ª×¨×’×•× ×ž×•×›×Ÿ לשימוש, ×בל %d רשומות ×œ× ×ª×•×¨×’×ž×• עדיין." msgstr[1] "×”×ª×¨×’×•× ×ž×•×›×Ÿ לשימוש, ×בל %d רשומות ×œ× ×ª×•×¨×’×ž×• עדיין." msgstr[2] "×”×ª×¨×’×•× ×ž×•×›×Ÿ לשימוש, ×בל %d רשומות ×œ× ×ª×•×¨×’×ž×• עדיין." msgstr[3] "×”×ª×¨×’×•× ×ž×•×›×Ÿ לשימוש, ×בל %d רשומות ×œ× ×ª×•×¨×’×ž×• עדיין." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "×”×ª×¨×’×•× ×ž×•×›×Ÿ לשימוש." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit תיקן ב×ופן ×וטומטי תוכן שגוי בקובץ \"%s\"." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "הקובץ הכיל ×¤×¨×™×˜×™× ×›×¤×•×œ×™×, מצב ש×סור ×©×™×ª×§×™×™× ×‘×§×•×‘×¦×™ PO ועלול למנוע שימוש " "בקובץ. התקלה תוקנה על ידי Poedit ×ך עליך לסקור ×ª×¨×’×•×ž×™× ×©×œ ×¤×¨×™×˜×™× ×›×œ×©×”× " "×©×“×•×¨×©×™× ×˜×™×¤×•×œ ולתקן ××•×ª× ×× ×™×© צורך בכך." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "שפת ×”×ª×¨×’×•× ××™× ×” מוגדרת." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "הגדרת שפה" #: src/edframe.cpp:2317 msgid "Set language" msgstr "הגדרת שפה" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "הצעות ×ינן זמינות ×× ×©×¤×ª ×”×ª×¨×’×•× ×œ× ×ž×•×’×“×¨×ª כר×וי. יתכן שמ××¤×™×™× ×™× ×חרי×, כמו " "לשון רבי×, יושפעו ×’× ×›×Ÿ." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "שפת ×”×ª×¨×’×•× ×–×”×” לשפת המקור." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "תיקון שפה" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "תיקון שפה" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "לקובץ ×–×” יש רשומות ×¢× ×¦×•×¨×•×ª רבי×, ×ך ×œ× ×ž×•×’×“×¨×ª כותרת Plural-Forms." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "לרשומות בקובץ ×–×” יש כמות של צורות ×¨×‘×™× ×©×•× ×” ממה שמצוין בכותרת Plural-Forms " "של הקובץ" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "הכותרת ההכרחית Plural-Forms חסרה." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "שגי×ת תחביר בכותרת ×”-Plural-Forms†(\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "תיקון הכותרת" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "ביטוי צורות הריבוי שמשמש ×ת הקובץ ×”×•× ×—×¨×™×’ ב%s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "סקירה" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "×”×× ×‘×¨×¦×•× ×š להשתמש ב×נגלית עבור טקסט המקור?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "הקובץ משתמש במזהי מחרוזות ×‘×ž×§×•× ×‘×˜×§×¡×˜ המקור. ל־Poedit יש ×פשרות לטעון ×ת " "×”×˜×§×¡×˜×™× ×‘×נגלית מהקובץ „%s†בשבילך." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "טעינת ×נגלית" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "תורגמו: %d מתוך %d (%d%%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "נותרו: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "שגי××” %d" msgstr[1] "%d שגי×ות" msgstr[2] "%d שגי×ות" msgstr[3] "%d שגי×ות" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "רשומה %d" msgstr[1] "%d רשומות" msgstr[2] "%d רשומות" msgstr[3] "%d רשומות" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (×œ× × ×©×ž×¨)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (שונה)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "עדכון זיכרון ×”×ª×¨×’×•× × ×›×©×œ: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "××™ ×פשר לשמור ×ת הקובץ „%sâ€." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "הסרת ×ª×¨×’×•×ž×™× ×©×–×”×™× ×œ×ž×§×•×¨" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "להסיר ×ת כל ×”×ª×¨×’×•×ž×™× ×©×–×”×™× ×œ×˜×§×¡×˜ המקור?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "הפעולה ×”×–×ת תמחק ×ת כל ×”×ª×¨×’×•×ž×™× ×©×–×”×™× ×œ×˜×§×¡×˜ המקור במדויק. ×–×ת פעולה בלתי " "הפיכה." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "שמירה" #: src/edframe.cpp:2856 msgid "Remove" msgstr "להסיר" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "פינוי ×ª×¨×’×•×ž×™× ×©× ×ž×—×§×•" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "×”×× ×‘×¨×¦×•× ×š להסיר ×ת כל ×”×ª×¨×’×•×ž×™× ×©××™× × ×¢×•×“ בשימוש?" #: src/edframe.cpp:2879 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 "" "×× ×”×œ×™×š הפינוי יימשך, כל ×”×ª×¨×’×•×ž×™× ×©×¡×•×ž× ×• ×›×ž×—×•×§×™× ×™×•×¡×¨×• לצמיתות. ×™×”×™×” עליך " "×œ×ª×¨×’× ××•×ª× ×ž×—×“×© ×× ×”× ×™×ª×•×•×¡×¤×• שוב בעתיד." #: src/edframe.cpp:2883 msgid "Purge" msgstr "פינוי" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "העתקה מטקסט המקור" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "העתקה מטקסט המקור" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "מחיקת התרגו×" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "מחיקת התרגו×" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "עריכת הערה" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "עריכת הערה" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "×ž×•×¤×¢×™× ×‘×§×•×“" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "×ž×•×¤×¢×™× ×‘×§×•×“" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "הסתרת סרגל הצד" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "הצגת סרגל הצד" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "הסתרת שורת המצב" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "הצגת שורת המצב" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "×ורך המחרוזת בתווי×: ×ª×¨×’×•× | מקור" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "×ורך המחרוזת בתווי×" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "טקסט המקור" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "יחיד" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "רבי×" #: src/editing_area.cpp:477 msgid "Translation" msgstr "תרגו×" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "תורגמה מר×ש" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "דורש סקירה" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "דורש סקירה" #: src/editing_area.cpp:566 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 חדש המבוסס על התבנית." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "יצירת ×ª×¨×’×•× ×—×“×©" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "יצירת ×ª×¨×’×•× ×—×“×© מקובץ POT ×–×”." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "מזהה טקסט מקור" #: src/editing_area.cpp:768 msgid "Everything" msgstr "הכל" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "צורה %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "צורה %i (×œ× ×‘×©×™×ž×•×©)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "×פס" #: src/editing_area.cpp:788 msgid "One" msgstr "×חד" #: src/editing_area.cpp:790 msgid "Two" msgstr "שתיי×" #: src/editing_area.cpp:804 msgid "Other" msgstr "×חר" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "הקשר המחרוזת: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "מזהה המחרוזת: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "פורמט %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "פורמט %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "×ª×¨×’×•× â€” %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "מזהה" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "טקסט המקור — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "שפה ×œ× ×™×“×•×¢×”" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "שגי×ת רשת: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "שגי××” ×œ× ×™×“×•×¢×”" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "מיזוג ×§×˜×œ×•×’×™× ×©×œ gettext נכשל." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "פתיחה בעורך" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "פתיחה בעורך" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "×ין מידע בקובץ על מספר ×”×ž×•×¤×¢×™× ×©×œ המחרוזת בקוד המקור." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "×ין פרטי שימוש" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "מופע %d בקוד" msgstr[1] "%d ×ž×•×¤×¢×™× ×‘×§×•×“" msgstr[2] "%d ×ž×•×¤×¢×™× ×‘×§×•×“" msgstr[3] "%d ×ž×•×¤×¢×™× ×‘×§×•×“" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "קוד המקור ×œ× × ×ž×¦×" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "ל־Poedit ×ין ×פשרות להציג ×ת קוד המקור בו נעשה שימוש במחרוזת כיוון ש×ו " "שהקובץ ×ינו זמין ×‘×ž×™×§×•× ×”×”×¤× ×™×” ×ו שז×ת הפנייה סמלית ×©×œ× ×ž×¦×‘×™×¢×” לקובץ ×מתי." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "×œ× × ×™×ª×Ÿ לפתוח ×ת הקובץ" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "ל־Poedit ×œ× ×”×™×™×ª×” ×פשרות לפתוח ×ת הקובץ “%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "חיפוש" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "החלפה" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "×פשרויות" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "התעלמות מרישיות" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "חזרה להתחלה בסיו×" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "×ž×™×œ×™× ×©×œ×ž×•×ª בלבד" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "חיפוש בטקסט המקור" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "חיפוש בתרגומי×" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "חיפוש בהערות" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "החלפת ×”&כל" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "החלפת ×”&כל" #: src/findframe.cpp:150 msgid "&Replace" msgstr "×”&חלפה" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< ×”&קוד×" #: src/findframe.cpp:152 msgid "&Next >" msgstr "×”&×‘× >" #: src/findframe.cpp:235 msgid "String to find" msgstr "מחרוזת לחיפוש" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "מחרוזת להחלפה" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "×זהרה: " #: src/gexecute.cpp:171 msgid "error: " msgstr "שגי××”: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "×©× ×ו קוד שפה" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "שפת התרגו×" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "שפת התרגו×:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "כל המחרוזות" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "×œ× × ×™×ª×Ÿ להוריד ×ת פרטי ×”×ž×™×–× ×‘Ö¾Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "×ירעה שגי××” בהעל×ת ×ª×¨×’×•×ž×™× ×œÖ¾Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "מיזמי×" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "מידע נוסף על %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy ×”×™× ×¤×œ×˜×¤×•×¨×ž×ª ×ª×¨×’×•× ×¢× ×™×›×•×œ×•×ª ×וטומציה מתקדמות שמ×פשרת לכל ×חד ו×חת " "×œ×ª×¨×’× ×ת ×”×ž×•×¦×¨×™× ×•×”×ª×•×›×Ÿ ×©×œ×”× ×œ×ž×’×•×•×Ÿ שפות בקלות." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "הוספת מיז×" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "הוספת מיז×" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - מנהל הקטלוגי×" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "עריכה…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "יצירת ×ž×™×–× ×ª×¨×’×•×ž×™× ×—×“×©" #: src/manager.cpp:145 msgid "Delete the project" msgstr "מחיקת המיז×" #: src/manager.cpp:146 msgid "Edit the project" msgstr "עריכת המיז×" #: src/manager.cpp:176 msgid "Update all" msgstr "עדכון הכל" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "עדכון כל ×”×§×˜×œ×•×’×™× ×‘×¤×¨×•×™×™×§×˜" #: src/manager.cpp:378 msgid "Total" msgstr "סה״כ" #: src/manager.cpp:379 msgid "Untrans" msgstr "×œ× ×ž×ª×•×¨×’×ž×™×" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "דורש סקירה" #: src/manager.cpp:381 msgid "Errors" msgstr "שגי×ות" #: src/manager.cpp:382 msgid "Last modified" msgstr "שונה ל×חרונה" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "בחירת ספרייה" #: src/manager.cpp:433 msgid "Directories:" msgstr "ספריות:" #: src/manager.cpp:503 msgid "" msgstr "<×œ×œ× ×©×>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "למחוק ×ת ×”×ž×™×–× â€ž%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "מחיקת מיז×" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "מחיקת ×”×ž×™×–× ×œ× ×ª×ž×—×§ קובצי ×ª×¨×’×•× ×›×œ×©×”×." #: src/manager.cpp:571 msgid "Confirmation" msgstr "×ימות" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "לעדכן ×ת כל ×”×§×˜×œ×•×’×™× ×‘×ž×™×–× ×”×–×”?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "מבצע עדכון מקוד המקור על כל ×”×§×‘×¦×™× ×‘×ž×™×–×." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "×”×§×˜×œ×•×’×™× ×©×œ ×”×ž×™×–× ×ž×ª×¢×“×›× ×™×" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "בדיקה ×חר עדכוני×…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "מנהל הקטלוגי×" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&העדפות…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&עריכה" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "בטל" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "בצע שוב" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "הדבק והת×× ×œ×¡×’× ×•×Ÿ" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "מחיקה" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "×יות ודקדוק" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "הצג ×יות ודקדוק" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "בדוק ×ת המסמך כעת" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "בדוק ×יות במהלך ההקלדה" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "בדוק דקדוק ביחד ×¢× ×יות" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "תקן ×יות ב×ופן ×וטומטי" #: src/menus.cpp:219 msgid "Substitutions" msgstr "החלפות" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "הצג החלפות" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "העתקה והדבקה חכמות" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "מרכ×ות חכמות" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "מיקוף ×—×›×" #: src/menus.cpp:226 msgid "Smart Links" msgstr "×§×™×©×•×¨×™× ×—×›×ž×™×" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "מלל חלופי" #: src/menus.cpp:230 msgid "Transformations" msgstr "המרות" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "הפוך ל×ותיות גדולות" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "הפוך ל×ותיות קטנות" #: src/menus.cpp:234 msgid "Capitalize" msgstr "הפוך ל×ותיות רישיות" #: src/menus.cpp:237 msgid "Speech" msgstr "דיבור" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "הקר×" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "הפסק הקר××”" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "ת&צוגה" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "הצג ×ת סרגל הכרטיסיות" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "הת×× ×ישית ×ת סרגל הכלי×…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "עבור למסך מל×" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "חלון" #: src/menus.cpp:263 msgid "Minimize" msgstr "מזעור" #: src/menus.cpp:264 msgid "Zoom" msgstr "הגדל/הקטן" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "ברוך בו×ך ל־Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "×”×‘× ×”×›×œ קדימה" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "מידע על המתרג×" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "ש×:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "×”×©× ×©×œ×š" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "×ימייל:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "שמך וכתובת הדו×״ל שלך ישמשו ×ך ורק כדי להגדיר ×ת כותרת ×”-Last-Translator " "בקובצי gettext של GNU." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "עריכה" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "ביצוע הידור קובץ MO ב×ופן ×וטומטי בעת שמירה" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "בדיקת ×יות" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "שנה תמיד ×ת המיקוד לשדה הקלט של הטקסט" #: src/prefsdlg.cpp:211 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 "" "×œ× ×ž×פשר לרשימת המחרוזות לקבל מיקוד. ×× ×ž×•×¤×¢×œ, עליך להשתמש במקשי ×”×—×™×¦×™× " "בצירוף מקש ×”-Ctrl לניווט, ×בל ×’× × ×™×ª×Ÿ לכתוב טקסט מיידית, ×œ×œ× ×¦×•×¨×š בלחיצה על " "Tab לשינוי המיקוד." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "תצוגה" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "שימוש בגופן מות×× ×ישית לרשימה:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "שימוש בגופן מות×× ×ישית לשדות טקסט:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "החלפת שפת הממשק" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(דורש Windows 8 ומעלה)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "כללי" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "שימוש בזיכרון תרגו×" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "ניהול…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "בעת עדכון ממקורות" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "הת×× ×ª×¨×’×•×ž×™× ×“×•×ž×™× ×ž×ª×•×š הקובץ" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "בצע ×ª×¨×’×•× ×ž×¨×ש מזיכרון התרגו×" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit יכול לנסות ×œ×”×©×œ×™× ×¨×©×•×ž×•×ª חדשות ×ž×”×ª×¨×’×•×ž×™× ×”×§×•×“×ž×™× ×©×œ×š בקובץ ×ו מזיכרון " "×”×ª×¨×’×•× ×›×•×œ×•. שימוש בזיכרון ×”×ª×¨×’×•× ×œ× ×™×”×™×” ×פקטיבי ×× ×”×•× ×›×ž×¢×˜ ריק, ×בל ×”×•× " "ישתפר ככל ×©×ª×¨×’×•×ž×™× ×—×“×©×™× ×™×ª×•×•×¡×¤×• ×ליו." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "×ª×¨×’×•×ž×™× ×ž×וחסני×:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "גודל מסד ×”× ×ª×•× ×™× ×‘×›×•× ×Ÿ:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "×™×™×‘×•× ×§×•×‘×¦×™ תרגו×…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "×™×™×‘×•× ×§×•×‘×¦×™ תרגו×…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "×™×™×‘×•× ×žÖ¾TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "×™×™×‘×•× ×žÖ¾TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "×™×™×¦×•× ×œÖ¾TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "×™×™×¦×•× ×œÖ¾TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "×יפוס" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "בחירת קובצי ×ª×¨×’×•× ×œ×™×™×‘×•×" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "בחירת קובצי TMX לייבו×" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "קובצי TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "×ž×™×™×‘× ×ª×¨×’×•×ž×™×…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "×™×™×‘×•× ×–×™×›×¨×•×Ÿ ×ª×¨×’×•× × ×›×©×œ." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "×™×™×‘×•× ×ž×ª×•×š „%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "×ª×¨×’×•× %s יוב×." msgstr[1] "%s ×ª×¨×’×•×ž×™× ×™×•×‘×ו." msgstr[2] "%s ×ª×¨×’×•×ž×™× ×™×•×‘×ו." msgstr[3] "%s ×ª×¨×’×•×ž×™× ×™×•×‘×ו." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "×™×™×¦×•× ×‘×©×…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "×”×ª×¨×’×•×ž×™× ×ž×™×•×¦××™×…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "×™×™×¦×•× ×–×™×›×¨×•×Ÿ ×”×ª×¨×’×•× ×ל „%s†נכשל." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "×יפוס זיכרון התרגו×" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "×”×× ×תה בטוח שברצונך ל×פס ×ת זיכרון התרגו×?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "×יפוס זיכרון ×”×ª×¨×’×•× ×™×ž×—×§ ×ת כל ×”×ª×¨×’×•×ž×™× ×”×ž××•×—×¡× ×™× ×‘×•. ×œ× × ×™×ª×Ÿ לבטל פעולה זו." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "זיכרון תרגו×" #: src/prefsdlg.cpp:730 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 "" "מחלצי קוד המקור ×ž×©×ž×©×™× ×œ×יתור וחילוץ מחרוזות הניתנות ×œ×ª×¨×’×•× ×‘×§×•×‘×¦×™ קוד " "המקור, כדי שניתן ×™×”×™×” ×œ×ª×¨×’× ×ות×." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "×ž×—×œ×¦×™× ×ž×•×ª××ž×™× ×ישית:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "×ž×—×œ×¦×™× ×ž×•×ª××ž×™× ×ישית:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "תומך בכל שפות התכנות המזוהות ×¢×´×™ כלי GNU gettext (למשל PHP, C/C++, C#, Perl, " "Python, Java, JavaScript ו×חרי×)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "מחיקת מחלץ" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "×”×× ×תה בטוח שברצונך למחוק ×ת המחלץ \"%s\"?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "מחלצי×" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "חשבונות" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "בדיקה ×חר ×¢×“×›×•× ×™× ×‘×ופן ×וטומטי" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "לכלול גרס×ות בט×" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "גרס×ות ×‘×˜× ×ž×›×™×œ×•×ª ×ת התכונות ×•×”×¢×“×›×•× ×™× ×”×—×“×©×™× ×‘×™×•×ª×¨, ×ך עשויות להיות פחות " "יציבות." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "עדכוני×" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "הגדרות ×לו משפיעות על העיצוב הפנימי של קובצי PO. שנה ×ותן ×× ×™×© לך דרישות " "מסוימות, למשל בגלל שליטה על גרסה." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "סיומות שורה:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (מומלץ)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "גלישת שורה ב:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "שמירה על עיצוב של ×§×‘×¦×™× ×§×™×™×ž×™×" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "מתקד×" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "הגדרות" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "המחרוזות בהכנה…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "מתבצע ×ª×¨×’×•× ×ž×¨×ש מזיכרון התרגו×…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u מחרוזות מתורגמות מר×ש" msgstr[1] "%u מחרוזות מתורגמות מר×ש" msgstr[2] "%u מחרוזות מתורגמות מר×ש" msgstr[3] "%u מחרוזות מתורגמות מר×ש" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "מבצע ×ª×¨×’×•× ×ž×¨×ש…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d רשומות תורגמו מר×ש." msgstr[1] "%d רשומות תורגמו מר×ש." msgstr[2] "%d רשומות תורגמו מר×ש." msgstr[3] "%d רשומות תורגמו מר×ש." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "×”×ª×¨×’×•×ž×™× ×¡×•×ž× ×• ×›×›×לו ×”×“×•×¨×©×™× ×¡×§×™×¨×”, מכיוון שיתכן ש××™× × ×ž×“×•×™×§×™×. כד××™ לסקור " "××•×ª× ×•×œ×ª×§× × ×‘×ž×™×“×ª הצורך." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "תוצ×ות מדויקות מזיכרון התרגו×" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "תוצ×ות קרובות מזיכרון התרגו×" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "×œ× × ×™×ª×Ÿ ×œ×ª×¨×’× ×ž×¨×ש ×©×•× ×¨×©×•×ž×”." #: src/pretranslate.cpp:218 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 ילמד מספיק ×ž×§×‘×¦×™× ×©×™×ª×•×¨×’×ž×• ב×ופן ידני." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "×œ× × ×™×ª×Ÿ ×œ×ª×¨×’× ×ž×¨×ש ×œ×œ× ×˜×§×¡×˜ מקור." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "×ª×¨×’×•× ×ž×¨×ש" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "×ª×¨×’×•× ×ž×¨×ש דורש שטקסט המקור ×™×”×™×” זמין. ×–×” ×œ× ×¢×•×‘×“ ×× × ×¢×©×” שימוש ×‘×ž×–×”×™× ×‘×œ×‘×“ " "×œ×œ× ×”×˜×§×¡×˜ עצמו." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "×œ× × ×™×ª×Ÿ ×œ×ª×¨×’× ×ž×¨×ש משפה ×œ× ×™×“×•×¢×”." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "×ª×¨×’×•× ×ž×¨×ש דורש ששפת טקסט המקור תהיה מוכרת. זיהוי השפה בקובץ ×”×–×” על ידי " "Poedit ×œ× ×”×¦×œ×™×—×”." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "×”×©×œ× ×¨×§ הת×מות מדויקות" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "כברירת מחדל, תוצ×ות ש×ינן מדויקות נכללות ×’× ×›×Ÿ, ×ך מסומנות ×›×›×לו הדורשות " "סקירה. יש לבחור ב×פשרות זו כדי לכלול רק הת×מות מושלמות." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "×ל תסמן הת×מות מדויקות ×›×›×לו הדורשות סקירה" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "הפעל ×פשרות זו רק ×× ×תה בוטח ב×יכות של זיכרון ×”×ª×¨×’×•× ×©×œ×š. כברירת מחדל, כל " "ההת×מות מזיכרון ×”×ª×¨×’×•× ×ž×¡×•×ž× ×•×ª ×›×›×לו הדורשות סקירה, ויש לעבור עליה×." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "'×ª×¨×’×•× ×ž×¨×ש' מ×תר ב×ופן ×וטומטי בזיכרון ×”×ª×¨×’×•× ×”×ª×מות מדויקות ×ו מעורפלות " "עבור מחרוזות ש×ינן מתורגמות, ×•×ž×©×œ×™× ×ת ×”×ª×¨×’×•×ž×™× ×©×œ×”×Ÿ." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "שגי××”: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "×ירעה שגי××” %d:" msgstr[1] "×ירעו %d שגי×ות:" msgstr[2] "×ירעו %d שגי×ות:" msgstr[3] "×ירעו %d שגי×ות:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "×ירעה שגי××”." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "×ירעה שגי××” %d." msgstr[1] "×ירעו %d שגי×ות." msgstr[2] "×ירעו %d שגי×ות." msgstr[3] "×ירעו %d שגי×ות." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "בתהליך ביטול…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "יש לגרור לכ×ן תיקיות ×ו קבצי×" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "יש לגרור לכ×ן תיקיות ×ו קבצי×" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "הוספת תיקיות…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "הוספת תיקיות…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "הוספת קבצי×…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "הוספת קבצי×…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "הוספת Wildcard…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "הוספת Wildcard…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "הצגה ב־Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "הצגה בסייר" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "הצגה בתיקייה" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "נתיבי×" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "× ×ª×™×‘×™× ×œ× ×›×œ×•×œ×™×" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "הגדרות חילוץ מתקדמות" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "חילוץ הערות ×œ×ž×ª×¨×’×ž×™× ×ž×ª×•×š:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "הערות המתחילות ב:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "כל ההערות" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "דגלי xgettext נוספי×:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "מילות מפתח נוספות" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "×©× ×”×ž×™×–× ×¢×‘×•×¨×• מיועד התרגו×" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "×©× ×”×¦×•×•×ª וכתובת הדו×״ל ×ו כתובת ×”×תר" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "לדוגמה ‪nplurals=2; plural=(n > 1);‬" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (מומלץ)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "× × ×œ×©×ž×•×¨ ×ת הקובץ תחילה. ×œ× × ×™×ª×Ÿ לערוך סעיף ×–×” עד ××–." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "תקינות ממל××™ מקו×" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "×ž×ž×œ× ×”×ž×§×•× â€ž%s†חסר בתרגו×." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "×ž×ž×œ× ×ž×§×•× ×ž×™×•×ª×¨ „%s†ש×ינו בטקסט המקור." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "×ª×¨×’×•× ×¦×•×¨×•×ª רבי×" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "×œ× ×›×œ צורות ×”×¨×‘×™× ×ž×ª×•×¨×’×ž×•×ª." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "חוסר ×חידות ב×ותיות גדולות/קטנות" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "×”×ª×¨×’×•× ×מור להתחיל כמשפט." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "×”×ª×¨×’×•× ×מור להתחיל ב×ות לטינית קטנה." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "×¨×•×•×—×™× ×œ× ×חידי×" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "×”×ª×¨×’×•× ×œ× ×ž×ª×—×™×œ ברווח." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "×”×ª×¨×’×•× ×ž×ª×—×™×œ ברווח, בניגוד לטקסט המקור." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "בסוף ×”×ª×¨×’×•× ×—×¡×¨×” שורה חדשה." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "×”×ª×¨×’×•× ×ž×¡×ª×™×™× ×‘×©×•×¨×” חדשה, בניגוד לטקסט המקור." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "בסוף ×”×ª×¨×’×•× ×—×¡×¨ רווח." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "×”×ª×¨×’×•× ×ž×¡×ª×™×™× ×‘×¨×•×•×—, בניגוד לטקסט המקור." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "בדיקות פיסוק" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "×”×ª×¨×’×•× ×מור ×œ×”×¡×ª×™×™× ×‘-“%sâ€." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "×”×ª×¨×’×•× ×œ× ×מור ×œ×”×¡×ª×™×™× ×‘-“%sâ€." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "×”×ª×¨×’×•× ×ž×¡×ª×™×™× ×‘-“%sâ€, ×בל טקסט המקור ×ž×¡×ª×™×™× ×‘-“%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "ענן" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "ניקוי התפריט" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "ניקוי התפריט" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "הערה:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "עדכון" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&מחיקה" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "מחיקת ההערה" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "עריכת המיז×" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "×©× ×”×ž×™×–×:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "עיון" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "הוספת ספרייה לרשימה" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "×ישור" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&קובץ" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&חדש…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "חדש מקובץ &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "חדש מקובץ &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&פתיחה…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "פתח ×חרוני×" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "לפתוח ×ת ×”×חרוני×" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "פתיחת ×ª×¨×’×•×ž×™× ×‘×¢× ×Ÿâ€¦" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "פתיחת ×ª×¨×’×•×ž×™× ×‘×¢× ×Ÿâ€¦" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "חלון &פתיחה" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "חלון &פתיחה" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "מ&נהל הקטלוגי×" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "מ&נהל הקטלוגי×" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&סגירה" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "ש&מירה" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "שמירה &בש×…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "שמירה &בש×…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "ביצוע הידור ל-MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "×™×™&×¦×•× ×œÖ¾HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "בדיקה ×חר עדכוני×…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "הגדרות…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "×”&עדפות" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "×™&צי××”" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "יצי××”" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "להעתיק מצורת היחיד" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "להעתיק מצורת היחיד" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "סימון ×›×ª×¨×’×•× ×”×“×•×¨×© &סקירה" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "סימון ×›×ª×¨×’×•× ×”×“×•×¨×© &סקירה" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "עריכת &הערה" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "עריכת &הערה" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "הצעות" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&חיפוש…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "החלפה…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "חיפוש הב×" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "חיפוש הקוד×" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "חיפוש והחלפה…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "חיפוש הב×" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "חיפוש הקוד×" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "הצגת מ&×–×”×” מחרוזת" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "הצגת מ&×–×”×” מחרוזת" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "הצגת ×זהרות" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "הצגת ×זהרות" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "מיון לפי ×”&סדר שבקובץ" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "מיון לפי ×”&סדר שבקובץ" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "מיון לפי המ&קור" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "מיון לפי המ&קור" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "מיון לפי ×”&תרגו×" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "מיון לפי ×”&תרגו×" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "קיבו&×¥ לפי הקשר" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "קיבו&×¥ לפי הקשר" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "רשומות ×¢× ×©×’×™×ות תחילה" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "רשומות ×¢× ×©×’×™×ות תחילה" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "רשומות ש&×ינן מתורגמות תחילה" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "רשומות ש&×ינן מתורגמות תחילה" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "הצגת ×ž×•×¤×¢×™× ×‘&קוד" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "הצגת ×ž×•×¤×¢×™× ×‘&קוד" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "הצגת סרגל הצד" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "הצגת שורת המצב" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&תרגו×" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "עדכון מ&קוד המקור" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "עדכון מ&קוד המקור" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "סנכרון ×¢× Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "&×ª×¨×’×•× ×ž×¨×ש…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&×ימות התרגומי×" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&×ימות התרגומי×" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "הסרת ×ª×¨×’×•×ž×™× ×–×”×™× ×œ×ž×§×•×¨" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "פינוי ×ª×¨×’×•×ž×™× ×©&נמחקו" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "פינוי ×ª×¨×’×•×ž×™× ×©&נמחקו" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "מ×&פייני×…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "מע&בר ×ל" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "ב&צע והמשך" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "ב&צע והמשך" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "נערך בעבר" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "נערך בעבר" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "×”×ª×¨×’×•× ×”&קוד×" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "×”×ª×¨×’×•× ×”&קוד×" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "×”×ª×¨×’×•× ×”&ב×" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "×”×ª×¨×’×•× ×”&ב×" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "הקו&×“× ×©×œ× ×”×•×©×œ×" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "הקו&×“× ×©×œ× ×”×•×©×œ×" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "&×”×‘× ×©×œ× ×”×•×©×œ×" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "&×”×‘× ×©×œ× ×”×•×©×œ×" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "צורת הריבוי הקודמת" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "צורת הריבוי הקודמת" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "צורת הריבוי הב××”" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "צורת הריבוי הב××”" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "עזרה מ&קוונת" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "עזרה מ&קוונת" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "הדרכה ל-&GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "הדרכה ל-&GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&×ודות Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&×ודות" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "הגדרת מחלץ" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "רשימה של הרחבות המופרדות בנקודה פסיק (לדוגמה: ‎*.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "קרי××”:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "פקודה לחילוץ תרגומי×:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "זו הפקודה המשמשת לפתיחת המחלץ.\n" "%o יוחלף ×‘×©× ×©×œ קובץ הפלט, %K ברשימת מילות המפתח, %F ברשימת קבצי הקלט,\n" "%C בדגל הקידוד (ר××” למטה)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "פריט ברשימת מילות המפתח:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "משתנה ×–×” יתווסף לשורת הפקודה ×¤×¢× ×חת\n" "עבור כל מילת מפתח. %k יוחלף במילת המפתח." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "פריט ברשימת קובצי הקלט:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "משתנה ×–×” יתווסף לשורת הפקודה ×¤×¢× ×חת\n" "עבור כל קובץ קלט. %f יוחלף ×‘×©× ×”×§×•×‘×¥." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "קידוד קוד המקור:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "משתנה ×–×” יתווסף לשורת הפקודה\n" "רק ×× ×”×§×™×“×•×“ של קוד המקור סופק. %c יוחלף בערך הקידוד." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "מ×פייני התרגו×" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "×©× ×•×’×¨×¡×ª המיז×:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "צוות המתרגמי×:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "צורות רבי×:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "שימוש בכללי בררת המחדל לשפה זו" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "שימוש בביטוי מות×× ×ישית" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "מידע על לשון רבי×" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "קידוד:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "הגדרות חילוץ מתקדמות…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "הגדרות חילוץ מתקדמות…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "מ×פייני התרגו×" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "נתיבי המקורות" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "נתיבי המקורות" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "חילוץ טקסט מקובצי המקור בספריות הב×ות:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "נתיב הבסיס:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "מילות מפתח המקורות" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "מילות מפתח המקורות" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "השתמש במילות מפתח ×לה (שמות פונקציות) על מנת לזהות מחרוזות הניתנות לתרגו×\n" "בקובצי המקור:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "השתמש בנוסף במילות מפתח ברירת מחדל עבור שפות נתמכות" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "מידע נוסף ×ודות מילות מפתח של gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "פתיחת קובץ" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "שמירת קובץ" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "×ימות" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "בדיקת שגי×ות בתרגו×" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "עדכון מקוד" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "עדכון מקוד" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "עדכון מקוד המקור" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "סרגל הצד" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "הצגה ×ו הסתרה של סרגל הצד" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "טקסט המקור הקוד×" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "טקסט המקור ×”×§×•×“× (לפני ששונה במהלך עדכון) ×ליו תו×× ×”×ª×¨×’×•× ×©×›×¢×ª ×ינו מדויק." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "הערות למתרגמי×" #: src/sidebar.cpp:196 msgid "Comment" msgstr "הערה" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "הוספת הערה" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "הוספת הערה" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "מחיקה מזיכרון התרגו×" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "מחיקה מזיכרון התרגו×" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "הצעות תרגו×" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "×œ× × ×ž×¦×ו הת×מות" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "×œ× × ×ž×¦×ו הת×מות" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "מחרוזת זו ×ותרה בזיכרון ×”×ª×¨×’×•× ×©×œ Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "הצעות ×ª×¨×’×•×ž×™× ×“×•×¨×©×•×ª שטקסט המקור ×™×”×™×” זמין. הן ×œ× ×¢×•×‘×“×•×ª ×× × ×¢×©×” שימוש " "×‘×ž×–×”×™× ×‘×œ×‘×“ ×œ×œ× ×”×˜×§×¡×˜ עצמו." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "הצעות ×ª×¨×’×•× ×“×•×¨×©×•×ª ששפת טקסט המקור תהיה מוכרת. זיהוי השפה בקובץ ×”×–×” על ידי " "Poedit ×œ× ×”×¦×œ×™×—×”." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "×œ× × ×™×ª×Ÿ להריץ ×ת היישו×: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "קובץ ×”Ö¾TMX פגו×." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "מסד ×”× ×ª×•× ×™× ×©×œ זיכרון ×”×ª×¨×’×•× ×¤×’×•×: %s â€(%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "שגי×ת זיכרון תרגו×: %s â€(%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(שימוש בשפת ברירת המחדל)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "בחירת שפה" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "× × ×œ×‘×—×•×¨ ×ת השפה המועדפת עליך" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "יש להפעיל מחדש ×ת Poedit כדי ×©×”×©×™× ×•×™×™× ×™×™×›× ×¡×• לתוקף." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "×œ× × ×™×ª×Ÿ ליצור ספרייה זמנית." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "×ין תרגומי×. ×–×” מצב חריג." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "רשומות שניתן ×œ×ª×¨×’× ×œ× × ×•×¡×¤×•×ª ידנית למערכת Gettext, ××œ× ×ž×—×•×œ×¦×• ×וטומטית מקוד " "המקור. כך, הן נש×רות עדכניות ומדויקות. ×ž×ª×¨×’×ž×™× ×‘×“×¨×š כלל ×ž×©×ª×ž×©×™× ×‘×§×•×‘×¦×™ " "תבניות PO†(POT) ×©×”×ž×¤×ª×—×™× ×ž×›×™× ×™× ×œ×”×." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "מידע נוסף על gettext מבית גנו" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "הדרך הפשוטה ביותר למילוי קובץ ×–×” ×¢× ×ª×¨×’×•×ž×™× ×”×™× ×œ×¢×“×›×Ÿ ×ותו מ-POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "עדכון מ-POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "שימוש במחרוזות הניתנות ×œ×ª×¨×’×•× ×ž×ª×‘× ×™×ª POT קיימת." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "ניתן ×’× ×œ×—×œ×¥ ×ת המחרוזות הניתנות ×œ×ª×¨×’×•× ×™×©×™×¨×•×ª מקוד המקור:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "חילוץ ממקורות" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "ניתן להגדיר ×ת חילוץ קוד המקור במ×פייני×." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "גרסה %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "ליצור חדש" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "יצירת ×ª×¨×’×•× ×—×“×© מתבנית POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "עיון בקבצי×" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "פתיחה ועריכת קובצי תרגו×." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "×ª×¨×’×•× ×ž×™×–× ×‘×¢× ×Ÿ" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "שיתוף פעולה מקוון ×¢× ×× ×©×™× ×חרי×." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "×§×‘×¦×™× ×חרוני×" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "סנכרון" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "סנכרון ×”×ª×¨×’×•× ×¢× Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "על %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "העדפות של %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "על %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "שירותי×" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "להסתיר ×ת %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "להסתיר ×חרי×" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "להציג הכול" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "יצי××” מ־%s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "העדפות…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "העדפות…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "העדפות…" #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "×”&חל" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "החל" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "×”&קוד×" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "הקוד×" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "בי&טול" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&× ×§×”" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "× ×§×”" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "העתק" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "×’&זור" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "גזור" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "עריכה" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "×™&צי××”" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "עזרה" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "×—&דש" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "חדש" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&ל×" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "ל×" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&×ישור" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "פתיחה…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&פתיחה..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "פתיחה..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "×”&דבק" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "הדבק" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "העדפות" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "בצע &שוב" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "רענון" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "שמירה &בש×" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "שמירה בש×" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "בחר ×”&כל" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "בחר הכל" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&בטל" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&כן" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "כן" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Up" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Down" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Left" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Right" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "×זהרה: " poedit-3.6.3/locales/pt_PT.po0000644000175100001660000027043415011674230011512 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-08 10:16\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: pt-PT\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Ocultar esta mensagem de notificação" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Não mostrar novamente" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Não mostrar novamente" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Resumo da atualização" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Resumo da atualização" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Fechar" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problemas" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Ficheiro" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Linha" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problema" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Novas cadeias" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Novas cadeias" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Cadeias removidas" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Cadeias removidas" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "A obter os ficheiros fonte…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "A extrair cadeias de %s ficheiro…" msgstr[1] "A extrair cadeias de %s ficheiros…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Falha ao carregar ficheiro com traduções extraídas." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Em: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "O código fonte não está disponível." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "As traduções não foram atualizadas a partir do código fonte porque o código " "não foi encontrado na localização especificada nas propriedades do ficheiro." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Permissão recusada." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Não tem permissões para ler ficheiros de código fonte a partir da " "localização especificada nas propriedades do ficheiro." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Se, previamente, lhe foi negado o acesso aos seus ficheiros, pode permiti-lo " "em Definições do sistema > Privacidade e Segurança > Ficheiros e pastas." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Se você negou anteriormente o acesso aos seus ficheiros, pode agora " "autorizar esse acesso em Preferências do sistema > Segurança e privacidade > " "Privacidade > Ficheiros e pastas." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Falha ao extrair as cadeias a partir do código-fonte." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Não foi possível abrir o ficheiro “%sâ€." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Atualizar traduções" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "A determinar diferenças…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "A incorporar diferenças…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "O ficheiro de tradução está atualizado e nenhuma alteração foi efetuada." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "O ficheiro de tradução foi atualizado com %s alteração." msgstr[1] "O ficheiro de tradução foi atualizado com %s alterações" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Novas cadeias para traduzir:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Cadeias removidas (não utilizadas):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "Detetado %d problema nas cadeias de origem." msgstr[1] "Detetados %d problemas nas cadeias de origem." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Ver detalhes…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Ver detalhes…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Cabeçalho mal formado: “%s“" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Ficheiros de tradução PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Modelos de tradução POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Ficheiros de tradução XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Catálogo de tradução Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Ficheiros de tradução JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Ficheiros de tradução Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Todos os ficheiros de tradução" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "O ficheiro está num formato não reconhecido pelo Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Este ficheiro JSON não é um ficheiro de traduções e não pode ser editado no " "Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Falha ao ler o conteúdo do ficheiro com o seguinte erro: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "O ficheiro \"%s\" é apenas de leitura e não pode ser guardado.\n" "Por favor, guarde-o com um nome diferente." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Não foi possível guardar o ficheiro %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Capturas de ecrã:" #: src/catalog_po.cpp:134 #, 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 linha do ficheiro “%s“ não foi carregada corretamente." msgstr[1] "%i linhas do ficheiro \"%s\" não foram carregadas corretamente." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "A linha %d do ficheiro “%s“ está danificada (dados %s inválidos)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Ficheiro PO danificado: usada a forma singular msgstr em conjunto com " "msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Ficheiro PO danificado: usadas formas plurais msgstr sem msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Não foi possível carregar o ficheiro, provavelmente está danificado." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Ocorreram erros ao carregar o ficheiro. Como resultado, alguns dados podem " "estar em falta ou danificados." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Ocorreu um problema ao formatar o ficheiro (mas este foi guardado com " "sucesso)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Não foi possível guardar o ficheiro no formato “%s“, como especificado nas " "definições da tradução.\n" "\n" "Este foi guardado no formato UTF-8 e a definição foi alterada em " "concordância." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Erro ao guardar o ficheiro" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s“ não é um ficheiro POT válido." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Encontrado conteúdo em falta no ficheiro XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Para ficheiros XCLOC, não é possível guardar noutras localizações." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Erro ao carregar o ficheiro XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "versão não suportada (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Marcação danificada na cadeia de tradução." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Conecte o Poedit com plataformas de tradução na nuvem suportadas, para " "sincronizar de forma transparente as traduções aí geridas." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Como é que funciona a sincronização na nuvem?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Conta" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(sessão não iniciada)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Abrir tradução na nuvem" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Gerir contas" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projeto:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Idioma:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Inicie sessão na sua conta" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Inicie sessão na sua conta" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Não existem projetos de tradução associados à sua conta." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "A descarregar traduções mais recentes..." #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Iniciar sessão em %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sincronização" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "A carregar traduções para %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Não foi possível carregar as traduções para %s." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Erro de sincronização" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Adicionar" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Erro desconhecido do Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Não autorizado. Inicie novamente a sessão." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Os projetos Crowdin \"String-based\" não são suportados." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Este projeto desativou a descarga de traduções." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Iniciar sessão" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Iniciar sessão" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Terminar sessão" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Terminar sessão" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Saber mais sobre o Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin é uma plataforma online de gestão de traduções e uma ferramenta de " "tradução colaborativa. Nós também utilizamos a plataforma Crowdin para " "traduzir o Poedit e não podíamos estar mais satisfeitos." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "A aguardar autenticação…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "A atualizar informações do utilizador…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Inicie a sessão na Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Falha ao sincronizar com o Crowdin." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Erro do Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "A enviar traduções…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Copiar" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Saber mais" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "Aj&uda" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Os ficheiros MO não podem ser editados com o Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Erro ao abrir ficheiro" #: src/edapp.cpp:735 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 guardar o " "ficheiro PO, o ficheiro MO também será atualizado." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "não apagar ficheiros temporários (depuração)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "gerir um URI poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "ir para o item indicado pelo número de linha" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Falha ao comunicar com o processo do Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ocorreu uma exceção não tratada: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Selecione modelo de tradução" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Ficheiro inválido" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Selecione ficheiro de tradução" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "O Poedit é um editor de traduções fácil de usar." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Não pode largar mais do que um ficheiro na janela do Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "O ficheiro \"%s\" não é um ficheiro de tradução." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "O ficheiro “%s“ não existe." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "A verificação ortográfica está inativa porque o dicionário para o idioma %s " "não está instalado." #: src/edframe.cpp:871 msgid "Install" msgstr "Instalar" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "O ficheiro “%s\" foi alterado por outra aplicação." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Recarregar ficheiro" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Deseja recarregar o ficheiro do disco? As suas edições não guardadas no " "Poedit serão perdidas se o fizer." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignorar" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Recarregar ficheiro" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "O ficheiro foi alterado. Deseja guardar as alterações?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Guardar alterações" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Se não guardar as alterações, estas serão perdidas." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Guardar" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Não guardar" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Não guardar" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "As alterações feitas por outra aplicação serão perdidas se guardar." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Cancelar" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Guardar mesmo assim" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Guardar mesmo assim" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Guardar como…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Compilar para…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Ficheiros de tradução compilados" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Exportar para HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Ficheiros HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Exportação para HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Falha ao atualizar" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Abrir ficheiro de referência" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Atualizar a partir de ficheiro &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Atualizar a partir de ficheiro &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Foi encontrado %d erro na tradução." msgstr[1] "Foram encontrados %d erros na tradução." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Resultados da validação" #: src/edframe.cpp:1842 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 estão marcadas a vermelho. Os detalhes do erro serão " "mostrados ao selecionar a entrada correspondente." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "O ficheiro foi guardado com sucesso." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "O ficheiro foi guardado com sucesso e o ficheiro MO foi compilado. No " "entanto, é possível que não funcione corretamente." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "O ficheiro foi guardado mas o ficheiro MO não foi criado." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "O ficheiro foi compilado para o formato MO mas é provável que não funcione " "corretamente." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "O ficheiro não pode ser compilado para o formato MO." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Não foram encontrados erros na tradução." #: src/edframe.cpp:1894 #, 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] "" "A tradução pode ser utilizada mas %d entrada ainda não está traduzida." msgstr[1] "" "A tradução pode ser utilizada mas %d entradas ainda não estão traduzidas." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "A tradução está pronta para utilização." #: src/edframe.cpp:2294 #, 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“." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "O ficheiro contém itens duplicados, o que não é permitido em ficheiros PO e " "que impede a utilização do ficheiro. O Poedit corrigiu este problema, mas " "você deve rever a traduções dos itens marcados como imprecisos e efetuar as " "correções necessárias." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "O idioma da tradução não está definido." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Definir idioma" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 não estão disponíveis se o idioma de tradução não estiver " "definido corretamente. Outras funcionalidades, tais como as formas de " "plural, poderão ser também afetadas." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "O idioma de tradução é o mesmo que o idioma fonte." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Corrigir idioma" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Corrigir idioma" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Este ficheiro tem entradas com formas plurais, mas não tem o cabeçalho " "Plural-Forms configurado." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "As entradas deste ficheiro possuem formas plurais que diferem das que estão " "definidas no cabeçalho Plural-Forms" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "O cabeçalho Plural-Forms não existe." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Erro de sintaxe no cabeçalho Plural-Forms (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Corrigir cabeçalho" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Corrigir cabeçalho" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "A expressão de formas de plural utilizadas pelo ficheiro são invulgares para " "%s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Rever" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Gostaria de usar o inglês para o texto de origem?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Este ficheiro utiliza IDs de frase em vez do texto original. Poedit pode " "carregar textos em inglês do ficheiro \"%s\"." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Carregar inglês" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduzido: %d de %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Faltam: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d erro" msgstr[1] "%d erros" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrada" msgstr[1] "%d entradas" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (não guardado)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (modificado)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Falha ao atualizar a memória de traduções: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Não foi possível guardar \"%s\"." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Remover traduções iguais à fonte" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Pretende remover todas as traduções que sejam idênticas ao texto fonte?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Esta ação irá apagar todas as traduções que correspondam, exatamente, ao " "texto fonte. A ação não pode ser revertida." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Manter" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Remover" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Remover traduções eliminadas" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Pretende remover todas as traduções que já não são utilizadas?" #: src/edframe.cpp:2879 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 continuar, todas as traduções marcadas como apagadas serão removidas " "permanentemente. Se as entradas forem respostas, terá que as traduzir " "novamente." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Remover" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Copiar entrada original" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Copiar entrada original" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Limpar tradução" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Limpar tradução" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Editar comentário" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Editar comentário" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Ocorrências de código" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Ocorrências de código" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Ocultar barra lateral" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Mostrar barra lateral" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Ocultar barra de estado" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Mostrar barra de estado" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Comprimento da frase em caracteres: tradução | fonte" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Comprimento da frase em caracteres" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Texto fonte" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singular" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plurais" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Tradução" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pré-traduzida" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Por rever" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Por rever" #: src/editing_area.cpp:566 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 estes não contêm quaisquer traduções.\n" "Para traduzir, crie um novo ficheiro PO com base no modelo." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Criar nova tradução" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Criar uma nova tradução a partir deste ficheiro POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID do texto fonte" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Tudo" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Forma %i (não usada)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Zero" #: src/editing_area.cpp:788 msgid "One" msgstr "Uma" #: src/editing_area.cpp:790 msgid "Two" msgstr "Duas" #: src/editing_area.cpp:804 msgid "Other" msgstr "Outra" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Contexto da frase: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identificador da frase: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Formato %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Formato %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Tradução — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Texto fonte — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "idioma desconhecido" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Erro de rede: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Erro desconhecido" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Não foi possível unir os catálogos do gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Abrir no editor" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Abrir no editor" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "O ficheiro não indica informação sobre as ocorrências desta frase no código-" "fonte." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Sem informações de utilização" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d ocorrência de código" msgstr[1] "%d ocorrências de código" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Código fonte não encontrado" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "O Poedit não pode mostrar o código-fonte onde a frase é usada, porque o " "ficheiro ou não está disponível no local referenciado ou é uma referência " "simbólica que não aponta para um ficheiro verdadeiro." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Não é possível abrir o ficheiro" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "O Poedit não conseguiu abrir o ficheiro “%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Localizar" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Substituir" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opções" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignorar maiúsculas/minúsculas" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Moldar texto" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Só palavras inteiras" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Localizar nos textos fonte" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Localizar nas traduções" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Localizar nos comentários" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Substituir t&udo" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Substituir t&udo" #: src/findframe.cpp:150 msgid "&Replace" msgstr "Substitui&r" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< An&terior" #: src/findframe.cpp:152 msgid "&Next >" msgstr "Segui&nte >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Texto a procurar" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Texto de substituição" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "aviso: " #: src/gexecute.cpp:171 msgid "error: " msgstr "erro: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Nome ou código do idioma" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Idioma da tradução" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Idioma da tradução:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Todas as cadeias" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Não foi possível descarregar os detalhes do projeto Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Ocorreu um erro ao carregar as traduções para Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projetos" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Saber mais acerca de %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy é uma plataforma altamente automatizada que permite facilmente a " "qualquer um traduzir os seus produtos e/ou conteúdos facilmente." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Adicionar projeto" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Adicionar projeto" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Gestor de catálogos" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Editar…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Criar novo projeto de traduções" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Apagar projeto" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Editar projeto" #: src/manager.cpp:176 msgid "Update all" msgstr "Atualizar tudo" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Atualizar todos os catálogos do projeto" #: src/manager.cpp:378 msgid "Total" msgstr "Total" #: src/manager.cpp:379 msgid "Untrans" msgstr "Por traduzir" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Por rever" #: src/manager.cpp:381 msgid "Errors" msgstr "Erros" #: src/manager.cpp:382 msgid "Last modified" msgstr "Última modificação" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Escolha o diretório" #: src/manager.cpp:433 msgid "Directories:" msgstr "Diretórios:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Tem a certeza de que deseja remover o projeto \"%s\"?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Remover projeto" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "A remoção do projeto não implica a perda dos ficheiros de tradução." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Confirmação" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Atualizar todos os catálogos deste projeto?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Atualiza todos os ficheiros do projeto tendo por base o código fonte." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Atualização de catálogos do projeto" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Procurar atualizações…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Gestor de catálogos" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Preferências…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Editar" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Desfazer" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Refazer" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Colar com a formatação do documento" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Apagar" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Ortografia e gramática" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Mostrar ortografia e gramática" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Analisar documento agora" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Verificar ortografia ao escrever" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Verificar gramática com ortografia" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Corrigir ortografia automaticamente" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Substituições" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Mostrar substituições" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Colar/Colar inteligente" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Aspas inteligentes" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Travessões inteligentes" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Ligações inteligentes" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Substituição de texto" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformações" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Converter em maiúsculas" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Converter em minúsculas" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Capitalizar" #: src/menus.cpp:237 msgid "Speech" msgstr "Fala" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Iniciar fala" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Parar fala" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Ver" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Mostrar barra de ferramentas" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Personalizar barra de ferramentas…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Entrar no modo de ecrã completo" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Janela" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimizar" #: src/menus.cpp:264 msgid "Zoom" msgstr "Ampliação" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Bem-vindo ao Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Trazer para primeiro plano" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informações do tradutor" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nome:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "O seu nome" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-mail:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "você@exemplo.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "O seu nome e endereço eletrónico só serão utilizados para definir o " "cabeçalho Last-Translator dos ficheiros GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Edição" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Compilar ficheiro MO ao guardar" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Verificação ortográfica" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Focar sempre o campo da entrada de texto" #: src/prefsdlg.cpp:211 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 deixar que a lista de cadeias obtenha o foco. Se ativa, tem que usar " "Control+Teclas do cursor para mudar de linhas com o teclado, mas também pode " "digitar o texto imediatamente, sem ter que premir a tecla Tab para mudar de " "campo." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Aspeto" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Utilizar tipo de letra personalizada:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Utilizar tipo de letra personalizada nos campos de texto:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Mudar idioma da aplicação" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(requer Windows 8 ou mais recente)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Geral" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Utilizar memória de tradução" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Gerir…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Ao atualizar das fontes" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "preencher com ocorrências do ficheiro" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pré-traduzir com a MT" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "O Poedit pode tentar preencher as novas entradas a partir das traduções " "antigas do ficheiro ou a partir da memória de traduções. A memória de " "traduções será ineficaz se estiver quase vazia, mas à medida que lhe for " "adicionando as suas traduções irá melhorar." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Traduções guardadas:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Tamanho da base de dados no disco:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importar ficheiros de tradução…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importar ficheiros de tradução…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importar de TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importar de TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Exportar para TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Exportar para TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Repor" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Selecione os ficheiros de tradução a importar" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Selecione os ficheiros TMX a importar" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Ficheiros TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "A importar traduções…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Falha ao importar a memória de traduções." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "A importar de “%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s tradução foi importada." msgstr[1] "%s traduções foram importadas." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exportar como…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "A exportar traduções…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Ocorreu uma falha ao exportar a memória de traduções para “%sâ€." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Reiniciar memória de traduções" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Tem a certeza que pretende reiniciar a memória de traduções?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Se reiniciar a memória de traduções, apagará todas as traduções guardadas. " "Esta operação não pode ser desfeita." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "MT" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Memória de traduções" #: src/prefsdlg.cpp:730 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 "" "Os extratores de código fonte são utilizados para localizar as entradas, nos " "ficheiros fonte, que podem ser traduzidas e extraem-nas para que possam ser " "editadas." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Extratores personalizados:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Extratores personalizados:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Ativa o suporte a todas as linguagens de programação reconhecidas pelas " "ferramentas GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript e " "mais)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Remover extrator" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Tem a certeza de que deseja remover o extrator “%s“?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extratores" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Contas" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Procurar atualizações automaticamente" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Incluir versões beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "As versões Beta possuem novas funcionalidades e melhorias mas podem ser " "instáveis." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Atualizações" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Estas definições afetam a formatação interna dos ficheiros PO. Deve ajustar " "as definições caso necessite de requisitos especiais." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Final de linha:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (recomendado)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Quebra em:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Manter formatação dos ficheiros existentes" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Avançado" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Definições" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "A preparar cadeias…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Pré-tradução da memória de tradução…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u entrada pré-traduzida" msgstr[1] "%u entradas pré-traduzidas" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "A pré-traduzir…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d entrada foi pré-traduzida." msgstr[1] "%d entradas foram pré-traduzidas." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "As traduções foram marcadas como imprecisas porque podem não ser exatamente " "iguais. Deve rever estas traduções." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Ocorrências exatas na MT" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Ocorrências aproximadas na MT" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Não foi possível pré-traduzir as entradas." #: src/pretranslate.cpp:218 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 memória de traduções não contém quaisquer cadeias 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." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Não é possível pré-traduzir sem texto de origem." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pré-traduzir" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "A pré-tradução requer que o texto original esteja disponível. Não funciona " "se apenas IDs sem o texto real forem usados." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Não foi possível pré-traduzir de um idioma desconhecido." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "A pré-tradução requer que o idioma do texto de origem seja conhecido. O " "Poedit não conseguiu detetá-lo neste ficheiro." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Preencher apenas as ocorrências exatas" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Por definição, os resultados imprecisos também são incluídos mas marcados " "para revisão. Assinale esta opção para apenas incluir ocorrências exatas." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Não marcar ocorrências exatas como imprecisas" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Apenas deve ativar esta opção se confiar plenamente na MT. Por definição, " "todas as ocorrências obtidas a partir da MT serão marcadas como imprecisas." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "A pré-tradução localiza automaticamente as ocorrências exatas ou similares " "para as cadeias não traduzidas a partir da memória de tradução e preenche as " "suas traduções." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Erro: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "Ocorreu %d erro:" msgstr[1] "Ocorreram %d erros:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Ocorreu um erro." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "Ocorreu %d erro." msgstr[1] "Ocorreram %d erros." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "A cancelar…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Arraste pastas ou ficheiros para aqui" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Arraste pastas ou ficheiros para aqui" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Adicionar pastas…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Adicionar pastas…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Adicionar ficheiros…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Adicionar ficheiros…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Adicionar \"wildcard\"…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Adicionar \"wildcard\"…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Mostrar no Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Mostrar no Explorador" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Mostrar na Pasta" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Caminhos" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Caminhos excluídos" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Definições avançadas de extração" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Extrair notas de tradução em:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Comentários prefixados com:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Todos os comentários" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Marcas xgettext adicionais:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Palavras-chave adicionais" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Nome do projeto de tradução" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Nome da equipa e endereço de e-mail ou URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "ex.: nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomendado)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Por favor guarde o ficheiro. Esta secção não pode ser editada até que o faça." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Correção de marcadores de posição" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "O marcador de posição \"%s\" não existe na tradução." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "O marcador de posição \"%s\" não existe no texto original." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Traduções plurais de forma" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Nem todas as formas plurais estão traduzidas." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Maiúsculas/minúsculas inconsistentes" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "A tradução deve começar como uma frase." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "A tradução deve começar com uma letra minúscula." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Espaço branco inconsistente" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "A tradução não começa com um espaço." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "A tradução começa com um espaço, mas o texto fonte não." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "A tradução não tem uma nova linha no fim." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "A tradução termina com uma nova linha, mas o texto fonte não." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "A tradução não tem um espaço no fim." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "A tradução termina com um espaço, mas o texto fonte não." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Verificações de pontuação" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "A tradução deve terminar com “%sâ€." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "A tradução não deve terminar com “%sâ€." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "A tradução termina com “%sâ€, mas o texto fonte termina com “%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Nuvem" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Limpar menu" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Limpar menu" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Comentário:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Atualizar" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Apagar" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Eliminar comentário" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Editar projeto" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nome do projeto:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Explorar" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Adicionar diretório à lista" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Aceitar" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Ficheiro" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Novo…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Novo a partir de ficheiro &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Novo a partir de ficheiro &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Abrir…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Abrir recentes" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Abrir recentes" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Abrir tradução na nuvem…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Abrir tradução na nuvem…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Janela i&nicial" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Janela i&nicial" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Gest&or de catálogos" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Gest&or de catálogos" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "Fe&char" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Guardar" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Guardar &como…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Guardar &como…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Compilar para MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&xportar para HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Procurar atualizações…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Definições…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Preferências" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Sair" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Sair" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Copiar da forma singular" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Copiar da forma singular" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Tradução por re&ver" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Tradução por re&ver" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Editar &comentário" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Editar &comentário" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Sugestões" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "Locali&zar…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Substituir…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Localizar seguinte" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Localizar anterior" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Localizar e substituir…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Localizar seguinte" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Localizar anterior" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Mostrar &ID da linha" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Mostrar &ID da linha" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Mostrar avisos" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Mostrar avisos" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Ordenar pela ordem do &ficheiro" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Ordenar pela ordem do &ficheiro" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "&Ordenar por fonte" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "&Ordenar por fonte" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Ordenar por &tradução" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Ordenar por &tradução" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "A&grupar por contexto" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "A&grupar por contexto" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Entradas com erros primeiro" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Entradas com erros primeiro" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Não trad&uzidas primeiro" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Não trad&uzidas primeiro" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "Mostrar ocorrência&s de código" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "Mostrar ocorrência&s de código" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Mostrar barra lateral" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Mostrar barra de estado" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Tradução" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "At&ualizar a partir do código fonte" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "At&ualizar a partir do código fonte" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sincronizar com o Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pré-&tradução…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validar traduções" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validar traduções" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Remover traduções iguais à fonte" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Remover traduções eliminadas" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Remover traduções eliminadas" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Propriedades…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Ir" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Pronta e avançar" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Pronta e avançar" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Editada anteriormente" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Editada anteriormente" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Tradução &anterior" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Tradução &anterior" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Tradução &seguinte" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Tradução &seguinte" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "An&terior não terminada" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "An&terior não terminada" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Seguinte &não terminada" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Seguinte &não terminada" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Forma plural anterior" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Forma plural anterior" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Forma plural seguinte" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Forma plural seguinte" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Ajuda na &web" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Ajuda na &web" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Manual &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Manual &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Sobre o Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Acerca" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Configurar extrator" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista de extensões separadas por ponto e vírgula (ex. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Invocação:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Comando para extrair traduções:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Este é o comando utilizado para iniciar o extrator.\n" "%o será substituído pelo nome do ficheiro de destino,\n" "%K pela lista de palavras chave, %F pela lista de ficheiros\n" "de entrada e %C pelo tipo de codificação (veja abaixo)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Um item na lista de palavras-chave:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Isto será anexado à linha de comandos uma vez para cada\n" "palavra-chave. %k será substituído pela palavra-chave." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Um item na lista de ficheiros de entrada:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Isto será anexado à linha de comandos uma vez para cada\n" "ficheiro de entrada. %f será substituído pelo nome do ficheiro." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Codificação do código fonte:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "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." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Propriedades da tradução" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nome e versão do projeto:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Equipa de tradução:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Formas plurais:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Utilizar regras pré-definidas para este idioma" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Utilizar expressão personalizada" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Saber mais sobre formas plurais" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Codificação:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Definições avançadas de extração…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Definições avançadas de extração…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Propriedades da tradução" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Caminho das fontes" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Caminho das fontes" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Extrair texto dos ficheiros fonte nestes diretórios:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Caminho base:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Palavras-chave das fontes" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Palavras-chave das fontes" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Utilizar estas palavras-chave (nomes de funções) para reconhecer cadeias\n" "passíveis de tradução nos ficheiros fonte:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Utilizar também palavras-chave para os idiomas suportados" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Saber mais sobre as palavras-chave gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Abrir ficheiro" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Guardar ficheiro" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validar" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Procurar erros na tradução" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Atualizar a partir do código" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Atualizar a partir do código" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Atualizar a partir do código fonte" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Barra lateral" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Texto fonte anterior" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "O texto fonte anterior (antes de uma atualização) a que as traduções " "inexatas agora correspondem." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Notas para tradutores" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Comentário" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Adicionar comentário" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Adicionar comentário" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Apagar da memória de traduções" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Apagar da memória de traduções" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Sugestões de tradução" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Nenhuma ocorrência" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Nenhuma ocorrência" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Esta linha foi encontrada na memória de traduções do Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "As sugestões de tradução requerem que o texto de origem esteja disponível. " "As mesmas não funcionam se apenas IDs sem o texto real forem usadas." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "As sugestões de tradução requerem que o idioma do texto de origem seja " "conhecido. O Poedit não conseguiu detetá-lo neste ficheiro." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Não foi possível executar o programa: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "O ficheiro TMX está danificado." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "A base de dados da memória de traduções está danificada: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Erro na memória de traduções: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Utilizar idioma predefinido)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Seleção de idioma" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Selecione o seu idioma preferido" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Tem que reiniciar o Poedit para aplicar a alteração." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Não foi possível criar o diretório temporário." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Não existem traduções. Isto é estranho." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "As entradas passíveis de tradução em sistemas Gettext são extraidas " "diretamente do código-fonte e não podem ser adicionadas manualmente. Desta " "forma, as cadeias estão sempre atualizadas e precisas. Normalmente, os " "programadores utilizam os catálogos PO (POT)." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Saber mais acerca de GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "O método mais fácil para preencher este ficheiro é atualizá-lo de um " "ficheiro POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Atualizar com base em ficheiro POT..." #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Obter cadeias a traduzir a partir de um modelo POT." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Também pode extrair as cadeias a traduzir diretamente do código fonte:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Extrair das fontes" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Configure a extração do código fonte nas propriedades." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versão %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Criar novo" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Criar nova tradução a partir do modelo POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Explorar ficheiros" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Abrir e editar ficheiros de tradução." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Traduzir projeto na nuvem" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Colabore online com outras pessoas" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Ficheiros recentes" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sincronização" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sincronizar tradução com a Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Acerca de %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Preferências do %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Acerca de %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Serviços" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Ocultar %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Ocultar outros" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Mostrar tudo" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Sair de %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Preferências…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Preferências..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferências..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Aplicar" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Aplicar" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Recuar" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Recuar" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Cancelar" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Limpar" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Limpar" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Copiar" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Cor&tar" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Cortar" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Editar" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Sair" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Ajuda" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Novo" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Novo" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Não" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Não" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Abrir…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Abrir..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Abrir..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "Co&lar" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Colar" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Preferências" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Refazer" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Recarregar" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "Guardar &como" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Guardar como" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Selecion&ar tudo" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Selecionar tudo" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Desfazer" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Sim" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Sim" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Cima" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Baixo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Esquerda" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Direita" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Aviso: " poedit-3.6.3/locales/hr.po0000644000175100001660000026610415011674363011103 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-05-16 10:16\n" "Last-Translator: \n" "Language-Team: Croatian\n" "Language: hr_HR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: hr\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Sakrij ovu obavijest" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ne prikazuj ponovo" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ne prikazuj ponovo" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Ažuriraj sažetak" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Ažuriraj sažetak" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Zatvori" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problemi" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Datoteka" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Redak" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problem" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Novi izrazi" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Novi izrazi" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Uklonjeni izrazi" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Uklonjeni izrazi" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Skupljanje izvornih datoteka …" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Izdvajanje prevodivih izraza iz %s datoteke…" msgstr[1] "Izdvajanje prevodivih izraza iz %s datoteka…" msgstr[2] "Izdvajanje prevodivih izraza iz %s datoteka…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Neuspjelo uÄitavanje datoteke s izdvojenim prijevodima." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "U: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Izvorni kod nije dostupan." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Nije bilo moguće ažurirati prijevode iz izvornog koda, jer nije pronaÄ‘en kod " "na mjestu koje je odreÄ‘eno u svojstvima datoteke." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Zabranjen pristup." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "NemaÅ¡ dozvolu za Äitanje datoteka izvornog koda s mjesta koje je odreÄ‘eno u " "svojstvima datoteke." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Ako si prethodno odbio/la pristup datotekama, to možeÅ¡ dozvoliti u Postavke " "sustava > Sigurnost i privatnost > Privatnost > Datoteke i mape." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Ako si prethodno odbio/la pristup datotekama, to možeÅ¡ dozvoliti u Postavke " "sustava > Sigurnost i privatnost > Privatnost > Datoteke i mape." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Izdvajanje nizova iz izvornog koda neuspjelo." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Datoteku „%s“ nije moguće otvoriti." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Ažuriranje prijevoda" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "UtvrÄ‘ivanje razlika…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Spajanje razlika…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Datoteka prijevoda je već ažurirana, nisu napravljene nikakve izmjene nizova." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Prijevodna datoteka ažurirana je s %s promjenom." msgstr[1] "Prijevodna datoteka ažurirana je s %s promjene." msgstr[2] "Prijevodna datoteka ažurirana je s %s promjena." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Novi nizovi za prijevod:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Uklonjeni nizovi (viÅ¡e se ne koriste):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "Otkriven je %d problem s izvornim nizovima." msgstr[1] "Otkrivena su %d problema s izvornim nizovima." msgstr[2] "Otkriveno je %d problema s izvornim nizovima." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Vidi pojedinosti…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Vidi pojedinosti…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Nepravilno zaglavlje: „%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO datoteke prijevoda" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT predloÅ¡ci prijevoda" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF datoteke prijevoda" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode katalog lokalizacije" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON datoteke prijevoda" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter datoteke prijevoda" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Sve datoteke prijevoda" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Datoteka je u formatu koji je nepoznat Poedit-u." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "Ova JSON datoteka nije prijevod i Poedit je ne može ureÄ‘ivati." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Neuspjelo Äitanje sadržaja datoteke. GreÅ¡ka: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Datoteka „%s†je zaÅ¡tićena i ne może se spremiti.\n" "Spremi je pod drugim imenom." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Nije bilo moguće spremiti datoteku %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Snimke zaslona:" #: src/catalog_po.cpp:134 #, 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 redak datoteke „%s†nije ispravno uÄitan." msgstr[1] "%i retka datoteke „%s†nisu ispravno uÄitana." msgstr[2] "%i redaka datoteke „%s†nije ispravno uÄitano." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Redak %d u datoteci „%s†je oÅ¡tećen (%s podaci nisu valjani)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Neispravna PO datoteka: msgstr oblika jednine koristi se zajedno s " "msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Neispravna PO datoteka: msgstr oblika množine koristi se bez msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Nije moguće uÄitati datoteku, vjerojatno je oÅ¡tećena." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "DoÅ¡lo je do greÅ¡aka prilikom uÄitavanja datoteke. Zbog toga neki podaci " "možda nedostaju ili su oÅ¡tećeni." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Problem prilikom formatiranja datoteke (datoteka je ipak ispravno " "spremljena)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Nije bilo moguće spremiti datoteku s kodnom stranicom „%sâ€, kako je odreÄ‘eno " "u svojstvima prijevoda.\n" "\n" "Spremljena je u formatu UTF-8, a postavka je promijenjena shodno tome." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "GreÅ¡ka prilikom spremanja datoteke" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "„%s†nije valjana POT datoteka." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "NeoÄekivano nedostaje sadržaj u XCLOC datoteci." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Spremanje na drugu lokaciju nije podržano za XCLOC datoteke." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "GreÅ¡ka kod uÄitavanja XLIFF datoteke: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "nepodržana verzija (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Neispravno oznaÄavanje u prijevodu." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Poveži Poedit s podržanim platformama lokalizacije za sinkroniziranje " "prijevoda." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Kako funkcionira sinkronizacija?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "RaÄun" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(nisi prijavljen/a)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Otvori prijevod u oblaku" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Upravljaj raÄunima" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekt:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Jezik:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Prijavi se na raÄun oblaka" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Prijavi se na raÄun oblaka" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Nema prevoditeljskih projekata na tvom raÄunu." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Preuzimanje najnovijih prijevoda…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Prijavi se na %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sinkronizacija" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Prijenos prijevoda na %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Prijenos prijevoda na %s nije uspio." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "GreÅ¡ka prilikom sinkronizacije" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Dodaj" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Nepoznata Crowdin greÅ¡ka." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "NemaÅ¡ potrebna prava. Prijavi se ponovo." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Nisu podržani Crowdin projekti temeljeni na nizovima." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Preuzimanje prijevoda je deaktivirano u ovom projektu." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Prijavi se" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Prijavi se" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Odjavi se" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Odjavi se" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Saznaj viÅ¡e o Crowdinu" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin je online platforma za upravljanje prevoÄ‘enjem i alat za suradniÄko " "prevoÄ‘enje. I mi koristimo Crowdin za prevoÄ‘enje Poedita na mnoge jezike i " "sviÄ‘a nam se." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "ÄŒekanje na autenitifikaciju …" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Ažuriranje podataka korisnika…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Prijavi se na Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Sinkronizacija s Crowdinom nije uspjela." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin greÅ¡ka" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "PrenoÅ¡enje prijevoda…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopiraj" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Saznaj viÅ¡e" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Pomoć" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO datoteke se ne mogu izravno ureÄ‘ivati u Poeditu." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "GreÅ¡ka prilikom otvaranja datoteke" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Umjesto toga otvorite i uredite odgovarajuću PO datoteku. Kada je spremite, " "i MO datoteka će se ažurirati." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "nemoj izbrisati privremene datoteke (služe za uklanjanje greÅ¡aka)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "obradi poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "idi na stavku u odreÄ‘enom retku" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Neuspjela komunikacija s Poedit procesom." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Dogodila se neobradiva iznimka: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Odaberi prevodilaÄki predložak" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Nevažeća datoteka" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Odaberi prevodilaÄku datoteku" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit je jednostavan program za ureÄ‘ivanje prijevoda." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Ne možeÅ¡ povući viÅ¡e od jedne datoteke u Poedit prozor." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Datoteka „%s†nije prevodilaÄka datoteka." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Datoteka „%s†ne postoji." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Provjera pravopisa je deaktivirana, jer %s rjeÄnik nije instaliran." #: src/edframe.cpp:871 msgid "Install" msgstr "Instaliraj" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Datoteka „%s†je promijenjena s jednim drugim programom." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Ponovo uÄitaj datoteku" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "ŽeliÅ¡ li ponovo uÄitati datoteku s diska? Time ćeÅ¡ izgubiti sve nespremljene " "promjene u Poeditu." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Zanemari" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Ponovo uÄitaj datoteku" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Datoteka je promijenjena. ŽeliÅ¡ li spremiti promjene?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Spremi promjene" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Ako ih ne spremiÅ¡, izgubit ćeÅ¡ promjene." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Spremi" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Nemoj spremiti" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Nemoj spremiti" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Ako spremiÅ¡, izgubit ćeÅ¡ sve promjene koje su uraÄ‘ene s drugim programom." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Odustani" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Svejedno spremi" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Svejedno spremi" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Spremi kao …" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Kompiliraj u…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Kompilirane datoteke prijevoda" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Izvezi u HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML datoteke" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Izvoz u HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Aktualiziranje nije uspjelo" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Otvori referentnu datoteku" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Aktualiziraj iz &POT datoteke…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Aktualiziraj iz &POT datoteke…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "PronaÄ‘en je %d problem s prijevodom." msgstr[1] "PronaÄ‘ena su %d problema s prijevodom." msgstr[2] "PronaÄ‘eno je %d problema s prijevodom." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Rezultati provjere" #: src/edframe.cpp:1842 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 "" "Prijevodi s greÅ¡kama oznaÄeni su crvenom bojom. Kad se takav prijevod " "odabere, prikazat će se detalji greÅ¡ke." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Datoteka je sigurno spremljena." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Datoteka je sigurno spremljena i kompilirana u MO format, ali vjerojatno " "neće ispravno raditi." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Datoteka je sigurno spremljena, ali se ne može kompilirati u MO format, niti " "koristiti." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Datoteka je kompilirana u MO formatu, ali vjerojatno neće ispravno raditi." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Datoteka se ne može kompilirati u MO format i koristiti." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Nema problema s prijevodom." #: src/edframe.cpp:1894 #, 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] "Prijevod je spreman za upotrebu, ali %d izraz joÅ¡ nije preveden." msgstr[1] "Prijevod je spreman za upotrebu, ali %d izraza joÅ¡ nisu prevedena." msgstr[2] "Prijevod je spreman za upotrebu, ali %d izraza joÅ¡ nije prevedeno." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Prijevod je spreman za upotrebu." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit je automatski ispravio nevaljni sadržaj u datoteci „%sâ€." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Datoteka je sadržavala duple izraze, Å¡to nije dozvoljeno u PO datotekama, te " "bi vjerojatno onemogućilo njenu upotrebu. Poedit je to ispravio. Ipak " "provjeri sve prijevode koji su oznaÄeni da zahtijevaju doradu, te ih " "ispravi, ako je potrebno." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Jezik prijevoda nije postavljen." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Postavi jezik" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 postavljen. " "Druge funkcije, kao Å¡to su oblici množine, takoÄ‘er ovise o tome." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Jezik prijevoda jednak je jeziku izvora." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Ispravi jezik" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Ispravi jezik" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Ova datoteka sadrži prijevode s oblicima množine, ali pravilo za oblike " "množine nije zadano u zaglavlju." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Unosi u ovoj datoteci nemaju isti broj oblika množine, kao Å¡to je zadano " "pravilom u zaglavlju datoteke" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Nedostaje obavezno pravilo za oblike množine u zaglavlju." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "SintaktiÄka greÅ¡ka u pravilu za oblike množine („%s“)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Ispravi zaglavlje" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Ispravi zaglavlje" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Izraz oblika množine koriÅ¡ten u datoteci nije uobiÄajen za %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Pregledaj" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Želite li koristiti engleski izvorni tekst?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Ova datoteka koristi stringove ID-ove umjesto izvornog teksta. Poedit može " "za vas uÄitati tekst iz datoteke \"%s." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "UÄitaj engleski" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Prevedeno: %d od %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Preostalo: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d greÅ¡ka" msgstr[1] "%d greÅ¡ke" msgstr[2] "%d greÅ¡aka" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d izraz" msgstr[1] "%d izraza" msgstr[2] "%d izraza" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (nespremljeno)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (promijenjeno)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Neuspjelo aktualiziranje prevodilaÄke memorije: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Datoteka “%s†nije mogla biti spremljena." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Ukloni prijevode koji su isti kao izvor" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "ŽeliÅ¡ li ukloniti sve prijevode koji su isti kao izvorni tekst?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Ova će radnja izbrisati sve prijevode koji su isti kao izvorni tekst. Ovo je " "nepovratna radnja." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Zadrži" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Ukloni" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "PoniÅ¡ti izbrisane prijevode" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "ŽeliÅ¡ li ukloniti sve prijevode koji se viÅ¡e ne koriste?" #: src/edframe.cpp:2879 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 "" "Ako nastaviÅ¡ s poniÅ¡tavanjem, svi prijevodi oznaÄeni kao izbrisani, bit će " "trajno uklonjeni. Morat ćeÅ¡ ih ponovno prevesti, ako se u budućnosti opet " "dodaju." #: src/edframe.cpp:2883 msgid "Purge" msgstr "PoniÅ¡ti" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Kopiraj iz izvornog teksta" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopiraj iz izvornog teksta" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Ukloni prijevod" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Ukloni prijevod" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Uredi komentar" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Uredi komentar" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Pojavljivanja koda" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Pojavljivanja koda" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Sakrij boÄnu traku" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Prikaži boÄnu traku" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Sakrij traku stanja" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Prikaži traku stanja" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Broj znakova izraza: prijevod | izvor" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Broj znakova izraza" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Izvorni tekst" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Jednina" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Množina" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Prijevod" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pretprevedeno" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Zahtijeva doradu" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Zahtijeva doradu" #: src/editing_area.cpp:566 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 datoteke su samo predloÅ¡ci i ne sadrže prijevode.\n" "Za prevoÄ‘enje, izradi novu PO datoteku na osnovi predloÅ¡ka." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Izradi novi prijevod" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Izradi novi prijevod iz ove POT datoteke." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID izvornog teksta" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Sve" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Oblik %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Oblik %i (neupotrebljeno)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nula" #: src/editing_area.cpp:788 msgid "One" msgstr "Jedan" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dva" #: src/editing_area.cpp:804 msgid "Other" msgstr "Ostalo" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Kontekst stringa: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identifikator stringa: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s format" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Prijevod — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Izvorni tekst — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "nepoznat jezik" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Mrežna greÅ¡ka: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Nepoznata greÅ¡ka" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Spajanje gettext kataloga nije uspjelo." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Otvori u ureÄ‘ivaÄu" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Otvori u ureÄ‘ivaÄu" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "U datoteci nisu navedeni podaci o pojavljivanjima ovog izraza u izvornom " "kodu." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Nema informacija o koriÅ¡tenju" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d pojavljivanje koda" msgstr[1] "%d pojavljivanja koda" msgstr[2] "%d pojavljivanja koda" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Izvorni kod nije pronaÄ‘en" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit ne može prikazati izvorni kod na mjestu na kojem se izraz koristi, " "jer datoteka nije dostupna na navedenom mjestu ili je se radi o simboliÄnoj " "referenci koja ne upućuje na stvarnu datoteku." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Datoteka se ne može otvoriti" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit „%s†nije uspio otvoriti datoteku." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "PronaÄ‘i" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Zamijeni" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opcije" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Zanemari veliÄinu slova" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "BeskonaÄna pretraga" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Samo cijele rijeÄi" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "PronaÄ‘i u izvornom tekstu" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "PronaÄ‘i u prijevodima" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "PronaÄ‘i u komentarima" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Zamijeni &sve" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Zamijeni &sve" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Zamijeni" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Prethodno" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Sljedeće >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Traženi izraz" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Zamjenski izraz" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "upozorenje: " #: src/gexecute.cpp:171 msgid "error: " msgstr "greÅ¡ka: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Naziv jezika ili kod" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Jezik prijevoda" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Jezik prijevoda:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Svi izrazi" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Neuspjelo preuzimanje detalja projekta Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Dogodila se greÅ¡ka prilikom prijenosa prijevoda na Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projekti" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "ViÅ¡e informacija o usluzi %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy je automatizirana platforma za lokalizaciju, koja svakome omogućuje " "jednostavno prevoÄ‘enje vlastitih proizvoda i sadržaja na viÅ¡e jezika." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Dodaj projekt" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Dodaj projekt" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit – UpravljaÄ kataloga" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Uredi …" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Izradi novi prevodilaÄki projekt" #: src/manager.cpp:145 msgid "Delete the project" msgstr "IzbriÅ¡i projekt" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Uredi projekt" #: src/manager.cpp:176 msgid "Update all" msgstr "Aktualiziraj sve" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Aktualiziraj sve kataloge u projektu" #: src/manager.cpp:378 msgid "Total" msgstr "Ukupno" #: src/manager.cpp:379 msgid "Untrans" msgstr "Neprevedeno" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Zahtijeva doradu" #: src/manager.cpp:381 msgid "Errors" msgstr "GreÅ¡ke" #: src/manager.cpp:382 msgid "Last modified" msgstr "Posljednja izmjena" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Odaberi mapu" #: src/manager.cpp:433 msgid "Directories:" msgstr "Mape:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "ŽeliÅ¡ li izbrisati projekt „%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "IzbriÅ¡i projekt" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Brisanje projekta neće izbrisati nijednu prevodilaÄku datoteku." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Potvrda" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Aktualizirati sve kataloge u projektu?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Aktualizira sve datoteke projekta iz izvornog koda." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Ažuriranje kataloga projekata" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Provjeri nadogradnje …" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Upravljanje katalozima" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Postavke …" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Uredi" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "PoniÅ¡ti" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Ponovi" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Umetni i uskladi stil" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "IzbriÅ¡i" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Pravopis i gramatika" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Prikaži pravopis i gramatiku" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Provjeri dokument sada" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Provjeri pravopis tijekom tipkanja" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Provjeri gramatiku i pravopis" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Ispravi pravopis automatski" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Zamjene" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Prikaži zamjene" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Pametno kopiranje/umetanje" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Pametni navodnici" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Pametne crtice" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Pametne poveznice" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Zamjena teksta" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformacije" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Pretvori u velika slova" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Pretvori u mala slova" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Pretvori u velika poÄetna slova" #: src/menus.cpp:237 msgid "Speech" msgstr "Govor" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "ZapoÄni s govorom" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Prekini s govorom" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Prikaz" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Prikaži alatnu traku" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Prilagodi alatnu traku …" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Cjeloekranski prikaz" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Prozor" #: src/menus.cpp:263 msgid "Minimize" msgstr "Umanji" #: src/menus.cpp:264 msgid "Zoom" msgstr "Povećaj" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "DobrodoÅ¡li u Poedit!" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Postavi sve naprijed" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Podaci prevodioca" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Ime:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Tvoje ime" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-adresa:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "tvojeime@primjer.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Tvoje ime i e-adresa koriste se samo za postavljanje zadnjeg prevodioca " "(Last-Translator) u zaglavlju GNU gettext datoteka." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "UreÄ‘ivanje" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Automatski sastavi MO datoteku prilikom spremanja" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Provjeri pravopis" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Uvijek promijeni fokus na polje za unos teksta" #: src/prefsdlg.cpp:211 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 "" "Nikad ne dopusti popisu izraza da preuzme fokus. Ako je ukljuÄeno, koristi " "CTRL + strelice za navigaciju. Tekst možeÅ¡ upisati i izravno u polje " "prijevoda, bez potrebe pritiskanja tabulatora za fokusiranje polja." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Prikaz teksta" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Prilagodi font za izraze:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Prilagodi font za prijevode:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Promijeni jezik suÄelja" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(potreban je Windows 8 ili noviji)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Opće" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Koristi prevodilaÄku memoriju" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Upravljaj spremiÅ¡tem …" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Prilikom aktualiziranja iz izvora" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "koristi sliÄne prijevode iz datoteke" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pretprevedi pomoću prevodilaÄke memorije" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit može pokuÅ¡ati popuniti nove izraze, samo iz prethodnih prijevoda u " "datoteci ili iz tvoje cjelokupne prevodilaÄke memorije. Upotreba " "prevodilaÄke memorije nije naroÄito efikasna, ukoliko je relativno prazna, " "no efikasnost raste koliÄinom tvojih prijevoda." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Spremljeni prijevodi:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "VeliÄina baze podataka na disku:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Uvezi datoteke prijevoda …" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Uvezi datoteke prijevoda …" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Uvezi iz TMX datoteke …" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Uvezi iz TMX datoteke …" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Izvezi u TMX datoteku …" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Izvezi u TMX datoteku …" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Isprazni" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Odaberi datoteke prijevoda za uvoz" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Odaberi TMX datoteke za izvoz" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX datoteke" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Uvoz prijevoda …" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Uvoz prijevodne memorije nije uspio." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Uvoz iz “%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s prijevod je uvezen." msgstr[1] "%s prijevoda su uvezena." msgstr[2] "%s prijevoda je uvezeno." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Izvezi kao …" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Izvoz prijevoda …" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Neuspio izvoz prevodilaÄke memorije u „%sâ€." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Isprazni prevodilaÄku memoriju" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Stvarno želiÅ¡ isprazniti prevodilaÄku memoriju?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Pražnjenjem prevodilaÄke memorije, briÅ¡u se svi spremljeni prijevodi. Ovaj " "korak je nepovrativ." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "PM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "PrevodilaÄka memorija" #: src/prefsdlg.cpp:730 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 "" "IzdvajaÄi izvornog koda koriste se za pronalaženje i izdvajanje prevodivih " "izraza u datotekama izvornog koda kako bi se mogli prevesti." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "PrilagoÄ‘eni izdvajaÄi:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "PrilagoÄ‘eni izdvajaÄi:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Podržava sve programske jezike, koje GNU gettext alati prepoznaju (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript, i dr.)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "IzbriÅ¡i izdvajaÄ" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Stvarno želiÅ¡ izbrisati izdvajaÄ â€ž%sâ€?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "IzdvajaÄi" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "RaÄuni" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Automatski provjeri nadogradnje" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "UkljuÄi beta verzije" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta verzije sadrže najnovije funkcije i poboljÅ¡anja, ali mogu biti i " "nestabilnije." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Nadogradnje" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Ove postavke utjeÄu na unutarnje formatiranje PO datoteka. Podesi ih, ako " "imaÅ¡ posebne zahtjeve, npr. zbog kontrole verzija." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Vrsta prijeloma:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (preporuÄeno)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Prijelom pri:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Zadrži formatiranje postojećih datoteka" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Napredno" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Postavke" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Pripremanje izraza …" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "PretprevoÄ‘enje pomoću prevodilaÄke memorije …" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Pretpreveden je %u izraz" msgstr[1] "Pretprevedena su %u izraza" msgstr[2] "Pretprevedeno je %u izraza" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "PretprevoÄ‘enje …" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d izraz je pretpreveden." msgstr[1] "%d izraza su pretprevedena." msgstr[2] "%d izraza je pretprevedeno." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Prijevodi su oznaÄeni da zahtijevaju doradu, jer možda nisu ispravni. " "Provjeri ispravnost prijevoda." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "ToÄna podudaranja s TM-om" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Približna podudaranja s TM-om" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Nema pretprijevoda za niti jedan izraz." #: src/pretranslate.cpp:218 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 "" "PrevodilaÄka memorija ne sadrži izraze, koji sliÄe sadržaju ove datoteke. " "Poluautomatsko prevoÄ‘enje će biti moguće, tek nakon Å¡to Poedit dovoljno " "nauÄi na osnovi tvojih vlastitih prijevoda." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Nije moguće unaprijed prevesti bez izvornog teksta." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pretprevedi" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Predhodni prijevod zahtijeva da je izvorni tekst dostupan. Ne funkcionira " "ako se koriste samo ID-ovi bez stvarnog teksta." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Nepoznati jezik se ne može pretprevesti." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "PretprevoÄ‘enje zahtijeva poznavanje jezika izvornog teksta. Poedit ga nije " "mogao otkriti u ovoj datoteci." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Preuzmi samo jednake izraze" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Standardno se preuzimaju i netoÄni izrazi, koji se oznaÄuju da zahtijevaju " "doradu. Odaberi ovu opciju za preuzimanje samo jednakih izraza." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Ne oznaÄuj jednake izraze, da zahtijevaju doradu" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "UkljuÄi samo, ako vjerujeÅ¡ kvaliteti tvoje prevodilaÄke memorije. Svi " "preuzeti izrazi iz prevodilaÄke memorije oznaÄuju se s oznakom, da " "zahtijevaju doradu. Provjeri ih prije upotrebe." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "PretprevoÄ‘enje automatski pronalazi i preuzima jednake ili približno jednake " "izraze za neprevedene prijevode iz prevodilaÄke memorije." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "GreÅ¡ka: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d greÅ¡ka se dogodila:" msgstr[1] "%d greÅ¡ke su se dogodile:" msgstr[2] "%d greÅ¡aka se dogodilo:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Dogodila se greÅ¡ka." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d greÅ¡ka se dogodila." msgstr[1] "%d greÅ¡ke su se dogodile." msgstr[2] "%d greÅ¡aka se dogodilo." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Prekidanje …" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Povuci mape ili datoteke ovamo" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Povuci mape ili datoteke ovamo" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Dodaj mape …" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Dodaj mape …" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Dodaj datoteke …" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Dodaj datoteke …" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Dodaj zamjenski znak …" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Dodaj zamjenski znak …" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Prikaži u Finderu" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Prikaži u pretraživaÄu" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Prikaži u mapi" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Putanje" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "IskljuÄene putanje" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Napredne postavke izdvajanja" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Izdvoji napomene za prevodioce iz:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Komentari s predznakom:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Svi komentari" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Dodatne xgettext oznake:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Dodatne kljuÄne rijeÄi" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Ime projekta, na koji se prijevod odnosi" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Ime ekipe, email adresa ili URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "npr. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (preporuÄeno)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Najprije spremi datoteku. Tek nakon toga možeÅ¡ ureÄ‘ivati ovaj odjeljak." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Ispravnost rezerviranih mjesta" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Rezervirano mjesto „%s†nedostaje u prijevodu." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "SuviÅ¡no rezervirano mjesto „%s†koje nije u izvornom tekstu." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Prijevodi množine" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Nisu prevedeni svi oblici množine." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Nedosljednost velikih/malih slova" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Prijevod bi trebao zapoÄeti velikim slovom." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Prijevod bi trebao zapoÄeti malim slovom." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Nedosljednost bjeline" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Prijevod ne zapoÄinje razmakom." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Prijevod zapoÄinje razmakom, no izvorni tekst ne." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Prijevodu na kraju nedostaje prijelom retka." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Prijevod zavrÅ¡ava s prijelomom retka, no izvorni tekst ne." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Prijevodu na kraju nedostaje razmak." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Prijevod zavrÅ¡ava s razmakom, no izvorni tekst ne." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Provjere interpunkcije" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Prijevod bi trebao zavrÅ¡iti sa „%sâ€." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Prijevod ne bi trebao zavrÅ¡iti sa „%sâ€." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Prijevod zavrÅ¡ava sa „%sâ€, no izvorni tekst zavrÅ¡ava sa „%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Oblak" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Isprazni izbornik" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Isprazni izbornik" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Komentar:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Aktualiziraj" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&IzbriÅ¡i" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "IzbriÅ¡i komentar" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Uredi projekt" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Ime projekta:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Pregledaj" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Dodaj mapu u popis" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "U redu" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Datoteka" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Nova …" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nova iz &POT/PO datoteke …" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nova iz &POT/PO datoteke …" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Otvori …" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Otvori nedavne" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Otvori nedavne" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Otvori prijevod u oblaku …" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Otvori prijevod u oblaku …" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Uvodni prozor" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Uvodni prozor" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Upravljanje &katalozima" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Upravljanje &katalozima" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Zatvori" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Spremi" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Spremi k&ao…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Spremi k&ao…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Kompiliraj u MO …" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "&Izvezi u HTML …" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Provjeri nadogradnje …" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Postavke …" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Postavke" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Izlaz" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Zatvori" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopiraj iz jednine" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopiraj iz jednine" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Prijevod zahtijeva &doradu" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Prijevod zahtijeva &doradu" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Uredi &komentar" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Uredi &komentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Prijedlozi" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&PronaÄ‘i …" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Zamijeni …" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "PronaÄ‘i sljedeće" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "PronaÄ‘i prethodno" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "PronaÄ‘i i zamijeni …" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "PronaÄ‘i sljedeće" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "PronaÄ‘i prethodno" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Prikaži &ID izraza" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Prikaži &ID izraza" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Prikaži upozorenja" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Prikaži upozorenja" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Razvrstaj po redoslijedu &datoteke" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Razvrstaj po redoslijedu &datoteke" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Razvrstaj po &izvornom tekstu" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Razvrstaj po &izvornom tekstu" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Razvrstaj po &prijevodu" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Razvrstaj po &prijevodu" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Grupiraj po sadržaju" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Grupiraj po sadržaju" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Postavi izraze s greÅ¡kama na vrh" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Postavi izraze s greÅ¡kama na vrh" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Postavi &neprevedene izraze na vrh" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Postavi &neprevedene izraze na vrh" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Prikaži pojavljivanja koda" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Prikaži pojavljivanja koda" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Prikaži boÄnu traku" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Prikaži statusnu traku" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Prijevod" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Aktualiziraj iz izvornog koda" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Aktualiziraj iz izvornog koda" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sinkronizacija s Crowdinom" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pret&prevedi …" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Provjeri prijevode" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Provjeri prijevode" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Ukloni prijevode koji su isti kao izvor" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&PoniÅ¡ti izbrisane prijevode" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&PoniÅ¡ti izbrisane prijevode" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Svojstva …" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Idi" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Gotovo, idi na sljedeći" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Gotovo, idi na sljedeći" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Prethodno promijenjeno" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Prethodno promijenjeno" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Prethodni prijevod" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Prethodni prijevod" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Sljedeći prijevod" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Sljedeći prijevod" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "P&rethodni nedovrÅ¡eni" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "P&rethodni nedovrÅ¡eni" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "S&ljedeći nedovrÅ¡eni" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "S&ljedeći nedovrÅ¡eni" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Prethodni oblik množine" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Prethodni oblik množine" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Sljedeći oblik množine" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Sljedeći oblik množine" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Pomoć na internetu" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Pomoć na internetu" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext priruÄnik" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext priruÄnik" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&O aplikaciji Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&O aplikaciji" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Postavke izdvajaÄa" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Popis datoteÄnih nastavaka, odvojeni toÄka-zarezom (npr. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Pokretanje:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Naredba za izdvajanje prijevoda:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ova se naredba koristi za pokretanje izdvajaÄa.\n" "%o preuzima ime izlazne datoteke, \n" "%K popis kljuÄnih rijeÄi, %F popis ulaznih datoteka,\n" "%C oznaku kodne stranice (vidi ispod)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Stavka na popisu kljuÄnih rijeÄi:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Ovo će biti dodano u naredbenom retku svakoj\n" "kljuÄnoj rijeÄi. %k preuzima kljuÄnu rijeÄ." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Stavka na popisu ulaznih datoteka:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Ovo će se dodati naredbenom retku jednom\n" "za svaku ulaznu datoteku. %f preuzima ime datoteke." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Kodna stranica izvornog koda:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Ovo će biti dodano u naredbenom retku, samo \n" "ako je zadana kodna stranica izvornog koda. %c preuzima njenu vrijednost." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Svojstva prijevoda" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Ime i verzija projekta:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "JeziÄna ekipa:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Oblici množine:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Koristi standardna pravila za ovaj jezik" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Koristi prilagoÄ‘eno pravilo" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Saznaj viÅ¡e o oblicima množine" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Kodna stranica:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Napredne postavke izdvajanja …" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Napredne postavke izdvajanja …" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Svojstva prijevoda" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Putanje do izvora" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Putanje do izvora" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Izdvoji tekst iz izvornih datoteka u sljedećim mapama:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Osnovna putanja:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "KljuÄne rijeÄi izvora" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "KljuÄne rijeÄi izvora" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Koristi ove kljuÄne rijeÄi (imena funkcija) za prepoznavanje prevodivih\n" "izraza u izvornim datotekama:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "TakoÄ‘er koristi zadane kljuÄne rijeÄi za podržane jezike" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Saznaj viÅ¡e o gettext kljuÄnim rijeÄima" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Otvori datoteku" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Spremi datoteku" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Provjeri" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Provjeri ima li greÅ¡aka u prijevodu" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Aktualiziraj iz koda" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Aktualiziraj iz koda" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Aktualiziraj iz izvornog koda" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "BoÄna traka" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Prikaži ili sakrij boÄnu traku" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "PrijaÅ¡nji izvorni tekst" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "PrijaÅ¡nji izvorni tekst (prije nego Å¡to je promijenjen prilikom " "aktualiziranja), koji odgovara sada netoÄnom prijevodu." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Napomene za prevodioce" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Komentar" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Dodaj komentar" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Dodaj komentar" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "IzbriÅ¡i iz prevodilaÄke memorije" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "IzbriÅ¡i iz prevodilaÄke memorije" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Prijedlozi za prijevod" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Nema poklapanja" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Nema poklapanja" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Ovaj je izraz naÄ‘en u prevodilaÄkoj memoriji Poedita." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Prijedlozi prijevoda zahtijevaju da je izvorni tekst dostupan. Ne rade ako " "se koriste samo ID-ovi bez stvarnog teksta." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Prijedlozi za prijevod zahtijevaju da je jezik izvornog teksta poznat. " "Poedit ga nije mogao otkriti u ovoj datoteci." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Nije moguće izvrÅ¡iti program: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Nevaljani oblik TMX datoteke." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Baza podataka prevodilaÄke memorije je oÅ¡tećena: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "GreÅ¡ka prevodilaÄke memorije: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Koristi zadani jezik)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Odabir jezika" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Odaberi željeni jezik" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Za primjenu promjene, ponovo pokreni Poedit." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Nije moguće izraditi privremenu mapu." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Nema prijevoda. To je neobiÄno." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Prevodivi unosi ne dodaju se ruÄno u sustavu Gettext, već se automatski " "izdvajaju iz izvornog koda. Na taj naÄin ostaju ažurni i toÄni. Prevoditelji " "obiÄno koriste datoteke PO predložaka (POTs) koje je za njih pripremio " "programer." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Saznajte viÅ¡e o GNU gettextu" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Najjednostavniji naÄin za popunjavanje ove datoteke s prijevodima je putem " "aktualiziranja datoteke pomoću POT datoteke:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Aktualiziraj iz POT datoteke" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Preuzmi prevodive izraze iz postojećeg POT predloÅ¡ka." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Prevodive izraze možeÅ¡ izdvojiti neposredno iz izvornog koda:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Izdvoji iz izvora" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Konfiguriraj izdvajanje izvornog koda u svojstvima." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Verzija %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Stvori novi prijevod" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Izradi novi prijevod iz POT predloÅ¡ka." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Pretraži datoteke" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Otvori i uredi prevodilaÄke datoteke." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Prevedi projekt u oblaku" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "SuraÄ‘uj s drugim ljudima online." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Nedavno koriÅ¡tene datoteke" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sinkroniziraj" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sinkroniziraj prijevod s Crowdinom" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "O programu %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s postavke" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "O programu %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Usluge" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Sakrij %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Sakrij ostalo" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Prikaži sve" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Zatvori %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Postavke …" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Postavke …" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Postavke..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Primijeni" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Primijeni" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Natrag" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Natrag" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Odustani" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Ukloni" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Ukloni" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopiraj" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Izr&eži" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Izreži" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Uredi" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Zatvori" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Pomoć" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nova" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Novi" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Ne" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ne" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&U redu" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Otvori …" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Otvori …" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Otvori …" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Umetni" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Umetni" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Postavke" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Ponovi" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Osvježi" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Spremi kao" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Spremi kao" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Odaberi &sve" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Odaberi sve" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&PoniÅ¡ti" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Da" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Da" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Gore" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Dolje" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Lijevo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Desno" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Upozorenje: " poedit-3.6.3/locales/da.po0000644000175100001660000026314615011674363011061 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Danish\n" "Language: da_DK\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: da\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Skjul denne notifikation" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Vis ikke igen" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Vis ikke igen" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Opdateringsresumé" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Opdatér resumé" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Luk" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problemer" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Fil" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Linje" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problem" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Nye strenge" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Nye strenge" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Fjernede strenge" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Fjernede strenge" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Indsamler kildefiler…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Udpakker oversættelige strenge fra %s-filen…" msgstr[1] "Udpakker oversættelige strenge fra %s-filerne…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Kunne ikke indlæse filen med udpakkede oversættelser." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "I: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Kildekoden er ikke tilgængelig." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Oversættelserne kunne ikke opdateres fra kildekoden, fordi der ikke blev " "fundet nogen kode pÃ¥ den placering, der er angivet i filens egenskaber." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Adgang nægtet." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Du har ikke tilladelse til at læse kildekodefiler fra den placering, der er " "angivet i filens egenskaber." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Hvis du tidligere har nægtet adgang til dine filer, kan du tillade adgang i " "Systemindstillinger > Anonymitet og sikkerhed > Arkiver og mapper." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Hvis du tidligere har nægtet adgang til dine filer, kan du tillade det i " "Systemindstillinger > Sikkerhed og anonymitet > Anonymitet > Arkiver og " "mapper." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Mislykkedes at udpakke strenge fra kildekode." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Filen “%s†kunne ikke Ã¥bnes." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Opdaterer oversættelser" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "FastslÃ¥r forskelle…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Fletter forskelle…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Oversættelsesfil er allerede opdateret, ingen ændringer af strenge foretaget." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Oversættelsesfil blev opdateret med %s ændring." msgstr[1] "Oversættelsesfil blev opdateret med %s ændringer." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Nye strenge at oversætte:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Fjernede strenge (anvendes ikke længere):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "%d problem med kildestrengene detekteret." msgstr[1] "%d problemer med kildestrengene detekteret." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Se detaljer…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Se detaljer…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Forkert udformet header: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO-oversættelsesfiler" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT-oversættelsesskabeloner" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF-oversættelsesfiler" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode-lokaliseringskatalog" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON-oversættelsesfiler" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter-oversættelsesfiler" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Alle oversættelsesfiler" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Filen er i et format, som Poedit ikke genkender." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Denne JSON-fil er ikke en oversættelsesfil og kan ikke redigeres i Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Læsning af filindhold mislykkedes med følgende fejl: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Filen “%s†er skrivebeskyttet og kan ikke gemmes.\n" "Gem den med et andet navn." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Kunne ikke gemme filen %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Skærmbilleder:" #: src/catalog_po.cpp:134 #, 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 linje af filen “%s†blev ikke indlæst korrekt." msgstr[1] "%i linjer af filen “%s†blev ikke indlæst korrekt." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Linje %d af filen “%s†er beskadiget (ikke gyldig %s-data)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "Defekt PO-fil: entalsform msgstr brugt sammen med msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Defekt PO-fil: flertalsform msgstr brugt uden msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Kunne ikke indlæse filen. Den er sandsynligvis beskadiget." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Fejl opstod under indlæsning af filen. Nogle data kan derfor mangle eller " "være beskadiget." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "Problem med at formatere filen pænt (men den blev gemt)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Filen kunne ikke gemmes i “%sâ€-tegnsættet som angivet i " "oversættelsesindstillingerne.\n" "\n" "Den blev i stedet gemt i UTF-8 og med tilsvarende ændret indstilling." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Fejl under lagring af fil" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "\"%s\" er ikke en gyldig POT-fil." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Uventet mangler indhold i XCLOC-fil." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Lagring pÃ¥ en anden placering understøttes ikke for XCLOC-filer." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Fejl under indlæsning af XLIFF-fil: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "uunderstøttet version (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Fejlbehæftet markup i oversættelsesstrengen." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Forbind Poedit med understøttede cloud-lokaliseringsplatforme for problemfri " "synk af oversættelser hÃ¥ndteret af disse." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Hvordan fungerer cloud-synk?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Konto" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(ikke logget ind)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Ã…bn cloud-oversættelse" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "HÃ¥ndtér konti" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekt:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Sprog:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Log ind pÃ¥ Cloud-konto" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Log ind pÃ¥ cloud-konto" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Ingen oversættelsesprojekter opført i kontoen." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Downloader seneste oversættelser…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Log ind pÃ¥ %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Synkning" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Uploader oversættelser til %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Upload af oversættelser til %s mislykkedes." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Synkfejl" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Tilføj" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Ukendt Crowdin-fejl." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Ikke godkendt, log venligst ind igen." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Strengbaserede Crowdin-projekter understøttes ikke." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Download af oversættelser er deaktiveret i dette projekt." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Log ind" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Log ind" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Log ud" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Log ud" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Læs mere om Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin er en online oversættelsesstyringsplatform og samarbejdsværktøj til " "oversættelse. Vi bruger selv Crowdin til at oversætte Poedit til mange " "sprog, og vi elsker det." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Venter pÃ¥ godkendelse…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Opdaterer brugeroplysninger…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Log ind pÃ¥ Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Synkronisering med Crowdin mislykkedes." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin-fejl" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Uploader oversættelser…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "Kopiér (&C)" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "FÃ¥ mere at vide" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Hjælp" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO-filer kan ikke redigeres direkte i Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Fejl ved Ã¥bning af filen" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Ã…bn og redigér i stedet den korresponderende PO-fil. NÃ¥r denne gemmes, " "opdateres MO-filen ligeledes." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "slet ikke midlertidige filer (til fejlfinding)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "hÃ¥ndtér en poedit://-URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "gÃ¥ til emnet pÃ¥ et givent linjenummer" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Mislykkedes at kommunikere med Poedit-proces." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "UhÃ¥ndteret undtagelse opstod: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Vælg oversættelsesskabelon" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Ugyldig fil" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Vælg oversættelsesfil" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit er et letanvendeligt oversættelsesværktøj." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Maks. én fil kan droppes i Poedit-vinduet." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Filen \"%s\" er ikke en oversættelsesfil." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Filen \"%s\" findes ikke." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Stavekontrol er deaktiveret, da ordbogen til %s ikke er installeret." #: src/edframe.cpp:871 msgid "Install" msgstr "Installer" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Filen “%s†er blevet ændret af en anden applikation." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Genindlæs fil" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Vil du genindlæse filen fra disken? Dine ikke-gemte redigeringer i Poedit " "vil i givet fald gÃ¥ tabt." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignorer" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Genindlæs fil" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Filen er blevet ændret. Vil du gemme ændringerne?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Gem ændringer" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Dine ændringer vil gÃ¥ tabt hvis du ikke gemmer dem." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Gem" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ge&m ikke" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Gem ikke" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Ændringerne foretaget af den anden applikation vil gÃ¥ tabt, hvis du gemmer." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Annullér" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Gem alligevel" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Gem alligevel" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Gem som…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Kompilér til…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Kompilerede oversættelsesfiler" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Eksportér til HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML-filer" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Eksportér til HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Opdatering mislykkedes" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Ã…bn referencefil" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Opdatér fra &POT-fil…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Opdatér fra &POT-fil…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Fandt %d problem med oversættelsen." msgstr[1] "Fandt %d problemer med oversættelsen." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Valideringsresultatet" #: src/edframe.cpp:1842 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 "" "Emner med fejl er markeret med rødt i listen. Detaljer om fejlen vil blive " "vist nÃ¥r du vælger sÃ¥dan et emne." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Filen blev gemt sikkert." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Filen blev gemt korrekt og kompileret til MO-formatet, men den vil " "sandsynligvis ikke virke korrekt." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "FIlen blev gemt korrekt, men den kan ikke kompileres til MO-formatet og " "bruges." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Filen blev kompileret til MO-formatet, men vil sandsynligvis ikke virke " "korrekt." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Filen kan ikke kompileres til MO-formatet og bruges." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Der blev ikke fundet nogle problemer med oversættelsen." #: src/edframe.cpp:1894 #, 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] "Oversættelsen er klar til brug, men %d emner er endnu ikke oversat." msgstr[1] "Oversættelsen er klar til brug, men %d emne er endnu ikke oversat." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Oversættelsen er klar til brug." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit rettede automatisk ugyldigt indhold i filen \"%s\"." #: src/edframe.cpp:2299 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 needing work 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 \"skal efterses\" " "og rette dem om nødvendigt." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Oversættelsessproget er ikke angivet." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Angiv sprog" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Angiv sprog" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Oversættelsessproget er det samme som kildesproget." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Ret sprog" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Ret sprog" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Denne fil har poster med flertalsformer, men har ikke en Plural-Forms-header " "konfigureret." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Teksterne i denne fil har et andet antal flertalsformer end hvad katalogets " "Plural-Forms-header siger" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Det pÃ¥krævede filhovede Plural-Forms mangler." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntaksfejl i Plural-Forms-filhovede (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Ret filhovedet" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Ret filhovedet" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Flertalsformudtryk, der bruges af filen, er usædvanligt for %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Korrektur" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Vil du bruge engelsk som kildetekst?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Denne fil bruger streng-ID'er i stedet for kildetekst. Poedit kan indlæse " "engelske tekster fra filen \"%s\" for dig." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Indlæs engelsk" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Oversat: %d af %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Resterende: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d fejl" msgstr[1] "%d fejl" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d post" msgstr[1] "%d poster" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (ikke gemt)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (ændret)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Kunne ikke opdatere oversættelseshukommelsen: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Filen “%s†kunne ikke gemmes." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Fjern samme-som-kilde oversættelser" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Fjern alle oversættelser, som er identiske med kildeteksten?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Denne handling sletter alle oversættelser, som er identiske med " "kildeteksten. Handlingen er irreversibel." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Behold" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Fjern" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Tøm slettede oversættelser" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Vil du slette alle oversættelser som ikke længere er i brug?" #: src/edframe.cpp:2879 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 "" "Hvis du fortsætter vil alle oversættelser som er markeret som slettede, " "blive fjernet permanent. Du vil skulle oversætte dem igen hvis de senere " "igen bliver brugt." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Tøm" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Kopiér fra kildetekst" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopiér fra kildetekst" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Ryd oversættelse" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Ryd oversættelse" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Redigér kommentar" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Redigér kommentar" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Kodeforekomster" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Kodeforekomster" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Skjul sidepanel" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Vis sidepanel" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Skjul statuslinje" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Vis statuslinje" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Strenglængde i tegn: oversættelse | kilde" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Strenglængde i tegn" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Kildetekst" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Ental" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Flertal" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Oversættelse" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Præ-oversat" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Skal efterses" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Skal efterses" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Opret ny oversættelse" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Lav en ny oversættelse fra denne POT-fil." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Kildetekst-ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Alt" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Form %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Form %i (ubrugt)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nul" #: src/editing_area.cpp:788 msgid "One" msgstr "En" #: src/editing_area.cpp:790 msgid "Two" msgstr "To" #: src/editing_area.cpp:804 msgid "Other" msgstr "Andet" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Strengkontekst: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Strengidentifikator: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s format" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Oversættelse — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Kildetekst — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "ukendt sprog" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Netværksfejl: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Ukendt fejl" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Der opstod en fejl ved sammenfletning af gettext-kataloger." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Ã…bn i editor" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Ã…bn i editor" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Ingen information om denne strengs forekomster i kildekoden er angivet i " "filen." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Ingen brugsinformation" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kodeforekomst" msgstr[1] "%d kodeforekomster" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Kildekode ikke fundet" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit kan ikke vise kildekode, hvor strengen bruges, fordi filen enten ikke " "er tilgængelig i den refererede placering, eller det er en symbolsk " "reference, der ikke peger pÃ¥ en rigtig fil." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Filen kan ikke Ã¥bnes" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit kunne ikke Ã¥bne filen “%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Find" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Erstat" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Indstillinger" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignorer forskelle pÃ¥ store og smÃ¥ bogstaver" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Ombrydning" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Kun hele ord" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Find i kildetekster" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Find i oversættelser" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Find i kommentarer" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Erstat &alle" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Erstat &alle" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Erstat" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Forrige" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Næste >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Streng som skal findes" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Erstatningsstreng" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "advarsel: " #: src/gexecute.cpp:171 msgid "error: " msgstr "fejl: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Sprognavn eller -kode" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Oversættelsessprog" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Sprog for oversættelsen:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Alle strenge" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Kunne ikke downloade Localazy-projektoplysninger." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "En fejl opstod under upload af oversættelser til Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projekter" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Læs mere om %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy er en højautomatiseret lokaliseringsplatform, hvormed alle nemt kan " "oversætte deres produkter og indhold til flere sprog." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Tilføj projekt" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Tilføj projekt" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - KataloghÃ¥ndtering" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Rediger…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Opret nyt oversættelsesprojekt" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Slet projektet" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Redigér projektet" #: src/manager.cpp:176 msgid "Update all" msgstr "Opdatér alle" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Opdatér alle kataloger i projektet" #: src/manager.cpp:378 msgid "Total" msgstr "I alt" #: src/manager.cpp:379 msgid "Untrans" msgstr "Ikke-oversat" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Skal efterses" #: src/manager.cpp:381 msgid "Errors" msgstr "Fejl" #: src/manager.cpp:382 msgid "Last modified" msgstr "Sidst ændret" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Vælg mappe" #: src/manager.cpp:433 msgid "Directories:" msgstr "Mapper:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Vil du slette projektet “%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Slet projekt" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Sletning af projektet vil ikke slette nogen oversættelsesfiler." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Bekræftelse" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Opdater alle kataloger i dette projekt?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Udfører opdatering fra kildekoden pÃ¥ alle filer i projektet." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Opdatér projektekataloger" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Søg efter opdateringer…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "KataloghÃ¥ndtering" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Indstillinger…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Redigér" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Fortryd" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Gentag" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Indsæt og tilpas stil" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Slet" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Stavning og grammatik" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Vis stavning og grammatik" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Tjek dokument nu" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Tjek stavning mens du skriver" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Kontrollér grammatik med stavning" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Kontroller automatisk stavning" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Erstatninger" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Vis erstatninger" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Smart kopier/indsæt" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Smarte citater" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Smarte bindestreger" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Smarte links" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Tekst erstatning" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformeringer" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Lav til store bogstaver" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Lav til smÃ¥ bogstaver" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Stort begyndelsesbogstav" #: src/menus.cpp:237 msgid "Speech" msgstr "Tale" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Start tale" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Stop tale" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Vis" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Vis værktøjslinje" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Tilpas værktøjslinje…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Fuldskærm" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Vindue" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimer" #: src/menus.cpp:264 msgid "Zoom" msgstr "Zoom" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Velkommen til Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Bring alle frem" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Information om oversætteren" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Navn:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Dit navn" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-mail:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "dig@eksempel.dk" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Dit navn og din e-mail-adresse bruges kun til at sætte Last-Translator-" "filhovedet i GNU gettext-filer." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Redigering" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Kompilér automatisk MO-fil nÃ¥r der gemmes" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Stavekontrol" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Skift altid fokus til indtastningsfeltet for tekst" #: src/prefsdlg.cpp:211 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 "" "Fokusér aldrig pÃ¥ listen med strenge. Hvis det er slÃ¥et til, skal du bruge " "Ctrl-piletaster for at navigere med tastaturet, men du kan til gengæld " "indtaste tekst uden at skulle bruge tabulator tasten for at flytte fokus." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Udseende" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Brug tilpasset skrifttype til lister:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Brug tilpasset skrifttype til tekstfelter:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Skift brugerfladens sprog" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(kræver Windows 8 eller nyere)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Generelt" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Brug oversættelseshukommelse" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Administrere…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Ved opdatering fra kilder" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "lav uafklaret søgning i filen" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "præ-oversæt fra TM" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit kan prøve at udfylde nye emner blot ud fra tidligere oversættelser i " "filen, eller fra hele din oversættelseshukommelse. Brug af TM vil ikke være " "sÃ¥ effektiv hvis den er halv-tom, men vil blive bedre nÃ¥r du tilføjer flere " "oversættelser til den." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Gemte oversættelser:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Databasestørrelse pÃ¥ disk:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importer oversættelsesfiler…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importer oversættelsesfiler…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importer fra TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importer fra TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Eksporter til TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Eksporter til TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Nulstil" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Vælg oversættelsesfiler der skal importeres" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Vælg en TMX fil til at importere" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX filer" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Importerer oversættelser…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Importen af oversættelseshukommelse mislykkedes." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importér fra “%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s oversættelse blev importeret." msgstr[1] "%s oversættelser blev importeret." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Eksporter som…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Eksporterer oversættelser…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Eksportdn af oversættelseshukommelse fra \"%s\" mislykkedes." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Nulstil oversættelseshukommelsen" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Er du sikker pÃ¥ at du ønsker at nulstille oversættelseshukommelsen?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Nulstilling af oversættelseshukommelsen vil uigenkaldeligt slette alle gemte " "oversættelser i den. Du kan ikke fortryde denne handling." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "OH" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Oversættelseshukommelse" #: src/prefsdlg.cpp:730 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 "" "Kildekode-udtrækkerer bruges til at finde oversætbare strenge i kildekode-" "filerne og trækker dem ud sÃ¥ de kan oversættes." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Tilpassede udtrækkere:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Tilpassede udtrækkere:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Understøtter alle programmeringssprog som kendes af GNU gettext værktøjer " "(PHP, C/C++, C#, Perl, Python, Java, JavaScript og andre)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Slet udtrækker" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Er du sikker pÃ¥ at du vil slette \"%s\"-udtrækkeren?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Udtrækkere" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Konti" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Søg automatisk efter opdateringer" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Medtag betaversioner" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Betaversioner indeholder de nyeste funktioner og forbedringer, men kan være " "lidt mindre stabile." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Opdateringer" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Disse indstillinger pÃ¥virker den interne formatering af PO filer. Tilpas dem " "hvis du har specielle krav f.eks pÃ¥ grund af versionskontrol." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Linjeafslutninger:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (anbefalet)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Ombryd ved:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Bevar formatering af eksisterende filer" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Avanceret" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Indstillinger" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Forbereder strenge…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Præoversætter fra oversættelseshukommelse…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "For-oversat %u streng" msgstr[1] "For-oversat %u strenge" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Præ-oversætter…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d emne blev præ-oversat." msgstr[1] "%d emner blev præ-oversat." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Oversættelserne blev markeret som \"skal efterses\", da de kan være " "forkerte. Du bør tjekke deres korrekthed." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Nøjagtige match fra TM" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Omtrentlige match fra TM" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Ingen emner kunne præ-oversættes." #: src/pretranslate.cpp:218 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 "" "OH indeholder ikke nogen strenge der svarer til indholdet af denne fil. Den " "er kun god til halv-automatiske oversættelser nÃ¥r Poedit har lært nok fra " "filer du har oversat manuelt." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Kan ikke præoversætte uden kildetekst." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Præ-oversæt" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Præoversættelse kræver at kildetekst er tilgængelig. Det virker ikke, hvis " "kun id'er uden den egentlige tekst bruges." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Kan ikke præoversætte fra ukendt sprog." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Præoversættelse kræver, at kildetekstens sprog er kendt. Poedit kunne ikke " "bestemme det i denne fil." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Udfyld kun nøjagtige overensstemmelser" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Unøjagtige resultater medtages som standard ogsÃ¥, men markeres som ufærdige. " "Markér valgmuligheden for kun at medtage 100% matchninger." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Marker ikke nøjagtige overensstemmelser som \"skal efterses\"" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Marker kun hvis du stoler pÃ¥ kvaliteten af din TM. Som standard vil alle " "overensstemmelser fra TM'en være markeret som \"skal efterses\" og bør " "gennemlæses før brug." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Præ-oversættelse finder automatisk præcise eller uafklarede ord til u-" "oversatte strenge i oversættelseshukommelsen og udfylder deres oversættelser." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Fejl: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d fejl opstod:" msgstr[1] "%d fejl opstod:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "En fejl opstod." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d fejl opstod." msgstr[1] "%d fejl opstod." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Annullerer…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Træk mapper eller filer hertil" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Træk mapper eller filer hertil" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Tilføj mapper…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Tilføj mapper…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Tilføj filer…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Tilføj filer…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Tilføj wildcard…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Tilføj wildcard…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Vis i Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Vis i Stifinder" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Vis i mappe" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Stier" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Udelukkede stier" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Avancerede udtræksindstillinger" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Udtræk noter til oversættere fra:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Kommentarer som starter med:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Alle kommentarer" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Yderligere xgettext flag:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Yderligere nøgleord" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Navn pÃ¥ projektet som oversættelsen er til" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Holdnavn og e-mailadresse eller URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "f.eks. nplurals=2; plural=(n != 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (anbefalet)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Gem venligst filen først. Denne kan sektion kan ikke redigere før det er " "sket." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Pladsholderes korrekthed" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Pladsholder “%s†mangler i oversættelsen." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Overflødig pladsholder “%s†der ikke er i kildeteksten." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Flertalsform-oversættelser" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Elle alle flertalsformer er oversat." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Inkonsistent brug af store og smÃ¥ bogstaver" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Oversættelsen bør starte som en sætning." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Oversættelsen bør starte med et lille tegn." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Inkonsistent brug af whitespace (blanktegn og linjeskift)" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Oversættelsen starter ikke med et mellemrum." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Oversættelsen starter med et mellemrum, men kildeteksten gør ikke." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Oversættelsen mangler et linjeskift i enden." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Oversættelsen slutter med et linjeskift, men kildeteksten gør ikke." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Oversættelsen mangler et mellemrum i enden." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Oversættelsen slutter med et mellemrum, men kildeteksten gør ikke." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Tegnsætningskontrol" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Oversættelsen bør ende med \"%s\"." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Oversættelsen bør ikke ende med \"%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Oversættelsen ender med \"%s\", men kildeteksten ender med \"%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Cloud" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Ryd menu" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Ryd menu" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Kommentar:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Opdatér" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Slet" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Slet kommentaren" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Redigér projekt" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Projektnavn:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Gennemse" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Tilføj mappe til listen" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Fil" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "%Ny…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Ny fra &POT/PO fil…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Ny fra &POT/PO fil…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Ã…bn…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Ã…bn seneste" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Ã…bn seneste" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Ã…bn cloud-oversættelse…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Ã…bn Cloud Translation…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "O&pstartsvindue" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "O&pstartsvindue" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&KataloghÃ¥ndtering" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&KataloghÃ¥ndtering" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Luk" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Gem" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Gem &som…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Gem &som…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Kompilér til MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "Eksportér(&x) til HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Søg efter opdateringer…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Indstillinger…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Indstillinger" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Afslut" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Afslut" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopiér fra ental" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopiér fra ental" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Oversættelse skal &efterses" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Oversættelse skal &efterses" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Redigér &kommentar" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Redigér &kommentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Forslag" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Find…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Erstat…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Find næste" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Find forrige" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Find og erstat…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Find næste" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Find forrige" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Vis streng &ID" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Vis streng &ID" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Vis advarsler" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Vis advarsler" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Sortér efter &filrækkefølge" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Sortér efter &filrækkefølge" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Sortér efter &kilde" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Sortér efter &kilde" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Sortér efter &oversættelse" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Sortér efter &oversættelse" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Gruppér efter kontekst" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Gruppér efter kontekst" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Emner med fejl først" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Emner med fejl først" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Ikke-oversatte poster først" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Ikke-oversatte poster først" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Vis kodeforekomster" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Vis kodeforekomster" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Vis sidepanel" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Vis statuslinje" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Oversættelse" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Opdatér fra kildekode" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Opdatér fra kildekode" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Synkronisér med Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "For&oversæt…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validér oversættelser" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validér oversættelser" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Fjern samme-som-kilde oversættelser" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Tøm slettede oversættelser" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Tøm slettede oversættelser" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Egenskaber…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&GÃ¥ til" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "Fæ&rdig og næste" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "Fæ&rdig og næste" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Tidligere redigeret" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Tidligere redigeret" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Forrige oversættelse" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Forrige oversættelse" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Næste oversættelse" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Næste oversættelse" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "F&orrige ufærdige" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "F&orrige ufærdige" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "N&æste ufærdige" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "N&æste ufærdige" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Forrige flertalsform" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Forrige flertalsform" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Næste flertalsform" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Næste flertalsform" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Onlinehjælp" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Onlinehjælp" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext manual" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext manual" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Om Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Om" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Opsætning af udtrækker" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Liste med filendelser, adskilt med semikolon (f.eks. *.cpp, *.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Udførsel:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Kommando til at udtrække oversættelser:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Dette er kommandoen der bruges til at afvikle udtrækkeren.\n" "%o bliver til navnet for outputfilen, %K til listen\n" "over nøgleord, %F til listen over inputfiler,\n" "%C til tegnsætflag (se nedenfor)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "En post i nøgleordslisten:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Dette vil blive vedhæftet til kommandolinjen en\n" "gang for hvert nøgleord. %k erstattes med nøgleordet." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "En post i listen over inddatafiler:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Dette vil blive vedhæftet til kommandolinjen en\n" "gang for hver inddatafil. %f erstattes med filnavnet." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Kildekodens tegnsæt:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Dette vil blive vedhæftet til kommandolinjen, dog kun\n" "hvis kildekodens tegnsæt er givet. %c erstattes med tegnsætværdien." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Oversættelsesegenskaber" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Projektnavn og version:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Sprog team:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Flertalsformer:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Brug standardregler for dette sprog" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Brug tilpasset udtryk" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Lær mere om flertalsformer" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Tegnsæt:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Avancerede udtrækningsindstillinger…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Avancerede udtrækningsindstillinger…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Oversættelsesegenskaber" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Søgestier" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Søgestier" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Udtræk tekst fra kildefiler i følgende mapper:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Grundlæggende sti:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Nøgleord i kildefil" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Nøgleord i kildefil" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Brug disse nøgleord (funktionsnavne) til at genkende\n" "oversættelige strenge i kildefiler:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Brug ogsÃ¥ standard nøgleord for understøttede sprog" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Lær om gettext nøgleord" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Ã…bn fil" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Gem fil" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validér" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Find fejl i oversættelsen" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Opdater fra kode" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Opdater fra kode" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Opdatér fra kildekode" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Sidepanel" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Vis eller skjul sidepanelet" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Forrige kildetekst" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Den gamle kildetekst (før den blev ændret ved en opdatering) som den nu " "forkerte oversættelse svarer til." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Noter til oversættere" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Kommentar" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Tilføj kommentar" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Tilføj kommentar" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Slet fra Oversættelseshukommelse" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Slet fra Oversættelseshukommelse" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Oversættelsesforslag" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Ingen fundet" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Ingen fundet" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Denne streng blev fundet i Poedit's oversættelseshukommelse." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Oversættelsesforslag kræver, at kildetekst er tilgængelig. De virker ikke, " "hvis kun id'er uden selve teksten bruges." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Oversættelse kræver, at kildetekstens sprog er kendt. Poedit kunne ikke " "bestemme det i denne fil." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Kan ikke udføre program: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX filen er forkert udformet." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Oversættelses databasen er ødelagt: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Oversættelses hukommelsesfejl: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Brug standardsprog)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Sprogvalg" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Vælg dit foretrukne sprog" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Du skal genstarte Poedit før denne ændring træder i kraft." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Kan ikke oprette midlertidig mappe." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Der er ikke nogen oversættelser. Det er usædvanligt." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Oversættelige poster tilføjes ikke automatisk i Gettext-systemet, men " "udtrækkes automatisk fra kildekoden. PÃ¥ den mÃ¥de er de opdaterede og " "korrekte. Oversættere bruger typisk PO-skabelonfiler (POT'er) klargjort til " "dem af udvikleren." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Læs mere om GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Den enkleste mÃ¥de at udfylde denne fil med oversættelser er at opdatere den " "fra en POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Opdatér fra POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Tag oversætbare strenge fra en eksisterende POT-skabelon." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Du kan ogsÃ¥ udtrække oversætbare strenge direkte fra kildekoden:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Udtræk fra kilder" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Konfigurér kildekode-udtrækning i Egenskaber." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Version %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Opret ny" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Opret ny oversættelse fra POT-skabelon." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Gennemse filer" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Ã…bn og rediger oversættelsesfiler." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Oversæt cloud-projekt" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Samarbejd med andre personer online." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Seneste filer" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Synk" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Synkronisér oversættelsen med Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Om %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s indstillinger" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Om %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Tjenester" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Skjul %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Skjul øvrige" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Vis alle" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Afslut %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Indstillinger…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Indstillinger..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Præferencer..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Anvend" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Anvend" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "Til&bage" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Tilbage" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "Annullér" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Ryd" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Ryd" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopier" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Kli&p" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Klip" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Redigér" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Afslut" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Hjælp" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Ny" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Ny" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Nej" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Nej" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Ok" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Ã…bn…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Ã…bn..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "&Ã…bn..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Sæt ind" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Indsæt" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Indstillinger" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Gentag" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Genopfrisk" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Gem som" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Gem som" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Vælg &alle" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Vælg alle" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Fortryd" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Ja" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ja" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Skift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Retur" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Op" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Ned" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Venstre" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Højre" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "skift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Advarsel: " poedit-3.6.3/locales/bs.mo0000644000175100001660000007051715011674363011074 Þ•uÄ ól8 9 EPdJwgÂ* 1 ? F L T c r x ~ ’ ¦ ª ¼ Î Ô Ü î ! !!#! *!7!M!c!!›!¡!§!­!É!å!ü!""0" N" Z"d"m" v" ‚"Ž"¨"¼"Å"'Û"# # :#7E#6}#´#)Ô# þ#] $g$z$$"ˆ$«$ Æ$Ñ$ã$õ$%%"%5%Q%#m%‘% %²%Ä%Ê% å%& &&/8& h&u&z&&£&¶&Ì&ë&' "'0'5'J'N'e'l'}' '?' Ý' ë'ø' ("(5A(w(}( ‚( ( ž( «( ¸(Å(Ö(Þ(å(÷()u+)¡) ´)¿) Î)Û)<ð)-* =**H*!s*'•*½* Â* Ì*Ú*ë*+ + + -+ :+G+V+e+m+ u+ €+++¼+©¿+ i,u, ‹,¬, ´, Á,Í,;Ò,-+- >- H-V-s- Œ-—-:°- ë-<ù-.6.e.u.…. .·.*À.ë.ñ./»/Ï/ Ó/ß/ð/00'#0%K0q0t0x0 “0Ÿ0®0½0Å0Ë0à0õ0 1$1µ1»1Ñ1n×1EF2Œ2“2š2@´2,õ2%"3H3]3r3 Œ3š3£3©3Ä3É3 Î3Ü3ä3(÷3 4&4z?4º4Á4 Æ4 Ò4 Ý4 ê4 ö45"555 T5 a5 n5{5•5¥5 ¸5Å5 Þ5ë5û56 666/686A6 R6 _6 k6x6Œ6œ6±6Å6Õ6ê6†ÿ6†7 ¡7­7À7 Ñ7ß7Kæ728G8 V8d8y8 ˆ8 –8Ž¢81969(H9q9+Ž9º98½9ö9Â:8Ê:R;cV;Qº; <Ž'<!¶<,Ø<L=…R=«Ø=7„>m¼>_*?[Š?æ?ì?ü? @%@:@M@d@w@{@@ ”@µ@È@ Ð@"Û@þ@AA%A5ARAlA‚A˜A#µAVÙA0BGBPB cBnBŒBžB¯B¶B ¾BÊBÓBHëB74C lCavCØCÝC âCDD-D?DRDfDvD‡D™D¬DÅD!ÖDòøD ëFøFG!!GxCG€¼G =H IHUH^HgHpHƒH–H H§HÂHÝHåHýHI I*I?ITIcI rI }I ‡I‘I¦I»IØIõI üI J$J$5JZJpJ†JŽJ§J ÄJ ÑJ ßJíJõJKK,KEKNK.iK&˜K!¿KáK4èK:L)XL4‚L·L\ÆL#M 2Mƒ&IwB5†UR:¤8óÀ6Ö¬TA]SoÆÍZ«ÇPx‰–pdl\ˆ².kÑ1ÉÚ©[q\KÃ÷Xý$S>UYB?‘NÊH^PG¼‚Q¸î%aä'¶);Ù}³·rkK70,fb|/-4jV/_MÈVe(nµ»½ÛÒÿëhI’*?8 (modified) (unsaved)%d entry%d entries%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.&About&About Poedit&Close&Copy&Delete&Done and Next&Done and next&Edit&File&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&Next >&Next Translation&Next translation&Online Help&Online help&Open...&Paste&Preferences&Previous Translation&Previous translation&Purge Deleted Translations&Purge deleted translations&Redo&Save&Undo&Untranslated Entries First&Untranslated entries first&Validate Translations&Validate translations&View(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountsAdd CommentAdd commentAdd directory to the listAdditional keywordsAdvancedAll Translation FilesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBrowseCancelCannot create temporary directory.Cannot execute program: %sCapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for errors in the translationCheck spellingClear TranslationClear translationCloseCollecting source files…Command to extract translations:Comment:Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationCopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCreate new translationCreate new translations projectCrowdin errorCu&tCustomize Toolbar…CutDatabase size on disk:DeleteDelete extractorDelete the projectDirectories:Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t show againDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEmail:Enter Full ScreenEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileEverythingExcluded pathsExport as…Extract from sourcesExtract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to merge gettext catalogs.Failed to update translation memory: %sFindFind NextFind PreviousFind in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerForm %iGeneralHTML FilesHide SidebarHide Status BarHide this notification messageIDIf 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.Ignore caseInclude beta versionsInformation about the translatorInstallInvalid fileInvocation:KeepLanguage of the translation is the same as source language.Language of the translation:Language selectionLanguage:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMalformed header: “%sâ€Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNever 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.NewNew stringsNext Plural FormNext plural formNo Matches FoundNo matches foundNo problems with the translation found.Not authorized, please sign in again.OKOneOnly fill in exact matchesOpen RecentOpen in EditorOpen in editorOptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit is an easy to use translation editor.Preserve formatting of existing filesPrevious Plural FormPrevious plural formProject name and version:Project name:Project:PurgePurge deleted translationsQuitRedoRemaining: %dReplaceReplacement stringRequired header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.ReviewSaveSave &as…Save as…Save changesSelect &AllSelect AllSelect directorySelect translation files to importSelect your preferred languageSet LanguageSet languageShow SidebarShow Spelling and GrammarShow Status BarShow SubstitutionsShow ToolbarShow or hide the sidebarShow sidebarShow status barSidebarSign InSign OutSign inSign in to CrowdinSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source textSource text — %sSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.SyncSync with CrowdinSynchronize the translation with CrowdinSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTake translatable strings from an existing POT template.Text ReplacementThe 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.The file cannot be compiled into the MO format and used.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation propertiesTranslation — %sTwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)UntransUpdate allUpdate all catalogs in the projectUpdate from POTUpdate summaryUpdatesUpdating failedUpdating user information…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhole words onlyWindowWindowsWrap aroundWrap at:XLIFF Translation FilesYou can also extract translatable strings directly from the source code:You must restart Poedit for this change to take effect.Your NameYour name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoome.g. nplurals=2; plural=(n > 1);handle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %sunknown language“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Bosnian Language: bs_BA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: bs X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (mijenjano) (nesaÄuvano)%d unos%d unosa%d unosa%d greÅ¡ka%d greÅ¡ke%d greÅ¡akaPronaÄ‘en je %d problem s prijevodima.PronaÄ‘ena su %d problema s prijevodima.PronaÄ‘eno je %d problema s prijevodima.%i red fajla "%s" nije ispravno uÄitan.%i reda fajla "%s" nisu ispravno uÄitana.%i redova fajla "%s" nije ispravno uÄitano.&O programu&O programu&Zatvori&Kopiraj&ObriÅ¡i&ZavrÅ¡i i nastavi&ZavrÅ¡i i nastavi&Uredi&Datoteka&GNU gettext dokumentacija&GNU gettext dokumentacija&Akcije& GrupiÅ¡i po kontekstu& GrupiÅ¡i po kontekstu&Pomoć&Sljedeće >& Sljedeći prijevod& Sljedeći prijevod&Online pomoć&Online pomoć&Otvori...&Zalijepi&Postavke& Prethodni prijevod& Prethodni prijevod&OÄisti izbrisane prijevode&OÄisti izbrisane prijevode&Vrati&SaÄuvaj&PoniÅ¡ti&Prvo prikaži neprevedene reÄenice&Prvo prikaži neprevedene reÄenice&Validacija prijevoda&Validacija prijevoda&Prikaz(Koristi poÄetni jezik)(barem Windows 8 ili noviji)< &PrethodnoO programu %sRaÄuniDodaj komentarDodaj komentarDodaj direktorij u listuDodatne kljuÄne rijeÄiNaprednoSve datoteke s prijevodimaUvijek promijeni fokus na polje za unos tekstaStavka u listi datoteka za ubacivanje:Stavka u listi kljuÄnih rijeÄi:IzgledJeste li sigurni da želite obrisati "%s" ekstrator?Jeste li sigurni da želite resetovati memoriju prijevoda?Automatski provjeravaj ima li ažuriranjaAutomatski kompajliraj MO datoteku prilikom snimanjaBazna putanja:Beta verzije sadrže najnovije mogućnosti i poboljÅ¡anja, ali bi mogle biti manje stabilne.Dovedi u fokusPretražiPoniÅ¡tiNije moguće napraviti privremeni folder!Nije moguće izvrÅ¡iti program: %sVelika slova&Upravljanje katalozima&Upravljanje katalozimaUpravljanje katalozimaPromijeni jezik interfejsaKodiranje znakova:Odmah provjeri dokumentProvjeri gramatiku i pravopisProvjeravaj pravopis prilikom pisanjaProvjeri ima li greÅ¡ki u prijevoduProvjeri pravopisObriÅ¡i prijevodObriÅ¡i prijevodZatvoriPrikupljam izvorne fajlove…Komanda za izdvajanje prijevoda:Komentar:Kompajliraj za…Kompajlirani prijevodi datotekaKonfiguriÅ¡ite izvoz izvornog koda u Svojstvima.PotvrdaKopirajKopiraj iz JednineKopiraj iz originalnog tekstaKopiraj iz jednine&Kopiraj iz originalnog tekstaAutomatski popravljaj greÅ¡ke u pravopisuKreiraj novi prijevodNapravi novi projekt prevoÄ‘enjaCrowdin greÅ¡kaIzrež&iPrilagodi alatnu traku…IzrežiVeliÄina baze na disku:ObriÅ¡iObriÅ¡i ekstraktorObriÅ¡i projektDirektoriji:Da li želite ukloniti sve prijevode koji viÅ¡e nisu u upotrebi?Ne s&nimajNe s&nimajNe prikazuj ponovoNe prikazuj ponovoPreuzimam najnovije prijevode...Preuzimanje prijevoda je onemogućeno u ovom projektu.I&zaÄ‘iUrediUredi &komentarUredi &komentarUredi komentarUredi komentarUredi projektUredi projektUreÄ‘ivanjeEmail:Aktiviraj prikaz preko cijelog ekranaPrvo unosi sa greÅ¡kamaPrvo unosi sa greÅ¡kamaUnosi koji sadrže greÅ¡ke oznaÄeni su crvenom bojom u listi. Detalji o greÅ¡ki će biti prikazani kada odaberete jedan od unosa.GreÅ¡ka pri otvaranju fajlaSveIzuzete putanjeIzvezi kao…Ažuriraj iz originalaIzvezi tekst iz originalnih datoteka u sljedeće foldere:Postavka izdvajanjaIzdvajanjeNije moguće komunicirati sa Poedit procesom.Nije moguće spojiti gettext kataloge.Nije moguće ažurirati memoriju prijevoda: %sPronaÄ‘iPronaÄ‘i sljedećePronaÄ‘i prethodnoPronaÄ‘i u komentarimaPronaÄ‘i u izvornim tekstovimaPronaÄ‘i u prijevodimaPronaÄ‘i sljedećePronaÄ‘i prethodnoPopravi jezikPopravi jezikPopravi zaglavljePopravi zaglavljeOblik %iOpćenitoHTML fajloviSakrij boÄnu trakuSakrij statusnu trakuSakrij ovu napomenuIDAko nastavite sa uklanjanjem, svi prijevodi koji su oznaÄeni za uklanjanje će trajno biti uklonjeni. Morat ćete ih ponovo prevesti ako budu ponovo dodani nekad u budućnosti.Zanemari velika/mala slovaUvrsti i beta verzijeInformacije o prevodiocuInstalirajNeispravna datotekaPozivanje:ZadržiJezik prijevoda je isti kao i izvorni jezik.Jezik prijevoda:Odabir jezikaJezik:Zadnji put mijenjanoSaznaj viÅ¡e o gettext kljuÄnim rijeÄimaSaznaj viÅ¡e o oblicima množinaSaznaj viÅ¡eSaznaj viÅ¡e o CrowdinuLinija %d fajla "%s" nije ispravna (neispravni podaci %s).ZavrÅ¡etak linije:Lista ekstenzija odvojenih pomoću taÄka-zareza (npr. *.cpp;*.h):MO fajl se ne može direktno ureÄ‘ivati u Poeditu.Pretvori u mala slovaPretvori u velika slovaNeispravno zaglavlje: "%s"Sastavljanje razlika…MinimizirajNaziv projekta za koji je namijenjen ovaj prijevodIme:Slje&deće nedovrÅ¡enoSlje&deće nedovrÅ¡enoNe dopusti da lista stringova preuzme fokus.Ako je omogućeno, morat ćete koristiti Ctrl-strelice za navigaciju pomoću tastature ali takoÄ‘er možete ukucati tekst odmah, bez da morate pritisnuti Tab za promjenu fokusa.NovoNovi stringoviSljedeći oblik množineSljedeći oblik množineNema rezultataNema rezultataNisu pronaÄ‘eni problemi u prijevodu.Nemate ovlaÅ¡tenje, molimo vas da se ponovo prijavite.U reduJedanSamo popunjavaj taÄna poklapanjaOtvori nedavneOtvori u ureÄ‘ivaÄuOtvori u ureÄ‘ivaÄuOpcijeOstaloP&rethodno nedovrÅ¡enoP&rethodno nedovrÅ¡enoPO fajlovi sa prijevodomPOT predloÅ¡ci prijevodaPOT datoteke su samo predloÅ¡ci i ne sadrže bilo kakve prijevode. Da napravite prijevod, kreirajte novu PO datoteku na osnovu predloÅ¡ka.ZalijepiUmetni i uskladi stilPutanjeUmjesto ovog, molimo vas da otvorite i izmijenite odgovarajući PO fajl. Nakon Å¡to ga saÄuvate, MO fajl će takoÄ‘er da bude ažuriran.Molimo vas da prvo saÄuvate datoteku. Ova sekcija se ne može ureÄ‘ivati dok to ne uradite.MnožinaPoeditPoedit - upravljanje katalozimaPoedit je automatski popravio neispravan sadržaj u datoteci "%s".Poedit je jednostavni alat za prevoÄ‘enje.SaÄuvaj oblikovanje postojećih datotekaPrethodni oblik množinePrethodni oblik množineIme projekta i verzija:Ime projekta:Projekat:OÄistiOÄisti obrisane prijevodeZatvoriVratiPreostalo: %dZamijeniZamjenski stringNedostaje neophodno zaglavlje za oblik množine.ResetujResetuj memoriju prijevodaResetiranje memorije prijevoda će nepovratno obrisati sve pohranjene prijevode. Ovu operaciju nije moguće poniÅ¡titi.PregledajSaÄuvajSaÄuvaj &kao…SaÄuvaj kao…SaÄuvaj promjeneOznaži &sveOznaÄi sveOdaberite direktorijOdaberite datoteke prijevoda za uvozOdaberite vaÅ¡ omiljeni jezikPostavi jezikOdaberite jezikPrikaži boÄnu trakuPrikaži pravopis i gramatikuPrikaži statusnu trakuPrikaži zamjenePrikaži alatnu trakuPrikazuje ili sakriva boÄnu trakuPrikaži boÄnu trakuPrikaži statusnu trakuBoÄna trakaPrijavaOdjavaPrijavaPrijavi se u CrowdinOdjavaJedninaPametno kopiranje/umetanjePametne crticePametni linkoviPametni navodniciSortiraj po redoslijedu &datotekaSortiraj po &originalimaSortiraj po &prijevodimaSortiraj po redoslijedu &datotekaSortiraj po &originalimaSortiraj po &prijevodimaKodiranje znakova izvornog koda:Izdvajanje izvornog koda se koristi za pronalazak stringova za prijevoda u fajlovima izvornog koda, da biste ih kasnije mogli prevesti.Izvorni kod nije dostupan.Originalni tekstIzvorni tekst — %sKljuÄne rijeÄi originalaPutanje originalaGovorProvjera pravopisa je onemogućena zato Å¡to rjeÄnik za %s nije instaliran.Pravopis i gramatikaPoÄnite priÄatiPrestanite priÄatiPohranjeni prijevodi:String koji tražiteZamjenePrijedloziPrijedlozi nisu dostupni ako jezik prijevoda nije ispravno odabran. Ostale mogućnosti takoÄ‘er mogu biti nedostupne. kao npr. oblici množine.SinhronizujSinhronizuj sa CrowdinomSinhronizuj prijevode sa CrowdinomSinhronizacija sa Crowdinom nije uspjela.Sintaksna greÅ¡ka u zaglavlju za obrazac množine ("%s").TMUzmi stringove za prijevod iz postojećeg POT predloÅ¡ka.Zamjena tekstaTM ne sadrži nijedan string sliÄan sadržaju u ovoj datoteci. Ovo je moguće efikasno iskoristiti za poluautomatsko prevoÄ‘enje nakon Å¡to Poedit nauÄi dovoljno fraza iz datoteka koje ste preveli ruÄno.Datoteka ne može biti kompajlirana u MO format i nakon toga koriÅ¡tena.Datoteka je kompajlirana u MO format, ali najvjerovatnije neće funkcionisati ispravno.Datoteka je uspjeÅ¡no saÄuvana i kompajlirana u MO format, ali navjerovatnije neće ispravno funkcionisati.Datoteka je uspjeÅ¡no saÄuvana ali je nije moguće kompajlirati u MO format i koristiti nakon toga.Datoteka je uspjeÅ¡no saÄuvana.Prijevod je spreman za upotrebu, ali joÅ¡ %d unos nije preveden.Prijevod je spreman za upotrebu, ali joÅ¡ %d unosa nisu prevedena.Prijevod je spreman za upotrebu, ali joÅ¡ %d unosa nije prevedeno.Prijevod je spreman za upotrebu.Nema prijevoda. Ovo je neobiÄno.Desio se problem prilikom formatiranja datoteke (sve ostalo je uspjeÅ¡no saÄuvano).Ove postavke utiÄu na interno formatiranje PO datoteka. Prilagodite ih vaÅ¡im specifiÄnim potrebama, npr. zbog kontrole verzija.Ovo je komanda koja se koristi za pokretanje izdvajanja. %o se proÅ¡iruje u naziv izlaznog fajla, %K u listu kljuÄnih rijeÄi, %F u listu ulaznih fajlova, %C o oznake kodiranja (pogledajte ispod).Ovaj string je pronaÄ‘en u Poedit memoriji prijevoda.Ovo će biti dodano u komandu liniju samo ako je dato izvorno kodiranje znakova. %c se proÅ¡iruje na vrijednost znakova.Ovo će biti dodano komandnoj liniji po jednom za svaku ulaznu datoteku. %f se proÅ¡iruje na ime datoteke.Ovo će biti dodano komandnoj liniji jednom za svaku kljuÄnu rijeÄ. %k se proÅ¡iruje na kljuÄnu rijeÄ.UkupnoTranformacijePrevedeno: %d od %d (%d %%)PrijevodJezik prijevodaMemorija prijevodaSvojstva prijevodaPrijevod — %sDvaUTF-8 (preporuÄeno)NazadDesio se neoÄekivan izuzetak: %sUnix (preporuÄeno)NeprevedenoAžuriraj sveAžuriraj sve kataloge u projektuAžuriraj iz POT-aRezime ažuriranjaAžuriranjaAžuriranje nije uspjeloAžuriram korisniÄke informacije...Ažuriram prijevode...Koristi vlastiti izrazKoristi vlastiti font za listu:Koristi vlastiti font za tekstualna polja:Koristi zadana pravila za ovaj jezikKoristite ove kljuÄne rijeÄi (nazivi funkcija) za prepoznavanje stringova za prijevod u originalnim datotekama:Koristi memoriju prijevodaValidacijaRezultati validacijeVerzija %sÄŒekam na autentifikaciju...Dobro doÅ¡li u PoeditSamo cijele rijeÄiProzorProzoriOmotajPrelomi tekst na:XLIFF fajlovi s prijevodimaTakoÄ‘er, možete napraviti stringove za prijevod direktno iz izvornog koda:Morate ponovo pokrenuti Poedit da bi promjene poÄele djelovati.VaÅ¡e imeVaÅ¡e ime i email adresa se koriste samo u Last-Translator zaglavlju GNU gettext fajlova.NulaUvećavanjenpr. nplurals=2; plural=(n > 1);upravljaÄ za poedit:// URICtrl+DoleEnterShift+GorealtctrlshiftO programu %snepoznat jezik"%s" nije ispravan POT fajl.poedit-3.6.3/locales/lt.po0000644000175100001660000026451415011674364011115 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-11 10:16\n" "Last-Translator: \n" "Language-Team: Lithuanian\n" "Language: lt_LT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && (n%100>19 || n%100<11) ? 0 : " "(n%10>=2 && n%10<=9) && (n%100>19 || n%100<11) ? 1 : n%1!=0 ? 2: 3);\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: lt\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "SlÄ—pti šį praneÅ¡imÄ…" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Daugiau neberodyti" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Daugiau neberodyti" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Atnaujinti santraukÄ…" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Atnaujinti santraukÄ…" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Užverti" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problemos" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Failas" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problema" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Naujos eilutÄ—s" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Naujos eilutÄ—s" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "IÅ¡mestos eilutÄ—s" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "IÅ¡mestos eilutÄ—s" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Renkama iÅ¡ pradinių failų…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "IÅ¡skleidžiamos verÄiamos eilutÄ—s iÅ¡ %s failo…" msgstr[1] "IÅ¡skleidžiamos verÄiamos eilutÄ—s iÅ¡ %s failų…" msgstr[2] "IÅ¡skleidžiamos verÄiamos eilutÄ—s iÅ¡ %s failo…" msgstr[3] "IÅ¡skleidžiamos verÄiamos eilutÄ—s iÅ¡ %s failų…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Nepavyko įkelti failo su iÅ¡gautais vertimais." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Faile %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Pradinis tekstas neprieinamas." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Vertimo negalima atnaujinti iÅ¡ pirminio teksto, nes tokio teksto nÄ—ra failo " "savybÄ—se nurodytoje vietoje." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Leidimas atmestas." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Neturite leidimo skaityti pirminių failų, esanÄių vietose, nurodytose failo " "savybÄ—se." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Jeigu esate atsisakÄ™ prieigos prie failų, jÄ… galite atkurti pasirinkÄ™ " "Sistemos nuostatos > Privatumas ir saugumas > Failai ir aplankai." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Failo „%s“ nepavyko atverti." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Naujinami vertimai" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Nustatomi skirtumai…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Suliejami skirtumai…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Netinkama antraÅ¡tÄ—: „%s“" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO vertimų failai" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT vertimų Å¡ablonai" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF vertimų failai" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON vertimų failai" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter vertimų failai" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Visi vertimų failai" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Failas yra Poedit neatpažįstamo formato." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Å is JSON failas nÄ—ra vertimų failas, todÄ—l jo negalima redaguoti su Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Failo turinio nuskaityti nepavyko dÄ—l klaidos: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Failas „%s“ skirtas tik skaitymui ir negali bÅ«ti iÅ¡saugotas.\n" "IÅ¡saugokite duomenis kitu vardu." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Nepavyko iÅ¡saugoti failo %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Ekrano nuotraukos:" #: src/catalog_po.cpp:134 #, 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] "Nepavyko perskaityti %i eilutÄ—s iÅ¡ failo „%s“." msgstr[1] "Nepavyko perskaityti %i eiluÄių iÅ¡ failo „%s“." msgstr[2] "Nepavyko perskaityti %i eilutÄ—s iÅ¡ failo „%s“." msgstr[3] "Nepavyko perskaityti %i eiluÄių iÅ¡ failo „%s“." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "EilutÄ— %d iÅ¡ failo „%s“ sugadinta (netinkami %s duomenys)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Sugadintas PO failas: vienaskaitos forma msgstr pateikiama kartu su " "daugiskaitos forma msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Sugadintas PO failas: daugiskaitos forma msgstr pateikiama be msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Nepavyko įkelti failo, jis greiÄiausiai sugadintas." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "Klaidos įkeliant failÄ…. Gali bÅ«ti prarastų arba sugadintų duomenų." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "Kilo bÄ—dų gražiai formatuojant failÄ… (bet jis buvo iÅ¡saugotas)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Failo negalima įraÅ¡yti vertimo nuostatose nurodyta koduote „%s“.\n" "\n" "lt buvo įraÅ¡ytas UTF-8 koduote ir atitinkamai pakoreguotos nuostatos." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Klaida įraÅ¡ant failÄ…" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "„%s“ nÄ—ra tinkamas POT failas." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Klaida įkeliant sql XLIFF failÄ… %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "nepalaikoma versija (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Klaidingai suformatuota vertimo eilutÄ—." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Sujunkite „Poedit“ su palaikomomis lokalizavimo platformomis debesijoje ir " "sklandžiai sinchronizuokite jose tvarkomus vertimus." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Kaip veikia sinchronizavimas debesijoje?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Paskyra" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(neprisijungÄ™s)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Atverti vertimÄ… debesijoje" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Valdyti paskyras" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projektas:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Kalba:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "JÅ«sų paskyroje nÄ—ra vertimo projektų." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "AtsiunÄiami naujausi vertimai…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Prisijungti prie %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sinchronizuojama" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Ä®keliami vertimai į %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Vertimų įkÄ—limas į %s nepavyko." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Suvienodinimo klaida" #: src/commentdlg.cpp:48 msgid "Add" msgstr "PridÄ—ti" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Nežinoma Crowdin klaida." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Nesankcionuota, praÅ¡ome prisijungti dar kartÄ…." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Eilutiniai „Crowdin“ projektai nepalaikomi." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Vertimų atsiuntimas Å¡iame projekte yra iÅ¡jungtas." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Prisijungti" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Prisijungti" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Atsijungti" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Atsijungti" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Sužinokite daugiau apie Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "„Crowdin“ – tai internetinÄ— vertimo tvarkymo platforma ir bendradarbiavimo " "vertimo įrankis. Mes patys naudojame „Crowdin“, kad iÅ¡verstume „Poedit“ į " "daugelį kalbų, ir mums tai labai patinka." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Laukiama tapatybÄ—s nustatymo…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Atnaujinama naudotojo informacija…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Prisijungti prie Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Sinchronizacija su Crowdin nepavyko." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin klaida" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Ä®keliami vertimai…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopijuoti" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "IÅ¡samiau" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Žinynas" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO failai negali bÅ«ti tiesiogiai redaguojami programoje Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Klaida atveriant failÄ…" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Vietoje to atsiverskite ir redaguokite atitinkamÄ… PO failÄ…. Kai jį " "iÅ¡saugosite, MO failas taip pat bus atnaujintas." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "neÅ¡alinti laikinų failų, skirtų derinimui" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "vykdyti poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "pereiti prie eilutÄ—s su duotu numeriu" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Nepavyko susisiekti su Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ä®vyko neapdorojama iÅ¡imtinÄ— situacija: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Parinkite vertimo Å¡ablonÄ…" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Netinkamas failas" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Parinkite vertimo failÄ…" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit yra lengvai naudojamas vertimų redaktorius." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Negalite užvilkti daugiau nei vieno failo ant Poedit lango." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "\"%s\" failas nÄ—ra vertimų failas." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Failas „%s“ neegzistuoja." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "RaÅ¡ybos tikrinimas iÅ¡jungtas, nes neįdiegtas %s žodynas." #: src/edframe.cpp:871 msgid "Install" msgstr "Ä®diegti" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "FailÄ… „%s“ pakeitÄ— kita programa." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Ä®kelti failÄ… iÅ¡ naujo" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Ar norite iÅ¡ naujo įkelti failÄ… iÅ¡ disko? Jei įkelsite, JÅ«sų padaryti " "pakeitimai Poedite bus prarasti." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignoruoti" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Ä®kelti failÄ… iÅ¡ naujo" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Failas buvo pakoreguotas. Ar iÅ¡saugoti pakeitimus?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "IÅ¡saugoti pakeitimus" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Prarasite atliktus pakeitimus, jei jų neiÅ¡saugosite." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "IÅ¡saugoti" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&NeįraÅ¡yti" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "NeiÅ¡saugoti" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "Jei iÅ¡saugosite, kitos programos padaryti pakeitimai bus prarasti." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Atsisakyti" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Vis tiek įraÅ¡yti" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Vis tiek įraÅ¡yti" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Ä®raÅ¡yti…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Kompiliuoti į…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Kompiliuoti vertimo failai" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Eksportuoti į HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML failai" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Eksportuojama į HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Atnaujinti nepavyko" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Atnaujinti iÅ¡ &POT failo…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Atnaujinti iÅ¡ &POT failo…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Rasta %d vertimo problema." msgstr[1] "Rastos %d vertimo problemos." msgstr[2] "Rasta %d vertimo problemos." msgstr[3] "Rasta %d vertimo problemų." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Patvirtinimo rezultatai" #: src/edframe.cpp:1842 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 "" "Ä®raÅ¡ai su klaidomis yra pažymÄ—ti raudonai. IÅ¡samesnÄ— klaidos informacija bus " "parodyta pasirinkus įrašą." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Failas saugiai iÅ¡saugotas." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Failas saugiai iÅ¡saugotas ir sukompiliuotas į MO formatÄ…, bet jis " "greiÄiausiai neveiks." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Failas saugiai iÅ¡saugotas, bet jo neįmanoma sukompiliuoti į MO formatÄ… ir " "naudoti." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Failas buvo sukompiliuotas į MO formatÄ…, taÄiau jis tikriausiai neveiks " "teisingai." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Failas negali bÅ«ti sukompiliuotas į MO formatÄ…." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Nerasta vertimo klaidų." #: src/edframe.cpp:1894 #, 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] "Vertimas paruoÅ¡tas naudoti, bet %d įraÅ¡as dar neiÅ¡verstas." msgstr[1] "Vertimas paruoÅ¡tas naudoti, bet %d įraÅ¡ai dar neiÅ¡versti." msgstr[2] "Vertimas paruoÅ¡tas naudoti, bet %d įraÅ¡o dar neiÅ¡versta." msgstr[3] "Vertimas paruoÅ¡tas naudoti, bet %d įrašų dar neiÅ¡versta." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Vertimas paruoÅ¡tas naudoti." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit automatiÅ¡kai iÅ¡taisÄ— neteisingÄ… turinį faile „%s“." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Faile buvo pasikartojanÄių elementų, kas yra neleidžiama PO failuose ir " "kurie neleistų naudoti failo. Poedit iÅ¡sprendÄ— problemÄ…, bet jÅ«s turÄ—tumÄ—te " "patikrinti vertimus pažymÄ—tus žyma reikia peržiÅ«rÄ—ti ir, jei reikia, juos " "pataisyti." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Nenustatyta vertimo kalba." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Nustatyti kalbÄ…" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "PasiÅ«lymai negalimi, jei netinkamai nustatyta vertimo kalba. Tai taip pat " "gali turÄ—ti įtakos ir kitoms savybÄ—ms, pvz.: daugiskaitos formoms." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Vertimo kalba yra tokia pati kaip originalo kalba." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Taisyti kalbÄ…" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Taisyti kalbÄ…" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Å iame faile yra įrašų su daugiskaitos formomis, bet nÄ—ra antraÅ¡tinio įraÅ¡o " "Plural-Forms." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Å iame faile yra įrašų, kurių daugiskaitos formų skaiÄius skiriasi nuo jų " "skaiÄiaus, nurodyto antraÅ¡tiniame Plural-Forms" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "TrÅ«ksta bÅ«tinos Plurar-Forms antraÅ¡tÄ—s." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "SintaksÄ—s klaida Plural-Forms antraÅ¡tÄ—je („%s“)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Taisyti antraÅ¡tÄ™" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Taisyti antraÅ¡tÄ™" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Faile panaudotos daugiskaitos formos nÄ—ra bÅ«dingos %s kalbai." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "PeržiÅ«rÄ—ti" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Ar norite naudoti anglų kalbÄ… pradiniam tekstui?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Å iame faile vietoj pradinio teksto naudojami eiluÄių ID. Poedit gali įkelti " "angliÅ¡kus tekstus iÅ¡ failo „%s“." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Ä®kelti anglų kalbÄ…" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "IÅ¡versta: %d iÅ¡ %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Liko: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d klaida" msgstr[1] "%d klaida" msgstr[2] "%d klaidos" msgstr[3] "%d klaidų" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d įraÅ¡as" msgstr[1] "%d įraÅ¡ai" msgstr[2] "%d įrašų" msgstr[3] "%d įrašų" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (neiÅ¡saugota)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (pakeista)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Nepavyko atnaujinti vertimų atminties: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "PaÅ¡alinti vertimus lygius pradiniam tekstui" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Ar tikrai norite paÅ¡alinti visus vertimus, kurie yra identiÅ¡ki pradiniam " "tekstui?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Palikti" #: src/edframe.cpp:2856 msgid "Remove" msgstr "PaÅ¡alinti" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "PaÅ¡alinti iÅ¡trintus vertimus" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Ar tikrai norite paÅ¡alinti visus nebenaudojamus vertimus?" #: src/edframe.cpp:2879 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 "" "Jei tÄ™site Å¡alinimÄ…, visi vertimai pažymÄ—ti kaip „iÅ¡trinti“ bus visam laikui " "paÅ¡alinti. Jei ateityje jie bus pridÄ—ti, turÄ—site juos versti iÅ¡ naujo." #: src/edframe.cpp:2883 msgid "Purge" msgstr "IÅ¡valyti" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Kopijuoti iÅ¡ pradinių tekstų" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopijuoti iÅ¡ pradinių tekstų" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "IÅ¡valyti vertimÄ…" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "IÅ¡valyti vertimÄ…" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Koreguoti komentarÄ…" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Koreguoti komentarÄ…" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Kodo įeitys" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Kodo įeitys" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "SlÄ—pti Å¡oninÄ™ juostÄ…" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Rodyti Å¡oninÄ™ juostÄ…" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "SlÄ—pti bÅ«senos juostÄ…" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Rodyti bÅ«senos juostÄ…" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Ženklų skaiÄius eilutÄ—je: vertimas | Å¡altinis" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Ženklų skaiÄius eilutÄ—je" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Pradinis tekstas" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Vienaskaita" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Daugiskaita" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Vertimas" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "IÅ¡versta preliminariai" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "BÅ«tina peržiÅ«rÄ—ti" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "BÅ«tina peržiÅ«rÄ—ti" #: src/editing_area.cpp:566 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 failai yra tik Å¡ablonai ir savyje neturi jokių vertimų.\n" "NorÄ—dami atlikti vertimÄ…, sukurkite naujÄ… PO failÄ… pagal Å¡ablonÄ…." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Sukurti naujÄ… vertimÄ…" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Sukurti naujÄ… vertimÄ… iÅ¡ Å¡io POT failo." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Pirminio teksto ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Viskas" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Forma %i (nenaudojama)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nulis" #: src/editing_area.cpp:788 msgid "One" msgstr "Vienas" #: src/editing_area.cpp:790 msgid "Two" msgstr "Du" #: src/editing_area.cpp:804 msgid "Other" msgstr "Kita" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "EilutÄ—s kontekstas: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "EilutÄ—s pavadinimas: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s Formatas" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s formatas" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Vertimas — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Pradinis tekstas — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "nežinoma kalba" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Tinklo klaida %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Nežinoma klaida" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Nepavyko sujungti gettext katalogų." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Atverti redaktoriuje" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Atverti raÅ¡yklÄ—je" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "Faile nÄ—ra informacijos apie Å¡ios eilutÄ—s įeitis pirminiame tekste." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "NÄ—ra naudojimo informacijos" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kodo įeitis" msgstr[1] "%d kodo pasireiÅ¡kimai" msgstr[2] "%d kodo pasireiÅ¡kimų" msgstr[3] "%d kodo pasireiÅ¡kimų" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Pirminis tekstas nerastas" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit negali parodyti pirminio teksto, kur naudojama Å¡i eilutÄ—, nes failo " "arba nÄ—ra nurodytoje vietoje, arba tai yra simbolinÄ— nuoroda, kuri nerodo į " "tikrÄ… failÄ…." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Failo negalima atverti" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit negali atverti failo „%s“." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "IeÅ¡koti" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Pakeisti" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Parinktys" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Neskirti didžiųjų raidžių nuo mažųjų" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Apgaubti tekstu" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Tik iÅ¡tisus žodžius" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "IeÅ¡koti pradiniuose tekstuose" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "IeÅ¡koti vertime" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "IeÅ¡koti komentaruose" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Pakeisti &viskÄ…" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Pakeisti &visus" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Pakeisti" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Ankstesnis" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Kitas >" #: src/findframe.cpp:235 msgid "String to find" msgstr "IeÅ¡koma eilutÄ—" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Pakeitimo eilutÄ—" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "įspÄ—jimas: " #: src/gexecute.cpp:171 msgid "error: " msgstr "klaida: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Vertimo kalba" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Vertimo kalba:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Visos eilutÄ—s" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projektai" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Sužinokite daugiau apie %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "PridÄ—ti projektÄ…" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "PridÄ—ti projektÄ…" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - katalogų tvarkyklÄ—" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Redaguoti…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Sukurti naujÄ… vertimų projektÄ…" #: src/manager.cpp:145 msgid "Delete the project" msgstr "IÅ¡trinti projektÄ…" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Redaguoti projektÄ…" #: src/manager.cpp:176 msgid "Update all" msgstr "Atnaujinti viskÄ…" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Atnaujinti visus projekto katalogus" #: src/manager.cpp:378 msgid "Total" msgstr "IÅ¡ viso" #: src/manager.cpp:379 msgid "Untrans" msgstr "Neverstos" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "BÅ«tina peržiÅ«rÄ—ti" #: src/manager.cpp:381 msgid "Errors" msgstr "Klaidos" #: src/manager.cpp:382 msgid "Last modified" msgstr "Paskutinis pakeitimas" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Pasirinkite aplankÄ…" #: src/manager.cpp:433 msgid "Directories:" msgstr "Aplankai:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Ar norite paÅ¡alinti „%s“ projektÄ…?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Å alinti projektÄ…" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "IÅ¡trynus projektÄ…, nebus iÅ¡trinti jokie vertimo failai." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Patvirtinimas" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Ar atnaujinti visus Å¡io projekto katalogus?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Atlieka visų projekto failų atnaujinimÄ… iÅ¡ pradinių tekstų." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Atnaujinami projekto katalogai" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Tikrinti, ar yra atnaujinimų…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Katalogų tvarkyklÄ—" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Nuostatos…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Taisa" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "AtÅ¡aukti" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Pakartoti" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Ä®dÄ—ti ir sutapatinti stilių" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "IÅ¡trinti" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "RaÅ¡yba ir gramatika" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Rodyti raÅ¡ybÄ… ir gramatikÄ…" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Patikrinti dokumentÄ…" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Tikrinti raÅ¡ybÄ… raÅ¡ant" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Tikrinti raÅ¡ybÄ… ir gramatikÄ…" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "RaÅ¡ybÄ… tikrinti automatiÅ¡kai" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Pakeitimai" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Rodyti pakeitimus" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Ä®mantrus kopijavimas ir įdÄ—jimas" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "LietuviÅ¡kos kabutÄ—s" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "BrÅ«kÅ¡niai" #: src/menus.cpp:226 msgid "Smart Links" msgstr "IÅ¡maniosios nuorodos" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Teksto pakeitimas" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformacijos" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Didžiosiomis raidÄ—mis" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Mažosiomis raidÄ—mis" #: src/menus.cpp:234 msgid "Capitalize" msgstr "IÅ¡ didžiosios raidÄ—s" #: src/menus.cpp:237 msgid "Speech" msgstr "Kalba" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "PradÄ—ti kalbÄ—jimÄ…" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Baigti kalbÄ—jimÄ…" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Rodymas" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Rodyti įrankių juostÄ…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Tinkinti įrankių juostą…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Visas ekranas" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Langas" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimizuoti" #: src/menus.cpp:264 msgid "Zoom" msgstr "Priartinti" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Jus sveikina Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "ViskÄ… rodyti priekyje" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informacija apie vertÄ—jÄ…" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Vardas:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "JÅ«sų vardas" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "El. paÅ¡tas:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "JÅ«sų el. paÅ¡to adresas ir vardas bus naudojami tik paskutinio vertÄ—jo " "nurodymui GNU gettext failų antraÅ¡tÄ—se." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Taisymas" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "AutomatiÅ¡kai kompiliuoti MO failÄ… iÅ¡saugant" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Tikrinti raÅ¡ybÄ…" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Visada aktyvuoti teksto įvedimo laukÄ…" #: src/prefsdlg.cpp:211 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 "" "Niekada nefokusuoti eiluÄių sÄ…raÅ¡o. Jei įjungta, turÄ—site naudoti " "Ctrl+rodyklÄ—s klaviatÅ«ros navigacijai, taip pat galÄ—site įvedinÄ—ti tekstÄ… iÅ¡ " "karto be TAB paspaudimo nekeiÄiant fokuso." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "IÅ¡vaizda" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "SÄ…raÅ¡ui naudoti savo Å¡riftÄ…:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Ä®vedimo laukams naudoti savo Å¡riftÄ…:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Keisti programos kalbÄ…" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(bÅ«tina Windows 8 arba naujesnÄ— versija)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Bendra" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Naudoti vertimų atminties pasiÅ«lymus" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Tvarkyti…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Atnaujinant iÅ¡ pradinių tekstų" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "parinkti panašų vertimÄ… iÅ¡ paties failo" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "versti preliminariai iÅ¡ VA" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit gali bandyti užpildyti naujus įraÅ¡us tik iÅ¡ ankstesnių Å¡io failo " "vertimų arba iÅ¡ visos jÅ«sų vertimų atminties. VA naudojimas nebus labai " "efektyvus jei ji bus beveik tuÅ¡Äia, bet jis taps vis efektyvesnis kai tik " "pridÄ—site daugiau vertimų į jÄ…." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "IÅ¡saugoti vertimai:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Duomenų bazÄ—s dydis diske:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importuoti vertimų failus…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importuoti vertimų failus…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importuoti iÅ¡ TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importuoti iÅ¡ TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Eksportuoti į TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Eksportuoti į TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Atkurti" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Pasirinkite kokius vertimo failus importuosite" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Pasirinkite kokius TMX importuosite" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX failai" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Importuojami vertimai…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Nepavyko importuoti vertimo atminties." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importuojama iÅ¡ „%s“…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Eksportuoti kaip…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Eksportuojami vertimai…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Vertimų atminties eksportas į „%s“ nepavyko." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Atkurti vertimų atmintį" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Ar tikrai norite atkurti vertimų atmintį?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Vertimų atminties atkÅ«rimas negrįžtamai panaikins visus saugomus vertimus iÅ¡ " "jos. NegalÄ—site atÅ¡aukti Å¡ios operacijos." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "VA" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Vertimų atmintis" #: src/prefsdlg.cpp:730 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 "" "Pradinio teksto iÅ¡traukÄ—jai naudojami verstinų eiluÄių suradimui pradiniuose " "failuose bei iÅ¡gavimui taip, kad jas bÅ«tų galima iÅ¡versti." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Savi iÅ¡traukÄ—jai:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Savi iÅ¡traukÄ—jai:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Palaiko visas programavimo kalbas, kurias atpažįsta GNU gettext įrankiai " "(PHP, C/C++, C#, Perl, Python, Java, JavaScript ir kitas)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "IÅ¡trinti iÅ¡traukÄ—jÄ…" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Ar tikrai norite iÅ¡trinti „%s“ iÅ¡traukÄ—jÄ…?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "IÅ¡traukÄ—jai" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Paskyros" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "AutomatiÅ¡kai tikrinti, ar yra atnaujinimų" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Ä®traukti beta versijas" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta versijos turi naujausias funkcijas ir patobulinimus, bet gali bÅ«ti Å¡iek " "tiek mažiau stabilios." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Atnaujinimai" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Å ie parametrai turi įtakos vidiniam PO failų formatavimui. Koreguokite juos, " "jei turite specifinių reikalavimų, pvz., dÄ—l versijų valdymo." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "EiluÄių pabaigos:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (rekomenduojama)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "TekstÄ… laužyti:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "IÅ¡laikyti esamÄ… failų formatavimÄ…" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Papildomai" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Nuostatos" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "RuoÅ¡iamos eilutÄ—s…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Preliminarus vertimas iÅ¡ vertimų atminties…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Preliminariai iÅ¡versta %u eilutÄ—" msgstr[1] "Preliminariai iÅ¡verstos %u eilutÄ—s" msgstr[2] "Preliminariai iÅ¡versta %u eiluÄių" msgstr[3] "Preliminariai iÅ¡versta %u eiluÄių" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "VerÄiama preliminariai…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "Preliminariai iÅ¡versta %d eilutÄ—." msgstr[1] "Preliminariai iÅ¡verstos %d eilutÄ—s." msgstr[2] "Preliminariai iÅ¡versta %d eiluÄių." msgstr[3] "%d eiluÄių preliminariai iÅ¡versta." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Vertimai buvo pažymÄ—ti kaip tobulintini, nes gali bÅ«ti netikslÅ«s. TurÄ—tumÄ—te " "peržiÅ«rÄ—ti jų teisingumÄ…." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "NÄ—ra eiluÄių, kurias galima preliminariai iÅ¡versti." #: src/pretranslate.cpp:218 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 "" "Vertimo atmintyje nÄ—ra eiluÄių panaÅ¡ių į Å¡io failo turinį. Tai efektyvu tik " "pusiau automatiniam vertimui, kai Poedit pakankamai iÅ¡moks iÅ¡ jÅ«sų rankiniu " "bÅ«du verstų failų." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Preliminarus vertimas neįmanomas be pradinio teksto." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Versti preliminariai" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Preliminariam vertimui atlikti reikalingas pradinis tekstas. Jis neveikia, " "jei naudojami tik ID be faktinio teksto." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Užpildyti tik jei pilnai atitinka" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "NežymÄ—ti „Reikia peržiÅ«rÄ—ti“ jei pilnai atitinka" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Ä®junkite tik, jei pasitikite savo VA kokybe. Pagal numatytÄ…sias nustatas " "visi VA pasiÅ«lyti atitikmenys pažymimi „Reikia peržiÅ«rÄ—ti“ žyma ir prieÅ¡ " "naudojimÄ… turi bÅ«ti peržiÅ«rÄ—ti." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Preliminarus vertimas randa tikslius arba panaÅ¡ius atitikmenis neiÅ¡verstoms " "eilutÄ—ms vertimo atmintyje ir automatiÅ¡kai užpildo jų vertimus." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Klaida: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "Ä®vyko %d klaida:" msgstr[1] "Ä®vyko %d klaidos:" msgstr[2] "Ä®vyko %d klaidos:" msgstr[3] "Ä®vyko %d klaidų:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Ä®vyko klaida." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "Ä®vyko %d klaida." msgstr[1] "Ä®vyko %d klaidos." msgstr[2] "Ä®vyko %d klaidos." msgstr[3] "Ä®vyko %d klaidų." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Atsisakoma…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Nutempkite aplankus ir failus Äia" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Nutempkite aplankus ir failus Äia" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "PridÄ—ti aplankus…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "PridÄ—ti aplankus…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "PridÄ—ti failus…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "PridÄ—ti failus…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "PridÄ—ti pakaitos simbolį…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "PridÄ—ti pakaitos simbolį…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Rodyti „Finder“" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Atverti failų narÅ¡yklÄ—je" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Rodyti aplanke" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Keliai" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Ignoruojami keliai" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "IÅ¡plÄ—stiniai iÅ¡traukimo parametrai" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "IÅ¡gauti pastabas vertÄ—jams iÅ¡:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Komentarų su prieÅ¡dÄ—liu:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Visų komentarų" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Papildomos xgettext žymos:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Papildomi raktažodžiai" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Projekto pavadinimas kuriam skirtas vertimas" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Komandos pavadinimas ir el. paÅ¡to adresas arba URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "pvz. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (rekomenduojama)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Pirma iÅ¡saugokite failÄ…. Å io skyriaus nebus galima redaguoti kol " "neiÅ¡saugosite." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Vietaženklių teisingumas" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Vietaženklio „%s“ nÄ—ra vertime." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Perteklinis vietaženklis „%s“, kurio nÄ—ra pradiniame tekste." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Daugiskaitos formų vertimas" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Ne visos daugiskaitos formos iÅ¡verstos." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Nesuderintas didžiųjų/mažųjų raidžių naudojimas" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Vertimas turÄ—tų prasidÄ—ti kaip sakinys." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Vertimas turÄ—tų prasidÄ—ti mažąja raide." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Nesuderinti tarpai" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Vertimas neprasideda tarpo ženklu." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Vertimas prasideda tarpo ženklu, bet pradiniame tekste taip nÄ—ra." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Vertimo pabaigoje trÅ«ksta naujos eilutÄ—s simbolio." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" "Vertimas baigiasi naujos eilutÄ—s ženklu, bet pradiniame tekste taip nÄ—ra." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Vertimo pabaigoje trÅ«ksta tarpo ženklo." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Vertimas baigiasi tarpo simboliu, bet pradiniame tekste taip nÄ—ra." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Skyrybos tikrinimas" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Vertimas turi baigtis „%s“." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Vertimas neturi baigtis „%s“." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Vertimas baigiasi „%s“, o pradinis tekstas - „%s“." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Debesija" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "IÅ¡valyti meniu" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "IÅ¡valyti meniu" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Komentaras:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Atnaujinti" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "Å alinti" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "PaÅ¡alinti komentarÄ…" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Redaguoti projektÄ…" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Projekto pavadinimas:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "NarÅ¡yti" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Ä® sÄ…rašą pridÄ—ti aplankÄ…" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Gerai" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Failas" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Naujas…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Naujas iÅ¡ &POT/PO failo…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Naujas iÅ¡ &POT/PO failo…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Atverti…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Atverti paskiausiai naudotÄ…" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Atverti paskiausiai naudotus" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Atverti vertimÄ… debesijoje…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Atverti vertimÄ… debesijoje…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Pradinis langas" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Pradinis langas" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Katalogų &tvarkyklÄ—" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Katalogų &tvarkyklÄ—" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Užverti" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "IÅ¡&saugoti" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "IÅ¡saugoti k&aip…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "IÅ¡saugoti k&aip…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Kompiliuoti į MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&ksportuoti į HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Tikrinti, ar yra atnaujinimų…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Nuostatos…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Nustatymai" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&IÅ¡eiti" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Baigti darbÄ…" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopijuoti iÅ¡ vienaskaitos" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopijuoti iÅ¡ vienaskaitos" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "VertimÄ… bÅ«tina tobulinti" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "VertimÄ… bÅ«tina tobulinti" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Redaguoti &komentarÄ…" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Redaguoti &komentarÄ…" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "PasiÅ«lymai" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Rasti…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Sukeisti…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Rasti tolesnį" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Rasti ankstesnį" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Rasti ir pakeisti…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Rasti tolesnį" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Rasti ankstesnį" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Rodyti eilutÄ—s &ID" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Rodyti eilutÄ—s &ID" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Rodyti įspÄ—jimus" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Rodyti įspÄ—jimus" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Rikiuoti pagal eiliÅ¡kumÄ… &faile" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Rikiuoti pagal eiliÅ¡kumÄ… &faile" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Rikiuoti pagal „&Pradinis tekstas“" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Rikiuoti pagal „&Pradinis tekstas“" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Rikiuoti pagal „&Vertimas“" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Rikiuoti pagal „&Vertimas“" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Grupuoti pagal kontekstÄ…" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Grupuoti pagal kontekstÄ…" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Pirmiausia įraÅ¡ai su klaidomis" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Pirmiausia įraÅ¡ai su klaidomis" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Pirmiausia neiÅ¡versti įraÅ¡ai" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Pirmiausia neiÅ¡versti įraÅ¡ai" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Rodyti kodo pasireiÅ¡kimus" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Rodyti kodo pasireiÅ¡kimus" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Rodyti Å¡oninÄ™ juostÄ…" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Rodyti bÅ«senos juostÄ…" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Vertimas" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "Atna&ujinti iÅ¡ pradinių tekstų" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "Atna&ujinti iÅ¡ pradinių tekstų" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sinchronizuoti su „Crowdin“" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Vers&ti preliminariai…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "Pa&tikrinti vertimÄ…" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "Pa&tikrinti vertimÄ…" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "PaÅ¡alinti vertimus lygius pradiniam tekstui" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&PaÅ¡alinti iÅ¡trintus vertimus" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&PaÅ¡alinti iÅ¡trintus vertimus" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&SavybÄ—s…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Eiti" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Atlikta ir toliau" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Atlikta ir Toliau" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "AnksÄiau redaguoti" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "AnksÄiau redaguoti" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Ankstesnis vertimas" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Ankstesnis vertimas" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Kitas vertimas" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Kitas vertimas" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "&Ankstesnis nebaigtas" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "&Ankstesnis nebaigtas" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "&Kitas nebaigtas" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "&Kitas nebaigtas" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "AnkstesnÄ— daugiskaitos forma" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "AnkstesnÄ— daugiskaitos forma" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Kita daugiskaitos forma" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Kita daugiskaitos forma" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Žinynas internete" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Žinynas internete" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext vadovas" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext vadovas" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Apie Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Apie" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "IÅ¡traukÄ—jo nuostatos" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "PlÄ—tinių, atskirtų kabliataÅ¡kiais, sÄ…raÅ¡as (pvz., *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "IÅ¡kvietimas:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Vertimų iÅ¡gavimo komanda:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Tai yra komanda, paleidžianti pradinio teksto iÅ¡traukÄ—jÄ….\n" "%o bus pakeistas iÅ¡vesties failo pavadinimu, %K raktažodžių\n" "sÄ…raÅ¡u, %F įvesties failų sÄ…raÅ¡u, \n" "%C koduotÄ—s žymomis (žiÅ«rÄ—ti aukÅ¡Äiau)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Elementas raktažodžių sÄ…raÅ¡e:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Tai bus pridÄ—ta komandinÄ—je eilutÄ—je po kartÄ…\n" "kiekvienam raktiniam žodžiui. %k iÅ¡plÄ—s į raktinį žodį." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Elementas įvedimo failų sÄ…raÅ¡e:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Tai bus pridÄ—ta komandinÄ—je eilutÄ—je po kartÄ…\n" "kiekvienam duomenų failui. %f iÅ¡plÄ—s į failo pavadinimÄ…." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Pradinių tekstų koduotÄ—:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Tai bus pridÄ—ta komandinÄ—je eilutÄ—je po kartÄ…\n" "kiekvienam duomenų failui. %c iÅ¡plÄ—s į failo pavadinimÄ…." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Vertimo savybÄ—s" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Projekto pavadinimas ir versija:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "VertÄ—jų komanda:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Daugiskaitos formos:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Å iai kalbai naudoti numatytÄ…sias taisykles" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Naudoti savo iÅ¡raiÅ¡kÄ…" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Sužinokite apie daugiskaitos formas" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "KoduotÄ—:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "IÅ¡plÄ—stiniai iÅ¡traukimo parametrai…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "IÅ¡plÄ—stiniai iÅ¡traukimo parametrai…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Vertimo savybÄ—s" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Pradinių failų keliai" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Pradinių failų keliai" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "IÅ¡gauti tekstÄ… iÅ¡ pradinių failų esanÄių Å¡iuose aplankuose:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Pagrindinis kelias:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Pradinių failų raktažodžiai" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Pradinių failų raktažodžiai" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Be standartinių, naudokite Å¡iuos raktažodžius (funkcijų pavadinimus),\n" "verstinų eiluÄių atpažinimui pradiniuose tekstuose:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Taip pat palaikomoms kalboms naudoti numatytuosius raktažodžius" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Sužinokite daugiau apie gettext raktažodžius" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Atverti failÄ…" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "IÅ¡saugoti failÄ…" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Patikrinti" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Tikrinti ar nÄ—ra vertimo klaidų" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Atnaujinti iÅ¡ pradinių tekstų" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Atnaujinti iÅ¡ pradinių tekstų" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Atnaujinti iÅ¡ pradinių tekstų" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Å oninÄ— juosta" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Rodyti ar slÄ—pti Å¡oninÄ™ juostÄ…" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Ankstesnis pradinis tekstas" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Senasis pradinis tekstas (prieÅ¡ atnaujinimÄ…), kuris atitinka neteisingÄ… " "vertimÄ…." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Pastabos vertÄ—jams" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Komentaras" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "PridÄ—ti komentarÄ…" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "PridÄ—ti komentarÄ…" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "IÅ¡trinti iÅ¡ vertimų atminties" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "IÅ¡trinti iÅ¡ vertimų atminties" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Vertimų siÅ«lymai" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Atitikmenų nerasta" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Atitikmenų nerasta" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Å i eilutÄ— buvo rasta Poedit vertimų atmintyje." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Vertimo pasiÅ«lymams pateikti reikalingas pradinis tekstas. Jis neveikia, jei " "naudojami tik ID be faktinio teksto." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Ä®vykdyti programos nepavyko: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX failas yra neteisingas." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Sugadinta vertimų atminties duomenų bazÄ—: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Vertimų atminties klaida: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Naudoti numatytÄ…jÄ… kalbÄ…)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Kalbos pasirinkimas" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Pasirinkite pageidaujamÄ… kalbÄ…" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Å is pakeitimas įsigalios paleidus Poedit iÅ¡ naujo." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Sukurti laikino aplanko nepavyko." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "NÄ—ra vertimų. Neįprasta." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Sužinokite daugiau apie „GNU gettext“" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "PaprasÄiausias bÅ«das užpildyti šį failÄ… vertimais yra atnaujinti jį iÅ¡ POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Atnaujinti failÄ… pagal POT Å¡ablonÄ…" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Paimti verÄiamas eilutes iÅ¡ esamo POT Å¡ablono." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Taipogi galite iÅ¡gauti verstinas eilutes tiesiai iÅ¡ pradinių tekstų:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "IÅ¡gauti iÅ¡ pradinių tekstų" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Pradinių tekstų iÅ¡traukimÄ… sukonfigÅ«ruokite Nustatymuose." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "%s versija" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Sukurti naujÄ…" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Sukurti naujÄ… vertimÄ… iÅ¡ POT Å¡ablono." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "NarÅ¡yti failus" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Atverti ir redaguoti vertimų failus." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Versti projektÄ… debesijoje" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Bendradarbiaukite su kitais žmonÄ—mis internete." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Paskiausiai naudoti failai" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sinchronizuoti" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sinchronizuoti vertimÄ… su „Crowdin“" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Apie „%s“" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s nuostatos" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Apie %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Paslaugos" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "SlÄ—pti %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "SlÄ—pti kitus" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Rodyti visus" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Baigti darbÄ… %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Nustatymai…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Nuostatos..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Nuostatos..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Taikyti" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Taikyti" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Atgal" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Atgal" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Atsisakyti" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&IÅ¡valyti" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "IÅ¡valyti" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopijuoti" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "IÅ¡kirp&ti" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "IÅ¡kirpti" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Redaguoti" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Baigti darbÄ…" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Žinynas" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Naujas" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Naujas" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Ne" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ne" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Gerai" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Atverti…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Atverti..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Atverti..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "Ä®&dÄ—ti" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Ä®dÄ—ti" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Nuostatos" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Pakartoti" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Ä®kelti iÅ¡ naujo" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "IÅ¡&saugoti kaip" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "IÅ¡saugoti kaip" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "ŽymÄ—ti &viskÄ…" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "PažymÄ—ti viskÄ…" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&AtÅ¡aukti" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Taip" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Taip" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "AukÅ¡tyn" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Žemyn" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "KairÄ—n" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "DeÅ¡inÄ—n" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Ä®spÄ—jimas: " poedit-3.6.3/locales/it.mo0000644000175100001660000017146415011674363011107 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-¨O ø‘’1’G’GW’Ÿ’/³’/ã’[“Vo“Æ“ H”S” d”1o” ¡”¯”Ç” ДÚ”ã”ì”ô”û”•• ,•6•<•E•a•}•‚•𕲕¹• À• ʕԕ땖– ––*–3–<– E–Q–`–w–Ž––»–Ù–ß– ç–ô– û–—$—A—R— c—n—w——¬—Ê—è—ü— ˜˜ "˜C˜!T˜ v˜ ‚˜ Œ˜˜˜ ˜¨˜±˜ØÔ˜é˜û˜™)™F™W™l™~™š™³™Ò™&Û™#š&&šMšhšyš<‹š=Èš›&›(E›n›v›'~›0¦›6×›+œ9:œtœ}œ^Œœëœ??G,‡´ ¼¶Èž ‡ž*•ž%Àž3æž-ŸHŸXŸkŸ‚Ÿ!”Ÿ¶ŸÈŸ!âŸ, 1 %K q ‹ ¡ © É Ý ý ¡¡¡3¡#I¡m¡#‹¡¯¡ ¸¡¡Ù¡ ê¡ø¡3¢F¢„O¢Ô¢Ú¢î¢££%4£7Z£;’£Σ î£ù£&¤!:¤\¤ªn¤¥!¥<¥(W¥€¥‡¥¦¥$®¥Ó¥$æ¥ ¦¦3¦;G¦ƒ¦  ¦$ª¦bϦ?2§Pr§ ç Чܧ9î§(¨*:¨@e¨¦¨èà¨æ¨ú¨©©,©>©P©b©w© €©Œ©“©„®©3ªLª‘eª"÷ª&«0A«r«{« ‚«Œ«¬«½«Ô«ä«÷« ¬;¬Z¬u¬#‰¬7­¬]å¬C­ _­2j­;­8Ù­&®09®j®o®Š®+£®XÏ®(¯.¯?¯P¯g¯z¯“¯ª¯»¯̯߯ò¯ °"°=°F° ^°j° s°}°ƒ°›°%³°(Ù°±¿±’űŒX²å²ì²ý²)³>³)U³³0•³Ƴá³è³!þ³ ´<´X´a´ q´~´‡´´¨´±´DÆ´& µ2µKµbµyµµ*‘µ"¼µßµîµ¶¶;¶>@¶¶D•¶Ú¶›é¶@…·Æ·Ý·-ô·!"¸D¸ U¸a¸|¸#‹¸¯¸µ¸θç¸ú¸ ¹$$¹IºOºhºwººŸº»ºÔºíºðº&»\6»“»)²»-Ü» ¼)$¼BN¼‘¼¥¼¨¼¦¬¼,S½€½ ™½"¦½ɽß½ ø½¾¾ $¾1¾J¾R¾Z¾b¾h¾¾š¾°¾€Ê¾K¿'S¿{¿I„¿ο0ß¿Ày+ÀN¥ÀôÀüÀDÁ`ÁoÁvÁI‘ÁíÛÁÂÉÂ:ŒÃ2ÇÃúÃ Ä Ä0&Ä)WÄÄ«œÄ‡HÅÐÅ PÆ [Æ iÆwÆ(‘ƺÆÓÆìÆÇ!Ç<ÇZÇ mÇwǀǛǣÇÃÇ=ÈÇ ÈÈÈ#È4È EÈSÈ'[È'ƒÈ«È¼È"ÍÈ ðÈüÈÉ"É:É-IÉwÉÉŒŸÉ,Ê >ÊHÊNÊ]ÊlÊ{Ê ŠÊ •Ê£Ê ¶ÊKÁÊ ËË)Ë!9Ë[ËqË+ŽËºËÚËøËÌ Ì#Ì3Ì"IÌl̆ÌÌ¶Ì ÖÌäÌûÌ%Í;ÍUÍoÍ †Í”Í £Í ¯Í½Í ÄÍÐÍéÍúÍ Î Î)Î>ÎNÎbÎs΋ΠηÎÏÎäÎ+ûΟ'Ï ÇÏèÏÐÐ%Ð;ÐRÐhЀВÐT—ÐìÐ Ñ Ñ Ñ8ÑMÑ$hÑ5ÑÃÑ:ÖÑ Ò Ò©+Ò@ÕÒ’Ó ©ÓµÓ%ÍÓóÓÔ%Ô@EÔ†Ô‰Ô;’Ô*ÎÔùÔÀ ÕÍÕGìÕ94ÖnÖÅs×79Ø4qØZ¦Ø_ÙSaÙ'µÙ"ÝÙ#Ú>$ÚycÚ[ÝÚ(9ÛAbÛ?¤ÛFäÛ.+Ü,Z܇Ü"Ý*:Ý.eÝ/”Ý;ÄÝ>Þm?Þ)­Þ]×ÞO5ßr…ß—øßRàãàgeátÍáÔBâ9ãQãfáãfHä¯ä¶ä ÅäÓåêå ææ(æ$CæhæZ„ævßæ=Vç)”ç$¾çãçùç“虥è?éšQéìéðéê3 ê-@ênêêê °ê ½êËêÞê'íê0ëFë_ëxëŒë¡ëµëÒë åëóë ì/ì$Hì,mìšìºìÖì$õì5í(Píiyíãíî î #î/î@îQîcîlî€îî°î¹î+Áîíî ïï.ïLïJPï:›ïvÖï:Mð ˆð+”ðwÀð8ñ =ñIñ.\ñ$‹ñ°ñ ¹ñ'Úñòò!ò'ò,ò2ò;òBòJòMòQòVò]ò mòyò ˆò –ò¡ò ©ò¶òËòÞòûòóó|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Italian Language: it_IT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: it X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (modificato) (non salvato)%d occorrenza del codice%d occorrenze del codice%d voce%d voci%d elemento è stato pre-tradotto.%d elementi sono stati pre-tradotti.%d errore%d errori%d errore sopravvenuto.%d errori sopravvenuti.%d errore sopravvenuto:%d errori sopravvenuti:Rilevato %d problema con la stringa sorgente.Rilevati %d problemi con la stringa sorgente.%d problema trovato nella traduzione.Sono stati trovati %d problemi nella traduzione.%i linea del file “%s†non è stata caricata correttamente.%i linee del file “%s†non sono state caricate correttamente.Formato %sPreferenze di %sformato %s%s traduzione importata.%s traduzioni Importate.Inform&azioniInform&azioni su Poedit&Applica&Indietro&Annulla&Rimuovi&Chiudi&Copia&Elimina&Applica e prosegui&Applica e prosegui&Modifica&FileTrova…Documentazione &GNU gettextDocumentazione &GNU gettext&Vai&Raggruppa per contesto&Raggruppa per contesto&Aiuto&Nuovo&Nuovo…Ava&nti >Traduzione &successivaTraduzione &successiva&No&OK&Guida in linea&Guida in linea&Apri...&Apri…&Incolla&Preferenze&Preferenze…Traduzione &precedenteTraduzione &precedente&Proprietà…&Rimuovi traduzioni eliminate&Rimuovi traduzioni eliminate&Esci&Ripeti&Sostituisci&Salva&Salva comeVisualizza occorrenze codiceVisualizza occorrenze codiceFinestra d'AvvioFinestra d'avvioTraduzione&Annulla&Prima voci non tradotte&Prima le voci non tradotte&Aggiorna dal codice sorgente&Aggiorna dal codice sorgenteVerifica traduzioni&Verifica traduzioni&Visualizza&Sì(Utilizza la lingua predefinita)(non registrato)(richiede Windows 8 o successivo)< &IndietroRiguardo %sAccountAccountAggiungiAggiungi commentoAggiungi file…Aggiungi Cartelle…Aggiungi progettoAggiungi carattere jolly…Aggiungi commentoAggiungi cartella all'elencoAggiungi file…Aggiungi cartelle…Aggiungi progettoAggiungi carattere jolly…Parole chiave aggiuntiveAttributi xgettext aggiuntivi:AvanzateImpostazioni di estrazione avanzate…Impostazioni di estrazione avanzateImpostazioni di estrazione avanzate…Tutti i file di traduzioneTutti i commentiTutte le stringheUsa anche parole chiave predefinite per le lingue supportatePosiziona sempre il cursore nel campo di immissione del testoUn errore sopravvenuto.Oggetto nell'elenco dei file di input:Oggetto nell'elenco delle parole chiave:AspettoApplicaCorrispondenze approssimative dalla MdTSei sicuro di voler eliminare l'estrattore "%s"?Sei sicuro di voler azzerare la memoria di traduzione?Controlla automaticamente gli aggiornamentiCompila automaticamente il file MO durante il salvataggioIndietroPercorso base:Le versioni beta contengono le ultime novità e miglioramenti, ma possono essere meno stabili.Mostra tutto in primo pianoFile PO corrotto: forma msgstr plurale usata senza msgid_pluralFile PO corrotto: forma msgstr singolare usata con msgid_pluralMarcatore corrotto nella stringa traduzione.SfogliaNaviga filePer impostazione predefinita, vengono inclusi anche i risultati imprecisi, ma contrassegnati come da elaborare. Seleziona questa opzione per includere solo le corrispondenze esatte.AnnullaAnnullando…Impossibile creare la cartella temporanea.Impossibile eseguire il programma: %sImpossibile pre-tradurre da una lingua sconosciuta.Impossibile pretradurre senza testo sorgente.Rendi maiuscolo&Gestore cataloghi&Gestore dei cataloghiGestore cataloghiCambia la lingua dell'interfacciaSet di caratteri:Verifica ora il documentoVerifica grammatica ed ortografiaControllo ortografico durante la digitazioneVerifica Aggiornamenti…Controlla gli errori nella traduzioneVerifica aggiornamenti…Controllo ortograficoRimuoviAzzera elenco voci file recentiCancella traduzioneAzzera elenco voci file recentiCancella traduzioneChiudiReteOccorrenze del CodiceOccorrenze del codiceCollabora online con altre persone.Raccolta dei file sorgente…Comando per estrarre le traduzioni:CommentoCommento:Commenti preceduti da:Compila in MO…Compila in…File traduzione compilatiConfigura estrazione codice sorgente in Proprietà.ConfermaCollega Poedit con piattaforme di localizzazione cloud supportate per sincronizzare senza problemi le traduzioni gestite su di esse.CopiaCopia dal singolareCopia dal testo sorgenteCopia dal singolareCopia dal testo sorgenteCorreggi automaticamente l'ortografiaImpossibile scaricare i dettagli del progetto Localazy.Impossibile caricare il file, probabilmente è danneggiato.Impossibile salvare il file %s.Crea nuovoCrea una nuova traduzioneCrea nuova traduzione dal modello POT.Crea nuovo progetto di traduzioneErrore di CrowdinCrowdin è una piattaforma di gestione delle traduzioni online e uno strumento di traduzione collaborativa. Usiamo Crowdin noi stessi per tradurre Poedit in molte lingue.&TagliaEstrattori personalizzati:Estrattori personalizzati:Personalizza la barra degli strumenti…TagliaDimensione database sul disco:EliminaCancella dalla memoria di traduzioneElimina estrattoreCancella dalla memoria di traduzioneElimina il progettoElimina il commentoElimina il progettoEliminare il progetto non eliminerà alcun file traduzione.Determinazione differenze…Cartelle:Vuoi eliminare il progetto “%sâ€?Vuoi ricaricare il file dal disco? Le tue modifiche non salvate in Poedit saranno perse se lo fai.Vuoi rimuovere tutte le traduzioni identiche al testo sorgente?Vuoi rimuovere dalla memoria traduzione tutte le traduzioni non più utilizzate?&Non salvareNon salvareNon mostrare piùNon segnare le corrispondenze esatte come 'Da verificare'Non mostrare piùDownload versione aggiornata traduzione…Il download delle traduzioni è disabilitato in questo progetto.Trascina Qui Cartelle o FileTrascina qui cartelle o fileE&sciE&sporta in HTML…ModificaModifica &CommentoModifica il &commentoModifica commentoModifica commentoModifica progettoModifica il progettoModificaModifica…Email:Modalità a schermo interoLe voci in questo file hanno un diverso conteggio delle forme plurali da quanto detto dall'intestazione delle Forme Plurali del filePrima le voci con erroriPrima le voci con erroriLe voci con errori sono state marcate in rosso nell'elenco. I dettagli dell'errore saranno visualizzati quando selezionerai una determinata voce.Errore durante l'apertura del fileErrore durante il salvataggio del fileErrore durante il caricamento del file XLIFF: %sErrore: ErroriQualsiasiCorrispondenze esatte dalla MdTPercorsi esclusiEsportazione in TMX…Esporta come…Esporta in HTML…Esporta in TMX…Esportazione in HTMLL'esportazione della memoria traduzione in "%s" è fallita.Esportazione traduzioni…Estrai dai sorgentiEstrai le note per i traduttori da:Estrai testo dai file sorgenti nelle seguenti cartelle:Estrazione stringhe traducibili dal file %s…Estrazione stringhe traducibili dai file %s…Installazione di estrattoreEstrattoriErrore di comunicazione con il processo di Poedit.Estrazione delle stringhe dal codice sorgente non riuscita.Impossibile caricare il file con le traduzioni estratte.Impossibile unire i cataloghi gettext.Impossibile aggiornare la memoria traduzione: %sFileImpossibile aprire il fileIl file "%s" non esiste.Il file “%s†non è un file traduzione.Il file "%s" è in sola lettura e non può essere salvato. Salvarlo con un nome diverso.TrovaTrova successivoTrova precedenteTrova e sostituisci…Trova nei commentiTrova nel testo sorgenteTrova nella traduzioneTrova successivoTrova precedenteCorreggi la linguaCorreggi la linguaCorreggi l'intestazioneCorreggi l'intestazioneFile di traduzione FlutterForma %iForma %i (inutilizzata)GNU gettextGeneraleFIle HTMLAiutoNascondi barra lateraleNascondi barra di statoNascondi questo messaggio di notificaCome funziona la sincronizzazione cloud?IDSe si continua nella pulizia, tutte le traduzioni segnate come eliminate verranno rimosse definitivamente. Se esse verranno nuovamente aggiunte in futuro sarà necessario tradurle nuovamente.Se precedentemente hai negato l'accesso ai tuoi file, puoi consentirlo in Preferenze di Sistema > Sicurezza e Privacy > Privacy > File e Cartelle.Se, precedentemente, hai negato l'accesso ai tuoi file, puoi consentirlo in Impostazioni di Sistema > Privacy e Sicurezza > File e Cartelle.IgnoraIgnora maiuscoleImportazione da TMX…Importazione dei file della traduzione…Importazione da TMX…Importazione dei file della traduzione…Importazione da %s…Importazione memoria di traduzione non riuscita.Importazione traduzioni…In: %sIncludi versioni betaMaiuscole/minuscole inconsistentiSpazio bianco inconsistenteInformazioni sul traduttoreInstallaFile non validoInvocazione:ProblemaProblemiFile di traduzione JSONMantieniNome o codice linguaLa lingua del file traduzione è la stessa lingua del file sorgente.La lingua traduzione non è impostata.Lingua della traduzione:Selezione della linguaSquadra di traduzione:Lingua:Ultima modificaScopri di più sulle parole chiave gettextScopri di più sulle forme pluraliScopri di piùScopri di più su %sScopri di più su CrowdinScopri di più su GNU gettextRigaLa riga %d del file “%s†è corrotta (dati %s non validi).Terminazioni di riga:Elenco di estensioni separate da punto e virgola (ad es. *.cpp;*.h):Carica ingleseLocalazy è una piattaforma di localizzazione altamente automatizzata che consente a chiunque di tradurre facilmente i prodotti e contenuti in più lingue.I file MO non possono essere modificati direttamente con Poedit.Trasforma in minuscoloTrasforma in maiuscoloCrea una nuova traduzione da questo file POT.Intestazione malformata: “%sâ€Gestisci accountGestione…Unione delle differenze…Riduci a iconaNome del progetto per la traduzioneNome:Non tradotta &successivaNon tradotta &successivaNecessita VerificaRichiede verificaErrore di rete: %s (%d)Non permettere mai che nella lista delle stringhe si posizioni automaticamente il cursore. Se abilitato, è necessario usare Ctrl-frecce direzionali per la navigazione con la tastiera, ma è anche possibile scrivere il testo immediatamente, senza dover premere Tab per posizionare il cursore.NuovoNuovo da file &POT/PO…Nuove stringheNuovo da file &POT/PO…Nuove stringheNuove stringhe da tradurre:Forma plurale successivaForma plurale successivaNoNessuna corrispondenza trovataNessun elemento è stato pre-tradotto.Nessun'informazione sulle occorrenze di questa stringa nel codice sorgente fornita nel file.Nessuna corrispondenza trovataNessun problema trovato nella traduzione.Nell'account non è elencato nessun progetto.Nessun'informazione d'usoNon tutte le forme plurali sono tradotte.Non autorizzato. È necessario autenticarsi per procedere, grazie.Note per traduttoriOKUnoAbilitala solo se ti fidi della qualità della MT. In modo predefinito tutte le corrispondenze dalla MT sono segnate come 'Da verificare' e devono essere controllate.Riempi solo quelle con corrispondenza esattaApri traduzione cloud…Apri recenteApri e modifica i file traduzione.Apri traduzione cloudApri traduzione cloud…Apri fileApri nell'editorApri nell'editorApri recenteApri file di riferimentoApri...Apri…OpzioniAltroNon tradotta p&recedenteNon tradotta p&recedenteFile di traduzione POModelli di traduzione POTI file POT sono solo modelli e non contengono traduzioni. Per fare una traduzione, crea un nuovo file PO utilizzando un modello.IncollaIncolla e verifica corrispondenze stilePercorsiEsegue l'aggiornamento dal codice sorgente per tutti i file del progetto.Permesso negato.Il segnaposto "%s" è mancante dalla traduzione.Correttezza dei segnapostoSei pregato piuttosto d'aprire e modificare il file PO corrispondente. Salvandolo, il file MO sarà anch'esso aggiornato.Salva prima il file. Questa sezione non può essere modificata fino ad allora.PluraleTraduzioni della forma pluraleL'espressione delle forme plurali usata dal file è insolita per %s.Forme plurali:PoeditPoedit - Gestore cataloghiPoedit correggerà automaticamente il contenuto non valido nel file "%s".Poedit può tentare di riempire in nuove voci da sole traduzioni precedenti nel file o dalla tua memoria traduzione. Usa solo la MT potrebbe non essere molto efficace, se è quasi vuota, ma sarà meglio se si aggiungono altre traduzioni.Poedit non può visualizzare il codice sorgente in cui è usata la stringa, perché il file non è disponibile nel percorso indicato o è un riferimento simbolico che non punta ad un file reale.Poedit è un editor per traduzioni semplice da utilizzare.Poedit non è riuscito ad aprire il file “%sâ€.Pre-&traduci…Pre-traduzionePre-tradotta%u stringa pre-tradotta%u stringhe pre-tradottePretraduzione dalla memoria traduzione…Pre-traduzione in corso…La Pre-traduzione trova automaticamente nella memoria traduzione le corrispondenze esatte o da verificare per le stringhe non tradotte e le riempie con le loro traduzioni.La pre-traduzione richiede che sia disponibile il testo sorgente. Non funziona se vengono utilizzati solo ID senza il testo effettivo.La pre-traduzione richiede che la lingua del testo sorgente sia conosciuta. Poedit non è riuscito a rilevarlo in questo file.PreferenzePreferenze...Preferenze…Preparando le stringhe…Non modificare la formattazione dei fileForma plurale precedenteForma plurale precedenteTesto sorgente precedenteModificato precedentementeModificato precedentementeNome e versione del progetto:Nome del progetto:Progetto:ProgettiControlli di punteggiaturaRimuoviRimuovi le traduzioni eliminateEsciLa lettura del contenuto del file non è riuscita. Errore: %sFile recentiRipetiAggiornaRicarica il FileRicarica il fileRimanenti: %dRimuoviRimuovi traduzioni identiche a sorgenteRimuovi traduzioni identiche a sorgenteStringhe rimosseStringhe rimosseStringhe rimosse (non più usate):SostituisciSostituisci t&uttoSostituisci t&uttoStringa di sostituzioneSostituisci…Manca l'intestazione richiesta per i plurali.ResettaAzzera la memoria di traduzioneL'azzeramento della memoria eliminerà in modo irrimediabile tutte le traduzioni. Non puoi annullare questa operazione dopo averla eseguita.Rivela nel FinderRevisionaSalvaS&alva come…S&alva come…Salva ComunqueSalva comunqueSalva comeSalva come…Salva le modificheSalva fileIl salvataggio in una posizione diversa non è supportato per i file XCLOC.Schermate:Seleziona &tuttoSeleziona tuttoSeleziona i file TMX da importareSeleziona la cartellaSeleziona il file traduzioneSeleziona i file di traduzione da importareSeleziona il modello traduzioneSeleziona la lingua preferitaImposta linguaImposta linguaImpostazioniImpostazioni…Mostra barra lateraleVisualizza ortografia e grammaticaVisualizza barra di statoVisualizza &ID stringaVisualizza sostituzioni Mostra la barra degli strumentiMostra avvisiVisualizza in ExplorerVisualizza nella cartellaVisualizza/nascondi la barra lateraleVisualizza barra lateraleVisualizza barra di statoVisualizza &ID stringaMostra avvisiBarra lateraleAutenticatiDisconnettitiAccediAccedi a %sAccedi all'account cloudAccedi a CrowdinAccedi all'account cloudDisconnettiSingolareCopia/incolla rapidoTrattini velociCollegamenti rapidiVirgolette SmartOrdina per ordine &fileOrdina per &sorgenteOrdina per &traduzioneOrdina per ordine &fileOrdina per &sorgenteOrdina per &traduzioneCodifica dei caratteri del codice sorgente:Gli estrattori di codice sorgente vengono utilizzati per trovare stringhe di testo nei file di codice sorgente ed estrarle in modo che possano essere tradotte.Codice sorgente non disponibile.Codice sorgente non trovatoTesto sorgenteID testo sorgenteTesto sorgente — %sParole chiave sorgentiPercorsi dei sorgentiChiavi ricerca sorgentePercorsi sorgenteVoceIl controllo ortografico è disabilitato poiché il dizionario %s non è installato.Ortografia e GrammaticaAvvia parlatoFerma parlatoTraduzioni memorizzate:Contesto stringa: %sIdentificatore stringa: %sLunghezza della stringa in caratteriLunghezza stringa in caratteri: traduzione | sorgenteStringa da trovareI progetti Crowdin basati su stringhe non sono supportati.SostituzioniSuggerimentiI suggerimenti non sono disponibili se la lingua traduzione non è impostata correttamente. Anche altre caratteristiche, come i plurali, possono presentare dei problemi.Il segnaposto superfluo "%s" non è presente nel testo sorgente.Supporta tutti i linguaggi di programmazione riconosciuti dagli strumenti di GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript e altri).SincronizzaSincronizza con CrowdinSincronizza la traduzione con CrowdinSincronizzazioneErrore di sincronizzazioneSincronizzazione con Crowdin fallita.Errore di sintassi nell'intestazione delle forme plurali ("%s").MTFile TMXEstrai le stringhe da tradurre da un modello POT esistente.Nome e indirizzo email della squadra o URLSostituzione testoLa MT non contiene nessuna stringa simile al contenuto di questo file. È efficace per traduzioni semi-automatiche solo dopo che Poedit impara abbastanza dai file che hai tradotto manualmente.Il file TMX presenta anomalie.Le modifiche effettuate dall'altra applicazione saranno perse se salvi.Il file non può essere compilato nel formato MO e usato.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 correggerle se necessario.Impossibile salvare il file nella serie di caratteri “%s†come specificato nelle impostazioni traduzione. Invece, è stato salvato in UTF-8 e l'impostazione è stata modificata di conseguenza.Il file è stato modificato. Vuoi salvare le modifiche?Il file è in un formato non riconosciuto da Poedit.Il file è stato compilato nel formato MO, ma probabilmente non funzionerà correttamente.Il file è stato salvato e compilato nel formato MO, ma potrebbe non funzionare correttamente.Il file è stato salvato, ma non può essere compilato nel formato MO e utilizzato.Il file è stato correttamente salvato.Il file %s non può essere aperto.Il file %s non può essere salvato.Il file “%s†è stato modificato da un'altra applicazione.Il vecchio testo sorgente (prima della modifica durante un aggiornamento) che corrisponde alla traduzione non verificata.Il modo più semplice per compilare questo file con le traduzioni è aggiornarlo da un POT:La traduzione non inizia con uno spazio.La traduzione termina con un fine riga, ma non il testo sorgente.La traduzione termina con uno spazio, ma non il testo sorgente.La traduzione termina con "%s", ma il testo sorgente termina con "%s".Manca un fine riga alla fine della traduzione.Manca uno spazio alla fine della traduzione.La traduzione è pronta all'uso, ma la voce %d non è ancora tradotta.La traduzione è pronta all'uso, ma le voci %d non sono ancora tradotte.La traduzione è pronta per l'uso.La traduzione dovrebbe terminare con "%s".La traduzione non dovrebbe terminare con "%s".La traduzione dovrebbe iniziare come una frase.La traduzione dovrebbe iniziare con un carattere minuscolo.La traduzione inizia con uno spazio, ma non il testo sorgente.Le traduzioni erano state segnate come non verificate, perché non accurate. Devi verificarne la correttezza.Non ci sono traduzioni, questo è strano.Si è verificato un problema nella formattazione del file (ma è stato salvato correttamente)Si è verificato un errore durante il caricamento delle traduzioni in Localazy.Si sono verificati degli errori caricando il file. Alcuni dati potrebbero mancare o esser corrotti come risultato.Queste impostazioni influenzano la formattazione interna dei file PO. Modificale se hai requisiti specifici, ad esempio a causa del controllo versione.Questo file JSON non è un file traduzioni e non può essere modificato in Poedit.Questa azione eliminerà tutte le traduzioni che corrispondono esattamente al testo di origine. Questo non può essere annullato.Questo file contiene voci con forme plurali, ma non ha un'intestazione delle Forme Plurali configurata.Questo file utilizza ID stringa invece del testo sorgente. Poedit può caricare testi in inglese dal file “%sâ€.Questo è il comando usato per avviare l'estrattore. %o rappresenta il nome del file in uscita, %K l'elenco delle parole chiave, %F l'elenco dei file di input, %C l'opzione dell'insieme di caratteri (vedi sotto).Nella memoria traduzione è stata trovata questa stringa.Verrà aggiunto alla riga di comando solo se è specificato il set di caratteri del sorgente. %c rappresenta il valore del set di di caratteri.Verrà aggiunto alla riga di comando un volta per ogni file di input. %f rappresenta il nome del file.Sarà accodato alla riga di comando una volta per ogni parola chiave. %k rappresenta la parola chiave.TotaleTrasformazioniLe voci traducibili non sono aggiunte manualmente al sistema Gettext, ma sono estratte automaticamente dal codice sorgente. In questo modo, rimangono aggiornate e accurate. I traduttori usano tipicamente i file di modello PO (POT) preparati per loro dallo sviluppatore.Traduci progetto cloudTradotti: %d di %d (%d %%)TraduzioneLingua della traduzioneMemoria di traduzione (TM)La traduzione richiede una &verificaProprietà della traduzioneIl file di traduzione è già aggiornato, non sono state apportate modifiche alle stringe.Il file di traduzione è stato aggiornato con %s modifica.Il file di traduzione è stato aggiornato con %s modifiche.Il database della memoria traduzione è danneggiato: %s (%d).Errore nella memoria traduzione: %s (%d).La traduzione richiede una &verificaProprietà traduzioneSuggerimenti traduzioneI suggerimenti traduzione richiedono che sia disponibile il testo sorgente. Non funzionano se vengono utilizzati solo ID senza il testo effettivo.I suggerimenti traduzione richiedono che la lingua del testo sorgente sia conosciuta. Poedit non è stato in grado di rilevare la lingua in questo file.Traduzione — %sImpossibile aggiornare le traduzioni dal codice sorgente, perché non è stato trovato alcun codice nella posizione specificata nelle Proprietà del file.DueUTF-8 (consigliato)AnnullaContenuto inaspettatamente mancante nel file XCLOC.Si è verificata un'eccezione non gestita: %sUnix (consigliato)Errore Crowdin sconosciuto.Errore sconosciutoNon tradotteAggiornamentoAggiorna riassuntoAggiorna tuttoAggiorna tutti i cataloghi nel progettoAggiornare tutti i cataloghi in questo progetto?Aggiorna da file &POT…Aggiorna da file &POT…Aggiorna dal codiceAggiorna da file POTAggiorna dal codiceAggiorna dal codice sorgenteAggiorna riepilogoAggiornamentiAggiornamento non riuscitoAggiornamento cataloghi progettoAggiornamento traduzioniAggiornamento informazioni utente…Caricamento traduzioni in '%s' non riuscito.Caricamento traduzioni in %s…Aggiornamento traduzioni…Usa espressione personalizzataFont personalizzato per gli elenchi:Usa un carattere personalizzato per i campi di testo:Usa regole predefinite per questa linguaUsa queste parole chiave (nomi delle funzioni) per riconoscere le stringhe traducibili nei file sorgenti:Usa la memoria di traduzioneVerificaRisultati della convalidaVersione %sVedi dettagli…Vedi dettagli…Autenticazione…Avviso: Benvenuto in PoeditQuando aggiorni dai sorgentiSolo parole intereFinestraWindowsVuoi usare l'inglese per il testo sorgente?Torna su se raggiungi la fineA capo a:File di traduzione XLIFFCatalogo localizzazione XcodeSìPuoi anche estrarre stringhe da tradurre direttamente dal codice sorgente:Impossibile trascinare più file nella finestra di Poedit.Non hai le autorizzazioni per leggere i file di codice sorgente dalla posizione specificata nelle Proprietà del file.Riavvia Poedit affinché questo cambiamento abbia effetto.Il tuo nomeLe modifiche saranno perse se non le salvi.Il tuo nome e indirizzo email sono usati solo per impostare l'intestazione dell'ultimo traduttore dei file GNU gettext.ZeroIngrandisciNecessita Verificanon eliminare i file temporanei (per il debug)esempio. nplurals=2; plural=(n > 1);errore: corrispondenza parziale nel filevai all'elemento al numero di riga datogestisce un URI poedit://Alt+Ctrl+GiùInvioSinistraDestraMaiusc+SualtctrlmaiuscInformaz. su %sNascondi %sNascondi altriPreferenze...Esci da %sServiziMostra tuttopre-traduci dalla MTlingua sconosciutaversione non supportata (%s)avviso: you@example.com"%s" non è un file POT valido.poedit-3.6.3/locales/tg.po0000644000175100001660000030111615011674230011066 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Tajik\n" "Language: tg_TJ\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: tg\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Хабари огоҳии зеринро пинҳон кунед" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ðз нав намоиш надодан" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ðз нав намоиш надодан" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "ХулоÑаи навÑозӣ" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Пӯшидан" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Файл" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Сатрҳои нав" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Ҷамъкунии файлҳои манбаъ…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "" #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Рамзи барнома даÑÑ‚Ð½Ð¾Ñ€Ð°Ñ Ð°ÑÑ‚." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "ДаÑтраÑÓ£ манъ аÑÑ‚." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Ðгар шумо қаблан ба файлҳои худ даÑтраÑиро манъ кардед, шумо метавонед ба " "онҳо дар ХуÑуÑиÑтҳои низом > ÐмниÑÑ‚ ва махфиÑÑ‚ > МахфиÑÑ‚ > Файлҳо ва " "ҷузвадонҳо иҷозат диҳед." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Муттаҳидшавии фарқиÑтҳо…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Сарлавҳаи бадшакл: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Файлҳои тарҷумавии PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Қолибҳои тарҷумавии POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Файлҳои тарҷумавии XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Ҳамаи файлҳои тарҷума" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Файли “%s†танҳо барои хондан аÑÑ‚ ва нигоҳ дошта намешавад.\n" "Лутфан, онро бо номи дигар нигоҳ доред." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Файли %s нигоҳ дошта нашуд." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "" #: src/catalog_po.cpp:134 #, 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[1] "%i Ñатри файли “%s†ба таври дуруÑÑ‚ бор нашудааÑÑ‚." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Сатри %d дар файли “%s†вайрон шудааÑÑ‚ (Ñанаи %s беÑътибор аÑÑ‚)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Барои шаклÑозии хуби файли зерин мушкилиҳо пайдо шудаанд (аммо он хуб нигоҳ " "дошта шуд)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†файли POT-и боÑътимод неÑÑ‚." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Қайди вайроншуда дар Ñатри тарҷумавӣ." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Лоиҳа:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Забон:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Дар ҳоли боргирии тарҷумаҳои навтарин…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "ҲамоҳангÑозӣ" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Хатои ҳамоҳангÑозӣ" #: src/commentdlg.cpp:48 msgid "Add" msgstr "" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Ворид нашуд, лутфан аз нав ворид шавед." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Боргирии тарҷумаҳо барои ин лоиҳа ғайрифаъол шуд." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Ворид шудан" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Ворид шудан" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Баромадан" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Баромадан" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Маълумоти бештар дар бораи Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Дар ҳоли интизори Ñанҷиши ҳаққониÑт…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Дар ҳоли навÑозии маълумоти корбар…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Ворид шудан ба Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "ҲамоҳангÑозӣ бо Crowdin иҷро нашуд." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Хатои Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Дар ҳоли боркунии тарҷумаҳо…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&ÐуÑха бардоштан" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Маълумоти бештар" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Кумак" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Файлҳои MO метавонанд дар Poedit бевоÑита таҳрир карда шаванд." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Хатои кушодани файл" #: src/edapp.cpp:735 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 низ навÑозӣ карда мешавад." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "файлҳои муваққатиро неÑÑ‚ накунед (барои иÑлоҳи нуқÑонҳо)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "коркарди poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "гузариш ба мавод дар рақами Ñатри лозимӣ" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Ðлоқа бо раванди Poedit қатъ шуд." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "ИÑтиÑнои иҷронашуда ба амал омад: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Файли нодуруÑÑ‚" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Барномаи Poedit барои тарҷумаи файлҳо хеле оÑон аÑÑ‚." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Шумо зиёда аз Ñк файл ба равзанаи Poedit гузошта наметавонед." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Файли “%s†файли тарҷумавӣ намебошад." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Файли “%s†вуҷуд надорад." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Барномаи Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Тафтиши имло ғайрифаъол аÑÑ‚, зеро ки луғат барои %s наÑб нашудааÑÑ‚." #: src/edframe.cpp:871 msgid "Install" msgstr "ÐаÑб кардан" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" #: src/edframe.cpp:968 msgid "Ignore" msgstr "" #: src/edframe.cpp:968 msgid "Reload File" msgstr "" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Ðигоҳ доштани тағйирот" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Тағйироти шумо гум мешаванд, агар онҳоро нигоҳ надоред." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Ðигоҳ доштан" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Ðигоҳ надоштан" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ðигоҳ надоштан" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Бекор кардан" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Ðигоҳ доштан ҳамчун…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Ð¢Ð°Ò³Ð¸Ñ ÐºÐ°Ñ€Ð´Ð°Ð½â€¦" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Файлҳои тарҷумавии таҳиÑшуда" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Файлҳои HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "ÐавÑозӣ иҷро нашуд" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "ÐавÑозӣ аз файли &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "ÐавÑозӣ аз файли &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d маÑъалаи тарҷума пайдо шудааÑÑ‚." msgstr[1] "%d маÑъалаи тарҷума пайдо шудааÑÑ‚." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Ðатиҷаҳои Ñанҷиш" #: src/edframe.cpp:1842 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 "" "Тарҷумаҳои хато бо ранги Ñурх дар рӯйхат қайд карда шудаанд. ТафÑилоти " "хатоҳо бо интихоби Ñатри тарҷумаи хато намоиш дода мешаванд." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Файл бо муваффақиÑÑ‚ нигоҳ дошта шуд." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Файли тарҷумашуда бо муваффақиÑÑ‚ нигоҳ дошта шуд ва ба шакли МО табдил ёфт, " "вале мумкин он дуруÑÑ‚ кор намекунад." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Файли шумо бехатар захира шудааÑÑ‚, аммо ба формати МО барои иÑтифода Ñохта " "намешавад." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Ин файл ба формати MO табдил шудааÑÑ‚, вале метавонад дуруÑÑ‚ кор накунад." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Файл ба формати MO табдил дода намешавад ва иÑтифода намешавад." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Ягон хато дар тарҷума ёфт нашудааÑÑ‚." #: src/edframe.cpp:1894 #, 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] "" "Тарҷума барои иÑтифода тайёр аÑÑ‚, вале %d Ñатр то ҳол тарҷума нашудааÑÑ‚." msgstr[1] "" "Тарҷума барои иÑтифода тайёр аÑÑ‚, вале %d Ñатр то ҳол тарҷума нашудаанд." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Тарҷума барои иÑтифода тайёр аÑÑ‚." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit муҳтавои беÑътиборро дар файли “%s†иÑлоҳ кард." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Файл дорои объктҳои Ñкхела мебошад, ки барои файлҳои PO мутобиқат намекунанд " "ва иÑтифодабарии файлро қатъ мекунанд. Poedit мушкилиро иÑлоҳ кард, вале " "шумо боÑд тарҷумаҳои қайдшударо аз назар гузаронед ва дар ҳолати лозимӣ " "онҳоро иÑлоҳ намоед." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Забони тарҷума танзим карда нашуд." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Танзими забон" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Интихоби забон" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Ðгар забони тарҷумаҳо нодуруÑÑ‚ танзим карда бошад, пешниҳодҳо даÑÑ‚Ð½Ð¾Ñ€Ð°Ñ " "мешаванд. ХуÑуÑиÑтҳои дигар, монанди шакли ҷамъ, метавонанд таъÑир раÑонанд." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Забони тарҷума ва забони манбаъ баробаранд." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "ИÑлоҳ кадани забон" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "ИÑлоҳ кадани забон" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Сарлавҳаи шакли ҷамъ лозим аÑÑ‚." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Хатои ÑинтакÑиÑÓ£ дар шакли ҷамъи Ñарлавҳа (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Сарварақро иÑлоҳ кунед" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Тафтиш" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "%d аз %d (%d %%) тарҷума шуд" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Дар ҳоли ивази номи: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d хато" msgstr[1] "%d хато" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d вуруд" msgstr[1] "%d вуруд" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (нигоҳ дошта нашуд)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (тағйирёфта)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Ҳофизаи тарҷума навÑозӣ нашуд: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Ðигоҳ доштан" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Пок кардани тарҷумаҳои неÑтшуда" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "" "Оё шумо мехоҳед, ки ҳамаи тарҷумаҳоеро, ки дигар иÑтифода намешаванд, неÑÑ‚ " "кунед?" #: src/edframe.cpp:2879 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 "" "Ðгар тоза карданро идома диҳед, ҳама тарҷумаҳои ҳамчун неÑÑ‚ карда, бе " "бозгашт неÑÑ‚ мешаванд. Ðгар онҳо дар оÑнда баргашта илова шаванд, шумо " "онҳоро дигар тарҷума карда наметавонед." #: src/edframe.cpp:2883 msgid "Purge" msgstr "ПокÑозӣ" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "ÐуÑха бардоштан аз матни Ñатри аÑлӣ" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "ÐуÑха бардоштан аз матни Ñатри аÑлӣ" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Тоза кардани тарҷума" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Тоза кардани тарҷума" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Таҳрир кардани шарҳ" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Таҳрир кардани шарҳ" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Пинҳон кардани навори ҷонибӣ" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Ðамоиш додани навори ҷонибӣ" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Пинҳон кардани навори вазъиÑÑ‚" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Ðамоиш додани навори вазъиÑÑ‚" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Матни Ñатри аÑлӣ" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Шумораи танҳо" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Шумораи ҷамъ" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Тарҷума" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Тарҷумаи пешакӣ" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Бозбинӣ лозим аÑÑ‚" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Бозбинӣ лозим аÑÑ‚" #: src/editing_area.cpp:566 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-и наверо дар аÑоÑи қолиб Ñҷод кунед." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Ðз нав тарҷума кардан" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Ҳама" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Шакли %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Шакли %i (иÑтифоданашуда)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Сифр" #: src/editing_area.cpp:788 msgid "One" msgstr "Як" #: src/editing_area.cpp:790 msgid "Two" msgstr "Ду" #: src/editing_area.cpp:804 msgid "Other" msgstr "Дигар" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Формати %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Формати %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Тарҷума — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "Рақам" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Матни манбаъ — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "забони номаълум" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Муттаҳид кардани файлҳои gettext баргузор нагашт." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Кушодан дар муҳаррир" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Кушодан дар муҳаррир" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "ҶуÑтуҷӯ" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Ҷойгузин кардан" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Имконот" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Рад кардани ҳарфҳои хурду калон" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "ҶуÑтуҷӯи даврӣ" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Танҳо калимаҳои пурра" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Ðфтан дар матнҳои манбаъ" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "ҶуÑтуҷӯ дар тарҷумаҳо" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "ҶуÑтуҷӯ дар шарҳҳо" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Ҳамаро ҷойгузин &кардан" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Ҳамаро ҷойгузин &кардан" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Ҷойгузин кардан" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Қаблӣ" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Ðавбатӣ >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Сатр барои ёфтан" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Сатри ҷойгузорӣ" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Забони тарҷума" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Забони тарҷума:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Мудири файлҳо - Poedit" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Таҳрир кардан…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Эҷод кардани лоиҳаи тарҷумаи нав" #: src/manager.cpp:145 msgid "Delete the project" msgstr "ÐеÑÑ‚ кардани лоиҳа" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Таҳрири лоиҳа" #: src/manager.cpp:176 msgid "Update all" msgstr "ҶадидÑозии ҳама" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Ҳамаи файлҳоро дар ин лоиҳа навÑозӣ кунед" #: src/manager.cpp:378 msgid "Total" msgstr "Ҳамагӣ" #: src/manager.cpp:379 msgid "Untrans" msgstr "Тарҷуманашуда" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Бозбинӣ лозим аÑÑ‚" #: src/manager.cpp:381 msgid "Errors" msgstr "Хатоҳо" #: src/manager.cpp:382 msgid "Last modified" msgstr "Санаи тағйири охирин" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Интихоби ҷузвдон" #: src/manager.cpp:433 msgid "Directories:" msgstr "ФеҳриÑтҳо" #: src/manager.cpp:503 msgid "" msgstr "<беном>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "" #: src/manager.cpp:540 msgid "Delete project" msgstr "" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" #: src/manager.cpp:571 msgid "Confirmation" msgstr "ТаÑдиқ" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Санҷиши навÑозиҳо…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Мудири файлҳои тарҷума" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Танзимот…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Таҳрир" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Ботил Ñохтан" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Дубора анҷом додан" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Гузоштан мувофиқи Ñабк" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "ÐеÑÑ‚ кардан" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Санҷиши имло ва даÑтури забон" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Ðамоиши Ñанҷиши имло ва даÑтури забон" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Санҷиши ҳуҷҷат" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Санҷиши имло ҳангоми навиÑ" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Санҷиши имлои тарҷума" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Санҷиши имло ба таври худкор" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Ивазкуниҳо" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Ðамоиши ивазкуниҳо" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "ÐуÑха бардоштан/гузоштани ҳушманд" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Ðохунакҳои ҳушманд" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Тирегузории ҳушманд" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Пайвандҳои ҳушманд" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Ивазкунии матн" #: src/menus.cpp:230 msgid "Transformations" msgstr "Табдилдиҳӣ" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Табдил ба ҳарфҳои хурд" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Табдил ба ҳарфҳои хурд" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Ҳарфҳои калон" #: src/menus.cpp:237 msgid "Speech" msgstr "Ðутқ" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Оғоз кардани нутқ" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Манъ кардани нутқ" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Ðамоиш" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Ðамоиш додани навори абзор" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Фармоиш додани навори абзор…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Кушодан дар Ñкрани пурра" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Равзана" #: src/menus.cpp:263 msgid "Minimize" msgstr "Ҳадди ақал Ñохтан" #: src/menus.cpp:264 msgid "Zoom" msgstr "Интихоби андоза" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Хуш омадед ба Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Ҳамаро ба пеш гузоред" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Маълумот дар бораи тарҷумон" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Ðом:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Ðоми шумо" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Почтаи Ñлектронӣ:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ðом ва почтаи Ñлектронии шумо танҳо барои намоиш додани тарҷумони охирин дар " "Ñарлавҳаҳои файлҳои GNU gettext иÑтифода мешаванд." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Таҳриркунӣ" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "ОмодаÑозии файли MO ба таври худкор ҳангоми захиракунӣ" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Санҷиши имло" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Доимо тағйир додани маркази диққат ба ҳошиÑи матнгузорӣ" #: src/prefsdlg.cpp:211 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 "" "Ба рӯйхати Ñатр ҳаргиз нагузоред, ки маркази диққатро ишғол кунад. Ðгар " "фаъол бошад, шумо боÑд Ctrl-ақрабаки идора кардан аз клавиатура иÑтифода " "баред, аммо шумо инчунин имкони ворид кардани матнро бе заруриÑти пахш " "кардани Tab барои тағйироти маркази диққат доред." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Ðамуди зоҳирӣ" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "ИÑтифодаи шрифти фармоишӣ:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "ИÑтифодаи шрифти фармоишӣ барои майдонҳои вуруди матн:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Иваз кардани забони интерфейÑ" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 Ñ‘ верÑиÑи навтарро талаб мекунад)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Умумӣ" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "ИÑтифодаи ҳофизаи тарҷумаҳо" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Идора…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Ҳангоми навÑозӣ аз манбаъҳо" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "мувофиқати монанд дар дохили файл" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "тарҷумаи пешакӣ аз TM" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit метавонад тарҷумаҳои навро танҳо аз тарҷумаҳои пешакӣ аз дохили файл " "Ñ‘ ин ки аз ҳофизаи тарҷумаҳо пешниҳод кунад. ИÑтифодаи TM (ҳофизаи " "тарҷумаҳо) бефоида аÑÑ‚, агар он холӣ бошад, вале агар шумо ба TM тарҷумаҳои " "зиёдро илова кунед, ҳофизаи тарҷумаҳо ба шумо биÑёр Ñамаранокии ҳақиқӣ " "меорад." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Тарҷумаҳои захрашуда:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Ðндозаи пойгоҳи иттилоотӣ дар диÑк:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Ворид намудани файлҳои тарҷумавӣ…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Ворид намудани файлҳои тарҷумавӣ…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Ворид намудан аз TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Ворид намудан аз TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Баровардан ба TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Баровардан ба TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Танзими дубора" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Интихоби файлҳо барои тарҷума" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Интихоби файлҳои TMX барои воридот" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Файлҳои TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Воридкунии тарҷумаҳо…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Содир кардан ҳамчун…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Содиркунии тарҷумаҳо…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Содиркунии ҳофизаи тарҷумаҳо аз “%s†иҷро нашуд." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Дубора танзим кардани ҳофизаи тарҷумаҳо" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Шумо мутмаин ҳаÑтед, ки мехоҳед ҳофизаи тарҷумаро дубора танзим кунед?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "ПокÑозии тарҷумаҳо аз ҳофизаи тарҷумаҳо ҳамаи тарҷумаҳоро бебозгашт неÑÑ‚ " "мекунад. Ин амал ботил Ñохта намешавад." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Ҳофизаи тарҷума" #: src/prefsdlg.cpp:730 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 "" "ВаÑилаи барориши манбаи рамз барои ёфтани Ñатрҳои тарҷумашаванда ва " "баровардани онҳо барои тарҷума иÑтифода мешавад." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Интихоби тарзи барориш:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Интихоби тарзи барориш:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Ҳамаи забонҳои барномарезиеро, ки аз ҷониби абзорҳои GNU gettext (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript ва ғайра) шинохта мешаванд, даÑтгирӣ " "менамоÑд." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "ÐеÑÑ‚ кардани ваÑилаи барориш" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Шумо мутмаин ҳаÑтед, ки мехоҳед ваÑилаи барориши “%sâ€-ро неÑÑ‚ кунед?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "ВаÑилаи барориш" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "ҲиÑобҳо" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Санҷиши худкори навÑозиҳо" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Иловаи верÑиÑҳои бета" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "ВерÑиÑҳои бета хуÑуÑиÑтҳои нав ва такмилҳоро дар бар мегиранд, вале " "метавонанд каме ноуÑтувор бошанд." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "ÐавÑозиҳо" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Танзимоти мазкур ба форматгузории дохирии файлҳои PO таъÑир мераÑонад. Ðгар " "шумо талаботи махÑÑƒÑ Ð´Ð¾ÑˆÑ‚Ð° бошед, маÑалан ба Ñабаби идоракунии верÑиÑ, " "онҳоро Ð¼Ð¾Ñ ÐºÑƒÐ½ÐµÐ´." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Ðнҷоми Ñатрҳо:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (тавÑÐ¸Ñ Ð¼ÐµÑˆÐ°Ð²Ð°Ð´)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Гузарондан:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "ИÑтифодаи қолаббандӣ аз файлҳои мавҷудбуда" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Иловагӣ" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Тарҷумаи пешакии %u Ñатр" msgstr[1] "Тарҷумаи пешакии %u Ñатр" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Дар ҳоли тарҷумаи пешакӣ…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d Ñатр пешакӣ тарҷума карда шуд." msgstr[1] "%d Ñатр пешакӣ тарҷума карда шуд." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Тарҷумаҳо ҳамчун \"Бозбини лозим аÑÑ‚\" қайд карда шудаанд, зеро ки онҳо " "метавонанд ноÑаҳеҳ бошанд. Шумо боÑд онҳоро барои Ñанҷиши хатоҳо аз назар " "гузаронед." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Ягон Ñатр пешакӣ тарҷума карда намешавад." #: src/pretranslate.cpp:218 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) Ñгон пешниҳоди мувофиқро барои Ñатрҳои ин файл дар " "бар намегирад. TM-и ҷорӣ танҳо тарҷумаҳои ҷузъӣ ба таври худкор пешниҳод " "мекунад, баъд аз оне ки Poedit тарҷумаҳоро аз файлҳои қаблӣ ҷамъ кунад." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Тарҷумаи пешакӣ" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Ворид кардани танҳо мутобиқати аниқ" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Мутобиқатҳои аниқро ҳамчун \"Бозбинӣ лозим аÑÑ‚\" қайд накунед" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Фаъол кунед, танҳо агар ба ТМ-и худ Ñътимод дошта бошед. Ба Ñутари пешфарз, " "ҳамаи мутобиқатҳо аз ТМ ҳамчун \"Бозбинӣ лозим аÑÑ‚\" ишора карда мешаванд ва " "боÑд пеш аз иÑтифода аз назар гузаронида шаванд." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Тарҷумаи пешакӣ мувофиқатҳои аниқ Ñ‘ монандро аз ҳофизаи тарҷума барои " "Ñатрҳои тарҷуманашуда ҷуÑтуҷӯ мекунад ва пешниҳод менамоÑд." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Илова кардани ҷузвдонҳо…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Илова кардани ҷузвдонҳо…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Илова кардани файлҳо…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Илова кардани файлҳо…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Илова кардани аломатҳо…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Илова кардани аломатҳо…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "МаÑирҳо" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "МаÑирҳои иÑтиÑношуда" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Танзимоти иловагии барориш" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Баровардани тавзеҳот барои тарҷумонон аз:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Шарҳҳо бо пешванди:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Ҳамаи шарҳҳо" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Байрақчаҳои иловагии xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Калидвожаҳои иловагӣ" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Ðоми лоиҳаи тарҷума барои" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Ðоми даÑта ва нишонии почтаи Ñлектронӣ Ñ‘ нишонии Ñомони" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "маÑалан, nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (тавÑÐ¸Ñ Ð¼ÐµÑˆÐ°Ð²Ð°Ð´)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Лутфан, аввал файлро нигоҳ доред. То он гоҳ ин қиÑмат таҳрир карда намешавад." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Ðа ҳамаи Ñатрҳои шакли ҷамъ тарҷума шудаанд." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Тарҷума боÑд ҳамчун ҷумла Ñар шавад." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Тарҷума боÑд бо ҳарфи хурд Ñар шавад." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Тарҷума бо фоÑила Ñар нашуд." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Тарҷума бо фоÑила Ñар шуд, вале матни аÑлӣ фоÑила надорад." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Тарҷума дар охири матн Ñатри нав надорад." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" "Тарҷума дар охири матн Ñатри нав дорад, вале матни аÑлӣ Ñатри нав надорад." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Тарҷума дар охири матн фоÑила надорад." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Тарҷума дар охири матн фоÑила дорад, вале матни аÑлӣ фоÑила надорад." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Тарҷума боÑд бо “%s†ба анҷом раÑад." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Тарҷума боÑд бо “%s†ба анҷом нараÑад." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Тарҷума бо “%s†ба анҷом мераÑад, вале матни аÑлӣ “%s†надорад." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Шарҳ:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&ÐеÑÑ‚ кардан" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Таҳрир кардани лоиҳа" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Ðоми лоиҳа:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Тамошо кардан" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Илова кардани Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð±Ð° рӯйхат" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Хуб" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Файл" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Ðав…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Ðав аз файли &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Ðав аз файли &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Кушодан…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Кушодани файлҳои охирин" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Мудири &файлҳои тарҷума" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Мудири &файлҳои тарҷума" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Пӯшидан" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Ðигоҳ доштан" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "&Ðигоҳ доштан ҳамчун…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "&Ðигоҳ доштан ҳамчун…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Ð¢Ð°Ò³Ð¸Ñ ÐºÐ°Ñ€Ð´Ð°Ð½Ð¸ файли MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Санҷидани навÑозиҳо…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Танзими барнома" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Баромад" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Баромад" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "ÐуÑха бардоштан аз шумораи танҳо" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "ÐуÑха бардоштан аз Шумораи танҳо" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Бозбинии тарҷума &лозим аÑÑ‚" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Бозбинии тарҷума &лозим аÑÑ‚" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "&Таҳрир кардани шарҳ" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "&Таҳрир кардани шарҳ" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Пешниҳодҳо" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Ðфтан…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Ҷойгузин кардан…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "ҶуÑтуҷӯи навбатӣ" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "ҶуÑтуҷӯи қаблӣ" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Ðфтан ва ҷойгузин кардан…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "ҶуÑтуҷӯи навбатӣ" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "ҶуÑтуҷӯи қаблӣ" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Ðамоиш додани рақами &Ñатр" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Ðамоиш додани рақами &Ñатр" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Ðамоиш додани огоҳиҳо" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Ðамоиш додани огоҳиҳо" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Ðз рӯи &тартиби файлҳо" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Ðз рӯи &тартиби файлҳо" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Ðз рӯи &Ñатрҳои аÑлӣ" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Ðз рӯи &Ñатрҳои аÑлӣ" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Ðз рӯи &тарҷумаҳо" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Ðз рӯи &тарҷумаҳо" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Гурӯҳбандӣ аз рӯи қарина" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Гурӯҳбандӣ аз рӯи қарина" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Пеш аз ҳама Ñабтҳоро бо хатоҳо намоиш диҳед" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Пеш аз ҳама Ñабтҳоро бо хатоҳо намоиш диҳед" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Ðввал Ñатрҳои тарҷуманашуда" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Ðввал Ñатрҳои тарҷуманашуда" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Ðамоиш додани навори ҷонибӣ" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Ðамоиш додани навори вазъиÑÑ‚" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&ÐавÑозӣ аз манбаи рамз" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&ÐавÑозӣ аз манбаи рамз" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Ҳамоҳанг кардан бо Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "&Тарҷумаи пешакӣ…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "Санҷиши тарҷума" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Санҷиши тарҷума" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Пок кардани тарҷумаҳои неÑтшуда" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Пок кардани тарҷумаҳои неÑтшуда" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&ХуÑуÑиÑтҳо…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Гузаштан" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Татбиқ кардан ва ба Ñатри дигар гузарондан" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Татбиқ кардан ва ба Ñатри дигар гузарондан" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Тарҷумаи қаблӣ" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Тарҷумаи қаблӣ" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Тарҷумаи навбатӣ" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Тарҷумаи навбатӣ" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "&Тарҷуманашудаи пешина" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "&Тарҷуманашудаи пешина" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "&Тарҷуманашудаи навбатӣ" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "&Тарҷуманашудаи навбатӣ" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Шумораи ҷамъи қаблӣ" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Шумораи ҷамъи қаблӣ" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Шумораи ҷамъи навбатӣ" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Шумораи ҷамъи навбатӣ" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Кумаки онлайн" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Кумаки онлайн" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&Кумаки GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&Кумаки GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Дар бораи Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Дар бораи PoEdit" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Танзими ваÑилаи барориш" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "" "Рӯйхати дарозкунии муддат бо нуқта-вергулҳо ҷудо карда мешаванд (миÑол " "*.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "ДархоÑÑ‚:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Фармон барои баровардани тарҷумаҳо:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ин фармон барои оғози ваÑилаи барориш иÑтифода мешавад.\n" "%o бо номи файли барориш, %K бо рӯйхати калимаҳои\n" "калидӣ, %F бо рӯйхати файлҳои вуруд,\n" "%C бо байрақи маҷмӯаи ҳарфҳо (поёнтар бинед) ваÑеъ карда мешавад." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Илова кардани объект ба рӯйхати калидвожаҳо:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Мазкур ба Ñатри фармонӣ Ñк бор барои ҳар Ñк\n" "калимаи калидӣ замима карда мешавад.\n" "%k ба калимаи калидӣ ваÑеъ мекунад." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Объект дар рӯйхати файлҳои вурудӣ:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Мазкур ба Ñатри фармонӣ Ñк бор барои ҳар Ñк\n" "файли вурудӣ замима карда мешавад.\n" "%f ба номи файл ваÑеъ мекунад." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Рамзгузории Ñатрҳои аÑлӣ:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Мазкур ба Ñатри фармонӣ замима карда мешавад.\n" "бо шарте, ки агар рамзгузории Ñатри аÑлӣ дода шуда бошад.\n" "%c бо воҳиди рамзгузорӣ иваз карда мешавад." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "ХуÑуÑиÑтҳои тарҷума" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Ðоми лоиҳа ва верÑиÑ:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "ДаÑтаи забон:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Шаклҳои ҷамъ:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "ИÑтифодаи қоидаҳои пешфарз барои ин забон" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "ИÑтифодаи ибораҳои шахÑÓ£" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Маълумоти бештар дар бораи шаклҳои ҷамъ" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Рамзгузорӣ:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Танзимоти иловагии барориш…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Танзимоти иловагии барориш…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "ХуÑуÑиÑтҳои тарҷума" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "МаÑирҳои манбаъҳо" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "МаÑирҳои Ñатрҳои аÑлӣ" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Баровардани матн аз файлҳои манбаъ дар ҷузвдонҳои зерин:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "МаÑири аÑоÑÓ£:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Калидвожаҳои манбаъҳо" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Луғати Ñатрҳои аÑлӣ" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "ИÑтифодаи калидвожаҳои зерин (номҳои Ñупориш) барои шинохтани\n" "Ñатрҳои тарҷумашаванда дар файлҳои манбаъ:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Инчунин аз калидвожаҳои пешфарз барои забонҳои даÑÑ‚Ñ€Ð°Ñ Ð¸Ñтифода баред" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Маълумоти бештар дар бораи калидвожаҳои gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Санҷиш" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Санҷиши хатогиҳо дар тарҷума" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "ÐавÑозӣ кардан аз рамз" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "ÐавÑозӣ кардан аз рамз" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "ÐавÑозӣ аз манбаи рамз" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Ðавори ҷонибӣ" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Ðамоиш додан Ñ‘ пинҳон кардани навори ҷонибӣ" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Матни манбаи куҳна (пеш аз тағйир ҳангоми навÑозӣ), ки ба тарҷумаҳои ноÑаҳеҳ " "тааллуқ дорад." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "" #: src/sidebar.cpp:196 msgid "Comment" msgstr "" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Илова кардани шарҳ" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Илова кардани шарҳ" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "ÐеÑÑ‚ кардан аз ҳофизаи тарҷума" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "ÐеÑÑ‚ кардан аз ҳофизаи тарҷума" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Ягон мутобиқат ёфт нашуд" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Ягон мутобиқат ёфт нашуд" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Ин тарҷума аз ҳофизаи тарҷумаҳои Poedit ворид карда шуд." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Барнома иҷро карда намешавад: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Файли TMX дорои ҳакли нодуруÑÑ‚ мебошад." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Пойгоҳи иттилоотии ҳофизаи тарҷумаҳо вайрон аÑÑ‚: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Хатои ҳофизаи тарҷумаҳо: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(ИÑтифодаи забони аÑоÑÓ£)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Интихоби забон" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Забони дилхоҳро интихоб кунед" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Барои татбиқ кардани тағйирот, шумо боÑд барномаро аз нав оғоз кунед." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "ДиректориÑи муваққатӣ Ñҷод карда нашуд." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Ягон тарҷума вуҷуд надорад. Ин ғайриоддӣ аÑÑ‚." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "ÐавÑозӣ кардан аз POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Сатрҳоро барои тарҷума аз қолиби POT-и мавҷудбуда иÑтифода баред." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Шумо инчунин метавонед Ñатрҳоро барои тарҷума аз рамзи манбъ бевоÑита " "бароред:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Баровардан аз манбаҳо" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Баровардани рамзи манбаро дар Танзимот танзим кунед." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Барориши %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "ҲамоҳангÑозӣ" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "ҲамоҳангÑозии тарҷума бо Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Дар бораи %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "ХуÑуÑиÑтҳои %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Дар бораи %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Хидматҳо" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Пинҳон кардани %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Дигаронро пинҳон кардан" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Ҳамаро намоиш додан" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Пӯшидани %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "ХуÑуÑиÑтҳо…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Танзимот..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Танзимот..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Татбиқ кардан" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Татбиқ кардан" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Бозгашт" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Бозгашт" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Бекор кардан" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Пок кардан" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Пок кардан" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "ÐуÑха бардоштан" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Буридан" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Буридан" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Таҳрир" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Баромад" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Кумак" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Ðав" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Ðав" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Ðе" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ðе" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Кушодан…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Кушодан..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Кушодан..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Гузоштан" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Гузоштан" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "ХуÑуÑиÑтҳо" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Дубора анҷом додан" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "ÐавÑозӣ" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Ðигоҳ доштан ҳамчун" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Ðигоҳ доштан ҳамчун" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "&Ҳамаро интихоб кардан" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Ҳамаро интихоб кардан" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Ботил Ñохтан" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Ҳа" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ҳа" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Боло" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Поён" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Чап" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "РоÑÑ‚" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/be.po0000644000175100001660000032047615011674363011063 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Belarusian\n" "Language: be_BY\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || n%10>=5 && n%10<=9 || " "n%100>=11 && n%100<=14 ? 2 : 3);\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: be\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Ðе паказваць больш гÑта апавÑшчÑнне" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ðе паказваць зноў" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ðе паказваць зноў" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Ðбнавіць зводку" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Закрыць" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Файл" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "ÐÐ¾Ð²Ñ‹Ñ Ñ€Ð°Ð´ÐºÑ–" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Збіранне зыходных файлаў…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Ðе атрымалаÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ–Ñ†ÑŒ файл з вынÑтымі перакладамі." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "У: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Зыходны код не даÑтупны." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Пераклады не могуць быць абноўлены з зыходнага кода, таму што код не быў " "знойдзены Ñž азначаным меÑцы ва ўлаÑціваÑцÑÑ… файла." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "У дазволе адмоўлена." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Ð’Ñ‹ не маеце дазволаў Ð´Ð»Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°Ñž зыходнага кода з размÑшчÑÐ½Ð½Ñ " "пазначанага ва ўлаÑціваÑцÑÑ… файла." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Калі вы дагÑтуль адмовілі Ñž доÑтупе да вашых файлаў, вы можаце даць дазвол у " "Параметры > ПрыватнаÑць Ñ– бÑÑпека > ПрыватнаÑць > Файлы Ñ– папкі." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Файл «%s» не можа быць адкрыты." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Ðбнаўленне перакладаў" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Зліццё адрозненнÑў…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "ÐÑправільны загаловак: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Файлы перакладу PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Шаблоны перакладу POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Файлы перакладу XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Файлы перакладу JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Файлы перакладу Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "УÑе файлы перакладаў" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Файл мае фармат, Ñкі не раÑпазнаецца Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "ГÑты JSON-файл не з'ÑўлÑецца файлам перакладу Ñ– не можа быць адрÑдагаваны Ñž " "Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Загрузка змеÑціва файла не атрымалаÑÑ Ð· наÑтупнай памылкай: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Файл \"%s\" даÑтупны толькі Ð´Ð»Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ Ñ– не можа быць захаваны.\n" "Захавайце Ñго пад іншай назвай." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Ðемагчыма захаваць файл %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Скрыншоты:" #: src/catalog_po.cpp:134 #, 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[1] "%i радкі файла \"%s\" былі Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°Ð½Ñ‹Ñ Ð½ÐµÐºÐ°Ñ€Ñктна." msgstr[2] "%i радкоў файла \"%s\" былі Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°Ð½Ñ‹Ñ Ð½ÐµÐºÐ°Ñ€Ñктна." msgstr[3] "%i радкоў файла \"%s\" былі Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°Ð½Ñ‹Ñ Ð½ÐµÐºÐ°Ñ€Ñктна." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Радок %d файла \"%s\" пашкоджаны (некарÑÐºÑ‚Ð½Ñ‹Ñ Ð´Ð°Ð½Ñ‹Ñ %s)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "СапÑаваны файл PO: форма адзіночнага ліку msgstr ÑƒÐ¶Ñ‹Ñ‚Ð°Ñ Ñ€Ð°Ð·Ð°Ð¼ з msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "СапÑаваны файл PO: форма множнага ліку msgstr ужыта без msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Файл не можа быць загружаны. Верагодна, ён пашкоджаны." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Пры загрузцы файла ўзнікла памылка. У выніку чаго, Ð½ÐµÐºÐ°Ñ‚Ð¾Ñ€Ñ‹Ñ Ð´Ð°Ð½Ñ‹Ñ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ " "быць Ð¿Ð°ÑˆÐºÐ¾Ð´Ð¶Ð°Ð½Ñ‹Ñ Ñ†Ñ– адÑутнічаць." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Узнікла праблема Ð¿Ð°Ð´Ñ‡Ð°Ñ Ñ„Ð°Ñ€Ð¼Ð°Ñ‚Ð°Ð²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° (але ён быў паÑпÑхова захаваны)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Файл не можа быць захаваны Ñž кадаванні \"%s\" Ñк азначана Ñž наладах " "перакладу.\n" "\n" "ЗамеÑÑ‚ гÑтага ён будзе захаваны Ñž кадаванні UTF-8 з адпаведнымі зменамі." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Памылка Ð·Ð°Ñ…Ð°Ð²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "\"%s\" не з'ÑўлÑецца карÑктным файлам POT." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Памылка Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÑ– файла XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "не падтрымліваецца верÑÑ–Ñ (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "ÐŸÐ°ÑˆÐºÐ¾Ð´Ð¶Ð°Ð½Ð°Ñ Ñ€Ð°Ð·Ð¼ÐµÑ‚ÐºÐ° Ñž радку перакладу." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Падлучыце Poedit да падтрымліваемых воблачных платформ лакалізацыі Ð´Ð»Ñ " "беÑперашкоднай Ñінхранізацыі перакладаў, выкананых на Ñ–Ñ…." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Як працуе Ð²Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð°Ñ ÑінхранізацыÑ?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Уліковы запіÑ" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(уваход не выкананы)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Ðдкрыць воблачны пераклад" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Кіраванне ўліковымі запіÑамі" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Праект:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Мова:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Увайдзіце Ñž Воблачны Уліковы запіÑ" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Увайдзіце Ñž воблачны ўліковы запіÑ" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "У вашым уліковым запіÑе нÑма праектаў Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñƒ." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Спампоўванне апошніх перакладаў…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "УвайÑці Ñž %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "СінхранізацыÑ" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "ДаÑыланне перакладаў у %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "ДаÑыланне перакладаў у %s не атрымалаÑÑ." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Памылка Ñінхранізацыі" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Дадаць" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Ðе аўтарызаваны, увайдзіце ÑÑˆÑ‡Ñ Ñ€Ð°Ð·." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Спампоўванне перакладаў адключана Ñž гÑтым праекце." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "УвайÑці" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "УвайÑці" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "ВыйÑці" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "ВыйÑці" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Даведацца больш пра Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Чаканне аўтарызацыі…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Ðбнаўленне звеÑтак пра карыÑтальніка…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "УвайÑці Ñž Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Сінхранізаваць з Crowdin не атрымалаÑÑ." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Памылка Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "ДаÑыланне перакладу…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&СкапіÑваць" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Даведацца больш" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Даведка" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Файлы з пашырÑннем MO нельга змÑніць непаÑÑ€Ñдна Ñž Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Памылка Ð°Ð´ÐºÑ€Ñ‹Ñ†Ñ†Ñ Ñ„Ð°Ð¹Ð»Ð°" #: src/edapp.cpp:735 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 такÑама " "абновіцца." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "не выдалÑйце чаÑÐ¾Ð²Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹ (Ð´Ð»Ñ Ð°Ð´Ð»Ð°Ð´ÐºÑ–)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "апрацаваць Ð°Ð´Ñ€Ð°Ñ poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "перайÑці да Ñлемента з вызначаным нумарам радка" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Памылка падключÑÐ½Ð½Ñ Ð´Ð° працÑÑу Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "ÐдбылоÑÑ Ð½ÐµÐ¿Ñ€Ð°Ð´Ð±Ð°Ñ‡Ð°Ð½Ð°Ðµ выключÑнне: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Выбраць шаблон перакладу" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Памылковы файл" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Выбраць файл перакладу" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit - гÑта проÑты Ñž выкарыÑтанні Ñ€Ñдактар перакладаў." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Ðельга перацÑгваць некалькі файлаў у акно Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Файл \"%s\" не з'ÑўлÑецца файлам перакладу." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Файл “%s†не Ñ–Ñнуе." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Праверка правапіÑу адключана, таму што, Ñлоўнік Ð´Ð»Ñ %s не ÑžÑталÑваны." #: src/edframe.cpp:871 msgid "Install" msgstr "УÑталÑваць" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Файл “%s†зменены іншай праграмай." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Перазагрузіць файл" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Ð’Ñ‹ Ñапраўды хочаце перазагрузіць файл з дыÑка? УÑе вашы не Ð·Ð°Ñ…Ð°Ð²Ð°Ð½Ñ‹Ñ " "змÑненні Ñž праграме будуць ÑтрачаныÑ, калі вы гÑта зробіце." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ігнараваць" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Перазагрузіць файл" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Файл зменены. Захаваць змены?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Захаваць змены" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Вашы змены будуць ÑтрачаныÑ, калі вы не захаваеце Ñ–Ñ…." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Захаваць" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ðе зах&оўваць" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ðе захоўваць" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "Змены Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ñ‹Ñ Ñ–Ð½ÑˆÐ°Ð¹ праграма будуць ÑтрачаныÑ, калі вы захаваеце." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "СкаÑаваць" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "УÑÑ‘ роўна захаваць" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "УÑÑ‘ роўна захаваць" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Захаваць Ñк…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "КампілÑваць у…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "СкампілÑÐ²Ð°Ð½Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹ перакладу" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "ЭкÑпарт у HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Файл HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Ðе атрымалаÑÑ Ð°Ð±Ð½Ð°Ð²Ñ–Ñ†ÑŒ" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Ðбнавіць з файла &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Ðбнавіць з файла &POT…" #: src/edframe.cpp:1834 #, c-format 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[3] "У перакладзе знойдзена %d праблем." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Вынікі праверкі" #: src/edframe.cpp:1842 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 "" "ЗапіÑÑ‹ з памылкамі былі вылучаны Ñž ÑпіÑе чырвоным колерам. Калі выбраць такі " "запіÑ, будуць Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ð¿Ð°Ð´Ñ€Ð°Ð±ÑÐ·Ð½Ñ‹Ñ Ð·Ð²ÐµÑткі пра памылку." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Файл быў паÑпÑхова захаваны." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Файл быў паÑпÑхова захаваны Ñ– ÑкампілÑваны Ñž фармат MO, але магчыма будзе " "працаваць некарÑктна." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Файл быў паÑпÑхова захаваны, але Ñго не атрымалаÑÑ ÑкампілÑваць у фармат MO " "Ð´Ð»Ñ Ð´Ð°Ð»ÐµÐ¹ÑˆÐ°Ð³Ð° выкарыÑтаннÑ." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Файл быў ÑкампілÑваны Ñž фармат MO, але магчыма будзе працаваць некарÑктна." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "" "Ðе атрымалаÑÑ ÑкампілÑваць файл у фармат MO Ð´Ð»Ñ Ð´Ð°Ð»ÐµÐ¹ÑˆÐ°Ð³Ð° выкарыÑтаннÑ." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Праблем у перакладзе не знойдзена." #: src/edframe.cpp:1894 #, 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] "Пераклад гатовы да выкарыÑтаннÑ, але %d Ð·Ð°Ð¿Ñ–Ñ ÑÑˆÑ‡Ñ Ð½Ðµ перакладзены." msgstr[1] "" "Пераклад гатовы да выкарыÑтаннÑ, але %d запіÑÑ‹ ÑÑˆÑ‡Ñ Ð½Ðµ перакладзена." msgstr[2] "" "Пераклад гатовы да выкарыÑтаннÑ, але %d запіÑаў ÑÑˆÑ‡Ñ Ð½Ðµ перакладзена." msgstr[3] "" "Пераклад гатовы да выкарыÑтаннÑ, але %d запіÑаў ÑÑˆÑ‡Ñ Ð½Ðµ перакладзена." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Пераклад гатовы да выкарыÑтаннÑ." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit аўтаматычна выправіў памылковы змеÑÑ‚ у файле \"%s\"." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "ГÑты файл змÑшчаў у Ñабе дублÑÐ²Ð°Ð½Ñ‹Ñ Ñлементы, ÑÐºÑ–Ñ Ð½Ðµ дазвалÑюцца Ñž файлах " "PO Ñ– могуць Ñтвараць перашкоды Ñž Ñ–Ñ… выкарыÑтанні. Poedit выправіў гÑту " "праблему, але вы павінны перагледзець пераклады з пазнакамі \"патрабуюць " "дапрацоўкі\" Ñ– выправіць Ñ–Ñ… пры неабходнаÑці." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Ðе прызначана мова перакладу." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Выбраць мову" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Выбраць мову" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Прапановы не даÑтупныÑ, калі мова перакладу не азначанаÑ. Ð†Ð½ÑˆÑ‹Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð°Ñці, " "Ñ‚Ð°ÐºÑ–Ñ Ñк формы множнага ліку, такÑама могуць быць парушаныÑ." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Мова перакладу Ñупадае з зыходнай мовай." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Выправіць мову" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Выправіць мову" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Файл змÑшчае Ñлементы з формамі множнага ліку, але ён не мае наладаў " "загалоўку Plural-Forms." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Элементы Ñž гÑтым файле маюць формы множнага ліку, ÑÐºÑ–Ñ Ð°Ð´Ñ€Ð¾Ð·Ð½Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° ад " "азначаных у загалоўку Plural-Forms" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Ðеабходны загаловак \"Plural-Forms\" адÑутнічае." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "СінтакÑÑ–Ñ‡Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ñž загалоўку \"Plural-Forms\" (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Выправіць загаловак" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "Выраз формы множнага ліку, Ñкое выкарыÑтоўваецца Ñž файла, з'ÑўлÑецца " "незвычайным Ð´Ð»Ñ %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Праверыць" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Загрузіць англійÑкую" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Перакладзена: %d з %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "ЗаÑталоÑÑ: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d памылка" msgstr[1] "%d памылкі" msgstr[2] "%d памылак" msgstr[3] "%d памылак" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d запіÑ" msgstr[1] "%d запіÑÑ‹" msgstr[2] "%d запіÑаў" msgstr[3] "%d запіÑаў" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (не захавана)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (зменены)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Ðе атрымалаÑÑ Ð°Ð±Ð½Ð°Ð²Ñ–Ñ†ÑŒ памÑць перакладаў: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Пакінуць" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Выдаліць" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Знішчыць Ð²Ñ‹Ð»ÑƒÑ‡Ð°Ð½Ñ‹Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‹" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Жадаеце выдаліць уÑе пераклады, ÑÐºÑ–Ñ Ð±Ð¾Ð»ÑŒÑˆ не выкарыÑтоўваюцца?" #: src/edframe.cpp:2879 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 "" "Калі працÑгнуць аперацыю, уÑе пераклады, Ð¿Ð°Ð·Ð½Ð°Ñ‡Ð°Ð½Ñ‹Ñ Ñк выдаленыÑ, будуць " "цалкам знішчаныÑ. Калі Ñны будуць Ð´Ð°Ð´Ð°Ð½Ñ‹Ñ Ð½Ð°Ð·Ð°Ð´ у будучым, Ñ–Ñ… прыйдзецца " "перакладаць паўторна." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Знішчыць" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "СкапіÑваць зыходны Ñ‚ÑкÑÑ‚" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "СкапіÑваць зыходны Ñ‚ÑкÑÑ‚" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "ÐчыÑціць пераклад" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "ÐчыÑціць пераклад" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "РÑдагаваць каментарый" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "РÑдагаваць каментарый" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Код уваходжаннÑ" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Код уваходжаннÑ" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Схаваць бакавую панÑль" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Паказаць бакавую панÑль" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Схаваць радок Ñтану" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Паказаць радок Ñтану" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Ð”Ð°ÑžÐ¶Ñ‹Ð½Ñ Ñ€Ð°Ð´ÐºÐ° Ñž Ñімвалах: пераклад | крыніца" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Ð”Ð°ÑžÐ¶Ñ‹Ð½Ñ Ñ€Ð°Ð´ÐºÐ° Ñž Ñімвалах" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Зыходны Ñ‚ÑкÑÑ‚" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Ðдзіночны лік" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Множны" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Пераклад" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Чарнавы варыÑнт" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Патрабуе праверкі" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Патрабуе праверкі" #: src/editing_area.cpp:566 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 з шаблона." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Стварыць новы пераклад" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Зрабіць новы пераклад з гÑтага файла POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ІдÑнтыфікатар зыходнага Ñ‚ÑкÑту" #: src/editing_area.cpp:768 msgid "Everything" msgstr "УÑÑ‘" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Форма %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Форма %i (не выкарыÑтоўваецца)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Ðуль" #: src/editing_area.cpp:788 msgid "One" msgstr "Ðдзін" #: src/editing_area.cpp:790 msgid "Two" msgstr "Два" #: src/editing_area.cpp:804 msgid "Other" msgstr "Iншае" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "КантÑкÑÑ‚ радка: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "ІдÑнтыфікатар радка: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Фармат %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Фармат %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Пераклад — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Зыходны Ñ‚ÑкÑÑ‚ — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "невÑÐ´Ð¾Ð¼Ð°Ñ Ð¼Ð¾Ð²Ð°" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Ðе атрымалаÑÑ Ð°Ð±'Ñднаць каталогі gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Ðдкрыць у Ñ€Ñдактары" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Ðдкрыць у Ñ€Ñдактары" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "ЗвеÑткі Ñž файле адÑутнічацюь пра ўваходжанне гÑтага радка Ñž зыходны код." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "ÐÑма звеÑтак пра выкарыÑтанне" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d уваходжанне кода" msgstr[1] "%d уваходжанні кода" msgstr[2] "%d уваходжаннÑÑž кода" msgstr[3] "%d уваходжанні кода" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Зыходны код не знойдзены" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit не можа паказаць зыходны код у Ñкім выкарыÑтоўваецца радок з той " "прычыны, што файла Ñž азначаным меÑцы або ён з'ÑўлÑецца Ñімвалічнай " "ÑпаÑылкай, ÑÐºÐ°Ñ ÑžÐºÐ°Ð·Ð²Ð°Ðµ на Ñапраўдны файл." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Ðемагчыма адкрыць файл" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit не можа адкрыць файл “%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "ЗнайÑці" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "ЗамÑніць" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Ðалады" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ігнараваць Ñ€ÑгіÑтр" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Шукаць бÑÑконца" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Толькі цÑÐ»Ñ‹Ñ Ñловы" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Шукаць у зыходных Ñ‚ÑкÑтах" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Шукаць у перакладах" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Шукаць у перакладах" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "ЗамÑніць &уÑе" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "ЗамÑніць &уÑе" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&ЗамÑніць" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &ПапÑÑ€Ñдні" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&ÐаÑтупны >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Радок пошуку" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Радок замены" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Ðазва мовы або код" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Мова перакладу" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Мова перакладу:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "УÑе радкі" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Ðемагчыма Ñпампаваць дÑталі праекту Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Памылка Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÑ– перакладаў на Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Праекты" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Даведацца больш пра %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Дадаць Праект" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Дадаць праект" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - кіраўнік каталогаў" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "ЗмÑніць…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Стварыць новы праект перакладу" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Выдаліць праект" #: src/manager.cpp:146 msgid "Edit the project" msgstr "РÑдагаваць праект" #: src/manager.cpp:176 msgid "Update all" msgstr "Ðбнавіць уÑÑ‘" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Ðбнавіць уÑе каталогі праекта" #: src/manager.cpp:378 msgid "Total" msgstr "УÑÑго" #: src/manager.cpp:379 msgid "Untrans" msgstr "Ðе перакладзеных" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Патрабуе праверкі" #: src/manager.cpp:381 msgid "Errors" msgstr "Памылкі" #: src/manager.cpp:382 msgid "Last modified" msgstr "ÐпошнÑе змÑненне" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Выберыце каталог" #: src/manager.cpp:433 msgid "Directories:" msgstr "Каталогі:" #: src/manager.cpp:503 msgid "" msgstr "<без назвы>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Ð’Ñ‹ Ñапраўды хочаце выдаліць праект “%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Выдаліць праект" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Выдаленне праекта не прывÑдзе да Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°Ñž перакладу." #: src/manager.cpp:571 msgid "Confirmation" msgstr "ПацвÑрджÑнне" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Ðбнавіць уÑе катологі Ñž гÑтым праекце?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Выконвае абнаўленне з зыходнага кода уÑÑ–Ñ… файлаў праекта." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Праверка абнаўленнÑў…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Менеджар каталогаў" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Ðалады…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&ЗмÑніць" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Ð’Ñрнуць" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Ðднавіць" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Стыль капіÑÐ²Ð°Ð½Ð½Ñ Ñ– ÑžÑтаўкі" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Выдаліць" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Праверка правапіÑу Ñ– граматыка" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Паказваць Ð°Ñ€Ñ„Ð°Ð³Ñ€Ð°Ñ„Ñ–Ñ‡Ð½Ñ‹Ñ Ñ– Ð³Ñ€Ð°Ð¼Ð°Ñ‚Ñ‹Ñ‡Ð½Ñ‹Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÑ–" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Праверыць дакумент" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "ПравÑраць Ð¿Ñ€Ð°Ð²Ð°Ð¿Ñ–Ñ Ð¿Ð°Ð´Ñ‡Ð°Ñ ÑƒÐ²Ð¾Ð´Ñƒ" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "ПравÑраць граматыку Ñ– правапіÑ" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "ВыпраўлÑць Ð¿Ñ€Ð°Ð²Ð°Ð¿Ñ–Ñ Ð°ÑžÑ‚Ð°Ð¼Ð°Ñ‚Ñ‹Ñ‡Ð½Ð°" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Замены" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Паказваць замены" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "ІнтÑлектуальнае капіÑванне/уÑтаўка" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "ІнтÑÐ»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ð´Ð²ÑƒÐºÐ¾ÑÑÑ–" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "ІнтÑлектуальны працÑжнік" #: src/menus.cpp:226 msgid "Smart Links" msgstr "ІнтÑÐ»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ ÑпаÑылкі" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Замена Ñ‚ÑкÑту" #: src/menus.cpp:230 msgid "Transformations" msgstr "ПераўтварÑнні" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Канвертаваць у вÑÐ»Ñ–ÐºÑ–Ñ Ð»Ñ–Ñ‚Ð°Ñ€Ñ‹" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Канвертаваць у Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÑ–Ñ Ð»Ñ–Ñ‚Ð°Ñ€Ñ‹" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Ð’Ñлікімі літарамі" #: src/menus.cpp:237 msgid "Speech" msgstr "Маўленне" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Пачаць агучванне" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Спыніць агучванне" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&ВыглÑд" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Паказаць панÑль інÑтрументаў" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Ðаладзіць панÑль інÑтрументаў…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "ПерайÑці Ñž поўнаÑкранны Ñ€Ñжым" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Ðкно" #: src/menus.cpp:263 msgid "Minimize" msgstr "Згарнуць" #: src/menus.cpp:264 msgid "Zoom" msgstr "Маштаб" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "СардÑчна запрашаем у Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "ЗмÑÑціць уÑÑ‘ на пÑÑ€Ñднім плане" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "ЗвеÑткі пра перакладчыка" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "ІмÑ:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Ваша імÑ" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾ÑˆÑ‚Ð°:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "alyaksandr.koshal@gmail.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ваша Ñ–Ð¼Ñ Ñ– Ð°Ð´Ñ€Ð°Ñ Ñлектроннай пошты будуць выкарыÑтоўвацца толькі пры " "пазначÑнні апошнÑга перакладчыка Ñž загалоўках GNU gettext файлаў." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "РÑдагаванне" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Ðўтаматычна кампілÑваць файл MO пры захаванні" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "ПравÑраць правапіÑ" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "ЗаўÑёды рабіць поле Ð´Ð»Ñ ÑžÐ²Ð¾Ð´Ñƒ Ñ‚ÑкÑту актыўным" #: src/prefsdlg.cpp:211 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 "" "Ðіколі не рабіць актыўным ÑÐ¿Ñ–Ñ Ð· радкамі. Калі ўключана, Ð´Ð»Ñ Ð¿ÐµÑ€Ð°Ð¼ÑшчÑÐ½Ð½Ñ Ð· " "дапамогай клавіÑтуры неабходна выкарыÑтоўваць Ctrl+ÑтрÑлкі. ГÑты параметр " "такÑама дазвалÑе ўводзіць Ñ‚ÑкÑÑ‚ імгненна, без папÑÑ€ÑднÑга націÑку клавішы " "TAB Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÐºÐ»ÑŽÑ‡ÑÐ½Ð½Ñ Ñ„Ð¾ÐºÑƒÑа." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Знешні выглÑд" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "ВыкарыÑтоўваць карыÑтальніцкі шрыфт Ð´Ð»Ñ ÑпіÑу:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "ВыкарыÑтоўваць карыÑтальніцкі Ñ‚ÑкÑÑ‚ у палÑÑ… уводу:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "ЗмÑніць мову інтÑрфейÑу" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(патрабуецца Windows 8 ці больш Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÑ–Ñ)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "ÐгульныÑ" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "ВыкарыÑтоўваць памÑць перакладаў" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Кіраванне…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Пры абнаўленні з крыніцы" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "падбіраць падобны пераклад унутры файла" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "чарнавы пераклад з памÑці перакладаў" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit можа паÑпрабаваць запоўніць Ð½Ð¾Ð²Ñ‹Ñ Ñ€Ð°Ð´ÐºÑ– толькі папÑÑ€Ñднімі " "перакладамі з гÑтага файла ці з вашай памÑці перакладаў. ВыкарыÑтанне памÑці " "перакладаў не будзе вельмі Ñфектыўным, калі Ñна амаль пуÑтаÑ, але Ñна будзе " "Ñтанавіцца лепш па меры таго, Ñк вы будзеце дадаваць Ð½Ð¾Ð²Ñ‹Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‹." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Ð—Ð°Ñ…Ð°Ð²Ð°Ð½Ñ‹Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‹:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Памер базы даных на дыÑку:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Імпарт файлаў перакладу…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Імпарт файлаў перакладу…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Імпарт з TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Імпарт з TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "ЭкÑпарт у TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "ЭкÑпарт у TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Скінуць" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Выберыце файлы перакладу Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð°Ñ€Ñ‚Ð°Ð²Ð°Ð½Ð½Ñ" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Выберыце файлы TMX Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð°Ñ€Ñ‚Ñƒ" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Файлы TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Імпартаванне перакладаў…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "ЭкÑпартаваць Ñк…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "ЭкÑпартаванне перакладаў…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Ðе атрымалаÑÑ ÑкÑпартаваць файлы перакладу Ñž “%sâ€." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Скінуць памÑць перакладаў" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Ð’Ñ‹ ўпÑўненыÑ, што жадаеце Ñкінуць памÑць перакладаў?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "ÐчыÑтка памÑці перакладаў незваротна выдаліць уÑе пераклады, ÑÐºÑ–Ñ " "захоўваюцца Ñž ёй. Ð’Ñ‹ не зможаце ÑкаÑаваць гÑтую аперацыю." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "ПамÑць перакладаў (ПП)" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "ПамÑць перакладаў" #: src/prefsdlg.cpp:730 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 "" "ЭкÑтрактары выкарыÑтоўвацца Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ радкоў, ÑÐºÑ–Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ð°ÑŽÑ†Ñ†Ð° Ñž файлах " "зыходнага кода Ñ– вымаюць Ñ–Ñ… так, каб Ñ–Ñ… можна было пераклаÑці." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "КарыÑÑ‚Ð°Ð»ÑŒÐ½Ñ–Ñ†ÐºÑ–Ñ ÑкÑтрактары:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "КарыÑÑ‚Ð°Ð»ÑŒÐ½Ñ–Ñ†ÐºÑ–Ñ ÑкÑтрактары:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Падтрымліваюцца ÑžÑе Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ð½Ñ‹Ñ Ð¼Ð¾Ð²Ñ‹, ÑÐºÑ–Ñ Ñ€Ð°Ñпазнаюцца Ñродкамі GNU gettext " "(PHP, C/C++, C#, Perl, Python, Java, JavaScript Ñ– іншыÑ)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Выдаліць ÑкÑтрактар" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Ð’Ñ‹ ўпÑўненыÑ, што жадаеце выдаліць ÑкÑтрактар \"%s\"?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "ЭкÑтрактары" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Ð£Ð»Ñ–ÐºÐ¾Ð²Ñ‹Ñ Ð·Ð°Ð¿Ñ–ÑÑ‹" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Ðўтаматычна правÑраць наÑўнаÑць новых верÑій" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "У тым ліку правÑраць бÑта-верÑÑ–Ñ–" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "БÑта-верÑÑ–Ñ– ўключаюць уÑе ÑÐ°Ð¼Ñ‹Ñ Ð½Ð¾Ð²Ñ‹Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ñ– ўдаÑканаленні, але могуць " "быць менш Ñтабільнымі." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Ðбнаўленні" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "ГÑÑ‚Ñ‹Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹ ўплываюць на ўнутранае фарматаванне файлаў PO. СкарÑктуйце " "Ñ–Ñ…, калі Ñž Ð²Ð°Ñ Ñ‘Ñць адмыÑÐ»Ð¾Ð²Ñ‹Ñ Ð¿Ð°Ñ‚Ñ€Ð°Ð±Ð°Ð²Ð°Ð½Ð½Ñ–, напрыклад, калі вы карыÑтаецеÑÑ " "ÑÑ–ÑÑ‚Ñмай кантролю верÑій." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "СканчÑнне радкоў:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (пажадана)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "ПераноÑ:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Захоўваць фарматаванне Ñ–Ñнуючых файлаў" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "ÐŸÐ°ÑˆÑ‹Ñ€Ð°Ð½Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Ðалады" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Падрыхтоўка радкоў…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "ПапÑÑ€Ñдні пераклад з памÑці перакладаў…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Чарнавы пераклад %u радка" msgstr[1] "Чарнавы пераклад %u радкоў" msgstr[2] "Чарнавы пераклад %u радкоў" msgstr[3] "Чарнавы пераклад %u радкоў" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Выкананне чарнавога перакладу…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d радок быў запоўнены чарнавым перакладам." msgstr[1] "%d радкі былі Ð·Ð°Ð¿Ð¾ÑžÐ½ÐµÐ½Ñ‹Ñ Ñ‡Ð°Ñ€Ð½Ð°Ð²Ñ‹Ð¼ перакладам." msgstr[2] "%d радкоў было запоўнена чарнавым перакладам." msgstr[3] "%d радкоў было запоўнена чарнавым перакладам." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Пераклады былі Ð¿Ð°Ð·Ð½Ð°Ñ‡Ð°Ð½Ñ‹Ñ Ñк \"патрабуюць дапрацоўкі\" з той прычыны, што " "могуць змÑшчаць памылкі. Ð’Ñ‹ павінны праверыць ці ÑÐ»ÑƒÑˆÐ½Ñ‹Ñ Ñны." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "ÐÑма запіÑаў Ð´Ð»Ñ Ñкіх можна зрабіць чарнавы пераклад." #: src/pretranslate.cpp:218 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 " "збÑÑ€Ñ Ð´Ð°Ñтаткова даных з файлаў, ÑÐºÑ–Ñ Ð²Ñ‹ пераклалі ўручную." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Чарнавы пераклад" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "ЗапаўнÑць толькі пры дакладным Ñупадзенні" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Ðе пазначаць Ð´Ð°ÐºÐ»Ð°Ð´Ð½Ñ‹Ñ Ñупадзенні Ñк \"патрабуюць дапрацоўкі\"" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Уключыце толькі Ñž тым выпадку, калі вы давÑраеце ÑкаÑці вашай памÑці " "перакладаў. Па змаўчанні, уÑе Ñупадзенні з памÑці перакладаў пазначаюцца Ñк " "\"патрабуюць дапрацоўкі\" Ñ– Ñ–Ñ… неабходна пераправÑраць." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Чарнавы пераклад аўтаматычна знаходзіць Ð´Ð°ÐºÐ»Ð°Ð´Ð½Ñ‹Ñ Ñ†Ñ– Ð½ÐµÐ´Ð°ÐºÐ»Ð°Ð´Ð½Ñ‹Ñ Ñупадзенні " "Ð´Ð»Ñ Ð½Ðµ перакладзеных радкоў у памÑці перакладаў Ñ– запаўнÑе Ñ–Ñ… перакладамі." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "СкаÑоўваецца…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "ПерацÑгніце папкі або файлы Ñюды" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "ПерацÑгніце папкі або файлы Ñюды" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Дадаць папкі…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Дадаць папкі…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Дадаць файлы…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Дадаць файлы…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Дадаць шаблон…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Дадаць шаблон…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Паказаць у Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Паказаць у правадніку" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Паказаць у папцы" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "ШлÑÑ…Ñ–" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Ð’Ñ‹ÐºÐ»ÑŽÑ‡Ð°Ð½Ñ‹Ñ ÑˆÐ»ÑÑ…Ñ–" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ выманнÑ" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "ВынÑць нататкі Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‡Ñ‹ÐºÐ°Ñž з:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Каментарыі, ÑÐºÑ–Ñ Ð¿Ð°Ñ‡Ñ‹Ð½Ð°ÑŽÑ†Ñ†Ð° з:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "УÑе каментарыі" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ ÑцÑгі xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ ÐºÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Ðазва праекта перакладу длÑ" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Ðазва каманды Ñ– Ð°Ð´Ñ€Ð°Ñ Ñл. пошты ці URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "напрыклад, plurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (пажадана)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Першапачаткова захавайце файл. Да гÑтага дадзены раздзел не можа быць " "зменены." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Пераклады форм множнага ліку" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Ðе ÑžÑе формы множнага ліку перакладзеныÑ." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "ÐепаÑлÑдоўнаÑць ніжнÑга/верхнÑга Ñ€ÑгіÑтра" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Пераклад павінен пачынацца з вÑлікай літары." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Пераклад павінен пачынацца з маленькай літары." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "ÐÑўзгодненаÑць прабелаў" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Пераклад не пачынаецца з прабела." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Пераклад пачынаецца з прабела, а зыходны Ñ‚ÑкÑÑ‚ не." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "У перакладзе адÑутнічае Ñімвал зыходнага радка Ñž канцы." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Пераклад Ñкачаецца Ñімвалам новага радка, а пачатковы Ñ‚ÑкÑÑ‚ не." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "У канцы перакладу прапушчаны прабел." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Пераклад пачынаецца Ñканчаецца прабелам, а зыходны Ñ‚ÑкÑÑ‚ не." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Праверка пунктуацыі" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Пераклад павінен Ñканчацца \"%s\"." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Пераклад не павінен заканчвацца на \"%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Пераклад Ñканчаецца \"%s\", а пачатковы Ñ‚ÑкÑÑ‚ Ñканчаецца \"%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Воблака" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "ÐчыÑціць меню" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "ÐчыÑціць меню" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Каментарый:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Ðбнавіць" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Выдаліць" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Выдаліць каментарый" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "РÑдагаваць праект" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Ðазва праекта:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "ÐглÑд" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Дадаць каталог у ÑпіÑ" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Добра" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Файл" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Ðовы…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Ðовы з файла &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Ðовы з файла &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Ðдкрыць…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Ðдкрыць нÑÐ´Ð°ÑžÐ½Ñ–Ñ Ñ„Ð°Ð¹Ð»Ñ‹" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Ðдкрыць нÑдаўніÑ" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Ðдкрыць воблачны пераклад…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Пачатковае акно" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Пачатковае акно" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Менеджар каталогаў" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Менеджар каталогаў" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Закрыць" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Захаваць" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Захаваць &Ñк…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Захаваць &Ñк…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "КампілÑваць у файл MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Праверка абнаўленнÑў…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Ðалады…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Ðалады" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "Ð’&ыхад" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "ВыйÑці" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "КапіÑваць форму адзіночнага ліку" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "КапіÑваць форму адзіночнага ліку" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Пераклад, Ñкі патрабуе &дапрацоўкі" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Пераклады, ÑÐºÑ–Ñ Ð¿Ð°Ñ‚Ñ€Ð°Ð±ÑƒÑŽÑ†ÑŒ &дапрацоўкі" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "ЗмÑніць &каментарый" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "ЗмÑніць &каментарый" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Прапановы" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&ЗнайÑці…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "ЗамÑніць…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "ЗнайÑці наÑтупны" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "ЗнайÑці папÑÑ€Ñдні" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "ЗнайÑці Ñ– замÑніць…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "ЗнайÑці наÑтупны" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "ЗнайÑці папÑÑ€Ñдні" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Паказваць &ID радка" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Паказваць &ID радка" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Паказаць папÑÑ€Ñджанні" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Паказаць папÑÑ€Ñджанні" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Сартаваць Ñк у &файле" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Сартаваць Ñк у &файле" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Сартаваць Ñк у &арыгінале" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Сартаваць Ñк у &арыгінале" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Сартаваць Ñк у &перакладзе" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Сартаваць Ñк у &перакладзе" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Групаваць па кантÑкÑце" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Групаваць па кантÑкÑце" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Першымі адлюÑтроўваць запіÑÑ‹ з памылкамі" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Першымі адлюÑтроўваць запіÑÑ‹ з памылкамі" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Спачатку &не Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ Ð·Ð°Ð¿Ñ–ÑÑ‹" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Спачатку &не Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ Ð·Ð°Ð¿Ñ–ÑÑ‹" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Паказаць уваходжанні кода" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Паказаць уваходжанні кода" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Паказаць бакавую панÑль" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Паказаць радок Ñтану" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Пераклад" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Ðбнавіць з зыходнага кода" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Ðбнавіць з зыходнага кода" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Сінхранізаваць з Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Чарнавы &пераклад…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Праверыць пераклад" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Праверыць пераклад" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Знішчыць Ð²Ñ‹Ð»ÑƒÑ‡Ð°Ð½Ñ‹Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‹" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Знішчыць Ð²Ñ‹Ð»ÑƒÑ‡Ð°Ð½Ñ‹Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‹" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&УлаÑціваÑці…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&ПерайÑці" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Скончыць Ñ– перайÑці да наÑтупнага" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Скончыць Ñ– перайÑці да наÑтупнага" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&ПапÑÑ€Ñдні пераклад" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&ПапÑÑ€Ñдні пераклад" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&ÐаÑтупны пераклад" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&ÐаÑтупны пераклад" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Па&пÑÑ€Ñдні незавершаны" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Па&пÑÑ€Ñдні незавершаны" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Ðа&Ñтупны незавершаны" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Ðа&Ñтупны незавершаны" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "ПапÑÑ€ÑднÑÑ Ñ„Ð¾Ñ€Ð¼Ð° множнага ліку" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "ПапÑÑ€ÑднÑÑ Ñ„Ð¾Ñ€Ð¼Ð° множнага ліку" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "ÐаÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° множнага ліку" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "ÐаÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° множнага ліку" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Ð¡ÐµÑ†Ñ–ÑžÐ½Ð°Ñ Ð´Ð°Ð²ÐµÐ´ÐºÐ°" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Ð¡ÐµÑ†Ñ–ÑžÐ½Ð°Ñ Ð´Ð°Ð²ÐµÐ´ÐºÐ°" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&Ð”Ð°ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ‹Ñ GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&Ð”Ð°ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ‹Ñ GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Пра Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Пра праграму" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Ðалады ÑкÑтрактара" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Ð¡Ð¿Ñ–Ñ Ð¿Ñ‹ÑˆÑ‹Ñ€ÑннÑÑž, падзеленых кропкай з коÑкай (напрыклад *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Выклік:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Каманда Ð´Ð»Ñ Ð²Ñ‹Ð¼Ð°Ð½Ð½Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñƒ:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ð”Ð°Ð´Ð·ÐµÐ½Ð°Ñ ÐºÐ°Ð¼Ð°Ð½Ð´Ð° выкарыÑтоўваецца, каб запуÑціць ÑкÑтрактар.\n" "%o абазначае назву выходнага файла, %K - ÑпіÑ\n" "ключавых Ñлоў, %F - ÑÐ¿Ñ–Ñ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð½Ñ‹Ñ… файлаў,\n" "%C - кадаванне (гл. ніжÑй)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Элемент у ÑпіÑе ключавых Ñлоў:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "ГÑта будзе дададзена Ñž камандны радок Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð°Ð³Ð°\n" "ключавога Ñлова. %k азначае ключавое Ñлова." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Элемент у ÑпіÑе ўваходных файлаў:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "ГÑта будзе дадзена Ñž камандны радок длÑ\n" "кожнага ўваходнага файла. %f азначае назву файла." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Кадаванне зыходнага кода:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "ГÑта будзе дададзена Ñž камандны радок, толькі калі было азначана\n" "кадаванне зыходнага файла. %c азначае кадаванне." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "УлаÑціваÑці перакладу" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Ðазва Ñ– верÑÑ–Ñ Ð¿Ñ€Ð°ÐµÐºÑ‚Ð°:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Каманда перакладчыкаў:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Формы множнага ліку:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "ВыкарыÑтоўваць правілы па змаўчанні Ð´Ð»Ñ Ð³Ñтай мовы" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "ВыкарыÑтоўваць выраз карыÑтальніка" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Даведацца больш пра формы множнага ліку" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Кадаванне:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ выманнÑ…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ выманнÑ…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "УлаÑціваÑці перакладу" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "ШлÑÑ… да зыходнага файла" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "ШлÑÑ… да зыходнага файла" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Вымаць Ñ‚ÑкÑÑ‚ з зыходных файлаў у наÑтупных каталогах:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Базавы шлÑÑ…:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "ÐšÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы зыходных файлаў" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "ÐšÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы зыходных файлаў" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "ВыкарыÑтоўвайце гÑÑ‚Ñ‹Ñ ÐºÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы (імёны функцый) Ð´Ð»Ñ Ñ€Ð°ÑпазнаннÑ\n" "радкоў, ÑÐºÑ–Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ð°ÑŽÑ†Ñ†Ð° Ñž зыходных файлах:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" "ТакÑама выкарыÑтоўваць ÐºÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы па змаўчанні Ð´Ð»Ñ Ð¼Ð¾Ñž, ÑÐºÑ–Ñ " "падтрымліваюцца" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Даведацца больш пра ÐºÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Ðдкрыць файл" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Захаваць файл" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Праверыць" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Праверыць наÑўнаÑць памылак у перакладзе" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Ðбнавіць з кода" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Ðбнавіць з кода" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Ðбнавіць з зыходнага кода" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Ð‘Ð°ÐºÐ°Ð²Ð°Ñ Ð¿Ð°Ð½Ñль" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Паказаць ці Ñхаваць бакавую панÑль" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "ПапÑÑ€Ñдні зыходны Ñ‚ÑкÑÑ‚" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Стары зыходны Ñ‚ÑкÑÑ‚ (да таго, Ñк быў адноўлены), Ñкому адпавÑдае недакладны " "пераклад." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Заўвагі Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñ‡Ñ‹ÐºÐ°" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Каментарый" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Дадаць каментарый" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Дадаць каментарый" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Выдаліць з памÑці перакладаў" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Выдаліць з памÑці перакладаў" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "ВарыÑнты перакладу" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "СупадзеннÑÑž не знойдзена" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "СупадзеннÑÑž не знойдзена" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "ГÑты радок быў знойдзены Ñž памÑці перакладаў Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Ðе атрымліваецца выканаць праграму: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "ÐÑправільны файл TMX." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "База даных памÑці перакладаў пашкоджанаÑ: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Памылка памÑці перакладаў: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(КарыÑтацца мовай па змаўчанні)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Выбар мовы" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Выберыце пажаданую мову" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Ð’Ñ‹ павінны перазапуÑціць Poedit, каб змены набылі моц." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Ðе атрымалаÑÑ Ñтварыць чаÑовы каталог." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Вельмі дзіўна, але пераклад адÑутнічае." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Самы проÑты шлÑÑ… запоўніць гÑты файл перакладамі - гÑта абнавіць Ñго з POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Ðбнавіць з POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Выманне радкоў Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñƒ з Ñ–Ñнуючага шаблона POT." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Ð’Ñ‹ такÑама можаце вынÑць радкі Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÐºÐ»Ð°Ð´Ñƒ непаÑÑ€Ñдна з зыходнага кода:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "ВынÑць з зыходнага кода" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Ðаладзьце выманне зыходнага кода Ñž раздзеле \"УлаÑціваÑці\"." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "ВерÑÑ–Ñ %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Стварыць новы" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Стварыць новы пераклад з шаблона POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "ПраглÑд файлаў" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Ðдкрыць Ñ– змÑніць файлы перакладу." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "ÐÑÐ´Ð°ÑžÐ½Ñ–Ñ Ñ„Ð°Ð¹Ð»Ñ‹" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "СінхранізацыÑ" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Сінхранізаваць пераклад з Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Пра %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Ðалады %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Пра %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "СÑрвіÑÑ‹" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Схаваць %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Схаваць іншыÑ" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Паказаць уÑе" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "ВыйÑці з %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Ðалады…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Ðалады..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Ðалады..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Ужыць" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Ужыць" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Ðазад" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Ðазад" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Ðдмена" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&ÐчыÑціць" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "ÐчыÑціць" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "КапіÑваць" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Выра&заць" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Выразаць" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "ЗмÑніць" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&ВыйÑці" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Даведка" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Стварыць" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Ðовы" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Ðе" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ðе" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Ok" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Ðдкрыць…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Ðдкрыць..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Ðдкрыць..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&УÑтавіць" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "УÑтавіць" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Ðалады" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Ðднавіць" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Ðбнавіць" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Захаваць Ñк" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Захаваць Ñк" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Выбраць у&ÑÑ‘" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Выбраць уÑÑ‘" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Ð’Ñрнуць" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Так" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Так" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Уверх" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Уніз" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Улева" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Управа" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/sl.mo0000644000175100001660000015663415011674351011110 Þ• ‹*H8 I8 U8&`8‡8<›8Ø8Jë8g69 ž9¨9 ·9Á9 È9Ö9Ý9ã9ë9ò9ù9ÿ9::%:+:1:::N:b:f:x:Š::•::¥:·:É:Í: Ñ: Þ:ë:ô:ý: ;;!;7;M;\;x;”;š; ;©;¯;¸;Ï; æ; ô; <<<1<M<f<<–<­<³<¸<Ï<ß< ý< ===$=-= 1= ==J= Y=e= u== ›=¨= ·=Ã=Ó=ç=> >+>H>h> ~> ‹>1—>'É>ñ>? (?3?79?6q?¨?)È?ò? ÷?]@`@<s@D°@$õ@A !A€.A¯A ¶A"ÄAçA+B).B XBcBuB‡B˜B«B´BÇBãBÿB#C8CMC\C bCmC CŠCœC¢C¨C¹C%ÊCðC D,D4D=DUD fDtD/D ¿DkÌD8E=EPEfEyEE-®E1ÜEF 'F2F)IFsF “F¡F¦F¹FÌFáFåFüFG"G3GRGaGtG;‡G ÃG'ÐG^øGLWH?¤H äH òHÿH*I=I"PI5sI©IÄIßIåIøI ýI J J &J 3J@JQJYJaJhJfzJáJûJuK‹KžK"°KÓK ÚKåKôK LL$L05LfL€L#•L<¹LöL M*M0ZMZ \ZhZpZxZ€Z†Z›Z°ZÅZßZp[v[Œ[=’[Ð[1ã[\n.\E\ã\ê\;] ?]M]T]@n]õ¯]¿¥^,e_,’_¿_ Ñ_ß_2î_*!`L`Ž_`wî`jfa ÑaÝaìaûa%b6bKb`bub‡b™b ³bÁbÊbÓbæbìbc8 c EcRcWc _c kc wc…c"Œc"¯cÒc Úc çcôc d(d;dAdzZdÕdædíd òd þd e e"e *e 5e Be Le Ye eepe‹eœe"´e×eóe f f,f 5f AfNfhfxfˆf ›f ¨f¶fÇfÖf ïfüf g g*g2g:gCg KgYgrg…gžg§g°g Ág Îg Úgçgûg h h4hDhYh†nhõhi &i2iAiTi eisi „i’iK™iåiúi jj,j?jUj1qj£j ²j ÀjŽÌj=[k™kll(0lYl alol+Œl¸l »l8Ål"þl!mÂ2mõmCn8TnînŸ|o8p1UpR‡pcÚpQ>qq'«q:ÓqlrP{r-ÌrCúrA>sK€s0Ìs.ýsŽ,t!»t)Ýt-u+5u8auCšuuÞu,TvLv;Îv] w…hwJîwc9x[xoùx«iy7zmMz_»z[{w{}{{¥{ Â{Î{ã{ö{|2%|"X|{|“|ª|~Â|qA}³}ˆÆ}O~S~g~ l~~ ~ ·~Å~Í~ Ô~"ß~$'@Yjz‹£²ºÊà$ý"€B€\€r€ˆ€#¥€VÉ€ 7@ S^|Ž©ºÁ.É ø‚ ‚%‚H)‚5r‚m¨‚7ƒ Nƒ3XƒaŒƒîƒóƒøƒ.„ D„e„„¡„¸„ʄ݄…'…;…K…\…n……š…²…Î…í…††7†M†^†w†!‡†Ü©††ˆ•ˆI¤ˆ#&¢‰€É‰ÊJŠ ‹ ‹ -‹7‹I‹Z‹c‹ j‹ u‹‹†‹ ‹™‹¯‹Å‹ Ì‹ Ö‹á‹ù‹ŒŒ,Œ@ŒHŒMŒ UŒbŒtŒ†ŒŠŒ‘Œ¡Œ ±Œ ¼ŒÇŒ Ќ݌íŒÿŒ <X_ gq y…ž·ÆÕ Ý鎎7ŽQŽmŽ‰Ž‘Ž•Ž®Ž ¾Ž ߎ ìŽúŽÿŽ#6 ESm|‘¤ ³ÁÛó$ =$^ƒœ«7´.ì ‘ <‘]‘c‘>k‘?ª‘$ê‘/’?’ E’dR’·’SÎ’U"“%x“ ž“¨“˜»“ T” ^”#j”Ž”0®”4ß”•,•A•W•&l• “•¡•/·•!ç• –'–@–_–r– {–‰– ™–§–·–½–ÖÔ–å–—"—A— J—T—i— z—ˆ—6¦— Ý—€ç—h˜p˜‹˜©˜Ę&â˜7 ™=A™™ Ÿ™«™#¾™â™ššš0šEšbš"jšš–š¶šÊšêšûš ›>›]›%c›y‰›Cœ?Gœ ‡œ ’œœœ5­œãœ%ôœ.Ii‰£©¹ÉØ ç õž ž ž žy5ž¯žÈžcážEŸ cŸ'„Ÿ¬Ÿ³Ÿ·ŸÈŸÙŸèŸúŸ4  @ W !p 9’ Ì  ä -ð ;¡1Z¡-Œ¡º¡áß¡'û¡]#¢¢‡¢œ¢±¢Ê¢Þ¢ü¢£%£ :£ H£ V£ d£r£ £™£ ´£À£ É£×£Þ£õ£ ¤$¤B¤£E¤é¤ˆw¥¦¦¦-¦J¦[¦x¦ަ”¦­¦ͦâ¦÷¦ÿ¦§§6§=§'Q§y§–§ ¥§²§ŧ̧ ᧨ ¨ (¨2¨DA¨ †¨8”¨ͨ’â¨<u©²©Ë©%æ©# ª0ª BªPª hª,sª ª¥ª¼ªÓªæªùªß«ò«÷«¬ /¬9¬U¬q¬ t¬#€¬E¤¬ ê¬,ö¬5#­Y­%o­*•­À­Õ­Ü­Àá­¢®À® Ù®&箯$¯=¯L¯a¯ v¯ „¯ ޝ ˜¯¢¯¨¯¿¯Ö¯ð¯p °|°„°œ°>¡°à°#ö°±t0±E¥±ë±ô±F²V²i²!p²A’²óÔ²¬È³6u´'¬´Ô´é´ù´` µ/lµœµ‹³µ}?¶f½¶ $·/·>·M·&`·‡·£·¿· Ú· ç·ô· ¸¸'¸0¸C¸L¸g¸8m¸¦¸·¸¾¸Ƹݸ ô¸¹ ¹",¹O¹ X¹ f¹t¹ ƒ¹8¹ ɹÓ¹|ð¹mº€ºˆººŸº ®º ¼º ʺÕºäºõº» » #».» J»X»"r»•»¬» û Ñ» ß» ê»ø»¼2¼I¼[¼n¼†¼™¼°¼#¿¼ã¼ý¼½)½<½M½U½\½ d½n½нœ½¸½¿½ƽâ½ö½¾¾1¾C¾X¾o¾¾–¾¢°¾S¿m¿‹¿œ¿²¿Ê¿ à¿ë¿ À ÀGÀZÀqÀÀÀ£À²ÀÉÀ$àÀ Á ÁÁƒ$Á9¨Á|âÁ_ÂgÂ{ –£Â!·Â1Ù à Ã5Ã&QÃxþ‹Ã$JÄMoÄ6½ÄéôıÞÅ=Æ0ÎÆPÿÆaPÇV²Ç È*&È*QÈg|ÈXäÈ!=ÉC_ÉA£ÉGåÉ4-Ê"bÊ …Ê!¦Ë&ÈË(ïË"Ì$;Ì<`ÌÌ-ÍdKÍ7°Ílè͆UÎLÜÎs)Ïaχÿϼ‡Ð/DÑtÑeôÑhZÒÃÒ ÊÒØÒñÒ Ó ÓÓ2ÓNÓ=`Ó$žÓÃÓßÓñÓ‚Ôe…Ô ëÔ†ùÔ€Õ„Õ ™Õ¤Õ½ÕÑÕéÕ øÕÖ ÖÖ39ÖmÖŠÖ¨Ö¹ÖÒÖãÖüÖ ××0×(G×#p×”×°×Ç×Ý×'ý×$%ØdJدØÊØÝØ óØ&Ù(Ù=ÙXÙgÙ lÙ7wÙ¯Ù ÀÙÌÙåÙGèÙ90Ú[jÚ?ÆÚ Û=Û>NÛÛ ’ÛœÛ3¯Û ãÛÜ+$Ü"PÜ sÜÜˆÜ ÜšÜŸÜ ¥Ü¯Ü ·ÜÂÜÊÜÓÜØÜ áÜíÜ üÜÝ Ý&Ý EÝSÝ mÝ {ÝÓ¢hå` »•ŠðQ@/Ä{j @È׋ËïBxÖ“eïe|”3é4‘µi-l‰²Y™/fHÎã%cš*^r#pÝŸ»²g‹Ê-!…œÑ7yÛa/ÿ‡lùC™hDøo†W€^•ŒàKá ƒÜByV‚@¢?%æÁàטڌ'2#zm p³nVJOŒ§&œR–þ ÙÍËÉŽç’„ä¤w^¯;9üj«M8) uýíj5qè÷¼ k;{b¤<9ƒ~cX6ðö‹…¹núfdT§<‰âS01Ó, N¬wW†X¼—çC.¡]É ë—‘ ·Òœ›|<Å–iî®›°òÈ}: ¥uØ`ytF¸5)“ÿ±[ [Sl°b3TÔ´³o…$ÍU]zô*)¹ãÆV'â0ÀhoN£SŠÎ¦K¥ép ›YE‡?>RP†Ž4õ1 ´!áe½¶!—?\Pì"î_=.QDÑŠÏì3ÐÂø:sW‡ÃÅ€\ßåRP|v#F2š1T>Ax x'GB“=Ì.`F$®H¿Eq,ÜU¬Aý5­IMqZ%6&LÔäÙ=dÁþæNž((_„Âê©ÄßQZAˆ ¦uÇÕÚ}c€DªXƒ˜êµ‚¾v¨4ÖY¸Cë \Ÿˆ(m’IvZOg™šGwñóõÌ ~9•ñHmó”’À£üº{ŸLíò:¨"Þ÷J +«]gž­è‘}_úk¯"ÒùºÝz86·ÃO7kö¡M0[½Ûs‚;iKŽØs-©7Ær+~ÊÕEa±¿žUǘ Þ8Lt&aI,Ï2d¾‰*ª>Gû¶nôfr„tˆ+JbÐû”$– (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Slovenian Language: sl_SI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3; X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: sl X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (spremenjeno) (neshranjeno)%d pojavitvi kode%d pojavitvi kode%d pojavitev kode%d pojavitev v kodi%d vnos%d vnosa%d vnosi%d vnosov%d vnos je bil vnaprej preveden.%d vnosa sta bila vnaprej prevedena.%d vnosi so bili vnaprej prevedeni.%d vnosov je bilo vnaprej prevedenih.%d napaka%d napaki%d napake%d napakNajdena je %d napaka v prevodu.Najdeni sta %d napaki v prevodu.Najdene so %d napake v prevodu.Najdenih je %d napak v prevodu.%i vrstica datoteke "%s" ni pravilno naložena.%i vrstici datoteke »%s« nista pravilno naloženi.%i vrstice datoteke »%s« niso pravilno naložene.%i vrstic datoteke »%s« ni pravilno naloženih.Oblika %sNastavitve %sOblika %s&Vizitka programa&Vizitka Poedita&UporabiNaza&jPre&kliÄiPo&Äisti&Zapri&Kopiraj&IzbriÅ¡i&DokonÄano in naprej&DokonÄano in naprej&Uredi&Datoteka&Najdi …PriroÄnik GNU &gettextPriroÄnik GNU &gettext&Pojdi&Združi po vsebini&Združi po vsebiniPo&moÄ&Nov&Nov…&Naslednji >&Naslednji prevod&Naslednji prevod&NeV&reduSpletna pomo&ÄSpletna pomo&Ä&Odpri ...&Odpri …&PrilepiNas&tavitve &Nastavitve ...&PrejÅ¡nji prevod&PrejÅ¡nji prevod&Lastnosti ...&PoÄisti izbrisane prevodePoÄi&sti izbrisane prevodeI&zhod&Povrni&Zamenjaj&Shrani&Shrani kotPrikaži poja&vitve kode&Prikaži pojavitve kode&ZaÄetno okno&ZaÄetno okno&Prevod&Razveljavi&Najprej neprevedeni nizi&Najprej neprevedeni nizi&Posodobi iz izvorne kode&Posodobi iz izvorne kode&Preveri ustreznost prevoda&Preveri ustreznost prevoda&Pogled&Da(uporabi privzeti jezik)(niste vpisani)(zahteva Windows 8 ali novejÅ¡e)< &PrejÅ¡njiO %sRaÄunRaÄuniDodajDodaj komentarDodaj datoteke ...Dodaj mape ...Dodaj projektDodaj nadomestni znak ...Dodaj komentarDodaj mapo na seznamDodaj datoteke ...Dodaj mape ...Dodaj projektDodaj nadomestni znak ...Dodatne kljuÄne besedeDodatne zastavice xgettext:NaprednoNapredne nastavitve razÅ¡irjanja ...Napredne nastavitve razÅ¡irjanjaNapredne nastavitve razÅ¡irjanja ...Vse prevajalske datotekeVsi komentarjiVsi niziUporabi tudi privzete kljuÄne besede za podprte jezikeVedno spremeni fokus na polje za vnos besedilaVnos na seznamu vhodnih datotek:Vnos na seznamu kljuÄnih besed:VidezUporabiAli ste prepriÄani, da želite izbrisati razÅ¡irjevalca "%s"?Ali ste prepriÄani, da želite ponastaviti pomnilnik prevodov?Samodejno preveri obstoj posodobitveMed shranjevanjem samodejno ustvari datoteko MONazajOsnovna pot:RazliÄice beta vsebujejo najnovejÅ¡e izboljÅ¡ave, vendar pa je lahko delovanje programa nestabilno.Postavi vse v ospredjePoÅ¡kodovana datoteka PO: množinska oblika msgstr je uporabljena brez msgid_pluralPoÅ¡kodovana datoteka PO: edninska oblika msgstr je uporabljena skupaj z msgid_pluralOkvarjena oznaka v prevajalskem nizu.PrebrskajPrebrskaj datotekePrivzeto so vkljuÄeni tudi netoÄni rezultati, vendar oznaÄeni kot potrebni dela. OznaÄite to možnost, Äe želite vkljuÄiti samo popolna ujemanja.PrekliÄiPreklic …Ni mogoÄe ustvariti zaÄasne mape.Ni mogoÄe izvesti programa: %sNi mogoÄe vnaprej prevesti iz neznanega jezika.Ni mogoÄe vnaprej prevesti brez izvornega besedila.Z velikimi zaÄetnicamiUpravitelj katalogov&Upravitelj katalogovUpravitelj katalogovSpremeni jezik uporabniÅ¡kega vmesnikaNabor znakov:Preveri dokument zdajOb preverjanju Ärkovanja preveri tudi slovnicoPreverjanje Ärkovanja med vnosomPreveri obstoj posodobitev…Preveri napake v prevoduPreveri obstoj posodobitev ...Preveri ÄrkovanjePoÄistiPoÄisti meniPoÄisti prevodPoÄisti meniPoÄisti prevodZapriOblakPojavitve v kodiPojavitve v kodiSodelujte z drugimi na spletu.Zbiranje izvornih datotek …Ukaz za razÅ¡irjanje prevodov:KomentarKomentar:Pripombe s predpono:Prevedi v MO ...Prevedi v …Pretvorjene prevodne datotekeKonfigurirajte razÅ¡irjanje izvorne kode v Lastnostih.PotrditevPovežite Poedit s podprtimi platformami za lokalizacijo v oblaku, da nemoteno sinhronizirate prevode, ki se upravljajo na njih.KopirajKopiraj iz edninske oblikeKopiraj iz izvornega besedilaKopiraj iz edninske oblikeKopiraj iz izvornega besedilaSamodejno odpravljaj napake ÄrkovanjaNi bilo mogoÄe prenesti podrobnosti projekta Localazy.Datoteke ni bilo mogoÄe naložiti, verjetno je poÅ¡kodovana.Datoteke %s ni možno shraniti.Ustvari novUstvari nov prevodUstvari nov prevod iz predloge POT.Ustvari nov projekt prevajanjaNapaka v CrowdinI&zrežiPretvorniki po meri:Pretvorniki po meri:Prilagodi orodno vrstico …IzrežiVelikost zbirke podatkov na disku:IzbriÅ¡iIzbriÅ¡i iz pomnilnika prevodovIzbriÅ¡i pretvornikIzbriÅ¡i iz pomnilnika prevodovIzbriÅ¡i projektIzbriÅ¡i komentarIzbriÅ¡i projektBrisanje projekta ne bo izbrisalo nobene prevajalske datoteke.Mape:Ali želite izbrisati projekt »%s«?Ali želite datoteko znova naložiti z diska? V nasprotnem primeru bodo vaÅ¡e neshranjene spremembe v Poeditu izgubljene.Ali želite odstraniti vse prevode, ki so enaki izvornemu besedilu?Ali res želite odstraniti vse prevode, ki niso veÄ v uporabi?&Ne shraniNe shraniNe prikazuj veÄNatanÄnih ujemanj ne oznaÄi kot potrebnih predelaveNe prikazuj veÄPrenaÅ¡anje najnovejÅ¡ih prevodov ...Prenos prevodov je v tem projektu onemogoÄen.Sem povlecite mape ali datotekeSem povlecite mape ali datotekeIz&hodIzvozi v &HTML …UrediUredi &komentarUredi &komentarUredi komentarUredi komentarUredi projektUredi projektUrejanjeUredi ...E-poÅ¡ta:Celozaslonski naÄinVnosi v tej datoteki imajo razliÄno Å¡tevilo oblik množine, od tistega, kar piÅ¡e v glavi 'Množinske oblike', datotekeNajprej vnosi z napakamiNajprej vnosi z napakamiVnosi na seznamu z napakami so oznaÄeni z rdeÄo barvo. Podrobnosti napake so prikazane ob izboru.Napaka pri odpiranju datotekeNapaka pri shranjevanju datotekeNapaka pri nalaganju datoteke XLIFF: %sNapakeVseIzkljuÄene potiIzvozi v TMX …Izvozi kot ...Izvozi v HTML …Izvozi v TMX …Izvažanje pomnilnika prevodov v "%s" je spodletelo.Izvažanje prevodov…RazÅ¡iri iz izvorne kodeRazÅ¡iri opombe za prevajalce iz:RazÅ¡iri besedilo iz izvornih datotek v naslednjih mapah:Nastavitve pretvornikovPretvornikiPovezovanje s programom Poedit je spodletelo.Datoteke z razÅ¡irjenimi prevodi ni bilo mogoÄe naložiti.Povezovalnih katalogov ni bilo mogoÄe združiti.Ni uspela posodobitev pomnilnika prevodov: %sDatotekaDatoteke ni mogoÄe odpretiDatoteka »%s« ne obstaja.Datoteka »%s« ni datoteka s prevodom.Datoteka "%s" je le za branje in je ni mogoÄe shraniti. Shranite jo lahko pod drugim imenom.NajdiPoiÅ¡Äi naslednjegaPoiÅ¡Äi prejÅ¡njegaPoiÅ¡Äi in zamenjaj …Najdi v komentarjihPoiÅ¡Äi v izvirnih besedilihPoiÅ¡Äi v prevodihPoiÅ¡Äi naslednjegaPoiÅ¡Äi prejÅ¡njegaPopravi jezikPopravi jezikPopravi glavoPopravi glavoPrevajalske datoteke FlutterOblika %iOblika %i (ni uporabljeno)GNU gettextSploÅ¡noDatoteke HTMLPomoÄSkrij stransko vrsticoSkrij vrstico stanjaSkrij to obvestiloKako deluje sinhronizacija v oblaku?IDÄŒe prevode poÄistite, bodo vsi, ki so oznaÄeni kot izbrisani, trajno izgubljeni. V kolikor se ti nizi v prihodnje znova pojavijo, jih bo treba ponovno prevesti.ÄŒe ste prej zavrnili dostop do vaÅ¡ih datotek, lahko to dovolite v Nastavitve sistema > Varnost in zasebnost > Zasebnost > Datoteke in mape.ÄŒe ste predhodno zavrnili dostop do svojih datotek, ga lahko dovolite v Nastavitve sistema -> Zasebnost in varnost -> Datoteke in mape.PrezriPrezri velikost ÄrkUvozi iz TMX …Uvoz datoteke s prevodom …Uvozi iz TMX …Uvoz datoteke s prevodom …Uvažanje prevodov…V: %sVkljuÄi razliÄice betaNedosledena V/m Ärka presledekNedosleden presledekPodatki o prevajalcuNamestiNeveljavna datotekaPriklic:Prevajalske datoteke JSONOhraniIme ali koda jezikaJezik prevoda je enak izvornemu jeziku.Jezik prevoda ni nastavljen.Jezik prevoda:Izbor jezikaEkipa prevajalcev:Jezik:ZadnjiÄ spremenjenoVeÄ o gettext kljuÄnih besedahVeÄ o množinskih oblikahVeÄ o temVeÄ o %sVeÄ o CrowdinVrstica %d datoteke "%s" je poÅ¡kodovana (niso veljavni %s podatki).Konci vrstic:Seznam konÄnic, loÄenih s podpiÄjem (npr. *.cpp;*.h):Naloži angleÅ¡ÄinoLocalazy je visoko avtomatizirana lokalizacijska platforma, ki vsakomur omogoÄa enostavno prevajanje njihovih izdelkov in vsebine v veÄ jezikov.Datotek MO ni mogoÄe neposredno urejati s programom Poedit.IzpiÅ¡i z malimi ÄrkamiIzpiÅ¡i z velikimi ÄrkamiNaredi nov prevod iz te datoteke POT.Nepravilno oblikovana glava: »%s«Upravljaj raÄuneUpravljaj …Združevanje razlik …PomanjÅ¡ajIme projekta, za katerega je prevod namenjenIme:&Naslednji nedokonÄan&Naslednji nedokonÄanPotrebno predelavePotrebno predelaveOmrežna napaka: %s (%d)Nikoli ne dovoli postavitve seznama nizov v fokus. ÄŒe je omogoÄeno morate uporabiti tipke Ctrl+Smerne tipke za premikanje vendar lahko takoj tudi tipkate besedilo brez predhodno pritisnjene tipke Tab, za spremembo fokusa.NovoNov iz datoteke &POT/PO …Nov iz datoteke &POT/PO …Novi niziNaslednja množinska oblikaNaslednja množinska oblikaNeNi zadetkovNoben vnos ni bil vnaprej preveden.Ni podatkov o pojavih tega niza v izvorni kodi zagotovljene datoteke.Ni zadetkovNi bilo najdenih nobenih težav pri prevodu.V vaÅ¡em raÄunu ni navedenih prevajalskih projektov.Ni podatkov o uporabiVse množinske oblike niso prevedene.Niste pooblaÅ¡Äeni, ponovno se prijavite.Opombe za prevajalceV reduEdenOmogoÄite to možnost le, Äe zaupate kakovosti vaÅ¡ega pomnilnika prevodov. Vsa ujemanja iz njega so privzeto oznaÄena kot potrebna predelave in jih je treba pred uporabo skrbno pregledati.Zapolni le natanÄna ujemanjaOdpri prevod v oblaku…Odpri nedavneOdpri in uredi datoteke za prevajanje.Odpri prevod v oblakuOdpri prevod v oblaku…Odpri datotekoOdpri v urejevalnikuOdpri v urejevalnikuOdpri nedavnoOdpri ...Odpri ...MožnostiDrugo&PrejÅ¡nji nedokonÄan&PrejÅ¡nji nedokonÄanDatoteke PO za prevajanjePredloge POT za prevajanjePOT datoteke so samo predloge in ne vsebujejo prevodov. Za prevod ustvarite novo datoteko PO na osnovi predloge.PrilepiPrilepi in uskladi slogPotiIzvede posodobitev iz izvorne kode za vse datoteke v projektu.Dovoljenje zavrnjeno.V prevodu manjka oznaka mesta "%s".Pravilnost oznak mestPoskusite odpreti in urediti ustrezno datoteko PO. Ko jo shranite, bo posodobljena tudi kodno prevedena datoteka MO.Najprej shranite datoteko. Do tedaj, tega oddelka ni mogoÄe urejati.MnožinaMnožinske oblike prevodovIzraz množinskih oblik, ki ga uporablja datoteka, je nenavaden za %s.Množinske oblike:PoeditPoedit – upravljalnik katalogovProgram je samodejno popravil neveljavno vsebino v datoteki "%s".Poedit lahko poskusi zapolniti na novo dodane nize zgolj iz prevodov, ki so že v datoteki ali pa iz pomnilnika prevodov. Uporaba pomnilnika ne bo uÄinkovita, Äe je ta prazen, vendar se bo izboljÅ¡ala, ko boste vanj dodali Å¡e veÄ prevodov.Poedit ne more prikazati izvorne kode, kjer se niz uporablja, ker datoteka bodisi ni na voljo na mestu sklica ali pa je ta sklic simbolen in ne kaže na resniÄno datoteko.Poedit je enostaven in priroÄen urejevalnik prevodov.Poedit ne more odpreti datoteke »%s«.Vnapre&j prevedi ...Prevedi vnaprejVnaprej prevedenoVnaprej preveden niz %uZapolnjena sta %u nizaZapolnjeni so %u niziVnaprej prevedenih %u nizovPredhodno prevajanje iz pomnilnika prevodov …Prevajanje vnaprej ...VnaprejÅ¡nji prevod samodejno najde natanÄna ali približna ujemanja neprevedenih nizov v pomnilniku prevodov ter zapolni njihove prevode.Predhodni prevod zahteva, da je na voljo izvorno besedilo. Ne deluje, Äe se uporabljajo samo ID-ji brez dejanskega besedila.VnaprejÅ¡nji prevod zahteva znani jezik izvornega besedila. Poedit ga v tej datoteki ni mogel zaznati.NastavitveNastavitve ...Nastavitve ...Priprava nizov …Ohrani oblikovanje obstojeÄih datotekPrejÅ¡nja množinska oblikaPrejÅ¡nja množinska oblikaPrejÅ¡nje izvorno besediloPrej urejenoPrej urejenoIme in razliÄica projekta:Ime projekta:Projekt:ProjektiPreverjanja loÄilPoÄistiOdstrani izbrisane prevodeIzhodBranje vsebine datoteke ni uspelo z naslednjo napako: %sNedavne datotekePovrniOsvežiZnova naloži datotekoZnova naloži datotekoPreostalo: %dOdstraniOdstranite prevode istega izvoraOdstrani prevode, ki so enaki viruZamenjajZamenjaj &vseZamenjaj &vseNadomestni nizZamenjaj …V glavi manjka zahtevano doloÄilo za množinske oblike.PonastaviPonastavi pomnilnik prevodovPonastavitev pomnilnika prevodov bo nepovratno izbrisala vse njegove shranjene prevode. Te operacije ne morete razveljaviti.Razkrij v FinderjuPregledShraniShrani &kot …Shrani &kot…Vseeno shraniVseeno shraniShrani kotShrani kot …Shrani spremembeShrani datotekoPosnetki zaslona:Izberi &vseIzberi vseIzberi datoteke TMX za uvozIzberite mapoIzberi datoteko za prevodIzberite prevodne datoteke za uvozIzberi pedlogo prevodaIzberite želeni jezikNastavi jezikNastavi jezikNastavitveNastavitve…Prikaži stransko vrsticoPrikaži Ärkovanje in slovnicoPokaži vrstico stanjaPrikaži &ID nizaPrikaži zamenjavePrikaži orodno vrsticoPrikaži opozorilaPokaži v RaziskovalcuPokaži v mapiPrikaži ali skrij stransko vrsticoPrikaži stransko vrsticoPrikaži statusno vrsticoPrikaži &ID nizaPrikaži opozorilaStranska vrsticaPrijavaOdjavaPrijaviVpis v %sVpiÅ¡i se v raÄun v oblakuPrijava v CrowdinVpiÅ¡i se v raÄun v oblakuOdjaviEdninaPametno kopiranje/lepljenjePametni pomiÅ¡ljajiPametne povezavePametni narekovajiRazvrsti po &datotekahRazvrsti po &viruRazvrsti po &prevoduRazvrsti po &datotekahRazvrsti po &viruRazvrsti po &prevoduKodni nabor izvorne kode:Pretvorniki se uporabljajo za izloÄevanje prevedljivih nizov iz datotek izvorne kode. Po pretvarjanju so nizi zbrani v datoteke, ki jih je nato mogoÄe prevesti.Izvorna koda ni na voljo.Izvorne kode ni mogoÄe najtiIzvorno besediloID izvornega besedilaIzvorno besedilo — %sKljuÄne besede virovPoti virovKljuÄne besede virovPoti virovGovorPreverjanje Ärkovanja je onemogoÄeno, ker ni nameÅ¡Äen slovar za %s.ÄŒrkovanje in slovnicaZaÄni govoritiNehaj govoritiShranjeni prevodi:Zveza niza: %sIdentifikator niza: %sDolžina niza v znakihDolžina niza v znakih: prevod | virIskalni nizZamenjavePredlogiPredlogi niso na voljo, Äe jezik prevoda ni pravilno nastavljen. To lahko vpliva tudi na druge funkcije, kot so množinske oblike.OdveÄna oznaka mesta "%s", ki je ni v izvornem besedilu.Podpira vse programskih jezikov, prepoznanih z orodji GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript in drugi).UskladiUskladi s CrowdinomUskladi prevod s CrowdinomUsklajevanjeNapaka usklajevanjaUsklajevanje s Crowdin ni uspelo.Napaka skladnje v glavi množinskih oblik ("%s").PPDatoteke TMXPrevzame prevedljive nize iz obstojeÄe predloge POT.Ime ekipe ter e-poÅ¡tni naslov ali URLZamenjava besedilaPomnilnik prevodov ne vsebuje nobenih nizov, podobnih vsebini te datoteke. UÄinkovit je le za polavtomatske prevode potem, ko se Poedit dovolj nauÄi iz datotek, ki ste jih roÄno prevedli.Datoteka TMX ni pravilno oblikovana.Spremembe, ki jih je naredila druga aplikacija bodo izgubljene, Äe shranite.Datoteke ni mogoÄe prevesti v format MO in uporabiti.Datoteka je vsebovala podvojene vnose, ki niso dovoljeni v datotekah PO in bi prepreÄili uporabo datoteke. Poedit je odpravil težavo, vendar bi morali pregledati prevode vseh vnosov, oznaÄenih za delo, in jih po potrebi popraviti.Datoteke ni mogoÄe shraniti v naboru znakov "%s", kot je doloÄeno v nastavitvah prevajanja. Namesto tega je bila shranjena v UTF-8 in nastavitev je bila ustrezno spremenjena.Datoteka je bila spremenjena. Ali želite shraniti spremembe?Datoteka je v formatu, ki ga Poedit ne prepozna.Datoteka je bila prevesena v format MO, vendar verjetno ne bo delovala pravilno.Datoteka je bila varno shranjena in zbrana v formatu MO, vendar verjetno ne bo delovala pravilno.Datoteka je varno shranjena, vendar je ni mogoÄe prevesti v format MO in uporabljati.Datoteka je varno shranjena.Datoteke “%s†ni bilo mogoÄe odpreti.Datoteko »%s« je spremenil drug program.Stari vir besedila (preden je bil spremenjen med posodobitvijo), da je nepravilen prevod zdaj ustrezen.NajpreprostejÅ¡i naÄin zapolnitve te datoteke s prevodi je posodobitev iz datoteke POT:Prevod se ne zaÄne s presledkom.Prevod se konÄa z novo vrstico, ki ne obstaja v izvornem besedilu.Prevod se konÄa s presledkom, ki ne obstaja v izvornem besedilu.Prevod se konÄa z znakom "%s", toda izborno besedilo se konÄa z "%s".Nizu prevoda manjka na koncu oznaka za novo vrstico.Na koncu prevoda manjka presledek.Prevod je pripravljen za uporabo, vendar pa %d nizov Å¡e ni prevedenih.Prevod je pripravljen za uporabo, vendar pa %d niza Å¡e nista prevedena.Prevod je pripravljen za uporabo, vendar pa %d nizi Å¡e niso prevedeni.Prevod je pripravljen za uporabo, vendar pa %d nizov Å¡e ni prevedenih.Prevod je pripravljen za uporabo.Prevod se mora konÄati z znakom "%s".Prevod se ne sme konÄati z znakom "%s".Prevod se mora zaÄeti kot stavek.Prevod se mora zaÄeti z malo Ärko.Prevod se zaÄne s presledkom, ki ga NI v izvornem besedilu.Prevodi so bili oznaÄeni kot kot potrebni predelave, ker so morda netoÄni. Zaradi pravilnosti bi jih morali pregledati in ustrezno popraviti.Ni prevodov. To je nenavadno.PriÅ¡lo je do težav pri pravilnem oblikovanju datoteke (datoteka je bila sicer uspeÅ¡no shranjena).Pri nalaganju prevodov v Localazy je priÅ¡lo do napake.Pri nalaganju datoteke je priÅ¡lo do napak. Nekateri podatki morda zaradi tega manjkajo ali so poÅ¡kodovani.Te nastavitve vplivajo na notranje oblikovanje datotek PO. Prilagodite jih, Äe imate posebne zahteve, npr. zaradi nadzora razliÄice.Ta datoteka JSON ni prevajalska datoteka in je ni mogoÄe urejati v Poeditu.S tem dejanjem bo izbrisan prevod, ki je povsem skladen z izvornim besedilom. Tega dejanja ni mogoÄe razveljaviti.V tej datoteki so vnosi z množinskimi oblikami, vendar ni nastavljena glava 'Množinske oblike'.Ta datoteka uporablja ID-je nizov namesto izvornega besedila. Poedit lahko namesto vas naloži angleÅ¡ka besedila iz datoteke “%sâ€.To je ukaz za zagon razÅ¡irjevalnika. %o se razÅ¡iri v ime izhodne datoteke, %K v seznam kljuÄnih besed, %F v seznam vhodnih datotek, %C pa v zastavico kodnega nabora (oglejte si spodaj).Ta niz se nahaja v pomnilniku prevodov Poedita.Zastavica bo dodana ukazni vrstici le, Äe je podan nabor znakov izvorne kode. Parameter %c razÅ¡iri vvrednost kodnega nabora.Zastavica bo dodana ukazni vrstici za vsako vhodno datoteko. Parameter %f se razÅ¡iri v ime datoteke.Zastavica bo dodana ukazni vrstici za vsako kljuÄno besedo. Parameter %k se razÅ¡iri v kljuÄno besedo.SkupnoPreobliovanjaPrevedi projekt v oblakuPrevedeno: %d %d (%d %%)PrevodJezik prevodaPomnilnik prevodovPrevo&d potrebuje predelavoLastnosti prevodaZbirka podatkov pomnilnika prevodov je poÅ¡kodovana: %s (%d).Napaka pomnilnika prevodov: %s (%d).Prevo&d potrebuje predelavoLastnosti prevodaPredlogi prevodaPredlogi prevodov zahtevajo, da je na voljo izvorno besedilo. Ne delujejo, Äe so uporabljeni samo ID-ji brez dejanskega besedila.Predlogi prevoda zahtevajo znani jezik izvornega besedila. Poedit ga v tej datoteki ni mogel zaznati.Prevod — %sPrevoda ni mogoÄe posodobiti iz izvorne kode, ker na mestu, ki je doloÄeno v lastnostih datoteke, ni bilo mogoÄe najti nobene kode.DvaUTF-8 (priporoÄeno)RazveljaviNeobravnavana izjema: %sUnix (priporoÄeno)Neznana napaka Crowdin.Neznana napakaNeprevedenoPosodobiPosodobi vsePosodobi vse kataloge projektaAli želite posodobiti vse kataloge v tem projektu?Posodobi z datoteko &POT ...Posodobi iz datoteke &POT …Posodobi iz kodePosodobi iz datoteke POTPosodobi iz kodePosodobi iz izvorne kodePosodobi povzetekPosodobitvePosodobitev ni uspelaPosodabljanje prevodovPosodabljanje uporabniÅ¡kih podatkov …Ni uspelo nalaganje prevodov na %s.Nalaganje prevodov na %s…Nalaganje prevodov …Uporabi izraz po meriUporabi pisavo seznama po meri:Uporabi pisavo po meri besedilnih polj:Uporabi privzeta pravila za ta jezikUporabi te kljuÄne besede (imena funkcij) za prepoznavanje prevedljivih nizov v izvornih datotekah:Uporabi pomnilnik prevodovPreveri ustreznostRezultati preverjanjaRazliÄica %sÄŒakanje na preverjanje pristnosti …DobrodoÅ¡li v PoeditPri posodabljanju iz virovLe cele besedeOknoMS WindowsAli želite za izvorno besedilo uporabiti angleÅ¡Äino?Prelomi besediloPrelomi na:Datoteke s prevodi XLIFFDaPrav tako lahko razÅ¡irite prevedljive nize neposredno iz izvorne kode:Ni mogoÄe povleÄi veÄ kot ene datoteke v okno Poedita.Nimate dovoljenja za branje datotek izvorne kode z mesta, navedenega v lastnostih datoteke.Poedit morate ponovno zagnati, da bo sprememba zaÄela veljati.VaÅ¡e imeÄŒe opravljenih sprememb ne shranite, bodo trajno izgubljene.Ime in elektronski naslov se zavedeta v datotekah GNU gettext.NiÄPoveÄavaPotrebno predelavene izbriÅ¡i zaÄasnih datotek (za razhroÅ¡Äevanje)npr. nplurals=2; plural=(n > 1);mehko ujemanje znotraj datotekepojdi na element v vrstici z dano Å¡tevilkoupravljaj z naslovom URI poedit://Izmenjalka+Krmilka+NavzdolVnaÅ¡alkaLevoDesnoDvigalka+NavzgorizmenjalkakrmilkadvigalkaO %sSkrij %sSkrij drugeNastavitve ...Izhod iz %sStoritvePrikaži vsevnaprej prevedi iz pomnilnika prevodovneznani jeziknepodprta razliÄica (%s)vi@primer.com»%s« ni veljavna datoteka POT.poedit-3.6.3/locales/cs.po0000644000175100001660000027267715011674363011113 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: cs\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Schovat toto oznámení" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "PříštÄ› nezobrazovat" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "PříštÄ› nezobrazovat" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Výsledek aktualizace" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Výsledek aktualizace" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Zavřít" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problémy" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Soubor" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Řádek" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problém" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Nové Å™etÄ›zce" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Nové Å™etÄ›zce" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "OdstranÄ›né Å™etÄ›zce" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "OdstranÄ›né Å™etÄ›zce" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Probíhá shromažÄování zdrojových souborů…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Probíhá extrakce pÅ™eložitelných Å™etÄ›zců z %s souboru…" msgstr[1] "Probíhá extrakce pÅ™eložitelných Å™etÄ›zců ze %s souborů…" msgstr[2] "Probíhá extrakce pÅ™eložitelných Å™etÄ›zců z %s souborů…" msgstr[3] "Probíhá extrakce pÅ™eložitelných Å™etÄ›zců z %s souborů…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "NepodaÅ™ilo se naÄíst soubor s rozbalenými pÅ™eklady." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "V %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Zdrojový kód není k dispozici." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "PÅ™eklady nebylo možné aktualizovat ze zdrojového kódu, protože v umístÄ›ní " "uvedeném ve Vlastnostech souboru nebyl nalezen žádný kód." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Přístup odepÅ™en." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Nemáte oprávnÄ›ní Äíst soubory zdrojového kódu z umístÄ›ní uvedeného ve " "vlastnostech souboru." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Pokud jste dříve odepÅ™eli přístup k souborům, můžete jej povolit v Nastavení " "systému > Soukromí a zabezpeÄení > Soubory a složky." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Pokud jste dříve odepÅ™eli přístup k souborům, můžete jej povolit v PÅ™edvolby " "systému > ZabezpeÄení a soukromí > Soukromí > Soubory a složky." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "NepodaÅ™ilo se extrahovat Å™etÄ›zce ze zdrojového kódu." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Soubor „%s“ nelze otevřít." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Aktualizace pÅ™ekladů" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Zjišťování rozdílů…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "SluÄování rozdílů…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "PÅ™ekladový soubor je již aktuální, žádné Å™etÄ›zce se nezmÄ›nily." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "PÅ™ekladový soubor byl aktualizován s %s zmÄ›nou." msgstr[1] "PÅ™ekladový soubor byl aktualizován s %s zmÄ›nami." msgstr[2] "PÅ™ekladový soubor byl aktualizován s %s zmÄ›nami." msgstr[3] "PÅ™ekladový soubor byl aktualizován s %s zmÄ›nami." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Nové Å™etÄ›zce k pÅ™ekladu:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "OdstranÄ›né Å™etÄ›zce (již se nepoužívají):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "Byl zjiÅ¡tÄ›n %d problém se zdrojovými Å™etÄ›zci." msgstr[1] "Byly zjiÅ¡tÄ›ny %d problémy se zdrojovými Å™etÄ›zci." msgstr[2] "Byly zjiÅ¡tÄ›no %d problémů se zdrojovými Å™etÄ›zci." msgstr[3] "Byly zjiÅ¡tÄ›no %d problémů se zdrojovými Å™etÄ›zci." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Zobrazit podrobnosti…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Zobrazit podrobnosti…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "PoÅ¡kozená hlaviÄka: „%s“" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Soubory pÅ™ekladů PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Å ablony pÅ™ekladů POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Soubory pÅ™ekladů XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Katalog pÅ™ekladů Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Soubory pÅ™ekladů JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Soubory pÅ™ekladů Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "VÅ¡echny pÅ™ekladové soubory" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Poedit nerozpoznal formát souboru." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "Tento JSON soubor neobsahuje pÅ™eklady a nelze jej v Poeditu editovat." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "ÄŒtení obsahu souboru selhalo s následující chybou: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format 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" "\n" "Uložte katalog pod jiným názvem." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Soubor %s nelze uložit." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Snímky obrazovky:" #: src/catalog_po.cpp:134 #, 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 řádek souboru „%s“ nebyl naÄten správnÄ›." msgstr[1] "%i řádky souboru „%s“ nebyly naÄteny správnÄ›." msgstr[2] "%i řádků souboru „%s“ nebylo naÄteno správnÄ›." msgstr[3] "%i řádků souboru „%s“ nebylo naÄteno správnÄ›." #: src/catalog_po.cpp:149 #, 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)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "Å patný katalog: verze msgstr pro singulár použita spolu s msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Å patný katalog: verze msgstr pro plurál použita bez msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Nelze naÄíst soubor, pravdÄ›podobnÄ› je poÅ¡kozený." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "PÅ™i naÄítání katalogu doÅ¡lo k chybÄ›. NÄ›které pÅ™eklady mohou chybÄ›t nebo být " "poÅ¡kozené." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "PÅ™i formátování souboru doÅ¡lo k chybÄ› (ale byl úspěšnÄ› uložen)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\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 " "katalogu.\n" "\n" "Místo toho byl uložen v UTF-8 a nastavení bylo přísluÅ¡nÄ› zmÄ›nÄ›no." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Chyba pÅ™i ukládání souboru" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "POT soubor „%s“ je poÅ¡kozený." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "V souboru XCLOC neoÄekávanÄ› chybí obsah." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Ukládání do jiného umístÄ›ní není u souborů XCLOC podporováno." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Chyba pÅ™i naÄítání souboru XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "nepodporovaná verze (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Neplatné znaÄky v textu pÅ™ekladu." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Propojte Poedit s podporovanými cloudovými lokalizaÄními platformami a " "bezproblémovÄ› synchronizujte pÅ™eklady, které jsou na nich spravovány." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Jak funguje synchronizace do cloudu?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "ÚÄet" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(napÅ™ihlášený)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Otevřít pÅ™eklad z cloudu" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Spravovat úÄty" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekt:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Jazyk:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "PÅ™ihlásit se do cloudového úÄtu" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "PÅ™ihlásit se do cloudového úÄtu" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Ve vaÅ¡em úÄtu nemáte nastaveny žádné pÅ™ekladové projekty." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Stahování nejnovÄ›jších pÅ™ekladů…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "PÅ™ihlásit se do %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Probíhá synchronizace" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Odesílání pÅ™ekladů do %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Odesílání pÅ™ekladů do %s se nezdaÅ™ilo." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Chyba synchronizace" #: src/commentdlg.cpp:48 msgid "Add" msgstr "PÅ™idat" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Neznámá chyba Crowdinu." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "NedostateÄná oprávnÄ›ní, zkuste se znovu pÅ™ihlásit." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Projekty Crowdin založené na Å™etÄ›zcích nejsou podporovány." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Stahování pÅ™ekladů je pro tento projekt zakázáno." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "PÅ™ihlásit se" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "PÅ™ihlásit se" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Odhlásit se" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Odhlásit se" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Další informace o Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin je online platforma pro správu pÅ™ekladů a nástroj pro kolaborativní " "pÅ™eklad. Sami používáme Crowdin k pÅ™ekladu Poeditu do mnoha jazyků a máme " "jej rádi." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "ÄŒekání na ověření…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Aktualizace informací o uživateli…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "PÅ™ihlásit se do Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Synchronizace s Crowdin se nezdaÅ™ila." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin chyba" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Odesílání pÅ™ekladů…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopírovat" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Další informace" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&NápovÄ›da" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Poedit nepodporuje přímou úpravu MO souborů." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "PÅ™i otevírání souboru doÅ¡lo k chybÄ›" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Místo toho otevÅ™ete a upravte odpovídající soubor PO. Poté co ho uložíte, " "bude automaticky aktualizován i soubor MO." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "nemazat doÄasné soubory (kvůli ladÄ›ní)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "zpracovat poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "pÅ™ejít na položku na daném řádku" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Nelze komunikovat s procesem Poeditu." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "DoÅ¡lo k neoÅ¡etÅ™ené výjimce: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Vybrat Å¡ablonu pÅ™ekladu" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Neplatný soubor" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Vybrat soubor s pÅ™ekladem" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit je jednoduchý editor pÅ™ekladů." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Na okno Poeditu nelze pÅ™etáhnou více než jeden soubor." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Soubor „%s“ není soubor pÅ™ekladů." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Soubor „%s“ neexistuje." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Kontrola pravopisu je zakázána, protože slovník pro jazyk %s není " "nainstalován." #: src/edframe.cpp:871 msgid "Install" msgstr "Nainstalovat" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Soubor „%s“ byl zmÄ›nÄ›n jinou aplikací." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Znovu naÄíst soubor" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Chcete soubor znovu naÄíst z disku? Pokud tak uÄiníte, vaÅ¡e neuložené úpravy " "v Poedit budou ztraceny." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignorovat" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Znovu naÄíst soubor" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Soubor byl zmÄ›nÄ›n. Chcete uložit zmÄ›ny?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Uložit zmÄ›ny" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Pokud je neuložíte, pÅ™ijdete o vÅ¡echny zmÄ›ny." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Uložit" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Neukládat" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Neukládat" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "ZmÄ›ny provedené jinou aplikací budou po uložení ztraceny." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Storno" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "PÅ™esto uložit" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "PÅ™esto uložit" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Uložit jako…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Zkompilovat do…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Zkompilované pÅ™ekladové soubory" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "E&xportovat do HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Soubory HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Exportování do HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Aktualizace selhala" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Otevřít referenÄní soubor" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Aktualizovat z &POT souboru…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Aktualizovat z &POT souboru…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Nalezen %d problém s pÅ™ekladem." msgstr[1] "Nalezeny %d problémy s pÅ™ekladem." msgstr[2] "Nalezeno %d problémů s pÅ™ekladem." msgstr[3] "Nalezeno %d problémů s pÅ™ekladem." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Výsledky kontroly" #: src/edframe.cpp:1842 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 "" "Položky obsahující chyby byly v seznamu zvýraznÄ›ny Äervenou barvou. " "Podrobnosti o chybÄ› se zobrazí po vybrání chybné položky." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Soubor byl úspěšnÄ› uložen." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Soubor byl úspěšnÄ› uložen a zkompilován do formátu MO, ale pravdÄ›podobnÄ› " "nebude fungovat správnÄ›." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Soubor byl úspěšnÄ› uložen, ale nepůjde jej zkompilovat do formátu MO a " "používat." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Soubor byl zkompilován do formátu MO, ale pravdÄ›podobnÄ› nebude pracovat " "správnÄ›." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "" "Soubor se nepodaÅ™ilo zkompilovat do formátu MO a není tak možné ho použít." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "V pÅ™ekladu nebyly nalezeny žádné problémy." #: src/edframe.cpp:1894 #, 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Å™eklad je pÅ™ipraven k použití, ale %d položka jeÅ¡tÄ› není pÅ™eložená." msgstr[1] "" "PÅ™eklad je pÅ™ipraven k použití, ale %d položky jeÅ¡tÄ› nejsou pÅ™eloženy." msgstr[2] "" "PÅ™eklad je pÅ™ipraven k použití, ale %d položek jeÅ¡tÄ› není pÅ™eloženo." msgstr[3] "" "PÅ™eklad je pÅ™ipraven k použití, ale %d položek jeÅ¡tÄ› není pÅ™eloženo." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "PÅ™eklad je pÅ™ipraven k použití." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit automaticky opravil chybný obsah souboru „%s“." #: src/edframe.cpp:2299 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 needing work 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 vyžadující pozornost a v případÄ› " "potÅ™eby je opravit." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Jazyk pÅ™ekladu není nastaven." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Nastavit jazyk" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Jazyk pÅ™ekladu je shodný s jazykem zdroje." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Opravit jazyk" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Opravit jazyk" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "V katalogu jsou položky s plurály, ale není nastavená hlaviÄka Plural-Forms." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "U položek v souboru je použit jiný poÄet forem plurálu, než jaký je nastaven " "v hlaviÄce Plural-Forms" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "V hlaviÄce chybí povinná položka Plural-Forms." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntaktická chyba v hlaviÄce Plural-Forms („%s“)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Opravit hlaviÄku" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Opravit hlaviÄku" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file 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 file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Zkontrolovat" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Chcete použít angliÄtinu pro zdrojový text?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Tento soubor používá ID Å™etÄ›zců místo zdrojového textu. Poedit může naÄíst " "anglické texty ze souboru „%s“." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "NaÄíst angliÄtinu" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "PÅ™eloženo: %d z %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Zbývá: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d chyba" msgstr[1] "%d chyby" msgstr[2] "%d chyb" msgstr[3] "%d chyb" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d položka" msgstr[1] "%d položky" msgstr[2] "%d položek" msgstr[3] "%d položek" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (neuloženo)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (zmÄ›nÄ›no)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Aktualizace pÅ™ekladové pamÄ›ti se nezdaÅ™ila: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Soubor „%s“ se nepodaÅ™ilo uložit." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Odstranit pÅ™eklady identické se zdrojovým textem" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Chcete odstranit vÅ¡echny pÅ™eklady, které jsou identické se zdrojovým textem?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Tato akce odstraní vÅ¡echny pÅ™eklady, které jsou pÅ™esnÄ› stejné jako zdrojový " "text. Tuto akci nelze vrátit zpÄ›t." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Ponechat" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Odstranit" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "&Smazat staré pÅ™eklady" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Chcete odstranit vÅ¡echny již nepoužívané pÅ™eklady?" #: src/edframe.cpp:2879 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 "" "Pokud budete pokraÄovat, vÅ¡echny pÅ™eklady oznaÄené jako smazané budou " "natrvalo odstranÄ›ny. Pokud budou přísluÅ¡né Å™etÄ›zce pozdÄ›ji pÅ™idány zpÄ›t, tak " "je budete muset znovu pÅ™eložit." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Smazat" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Zkopírovat ze zdrojového textu" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Zkopírovat ze zdrojového textu" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Smazat pÅ™eklad" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Smazat pÅ™eklad" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Upravit komentář" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Upravit komentář" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Výskyty v kódu" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Výskyty v kódu" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Skrýt postranní panel" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Zobrazit postranní panel" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Skrýt stavový řádek" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Zobrazit stavový řádek" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Délka Å™etÄ›zce ve znacích: pÅ™eklad | zdroj" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Délka Å™etÄ›zce ve znacích" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Zdrojový text" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singulár" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plurál" #: src/editing_area.cpp:477 msgid "Translation" msgstr "PÅ™eklad" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "PÅ™ed-pÅ™eloženo" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Vyžaduje úpravy" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Vyžaduje úpravy" #: src/editing_area.cpp:566 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 samy o sobÄ› neobsahují žádné pÅ™eklady.\n" "Pro vytvoÅ™ení pÅ™ekladu vytvoÅ™te na základÄ› Å¡ablony nový PO soubor." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "VytvoÅ™it nový pÅ™eklad" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "VytvoÅ™it nový pÅ™eklad z tohoto POT souboru." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID zdrojového textu" #: src/editing_area.cpp:768 msgid "Everything" msgstr "VÅ¡e" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Forma %i (nepoužitá)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nula" #: src/editing_area.cpp:788 msgid "One" msgstr "Jeden" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dva" #: src/editing_area.cpp:804 msgid "Other" msgstr "Ostatní" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Kontext Å™etÄ›zce: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identifikátor Å™etÄ›zce: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s formát" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s formát" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "PÅ™eklad — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Zdrojový text — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "neznámý jazyk" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Chyba sítÄ›: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Neznámá chyba" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "SluÄování gettext katalogů se nezdaÅ™ilo." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Otevřít v editoru" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Otevřít v editoru" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "V souboru nejsou uvedeny žádné informace o výskytu tohoto Å™etÄ›zce ve " "zdrojovém kódu." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Žádné informace o použití" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d výskyt v kódu" msgstr[1] "%d výskyty v kódu" msgstr[2] "%d výskytů v kódu" msgstr[3] "%d výskytů v kódu" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Zdrojový kód nebyl nalezen" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit nemůže zobrazit zdrojový kód, kde se používá Å™etÄ›zec, protože soubor " "není k dispozici v odkazovaném umístÄ›ní, nebo je to symbolický odkaz, který " "neukazuje na skuteÄný soubor." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Soubor nelze otevřít" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit nemohl otevřít soubor \"%s\"." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Najít" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Nahradit" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Možnosti" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignorovat velikost písmen" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Po dosažení konce hledat od zaÄátku" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Jen celá slova" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Hledat ve zdrojových textech" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Hledat v pÅ™ekladech" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Hledat v komentářích" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "N&ahradit vÅ¡e" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "N&ahradit vÅ¡e" #: src/findframe.cpp:150 msgid "&Replace" msgstr "Nah&radit" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &PÅ™edchozí" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Další >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Hledaný Å™etÄ›zec" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Nahradit za" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "varování: " #: src/gexecute.cpp:171 msgid "error: " msgstr "chyba: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Název nebo kód jazyka" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Jazyk pÅ™ekladu" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Jazyk pÅ™ekladu:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "VÅ¡echny Å™etÄ›zce" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "NepodaÅ™ilo se stáhnout detaily projektu Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "PÅ™i nahrávání pÅ™ekladů do Localazy doÅ¡lo k chybÄ›." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projekty" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Další informace o %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy je vysoce automatizovaná lokalizaÄní platforma, která umožňuje " "komukoli snadno pÅ™ekládat své produkty a obsah do více jazyků." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "PÅ™idat projekt" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "PÅ™idat projekt" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - správce katalogů" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Upravit…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "VytvoÅ™it nový pÅ™ekladový projekt" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Odstranit projekt" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Upravit projekt" #: src/manager.cpp:176 msgid "Update all" msgstr "Aktualizovat vÅ¡echny katalogy" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Aktualizovat vÅ¡echny katalogy v projektu" #: src/manager.cpp:378 msgid "Total" msgstr "Celkem" #: src/manager.cpp:379 msgid "Untrans" msgstr "NepÅ™elož" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Vyžaduje úpravy" #: src/manager.cpp:381 msgid "Errors" msgstr "Chyby" #: src/manager.cpp:382 msgid "Last modified" msgstr "Poslední zmÄ›na" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Vyberte adresář" #: src/manager.cpp:433 msgid "Directories:" msgstr "Adresáře:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Chcete odstranit projekt „%s“?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Odstranit projekt" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "OdstranÄ›ní projektu nesmaže žádné pÅ™ekladové soubory." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Potvrzení" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Aktualizovat vÅ¡echny katalogy v projektu?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Provede aktualizaci ze zdrojového kódu na vÅ¡ech souborech v projektu." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Aktualizace katalogů v projektu" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Vyhledat aktualizace…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Správce katalogů" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "Nasta&vení…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "Úpra&vy" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "ZpÄ›t" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Znovu" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Vložit a pÅ™izpůsobit styl" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Smazat" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Pravopis a gramatika" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Zobrazit pravopis a gramatiku" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Zkontrolovat dokument" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Kontrolovat pravopis bÄ›hem psaní" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Kontrolovat i gramatiku" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Automaticky opravovat pravopis" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Náhrady" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Zobrazit náhrady" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Chytré kopírování/vkládání" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Chytré uvozovky" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Chytré pomlÄky" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Chytré odkazy" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Náhrady textu" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformace" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "VÅ¡echna písmena velká" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "VÅ¡echna písmena malá" #: src/menus.cpp:234 msgid "Capitalize" msgstr "První písmena velká" #: src/menus.cpp:237 msgid "Speech" msgstr "PÅ™edÄítání" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Spustit pÅ™edÄítání" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "UkonÄit pÅ™edÄítání" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Zobrazení" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Zobrazit panel nástrojů" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Upravit panel nástrojů…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Zobrazit na celou obrazovku" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Okno" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimalizovat" #: src/menus.cpp:264 msgid "Zoom" msgstr "PÅ™epnout velikost" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Vítá vás Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "PÅ™enést vÅ¡e do popÅ™edí" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informace o pÅ™ekladateli" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Jméno:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "VaÅ¡e jméno" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-mail:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "vy@example.cz" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "VaÅ¡e jméno a e-mail budou použity pouze k nastavení položky Last-Translator " "v hlaviÄce souborů GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Editace" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "PÅ™i uložení automaticky zkompilovat MO soubor" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Kontrolovat pravopis" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Vždy zaměřovat vstupní pole pro pÅ™eklad" #: src/prefsdlg.cpp:211 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 "" "Nikdy nezaměří seznam s Å™etÄ›zci. Pokud je tato volba aktivní, je k pohybu v " "seznamu Å™etÄ›zců pomocí klávesnice nutné použít Ctrl+Å¡ipky. Na druhou stranu " "ale umožňuje rovnou zaÄít psát text, bez nutnosti maÄkat Tab." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Vzhled" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Použít vlastní písmo pro seznam:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Použít vlastní písmo pro textová pole:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "ZmÄ›nit jazyk" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(vyžaduje Windows 8 nebo novÄ›jší)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Obecné" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Použít pÅ™ekladovou paměť" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Spravovat…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "PÅ™i aktualizaci ze zdrojových souborů" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "použít podobné položky v souboru" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pÅ™ed-pÅ™eložit z pÅ™ekladové pamÄ›ti" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit se může pokusit pÅ™edvyplnit nové položky s pomocí pÅ™edchozích " "pÅ™ekladů v souboru, nebo s pomocí celé vaší pÅ™ekladové pamÄ›ti. Použití " "pÅ™ekladové pamÄ›ti nebude ze zaÄátku příliÅ¡ efektivní, ale jak jí postupnÄ› " "naplníte pÅ™eklady, bude se její efektivita zlepÅ¡ovat." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Uložené pÅ™eklady:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Velikost databáze:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importovat soubory pÅ™ekladů…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importovat soubory pÅ™ekladů…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importovat z TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importovat z TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Exportovat do TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Exportovat do TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Vymazat" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Vyberte pÅ™ekladové soubory, které chcete importovat" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Vybrat soubory TMX k importu" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Soubory TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Probíhá import pÅ™ekladů…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Import pÅ™ekladové pamÄ›ti se nezdaÅ™il." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Probíhá import z „%s“…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "Byl importován %s pÅ™eklad." msgstr[1] "Byly importovány %s pÅ™eklady." msgstr[2] "Byly importováno %s pÅ™ekladů." msgstr[3] "Byly importováno %s pÅ™ekladů." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exportovat jako…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Probíhá export pÅ™ekladů…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Export pÅ™ekladové pamÄ›ti do „%s“ selhal." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Vymazat pÅ™ekladovou paměť" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Opravdu chcete pÅ™ekladovou paměť vymazat?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Vymazáním pÅ™ekladové pamÄ›ti nenávratnÄ› smažete vÅ¡echny v ní uložené " "pÅ™eklady. Po provedení této akce už neexistuje žádná možnost obnovy." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "PÅ™ekladová paměť" #: src/prefsdlg.cpp:730 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 "" "Extraktory zdrojového kódu slouží k vyhledání pÅ™eložitelných Å™etÄ›zců v " "souborech zdrojového kódu a jejich extrakci pro úÄely pÅ™ekladu." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Uživatelské extraktory:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Uživatelské extraktory:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Podporuje vÅ¡echny jazyky podporované nástroji GNU gettext (PHP, C/C++, C#, " "Perl, Python, Java, JavaScript a další)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Smazat extraktor" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Opravdu chcete „%s“ extraktor smazat?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extraktory" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "ÚÄty" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Automaticky kontrolovat dostupnost aktualizací" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Upozorňovat na beta verze" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta verze obsahují nejnovÄ›jší funkce a vylepÅ¡ení, ale mohou mít problémy se " "spolehlivostí." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Aktualizace" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Tato nastavení ovlivňují formátování PO souborů. Upravte je pokud máte " "specifické požadavky například kvůli správÄ› verzí." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Konce řádků:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (doporuÄeno)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Zalomit po:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Zachovat stávající formátování souboru" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "PokroÄilé" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Nastavení" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Příprava Å™etÄ›zců…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "PÅ™ed-pÅ™ekládání z pÅ™ekladové pamÄ›ti…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "PÅ™ed-pÅ™eložen %u Å™etÄ›zec" msgstr[1] "PÅ™ed-pÅ™eloženy %u Å™etÄ›zce" msgstr[2] "PÅ™ed-pÅ™eloženo %u Å™etÄ›zců" msgstr[3] "PÅ™ed-pÅ™eloženo %u Å™etÄ›zců" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Probíhá pÅ™edběžný pÅ™eklad…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "Byla pÅ™ed-pÅ™eložena %d položka." msgstr[1] "Byly pÅ™ed-pÅ™eloženy %d položky." msgstr[2] "Bylo pÅ™ed-pÅ™eloženo %d položek." msgstr[3] "Bylo pÅ™ed-pÅ™eloženo %d položek." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "PÅ™eklady byly oznaÄeny jako vyžadující pozornost, protože mohou být " "nepÅ™esné. MÄ›li byste je zkontrolovat." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "PÅ™esné shody z pÅ™ekladové pamÄ›ti" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "PÅ™ibližné shody z pÅ™ekladové pamÄ›ti" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Nebyly pÅ™ed-pÅ™eloženy žádné položky." #: src/pretranslate.cpp:218 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 "" "PÅ™ekladová paměť neobsahuje žádné texty podobné obsahu tohoto souboru. " "Poloautomaticky je schopna efektivnÄ› pÅ™ekládat teprve poté, co se Poedit " "nauÄí dostatek dat z ruÄnÄ› pÅ™eložených souborů." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Bez zdrojového textu není možné pÅ™ed-pÅ™ekládat." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "PÅ™ed-pÅ™eložit" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "PÅ™ed-pÅ™eklad vyžaduje, aby byl k dispozici zdrojový text. Nefunguje, pokud " "jsou použity pouze ID bez skuteÄného textu." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Není možné pÅ™ed-pÅ™ekládat z neznámého jazyka." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "PÅ™ed-pÅ™eložení vyžaduje znalost zdrojového jazyka. Poedit jej v tomto " "souboru nedokázal zjistit." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Doplnit pouze pÅ™i pÅ™esné shodÄ›" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Ve výchozím nastavení jsou zahrnuty i nepÅ™esné výsledky, ale jsou oznaÄeny " "jako vyžadující pozornost. ZaÅ¡krtnÄ›te tuto volbu, pokud chcete zahrnout " "pouze pÅ™esné shody." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "PÅ™esné shody neoznaÄovat jako vyžadující pozornost" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Povolte pouze pokud důvěřujete kvalitÄ› použité pÅ™ekladové pamÄ›ti. Ve " "výchozím nastavení jsou vÅ¡echny pÅ™eklady doplnÄ›né z pÅ™ekladové pamÄ›ti " "oznaÄeny jako vyžadující pozornost a mÄ›ly by být pÅ™ed použitím zkontrolovány." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "PÅ™ed-pÅ™eklad automaticky vyhledá pÅ™esné a pÅ™ibližné shody pro nepÅ™eložené " "Å™etÄ›zce v pÅ™ekladové pamÄ›ti a vyplní jejich pÅ™eklady." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Chyba: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "DoÅ¡lo k %d chybÄ›:" msgstr[1] "DoÅ¡lo k %d chybám:" msgstr[2] "DoÅ¡lo k %d chybám:" msgstr[3] "DoÅ¡lo k %d chybám:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "DoÅ¡lo k chybÄ›." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "DoÅ¡lo k %d chybÄ›." msgstr[1] "DoÅ¡lo k %d chybám." msgstr[2] "DoÅ¡lo k %d chybám." msgstr[3] "DoÅ¡lo k %d chybám." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "UkonÄuji…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Sem pÅ™etáhnÄ›te složky nebo soubory" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Sem pÅ™etáhnÄ›te složky nebo soubory" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "PÅ™idat složky…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "PÅ™idat složky…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "PÅ™idat soubory…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "PÅ™idat soubory…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "PÅ™idat zástupný Å™etÄ›zec…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "PÅ™idat zástupný Å™etÄ›zec…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Ukázat ve Finderu" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Ukázat v Průzkumníkovi" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Ukázat ve složce" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Cesty" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Ignorovat cesty" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "PokroÄilá nastavení extrakce" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Extrahovat poznámky pro pÅ™ekladatele z:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Komentáře zaÄínající Å™etÄ›zcem:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "VÅ¡echny komentáře" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Další parametry pro xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Další klíÄová slova" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Název projektu, pro který je pÅ™eklad urÄen" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Název týmu a e-mailová adresa nebo URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "například nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (doporuÄeno)" #: src/propertiesdlg.cpp:976 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." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Správnost zástupných znaků" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "V pÅ™ekladu chybí zástupný znak „%s“." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "NadbyteÄný zástupný znak „%s“, který není ve zdrojovém textu." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "PÅ™eklady forem plurálu" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Nejsou pÅ™eloženy vÅ¡echny formy plurálu." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Nekonzistentní malá/velká písmena" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "PÅ™eklad by mÄ›l zaÄínat jako vÄ›ta." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "PÅ™eklad by mÄ›l zaÄínat malým písmenem." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Nekonzistentní mezery a bílé znaky" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Na zaÄátku pÅ™ekladu chybí mezera." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Na zaÄátku pÅ™ekladu je mezera, která není ve zdrojovém textu." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Na konci pÅ™ekladu chybí odřádkování." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Na konci pÅ™ekladu je odřádkování, které není ve zdrojovém textu." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Na konci pÅ™ekladu chybí mezera." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Na konci pÅ™ekladu je mezera, která není ve zdrojovém textu." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Kontroly interpunkce" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "PÅ™eklad by mÄ›l být ukonÄen „%s“." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "PÅ™eklad by nemÄ›l být ukonÄen „%s“." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "PÅ™eklad je ukonÄen „%s“, ale zdrojový text je ukonÄen „%s“." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Cloud" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Vyprázdnit menu" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Vyprázdnit menu" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Komentář:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Aktualizovat" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Smazat" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Odstranit komentář" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Upravit projekt" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Název projektu:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Procházet" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "PÅ™idat adresář do seznamu" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Soubor" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Nový…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nový z &POT/PO souboru…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nový z &POT/PO souboru…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Otevřít…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Otevřít poslední položku" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Otevřít nedávné" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Otevřít pÅ™eklad z cloudu…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Otevřít pÅ™eklad z cloudu…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Úvodní okno" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Úvodní okno" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Správce &katalogů" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Správce &katalogů" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Zavřít" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Uložit" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Uložit j&ako…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Uložit j&ako…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Zkompilovat do MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&xportovat do HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Vyhledat aktualizace…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Nastavení…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "Nasta&vení" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Konec" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "UkonÄit" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Zkopírovat ze singuláru" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Zkopírovat ze singuláru" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "&PÅ™eklad vyžaduje úpravy" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "&PÅ™eklad vyžaduje úpravy" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Upravit &komentář" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Upravit &komentář" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Návrhy" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Najít…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Na&hradit…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Najít další" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Najít pÅ™edchozí" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Najít a nahradit…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Najít další" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Najít pÅ™edchozí" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Zobrazit &ID Å™etÄ›zců" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Zobrazit &ID Å™etÄ›zců" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Zobrazit varování" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Zobrazit varování" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "SeÅ™adit podle poÅ™adí v &souboru" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "SeÅ™adit podle poÅ™adí v &souboru" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "SeÅ™adit podle &zdrojového textu" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "SeÅ™adit podle &zdrojového textu" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "SeÅ™adit podle &pÅ™ekladu" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "SeÅ™adit podle &pÅ™ekladu" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "S&eskupit podle kontextu" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "S&eskupit podle kontextu" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Položky s chybami jako první" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Položky s chybami jako první" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&NepÅ™eložené položky jako první" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&NepÅ™eložené položky jako první" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Zobrazit výskyty v kódu" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Zobrazit výskyty v kódu" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Zobrazit postranní panel" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Zobrazit stavový řádek" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&PÅ™eklad" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Aktualizovat ze zdrojového kódu" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Aktualizovat ze zdrojového kódu" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Synchronizovat s Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "PÅ™ed-pÅ™eloži&t…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Zkontrolovat pÅ™eklad" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Zkontrolovat pÅ™eklad" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Odstranit pÅ™eklady identické se zdrojovým textem" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Smazat staré pÅ™eklady" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Smazat staré pÅ™eklady" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Vlastnosti…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "PÅ™e&jít" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Hotovo a další" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Hotovo a další" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "PÅ™edchozí editovaný pÅ™eklad" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "PÅ™edchozí editovaný pÅ™eklad" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&PÅ™edchozí pÅ™eklad" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&PÅ™edchozí pÅ™eklad" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Další pÅ™eklad" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Další pÅ™eklad" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "PÅ™edchozí ne&dokonÄená" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "PÅ™edchozí ne&dokonÄená" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Další &nedokonÄená" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Další &nedokonÄená" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "PÅ™edchozí forma plurálu" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "PÅ™edchozí forma plurálu" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Další forma plurálu" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Další forma plurálu" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&NápovÄ›da online" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&NápovÄ›da online" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Dokumentace GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Dokumentace GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&O aplikaci Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&O aplikaci" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Nastavení extraktoru" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Seznam přípon oddÄ›lených stÅ™edníky (napÅ™. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "SpuÅ¡tÄ›ní:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Příkaz pro extrakci pÅ™ekladů:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Tento příkaz bude použit ke spuÅ¡tÄ›ní extraktoru.\n" "%o bude nahrazeno názvem výstupního souboru,\n" "%K seznamem klíÄových slov, %F seznamem\n" "vstupních souborů a %C parametrem znakové sady (viz níže)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Položka seznamu klíÄových slov:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Tento parametr bude do příkazové řádky vložen jednou pro každé\n" "klíÄové slovo. %k bude nahrazeno klíÄovým slovem." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Položka seznamu vstupních souborů:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Tento parametr bude do příkazové řádky vložen jednou pro každý\n" "vstupní soubor. %f bude nahrazeno názvem souboru." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Znaková sada zdrojáků:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Tento parametr bude do příkazové řádky vložen jen pokud byla zadána\n" "znaková sada zdrojových souborů. %c bude nahrazeno znakovou sadou." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Vlastnosti pÅ™ekladu" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Název a verze projektu:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "PÅ™ekladatelský tým:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Formy plurálu:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Použít výchozí pravidla pro tento jazyk" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Použít vlastní výraz" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Podrobnosti o formách plurálu" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Znaková sada:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "PokroÄilá nastavení extrakce…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "PokroÄilá nastavení extrakce…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Vlastnosti pÅ™ekladu" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Prohledávané cesty" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Prohledávané cesty" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Extrahovat text ze zdrojových souborů v tÄ›chto adresářích:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Základní cesta:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "KlíÄová slova" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "KlíÄová slova" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Uvedená klíÄová slova (názvy funkcí) se použijí k rozeznání pÅ™eložitelných\n" "Å™etÄ›zců ve zdrojovém kódu:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Použít také výchozí klíÄová slova pro podporované jazyky" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Podrobnosti o klíÄových slovech gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Otevřít soubor" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Uložit soubor" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Zkontrolovat" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Zkontrolovat, zda pÅ™eklad neobsahuje chyby" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Aktualizovat z kódu" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Aktualizovat z kódu" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Aktualizovat ze zdrojového kódu" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Postranní panel" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Původní zdrojový text" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Původní zdrojový text (než byl pÅ™i aktualizaci zmÄ›nÄ›n), kterému odpovídá " "použitý a nyní nepÅ™esný pÅ™eklad." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Poznámky pro pÅ™ekladatele" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Komentář" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "PÅ™idat komentář" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "PÅ™idat komentář" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Vymazat z pÅ™ekladové pamÄ›ti" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Vymazat z pÅ™ekladové pamÄ›ti" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Návrhy pÅ™ekladu" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Nenalezena žádná shoda" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Nenalezena žádná shoda" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Tento Å™etÄ›zec byl nalezen v pÅ™ekladové pamÄ›ti Poeditu." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Návrhy pÅ™ekladů vyžadují, aby byl k dispozici zdrojový text. Nefungují, " "pokud jsou použity pouze ID bez skuteÄného textu." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Návrhy pÅ™ekladů vyžadují znalost zdrojového jazyka. Poedit jej v tomto " "souboru nedokázal zjistit." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Není možné spustit program: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX soubor je poÅ¡kozený." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Databáze pÅ™ekladové pamÄ›ti je poÅ¡kozená: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Chyba pÅ™ekladové pamÄ›ti: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(výchozí jazyk)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "VýbÄ›r jazyka" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Vyberte preferovaný jazyk" #: src/uilang.cpp:263 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." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Nelze vytvoÅ™it adresář na doÄasné soubory." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "V souboru nejsou žádné pÅ™eklady. To je neobvyklé." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "PÅ™i použití systému gettext nejsou položky pÅ™ekladu pÅ™idávány ruÄnÄ›, ale " "jsou automaticky extrahovány ze zdrojového kódu. Tak zůstávají aktuální a " "pÅ™esné. PÅ™ekladatelé vÄ›tÅ¡inou používají PO Å¡ablony (soubory POT) pÅ™ipravené " "vývojáři." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Další informace o GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Nejjednodušším způsobem naplnÄ›ní tohoto souboru je jeho aktualizace z POT " "souboru:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Aktualizovat z POT souboru" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "NaÄte pÅ™eložitelné Å™etÄ›zce z existující POT Å¡ablony." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "PÅ™eložitelné Å™etÄ›zce můžete také extrahovat přímo ze zdrojového kódu:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Extrahovat ze zdrojových souborů" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "" "Parametry pro extrakci ze zdrojového kódu nastavte ve Vlastnostech katalogu." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Verze %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "VytvoÅ™it nový" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "VytvoÅ™te nový pÅ™eklad z Å¡ablony POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Procházet soubory" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "OtevÅ™ete a editujte pÅ™ekladové soubory." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "PÅ™eložit cloudový projekt" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Spolupracujte s dalšími lidmi online." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Nedávné soubory" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Synchronizovat" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Synchronizovat pÅ™eklad s Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "O aplikaci %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Nastavení %su" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "O aplikaci %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Služby" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Skrýt %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Skrýt ostatní" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Zobrazit vÅ¡e" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "UkonÄit %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Nasta&vení…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "PÅ™edvolby..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "PÅ™edvolby..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Použít" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Použít" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&ZpÄ›t" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "ZpÄ›t" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Storno" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Vymazat" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Vymazat" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopírovat" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Vyjmou&t" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Vyjmout" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Upravit" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Konec" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "NápovÄ›da" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nový" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Nový" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "N&e" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ne" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Otevřít…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Otevřít..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Otevřít..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Vložit" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Vložit" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "PÅ™edvolby" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "P&rovést znovu" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Aktualizovat" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "Uložit &jako" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Uložit jako" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Vybr&at vÅ¡e" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Vybrat vÅ¡e" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&ZpÄ›t" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Ano" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ano" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Nahoru" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Dolů" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Doleva" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Doprava" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Varování: " poedit-3.6.3/locales/th.mo0000644000175100001660000024564415011674351011105 Þ• ‹*H8 I8 U8&`8‡8<›8Ø8Jë8g69 ž9¨9 ·9Á9 È9Ö9Ý9ã9ë9ò9ù9ÿ9::%:+:1:::N:b:f:x:Š::•::¥:·:É:Í: Ñ: Þ:ë:ô:ý: ;;!;7;M;\;x;”;š; ;©;¯;¸;Ï; æ; ô; <<<1<M<f<<–<­<³<¸<Ï<ß< ý< ===$=-= 1= ==J= Y=e= u== ›=¨= ·=Ã=Ó=ç=> >+>H>h> ~> ‹>1—>'É>ñ>? (?3?79?6q?¨?)È?ò? ÷?]@`@<s@D°@$õ@A !A€.A¯A ¶A"ÄAçA+B).B XBcBuB‡B˜B«B´BÇBãBÿB#C8CMC\C bCmC CŠCœC¢C¨C¹C%ÊCðC D,D4D=DUD fDtD/D ¿DkÌD8E=EPEfEyEE-®E1ÜEF 'F2F)IFsF “F¡F¦F¹FÌFáFåFüFG"G3GRGaGtG;‡G ÃG'ÐG^øGLWH?¤H äH òHÿH*I=I"PI5sI©IÄIßIåIøI ýI J J &J 3J@JQJYJaJhJfzJáJûJuK‹KžK"°KÓK ÚKåKôK LL$L05LfL€L#•L<¹LöL M*M0ZMZ \ZhZpZxZ€Z†Z›Z°ZÅZßZp[v[Œ[=’[Ð[1ã[\n.\E\ã\ê\;] ?]M]T]@n]õ¯]¿¥^,e_,’_¿_ Ñ_ß_2î_*!`L`Ž_`wî`jfa ÑaÝaìaûa%b6bKb`bub‡b™b ³bÁbÊbÓbæbìbc8 c EcRcWc _c kc wc…c"Œc"¯cÒc Úc çcôc d(d;dAdzZdÕdædíd òd þd e e"e *e 5e Be Le Ye eepe‹eœe"´e×eóe f f,f 5f AfNfhfxfˆf ›f ¨f¶fÇfÖf ïfüf g g*g2g:gCg KgYgrg…gžg§g°g Ág Îg Úgçgûg h h4hDhYh†nhõhi &i2iAiTi eisi „i’iK™iåiúi jj,j?jUj1qj£j ²j ÀjŽÌj=[k™kll(0lYl alol+Œl¸l »l8Ål"þl!mÂ2mõmCn8TnînŸ|o8p1UpR‡pcÚpQ>qq'«q:ÓqlrP{r-ÌrCúrA>sK€s0Ìs.ýsŽ,t!»t)Ýt-u+5u8auCšuuÞu,TvLv;Îv] w…hwJîwc9x[xoùx«iy7zmMz_»z[{w{}{{¥{ Â{Î{ã{ö{|2%|"X|{|“|ª|~Â|qA}³}ˆÆ}O~S~g~ l~~ ~ ·~Å~Í~ Ô~"ß~$'@Yjz‹£²ºÊà$ý"€B€\€r€ˆ€#¥€VÉ€ 7@ S^|Ž©ºÁ.É ø‚ ‚%‚H)‚5r‚m¨‚7ƒ Nƒ3XƒaŒƒîƒóƒøƒ.„ D„e„„¡„¸„ʄ݄…'…;…K…\…n……š…²…Î…í…††7†M†^†w†!‡†ž©†Hˆ0dˆO•ˆåˆTûˆ4P‰C…‰©É‰sŠ!‰Š«ŠÁŠ#ÞŠ‹‹3‹ G‹ U‹`‹t‹4|‹4±‹æ‹ ÷‹ŒŒ9ŒYŒ1aŒ1“ŒÅŒâŒóŒ"&"Il €=Ž=Ì ŽŽ ,Ž7Ž"WŽ+zŽ+¦ŽÒŽRòŽRE ˜£´ÈÜCüC@F„FË‘&‘m:‘m¨‘7’7N’(†’(¯’Ø’ ì’/÷’5'“X]“¶“Ò“ð“!”1”A”$Q”v”*•”$À”6å”$•EA•‡•*¦•$Ñ•6ö•0-–>^––H³–Eü–HB—3‹—*¿—$ê—{˜i‹˜Iõ˜@?™*€™«™hÁ™*šQ»šj ›x›"‘›è´›9œ„ל³\cžtž!Šž¡¬žN $a ]† Lä ~1¡~°¡E/¢:u¢:°¢9ë¢$%£J£9g£N¡£?ð£00¤Ka¤0­¤3Þ¤ ¥¥>¥]¥|¥ ›¥¥¥6¸¥6ï¥W&¦E~¦@Ħ!§'§@>§'§'§§Hϧf¨¨›¨ ©0³©Eä©0*ªE[ªH¡ª‚ꪔm«<¬?¬-[¬L‰¬9Ö¬/­ @­4K­4€­9µ­ ï­<ù­6®K=®‰®K¢®î®' ¯2¯`N¯¯¯YƯ  °«-±¥Ù±(²'¨²*в–û²*’³Q½³~´QŽ´Qà´ 2µ'=µeµ%uµ%›µ$Áµ$æµ$ ¶$0¶U¶n¶¶6’¶éɶl³·l ¸Z¸Qè¹E:ºU€ºÖºõº0»%?»!e»'‡»%¯»uÕ»6K¼-‚¼R°¼‚½0†½·½_ʽ]*¾Qˆ¾dÚ¾ ?¿3L¿-€¿L®¿Íû¿ÉÀÙÀ'øÀ- Á*NÁ?yÁ'¹ÁáÁ'Â(ÂDÂ$`Â$…ªÂÈÂBÛ Ã*Ã=ÃOÃ-eÃ$“ÃE¸ÃTþÃSÄìVĨCÆ`ìÇMÉ*cÉ"ŽÉ3±É"åÉ3Ê6<Ê sÊH~Ê[ÇÊB#Ë?f˦Ë*¼ËçËÌÌ05ÌZfÌ?ÁÌ(Í$*ÍOÍ fÍ3tÍP¨ÍZùÍ3TÎQˆÎVÚΛ1Ï(ÍÏzöÏ*qÐ>œÐcÛÑ??Ò?ÒP¿ÒZÓ!kÓÓH£Ó0ìÓ*Ô HÔ:VÔ:‘Ô*ÌÔ*÷ÔK"ÕËnÕ:×;V×;’×Î×6ê×6!ØXØ?kØf«ØºÙ?ÍÙ6 Ú`DÚ3¥ÚWÙÚs1Û<¥Û âÛïÛ9ÿÛo9Þ6©ÞàÞBÿÞ6Bß6yß°ß*Éß*ôß*àJàZàjàƒàC“àC×à!á(=á@fá §âK±âýâãI¡ã[ëãÎGäßå…öå|æ0’æŠÃæ(NçwçB~ç§ÁçËiè’5ë‚ÈìCKí%í!µí-×íHîlNî3»î¡ïî@‘ðÑÒñ¤ò!Ãò!åò6óc>ó?¢ó?âóK"ô9nô9¨ôFâô")õLõcõKyõÅõQäõ 6ö”@öÕöôö÷!÷!<÷^÷x÷Qˆ÷]Ú÷8ø)Nø)xø*¢øÍøYãø=ùEPù–ù²úÌúâú"õú"û!;û!]ûû!žû<Àûýûü%8ü$^üAƒü*Åü$ðüNý6dýB›ýÞýúýþ!5þ-WþB…þ$Èþ)íþ<ÿ3Tÿ!ˆÿªÿ*ÆÿEñÿ-7$e)Š!´!Ö'ø '?$gHŒ>ÕH]|?’-Ò'3(5\;’,Î5û;1,m7šÒEí03*d61Æ<ø65<l6©àÊù6Äû 1* "\ ( K¨ wô -l 0š Ë á Žc ïò â  ò 2F6e?œ\Ü39m€~Rÿ0RÞƒ,bä©t·YÖ§0\ت5õàõÖNÌF~báÅú`Àý!Ç ˜ç o€!Tð!¤E"?ê"A*#Jl#Q·#{ $Ö…$U\%C²&Ïö&oÆ'Ö6(Œ )”š*ì/+Ã,ÿà,gà-pH/.¹/è0ê1 3' 30H3.y3¨3»33Ú3=4-L4fz4Zá4=<5-z5'¨5^Ð5Ñ/788 /999Q9Xd9½9KÔ9B :c::'’:`º:ˆ;/¤;/Ô;'<+,<'X<6€<'·<ß<0ò<?#=Hc=U¬=H>9K><…>UÂ>m?N†?ÕÕ?<«@è@$þ@#AT3A4ˆAK½A* B4BMB—UBíBC'C ?C¼ICŽDá•D†wEþEŠFí¨F–G¦G*½GoèG(XHFHxÈH AIbIgImItI zI ‡I‘I ˜I¥I©I®I´IÓIãI!J$J:J!MJ]oJ0ÍJJþJIKJYKÓ¢hå` »•ŠðQ@/Ä{j @È׋ËïBxÖ“eïe|”3é4‘µi-l‰²Y™/fHÎã%cš*^r#pÝŸ»²g‹Ê-!…œÑ7yÛa/ÿ‡lùC™hDøo†W€^•ŒàKá ƒÜByV‚@¢?%æÁàטڌ'2#zm p³nVJOŒ§&œR–þ ÙÍËÉŽç’„ä¤w^¯;9üj«M8) uýíj5qè÷¼ k;{b¤<9ƒ~cX6ðö‹…¹núfdT§<‰âS01Ó, N¬wW†X¼—çC.¡]É ë—‘ ·Òœ›|<Å–iî®›°òÈ}: ¥uØ`ytF¸5)“ÿ±[ [Sl°b3TÔ´³o…$ÍU]zô*)¹ãÆV'â0ÀhoN£SŠÎ¦K¥ép ›YE‡?>RP†Ž4õ1 ´!áe½¶!—?\Pì"î_=.QDÑŠÏì3ÐÂø:sW‡ÃÅ€\ßåRP|v#F2š1T>Ax x'GB“=Ì.`F$®H¿Eq,ÜU¬Aý5­IMqZ%6&LÔäÙ=dÁþæNž((_„Âê©ÄßQZAˆ ¦uÇÕÚ}c€DªXƒ˜êµ‚¾v¨4ÖY¸Cë \Ÿˆ(m’IvZOg™šGwñóõÌ ~9•ñHmó”’À£üº{ŸLíò:¨"Þ÷J +«]gž­è‘}_úk¯"ÒùºÝz86·ÃO7kö¡M0[½Ûs‚;iKŽØs-©7Ær+~ÊÕEa±¿žUǘ Þ8Lt&aI,Ï2d¾‰*ª>Gû¶nôfr„tˆ+JbÐû”$– (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Thai Language: th_TH MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: th X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (ถูà¸à¹à¸à¹‰à¹„ข) (ยังไม่ได้บันทึà¸)ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่พบในรหัส %d ตำà¹à¸«à¸™à¹ˆà¸‡%d รายà¸à¸²à¸£%d รายà¸à¸²à¸£à¹„ด้ถูà¸à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¹à¸¥à¹‰à¸§à¸‚้อผิดพลาด %d รายà¸à¸²à¸£à¸žà¸šà¸›à¸±à¸à¸«à¸² %d รายà¸à¸²à¸£à¹ƒà¸™à¸à¸²à¸£à¹à¸›à¸¥à¹„ม่สามารถโหลดข้อมูล %i บรรทัดที่อยู่ในไฟล์ "%s" อย่างถูà¸à¸•้องได้รูปà¹à¸šà¸š %sà¸à¸²à¸£à¸•ั้งค่า %sรูปà¹à¸šà¸š %s&เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š&เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š Poedit&นำไปใช้&ย้อนà¸à¸¥à¸±à¸š&ยà¸à¹€à¸¥à¸´à¸&ล้าง&ปิด&คัดลอà¸&ลบ&เสร็จสิ้นà¹à¸¥à¸°à¸–ัดไป&เสร็จสิ้นà¹à¸¥à¸°à¸–ัดไปà¹&à¸à¹‰à¹„ข&ไฟล์&ค้นหา…คู่มือ &GNU gettextคู่มือ &GNU gettext&ไป&จัดà¸à¸¥à¸¸à¹ˆà¸¡à¸•ามบริบท&จัดà¸à¸¥à¸¸à¹ˆà¸¡à¸•ามบริบท&ช่วยเหลือ&สร้าง&สร้างใหม่…&ถัดไป >&à¸à¸²à¸£à¹à¸›à¸¥à¸–ัดไป&à¸à¸²à¸£à¹à¸›à¸¥à¸–ัดไปไ&ม่ใช่&ตà¸à¸¥à¸‡&ความช่วยเหลือออนไลน์&ความช่วยเหลือออนไลน์&เปิด...&เปิด…&วาง&à¸à¸²à¸£à¸•ั้งค่า&à¸à¸²à¸£à¸•ั้งค่า...&à¸à¸²à¸£à¹à¸›à¸¥à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²&à¸à¸²à¸£à¹à¸›à¸¥à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²&คุณสมบัติ…&ล้างข้อมูลà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่ลบไปà¹à¸¥à¹‰à¸§&ล้างข้อมูลà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่ลบไปà¹à¸¥à¹‰à¸§&ออà¸&ทำซ้ำ&à¹à¸—นที่&บันทึà¸&บันทึà¸à¹€à¸›à¹‡à¸™&à¹à¸ªà¸”งตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่พบในรหัส&à¹à¸ªà¸”งตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่พบในรหัสหน้าต่างเมื่อเ&ริ่มทำงานหน้าต่างเมื่อเ&ริ่มทำงาน&à¸à¸²à¸£à¹à¸›à¸¥&เลิà¸à¸—ำ&ขึ้นต้นด้วยรายà¸à¸²à¸£à¸—ี่ยังไม่ได้à¹à¸›à¸¥à¸à¹ˆà¸­à¸™&ขึ้นต้นด้วยรายà¸à¸²à¸£à¸—ี่ยังไม่ได้à¹à¸›à¸¥à¸à¹ˆà¸­à¸™&อัพเดตจาà¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ด&อัพเดตจาà¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ด&ตรวจสอบà¸à¸²à¸£à¹à¸›à¸¥&ตรวจสอบà¸à¸²à¸£à¹à¸›à¸¥&มุมมองใ&ช่(ใช้ภาษาเริ่มต้น)(ไม่ได้เข้าสู่ระบบ)(จำเป็นต้องใช้ Windows 8 หรือใหม่à¸à¸§à¹ˆà¸²)< &à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²<ไม่มีชื่อ>เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š %sบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸šà¸±à¸à¸Šà¸µà¹€à¸žà¸´à¹ˆà¸¡à¹€à¸žà¸´à¹ˆà¸¡à¸„ำà¹à¸™à¸°à¸™à¸³à¹€à¸žà¸´à¹ˆà¸¡à¹„ฟล์…เพิ่มโฟลเดอร์…เพิ่มโครงà¸à¸²à¸£à¹€à¸žà¸´à¹ˆà¸¡à¸­à¸±à¸à¸‚ระตัวà¹à¸—น…เพิ่มคำà¹à¸™à¸°à¸™à¸³à¹€à¸žà¸´à¹ˆà¸¡à¸•ำà¹à¸«à¸™à¹ˆà¸‡à¹„ปยังรายà¸à¸²à¸£à¹€à¸žà¸´à¹ˆà¸¡à¹„ฟล์…เพิ่มโฟลเดอร์…เพิ่มโครงà¸à¸²à¸£à¹€à¸žà¸´à¹ˆà¸¡à¸­à¸±à¸à¸‚ระตัวà¹à¸—น…คำสำคัà¸à¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•ิมค่าสถานะ xgettext เพิ่มเติม:ขั้นสูงà¸à¸²à¸£à¸•ั้งค่าà¸à¸²à¸£à¹à¸¢à¸à¸‚ั้นสูง…à¸à¸²à¸£à¸•ั้งค่าà¸à¸²à¸£à¹à¸¢à¸à¸‚ั้นสูงà¸à¸²à¸£à¸•ั้งค่าà¸à¸²à¸£à¹à¸¢à¸à¸‚ั้นสูง…ไฟล์à¸à¸²à¸£à¹à¸›à¸¥à¸—ั้งหมดคำà¹à¸™à¸°à¸™à¸³à¸—ั้งหมดสตริงทั้งหมดใช้คำสำคัà¸à¹€à¸£à¸´à¹ˆà¸¡à¸•้นสำหรับภาษาที่รองรับด้วยเปลี่ยนโฟà¸à¸±à¸ªà¹„ปยังพื้นที่ป้อนข้อความรายà¸à¸²à¸£à¹ƒà¸™à¸£à¸²à¸¢à¸à¸²à¸£à¹„ฟล์นำเข้า:รายà¸à¸²à¸£à¹ƒà¸™à¸£à¸²à¸¢à¸à¸²à¸£à¸„ำสำคัà¸:ลัà¸à¸©à¸“ะที่ปราà¸à¸à¸™à¸³à¹„ปใช้คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¸«à¸£à¸·à¸­à¸§à¹ˆà¸²à¸„ุณต้องà¸à¸²à¸£à¸¥à¸šà¸•ัวà¹à¸¢à¸ "%s"คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¸«à¸£à¸·à¸­à¸§à¹ˆà¸²à¸„ุณต้องà¸à¸²à¸£à¸£à¸µà¹€à¸‹à¹‡à¸•หน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¸•รวจหาà¸à¸²à¸£à¸­à¸±à¸žà¹€à¸”ตโดยอัตโนมัติคอมไพล์ไฟล์ MO โดยอัตโนมัติเมื่อบันทึà¸à¸¢à¹‰à¸­à¸™à¸à¸¥à¸±à¸šà¹€à¸ªà¹‰à¸™à¸—างหลัà¸:เวอร์ชั่นเบต้าประà¸à¸­à¸šà¸”้วยคุณสมบัติà¹à¸¥à¸°à¸à¸²à¸£à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¹ƒà¸«à¸¡à¹ˆà¸¥à¹ˆà¸²à¸ªà¸¸à¸” à¹à¸•่อาจเสถียรน้อยà¸à¸§à¹ˆà¸²à¸™à¸³à¸—ั้งหมดมาด้านหน้าไฟล์ PO เสียหาย: รูปพหูพจน์ msgstr ถูà¸à¹ƒà¸Šà¹‰à¹‚ดยไม่มี msgid_pluralà¹à¸Ÿà¹‰à¸¡à¸£à¸²à¸¢à¸à¸²à¸£à¸—ี่เสียหาย: รูปà¹à¸šà¸šà¹€à¸­à¸à¸žà¸ˆà¸™à¹Œà¸–ูà¸à¹ƒà¸Šà¹‰à¸£à¹ˆà¸§à¸¡à¸à¸±à¸šà¸£à¸¹à¸›à¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸¡à¸²à¸£à¹Œà¸à¸­à¸±à¸›à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹„ม่ได้ในà¸à¸²à¸£à¹à¸›à¸¥à¸ªà¸•ริงเรียà¸à¸”ูเรียà¸à¸”ูไฟล์ตามค่าเริ่มต้น ผลลัพธ์ที่ไม่ถูà¸à¸•้องจะรวมอยู่ด้วย à¹à¸•่ทำเครื่องหมายว่าต้องดำเนินà¸à¸²à¸£ เลือà¸à¸•ัวเลือà¸à¸™à¸µà¹‰à¹€à¸žà¸·à¹ˆà¸­à¸£à¸§à¸¡à¹€à¸‰à¸žà¸²à¸°à¸à¸²à¸£à¸ˆà¸±à¸šà¸„ู่ที่สมบูรณ์à¹à¸šà¸šà¹€à¸—่านั้นยà¸à¹€à¸¥à¸´à¸à¸à¸³à¸¥à¸±à¸‡à¸¢à¸à¹€à¸¥à¸´à¸â€¦à¹„ม่สามารถสร้างไดเรà¸à¸—อรีชั่วคราวไม่สามารถเรียà¸à¹ƒà¸Šà¹‰à¹‚ปรà¹à¸à¸£à¸¡: %sไม่สามารถà¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¸ˆà¸²à¸à¸ à¸²à¸©à¸²à¸—ี่ไม่รู้จัà¸à¹„ด้ไม่สามารถà¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¹‚ดยไม่มีข้อความต้นฉบับขึ้นต้นด้วยตัวพิมพ์ใหà¸à¹ˆà¸•ัวจัดà¸à¸²à¸£&à¹à¸„็ตตาล็อà¸à¸•ัวจัดà¸à¸²à¸£&à¹à¸„็ตตาล็อà¸à¸•ัวจัดà¸à¸²à¸£à¹à¸„็ตตาล็อà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸ à¸²à¸©à¸² UIชุดอัà¸à¸‚ระ:ตรวจสอบเอà¸à¸ªà¸²à¸£à¸•อนนี้ตรวจสอบไวยาà¸à¸£à¸“์ด้วยà¸à¸²à¸£à¸ªà¸°à¸à¸”ตรวจสอบà¸à¸²à¸£à¸ªà¸°à¸à¸”ขณะป้อนตรวจหาà¸à¸²à¸£à¸­à¸±à¸žà¹€à¸”ต…ตรวจสอบข้อผิดพลาดในà¸à¸²à¸£à¹à¸›à¸¥à¸•รวจหาà¸à¸²à¸£à¸­à¸±à¸žà¹€à¸”ต…à¸à¸²à¸£à¸•รวจสอบà¸à¸²à¸£à¸ªà¸°à¸à¸”ล้างล้างรายà¸à¸²à¸£à¸¥à¹‰à¸²à¸‡à¸à¸²à¸£à¹à¸›à¸¥à¸¥à¹‰à¸²à¸‡à¸£à¸²à¸¢à¸à¸²à¸£à¸¥à¹‰à¸²à¸‡à¸à¸²à¸£à¹à¸›à¸¥à¸›à¸´à¸”คลาวด์ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่พบในรหัสตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่พบในรหัสทำงานร่วมà¸à¸±à¸šà¸œà¸¹à¹‰à¸­à¸·à¹ˆà¸™à¸—างออนไลน์à¸à¸³à¸¥à¸±à¸‡à¸£à¸§à¸šà¸£à¸§à¸¡à¹„ฟล์ต้นฉบับ…คำสั่งที่ใช้à¹à¸¢à¸à¸à¸²à¸£à¹à¸›à¸¥:ความคิดเห็นคำà¹à¸™à¸°à¸™à¸³:คำà¹à¸™à¸°à¸™à¸³à¸—ี่ขึ้นต้นด้วย:คอมไพล์เป็น MO…คอมไพล์ไปยัง…ไฟล์à¸à¸²à¸£à¹à¸›à¸¥à¸—ี่คอมไพล์à¹à¸¥à¹‰à¸§à¸à¸³à¸«à¸™à¸”ค่าà¸à¸²à¸£à¹à¸¢à¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ดในคุณสมบัติà¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•่อ Poedit à¸à¸±à¸šà¹à¸žà¸¥à¸•ฟอร์มà¸à¸²à¸£à¹à¸›à¸¥à¸šà¸™à¸„ลาวด์ที่รองรับเพื่อซิงค์à¸à¸²à¸£à¹à¸›à¸¥à¸—ี่จัดà¸à¸²à¸£à¹„ด้อย่างราบรื่นคัดลอà¸à¸„ัดลอà¸à¸ˆà¸²à¸à¹€à¸­à¸à¸žà¸ˆà¸™à¹Œà¸„ัดลอà¸à¸ˆà¸²à¸à¸‚้อความต้นฉบับคัดลอà¸à¸ˆà¸²à¸à¹€à¸­à¸à¸žà¸ˆà¸™à¹Œà¸„ัดลอà¸à¸ˆà¸²à¸à¸‚้อความต้นฉบับà¹à¸à¹‰à¹„ขà¸à¸²à¸£à¸ªà¸°à¸à¸”โดยอัตโนมัติไม่สามารถดาวน์โหลดรายละเอียดโปรเจ็à¸à¸•์ Localazy ได้ไม่สามารถโหลดไฟล์ เนื่องจาà¸à¸­à¸²à¸ˆà¹€à¸›à¹‡à¸™à¹€à¸žà¸£à¸²à¸°à¹„ฟล์เสียหายไม่สามารถบันทึà¸à¹„ฟล์ %sสร้างใหม่สร้างà¸à¸²à¸£à¹à¸›à¸¥à¹ƒà¸«à¸¡à¹ˆà¸ªà¸£à¹‰à¸²à¸‡à¸à¸²à¸£à¹à¸›à¸¥à¹ƒà¸«à¸¡à¹ˆà¸ˆà¸²à¸à¹à¸¡à¹ˆà¹à¸šà¸š POTสร้างโครงà¸à¸²à¸£à¹à¸›à¸¥à¹ƒà¸«à¸¡à¹ˆà¸‚้อผิดพลาดของ Crowdin&ตัดตัวà¹à¸¢à¸à¹à¸šà¸šà¸à¸³à¸«à¸™à¸”เอง:ตัวà¹à¸¢à¸à¹à¸šà¸šà¸à¸³à¸«à¸™à¸”เอง:à¸à¸³à¸«à¸™à¸”à¹à¸–บเครื่องมือ...ตัดขนาดà¸à¸²à¸™à¸‚้อมูลบนดิสà¸à¹Œà¸¥à¸šà¸¥à¸šà¸­à¸­à¸à¸ˆà¸²à¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¸¥à¸šà¸•ัวà¹à¸¢à¸à¸¥à¸šà¸­à¸­à¸à¸ˆà¸²à¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¸¥à¸šà¹‚ครงà¸à¸²à¸£à¸¥à¸šà¸„วามคิดเห็นลบโครงà¸à¸²à¸£à¸à¸²à¸£à¸¥à¸šà¹‚ครงà¸à¸²à¸£à¸ˆà¸°à¹„ม่ลบไฟล์à¸à¸²à¸£à¹à¸›à¸¥à¹ƒà¸”ๆที่ตั้ง:คุณต้องà¸à¸²à¸£à¸¥à¸šà¹‚ครงà¸à¸²à¸£ “%s†หรือไม่?คุณต้องà¸à¸²à¸£à¸£à¸µà¹‚หลดไฟล์จาà¸à¸”ิสà¸à¹Œà¸«à¸£à¸·à¸­à¹„ม่? à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่ยังไม่บันทึà¸à¸‚องคุณใน Poedit จะสูยหายหาà¸à¸„ุณรีโหลดคุณต้องà¸à¸²à¸£à¸¥à¸šà¸„ำà¹à¸›à¸¥à¸—ั้งหมดที่เหมือนà¸à¸±à¸šà¸‚้อความต้นฉบับหรือไม่คุณต้องà¸à¸²à¸£à¸¥à¸šà¸à¸²à¸£à¹à¸›à¸¥à¸—ั้งหมดที่ไม่ได้ใช้งานอีà¸à¸•่อไปหรือไม่&ไม่ต้องบันทึà¸à¹„ม่ต้องบันทึà¸à¹„ม่ต้องà¹à¸ªà¸”งอีà¸à¹„ม่ต้องทำเครื่องหมายรายà¸à¸²à¸£à¸—ี่ตรงà¸à¸±à¸™à¸§à¹ˆà¸²à¸•้องà¸à¸²à¸£à¸—ำงานไม่ต้องà¹à¸ªà¸”งอีà¸à¸à¸³à¸¥à¸±à¸‡à¸”าวน์โหลดà¸à¸²à¸£à¹à¸›à¸¥à¸¥à¹ˆà¸²à¸ªà¸¸à¸”…à¸à¸²à¸£à¸”าวน์โหลดà¸à¸²à¸£à¹à¸›à¸¥à¸–ูà¸à¸›à¸´à¸”ใช้งานในโครงà¸à¸²à¸£à¸™à¸µà¹‰à¸¥à¸²à¸à¹‚ฟลเดอร์หรือไฟล์มาที่นี่ลาà¸à¹‚ฟลเดอร์หรือไฟล์มาที่นี่&ออà¸à¸ªà¹ˆà¸‡&ออà¸à¹€à¸›à¹‡à¸™ HTML…à¹à¸à¹‰à¹„ขà¹à¸à¹‰à¹„ขคำà¹&นะนำà¹à¸à¹‰à¹„ขคำà¹&นะนำà¹à¸à¹‰à¹„ขคำà¹à¸™à¸°à¸™à¸³à¹à¸à¹‰à¹„ขคำà¹à¸™à¸°à¸™à¸³à¹à¸à¹‰à¹„ขโครงà¸à¸²à¸£à¹à¸à¹‰à¹„ขโครงà¸à¸²à¸£à¸à¸²à¸£à¹à¸à¹‰à¹„ขà¹à¸à¹‰à¹„ข…อีเมล:เข้าโหมดเต็มหน้าจอรายà¸à¸²à¸£à¹ƒà¸™à¹„ฟล์นี้มีà¸à¸²à¸£à¸™à¸±à¸šà¸£à¸¹à¸›à¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¹à¸•à¸à¸•่างจาà¸à¸—ี่à¸à¸³à¸«à¸™à¸”ไว้ในส่วนหัว Plural-Forms ของไฟล์ขึ้นต้นด้วยรายà¸à¸²à¸£à¸—ี่มีข้อผิดพลาดà¸à¹ˆà¸­à¸™à¸‚ึ้นต้นด้วยรายà¸à¸²à¸£à¸—ี่มีข้อผิดพลาดà¸à¹ˆà¸­à¸™à¸£à¸²à¸¢à¸à¸²à¸£à¸—ี่มีข้อผิดพลาดจะถูà¸à¸—ำเครื่องหมายเป็นสีà¹à¸”งไว้ในรายà¸à¸²à¸£ รายละเอียดของข้อผิดพลาดจะà¹à¸ªà¸”งเมื่อคุณเลือà¸à¸£à¸²à¸¢à¸à¸²à¸£à¸”ังà¸à¸¥à¹ˆà¸²à¸§à¹€à¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¹€à¸›à¸´à¸”ไฟล์ข้อผิดพลาดขณะบันทึà¸à¹à¸Ÿà¹‰à¸¡à¹€à¸à¸´à¸”ข้อผิดพลาดขณะโหลดไฟล์ XLIFF: %sข้อผิดพลาดทุà¸à¸­à¸¢à¹ˆà¸²à¸‡à¹€à¸ªà¹‰à¸™à¸—างที่คัดออà¸à¸ªà¹ˆà¸‡à¸­à¸­à¸à¹€à¸›à¹‡à¸™ TMX…ส่งออà¸à¹€à¸›à¹‡à¸™â€¦à¸ªà¹ˆà¸‡&ออà¸à¹€à¸›à¹‡à¸™ HTML…ส่งออà¸à¹€à¸›à¹‡à¸™ TMX…ไม่สามารถส่งออà¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¹€à¸›à¹‡à¸™ “%sâ€à¸à¸³à¸¥à¸±à¸‡à¸ªà¹ˆà¸‡à¸­à¸­à¸à¸à¸²à¸£à¹à¸›à¸¥â€¦à¹à¸¢à¸à¸ˆà¸²à¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ดà¹à¸¢à¸à¸šà¸±à¸™à¸—ึà¸à¸¢à¹ˆà¸­à¸ªà¸³à¸«à¸£à¸±à¸šà¸™à¸±à¸à¹à¸›à¸¥à¸ˆà¸²à¸:à¹à¸¢à¸à¸‚้อความจาà¸à¹„ฟล์ต้นฉบับในไดเรà¸à¸—อรีต่อไปนี้:à¸à¸²à¸£à¸•ิดตั้งตัวà¹à¸¢à¸à¸•ัวà¹à¸¢à¸à¸à¸²à¸£à¸ªà¸·à¹ˆà¸­à¸ªà¸²à¸£à¸à¸±à¸šà¸à¸£à¸°à¸šà¸§à¸™à¸à¸²à¸£ Poedit ล้มเหลวไม่สามารถโหลดไฟล์ที่มีà¸à¸²à¸£à¹à¸›à¸¥à¹à¸¢à¸à¸à¸²à¸£à¸œà¸ªà¸²à¸™à¹à¸„็ตตาล็อภgettext ล้มเหลวไม่สามารถอัพเดตหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥: %sไฟล์ไม่สามารถเปิดไฟล์ไม่มีไฟล์ "%s" อยู่ไฟล์ “%s†ไม่ใช่ไฟล์ในà¸à¸²à¸£à¹à¸›à¸¥à¹„ฟล์ "%s" อ่านได้อย่างเดียวà¹à¸¥à¸°à¹„ม่สามารถบันทึà¸à¹„ด้ โปรดบันทึà¸à¹‚ดยใช้ชื่ออื่นค้นหาค้นหาถัดไปค้นหาà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸„้นหาà¹à¸¥à¸°à¹à¸—นที่…ค้นหาในคำà¹à¸™à¸°à¸™à¸³à¸„้นหาในข้อความต้นฉบับค้นหาในà¸à¸²à¸£à¹à¸›à¸¥à¸„้นหาถัดไปค้นหาà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¹à¸à¹‰à¹„ขภาษาà¹à¸à¹‰à¹„ขภาษาà¹à¸à¹‰à¹„ขส่วนหัวà¹à¸à¹‰à¹„ขส่วนหัวไฟล์à¹à¸›à¸¥ Flutterฟอร์ม %ià¹à¸šà¸šà¸Ÿà¸­à¸£à¹Œà¸¡ %i (ไม่ได้ใช้งาน)GNU gettextทั่วไปไฟล์ HTMLวิธีใช้ซ่อนà¹à¸–บด้านข้างซ่อนà¹à¸–บสถานะซ่อนข้อความà¹à¸ˆà¹‰à¸‡à¹€à¸•ือนนี้à¸à¸²à¸£à¸‹à¸´à¸‡à¸„์บนคลาวด์ทำงานอย่างไรIDถ้าคุณดำเนินà¸à¸²à¸£à¸¥à¹‰à¸²à¸‡à¸‚้อมูลต่อไป à¸à¸²à¸£à¹à¸›à¸¥à¸—ั้งหมดที่ทำเครื่องหมายว่าลบà¹à¸¥à¹‰à¸§à¸ˆà¸°à¸–ูà¸à¹€à¸­à¸²à¸­à¸­à¸à¸­à¸¢à¹ˆà¸²à¸‡à¸–าวร ถ้ามีà¸à¸²à¸£à¸™à¸³à¸‚้อความเหล่านี้à¸à¸¥à¸±à¸šà¸¡à¸²à¹ƒà¸Šà¹‰à¸­à¸µà¸à¹ƒà¸™à¸­à¸™à¸²à¸„ต คุณจะต้องà¹à¸›à¸¥à¸‚้อความเหล่านี้ใหม่หาà¸à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¸„ุณถูà¸à¸›à¸à¸´à¹€à¸ªà¸˜à¸à¸²à¸£à¹€à¸‚้าถึงไฟล์ของคุณ คุณสามารถอนุà¸à¸²à¸•ได้ในà¸à¸²à¸£à¸•ั้งค่าระบบ> ความปลอดภัยà¹à¸¥à¸°à¸„วามเป็นส่วนตัว> ความเป็นส่วนตัว> ไฟล์à¹à¸¥à¸°à¹‚ฟลเดอร์หาà¸à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¸„ุณปà¸à¸´à¹€à¸ªà¸˜à¸à¸²à¸£à¹€à¸‚้าถึงไฟล์ คุณสามารถอนุà¸à¸²à¸•ได้ในà¸à¸²à¸£à¸•ั้งค่าระบบ > ความเป็นส่วนตัวà¹à¸¥à¸°à¸„วามปลอดภัย > ไฟล์à¹à¸¥à¸°à¹‚ฟลเดอร์เพิà¸à¹€à¸‰à¸¢à¸¥à¸°à¹€à¸§à¹‰à¸™à¸•ัวพิมพ์นำเข้าจาภTMX…นำเข้าไฟล์à¸à¸²à¸£à¹à¸›à¸¥â€¦à¸™à¸³à¹€à¸‚้าจาภTMX…นำเข้าไฟล์à¸à¸²à¸£à¹à¸›à¸¥â€¦à¸à¸³à¸¥à¸±à¸‡à¸™à¸³à¹€à¸‚้าà¸à¸²à¸£à¹à¸›à¸¥â€¦à¹ƒà¸™: %sประà¸à¸­à¸šà¸”้วยเวอร์ชั่นเบต้าตัวพิมพ์ใหà¸à¹ˆ-เล็à¸à¹„ม่สม่ำเสมอà¸à¸±à¸™à¸Šà¹ˆà¸­à¸‡à¸§à¹ˆà¸²à¸‡à¹„ม่สม่ำเสมอà¸à¸±à¸™à¸‚้อมูลเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸œà¸¹à¹‰à¹à¸›à¸¥à¸•ิดตั้งไฟล์ไม่ถูà¸à¸•้องà¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อ:ไฟล์à¹à¸›à¸¥ JSONเà¸à¹‡à¸šà¹„ว้ชื่อภาษาหรือรหัสภาษาà¸à¸²à¸£à¹à¸›à¸¥à¹€à¸«à¸¡à¸·à¸­à¸™à¸à¸±à¸šà¸ à¸²à¸©à¸²à¸•้นฉบับไม่ได้à¸à¸³à¸«à¸™à¸”ภาษาà¸à¸²à¸£à¹à¸›à¸¥à¸ à¸²à¸©à¸²à¸‚องà¸à¸²à¸£à¹à¸›à¸¥:à¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸à¸ à¸²à¸©à¸²à¸—ีมภาษา:ภาษา:ปรับเปลี่ยนล่าสุดเรียนรู้เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸„ำสำคัภGettextเรียนรู้เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸£à¸¹à¸›à¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¹€à¸£à¸µà¸¢à¸™à¸£à¸¹à¹‰à¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•ิมเรียนรู้เพิ่มเติมเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š %sเรียนรู้เพิ่มเติมเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š Crowdinข้อมูลในบรรทัดที่ %d ในไฟล์ "%s" เสียหาย (ข้อมูล %s ไม่ถูà¸à¸•้อง)สิ้นสุดบรรทัด:รายà¸à¸²à¸£à¸‚องส่วนขยายà¹à¸¢à¸à¹‚ดยใช้อัฒภาค (เช่น *.cpp;*.h):โหลดภาษาอังà¸à¸¤à¸©Localazy เป็นà¹à¸žà¸¥à¸•ฟอร์มà¸à¸²à¸£à¹à¸›à¸¥à¸­à¸±à¸•โนมัติที่ช่วยให้ทุà¸à¸„นสามารถà¹à¸›à¸¥à¸œà¸¥à¸´à¸•ภัณฑ์à¹à¸¥à¸°à¹€à¸™à¸·à¹‰à¸­à¸«à¸²à¸‚องตนเป็นหลายภาษาได้อย่างง่ายดายไฟล์ MO ไม่สามารถà¹à¸à¹‰à¹„ขโดยตรงใน Poedit ได้ทำให้เป็นตัวพิมพ์เล็à¸à¸—ำให้เป็นตัวพิมพ์ใหà¸à¹ˆà¸ªà¸£à¹‰à¸²à¸‡à¸à¸²à¸£à¹à¸›à¸¥à¹ƒà¸«à¸¡à¹ˆà¸ˆà¸²à¸à¹„ฟล์ POT นี้ส่วนหัวมีรูปà¹à¸šà¸šà¸—ี่ไม่ถูà¸à¸•้อง: "%s"จัดà¸à¸²à¸£à¸šà¸±à¸à¸Šà¸µà¸ˆà¸±à¸”à¸à¸²à¸£â€¦à¸à¸³à¸¥à¸±à¸‡à¸œà¸ªà¸²à¸™à¸ªà¹ˆà¸§à¸™à¸—ี่à¹à¸•à¸à¸•่าง…ย่อให้เล็à¸à¸—ี่สุดชื่อโครงà¸à¸²à¸£à¹à¸›à¸¥à¸Šà¸·à¹ˆà¸­:ที่ยังไม่เสร็จถัดไ&ปที่ยังไม่เสร็จถัดไ&ปต้องà¸à¸²à¸£à¸•รวจทานต้องà¸à¸²à¸£à¸•รวจทานข้อผิดพลาดของเครือข่าย: %s (%d)อย่าโฟà¸à¸±à¸ªà¹„ปที่รายà¸à¸²à¸£à¸ªà¸•ริง ถ้าเปิดใช้งาน คุณจะต้องใช้ลูà¸à¸¨à¸£à¹à¸¥à¸° Ctrl สำหรับà¸à¸²à¸£à¸™à¸³à¸—างà¹à¸›à¹‰à¸™à¸žà¸´à¸¡à¸žà¹Œ à¹à¸•่คุณà¸à¹‡à¸ªà¸²à¸¡à¸²à¸£à¸–พิมพ์ข้อความได้ทันที โดยไม่ต้องà¸à¸”ปุ่ม Tab เพื่อเปลี่ยนโฟà¸à¸±à¸ªà¸ªà¸£à¹‰à¸²à¸‡à¹ƒà¸«à¸¡à¹ˆà¸ªà¸£à¹‰à¸²à¸‡à¹ƒà¸«à¸¡à¹ˆ&จาà¸à¹„ฟล์ POT/PO…สร้างใหม่&จาà¸à¹„ฟล์ POT/PO…สตริงใหม่รูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸–ัดไปรูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸–ัดไปไม่ใช่ไม่พบผลลัพธ์ที่ตรงà¸à¸±à¸™à¹„ม่มีรายà¸à¸²à¸£à¸—ี่สามารถà¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¹„ด้ไม่มีข้อมูลเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸•ำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่พบของสตริงนี้ในรหัสต้นฉบับในไฟล์ไม่พบผลลัพธ์ที่ตรงà¸à¸±à¸™à¹„ม่พบปัà¸à¸«à¸²à¹ƒà¸™à¸à¸²à¸£à¹à¸›à¸¥à¹„ม่มีโครงà¸à¸²à¸£à¹à¸›à¸¥à¸­à¸¢à¸¹à¹ˆà¹ƒà¸™à¸šà¸±à¸à¸Šà¸µà¸‚องคุณไม่มีข้อมูลà¸à¸²à¸£à¹ƒà¸Šà¹‰à¹„ม่ได้à¹à¸›à¸¥à¸£à¸¹à¸›à¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸—ั้งหมดไม่ได้รับอนุà¸à¸²à¸• โปรดเข้าสู่ระบบอีà¸à¸„รั้งหมายเหตุสำหรับนัà¸à¹à¸›à¸¥à¸•à¸à¸¥à¸‡à¸«à¸™à¸¶à¹ˆà¸‡à¹€à¸›à¸´à¸”ใช้งานà¸à¹‡à¸•่อเมื่อคุณเชื่อถือคุณภาพของหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¸‚องคุณเท่านั้น โดยเริ่มต้น รายà¸à¸²à¸£à¸—ี่ตรงà¸à¸±à¸™à¸ˆà¸²à¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸°à¸–ูà¸à¸—ำเครื่องหมายว่าต้องà¸à¸²à¸£à¸•รวจทานà¹à¸¥à¸°à¸„วรจะได้รับà¸à¸²à¸£à¸•รวจทานà¸à¹ˆà¸­à¸™à¸ˆà¸°à¸™à¸³à¹„ปใช้เติมข้อมูลลงในรายà¸à¸²à¸£à¸—ี่ตรงà¸à¸±à¸™à¹€à¸—่านั้นเปิดà¸à¸²à¸£à¹à¸›à¸¥à¸šà¸™à¸„ลาวด์เปิดล่าสุดเปิดà¹à¸¥à¸°à¹à¸à¹‰à¹„ขไฟล์à¸à¸²à¸£à¹à¸›à¸¥à¹€à¸›à¸´à¸”à¸à¸²à¸£à¹à¸›à¸¥à¸šà¸™à¸„ลาวด์เปิดà¸à¸²à¸£à¹à¸›à¸¥à¸šà¸™à¸„ลาวด์เปิดไฟล์เปิดในตัวà¹à¸à¹‰à¹„ขเปิดในตัวà¹à¸à¹‰à¹„ขเปิดไฟล์ล่าสุดเปิด...เปิด…ตัวเลือà¸à¸­à¸·à¹ˆà¸™à¹†à¸—ี่ยังไม่เสร็จà¸à¹ˆà¸­à¸™&หน้าที่ยังไม่เสร็จà¸à¹ˆà¸­à¸™&หน้าไฟล์à¸à¸²à¸£à¹à¸›à¸¥ POà¹à¸¡à¹ˆà¹à¸šà¸šà¸à¸²à¸£à¹à¸›à¸¥ POTไฟล์ POT เป็นเพียงà¹à¸¡à¹ˆà¹à¸šà¸šà¹€à¸—่านั้นà¹à¸¥à¸°à¹„ม่ประà¸à¸­à¸šà¸”้วยà¸à¸²à¸£à¹à¸›à¸¥à¹ƒà¸”ๆ เมื่อต้องà¸à¸²à¸£à¸—ำà¸à¸²à¸£à¹à¸›à¸¥ ให้สร้างไฟล์ PO ใหม่โดยยึดตามà¹à¸¡à¹ˆà¹à¸šà¸šà¸§à¸²à¸‡à¸§à¸²à¸‡à¹à¸¥à¸°à¸›à¸£à¸±à¸šà¸¥à¸±à¸à¸©à¸“ะให้ตรงà¸à¸±à¸™à¹€à¸ªà¹‰à¸™à¸—างทำà¸à¸²à¸£à¸­à¸±à¸žà¹€à¸”ตจาà¸à¸£à¸«à¸±à¸ªà¸•้นฉบับบนไฟล์ทั้งหมดในโครงà¸à¸²à¸£à¸ªà¸´à¸—ธิ์à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸–ูà¸à¸›à¸à¸´à¹€à¸ªà¸˜!ไม่มีตัวยึดตำà¹à¸«à¸™à¹ˆà¸‡ “%s†จาà¸à¸à¸²à¸£à¹à¸›à¸¥à¸‚้อความนี้ไม่มีข้อมูลบริบท ข้อความที่ใช้ใน poedit.pot ตำà¹à¸«à¸™à¹ˆà¸‡à¹ƒà¸™à¹„ฟล์: 526 ไฟล์: App stringsโปรดเปิดà¹à¸¥à¸°à¹à¸à¹‰à¹„ขไฟล์ PO ที่เà¸à¸µà¹ˆà¸¢à¸§à¸‚้องà¹à¸—น เมื่อคุณบันทึภไฟล์ MO จะถูà¸à¸­à¸±à¸žà¹€à¸”ตไปด้วยโปรดบันทึà¸à¹„ฟล์à¸à¹ˆà¸­à¸™ จึงจะสามารถà¹à¸à¹‰à¹„ขส่วนนี้ได้พหูพจน์à¸à¸²à¸£à¹à¸›à¸¥à¸£à¸¹à¸›à¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸™à¸´à¸žà¸ˆà¸™à¹Œà¸£à¸¹à¸›à¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸—ี่ใช้โดยไฟล์ผิดปà¸à¸•ิสำหรับ %sรูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œ:PoeditPoedit - ตัวจัดà¸à¸²à¸£à¹à¸„็ตตาล็อà¸Poedit ได้à¹à¸à¹‰à¹„ขเนื้อหาที่ไม่ถูà¸à¸•้องในไฟล์ “%s†โดยอัตโนมัติà¹à¸¥à¹‰à¸§Poedit สามารถพยายามเติมข้อมูลรายà¸à¸²à¸£à¹ƒà¸«à¸¡à¹ˆà¸ˆà¸²à¸à¹ƒà¸™à¸à¸²à¸£à¹à¸›à¸¥à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¹ƒà¸™à¹„ฟล์หรือจาà¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¸—ั้งหมดของคุณได้ à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸°à¹„ม่ค่อยมีประสิทธิภาพมาà¸à¸–้าหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¸™à¸±à¹‰à¸™à¹à¸—บจะว่างเปล่า à¹à¸•่ถ้าหาà¸à¸„ุณà¹à¸›à¸¥à¸¡à¸²à¸à¸‚ึ้น หน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¸à¹‡à¸ˆà¸°à¸”ีขึ้นเองPoedit ไม่สามารถà¹à¸ªà¸”งรหัสต้นฉบับส่วนที่ใช้สตริงได้ เนื่องจาà¸à¹„ม่มีไฟล์ในตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อ้างอิง หรือเป็นà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡à¹à¸šà¸šà¸ªà¸±à¸à¸¥à¸±à¸à¸©à¸“์ที่ไม่ชี้ไปยังไฟล์จริงPoedit เป็นโปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่ง่ายต่อà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™Poedit ไม่สามารถเปิดไฟล์ “%sâ€à¹à¸›à¸¥&ล่วงหน้า…à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¹à¸¥à¹‰à¸§%u สตริงที่à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¹à¸¥à¹‰à¸§à¸à¸²à¸£à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¸ˆà¸²à¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจà¹à¸²à¸à¸²à¸£à¹à¸›à¸¥...à¸à¸³à¸¥à¸±à¸‡à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²â€¦à¸à¸²à¸£à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¸ˆà¸°à¸„้นหารายà¸à¸²à¸£à¸—ี่ตรงà¸à¸±à¸šà¸ªà¸•ริงที่ยังไม่ได้à¹à¸›à¸¥à¸­à¸¢à¹ˆà¸²à¸‡à¸–ูà¸à¸•้องหรือคลุมเครือในหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¹à¸¥à¸°à¸™à¸³à¸¡à¸²à¹€à¸•ิมข้อมูลลงในà¸à¸²à¸£à¹à¸›à¸¥à¹‚ดยอัตโนมัติà¸à¸²à¸£à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¸ˆà¸³à¹€à¸›à¹‡à¸™à¸•้องมีข้อความต้นฉบับให้พร้อมใช้งาน มันจะไม่ทำงานหาà¸à¹ƒà¸Šà¹‰à¹€à¸‰à¸žà¸²à¸° ID ที่ไม่มีข้อความจริงเท่านั้นà¸à¸²à¸£à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¸ˆà¸³à¹€à¸›à¹‡à¸™à¸•้องทราบภาษาของข้อความต้นฉบับ Poedit ตรวจไม่พบในไฟล์นี้à¸à¸²à¸£à¸•ั้งค่าà¸à¸²à¸£à¸•ั้งค่า...à¸à¸²à¸£à¸•ั้งค่า…à¸à¹à¸²à¸¥à¸±à¸‡à¹€à¸•รียมสตริง...รัà¸à¸©à¸²à¸à¸²à¸£à¸ˆà¸±à¸”รูปà¹à¸šà¸šà¸‚องไฟล์ที่มีอยู่รูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸£à¸¹à¸›à¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸‚้อความต้นฉบับà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¸à¸²à¸£à¹à¸à¹‰à¹„ขà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¸à¸²à¸£à¹à¸à¹‰à¹„ขà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¸Šà¸·à¹ˆà¸­à¹à¸¥à¸°à¹€à¸§à¸­à¸£à¹Œà¸Šà¸±à¹ˆà¸™à¹‚ครงà¸à¸²à¸£:ชื่อโครงà¸à¸²à¸£:โครงà¸à¸²à¸£:โครงà¸à¸²à¸£à¸•รวจสอบเครื่องหมายวรรคตอนล้างข้อมูลล้างข้อมูลà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่ลบไปà¹à¸¥à¹‰à¸§à¸­à¸­à¸à¸à¸²à¸£à¸­à¹ˆà¸²à¸™à¹€à¸™à¸·à¹‰à¸­à¸«à¸²à¹„ฟล์ล้มเหลวโดยมีข้อผิดพลาดต่อไปนี้: %sไฟล์ล่าสุดทำซ้ำรี​เฟรชโหลดไฟล์ซ้ำโหลดไฟล์ซ้ำคงเหลือ: %dลบออà¸à¸¥à¸šà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่เหมือนà¸à¸±à¸šà¸•้นฉบับลบà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่มีà¹à¸«à¸¥à¹ˆà¸‡à¸—ี่มาเดียวà¸à¸±à¸™à¹à¸—น​ที่à¹à¸—นที่ &ทั้งหมดà¹à¸—นที่ &ทั้งหมดสตริงà¸à¸²à¸£à¹à¸—นที่à¹à¸—นที่…ส่วนหัว Plural-Forms ที่จำเป็นไม่มีอยู่รีเซ็ตรีเซ็ตหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¸à¸²à¸£à¸£à¸µà¹€à¸‹à¹‡à¸•หน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸°à¸¥à¸šà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่เà¸à¹‡à¸šà¹„ว้ออà¸à¸­à¸¢à¹ˆà¸²à¸‡à¸–าวร คุณไม่สามารถยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸™à¸µà¹‰à¹„ด้à¹à¸ªà¸”งใน Finderตรวจทานบันทึà¸à¸šà¸±à¸™à¸—ึà¸à¹€&ป็น…บันทึà¸à¹€&ป็น…บันทึà¸à¸•่อไปบันทึà¸à¸•่อไปบันทึà¸à¹€à¸›à¹‡à¸™à¸šà¸±à¸™à¸—ึà¸à¹€à¸›à¹‡à¸™â€¦à¸šà¸±à¸™à¸—ึà¸à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸šà¸±à¸™à¸—ึà¸à¹„ฟล์ภาพหน้าจอเลือà¸&ทั้งหมดเลือà¸à¸—ั้งหมดเลือà¸à¹„ฟล์ TMX ที่จะนำเข้าเลือà¸à¹„ดเรà¸à¸—อรีเลือà¸à¹„ฟล์à¹à¸›à¸¥à¹€à¸¥à¸·à¸­à¸à¹„ฟล์à¸à¸²à¸£à¹à¸›à¸¥à¸—ี่จะนำเข้าเลือà¸à¹€à¸—มเพลตà¸à¸²à¸£à¹à¸›à¸¥à¹€à¸¥à¸·à¸­à¸à¸ à¸²à¸©à¸²à¸—ี่คุณต้องà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ภาษาà¸à¸³à¸«à¸™à¸”ภาษาà¸à¸²à¸£à¸•ั้งค่าà¸à¸²à¸£à¸•ั้งค่า…à¹à¸ªà¸”งà¹à¸–บด้านข้างà¹à¸ªà¸”งà¸à¸²à¸£à¸ªà¸°à¸à¸”à¹à¸¥à¸°à¹„วยาà¸à¸£à¸“์à¹à¸ªà¸”งà¹à¸–บสถานะà¹à¸ªà¸”ง &รหัสสตริงà¹à¸ªà¸”งà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸—นที่à¹à¸ªà¸”งà¹à¸–บเครื่องมือà¹à¸ªà¸”งคำเตือนà¹à¸ªà¸”งใน Explorerà¹à¸ªà¸”งในโฟลเดอร์à¹à¸ªà¸”งหรือซ่อนà¹à¸–บด้านข้างà¹à¸ªà¸”งà¹à¸–บด้านข้างà¹à¸ªà¸”งà¹à¸–บสถานะà¹à¸ªà¸”ง &รหัสสตริงà¹à¸ªà¸”งคำเตือนà¹à¸–บด้านข้างลงชื่อเข้าใช้ออà¸à¸ˆà¸²à¸à¸£à¸°à¸šà¸šà¸¥à¸‡à¸Šà¸·à¹ˆà¸­à¹€à¸‚้าใช้เข้าสู่ระบบ %sลงชื่อเข้าใช้บัà¸à¸Šà¸µà¸„ลาวด์ลงชื่อเข้าใช้บัà¸à¸Šà¸µ Crowdinลงชื่อเข้าใช้บัà¸à¸Šà¸µà¸„ลาวด์ออà¸à¸ˆà¸²à¸à¸£à¸°à¸šà¸šà¹€à¸­à¸à¸žà¸ˆà¸™à¹Œà¸„ัดลอà¸à¸«à¸£à¸·à¸­à¸§à¸²à¸‡à¸­à¸±à¸ˆà¸‰à¸£à¸´à¸¢à¸°à¸‚ีดà¸à¸¥à¸²à¸‡à¸­à¸±à¸ˆà¸‰à¸£à¸´à¸¢à¸°à¸¥à¸´à¸‡à¸à¹Œà¸­à¸±à¸ˆà¸‰à¸£à¸´à¸¢à¸°à¸­à¸±à¸à¸›à¸£à¸°à¸à¸²à¸¨à¸­à¸±à¸ˆà¸‰à¸£à¸´à¸¢à¸°à¹€à¸£à¸µà¸¢à¸‡à¸•าม &ลำดับไฟล์เรียงตาม &à¹à¸«à¸¥à¹ˆà¸‡à¸‚้อมูลเรียงตาม &à¸à¸²à¸£à¹à¸›à¸¥à¹€à¸£à¸µà¸¢à¸‡à¸•าม &ลำดับไฟล์เรียงตาม &à¹à¸«à¸¥à¹ˆà¸‡à¸‚้อมูลเรียงตาม &à¸à¸²à¸£à¹à¸›à¸¥à¸£à¸«à¸±à¸ªà¸­à¸±à¸à¸‚ระดั้งเดิม:ตัวà¹à¸¢à¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ดใช้สำหรับค้นหาสตริงที่à¹à¸›à¸¥à¹„ด้ในไฟล์ซอร์สโค้ดà¹à¸¥à¸°à¹à¸¢à¸à¸ªà¸•ริงออà¸à¸¡à¸²à¹€à¸žà¸·à¹ˆà¸­à¹ƒà¸«à¹‰à¸ªà¸²à¸¡à¸²à¸£à¸–à¹à¸›à¸¥à¹„ด้ซอร์สโค้ดไม่พร้อมใช้งานไม่พบรหัสต้นฉบับข้อความต้นฉบับรหัสข้อความต้นฉบับข้อความต้นฉบับ — %sคำสำคัà¸à¸‚องà¹à¸«à¸¥à¹ˆà¸‡à¸—ี่มาเส้นทางà¹à¸«à¸¥à¹ˆà¸‡à¸‚้อมูลคำสำคัà¸à¸‚องà¹à¸«à¸¥à¹ˆà¸‡à¸—ี่มาเส้นทางà¹à¸«à¸¥à¹ˆà¸‡à¸‚้อมูลเสียงพูดà¸à¸²à¸£à¸•รวจคำสะà¸à¸”ถูà¸à¸›à¸´à¸”ใช้งาน เนื่องจาà¸à¹„ม่ได้ติดตั้งพจนานุà¸à¸£à¸¡à¸ªà¸³à¸«à¸£à¸±à¸šà¸ à¸²à¸©à¸² %sà¸à¸²à¸£à¸ªà¸°à¸à¸”à¹à¸¥à¸°à¹„วยาà¸à¸£à¸“์เริ่มพูดหยุดพูดà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่เà¸à¹‡à¸šà¹„ว้:บริบทสตริง: %sตัวระบุสตริง: %sความยาวสตริงในหน่วยอัà¸à¸‚ระความยาวสตริงในหน่วยอัà¸à¸‚ระ: à¸à¸²à¸£à¹à¸›à¸¥ | ต้นฉบับสตริงที่จะค้นหาà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸—นที่คำà¹à¸™à¸°à¸™à¸³à¸„ำà¹à¸™à¸°à¸™à¸³à¸ˆà¸°à¹„ม่สามารถใช้งานได้ถ้าคุณไม่ได้à¸à¸³à¸«à¸™à¸”ภาษาà¸à¸²à¸£à¹à¸›à¸¥à¸­à¸¢à¹ˆà¸²à¸‡à¸–ูà¸à¸•้อง โดยอาจมีผลà¸à¸£à¸°à¸—บต่อคุณสมบัติอื่นๆ ด้วย อย่างเช่นรูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œ ฯลฯตัวà¹à¸—นฟุ่มเฟือย “%s†ที่ไม่ได้อยู่ในข้อความต้นฉบับรองรับภาษาเขียนโปรà¹à¸à¸£à¸¡à¸—ั้งหมดที่รู้จัà¸à¹‚ดยเครื่องมือ GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript à¹à¸¥à¸°à¸­à¸·à¹ˆà¸™à¹†)ซิงค์ซิงค์à¸à¸±à¸š Crowdinซิงค์à¸à¸²à¸£à¹à¸›à¸¥à¸à¸±à¸š Crowdinà¸à¸³à¸¥à¸±à¸‡à¸‹à¸´à¸‡à¸„์ข้อผิดพลาดà¸à¸²à¸£à¸‹à¸´à¸‡à¸„์à¸à¸²à¸£à¸‹à¸´à¸‡à¸„์à¸à¸±à¸š Crowdin ล้มเหลวไวยาà¸à¸£à¸“์ผิดพลาดในส่วนหัว Plural-Forms ("%s")หน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¹„ฟล์ TMXดึงสตริงที่สามารถà¹à¸›à¸¥à¹„ด้จาà¸à¹à¸¡à¹ˆà¹à¸šà¸š POT ที่มีอยู่ชื่อทีมà¹à¸¥à¸°à¸—ี่อยู่อีเมลหรือ URLà¸à¸²à¸£à¹à¸—นที่ข้อความหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¹„ม่ประà¸à¸­à¸šà¸”้วยสตริงใดๆ ที่คล้ายà¸à¸±à¸šà¹€à¸™à¸·à¹‰à¸­à¸«à¸²à¹ƒà¸™à¹„ฟล์นี้ จะมีประสิทธิภาพสำหรับà¸à¸²à¸£à¹à¸›à¸¥à¸à¸¶à¹ˆà¸‡à¸­à¸±à¸•โนมัติหลังจาภPoedit เรียนรู้จาà¸à¹„ฟล์ที่คุณà¹à¸›à¸¥à¹€à¸­à¸‡à¸¡à¸²à¸à¸žà¸­à¹à¸¥à¹‰à¸§à¹€à¸—่านั้นไฟล์ TMX ผิดรูปà¹à¸šà¸šà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸—ี่ทำโดยà¹à¸­à¸›à¸žà¸¥à¸´à¹€à¸„ชันอื่นจะถูà¸à¸¥à¸°à¸—ิ้งà¹à¸¥à¸°à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸™à¹à¸›à¸¥à¸‡à¸™à¸±à¹‰à¸™à¸ˆà¸°à¸ªà¸¹à¸à¸«à¸²à¸¢à¹„ม่สามารถคอมไพล์ไฟล์เป็นรูปà¹à¸šà¸š MO à¹à¸¥à¸°à¹„ม่สามารถนำมาใช้งานได้ไฟล์นี้ประà¸à¸­à¸šà¸”้วยรายà¸à¸²à¸£à¸—ี่ซ้ำà¸à¸±à¸™ ซึ่งไม่สามารถมีในไฟล์ PO à¹à¸¥à¸°à¸­à¸²à¸ˆà¸—ำให้ไฟล์ดังà¸à¸¥à¹ˆà¸²à¸§à¹„ม่สามารถนำมาใช้งานได้ Poedit จึงได้à¹à¸à¹‰à¹„ขปัà¸à¸«à¸²à¹„ว้à¹à¸¥à¹‰à¸§ à¹à¸•่คุณà¸à¹‡à¸„วรจะตรวจทานà¸à¸²à¸£à¹à¸›à¸¥à¸£à¸²à¸¢à¸à¸²à¸£à¸šà¸²à¸‡à¸£à¸²à¸¢à¸à¸²à¸£à¸—ี่ถูà¸à¸—ำเครื่องหมายว่าต้องà¸à¸²à¸£à¸•รวจทานà¹à¸¥à¸°à¹à¸à¹‰à¹„ขให้ถูà¸à¸•้องเมื่อจำเป็นไฟล์ไม่สามารถบันทึà¸à¹€à¸›à¹‡à¸™à¸Šà¸¸à¸”อัà¸à¸‚ระ "%s" อย่างที่ได้ระบุไว้ในà¸à¸²à¸£à¸•ั้งค่าà¸à¸²à¸£à¹à¸›à¸¥ จะบันทึà¸à¹€à¸›à¹‡à¸™ UTF-8 à¹à¸—นà¹à¸¥à¸°à¸à¸²à¸£à¸•ั้งค่าจะบันทึà¸à¸•ามนี้ไฟล์ถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ คุณต้องà¸à¸²à¸£à¸šà¸±à¸™à¸—ึà¸à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸«à¸£à¸·à¸­à¹„ม่?ไฟล์อยู่ในรูปà¹à¸šà¸šà¸—ี่ Poedit ไม่รู้จัà¸à¸„อมไพล์ไฟล์เป็นรูปà¹à¸šà¸š MO à¹à¸¥à¹‰à¸§ à¹à¸•่ไฟล์อาจทำงานอย่างไม่ถูà¸à¸•้องบันทึà¸à¹„ฟล์อย่างปลอดภัยà¹à¸¥à¸°à¸„อมไพล์ไฟล์เป็นรูปà¹à¸šà¸š MO à¹à¸¥à¹‰à¸§ à¹à¸•่ไฟล์อาจทำงานอย่างไม่ถูà¸à¸•้องบันทึà¸à¹„ฟล์อย่างปลอดภัยà¹à¸¥à¹‰à¸§ à¹à¸•่ไม่สามารถคอมไพล์เป็นรูปà¹à¸šà¸š MO à¹à¸¥à¸°à¹„ม่สามารถนำมาใช้งานได้บันทึà¸à¹„ฟล์อย่างปลอดภัยà¹à¸¥à¹‰à¸§à¹„ฟล์ “%s†ไม่สามารถเปิดได้ไฟล์ "%s" ถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¹‚ดยà¹à¸­à¸›à¸žà¸¥à¸´à¹€à¸„ชันอื่นà¹à¸¥à¹‰à¸§à¸‚้อความต้นฉบับ (à¸à¹ˆà¸­à¸™à¸—ี่จะถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸£à¸°à¸«à¸§à¹ˆà¸²à¸‡à¸à¸²à¸£à¸­à¸±à¸žà¹€à¸”ต) ที่เà¸à¸µà¹ˆà¸¢à¸§à¸‚้องà¸à¸±à¸šà¸à¸²à¸£à¹à¸›à¸¥à¸—ี่ไม่ถูà¸à¸•้องในขณะนี้วิธีà¸à¸²à¸£à¹€à¸•ิมà¸à¸²à¸£à¹à¸›à¸¥à¹ƒà¸™à¹„ฟล์นี้ที่ง่ายที่สุดคือให้อัปเดตข้อมูลจาà¸à¹„ฟล์ POT:à¸à¸²à¸£à¹à¸›à¸¥à¹„ม่ได้เริ่มต้นด้วยช่องว่างà¸à¸²à¸£à¹à¸›à¸¥à¸¡à¸µà¸à¸²à¸£à¸‚ึ้นบรรทัดใหม่ในตอนท้าย à¹à¸•่ในข้อความต้นฉบับไม่มีà¸à¸²à¸£à¸‚ึ้นบรรทัดใหม่ในตอนท้ายà¸à¸²à¸£à¹à¸›à¸¥à¸¡à¸µà¸Šà¹ˆà¸­à¸‡à¸§à¹ˆà¸²à¸‡à¹ƒà¸™à¸•อนท้าย à¹à¸•่ในข้อความต้นฉบับไม่มีช่องว่างในตอนท้ายà¸à¸²à¸£à¹à¸›à¸¥à¸ªà¸´à¹‰à¸™à¸ªà¸¸à¸”ด้วย "%s" à¹à¸•่ในข้อความต้นฉบับสิ้นสุดด้วย "%s"à¸à¸²à¸£à¹à¸›à¸¥à¹„ม่มีà¸à¸²à¸£à¸‚ึ้นบรรทัดใหม่ในตอนท้ายà¸à¸²à¸£à¹à¸›à¸¥à¹„ม่มีช่องว่างในตอนท้ายà¸à¸²à¸£à¹à¸›à¸¥à¸žà¸£à¹‰à¸­à¸¡à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹à¸¥à¹‰à¸§ à¹à¸•่มีรายà¸à¸²à¸£à¸—ี่ยังไม่ได้à¹à¸›à¸¥ %d รายà¸à¸²à¸£à¸à¸²à¸£à¹à¸›à¸¥à¸žà¸£à¹‰à¸­à¸¡à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹à¸¥à¹‰à¸§à¸à¸²à¸£à¹à¸›à¸¥à¸„วรสิ้นสุดด้วย "%s"à¸à¸²à¸£à¹à¸›à¸¥à¹„ม่ควรสิ้นสุดด้วย "%s"à¸à¸²à¸£à¹à¸›à¸¥à¸„วรเริ่มต้นด้วยประโยคà¸à¸²à¸£à¹à¸›à¸¥à¸„วรเริ่มต้นด้วยตัวอัà¸à¸©à¸£à¸•ัวพิมพ์เล็à¸à¸à¸²à¸£à¹à¸›à¸¥à¹€à¸£à¸´à¹ˆà¸¡à¸•้นด้วยช่องว่าง à¹à¸•่ในข้อความต้นฉบับไม่ได้เริ่มต้นด้วยช่องว่างà¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸°à¸–ูà¸à¸—ำเครื่องหมายว่าต้องà¸à¸²à¸£à¸•รวจทาน เนื่องจาà¸à¸­à¸²à¸ˆà¹„ม่à¹à¸¡à¹ˆà¸™à¸¢à¸³ คุณควรตรวจทานà¸à¸²à¸£à¹à¸›à¸¥à¹€à¸«à¸¥à¹ˆà¸²à¸™à¸µà¹‰à¸­à¸µà¸à¸„รั้งเพื่อความถูà¸à¸•้องไม่มีà¸à¸²à¸£à¹à¸›à¸¥ นั่นผิดปà¸à¸•ิมีปัà¸à¸«à¸²à¹ƒà¸™à¸à¸²à¸£à¸ˆà¸±à¸”รูปà¹à¸šà¸šà¹„ฟล์ให้เป็นระเบียบ (à¹à¸•่ไฟล์ถูà¸à¸šà¸±à¸™à¸—ึà¸à¹€à¸£à¸µà¸¢à¸šà¸£à¹‰à¸­à¸¢à¹à¸¥à¹‰à¸§)เà¸à¸´à¸”ข้อผิดพลาดขณะอัปโหลดคำà¹à¸›à¸¥à¹„ปยัง Localazyเà¸à¸´à¸”ข้อผิดพลาดขณะโหลดไฟล์ ข้อมูลบางส่วนอาจขาดหายหรือไม่ถูà¸à¸•้องดังผลลัพธ์à¸à¸²à¸£à¸•ั้งค่าเหล่านี้มีผลต่อà¸à¸²à¸£à¸ˆà¸±à¸”รูปà¹à¸šà¸šà¸ à¸²à¸¢à¹ƒà¸™à¸‚องไฟล์ PO ปรับà¸à¸²à¸£à¸•ั้งค่าเหล่านี้ถ้าคุณมีความจำเป็นเฉพาะ อย่างเช่น เนื่องจาà¸à¸à¸²à¸£à¸„วบคุมเวอร์ชั่นไฟล์ JSON นี้ไม่ใช่ไฟล์à¸à¸²à¸£à¹à¸›à¸¥à¹à¸¥à¸°à¹„ม่สามารถà¹à¸à¹‰à¹„ขได้ใน Poedità¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸™à¸µà¹‰à¸ˆà¸°à¸¥à¸šà¸„ำà¹à¸›à¸¥à¹ƒà¸”ๆ ที่ตรงà¸à¸±à¸šà¸‚้อความต้นฉบับพอดี ซึ่งไม่สามารถย้อนà¸à¸¥à¸±à¸šà¹„ด้ไฟล์นี้มีรายà¸à¸²à¸£à¸—ี่มีรูปà¹à¸šà¸šà¸žà¸«à¸¹à¸žà¸ˆà¸™à¹Œ à¹à¸•่ไม่ได้à¸à¸³à¸«à¸™à¸”ค่าส่วนหัว Plural-Forms ไว้ไฟล์นี้ใช้รหัสสตริงà¹à¸—นข้อความต้นฉบับ Poedit สามารถโหลดข้อความภาษาอังà¸à¸¤à¸©à¸ˆà¸²à¸à¹„ฟล์ “%s†ให้คุณได้นี่คือคำสั่งที่จะใช้เรียà¸à¹ƒà¸Šà¹‰à¸•ัวà¹à¸¢à¸ %o ขยายชื่อไฟล์ขาออภ%K ขยายรายà¸à¸²à¸£ คำสำคัภ%F ขยายไฟล์นำเข้า %C ขยายค่าสถานะชุดอัà¸à¸‚ระ (ดูด้านล่าง)สตริงนี้ถูà¸à¸žà¸šà¹ƒà¸™à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¸‚อง Poedità¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸™à¸µà¹‰à¸ˆà¸°à¹à¸™à¸šà¹„ฟล์ไปยังบรรทัดคำสั่ง เมื่อรหัสชุดอัà¸à¸‚ระถูà¸à¸à¸³à¸«à¸™à¸”ให้เท่านั้น %c จะขยายค่าของชุดอัà¸à¸‚ระà¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸™à¸µà¹‰à¸ˆà¸°à¹à¸™à¸šà¹„ฟล์ไปยังบรรทัดคำสั่งหนึ่งครั้ง สำหรับไฟล์à¹à¸•่ละไฟล์ %f จะขยายชื่อไฟล์à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸™à¸µà¹‰à¸ˆà¸°à¹à¸™à¸šà¹„ฟล์ไปยังคำสั่งหนึ่งครั้ง ต่อคำสำคัà¸à¸—ี่ใช้à¹à¸•่ละคำ %k จะขยายชื่อของคำสำคัà¸à¸—ี่ใช้ทั้งหมดà¸à¸²à¸£à¹à¸›à¸¥à¸‡à¸£à¸¹à¸›à¹à¸šà¸šà¹à¸›à¸¥à¹‚ครงà¸à¸²à¸£à¸„ลาวด์à¹à¸›à¸¥à¹à¸¥à¹‰à¸§: %d จาภ%d (%d %%)à¸à¸²à¸£à¹à¸›à¸¥à¸ à¸²à¸©à¸²à¸à¸²à¸£à¹à¸›à¸¥à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¸•้องà¸à¸²à¸£à¸•รวจ&ทานà¸à¸²à¸£à¹à¸›à¸¥à¸„ุณสมบัติà¸à¸²à¸£à¹à¸›à¸¥à¸à¸²à¸™à¸‚้อมูลหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¸Šà¸³à¸£à¸¸à¸”: %s (%d)ข้อผิดพลาดหน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥: %s (%d)ต้องà¸à¸²à¸£à¸•รวจ&ทานà¸à¸²à¸£à¹à¸›à¸¥à¸„ุณสมบัติà¸à¸²à¸£à¹à¸›à¸¥à¸„ำà¹à¸™à¸°à¸™à¸³à¸à¸²à¸£à¹à¸›à¸¥à¸„ำà¹à¸™à¸°à¸™à¸³à¹ƒà¸™à¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸³à¹€à¸›à¹‡à¸™à¸•้องมีข้อความต้นฉบับให้พร้อมใช้งาน สิ่งเหล่านี้จะไม่ทำงานหาà¸à¹ƒà¸Šà¹‰à¹€à¸‰à¸žà¸²à¸° ID ที่ไม่มีข้อความจริงเท่านั้นคำà¹à¸™à¸°à¸™à¸³à¹ƒà¸™à¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸³à¹€à¸›à¹‡à¸™à¸•้องรู้ภาษาของข้อความต้นฉบับ Poedit ตรวจไม่พบในไฟล์นี้à¸à¸²à¸£à¹à¸›à¸¥ — %sไม่สามารถอัพเดตà¸à¸²à¸£à¹à¸›à¸¥à¸ˆà¸²à¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ดได้ เนื่องจาà¸à¹„ม่พบโค้ดใดๆ ในตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่ระบุในคุณสมบัติของไฟล์สองUTF-8 (à¹à¸™à¸°à¸™à¸³)เลิà¸à¸—ำเà¸à¸´à¸”ข้อยà¸à¹€à¸§à¹‰à¸™à¸—ี่จัดà¸à¸²à¸£à¹„ม่ได้: %sUnix (à¹à¸™à¸°à¸™à¸³)ข้อผิดพลาด Crowdin ที่ไม่รู้จัà¸à¸‚้อผิดพลาดที่ไม่รู้จัà¸à¹„ม่ได้à¹à¸›à¸¥à¸­à¸±à¸›à¹€à¸”ตอัปเดตทั้งหมดอัพเดตà¹à¸„็ตตาล็อà¸à¸—ั้งหมดในโครงà¸à¸²à¸£à¸•้องà¸à¸²à¸£à¸­à¸±à¸žà¹€à¸”ตรายà¸à¸²à¸£à¸—ั้งหมดในโครงà¸à¸²à¸£à¸™à¸µà¹‰à¸«à¸£à¸·à¸­à¹„ม่?อัพเดตจาà¸à¹„&ฟล์ POT…อัพเดตจาà¸&ไฟล์ POT…อัพเดตจาà¸à¹‚ค้ดอัพเดตจาà¸à¹„ฟล์ POTอัพเดตจาà¸à¹‚ค้ดอัพเดตจาà¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ดอัพเดตผลลัพธ์อัพเดตà¸à¸²à¸£à¸­à¸±à¸›à¹€à¸”ตล้มเหลวà¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸›à¹€à¸”ตà¸à¸²à¸£à¹à¸›à¸¥à¸ à¸²à¸©à¸²à¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸›à¹€à¸”ตข้อมูลผู้ใช้…à¸à¸²à¸£à¸­à¸±à¸›à¹‚หลดคำà¹à¸›à¸¥à¹„ปยัง %s ล้มเหลวà¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸›à¹‚หลดงานà¹à¸›à¸¥à¹„ปยัง %sà¸à¸³à¸¥à¸±à¸‡à¸­à¸±à¸›à¹‚หลดงานà¹à¸›à¸¥â€¦à¹ƒà¸Šà¹‰à¸™à¸´à¸žà¸ˆà¸™à¹Œà¸—ี่à¸à¸³à¸«à¸™à¸”เองใช้à¹à¸šà¸šà¸­à¸±à¸à¸©à¸£à¸£à¸²à¸¢à¸à¸²à¸£à¹à¸šà¸šà¸à¸³à¸«à¸™à¸”เอง:ใช้à¹à¸šà¸šà¸­à¸±à¸à¸©à¸£à¸žà¸·à¹‰à¸™à¸—ี่ข้อความà¹à¸šà¸šà¸à¸³à¸«à¸™à¸”เอง:ใช้à¸à¸Žà¹€à¸£à¸´à¹ˆà¸¡à¸•้นสำหรับภาษานี้ใช้คำสำคัà¸à¹€à¸«à¸¥à¹ˆà¸²à¸™à¸µà¹‰ (ชื่อฟังà¸à¹Œà¸Šà¸±à¹ˆà¸™) เพื่อตรวจหาสตริงที่à¹à¸›à¸¥à¹„ด้ ในไฟล์ต้นฉบับ:ใช้หน่วยความจำà¸à¸²à¸£à¹à¸›à¸¥à¸•รวจสอบผลà¸à¸²à¸£à¸•รวจสอบรุ่น %sà¸à¸³à¸¥à¸±à¸‡à¸£à¸­à¸à¸²à¸£à¸£à¸±à¸šà¸£à¸­à¸‡à¸„วามถูà¸à¸•้อง...ยินดีต้อนรับสู่ Poeditเมื่ออัปเดตจาà¸à¹à¸«à¸¥à¹ˆà¸‡à¸‚้อมูลทั้งคำเท่านั้นหน้าต่างWindowsคุณต้องà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸ à¸²à¸©à¸²à¸­à¸±à¸‡à¸à¸¤à¸©à¸ªà¸³à¸«à¸£à¸±à¸šà¸‚้อความต้นฉบับหรือไม่?ตัดรอบๆตัดที่:ไฟล์à¹à¸›à¸¥à¸ à¸²à¸©à¸² XLIFFใช่นอà¸à¸ˆà¸²à¸à¸™à¸µà¹‰ คุณยังสามารถà¹à¸¢à¸à¸ªà¸•ริงที่สามารถà¹à¸›à¸¥à¹„ด้โดยตรงจาà¸à¸‹à¸­à¸£à¹Œà¸ªà¹‚ค้ด:คุณไม่สามารถวางไฟล์มาà¸à¸à¸§à¹ˆà¸²à¸«à¸™à¸¶à¹ˆà¸‡à¹„ฟล์ในหน้าต่าง Poeditคุณไม่ได้รับอนุà¸à¸²à¸•ให้อ่านไฟล์รหัสต้นฉบับจาà¸à¸•ำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่ระบุในคุณสมบัติของไฟล์คุณต้องเริ่ม Poedit ใหม่เพื่อให้à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸¡à¸µà¸œà¸¥à¸Šà¸·à¹ˆà¸­à¸‚องคุณà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸‚องคุณจะสูà¸à¸«à¸²à¸¢à¸–้าคุณไม่บันทึà¸à¹„ว้ชื่อà¹à¸¥à¸°à¸—ี่อยู่อีเมลของคุณจะถูà¸à¸™à¸³à¹„ปใช้เพื่อà¸à¸³à¸«à¸™à¸”ส่วนหัว Last-Translator ของไฟล์ GNU gettext เท่านั้นศูนย์ย่อ/ขยายต้องà¸à¸²à¸£à¸•รวจทานไม่ต้องลบไฟล์ชั่วคราว (สำหรับà¸à¸²à¸£à¸”ีบั๊à¸)เช่น nplurals=2; plural=(n > 1);à¸à¸²à¸£à¸ˆà¸±à¸šà¸„ู่à¹à¸šà¸š Fuzzy ภายในไฟล์ไปยังรายà¸à¸²à¸£à¸—ี่อยู่ในหมายเลขบรรทัดที่ระบุจัดà¸à¸²à¸£ URI poedit://Alt+Ctrl+ลงEnterซ้ายขวาShift+ขึ้นaltctrlshiftเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š %sซ่อน %sซ่อนคนอื่นà¸à¸²à¸£à¸•ั้งค่า...ออà¸à¸ˆà¸²à¸ %sบริà¸à¸²à¸£à¹à¸ªà¸”งทั้งหมดà¹à¸›à¸¥à¸ˆà¸²à¸à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำà¸à¸²à¸£à¹à¸›à¸¥à¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²à¸ à¸²à¸©à¸²à¸—ี่ไม่รู้จัà¸à¹€à¸§à¸­à¸£à¹Œà¸Šà¸±à¹ˆà¸™à¸—ี่ไม่สนับสนุน (%s)you@example.com“%s†ไม่ใช่ไฟล์ POT ที่ถูà¸à¸•้องpoedit-3.6.3/locales/fa.mo0000644000175100001660000020162215011674363011047 Þ•}0m(´5 ¼5ð5 8 8 8 $8.8 =8G8 N8\8c8i8q8x88…88œ8«8±8·8À8Ô8è8ì8þ8999#9+9=9O9S9 W9 d9q9z9ƒ9 Š9—9§9½9Ó9â9þ9: :&:/:5:>:U: l: z: ˆ:•:›:·:Ó:ì:;;3;9;>;U;e; ƒ; ;™;¢;ª;³; ·; Ã;Ð; ß;ë; û;< !<.< =<I<Y<m<ˆ<‘<±<Î<î< = =1='O=w=”= ®=¹=7¿=6÷=.>)N>x> }>]ˆ>æ><ù>D6?${? ? §?€´?5@ <@"J@m@+ˆ@ ´@¿@Ñ@ã@ô@AA#A?A[A#pA”A©A¸A ¾AÉA ÛAæAøAþAB% BFB aB‚BŠB“B«B ¼BÊB/åB C"C'C:CPCcCyC1˜CÊC ãCîC)D/D OD]DbDuDˆDD¡D¸D¿DÞDïDEE0E;CE E'ŒE^´E?F SF aFnF*F¬F"¿F5âFG3GNGTG YG gG uG ‚G GœG­GµG½GÄGfÖG=HWHuqHçHúH" I/I 6IAIPI aInI0I°IÊI#ßI<J@J PJ*[J0†J!·J'ÙJKKK(;KTdK¹K ¾K ÈKÖKêKûKL %L /L =L JLWLfLuL L›L £L®L ³LÀLÐLïL©òL‡œMz$NŸN ¦N²NÅNáNôNO*O1OGOeO }OžO ¦O ³O¿OÖOÛO;ñO(-PVPsP†P •P ŸP­PÊP ãPîPQ Q<)Q fQ.sQ¢Q²Q*ÂQíQR R"R9R*BRmRsR„R •R  R»«RgSkS„S S©SºSËSÎS#ßS\T`T'qT™T$®T%ÓTùTUU’U©UÄU ÞU êU V"V ^S^h^}^^¡^ »^É^Ò^Û^î^ô^_8_ M_Z___ g_ s__ ‡_ ”_¡_ ´_(¿_è_î_z`‚`“`š` Ÿ` «` ·` Ã`Ï` ×` â` ï` ù` a aa8aIa"aa„a a ¿a Ìa Ùa åaòa bb,b ?b LbZbkbzb “b b°b ÀbÎbÖbÞbçb ïbýbc)cBcKcTc ec rc ~c‹cŸc¯cÄcØcècýc†d™d´d ÊdÖdådød ee (e6eK=e‰eže ­e»eÐeãeùe1fGf Vf dfŽpf=ÿf=g½gÂg(Ôgýg hh+0h\h _h8ih"¢hÅhÂÖh™iC´i8øiî1jŸ k8Àk1ùkR+lc~lQâl4m'Om:wml²mPn-pnCžnAânK$o0po.¡o!Ðo)òo-p+Jp8vpC¯puóp,iqL–q]ãq…ArJÇr[s«ns7tmRt_Àt[ u|u‚u’u ªu¶uËuÞuöu2 v@vXvovq‡vùvˆ w•w™w­w ²wÓwæwýwx x"x$:x_xxx‘x¢x²xÃxÛxêxòxyy$5yZyzy”yªyÀy#ÝyVzXzozxz ‹z–z´zÆzázòzùz { {{.{H2{5{{m±{7| W|3a|a•|÷|ü|}.} M}n}Š}ª}Á}Ô}æ}ù} ~~2~B~S~e~x~‘~©~Å~ä~ü~.DUn!~¨ Ia x„ – ¢° Æ Òàè û ‚‚‚3‚ K‚ Y‚g‚*v‚*¡‚Ì‚-Ô‚-ƒ 0ƒ >ƒ Hƒ Uƒaƒxƒƒ —ƒ£ƒ¼ƒÕƒäƒóƒ„„+„B„Y„1o„1¡„ Ó„Ý„ö„ ……3…O…k…€… •…¡…5±…5ç…,†,J†'w†'Ÿ†džφ2׆ ‡3'‡ [‡g‡w‡‡‡‡ ­‡º‡#Ô‡$ø‡ˆ5ˆSˆ%mˆ#“ˆ·ˆ׈ïˆ$ ‰&2‰Y‰1h‰.š‰1ɉ)û‰%ŠBЇWŠVߊE6‹8|‹µ‹ ¾‹DÉ‹EŒ:TŒ[Œ ëŒøŒŸ «\ÉO&Ž:vŽ±ŽºŽ׎ð÷;7R@ŠËßÿ‘);‘e‘€‘.œ‘0Ë‘6ü‘.3’6b’™’¯’Á’Þ’û’“5“>“N“F^“=¥“5ã“ ” &”&4”[”u”8Œ”PÅ” • !•.•!I•k•!†•"¨•OË•A–]–q–?–2Ж——0—0M—.~—­—9´—î—#õ— ˜#:˜^˜p˜„˜l–˜™=™ÒR™{%š¡š³š%Åšoëš%[›1›K³›Hÿ›HHœ ‘œ ›œ¨œÜÞœøœ*B[k}¦˜0?ž0pžò¡ž)”Ÿ+¾Ÿ:êŸ %  0 > \ &| £ Pà(¡=¡BZ¡_¡+ý¡)¢JC¢aŽ¢4ð¢F%£ l£,y£0¦£D×£¦¤ äΤâ¤$ö¤#¥!?¥!a¥ƒ¥—¥«¥¿¥Ó¥ë¥%¦ )¦ 5¦/@¦ p¦'}¦'¥¦&ͦ ô¦Nÿ¦"N¨q©‡ª9¡ªÛª7ûª3«7S«(‹«´«#½«+á«" ¬'0¬X¬_¬}¬¬­¬½¬s׬-K­y­—­«­ À­Ê­?à­6 ®W®'o®.—®Æ®iÙ®C¯jc¯ίê¯L°S°+q°°/­°ݰ=ï°-±5±L±c±y±¡±1³':³'b³г¥³¾³׳%Þ³F´{K´%Ç´2í´& µ1GµGyµ-Áµ ïµúµ*ÿµ6*·&a·ˆ·<§·#ä·&¸/¸ G¸ h¸‰¸ ¨¸ ¶¸ĸÖ¸߸ö¸% ¹3¹ºS¹º*"º MºuZºк;çº#»Â=»w¼x¼¼^Ÿ¼þ¼½*½‘J½”ܽ&q¿O˜ÀXèÀAÁYÁmÁIÁ3ËÁÿÁãÂÀú¬»ÃhÄwĉÄ4›Ä7ÐÄÅ!Å:Å#SÅ#wÅ ›Å¼Å ÏÅÛÅ ëÅ Æ0ÆLÆSUÆ©ÆÈÆàÆ&ôÆ&ÇBÇVÇrÇŽÇ«ÇDÂÇÈ(ÈÝAÈ#ÉCÉ RÉ]É|É#›É#¿ÉãÉþÉÊ8ÊRÊlÊÊA‘ÊÓÊ$çÊH Ë UË'v˞˴ËÊËÜË+ûË'Ì!FÌ%hÌŽÌ­Ì ÇÌèÌ7Í9ÍXÍ!w͙ͳÍÇÍÐÍÙÍâÍ,üÍ)Î,?ÎlÎuÎ-~Î#¬ÎÐÎîÎ: Ï+FÏ-rÏ: Ï+ÛÏ-Ð(5Ðì^Ð"KÑnьќѷÑ"ÎÑñÑ" Ò,Ò DÒ|OÒ!ÌÒîÒÓ&)ÓPÓjÓ‚Ó6¢ÓÙÓøÓÔé&ÔIÕZÕlÖ"‚Ö-¥ÖÓÖéÖ@×ZIפ׬×cÆ×4*Ø_ØzØ •Ùt¶Ùg+Ú “Ú÷4Ük,Ý6˜ÝyÏÝžIÞ©èÞ?’ß9ÒßZ àŸgà‡á9áoÉáj9â{¤âN ãIoã.¹ã@èãB)ä@lä;­ä_éäØIåK"æ§næ­çßÄçv¤è’éc®éMë×`ë©8ì¦âì ‰í•í®í ÍíØíìí î%îEDî Šî«îÊî¾èî§ïĹï~ðƒððC¬ð ðð"ñ4ñHñañDñVÆñ4ò4Rò"‡ò!ªò"Ìò+ïò#ó?ó*_ó*Šó5µóIëó95ô*oô+šô>ÆôJõMPõ˜žõ+7öcöxö ’ö8 öÙö1÷ö)÷ B÷ M÷Z÷w÷(Š÷³÷•º÷jPø»øvKù ÂùMÐù«úÊúÑúäúQúú4Lû-û/¯û0ßû ü ü%ü.ü3ü <üHü Qü^ü gürü‚ü™ü¶ü Èü Ôüßü ñüý+,ýXý9hýTÇK¸fSi:aÏZÓ›;¡XŒm9uå\ÍO@>ª/A"àÉ®Ì+ “ œXée¹­Ü ÿÝ`Ѫæx98= Þ1\Èw¯Òš[aØ3F€øµ*yrÙ Áü)#ÃVbèê.×fNÔgvOŽûÀ?5c¶C@IZvE_äÓ1AUõi+(Åt z¡ó‹P¯]œí¥÷/ƒŠÝpHLñåxßdM›Af¼ÍüÖo¬ÖKI¥Ð'Hú™'©t™$NδdbD{CGMÛpUÊ$&Ø,Ç/xî.‚6øám–õ´¾JEÜ…Â%Q5#{”Gk.ý9¤Ÿ¦jJ€‰ Y]˜]Q±ŽÙ}D@lHwTïš4,OB7 “:%YbrzÿŠsº…z{Xóò¢® ·0¬hyÕ§À—»”¹†¦¶ˆÏ‹’qÔoôBêâôu7„Tà~­íg 2²Ã} S_§c4*ú!*R·;v=Û`KÄnãle" uD|µsFÉìç!=_[²qP3°~ (L ÎìÆäZöÐ'FPYã(¨—çQö5|dLÁ Œ8ÚBRˆ!sèÈ× ½#Õ<Òw‡ Âh³,^žjæñ¸$e1Ê<î7V¿&&Úûak"ot‰÷£ë‘}WþW«ðž¼†\;:Ecá½08ËŸѳ-ý¨>ò ‡Æ¿ -¾)ï^|%^ù˜hk)ß°’ÄJð2lSgmÌ•±þU-¤ÅÞ‘N–+GâùI„ 6Më‚2?»[3ƒn`©C4>¢i£q6<0?VË麕RyW«rnjp¢ý$606<6H6T6`6l6x6„66œ6¨6´6À6Ü6ð6 7(7L7`7|7˜7¬7À7Ü7ø7¤ýhÿÿÿÿ þ;ÿÿÿÿGþKÿÿÿÿ’þÿÿÿÿ!ÿÿÿÿÿ>ÿÿÿÿÿLÿÿÿÿÿ_ÿÿÿÿÿsÿÿÿÿÿ{ÿÿÿÿÿŒÿ'ÿÿÿÿ³ÿ=ÿÿÿÿðÿ#ÿÿÿÿTSÿÿÿÿ»Vÿÿÿÿ+*ÿÿÿÿmCn+ÿÿÿÿIÿÿÿÿvÿÿÿÿ ÿÿÿÿ¤ ÿÿÿÿÀ ÿÿÿÿÌ ÿÿÿÿòÿÿÿÿ('ÿÿÿÿh'ÿÿÿÿ (modified) (unsaved)%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationCopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesGNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageIDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLine endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishMO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslate cloud projectTranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.UntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Persian Language: fa_IR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: fa X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (ØªØºÛŒÛŒØ±ÛŒØ§ÙØªÙ‡) (ذخیره نشده)قالب %sترجیحات %sقالب %s&دربارهدربارهٔ Poedit&اعمال&بازگشت&لغو&پاک‌کردن&بستن&رونوشت&حذÙ&انجام Ùˆ بعدی&انجام Ùˆ بعدی&ویرایش&پرونده&ÛŒØ§ÙØªÙ†â€¦Ú©ØªØ§Ø¨Ú†Ù‡Ù” راهنمای &GNU gettextکتابچهٔ راهنمای &GNU gettext&برو&گروه‌بندی بر اساس زمینه&گروه‌بندی بر اساس زمینه&راهنما&جدید&جدید…&بعدی >ترجمهٔ &بعدیترجمهٔ &بعدی&خیر&تأییدراهنمای &برخطراهنمای &برخط&گشودن...&گشودن…&جای‌گذاری&ترجیحات&ترجیحات…ترجمهٔ &قبلیترجمهٔ &قبلی&ویژگی‌ها…&پاکسازی ترجمه‌های حذ٠شده&پاکسازی ترجمه‌های حذ٠شده&خروجانجام &دوباره&جای‌گزینی&ذخیره&ذخیره به عنوان&نمایش رخداد کد&نمایش رخداد کد&شروع پنجره&شروع پنجره&ترجمه&برگردانابتدا ورودی‌های ترجمه‌&نشدهابتدا ورودی‌های ترجمه‌&نشده&به‌روز رسانی از کد منبع&به‌روز رسانی از کد منبع&اعتبارسنجی ترجمه‌ها&اعتبارسنجی ترجمه‌ها&نما&بله(Ø§Ø³ØªÙØ§Ø¯Ù‡ از زبان پیش‌گزیده)(وارد نشده‌اید)(ویندوز Û¸ یا جدیدتر لازم است)< &قبلی<بی‌نام>درباره %sحساب Ú©Ø§Ø±Ø¨Ø±ÛŒØ­Ø³Ø§Ø¨â€ŒÙ‡Ø§Ø§ÙØ²ÙˆØ¯Ù†Ø§Ùزودن Ø¯ÛŒØ¯Ú¯Ø§Ù‡Ø§ÙØ²ÙˆØ¯Ù† پرونده‌ها…پوشه های اضاÙÙ‡ Ø´Ø¯Ù‡â€¦Ø§ÙØ²ÙˆØ¯Ù† Ù¾Ø±ÙˆÚ˜Ù‡Ø§ÙØ²ÙˆØ¯Ù† با Ø´ØªØ§Ø¨â€¦Ø§ÙØ²ÙˆØ¯Ù† Ø¯ÛŒØ¯Ú¯Ø§Ù‡Ø§ÙØ²ÙˆØ¯Ù† شاخه به Ø³ÛŒØ§Ù‡Ù‡Ø§ÙØ²ÙˆØ¯Ù† Ù¾Ø±ÙˆÙ†Ø¯Ù‡â€ŒÙ‡Ø§â€¦Ø§ÙØ²ÙˆØ¯Ù† Ù¾ÙˆØ´Ù‡â€ŒÙ‡Ø§â€¦Ø§ÙØ²ÙˆØ¯Ù† Ù¾Ø±ÙˆÚ˜Ù‡Ø§ÙØ²ÙˆØ¯Ù† با شتاب…کلیدواژه‌های اضاÙیپرچم‌های اضاÙÛŒ xgettext:Ù¾ÛŒØ´Ø±ÙØªÙ‡ØªÙ†Ø¸ÛŒÙ…ات Ù¾ÛŒØ´Ø±ÙØªÙ‡Ù” استخراج…تنظیمات Ù¾ÛŒØ´Ø±ÙØªÙ‡Ù” استخراجتنظیمات Ù¾ÛŒØ´Ø±ÙØªÙ‡Ù” استخراج…تمام پرونده‌های ترجمههمهٔ دیدگاه‌هاهمه رشته هاهم چنین از کلیدواژه‌های Ù¾ÛŒØ´â€ŒÙØ±Ø¶ برای زبان‌های پشتیبانی شده Ø§Ø³ØªÙØ§Ø¯Ù‡ کنیدهمیشه تمرکز به محوطه درونداد متن تغییر داده شودیک مورد در سیاههٔ پرونده‌های درونداد:یک مورد در سیاههٔ کلیدواژه‌ها:ظاهراعمالآیا از حذ٠استخراج کننده «%s» مطمئنید؟آیا از بازنشانی Ø­Ø§ÙØ¸Ù‡Ù” ترجمه مطمئنید؟بررسی بروزرسانی ها بصورت خودکاربه صورت خودکار پروندهٔ MO را هنگام ذخیره کامپایل کنبازگشتمسیر پایه:نسخه های بتا شامل آخرین ویژگی های جدید Ùˆ Ù¾ÛŒØ´Ø±ÙØªÙ‡ هستند، اما ممکن است Ú©Ù…ÛŒ ناپایدار باشند.آوردن همه به جلوپرونده PO شکسته: ÙØ±Ù… جمع MSGSTR Ø§Ø³ØªÙØ§Ø¯Ù‡ شده بدون msgid_pluralپرونده PO شکسته: ÙØ±Ù… Ù…ÙØ±Ø¯ MSGSTR همراه با msgid_pluralنشانه گذاری شکسته در رشته ترجمه.مرورمرور پرونده‌هابه‌طور Ù¾ÛŒØ´â€ŒÙØ±Ø¶ØŒ نتایج نادرست نیز گنجانده شده است، اما با «نیازمند کار» علامت‌گذاری شده است. این گزینه را علامت بزنید تا Ùقط موارد منطبق کامل را شامل شود.لغودر حال لغو کردن…نمی‌توان مسیر موقت محلی را ساخت.نمی‌توان برنامه را اجرا کرد: %sامکان پیش ترجمه زبان ناشناخته نیست.درشت نویسی&مدیر کاتالوگ‌ها&مدیر کاتالوگ‌هامدیریت کاتالوگتغییر زبان واسط کاربریمجموعه‌نویسه:سند را بررسی کنبررسی دستور زبان با املاءبررسی املاء در هنگام نوشتنبررسی برای به‌روز رسانی‌ها…بررسی برای خطاها در ترجمهبررسی برای به‌روز رسانی‌ها…بررسی املاءپاک‌کردنپاک‌کردن Ùهرستپاک‌کردن ترجمهپاک‌کردن Ùهرستپاک‌کردن ترجمهبستنوقایع کدوقایع کدبه صورت برخط با Ø§ÙØ±Ø§Ø¯ دیگر همکاری کنید.در حال جمع آوری پرونده‌های Ù…Ù†Ø¨Ø¹â€¦ÙØ±Ù…ان برای استخراج ترجمه‌ها:دیدگاهدیدگاه:دیدگاه‌ها با پیشوند:کامپایل به MO…کامپایل به…پرونده‌های ترجمه کامپایل شدنداستخراج کد منبع را در ترجیحات پیکربندی کنید.تأییدرونوشترونوشت از Ù…ÙØ±Ø¯Ø±ÙˆÙ†ÙˆØ´Øª از متن منبعرونوشت از Ù…ÙØ±Ø¯Ø±ÙˆÙ†ÙˆØ´Øª از متن منبعتصحیح خودکار املاءپرونده بارگیری نشد، احتمالاً آسیب دیده است.نمی‌توان پروندهٔ â¨%s⩠را ذخیره کرد.ایجاد جدیدایجاد ترجمه جدیدترجمه‌ای جدید از الگوی POT ایجاد Ú©Ù†.ایجاد یک پروژهٔ ترجمهٔ جدیدخطای Crowdin&برشاستخراج کننده‌های Ø³ÙØ§Ø±Ø´ÛŒ:استخراج کننده‌های Ø³ÙØ§Ø±Ø´ÛŒ:Ø³ÙØ§Ø±Ø´ÛŒâ€ŒØ³Ø§Ø²ÛŒ نوار ابزار…برشاندازهٔ پایگاه‌دادهٔ روی دیسک:Ø­Ø°ÙØ­Ø°Ù از Ø­Ø§ÙØ¸Ù‡Ù” ترجمهحذ٠استخراج کنندهحذ٠از Ø­Ø§ÙØ¸Ù‡Ù” ترجمهحذ٠پروژهحذ٠دیدگاهحذ٠پروژهحذ٠پروژه، هیچ‌کدام از پرونده‌های ترجمه را حذ٠نخواهد کرد.شاخه‌ها:آیا از حذ٠پروژهٔ «â¨%sâ©Â» مطمئنید؟آیا می‌خواهید پرونده را مجدداً از دیسک بارگزاری کنید؟ در این صورت ویرایش‌های ذخیره نشده شما در Poedit از بین می‌روند.آیا از برداشتن همهٔ ترجمه‌هایی Ú©Ù‡ دیگر Ø§Ø³ØªÙØ§Ø¯Ù‡ نمی‌شوند، مطمئنید؟ذخیره نکنذخیره نکندیگر نمایش داده نشودهمتاسازی‌های دقیق را به عنوان نیاز به کار نشانه‌گذاری نکنیددیگر نمایش داده نشوددر حال دانلود آخرین ترجمه…بارگیری ترجمه‌های این پروژه ØºÛŒØ±ÙØ¹Ø§Ù„ است.پوشه‌ها یا پرونده‌ها را اینجا رها کنیدپوشه‌ها یا پرونده‌ها را اینجا رها کنید&خروجویرایشویرایش &دیدگاهویرایش &دیدگاهویرایش دیدگاهویرایش دیدگاهویرایش پروژهویرایش پروژهدر حال ویرایشویرایش…رایانامه:حالت تمام ØµÙØ­Ù‡ÙˆØ±ÙˆØ¯ÛŒâ€ŒÙ‡Ø§ÛŒ این ÙØ§ÛŒÙ„ دارای تعداد اشکال جمع Ù…ØªÙØ§ÙˆØªÛŒ از آنچه Ø³Ø±ØµÙØ­Ù‡ Plural-Forms ÙØ§ÛŒÙ„ می‌گوید دارندابتدا ورودی‌های همراه خطاابتدا ورودی‌های همراه خطاورودی‌های همراه خطا به صورت قرمز در سیاهه نشانه گذاری شده‌اند. جزئیات خطا هنگامی Ú©Ù‡ شما ورودی را بر می‌گزینید، نمایش داده خواهند شد.خطا هنگام گشودن پروندهخطا هنگام ذخیرهٔ پروندهخطا هنگام بارکردن پرونده XLIFF:†%sخطاهاهمه چیزمسیر های جدا شدهبرون‌ریزی به TMX…برون‌ریزی به عنوان…برون‌ریزی به TMX…برون‌ریزی Ø­Ø§ÙØ¸Ù‡Ù” ترجمه به «â¨%sâ©Â» شکست خورد.برون‌ریزی ترجمه‌ها…استخراج از منبعاستخراج یادداشت‌ها برای مترجمان از:متن را از ÙØ§ÛŒÙ„‌های منبع در مسیرهای زیر استخراج کنید:برپا کردن استخراج کنندهاستخراج کنندهعدم موÙقیت در ارتباط با ÙØ±Ø¢ÛŒÙ†Ø¯ ارسال Poedit.بارگزاری پرونده از ترجمه‌های استخراج شده، شکست خورد.ادغام کاتالوگ gettext شکست خورد.به‌روز رسانی Ø­Ø§ÙØ¸Ù‡Ù” ترجمه شکست خورد: %sپروندهنمی‌توان پرونده را گشودپروندهٔ «â¨%sâ©Â» وجود ندارد.پروندهٔ «â¨%sâ©Â» یک پروندهٔ ترجمه نیست.پروندهٔ «â¨%sâ©Â» Ùقط خواندنی است Ùˆ نمی‌تواند ذخیره شود Ù„Ø·ÙØ§Ù‹ آن را با نام دیگری ذخیره نمایید.ÛŒØ§ÙØªÙ†ÛŒØ§Ùتن Ø¨Ø¹Ø¯ÛŒÛŒØ§ÙØªÙ† Ù‚Ø¨Ù„ÛŒÛŒØ§ÙØªÙ† Ùˆ Ø¬Ø§ÛŒâ€ŒÚ¯Ø²ÛŒÙ†ÛŒâ€¦ÛŒØ§ÙØªÙ† در Ø¯ÛŒØ¯Ú¯Ø§Ù‡â€ŒÙ‡Ø§ÛŒØ§ÙØªÙ† در متون Ù…Ù†Ø¨Ø¹ÛŒØ§ÙØªÙ† در ØªØ±Ø¬Ù…Ù‡â€ŒÙ‡Ø§ÛŒØ§ÙØªÙ† Ø¨Ø¹Ø¯ÛŒÛŒØ§ÙØªÙ† قبلیتعمیر زبانتعمیر زبانتعمیر سرایندتعمیر Ø³Ø±Ø§ÛŒÙ†Ø¯ÙØ§ÛŒÙ„ های ترجمه ÙلاترGNU gettextعمومیپرونده‌های اچ‌تی‌ام‌الراهنماپنهان کردن نوار کناریپنهان کردن نوار وضعیتاین اعلان را پنهان کنشناسهاگر به پاکسازی ادامه دهید، تمام ترجمه‌هایی Ú©Ù‡ به عنوان حذÙ‌شده علامت‌گذاری شده‌اند، برای همیشه برداشته می‌شوند. اگر در آینده اضاÙÙ‡ شوند، مجبور خواهید بود دوباره آنها را ترجمه کنید.اگر پیش از این دسترسی به پرونده‌ها را رد کرده‌اید، می‌توانید از بخش ترجیحات سیستم > امنیت Ùˆ حریم شخصی > حریم شخصی > پرونده‌ها Ùˆ پوشه‌ها مجدداً به آن اجازه دهید.اگر پیش از این دسترسی به پرونده‌ها را رد کرده‌اید، می‌توانید از بخش ترجیحات سیستم > امنیت Ùˆ حریم شخصی > حریم شخصی > پرونده‌ها Ùˆ پوشه‌ها به آن اجازه دهید.Ù†Ø§Ø¯ÛŒØ¯Ù‡â€ŒÚ¯Ø±ÙØªÙ†Ù†Ø§Ø¯ÛŒØ¯Ù‡ Ú¯Ø±ÙØªÙ† بزرگی Ùˆ Ú©ÙˆÚ†Ú©ÛŒ Ø­Ø±ÙˆÙØ¯Ø±ÙˆÙ†â€ŒØ±ÛŒØ²ÛŒ از TMX…درون‌ریزی پرونده‌های ترجمه…درون‌ریزی از TMX…درون‌ریزی پرونده‌های ترجمه…درون‌ریزی ترجمه‌ها…در: %sشامل نگارش‌های بتاحرو٠بزرگ/Ú©ÙˆÚ†Ú© Ù†Ø§Ø³Ø§Ø²Ú¯Ø§Ø±ÙØ¶Ø§ÛŒ خالی ناسازگاراطلاعات در مورد مترجمنصبپروندهٔ نامعتبراحضاریه:ÙØ§ÛŒÙ„ های ترجمه JSONنگه‌دارکد یا نام زبانزبانی Ú©Ù‡ قصد دارید به آن ترجمه کنید همان زبان پروندهٔ ترجمه است.زبان ترجمه مشخص نشده است.زبان برای ترجمه:گزینش زبانگروه ترجمه:زبان:آخرین تغییردربارهٔ کلیدواژه‌های gettext بخوانیددربارهٔ حالت‌های جمع بخوانیدبیشتر بدانیددرباره %s بیشتر بدانیددربارهٔ Crowdin بیشتر بدانیدانتهای خط:سیاههٔ پسوندهای جدا شده توسط سمیکلون (به عنوان مثال *.cpp;*.h):بارگذاری انگلیسیپرونده‌های MO نمی‌توانند به طور مستقیم در Poedit ویرایش شوند.حرو٠را Ú©ÙˆÚ†Ú© کنحرو٠را بزرگ کنیک ترجمهٔ جدید از این پروندهٔ POT ایجاد شود.سربرگ بدشکل: «%s»مدیریت حساب‌های کاربریمدیریت…در حال ادغام موارد مختلÙ…کوچک سازینام پروژه‌ای Ú©Ù‡ ترجمه برای آن استنام:ناتمام &بعدیناتمام &بعدینیازمند کارنیازمند کارهرگز اجازه‌نده Ú©Ù‡ سیاههٔ رشته‌ها تمرکز را بگیرد. اگر ÙØ¹Ø§Ù„ باشد، شما باید از مهار-پیکان‌های ØµÙØ­Ù‡â€ŒÚ©Ù„ید برای ØµÙØ­Ù‡â€ŒÙ†ÙˆØ±Ø¯ÛŒ Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید ولی همچنین می‌توانید Ø¨Ù„Ø§ÙØ§ØµÙ„Ù‡ نگارش متن را بدون ÙØ´Ø§Ø± دادن کلید جهش برای تغییر تمرکز انجام دهید.جدیدجدید از پروندهٔ &POT/PO…جدید از پروندهٔ &POT/PO…رشته‌های جدیدحالت جمع بعدیحالت جمع بعدیخیرمورد منطبقی ÛŒØ§ÙØª نشدهیچ ورودی نمی‌تواند از پیش‌ترجمه شود.هیچ اطلاعاتی در مورد وقوع این رشته در کد منبع در ÙØ§ÛŒÙ„ ارائه نشده است.مورد منطبقی ÛŒØ§ÙØª نشدهیچ مشکلی در ترجمه ÛŒØ§ÙØª نشد.بدون اطّلاعات کارکردهمه اَشکال جمع ترجمه نشدند.بدون تأیید هویت، Ù„Ø·ÙØ§Ù‹ مجددا وارد شوید.یادداشت‌ها برای مترجمانتأییدیکÙقط در صورتی ÙØ¹Ø§Ù„ کنید Ú©Ù‡ به Ú©ÛŒÙیت TM خود اعتماد دارید. به طور Ù¾ÛŒØ´â€ŒÙØ±Ø¶ØŒ همه موارد همتا از TM به عنوان نیاز به کار نشانه‌گذاری شده‌اند Ùˆ باید قبل از Ø§Ø³ØªÙØ§Ø¯Ù‡ بررسی شوند.Ùقط مطابقت های دقیق را پر کنیدباز کردن ترجمه ابری…گشودن موارد اخیرگشودن Ùˆ ویرایش پرونده‌های ترجمه.باز کردن ترجمه ابریباز کردن ترجمه ابری…گشودن پروندهگشودن در ویرایشگرگشودن در ویرایشگرگشودن موارد اخیرگشودن...گشودن…گزینه‌هاغیرهناتمام &قبلیناتمام &قبلیپرونده‌های ترجمهٔ POالگوهای ترجمهٔ POTÙØ§ÛŒÙ„‌های POT Ùقط الگو هستند Ùˆ خود حاوی ترجمه نیستند. n\برای ترجمه، یک ÙØ§ÛŒÙ„ PO جدید بر اساس الگو ایجاد کنید.جای‌گذاریجای‌گذاری Ùˆ تطابق سَبکمسیرهابه‌روز رسانی از کد منبع را در تمام ÙØ§ÛŒÙ„‌های پروژه انجام می‌دهد.خطای دسترسی.متغیر “%s†در ترجمه دچار خطا است.درستی Ù…ØªØºÛŒØ±Ù‡Ø§Ù„Ø·ÙØ§Ù‹ به‌جای آن پروندهٔ PO مربوطه را باز کرده Ùˆ ویرایش کنید. هنگام ذخیرهٔ آن، پروندهٔ MO نیز به‌روز خواهد شد.Ù„Ø·ÙØ§ ابتدا ÙØ§ÛŒÙ„ را ذخیره کنید. این بخش تا آن زمان قابل ویرایش نیست.جمعترجمه به صورت جمععبارت جمع Ø§Ø³ØªÙØ§Ø¯Ù‡ شده توسط ÙØ§ÛŒÙ„ برای %s غیرمعمول است.حالت‌های جمع:Poeditâ€Poedit - مدیر Ú©Ø§ØªØ§Ù„ÙˆÚ¯â€ŒÙ‡Ø§Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø± Poedit به طور خودکار محتوای نامعتبر در پروندهٔ «â¨%sâ©Â» را درست خواهد کرد.Poedit می‌تواند سعی کند ورودی های جدید را Ùقط از ترجمه های قبلی موجود در ÙØ§ÛŒÙ„ یا از Ú©Ù„ Ø­Ø§ÙØ¸Ù‡ ترجمه شما Ù¾ÙØ± کند. Ø§Ø³ØªÙØ§Ø¯Ù‡ از TM در صورتی Ú©Ù‡ تقریباً خالی باشد بسیار مؤثر نخواهد بود، اما با Ø§ÙØ²ÙˆØ¯Ù† ترجمه‌های بیشتر به آن، بهتر می‌شود.Poedit نمی تواند کد منبع را در جایی Ú©Ù‡ رشته Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ شود نشان دهد، زیرا ÙØ§ÛŒÙ„ یا در محل ارجاع شده در دسترس نیست یا یک مرجع نمادین است Ú©Ù‡ به یک ÙØ§ÛŒÙ„ واقعی اشاره نمی کند.â€Poedit ابزاری آسان برای ویرایش ترجمه‌ها است.Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø± Poedit نتوانست پروندهٔ «â¨%sâ©Â» را بگشاید.پیش‌&ترجمه…پیش‌ترجمهپیش‌ترجمه%u رشته پیش‌ترجمه شد%u رشته پیش‌ترجمه شدپیش‌ترجمه از Ø­Ø§ÙØ¸Ù‡Ù” ترجمه…پیش‌ترجمه…پیش ترجمه به طور خودکار مطابقت های دقیق یا مبهم رشته های ترجمه نشده را در Ø­Ø§ÙØ¸Ù‡ ترجمه پیدا Ù…ÛŒ کند Ùˆ ترجمه های آنها را پر Ù…ÛŒ کند.پیش‌ترجمه نیازمند موجود بودن متن منبع است. اگر Ùقط از شناسه‌های بدون متن واقعی Ø§Ø³ØªÙØ§Ø¯Ù‡ شود، کار نمی‌کند.پیش از ترجمه مستلزم آن است Ú©Ù‡ زبان متن مبدأ مشخص باشد. Poedit نتوانست آن را در این ÙØ§ÛŒÙ„ شناسایی کند.ترجیحاتترجیحات...ترجیحات…در حال آماده‌سازی Ø±Ø´ØªÙ‡â€ŒÙ‡Ø§â€¦Ø­ÙØ¸ قالب‌بندی ÙØ§ÛŒÙ„‌های موجودحالت جمع قبلیحالت جمع قبلیمتن منبع قبلیقبلا ویرایش شده استقبلا ویرایش شده استنگارش Ùˆ نام پروژه:نام پروژه:پروژه:پروژه هابررسی نقطه‌گذاریپاکسازیپاکسازی ترجمه‌های حذ٠شدهخروجخواندن محتوای پرونده با خطای زیر ناموÙÙ‚ بود: %sپرونده‌های اخیرانجام دوبارهتازه‌سازیبارگزاری مجدد پروندهبارگزاری مجدد پروندهجای‌گزینیجای‌گزینی &همهجای‌گزینی &همهعبارت جای‌گزینجای‌گزینی…سربرگ مورد نیاز به ÙØ±Ù… جمع موجود نیست.بازنشانیبازنشانی Ø­Ø§ÙØ¸Ù‡Ù” ترجمهبازنشانی Ø­Ø§ÙØ¸Ù‡Ù” ترجمه، تمام ترجمه‌های ذخیره شده را به طور برگشت ناپذیر حذ٠می‌کند. نمی‌توانید این عملیات را بازگردانید.نشان دادن در یابندهبازبینیذخیرهذخیره به &عنوان…ذخیره به &عنوان…به‌هرحال ذخیره شودبه‌هرحال ذخیره شودذخیره به عنوانذخیره به عنوان…ذخیرهٔ تغییراتذخیرهٔ پروندهاسکرین شات ها:گزینش &همهگزینش همهگزینش پرونده‌های TMX برای درون‌ریزیگزینش شاخهگزینش پروندهٔ ترجمهگزینش پرونده‌های ترجمه برای درون‌ریزیگزینش الگؤ ترجمهگزینش زبان ترجیحی شماانتخاب زبانانتخاب زبانتنظیمات…نمایش نوار کنارینمایش املاء Ùˆ دستورزباننمایش نوار وضعیتنمایش &شناسهٔ رشتهنمایش جای‌گزینی‌هانمایش نوار ابزارنمایش هشدارهانمایش در Ø§Ú©ØªØ´Ø§ÙØ§ØªÙ†Ù…ایش در پوشهنمایش یا پنهان کردن نوار کنارینمایش نوار جانبینمایش نوار وضعیتنمایش &شناسهٔ رشتهنمایش هشدارهانوار کناریورودخروجورودورود به حساب %sورود به حساب کاربری ابریورود به Crowdinورود به حساب کاربری Ø§Ø¨Ø±ÛŒØ®Ø±ÙˆØ¬Ù…ÙØ±Ø¯Ø±ÙˆÙ†ÙˆØ´Øª/جای‌گذاری هوشمندخط تیره‌های هوشمندپیوندهای هوشمندنقل‌قول هوشمندمرتب‌کردن بر اساس ترتیب &پروندهمرتب‌کردن بر اساس &منبعمرتب‌کردن بر اساس &ترجمهمرتب‌کردن بر اساس ترتیب &پروندهمرتب‌کردن بر اساس &منبعمرتب‌کردن بر اساس &ترجمهمجموعه‌نویسه کد منبع:استخراج‌کننده‌های کد منبع برای ÛŒØ§ÙØªÙ† رشته‌های قابل ترجمه در ÙØ§ÛŒÙ„‌های کد منبع Ùˆ استخراج آن‌ها به‌منظور ترجمه Ø§Ø³ØªÙØ§Ø¯Ù‡ می‌شوند.کد منبع موجود نیست.کد منبع ÛŒØ§ÙØª نشدمتن منبعشناسه متن منبعمتن منبع — %sکلیدواژه‌های منبعمسیرهای منبعکلیدواژه‌های منبعمسیرهای Ù…Ù†Ø¨Ø¹Ú¯ÙØªØ§Ø±Ø¨Ø±Ø±Ø³ÛŒ املاء ØºÛŒØ±ÙØ¹Ø§Ù„ است، زیرا لغت‌نامه‌ای برای زبان %s نصب نشده است.املاء Ùˆ دستور زبانشروع به صحبت کردنتوق٠صحبت کردنترجمه‌های ذخیره شده:Ø¨Ø§ÙØªØ§Ø± رشته: %sشناسه رشته: %sطول رشته به نویسهطول رشته به نویسه: ترجمه | منبععبارت برای ÛŒØ§ÙØªÙ†Ø¬Ø§ÛŒâ€ŒÚ¯Ø²ÛŒÙ†ÛŒâ€ŒÙ‡Ø§Ù¾ÛŒØ´Ù†Ù‡Ø§Ø¯Ø§ØªØ§Ú¯Ø± زبان ترجمه به درستی تنظیم نشده باشد پیشنهادات در دسترس نیست. سایر ویژگی ها، از قبیل ÙØ±Ù… های جمع، ممکن است تحت تاثیر قرار گیرد.مکان‌نمای اضاÙÛŒ «%s» Ú©Ù‡ در متن منبع نیست.از همهٔ زبان‌هایی Ú©Ù‡ توسط ابزار GNU gettext شناخته می‌شود، پشتیبانی می‌شود (پی‌اچ‌پی، سی Ùˆ سی پلاس پلاس، سی شارپ، پرل، پایتون، جاوا، جاوااسکریپت Ùˆ غیره).همگام‌سازیهمگام‌سازی با Crowdinهمگام‌سازی ترجمه با Crowdinهمگام‌سازیخطای همگام‌سازیهمگام سازی با Crowdin موÙقیت آمیز نبود.در سرایند به ÙØ±Ù… جمع اشتباه نوشتاری وجود دارد ("%s").ت‌مپرونده‌های TMXرشته‌های قابل ترجمه را از یک الگوی POT موجود برمی‌دارد.نام تیم Ùˆ آدرس ایمیل یا پیوندجای‌گزینی متنTM هیچ رشته‌ای مشابه محتوای این ÙØ§ÛŒÙ„ ندارد. Ùقط پس از اینکه Poedit از ÙØ§ÛŒÙ„‌هایی Ú©Ù‡ به صورت دستی ترجمه کرده‌اید یاد بگیرد، برای ترجمه‌های نیمه خودکار مؤثر است.ÙØ§ÛŒÙ„ TMX بد Ø´Ú©Ù„ است.درصورت ذخیره، تغییرات ایجاد شده توسط برنامه دیگر از بین می‌رود.نمی‌توان پرونده را به قالب MO کامپایل Ùˆ از آن Ø§Ø³ØªÙØ§Ø¯Ù‡ کرد.این پرونده حاوی موارد تکراری است Ú©Ù‡ در پرونده‌های PO مجاز نیست Ùˆ از Ø§Ø³ØªÙØ§Ø¯Ù‡ از پرونده جلوگیری Ù…ÛŒ کند. Poedit موضوع را Ø±ÙØ¹ کرد، اما شما باید ترجمه هر یک از اقلام مشخص شده به عنوان مورد نیاز را بررسی کنید Ùˆ در صورت لزوم آنها را اصلاح کنید.پرونده نمی‌تواند در مجموعه‌نویسه «%s» Ú©Ù‡ در تنظیمات ترجمه مشخص شده، ذخیره شود. به‌جای آن در «UTF-8» ذخیره Ùˆ تنظیمات بر اساس آن تغییر ÛŒØ§ÙØª.پرونده اصلاح شده است. آیا می‌خواهید تغییرات را ذخیره Ú©Ù†ÛŒØ¯ØŸÙØ±Ù…ت ÙØ§ÛŒÙ„ توسط Poedit شناخته نشد.پرونده به قالب MO کامپایل شد، امّا احتمالاً به درستی کار نخواهد کرد.پرونده به صورت ایمن ذخیره Ùˆ به قالب MO کامپایل شد، امّا احتمالاً به درستی کار نخواهد کرد.پرونده به صورت ایمن ذخیره شده‌است، امّا نمی‌توان آن را به قالب MO کامپایل Ùˆ از آن Ø§Ø³ØªÙØ§Ø¯Ù‡ کرد.پرونده به صورت ایمن ذخیره شده‌است.نمی‌توان پرونده «%s» را باز کرد.پروندهٔ «â¨%sâ©Â» توسط برنامهٔ دیگری تغییر کرده است.متن منبع قدیمی (قبل از تغییر در Ø·ÛŒ به‌روز رسانی) Ú©Ù‡ ترجمه اکنون نادرست با آن مطابقت دارد.ساده‌ترین راه برای پر کردن این ÙØ§ÛŒÙ„ با ترجمه، به‌روز رسانی آن از یک POT است:ترجمه با یک ÙØ§ØµÙ„Ù‡ شروع نشده است.ترجمه با یک خط‌جدید به پایان رسیده، ولی متن منبع اینطور نیست.ترجمه با یک ÙØ§ØµÙ„Ù‡ به پایان رسیده، ولی متن منبع اینطور نیست.ترجمه با “%s†به پایان رسیده اما متن منبع با “%s†به پایان رسیده است.ترجمه یک خط‌جدید در آخر را ÙØ±Ø§Ù…وش کرده است.ترجمه یک ÙØ§ØµÙ„Ù‡ در آخر را ÙØ±Ø§Ù…وش کرده است.ترجمه آمادهٔ Ø§Ø³ØªÙØ§Ø¯Ù‡ است.ترجمه باید با یک “%s†به پایان برسد.ترجمه نباید با یک “%s†به پایان برسد.ترجمه باید به صورت یک جمله شروع شود.ترجمه باید با حرو٠کوچک شروع شود.ترجمه با یک ÙØ§ØµÙ„Ù‡ شروع شده، ولی متن منبع اینطور نیست.ترجمه‌ها به عنوان نیاز به کار نشانه‌گذاری شدند، زیرا ممکن است نادرست باشند. شما باید آن‌ها را از نظر درستی بررسی کنید.هیچ ترجمه‌ای وجود ندارد. این غیرعادی است.هنگام قالب‌بندی پرونده به صورت کاملاً صحیح، مشکلی به وجود آمد(ولی به هرحال پرونده ذخیره شد).هنگام بارگیری ÙØ§ÛŒÙ„ خطاهایی وجود داشت. در نتیجه ممکن است برخی از داده ها Ú¯Ù… شده یا خراب شده باشند.این تنظیمات بر قالب‌بندی داخلی ÙØ§ÛŒÙ„ های PO تأثیر می‌گذارد. اگر نیازمندی خاصی دارید، مانند کنترل نسخه، آن‌ها را تنظیم کنید.این ÙØ§ÛŒÙ„ JSON یک ÙØ§ÛŒÙ„ ترجمه نیست Ùˆ نمی‌توان آن را در Poedit ویرایش کرد.این ÙØ§ÛŒÙ„ دارای ورودی هایی با ÙØ±Ù… های جمع است، اما سربرگ Plural-Forms پیکربندی نشده است.این دستوری است Ú©Ù‡ برای راه‌اندازی استخراج‌کننده Ø§Ø³ØªÙØ§Ø¯Ù‡ می‌شود. %o به نام ÙØ§ÛŒÙ„ خروجی، %K به Ùهرست کلیدواژه‌ها، %F به Ùهرست ÙØ§ÛŒÙ„‌های ورودی، %C به پرچم مجموعه نویسه‌ها گسترش می‌یابد (در زیر ببینید).این رشته در Ø­Ø§ÙØ¸Ù‡Ù” ترجمهٔ Poedit پیدا شده است.Ùقط در صورتی Ú©Ù‡ مجموعه نویسه کد منبع داده شده باشد، این به خط ÙØ±Ù…ان متصل می‌شود. %c به مقدار مجموعه نویسه گسترش Ù…ÛŒ یابد.این به خط ÙØ±Ù…ان یکبار برای هر پرونده‌ی درونداد ضمیمه خواهد شد. %f به نام پرونده گسترش می‌یابد.این به خط ÙØ±Ù…ان یکبار برای هر پرونده‌ی درونداد ضمیمه خواهد شد. %k به کلیدواژه گسترش می‌یابد.جمع کلتغییر شکل‌هاترجمه پروژه ابریترجمهزبان ØªØ±Ø¬Ù…Ù‡Ø­Ø§ÙØ¸Ù‡Ù” ترجمهترجمه نیازمند کارویژگی‌های ترجمهپایگاه داده Ø­Ø§ÙØ¸Ù‡ ترجمه خراب است: %s (%d).ترجمه نیازمند کارویژگی‌های ترجمهپیشنهادات ترجمهپیشنهادات ترجمه مستلزم آن است Ú©Ù‡ زبان متن مبدأ شناخته شده باشد. Poedit نتوانست آن را در این ÙØ§ÛŒÙ„ شناسایی کند.ترجمه — %sترجمه ها را نمی‌توان از کد منبع به‌روزرسانی کرد، زیرا هیچ کدی در مکان مشخص‌شده در ویژگی‌های ÙØ§ÛŒÙ„ ÛŒØ§ÙØª نشد.دوUTF-8 (توصیه شده)برگرداناستثناء غیرقابل اداره، رخ داده است: %sیونیکس (توصیه شده)خطای ناشناخته Crowdin.ترجمه نشدهبه‌روز رسانیبه‌روز رسانی همهبه‌روز رسانی همهٔ کاتالوگ‌های پروژههمهٔ کاتالوگ‌های این پروژه به‌روز رسانی شوند؟به‌روز رسانی از پروندهٔ &POT…به‌روز رسانی از پروندهٔ &POT…به‌روز رسانی از کدبه‌روز رسانی از POTبه‌روز رسانی از کدبه‌روز رسانی از کد منبعخلاصه به‌روز رسانیبه‌روز رسانی‌هابه‌روز رسانی شکست خوردبه‌روز رسانی ترجمه‌هابه‌روز رسانی اطلاعات کاربر…در حال بارگذاری ترجمه‌ها به %s شکست خورد.در حال بارگذاری ترجمه‌ها به %s…در حال بارگذاری ØªØ±Ø¬Ù…Ù‡â€¦Ø§Ø³ØªÙØ§Ø¯Ù‡ از عبارت Ø³ÙØ§Ø±Ø´ÛŒØ§Ø³ØªÙاده از قلم Ø³ÙØ§Ø±Ø´ÛŒ برای سیاههٔ:Ø§Ø³ØªÙØ§Ø¯Ù‡ از قلم Ø³ÙØ§Ø±Ø´ÛŒ برای قسمت‌های متن:Ø§Ø³ØªÙØ§Ø¯Ù‡ از قوانین پیش‌گزیده برای این زباناز این کلمات کلیدی (نام توابع) برای تشخیص رشته های قابل ترجمه ÙØ§ÛŒÙ„ منبع Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید:Ø§Ø³ØªÙØ§Ø¯Ù‡ از Ø­Ø§ÙØ¸Ù‡Ù” ترجمهاعتبارسنجینتایج ارزیابینگارش %sدر حال انتظار برای تأیید هویت…خوش آمدید به Poeditهنگام به‌روز رسانی از منبعÙقط کلمه کاملپنجرهویندوزپیچیدن به اطراÙپیچیدن در:پرونده‌های ترجمهٔ XLIFFبلههم‌چنین می‌توانید رشته‌های قابل ترجمه را به صورت مستقیم از کد منبع استخراج کنید:شما نمی‌توانید بیش از یک پرونده را در پنجرهٔ Poedit بیندازید.شما اجازه ندارید ÙØ§ÛŒÙ„ های کد منبع را از مکان مشخص شده در ویژگی های ÙØ§ÛŒÙ„ بخوانید.شما باید Poedit را برای اعمال این تغییرات دوباره راه‌اندازی نمایید.اسم شمااگر ذخیره نکنید، تغییرات شما از بین Ù…ÛŒ رود.نام Ùˆ نشانی رایانامهٔ شما Ùقط برای تنظیم Last-Translator در سرایند پرونده‌های GNU gettext Ø§Ø³ØªÙØ§Ø¯Ù‡ می‌شود.ØµÙØ±Ø¨Ø²Ø±Ú¯Ù†Ù…ايینیازمند کارپرونده‌های موقّتی را پاک نکنید(برای Ø±ÙØ¹ باگ)به عنوان مثال nplurals=2; plural=(n > 1);همتاسازی پوششی در Ù¾Ø±ÙˆÙ†Ø¯Ù‡Ø±ÙØªÙ† به شمارهٔ خط داده شدهاداره کردن یک نشانی ‪poedit://مهار+پایینورودچپراستتبدیل+بالادگرسازمهارتبدیلدرباره %sپنهان کردن %sپنهان کردن بقیهترجیحات...خروج %sخدماتنمایش همهپیش‌ترجمه از ت‌مزبان ناشناختهنگارش پشتیبانی‌نشده (%s)you@example.com«â¨%sâ©Â» یک پروندهٔ معتبر POT نیست.I%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.Line %d of file “%s†is corrupted (not valid %s data).%d issue with the translation found.%d issues with the translation found.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.Translated: %d of %d (%d %%)Remaining: %d%d error%d errors%d entry%d entriesForm %iForm %i (unused)%d code occurrence%d code occurrences%d entry was pre-translated.%d entries were pre-translated.Translation memory error: %s (%d).%d خط از پروندهٔ «â¨%sâ©Â» درست بارگزاری نشده است.%d خط از پروندهٔ «â¨%sâ©Â» درست بارگزاری نشده است.خط %d از پروندهٔ «â¨%sâ©Â» خراب است (داده معتبر %s نیست).%d مشکل در ترجمه ÛŒØ§ÙØª شد.%d مشکل در ترجمه ÛŒØ§ÙØª شد.ترجمه آمادهٔ Ø§Ø³ØªÙØ§Ø¯Ù‡ است، امّا هنوز %d ورودی ترجمه نشده‌است.ترجمه آمادهٔ Ø§Ø³ØªÙØ§Ø¯Ù‡ است، امّا هنوز %d ورودی ترجمه نشده‌اند.ترجمه‌شده: %d از %d (â¦%dÙªâ©)باقی‌مانده: %d%d خطا%d خطا%d ورودی%d ورودیحالت %dحالت %d (بدون Ø§Ø³ØªÙØ§Ø¯Ù‡)%d رخداد کد%d رخداد کد%d ورودی پیش‌ترجمه شد.%d ورودی پیش‌ترجمه شد.خطای Ø­Ø§ÙØ¸Ù‡Ù” ترجمه: %s (%d)poedit-3.6.3/locales/fi.po0000644000175100001660000026652715011674363011101 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-13 10:16\n" "Last-Translator: \n" "Language-Team: Finnish\n" "Language: fi_FI\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: fi\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Piilota tämä ilmoitus" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Älä näytä enää" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Älä näytä enää" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Päivityksen yhteenveto" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Päivityksen yhteenveto" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Sulje" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Ongelmat" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Tiedosto" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Rivi" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Ongelma" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Uudet merkkijonot" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Uudet tekstit" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Poistetut merkkijonot" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Poistetut merkkijonot" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Kerätään lähdetiedostoja…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Poimitaan käännettäviä merkkijonoja %s tiedostosta…" msgstr[1] "Poimitaan käännettäviä merkkijonoja %s tiedostosta…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Poimitut käännökset sisältävän tiedoston lataaminen epäonnistui." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Tiedosto: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Lähdekoodi ei ole käytettävissä." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Käännösten päivittäminen lähdekoodista ei onnistunut, koska tiedoston " "ominaisuuksissa annetusta sijainnista ei löytynyt koodia." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Lupa evätty." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Sinulla ei ole tarvittavia oikeuksia lukea lähdekooditiedostoja tiedoston " "asetuksissa määritellystä sijainnista." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Mikäli olet aiemmin estänyt tiedostoidesi käyttöoikeuden, voit myöntää sen " "Järjestelmäasetusten kohdasta Suojaus ja yksityisyys > Yksityisyys > " "Tiedostot ja kansiot." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Mikäli olet aikaisemmin estänyt pääsyn tiedostoihisi, voit sallia sen " "kohdasta Järjestelmäasetukset > Suojaus ja yksityisyys > Yksityisyys > " "Tiedostot ja kansiot." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Merkkijonoja ei voitu poimia lähdekoodista." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Tiedostoa \"%s\" ei voitu avata." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Päivitetään käännöksiä" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Tunnistetaan eroja…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Yhdistetään eroavaisuuksia…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Käännöstiedosto on jo ajan tasalla, eikä merkkijonoihin tehty muutoksia." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Käännöstiedosto päivitettiin %s muutoksella." msgstr[1] "Käännöstiedosto päivitettiin %s muutoksella." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Uudet käännettävät merkkijonot:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Poistetut merkkijonot (ei enää käytössä):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "Lähdeteksteissä havaittiin %d ongelma." msgstr[1] "Lähdeteksteissä havaittiin %d ongelmaa." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Näytä tiedot…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Näytä tiedot…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Vääränmuotoinen otsake: â€%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO-käännöstiedostot" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT-käännöspohjat" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF-käännöstiedostot" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode-lokalisointikatalogi" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON-käännöstiedostot" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter-käännöstiedostot" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Kaikki käännöstiedostot" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Tiedosto on muodossa, jota Poedit ei tunnista." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Tämä JSON-tiedosto ei ole käännöstiedosto eikä sitä voida muokata Poeditillä." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Tiedoston sisällön luku epäonnistui: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Tiedostoa â€%s†voidaan vain lukea, mutta ei tallentaa.\n" "Tallenna se toisella nimellä." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Tiedostoa %s ei voitu tallentaa." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Kuvankaappaukset:" #: src/catalog_po.cpp:134 #, 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 rivi tiedostosta â€%s†ei latautunut oikein." msgstr[1] "%i riviä tiedostosta â€%s†ei latautunut oikein." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Rivi %d tiedostossa â€%s†on vioittunut (%s-data ei ole kelvollista)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Rikkinäinen PO-tiedosto: yksikkomuotoista msgstr:ää käytetty yhdessä " "msgid_plural:in kanssa" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Rikkinäinen PO-tiedosto: monikkomuotoista msgstr:ää käytetty ilman " "msgid_plural:ia" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Tiedostoa ei voitu ladata. Se on todennäköisesti vioittunut." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Tiedostoa ladattaessa kohdattiin virheitä. Osa tiedosta saattaa sen " "seurauksena puuttua tai olla vioittunutta." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "Tiedoston muotoilemisessa oli ongelma (mutta sen tallennus onnistui)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Tiedostoa ei voitu tallentaa katalogin ominaisuuksissa on määriteltyssä â€%sâ€-" "merkistössä.\n" "\n" "Se tallennettiin sen sijaan UTF-8-muodossa ja asetusta muutettiin " "vastaavasti." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Virhe tallennettaessa tiedostoa" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "â€%s†ei ole kelvollinen POT-tiedosto." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Yllättävä puute XCLOC-tiedoston sisällössä." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "XCLOC-tiedostojen tallennusta eri sijaintiin ei tueta." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Virhe ladattaessa XLIF-tiedostoa: %s." #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "ei-tuettu versio (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Käännöstekstissä on merkkausvirhe." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Yhdistä Poedit tuettuihin pilvilokalisointialustoihin käännösten saumatonta " "synkronointia ja hallintaa varten." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Miten pilvisynkronointi toimii?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Tili" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(ei kirjautunut)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Avaa pilvikäännös" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Hallitse tilejä" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekti:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Kieli:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Kirjaudu pilvitilille" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Kirjaudu pilvitilille" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Tililläsi ei ole käännösprojekteja." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Ladataan uusimmat käännökset…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Kirjaudu palveluun %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Synkronoidaan" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Tallennetaan käännöksiä palveluun %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Käännösten tallennus palveluun %s epäonnistui." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Synkronointivirhe" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Lisää" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Tuntematon Crowdin-virhe." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Ei valtuutusta; kirjaudu uudelleen." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "String-tyyppisiä Crowdin-projekteja ei tueta." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Käännösten lataus on poistettu käytöstä tässä projektissa." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Kirjaudu" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Kirjaudu" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Kirjaudu ulos" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Kirjaudu ulos" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Lisätietoja Crowdinista" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin on online käännösten hallinta-alusta ja yhteistyössä toimiva " "käännöstyökalu. Hyödynnämme itse Crowdiniä Poeditin käännöksessä useille " "kielille, ja rakastamme sitä." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Odotetaan todennusta…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Päivitetään käyttäjätietoja…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Kirjaudu Crowdiniin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Synkronointi Crowdiniin epäonnistui." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin-virhe" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Lähetetään käännöksiä…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopioi" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Lue lisää" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Ohje" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO-tiedostoja ei voi suoraan muokata Poeditillä." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Virhe tiedoston avaamisessa" #: src/edapp.cpp:735 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." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "älä poista tilapäistiedostoja (vianjäljitystä varten)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "käsittele poedit://-osoite" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "siirry annetulla rivillä olevaan kohtaan" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Kommunikointi Poedit-prosessin kanssa epäonnistui." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Tapahtui käsittelemätön poikkeus: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Valitse käännösmalli" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Virheellinen tiedosto" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Valitse käännöstiedosto" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit on helppokäyttöinen käännöseditori." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Poedit-ikkunaan voi pudottaa vain yhden tiedoston." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Tiedosto â€%s†ei ole käännöstiedosto." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Tiedostoa â€%s†ei ole olemassa." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format 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." #: src/edframe.cpp:871 msgid "Install" msgstr "Asenna" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Toinen sovellus on muuttanut tiedostoa “%sâ€." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Lataa tiedosto uudelleen" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Haluatko ladata tiedoston uudelleen levyltä? Poeditin tallentamattomat " "muokkaukset menetetään, jos teet niin." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ohita" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Lataa tiedosto uudelleen" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Tiedostoa on muokattu. Haluatko tallentaa muutokset?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Tallenna muutokset" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Muutokset menetetään, ellet tallenna niitä." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Tallenna" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Älä tallenna" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Älä tallenna" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "Toisen sovelluksen tekemät muutokset menetetään, jos tallennat." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Peruuta" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Tallenna silti" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Tallenna silti" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Tallenna nimellä…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Muunna…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Muunnetut käännöstiedostot" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Vie HTML-tiedostoon…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML-tiedostot" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Vienti HTML-tiedostoon" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Päivitys epäonnistui" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Avaa viitetiedosto" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Päivitä &POT-tiedostosta…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Päivitä &POT-tiedostosta…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Käännöksestä löytyi %d ongelma." msgstr[1] "Käännöksestä löytyi %d ongelmaa." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Validoinnin tulokset" #: src/edframe.cpp:1842 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 "" "Virheelliset viestit on merkitty listassa punaisella värillä. Tällaisen " "viestin valitsemalla näytetään tarkemmat tiedot virheestä." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Tiedosto tallennettiin turvallisesti." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Tiedosto tallennettiin turvallisesti ja muunnettiin MO-muotoon, mutta se ei " "todennäköisesti toimi oikein." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Tiedosto tallennettiin turvallisesti, mutta sitä ei voida muuntaa MO-muotoon " "eikä käyttää." #: src/edframe.cpp:1866 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." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Tiedostoa ei voi muuntaa MO-muotoon eikä sitä voi käyttää." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Käännöksestä ei löytynyt ongelmia." #: src/edframe.cpp:1894 #, 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] "Käännös on käyttövalmis, mutta %d viesti on vielä kääntämättä." msgstr[1] "Käännös on käyttövalmis, mutta %d viestiä on vielä kääntämättä." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Käännös on käyttövalmis." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit korjasi automaattisesti tiedoston â€%s†virheellisen sisällön." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Tiedosto sisälsi kahdenkertaisia kohtia, mikä on kiellettyä PO-tiedostoissa " "ja estäisi tiedoston käytön. Poedit korjasi ongelman, mutta käännöksestä on " "syytä käydä läpi kaikki keskeneräisiksi merkityt viestit ja tarvittaessa " "korjata ne." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Käännöksen kieltä ei ole asetettu." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Aseta kieli" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Käännöksen kieli on sama kuin lähdekieli." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Korjaa kieli" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Korjaa kieli" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Tässä tiedostossa on monikkomuotoisia viestejä, vaikka Plural-Forms -otsake " "on asettamatta." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Tämän tiedoston viesteillä on eri määrä monikkomuotoja kuin sen Plural-Forms-" "otsake kertoo" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Pakollinen otsake Plural-Forms puuttuu." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Kielioppivirhe Plural-Forms -otsakkeessa (â€%sâ€)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Korjaa otsake" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Korjaa otsake" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Tiedostossa käytetty monikkomuotolauseke on epätavallinen kielelle %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Katselmointi" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Haluatko käyttää englanninkielistä lähdetekstiä?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Tämä tiedosto käyttää lähdetekstin sijaan merkkijonojen tunnisteita. Poedit " "voi puolestasi ladata englanninkieliset tekstit \"%s\" tiedostosta." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Lataa englanti" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Käännetty: %d/%d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Jäljellä: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d virhe" msgstr[1] "%d virhettä" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d viesti" msgstr[1] "%d viestiä" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (tallentamaton)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (muokattu)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Käännösmuistin päivitys epäonnistui: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Tiedostoa \"%s\" ei voitu tallentaa." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Poista lähteestä kopioidut käännökset" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Haluatko todella poistaa kaikki lähdetekstiä vastaavat käännökset?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Tämä poistaa kaikki käännökset, jotka ovat tarkkoja lähdetekstin kopioita. " "Toimintoa ei ole mahdollista kumota." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Pidä" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Poista" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Puhdista poistetut käännökset" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Haluatko todella poistaa kaikki käännökset, joita ei enää käytetä?" #: src/edframe.cpp:2879 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 "" "Jos teet puhdistuksen, kaikki poistetuiksi merkityt käännökset hävitetään " "lopullisesti. Jos samat alkutekstit tulevaisuudessa palaavat käyttöön, ne " "täytyy kääntää uudelleen." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Puhdista" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Kopioi lähdetekstistä" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopioi lähdetekstistä" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Tyhjennä käännös" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Tyhjennä käännös" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Muokkaa kommenttia" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Muokkaa kommenttia" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Esiintymät koodissa" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Esiintymät koodissa" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Piilota sivupalkki" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Näytä sivupalkki" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Piilota tilarivi" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Näytä tilarivi" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Tekstin pituus merkkeinä: käännös | lähde" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Tekstin pituus merkkeinä" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Lähdeteksti" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Yksikkö" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Monikko" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Käännös" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Esikäännetty" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Keskeneräinen" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Keskeneräinen" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Luo uusi käännös" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Luo uusi käännös tästä POT-tiedostosta." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Lähdetekstin ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Kaikki" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Muoto %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Muoto %i (käyttämätön)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nolla" #: src/editing_area.cpp:788 msgid "One" msgstr "Yksi" #: src/editing_area.cpp:790 msgid "Two" msgstr "Kaksi" #: src/editing_area.cpp:804 msgid "Other" msgstr "Muut" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Merkkijonon konteksti: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Merkkijonon tunniste: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s-muotoilu" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s-muotoilu" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Käännös — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Lähdeteksti — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "tuntematon kieli" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Verkkovirhe: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Tuntematon virhe" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Gettext-katalogien yhdistäminen epäonnistui." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Avaa editorissa" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Avaa editorissa" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "Tiedosto ei sisällä tietoa tämän tekstin esiintymistä lähdekoodissa." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Ei käyttötietoja" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d esiintymä koodissa" msgstr[1] "%d esiintymää koodissa" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Lähdekoodia ei löydy" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit ei voi näyttää lähdekoodia, jossa tekstiä käytetään, koska tiedosto " "ei joko ole saatavilla viitatussa paikassa tai se on symbolinen viittaus, " "joka ei osoita todelliseen tiedostoon." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Tiedostoa ei voi avata" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit ei onnistunut avaamaan tiedostoa â€%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Etsi" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Korvaa" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Valinnat" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Älä huomioi kirjainkokoa" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Jatka alusta" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Vain kokonaiset sanat" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Etsi lähdeteksteistä" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Etsi käännöksistä" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Hae kommenteista" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Korvaa k&aikki" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Korvaa k&aikki" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Korvaa" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Edellinen" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Seuraava >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Etsittävä teksti" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Korvaava teksti" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "varoitus: " #: src/gexecute.cpp:171 msgid "error: " msgstr "virhe: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Kielen nimi tai koodi" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Käännöksen kieli" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Käännöksen kieli:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Kaikki merkkijonot" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Localazy-projektin tietoja ei voitu ladata." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Virhe tallennettaessa käännöksiä Localazyyn." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projektit" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Lisätietoja palvelusta %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy on erittäin automatisoitu lokalisointialusta, jonka avulla kuka " "tahansa voi kääntää tuotteensa ja sisällönsä useille kielille helposti." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Lisää projekti" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Lisää projekti" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Katalogien hallinta" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Muokkaa…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Luo uusi käännösprojekti" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Poista projekti" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Muokkaa projektia" #: src/manager.cpp:176 msgid "Update all" msgstr "Päivitä kaikki" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Päivitä projektin kaikki katalogit" #: src/manager.cpp:378 msgid "Total" msgstr "Yhteensä" #: src/manager.cpp:379 msgid "Untrans" msgstr "Ei käänn" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Keskeneräisiä" #: src/manager.cpp:381 msgid "Errors" msgstr "Virheet" #: src/manager.cpp:382 msgid "Last modified" msgstr "Muokattu viimeksi" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Valitse kansio" #: src/manager.cpp:433 msgid "Directories:" msgstr "Kansiot:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Haluatko poistaa â€%sâ€-projektin?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Poista projekti" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Projektin poistaminen ei poista käännöstiedostoja." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Vahvistus" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Päivitetäänkö projektin kaikki katalogit?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Suorittaa päivityksen lähdekoodista kaikille projektin tiedostoille." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Päivitetään projektiluetteloita" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Etsi päivityksiä…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Katalogien hallinta" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Asetukset…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Muokkaa" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Kumoa" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Tee uudelleen" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Liitä ja sovita tyyliin" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Poista" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Oikeinkirjoitus ja kielioppi" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Näytä oikeinkirjoitus ja kielioppi" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Tarkista dokumentti nyt" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Tarkista oikeinkirjoitus näppäilyn aikana" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Tarkista kielioppi oikeinkirjoituksen ohella" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Korjaa oikeinkirjoitus automaattisesti" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Korvaukset" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Näytä korvaukset" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Älykäs kopiointi/liittäminen" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Älykkäät lainausmerkit" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Älykkäät yhdysmerkit" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Älykkäät linkit" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Tekstin korvaus" #: src/menus.cpp:230 msgid "Transformations" msgstr "Muunnokset" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Muuta suuraakkosiksi" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Muuta pienaakkosiksi" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Isot alkukirjaimet" #: src/menus.cpp:237 msgid "Speech" msgstr "Puhe" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Aloita puhuminen" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Lopeta puhuminen" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Näytä" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Näytä työkalurivi" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Mukauta työkaluriviä…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Siirry koko näytön tilaan" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Ikkuna" #: src/menus.cpp:263 msgid "Minimize" msgstr "Pienennä" #: src/menus.cpp:264 msgid "Zoom" msgstr "Zoomaa" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Tervetuloa Poeditiin" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Tuo kaikki eteen" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Tietoja kääntäjästä" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nimi:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Nimesi" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Sähköposti:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "osoitteesi@example.com" #: src/prefsdlg.cpp:190 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." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Muokkaus" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Muunna automaattisesti MO-tiedostoksi tallennettaessa" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Tarkista oikeinkirjoitus" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Kohdista aina tekstinsyöttökenttään" #: src/prefsdlg.cpp:211 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 "" "Älä koskaan kohdista tekstilistaan. Jos tämä on käytössä, siirtymiseen " "täytyy käyttää Ctrl-nuolia näppäimistöä käytettäessä, mutta toisaalta " "tekstiä voi kirjoittaa välittömästi ilman tarvetta painaa sarkainta " "kohdistuksen vaihtamiseksi." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Ulkoasu" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Listan fontti:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Tekstikenttien fontti:" #: src/prefsdlg.cpp:239 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 #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(vaatii Windows 8:n tai uudemman)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Yleiset" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Käytä käännösmuistia" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Hallitse…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Päivitettäessä lähteistä" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "käytä sumeaa täsmäystä tiedoston sisäisesti" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "esikäännä käännösmuistista" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit voi yrittää täyttää uudet viestit vain tiedoston aiempien käännösten " "pohjalta tai koko käännösmuistista. Lähes tyhjän käännösmuistin käyttö ei " "ole kovinkaan hyödyllistä, mutta uusien käännösten lisäämisen myötä toiminta " "paranee." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Tallennetut käännökset:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Tietokannan koko levyllä:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Tuo käännöstiedostoja…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Tuo käännöstiedostoja…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Tuo TMX-tiedostosta…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Tuo TMX-tiedostosta…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Vie TMX-tiedostoon…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Vie TMX-tiedostoon…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Tyhjennä" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Valitse tuotavat käännöstiedostot" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Valitse tuotavat TMX-tiedostot" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX-tiedostot" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Tuodaan käännöksiä…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Käännösmuistin tuonti epäonnistui." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Tuodaan lähteestä \"%s\"…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s käännös tuotiin." msgstr[1] "%s käännöstä tuotiin." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Vie nimellä…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Viedään käännöksiä…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Käännösmuistin vienti polkuun â€%s†epäonnistui." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Tyhjennä käännösmuisti" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Haluatko varmasti tyhjentää käännösmuistin?" #: src/prefsdlg.cpp:673 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." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "Muisti" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Käännösmuisti" #: src/prefsdlg.cpp:730 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." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Mukautetut poimimet:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Mukautetut poimimet:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Tukee kaikkia GNU gettextin tunnistamia ohjelmointikieliä (PHP, C/C++, C#, " "Perl, Python, Java, JavaScript ja muita)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Poista poimin" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Haluatko varmasti poistaa “%s“-poimimen?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Poimimet" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Tilit" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Tarkista päivitykset automaattisesti" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Tarkista myös beta-versiot" #: src/prefsdlg.cpp:1080 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." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Päivitykset" #: src/prefsdlg.cpp:1127 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." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Rivinvaihdot:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (suositeltu)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Rivitys:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Säilytä olemassa olevien tiedostojen muotoilu" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Lisäasetukset" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Asetukset" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Valmistellaan tekstejä…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Esikäännetään käännösmuistista…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Esikäännettiin %u teksti" msgstr[1] "Esikäännettiin %u tekstiä" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Esikäännetään…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d kohta esikäännettiin." msgstr[1] "%d kohtaa esikäännettiin." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Käännökset merkittiin keskeneräisiksi, sillä ne voivat olla virheellisiä. Ne " "on syytä käydä läpi oikeellisuuden varmistamiseksi." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Tarkat vastaavuudet käännösmuistista" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Läheiset vastaavuudet käännösmuistista" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Yhtään kohtaan ei voitu esikääntää." #: src/pretranslate.cpp:218 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 "" "Käännösmuisti ei sisällä yhtään tämän tiedoston sisältöä muistuttavaa " "tekstiä. Käännösmuisti toimii tehokkaasti puoliautomaattiseen kääntämiseen " "vasta kun Poedit on oppinut tarpeeksi manuaalisesti käännetyistä " "tiedostoista." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Esikääntäminen ei ole mahdollista ilman lähdetekstiä." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Esikäännä" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Esikäännös edellyttää, että varsinainen lähdeteksti on käytettävissä. Se ei " "toimi, jos käytetään vain tunnisteita ilman varsinaista tekstiä." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Ei voida esikääntää tuntemattomalta kieleltä." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Esikääntäminen edellyttää, että lähdetekstin kieli on tiedossa. Poedit ei " "tunnistanut sitä tästä tiedostosta." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Täytä vain tarkat täsmäävyydet" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Oletusarvoisesti myös epätarkat tulokset sisällytetään, mutta merkitään " "keskeneräisiksi. Valitse tämä, jos haluat sisällyttää vain täydelliset " "vastineet." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Älä merkitse tarkkoja vastineita keskeneräisiksi" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." 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 ennen " "käyttöä." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Esikääntäminen etsii kääntämättömille teksteille tarkasti tai osittain " "täsmäävät käännökset käännösmuistista automaattisesti." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Virhe: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d virhe tapahtui:" msgstr[1] "%d virhettä tapahtui:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Tapahtui virhe." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d virhe tapahtui." msgstr[1] "%d virhettä tapahtui." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Peruutetaan…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Vedä kansioita tai tiedostoja tähän" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Vedä kansioita tai tiedostoja tähän" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Lisää kansioita…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Lisää kansioita…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Lisää tiedostoja…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Lisää tiedostoja…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Lisää korvausmerkki…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Lisää korvausmerkki…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Näytä Finderissa" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Avaa resurssienhallinnassa" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Näytä kansiossa" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Polut" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Ohitettavat polut" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Poiminnan lisäasetukset" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Poimi huomautukset kääntäjille lähteestä:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Kommentit, joiden alussa on:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Kaikki kommentit" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Lisävalitsimet xgettextille:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Lisäavainsanat" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Projektin nimi, jolle tämä käännös on tarkoitettu" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Tiimin nimi ja sähköpostiosoite tai URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "esim. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (suositeltu)" #: src/propertiesdlg.cpp:976 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." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Muuttujien oikeellisuus" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Käännöksestä puuttuu muuttuja \"%s\"." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Tarpeeton muuttuja \"%s\", joka ei sisälly lähdetekstiin." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Monikkomuotojen käännökset" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Kaikkia monikkomuotoja ei ole käännetty." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Epäjohdonmukaiset isot/pienet kirjaimet" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Käännöksen tulisi alkaa virkkeellä." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Käännöksen tulisi alkaa pienellä kirjaimella." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Epäjohdonmukaisia tyhjemerkkejä" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Käännös ei ala välilyönnillä." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Käännös alkaa välilyönnillä toisin kuin lähdeteksti." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Käännöksen lopusta puuttuu rivinvaihto." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Käännös päättyy rivinvaihtoon toisin kuin lähdeteksti." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Käännöksen lopusta puuttuu välilyönti." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Käännös päättyy välilyöntiin toisin kuin lähdeteksti." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Välimerkkitarkastukset" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Käännöksen lopussa tulisi olla â€%sâ€." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Käännöksen lopussa ei tulisi olla â€%sâ€." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Käännöksen lopussa on â€%s\", mutta lähdetekstin lopussa â€%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Pilvi" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Tyhjennä valikko" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Tyhjennä valikko" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Kommentti:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Päivitä" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Poista" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Poista kommentti" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Muokkaa projektia" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Projektin nimi:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Selaa" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Lisää kansio listaan" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Tiedosto" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Uusi…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Uusi &POT/PO-tiedostosta…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Uusi &POT/PO-tiedostosta…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Avaa…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Avaa äskettäinen" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Avaa äskettäinen" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Avaa pilvikäännös…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Avaa pilvikäännös…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Aloitusikkuna" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Aloitusikkuna" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Katalo&gien hallinta" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Katalo&gien hallinta" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Sulje" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "Ta&llenna" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Tallenna &nimellä…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Tallenna &nimellä…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Muunna MO-muotoon…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "V&ie HTML-tiedostoon…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Etsi päivityksiä…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Asetukset…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "A&setukset" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Lopeta" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Lopeta" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopioi yksiköstä" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopioi yksiköstä" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Käännös on &keskeneräinen" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Käännös on &keskeneräinen" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Muokkaa &kommenttia" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Muokkaa &kommenttia" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Ehdotukset" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Etsi…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "&Korvaa…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Etsi seuraava" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Etsi edellinen" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Etsi ja korvaa…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Etsi seuraava" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Etsi edellinen" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Näytä tekstin &tunniste" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Näytä tekstin &tunniste" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Näytä varoitukset" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Näytä varoitukset" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Järjestä &tiedostojärjestyksen mukaan" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Järjestä &tiedostojen järjestyksen mukaan" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Järjestä läht&een mukaan" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Järjestä läht&een mukaan" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Järjestä &käännöksen mukaan" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Järjestä &käännöksen mukaan" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Ryhmittele konteksteittain" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Ryhmittele konteksteittain" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Virheitä sisältävät ensin" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Virheitä sisältävät ensin" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Kääntämättö&mät ensin" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Kääntämättö&mät ensin" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Näytä esiintymät koodissa" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Näytä esiintymät koodissa" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Näytä sivupalkki" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Näytä tilarivi" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Käännös" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Päivitä lähdekoodista" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Päivitä lähdekoodista" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Synkronoi Crowdiniin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Esi&käännä…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validoi käännökset" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validoi käännökset" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Poista lähteestä kopioidut käännökset" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "P&uhdista poistetut käännökset" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "P&uhdista poistetut käännökset" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "Om&inaisuudet…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Siirry" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Valmis ja seuraava" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Valmis ja seuraava" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Aiemmin muokattu" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Aiemmin muokattu" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Edellinen käännös" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Edellinen käännös" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Seuraava käännös" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Seuraava käännös" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "E&dellinen keskeneräinen" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "E&dellinen keskeneräinen" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Se&uraava keskeneräinen" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Se&uraava keskeneräinen" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Edellinen monikkomuoto" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Edellinen monikkomuoto" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Seuraava monikkomuoto" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Seuraava monikkomuoto" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Ohje verkossa" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Ohje verkossa" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettextin manuaali" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettextin manuaali" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Tietoja Poeditistä" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Tietoja" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Poimimen asetukset" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista tiedostopäätteistä eroteltuna puolipisteillä (esim. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Suoritus:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Komento käännettävien tekstien poimimiseen:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "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)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Kohde avainsanalistassa:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Tämä liitetään komentojen listaan kerran\n" "kuhunkin avainsanaan. %f laajennetaan avainsanaksi." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Kohde syöttötiedostojen listassa:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Tämä liitetään komentoriville kerran\n" "kuhunkin syötetiedostoon. %f laajennetaan tiedostonimeksi." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Lähdekoodin merkistö:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Tämä liitetään komentoriville vain,\n" "jos kohteen koodimerkistö on annettu. %c laajennetaan merkistöarvoksi." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Käännöksen ominaisuudet" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Projektin nimi ja versio:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Käännöstiimi:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Monikkomuodot:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Käytä tämän kielen oletussääntöjä" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Käytä omaa lauseketta" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Lisätietoja monikkomuodoista" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Merkistö:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Poiminnan lisäasetukset…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Poiminnan lisäasetukset…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Käännöksen ominaisuudet" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Lähteiden polut" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Lähteiden polut" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Pura tekstit lähdekoodeista, jotka ovat seuraavissa kansioissa:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Kantapolku:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Lähteiden avainsanat" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Lähteiden avainsanat" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Käytä näitä avainsanoja (funktion nimiä) tunnistettaessa lähdetiedostoista\n" "käännettäviä tekstejä:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Käytä myös oletusavainsanoja tuetuille kielille" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Lisätietoja Gettextin avainsanoista" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Avaa tiedosto" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Tallenna tiedosto" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validoi" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Tarkasta käännöksen virheet" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Päivitä lähdekoodista" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Päivitä lähdekoodista" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Päivitä lähdekoodista" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Sivupalkki" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Näytä tai piilota sivupalkki" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Aiempi lähdeteksti" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Tähän keskeneräiseksi muuttuneeseen käännökseen liittyvä vanha lähdeteksti " "(ennen sen muuttumista päivityksen aikana)." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Huomautukset kääntäjille" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Kommentti" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Lisää kommentti" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Lisää kommentti" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Poista käännösmuistista" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Poista käännösmuistista" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Käännösehdotukset" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Vastaavuuksia ei löydy" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Vastaavuuksia ei löydy" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Tämä teksti löytyi Poeditin käännösmuistista." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Käännösehdotukset edellyttävät, että varsinainen lähdeteksti on " "käytettävissä. Se ei toimi, jos käytetään vain tunnisteita ilman varsinaista " "tekstiä." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Esikääntäminen edellyttää, että lähdetekstin kieli on tiedossa. Poedit ei " "tunnistanut sitä tästä tiedostosta." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Ei voida suorittaa ohjelmaa: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX-tiedosto on viallinen." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Käännösmuistin tietokanta on turmeltunut: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Käännösmuistin virhe: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Käytä oletuskieltä)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Kielen valinta" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Valitse ensisijainen kieli" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Poedit täytyy käynnistää uudestaan muutoksien käyttöön ottamiseksi." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Tilapäiskansiota ei voida luoda." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Käännöksiä ei ole. Sepä erikoista." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Käännettäviä viestejä ei Gettext-järjestelmässä lisätä manuaalisesti, vaan " "ne poimitaan lähdekoodista automaattisesti. Näin ne pysyvät ajan tasalla ja " "tarkkoina. Kääntäjät käyttävät yleensä kehittäjän heitä varten luomia PO-" "mallitiedostoja (POT)." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Lisätietoja GNU gettextistä" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Yksinkertaisin tapa täyttää tämä tiedosto käännöksillä on päivittää se POT-" "tiedostosta:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Päivitä POT-tiedostosta" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Poimi käännettävät tekstit olemassa olevasta POT-käännöspohjasta." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Voit myös poimia käännettävät tekstit suoraan lähdekoodista:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Poimi lähdekoodista" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Konfiguroi lähdekoodista poimiminen asetuksissa." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versio %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Luo uusi" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Luo uusi käännös POT-pohjasta." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Selaa tiedostoja" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Avaa ja muokkaa käännöstiedostoja." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Käännä pilviprojekti" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Työskentele verkossa muiden kanssa." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Äskettäiset tiedostot" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Synkronoi" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Synkronoi Crowdin-käännökseen" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Tietoja %s-ohjelmasta" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%sin asetukset" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Tietoja %s-ohjelmasta" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Palvelut" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Kätke %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Kätke muut" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Näytä kaikki" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Lopeta %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Asetukset…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Asetukset..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Asetukset..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Käytä" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Käytä" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Takaisin" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Takaisin" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Peruuta" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Tyhjennä" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Tyhjennä" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopioi" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Leikkaa" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Leikkaa" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Muokkaa" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Lopeta" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Ohje" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Uusi" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Uusi" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Ei" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ei" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Ok" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Avaa…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Avaa..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Avaa..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "L&iitä" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Sijoita" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Asetukset" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Tee uudelleen" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Virkistä" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "T&allenna nimellä" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Tallenna nimellä" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Valitse k&aikki" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Valitse kaikki" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "K&umoa" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "K&yllä" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Kyllä" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Vaihto+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Ylänuoli" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Alanuoli" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Vasen" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Oikea" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "vaihto" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Varoitus: " poedit-3.6.3/locales/es.po0000644000175100001660000027142715011674363011105 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: es-ES\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Ocultar esta notificación" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "No mostrar de nuevo" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "No mostrar de nuevo" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Actualizar resumen" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Resumen de la actualización" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Cerrar" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problemas" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Archivo" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Línea" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problema" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Cadenas nuevas" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Cadenas nuevas" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Cadenas eliminadas" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Cadenas eliminadas" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Recopilando archivos de código fuente…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Extrayendo cadenas traducibles desde el archivo %s…" msgstr[1] "Extrayendo cadenas traducibles desde los archivos %s…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "No se pudo cargar el archivo con las traducciones extraídas." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "En: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "El código fuente no está disponible." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Las traducciones no pudieron actualizarse desde el código fuente porque no " "se encontró ningún código en la ubicación especificada en las propiedades " "del archivo." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Se denegó el permiso." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "No tiene permiso para leer archivos de código fuente desde la ubicación " "especificada en las Propiedades del archivo." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Si previamente denegó el acceso a sus archivos, puede permitirlo en " "Configuración del sistema > Privacidad y Seguridad > Archivos y carpetas." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Si anteriormente denegó el acceso a sus archivos, puede permitirlo en " "Preferencias del sistema ▸ Seguridad y privacidad ▸ Privacidad ▸ Archivos y " "carpetas." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Error al extraer cadenas del código fuente." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "No se pudo abrir el archivo «%s»." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Actualizando traducciones" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Determinando diferencias…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Combinando diferencias…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "El archivo de traducción ya está actualizado, no se han realizado cambios en " "las cadenas." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "El archivo de traducción se actualizó con el cambio %s." msgstr[1] "El archivo de traducción se actualizó con los cambios %s." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Nuevas cadenas a traducir:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Cadenas eliminadas (ya innecesarias):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "Se detectó un problema %d con las cadenas de origen." msgstr[1] "Se detectaron %d problemas con las cadenas de origen." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Ver detalles…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Ver detalles…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Cabecera con formato incorrecto: «%s»" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Archivos de traducción PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Plantillas de traducción POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Archivos de traducción XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Catálogo de localización Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Archivos de traducción JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Archivos de traducción de Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Todos los archivos de traducción" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "El archivo está en un formato que Poedit no reconoce." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Este archivo JSON no es de traducciones y no se puede editar en Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "La lectura del contenido del archivo falló con el siguiente error: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "El archivo «%s» es de solo lectura y no se puede guardar.\n" "Guárdelo con un nombre distinto." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "No se pudo guardar el archivo «%s»." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Capturas de pantalla:" #: src/catalog_po.cpp:134 #, 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] "No se cargó %i renglón del archivo «%s» correctamente." msgstr[1] "No se cargaron %i renglones del archivo «%s» correctamente." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "El renglón %d del archivo «%s» está dañado (datos %s no válidos)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Archivo PO erróneo: la forma singular «msgstr» se utiliza conjuntamente con " "«msgid_plural»" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Archivo PO erróneo: la forma plural «msgstr» se utiliza sin «msgid_plural»" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "No se pudo cargar el archivo; probablemente esté dañado." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Se han producido errores al cargar el archivo. Es posible que falten algunos " "datos o que estén dañados." #: src/catalog_po.cpp:1289 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 guardó correctamente)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "No se pudo guardar el archivo en el juego de caracteres «%s», tal como se " "indicó en la configuración de la traducción.\n" "\n" "En su lugar, se guardó en UTF-8 y se modificó la opción en consonancia." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Error al guardar el archivo" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "«%s» no es un archivo POT válido." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Inesperadamente el contenido está ausente en el archivo XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "No se permite guardar en un lugar diferente para los archivos XCLOC." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Error al cargar el archivo XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "versión no admitida (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Marcación errónea en la cadena de traducción." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Conecte Poedit con plataformas de localización en la nube compatibles para " "sincronizar perfectamente las traducciones gestionadas en ellas." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "¿Cómo funciona la sincronización en la nube?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Cuenta" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(no se ha accedido)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Abrir traducción en la nube" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Gestionar cuentas" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Proyecto:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Idioma:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Acceder a cuenta en la nube" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Acceder a cuenta en la nube" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "No hay ningún proyecto de traducción en su cuenta." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Descargando las traducciones más recientes…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Acceder a %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sincronización" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Cargando traducciones a %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Error al subir las traducciones a %s." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Error de sincronización" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Añadir" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Error desconocido en Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Acción no autorizada. Acceda a la cuenta de nuevo." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Los proyectos Crowdin basados en cadenas no son compatibles." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "La descarga de traducciones está desactivada en este proyecto." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Acceder" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Acceder" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Salir" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Salir" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Más información sobre Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin es una plataforma de gestión de traducciones en línea y una " "herramienta de traducción colaborativa. Usamos Crowdin para traducir Poedit " "a muchos idiomas y nos encanta." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Esperando la autenticación…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Actualizando la información del usuario…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Acceder a Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Falló la sincronización con Crowdin." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Error de Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Cargando las traducciones…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Copiar" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Más información" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "Ay&uda" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "No se pueden editar los archivos MO directamente en Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Error al abrir el archivo" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "En su lugar, abra y edite el archivo PO correspondiente. Cuando lo guarde, " "el archivo MO se actualizará también." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "no eliminar archivos temporales (para depuración)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "manejar un URI poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "ir al elemento en el número de renglón dado" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "No se pudo comunicar con el proceso de Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Se produjo una excepción no controlada: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Seleccione la plantilla de traducción" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "El archivo no es válido" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Seleccione el archivo de traducción" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit es un editor de traducciones fácil de usar." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "No se puede soltar más de un archivo en la ventana de Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "El archivo «%s» no es de traducción." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "No existe el archivo «%s»." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Se desactivó la revisión ortográfica porque falta el diccionario para el %s." #: src/edframe.cpp:871 msgid "Install" msgstr "Instalar" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Otra aplicación ha modificado el archivo «%s»." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Volver a cargar archivo" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "¿Quiere volver a cargar el archivo desde el disco? Los cambios que haya " "efectuado en Poedit se perderán." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignorar" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Volver a cargar archivo" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Se ha modificado el archivo. ¿Quiere guardar los cambios?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Guardar cambios" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Los cambios se perderán si no los guarda." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Guardar" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&No guardar" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "No guardar" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "Si guarda, se perderán los cambios efectuados en la otra aplicación." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Cancelar" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Guardar de todos modos" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Guardar de todos modos" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Guardar como…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Compilar en…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Archivos de traducción compilados" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Exportar a HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Archivos HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Exportando a HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Falló la actualización" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Abrir archivo de referencia" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Actualizar desde archivo &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Actualizar desde archivo &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Se encontró %d problema en la traducción." msgstr[1] "Se encontraron %d problemas en la traducción." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Resultados de la validación" #: src/edframe.cpp:1842 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 "" "Las entradas con errores se han marcado en rojo en la lista. Se mostrarán " "detalles del error cuando seleccione la entrada." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "El archivo se guardó con seguridad." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "El archivo se guardó con seguridad y se compiló en el formato MO, pero es " "posible que no funcione correctamente." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "El archivo se guardó con seguridad, pero no puede compilarse en el formato " "MO ni usarse." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "El archivo se compiló en el formato MO, pero es posible que no funcione " "correctamente." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "El archivo no se puede compilar en el archivo MO para su uso." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "No se encontraron problemas con esta traducción." #: src/edframe.cpp:1894 #, 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] "" "La traducción está lista para su uso, pero aún no se ha traducido %d cadena." msgstr[1] "" "La traducción está lista para su uso, pero aún no se han traducido %d " "cadenas." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "La traducción está lista para su uso." #: src/edframe.cpp:2294 #, 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»." #: src/edframe.cpp:2299 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 needing work 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 pendientes de revisión y " "corregirlas si es necesario." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "No se ha establecido el idioma de la traducción." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Establecer idioma" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Establecer idioma" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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." #: src/edframe.cpp:2334 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." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Corregir idioma" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Corregir idioma" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Este archivo tiene entradas con formas plurales, pero no tiene configurada " "la cabecera Plural-Forms." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Hay entradas en este archivo con una cantidad de formas de plural distinta " "de la establecida en la cabecera «Plural-Forms»" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Falta la cabecera obligatoria «Plural-Forms»." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Error de sintaxis en la cabecera Plural-Forms («%s»)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Corregir cabecera" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Corregir cabecera" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "La expresión de formas plurales utilizada en el archivo es inusual en %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Revisar" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "¿Le gustaría usar el inglés para el texto original?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Este archivo utiliza ID de cadena en lugar del texto original. Poedit puede " "cargar textos en inglés desde el archivo “%s†para usted." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Cargar inglés" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traducidas: %d de %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Quedan: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d error" msgstr[1] "%d errores" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrada" msgstr[1] "%d entradas" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (sin guardar)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (modificado)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "No se pudo actualizar la memoria de traducciones: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "El archivo \"%s\" no se pudo guardar." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Quitar traducciones iguales a la fuente" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "¿Quiere eliminar todas las traducciones que son idénticas al texto fuente?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Esta acción borrará cualquier traducción que coincida exactamente con el " "texto original. Esto no se puede deshacer." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Conservar" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Quitar" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Purgar traducciones eliminadas" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "¿Quiere eliminar todas las traducciones que ya no se usan?" #: src/edframe.cpp:2879 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 "" "Si continúa con la purga, se eliminarán permanentemente todas las " "traducciones no utilizadas. Si las cadenas correspondientes vuelven a " "añadirse, deberá traducirlas de nuevo." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Purgar" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Copiar del texto original" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Copiar del texto original" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Vaciar traducción" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Vaciar traducción" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Editar comentario" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Editar comentario" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Apariciones en código" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Apariciones en código" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Ocultar barra lateral" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Mostrar barra lateral" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Ocultar barra de estado" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Mostrar barra de estado" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Longitud de cadena en caracteres: traducción | origen" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Longitud de cadena en caracteres" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Texto de origen" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singular" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plural" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Traducción" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pretraducida" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Por revisar" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Por revisar" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Crear traducción nueva" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Cree una traducción nueva a partir de este archivo POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Id. del texto original" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Todo" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Forma %i (no utilizada)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Cero" #: src/editing_area.cpp:788 msgid "One" msgstr "Uno" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dos" #: src/editing_area.cpp:804 msgid "Other" msgstr "Otro" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Contexto de cadena: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identificador de cadena: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Formato %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Formato %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Traducción — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "Id." #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Texto de origen — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "idioma desconocido" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Error de red: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Error desconocido" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Error al combinar los catálogos de gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Abrir en el editor" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Abrir en el editor" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "En el archivo no se proporciona información sobre las apariciones de esta " "cadena en el código fuente." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "No hay información de uso" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d aparición en código" msgstr[1] "%d apariciones en código" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "No se encontró el código fuente" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit no puede mostrar el código fuente donde se utiliza la cadena porque " "el archivo no está disponible en la ubicación referida o es una referencia " "simbólica que no apunta a un archivo real." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "No se puede abrir el archivo" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit no pudo abrir el archivo «%s»." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Buscar" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Reemplazar" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opciones" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignorar mayúsculas y minúsculas" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Búsqueda bidireccional" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Solo palabras completas" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Encontrar en textos originales" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Buscar en traducciones" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Buscar en los comentarios" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Reemplazar &todo" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Reemplazar &todo" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Reemplazar" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Anterior" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Siguiente >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Texto que encontrar" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Texto de reemplazo" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "advertencia: " #: src/gexecute.cpp:171 msgid "error: " msgstr "error: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Nombre o código de idioma" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Idioma de la traducción" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Idioma de la traducción:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Todas las cadenas" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "No se han podido descargar los detalles del proyecto de Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Se ha producido un error al subir las traducciones a Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Proyectos" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Más información sobre %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy es una plataforma de localización altamente automatizada que " "permite a cualquiera traducir sus productos y contenidos a varios idiomas de " "forma sencilla." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Añadir proyecto" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Añadir proyecto" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit. Gestor de catálogos" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Editar…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Crear proyecto de traducción nuevo" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Eliminar el proyecto" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Editar el proyecto" #: src/manager.cpp:176 msgid "Update all" msgstr "Actualizar todo" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Actualizar todos los catálogos del proyecto" #: src/manager.cpp:378 msgid "Total" msgstr "Total" #: src/manager.cpp:379 msgid "Untrans" msgstr "Sin traducir" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Por revisar" #: src/manager.cpp:381 msgid "Errors" msgstr "Errores" #: src/manager.cpp:382 msgid "Last modified" msgstr "Última modificación" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Seleccione la carpeta" #: src/manager.cpp:433 msgid "Directories:" msgstr "Carpetas:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "¿Quiere eliminar el proyecto «%s»?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Eliminar proyecto" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Eliminar el proyecto no suprimirá ningún archivo de traducción." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Confirmación" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "¿Quiere actualizar todos los catálogos del proyecto?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" "Efectúa una actualización desde el código fuente de todos los archivos del " "proyecto." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Actualizando catálogos de proyectos" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Buscar actualizaciones…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Gestor de catálogos" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Preferencias…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Editar" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Deshacer" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Rehacer" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Pegar con el mismo estilo" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Eliminar" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Ortografía y gramática" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Mostrar ortografía y gramática" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Revisar el documento ahora" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Revisar ortografía al escribir" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Comprobar gramática con la ortografía" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Corregir ortografía automáticamente" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Sustituciones" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Mostrar sustituciones" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Copipegado inteligente" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Comillas tipográficas" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Guiones inteligentes" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Enlaces inteligentes" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Sustitución de texto" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformaciones" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Convertir en mayúsculas" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Convertir en minúsculas" #: src/menus.cpp:234 msgid "Capitalize" msgstr "A mayúsculas" #: src/menus.cpp:237 msgid "Speech" msgstr "Habla" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Iniciar locución" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Detener locución" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Ver" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Mostrar barra de herramientas" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Personalizar barra de herramientas…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Modo de pantalla completa" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Ventana" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimizar" #: src/menus.cpp:264 msgid "Zoom" msgstr "Escala" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Este es Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Traer todo al frente" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Información acerca del traductor" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nombre:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Su nombre" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Correo electrónico:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "usted@ejemplo.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Estos datos se utilizan únicamente para establecer el valor de la cabecera " "«Last-Translator» de los archivos de GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Edición" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Compilar automáticamente el archivo MO al guardar" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Revisar la ortografía" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Enfocar siempre el campo de entrada de texto" #: src/prefsdlg.cpp:211 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 "" "No dejar que la lista de cadenas retenga el enfoque. Si se activa esta " "opción, debe usar Ctrl + teclas de dirección para moverse por la lista, pero " "también puede comenzar a teclear inmediatamente sin necesidad de oprimir el " "tabulador para cambiar el enfoque." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Apariencia" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Usar tipo de letra personalizado en listas:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Usar tipo de letra personalizado en campos de texto:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Cambiar idioma de la interfaz" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(se necesita Windows 8 o posterior)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Generales" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Usar memoria de traducción" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Gestionar…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Al actualizar desde el código fuente" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "incluir coincidencias aprox. del archivo" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pretraducir a partir de la MT" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit puede intentar rellenar las entradas nuevas solo a partir de " "traducciones anteriores en el archivo o desde su memoria de traducción " "entera. Si la MT está casi vacía, la operación no será muy efectiva, pero " "mejorará a medida que le añada más traducciones." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Traducciones almacenadas:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Tamaño de base de datos en el disco:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importar archivos de traducción…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importar archivos de traducción…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importar desde TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importar desde TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Exportar a TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Exportar a TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Restablecer" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Seleccione los archivos de traducción que se importarán" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Seleccione los archivos TMX que importar" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Archivos TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Importando traducciones…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "La importación de la memoria de traducción falló." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importando desde “%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "La traducción %s fue importada." msgstr[1] "Las traducciones %s fueron importadas." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exportar a…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Exportando traducciones…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Falló la exportación de la memoria de traducción a «%s»." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Restablecer memoria de traducción" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "¿Confirma que quiere restablecer la memoria de traducción?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Al reiniciar la memoria de traducción se borrarán todas las traducciones " "almacenadas. Esta operación no se puede deshacer." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "MT" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Memoria de traducciones" #: src/prefsdlg.cpp:730 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 "" "Los extractores de código fuente se usan para encontrar los mensajes " "traducibles en los archivos de código fuente y extraerlos para permitir su " "traducción." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Extractores personalizados:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Extractores personalizados:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Admite todos los lenguajes de programación que reconocen las herramientas " "gettext de GNU (PHP, C/C++, C#, Perl, Python, Java, JavaScript y más)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Eliminar extractor" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "¿Confirma que quiere eliminar el extractor «%s»?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extractores" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Cuentas" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Buscar actualizaciones automáticamente" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Incluir versiones beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Las versiones beta contienen las funcionalidades y mejoras más recientes, " "pero pueden resultar menos estables." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Actualizaciones" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Estos valores afectan el formato interno de los archivos PO. Ajústelos si " "usted tiene requisitos específicos; por ejemplo, debido al control de " "versiones." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Finales de renglón:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (recomendado)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Ajustar a:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Conservar el formato de los archivos existentes" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Avanzadas" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Configuración" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Preparando cadenas…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Pretraduciendo desde la memoria de traducción…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Se pretradujo %u cadena" msgstr[1] "Se pretradujeron %u cadenas" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Pretraduciendo…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "Se pretradujo %d entrada." msgstr[1] "Se pretradujeron %d entradas." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Las traducciones se marcaron para revisar ya que pueden ser imprecisas. Debe " "repasarlas para garantizar la exactitud." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Coincidencias exactas desde TM" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Coincidencias aproximadas desde TM" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "No se pudo pretraducir ninguna entrada." #: src/pretranslate.cpp:218 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 "" "La MT no contiene ninguna cadena similar al contenido de este archivo. Solo " "será efectiva para traducciones semiautomáticas después de que Poedit haya " "aprendido lo suficiente de archivos traducidos manualmente por el usuario." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "No se puede pretraducir sin el texto original." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pretraducir" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "La pre-traducción requiere que el texto original esté disponible. No " "funciona si sólo se utilizan IDs sin el texto real." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "No se puede pretraducir desde un idioma desconocido." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "La pretraducción requiere que se conozca la lengua del texto original. " "Poedit no pudo detectarlo en este archivo." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Solo correspondencias exactas" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "De manera predeterminada, también se incluyen los resultados imprecisos, " "pero se marcan para revisión. Active esta opción para incluir solo las " "coincidencias perfectas." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "No marcar coincidencias exactas para revisión" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Active esta opción si confía en la calidad de la TM. De manera " "predeterminada, todas las coincidencias de TM son marcadas para revisar y " "deben repasarse antes de su uso." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "La pretraducción encuentra automáticamente en la memoria de la traducción " "coincidencias exactas o por revisar de cadenas sin traducir y las incluye en " "sus traducciones." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Error: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "Se ha producido un error %d:" msgstr[1] "Se han producido errores %d:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Se ha producido un error." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "Se ha producido un error %d." msgstr[1] "Se han producido %d errores." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Cancelando…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Arrastre carpetas o archivos aquí" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Arrastre carpetas o archivos aquí" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Añadir carpetas…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Añadir carpetas…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Añadir archivos…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Añadir archivos…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Añadir comodín…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Añadir comodín…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Revelar en el Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Mostrar en el Explorador" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Mostrar en carpeta" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Rutas" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Rutas excluidas" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Opciones avanzadas de extracción" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Extraer las notas para traductores a partir de:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Comentarios con el prefijo:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Todos los comentarios" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Señales de xgettext adicionales:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Palabras clave adicionales" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "El nombre del proyecto al que se destina esta traducción" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Nombre de equipo y correo o URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p. ej., nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomendado)" #: src/propertiesdlg.cpp:976 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." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Uso correcto de sustitutivos" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "A la traducción le falta el sustitutivo «%s»." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Sustitutivo superfluo «%s» que no figura en el texto de origen." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Traducciones de formas plurales" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "No todas las formas plurales están traducidas." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Mayúsculas/minúsculas incoherentes" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "La traducción debe comenzar como una oración." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "La traducción debe comenzar con una letra minúscula." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Espacios en blanco incoherentes" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "La traducción no comienza con un espacio." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "La traducción comienza con un espacio, pero el texto original no." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Falta un salto de renglón al final en la traducción." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" "La traducción termina con un salto de renglón, pero el texto original no." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Falta un espacio final en la traducción." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "La traducción termina con un espacio, pero el texto original no." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Comprobaciones de puntuación" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "La traducción debe terminar con «%s»." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "La traducción no debe terminar con «%s»." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "La traducción termina con «%s», pero el texto original termina con «%s»." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Nube" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Vaciar menú" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Vaciar menú" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Comentario:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Actualizar" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Eliminar" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Eliminar el comentario" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Editar proyecto" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nombre del proyecto:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Examinar" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Añadir carpeta a la lista" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Aceptar" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Archivo" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Nuevo…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nueva desde archivo &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nueva desde archivo &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Abrir…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Abrir recientes" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Abrir recientes" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Abrir traducción en nube…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Abrir traducción en nube…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Ventana de inicio" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Ventana de inicio" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Gestor de catálogos" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Gestor de catálogos" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Cerrar" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Guardar" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "G&uardar como…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "G&uardar como…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Compilar en MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&xportar a HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Buscar actualizaciones…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Configuración…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Preferencias" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Salir" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Salir" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Copiar del singular" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Copiar del singular" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Traducción por re&visar" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Traducción por re&visar" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Editar &comentario" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Editar &comentario" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Sugerencias" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Buscar…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Reemplazar…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Buscar siguiente" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Buscar anterior" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Buscar y reemplazar…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Buscar siguiente" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Buscar anterior" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Mostrar &id. de cadena" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Mostrar &id. de cadena" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Mostrar alertas" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Mostrar alertas" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Ordenar por &archivo" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Ordenar por &archivo" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Ordenar por &origen" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Ordenar por &origen" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Ordenar por &traducción" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Ordenar por &traducción" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "A&grupar por contexto" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "A&grupar por contexto" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Entradas con errores primero" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Entradas con errores primero" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Entradas &sin traducir primero" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Entradas &sin traducir primero" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Mostrar ocurrencias de código" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Mostrar ocurrencias de código" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Mostrar barra lateral" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Mostrar barra de estado" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Traducción" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "Actualizar desde código &fuente" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "Actualizar desde código &fuente" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sincronizar con Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pre&traducir…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validar traducciones" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validar traducciones" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Quitar traducciones iguales a la fuente" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Purgar traducciones sin usar" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Purgar traducciones sin usar" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Propiedades…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Navegar" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Hecho; siguiente" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Hecho; siguiente" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Editada previamente" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Editada previamente" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Traducción &anterior" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Traducción &anterior" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Traducción &siguiente" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Traducción &siguiente" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Ante&rior sin terminar" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Ante&rior sin terminar" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Siguien&te sin terminar" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Siguien&te sin terminar" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Forma plural anterior" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Forma plural anterior" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Forma plural siguiente" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Forma plural siguiente" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Ayuda en línea" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Ayuda en línea" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Manual de &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Manual de &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "A&cerca de Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "A&cerca de" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Configuración de extractor" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista de extensiones separadas por punto y coma (p. ej., *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Ejecución:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Orden para extraer las traducciones:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Esta orden se utiliza para abrir el extractor.\n" "%o expande el nombre del archivo de salida, %K muestra\n" "las palabras clave, %F enlista los archivos de entrada y\n" "%C define el conjunto de caracteres (vea abajo)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Un elemento de la lista de palabras clave:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Esto se añadirá a la línea de órdenes una vez por\n" "cada palabra clave. %k contiene la palabra clave." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Un elemento de la lista de archivos de entrada:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Esto se añadirá a la línea de órdenes una vez por cada\n" "archivo de entrada. %f se expande al nombre del archivo." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Conjunto de caracteres del código fuente:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Esto se adjuntará a la línea de órdenes solo si se proporcionó\n" "el conjunto de caracteres del código fuente. %c expande al valor del " "conjunto." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Propiedades de la traducción" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nombre del proyecto y versión:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Equipo de traductores:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Formas plurales:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Usar reglas predeterminadas de este idioma" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Usar una expresión personalizada" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Más información sobre formas plurales" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Conjunto de caracteres:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Opciones avanzadas de extracción…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Opciones avanzadas de extracción…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Propiedades de traducción" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Rutas de fuentes" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Rutas de fuentes" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "" "Extraer textos de archivos de código fuente en las carpetas siguientes:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Directorio raíz:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Palabras clave de fuentes" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Palabras clave de fuentes" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Usar estas palabras clave (nombres de funciones) para reconocer mensajes\n" "traducibles en los archivos fuente:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" "Utilizar también las palabras clave predeterminadas en los lenguajes " "admitidos" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Más información sobre las palabras clave de gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Abrir archivo" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Guardar archivo" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validar" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Buscar errores en la traducción" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Actualizar desde código" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Actualizar desde código" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Actualizar desde código fuente" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Barra lateral" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Texto de origen anterior" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "El texto original anterior (antes de que cambiase en una actualización) al " "que corresponde la traducción ahora imprecisa." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Notas para traductores" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Comentario" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Añadir comentario" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Añadir comentario" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Eliminar de la memoria de traducción" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Eliminar de la memoria de traducción" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Sugerencias de traducción" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "No se hallaron coincidencias" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "No se hallaron coincidencias" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Esta cadena se encontró en la memoria de traducción de Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Hace falta el texto de origen para que funcionen las sugerencias de " "traducción. No funcionarán si solo se usan identificadores." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Las sugerencias de traducción requieren que se conozca la lengua del texto " "de origen. Poedit no pudo detectarlo en este archivo." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "No se puede ejecutar el programa: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "El formato del archivo TMX es erróneo." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "La base de datos de la memoria de traducción está dañada: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Error de la memoria de traducción: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Usar idioma predeterminado)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Selección de idioma" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Seleccione el idioma que prefiera" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Debe reiniciar Poedit para que los cambios surtan efecto." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "No se puede crear la carpeta temporal." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "No hay traducciones. Eso es inusual." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Las entradas traducibles no se añaden manualmente en el sistema Gettext, " "sino que se extraen\n" "automáticamente del código fuente. Así se mantienen actualizadas y " "precisas.\n" "Los traductores normalmente emplean plantillas de PO (POT) que proporcionan " "los programadores." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Más información sobre gettext de GNU" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "La forma más sencilla de llenar este archivo con traducciones es " "actualizarlo desde un POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Actualizar desde POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Tomar las cadenas traducibles desde una plantilla POT existente." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "También puede extraer las cadenas traducibles directamente del código fuente:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Extraer desde código fuente" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Configure la extracción de código fuente en Propiedades." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versión %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Crear nuevo" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Cree una traducción nueva a partir de una plantilla POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Examinar archivos" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Abra y edite archivos de traducción." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Traducir proyecto en la nube" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Colabore con otras personas en línea." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Archivos recientes" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sincronización" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sincronizar la traducción con Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Acerca de %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Preferencias de %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Acerca de %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Servicios" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Ocultar %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Ocultar el resto" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Mostrar todo" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Salir de %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Preferencias…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Preferencias…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferencias…" #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Aplicar" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Aplicar" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Volver" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Volver" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Cancelar" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Vaciar" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Vaciar" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Copiar" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Cor&tar" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Cortar" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Editar" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Salir" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Ayuda" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nuevo" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Nuevo" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&No" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "No" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Aceptar" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Abrir…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Abrir…" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Abrir…" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Pegar" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Pegar" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Preferencias" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Rehacer" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Actualizar" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "G&uardar como" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Guardar como" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Seleccionar &todo" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Seleccionar todo" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Deshacer" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Sí" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Sí" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Mayús+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Intro" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Arriba" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Abajo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Izquierda" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Derecha" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "mayús" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Advertencia: " poedit-3.6.3/locales/sr.po0000644000175100001660000032461215011674230011106 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Serbian (Cyrillic)\n" "Language: sr_SP\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: sr\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Сакриј ово обавештење" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ðе приказуј поново" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ðе приказуј поново" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Резиме ажурирања" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Резиме ажурирања" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "&Затвори" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Проблеми" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Датотека" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Линија" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Проблем" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Ðове линије текÑта" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Ðови Ñтрингови" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Уклоњене линије текÑта" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Уклоњене линије текÑта" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Прикупљање датотека Ñа изворним кодом…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Издвајање линија текÑта које је могуће превеÑти из %s датотеке…" msgstr[1] "Издвајање линија текÑта које је могуће превеÑти из %s датотеке…" msgstr[2] "Издвајање линија текÑта које је могуће превеÑти из %s датотека…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Ðије могуће учитати датотеку Ñа издвојеним преводима." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Датотека: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Изворни кôд је недоÑтупан." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Ðије могуће ажурирати преводе из изворног кода, јер није пронађен кôд на " "локацији која је наведена у ÑвојÑтвима датотеке." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Забрањен приÑтуп." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Ðемате дозволу за читање датотека Ñа изворним кодом на локацији која је " "наведена у ÑвојÑтвима датотеке." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Ðко Ñте раније забранили приÑтуп датотекама, то можете променити у System " "Settings → Privacy & Security → Files & Folders." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Ðко Ñте раније забранили приÑтуп датотекама, то можете променити у System " "Preferences → Security & Privacy → Privacy → Files & Folders." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Ðије уÑпело издвајање линија текÑта из изворног кôда." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Ðије могуће отворити датотеку „%sâ€." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Ðжурирање превода" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Упоређивање разлика…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Обједињавање разлика…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Датотека превода је већ ажурна, ниÑу начињене промене у линијама превода." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Ðове линије текÑта које је потребно превеÑти:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Уклоњене линије текÑта (више Ñе не кориÑте):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Прикажи детаље…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Прикажи детаље…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "ÐеиÑправан формат заглавља: „%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO датотеке превода" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT шаблони превода" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF датотеке превода" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode каталог локализације" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON датотеке превода" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter датотеке превода" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Све датотеке превода" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Датотека је у формату који Poedit не препознаје." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "Ова JSON датотека не Ñадржи преводе и не може Ñе уређивати у Poedit-у." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Дошло је до Ñледеће грешке при читању датотеке: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Датотека „%s†је доÑтупна Ñамо за читање и не може Ñе Ñачувати.\n" "Сачувајте је под другим именом." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Ðије могуће Ñачувати датотеку „%sâ€." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Снимци екрана:" #: src/catalog_po.cpp:134 #, 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[1] "%i реда у датотеци „%s†ниÑу иÑправно учитана." msgstr[2] "%i редова у датотеци „%s†није иÑправно учитано." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Ред %d у датотеци „%s†је оштећен (неважећи подаци у %s)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "PO датотека је оштећена: кориÑти Ñе msgstr за једнину уз msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "PO датотека је оштећена: кориÑти Ñе msgstr за множину без msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Ðије могуће учитати датотеку. Вероватно је оштећена." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Дошло је до грешака при учитавању датотеке. Због тога Ñу неки подаци " "изгубљени или оштећени." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Датотека је уÑпешно Ñачувана, иако је дошло до проблема при форматирању." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Ðије могуће Ñачувати датотеку у кодирању „%sâ€, како је наведено у " "подешавањима превода.\n" "\n" "Сачувана је у UTF-8 формату, а подешавање је измењено Ñходно томе." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Грешка при чувању датотеке" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "„%s†је неважећа POT датотека." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Ðеочекивано недоÑтаје Ñадржај из XCLOC датотеке." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Ðије подржано чување XCLOC датотеке на другу локацију." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Дошло је до грешке при учитавању XLIFF датотеке: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "неподржана верзија (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "ÐеиÑправна ознака у Ñтрингу за превод." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Повежите Poedit Ñа подржаним платформама у облаку за локализацију да биÑте Ñ " "лакоћом Ñинхронизовали преводе који Ñе налазе на њима." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Како функционише Ñинхронизација у облаку?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Ðалог" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(ниÑте пријављени)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Отвори превод из облака" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Управљај налозима" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Пројекат:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Језик:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Пријава на налог у облаку" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Пријава на налог у облаку" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Ðема преводилачких пројеката на вашем налогу." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Преузимање најновијих превода…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Пријавите Ñе у %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Синхронизација" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Отпремање превода на %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Отпремање превода на %s није уÑпело." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Грешка при Ñинхронизовању" #: src/commentdlg.cpp:48 msgid "Add" msgstr "&Додај" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Ðепозната грешка у Crowdin-у." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Ðемате овлашћења. Поново Ñе пријавите." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "ÐиÑу подржани Crowdin пројекти у којима Ñе преводе линије текÑта." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Преузимање превода из овог пројекта је онемогућено." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Пријавите Ñе" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Пријави ме" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Одјави ме" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Одјави ме" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Сазнајте више о Crowdin-у" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin је интернет платформа задужена за управљање преводима и алат за " "колаборативно превођење. И Ñами кориÑтимо Crowdin како биÑмо превели Poedit " "на многе језике и обожавамо га." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Чека Ñе потврда идентитета…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Ðжурирање информација о кориÑнику…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Пријава на Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Синхронизација Ñа Crowdin-ом није уÑпела." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Грешка у Crowdin-у" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Преводи Ñе отпремају…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Копирај" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Сазнајте више" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "По&моћ" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO датотеке Ñе не могу директно уређивати у Poedit-у." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Грешка при отварању датотеке" #: src/edapp.cpp:735 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 датотека." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "не бриши привремене датотеке (ради отклањања грешака)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "обрада URI адреÑе poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "иди на Ñтавку у наведеном реду" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Ðије могуће комуницирати Ñа Poedit-овим процеÑом." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Дошло је до неочекиваног изузетка: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Избор шаблона превода" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Ðеважећа датотека" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Избор датотеке превода" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit је једноÑтаван алат за превођење." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "У Poedit-ов прозор можете превући Ñамо једну датотеку." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "„%s†није датотека превода." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Датотека „%s†не поÑтоји." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Провера правопиÑа је онемогућена јер није инÑталиран речник за %s језик." #: src/edframe.cpp:871 msgid "Install" msgstr "ИнÑталирај" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Датотеку „%s†је променила друга апликација." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Поново учитај датотеку" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Желите ли да поново учитате датотеку Ñа диÑка? Тиме ћете изгубити Ñве " "неÑачуване промене у Poedit-у." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Занемари" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Поново учитај датотеку" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Датотека је измењена. Желите ли да Ñачувате промене?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Чување промена" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Изгубићете Ñве промене ако их не Ñачувате." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Сачувај" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Ðе чувај" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ðе чувај" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Ðко Ñачувате, промене које је направила друга апликација ће бити изгубљене." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "&Откажи" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Свеједно Ñачувај" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Свеједно Ñачувај" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Сачувај као…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Компајлирање у…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Компајлиране датотеке превода" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Извоз у HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML датотеке" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Извожење у HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Ðжурирање није уÑпело" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Отвори референтну датотеку" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Ð&журирај из POT датотеке…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Ð&журирај из POT датотеке…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Пронађен је %d проблем у преводу." msgstr[1] "Пронађена Ñу %d проблема у преводу." msgstr[2] "Пронађено је %d проблема у преводу." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Резултати провере ваљаноÑти" #: src/edframe.cpp:1842 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 "" "УноÑи Ñа грешкама Ñу означени црвеном бојом.\n" "Када изаберете такав уноÑ, приказаће Ñе детаљи о грешци." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Датотека је Ñачувана." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Датотека је Ñачувана и компајлирана у MO формат, али вероватно неће иÑправно " "радити." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Датотека је Ñачувана, али Ñе не може компајлирати у MO формат за даље " "коришћење." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Датотека је компајлирана у MO формат, али вероватно неће иÑправно радити." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Датотека Ñе не може компајлирати у MO формат за даље коришћење." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "ÐиÑу пронађени проблеми у преводу." #: src/edframe.cpp:1894 #, 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] "Превод је Ñпреман за коришћење, али %d ÑƒÐ½Ð¾Ñ Ñ˜Ð¾Ñˆ није преведен." msgstr[1] "Превод је Ñпреман за коришћење, али %d уноÑа још ниÑу преведена." msgstr[2] "Превод је Ñпреман за коришћење, али %d уноÑа још није преведено." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Спреман је за коришћење." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit је аутоматÑки иÑправио неважећи Ñадржај у датотеци „%sâ€." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Датотека је Ñадржала дупликате, што није дозвољено. Poedit је иÑправио " "проблем, али је пожељно да проверите и иÑправите Ñве преводе који Ñу " "означени за дораду." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Ðије наведен језик превода." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Изабери језик" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Изабери језик" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Предлози ниÑу доÑтупни ако није изабран језик превода. ИÑто важи и за " "множинÑке облике и друге функције." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Језик превода Ñе поклапа Ñа изворним језиком." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "ИÑправи језик" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "ИÑправи језик" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Ова датотека Ñадржи уноÑе Ñа множинÑким облицима, али јој недоÑтаје заглавље " "Ñа правилом за множину." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Број множинÑких облика у уноÑима Ñе разликује од онога што пише у заглављу " "датотеке" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "У заглављу недоÑтаје образац за множинÑке облике." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Синтактичка грешка у заглављу код обраÑца за множинÑке облике („%sâ€)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "ИÑправи заглавље" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "Правило за множинÑке облике које је наведено у датотеци није уобичајено за " "%s језик." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Прегледај" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Желите ли да енглеÑки буде изворни текÑÑ‚?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Ова датотека кориÑти идентификаторе умеÑто изворног текÑта. Poedit може да " "учита енглеÑки текÑÑ‚ из датотеке „%sâ€." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Учитај енглеÑки" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Преведено: %d од %d (%d%%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "ПреоÑтало: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d грешка" msgstr[1] "%d грешке" msgstr[2] "%d грешака" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d уноÑ" msgstr[1] "%d уноÑа" msgstr[2] "%d уноÑа" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (неÑачувано)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (измењено)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Ðије могуће ажурирати преводилачку меморију: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Ðије могуће Ñачивати датотеку „%sâ€." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Уклони преводе идентичне извору" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Желите ли да уклоните Ñве преводе које Ñу идентичне изводном текÑту?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Ова акција ће уклонити Ñве преводе који Ñе у потпуноÑти подударају Ñа " "изворним текÑтом. Ово није могуће опозвати." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "&Задржи" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Уклони" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Чишћење избриÑаних превода" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Желите ли да уклоните Ñве преводе који Ñе више не кориÑте?" #: src/edframe.cpp:2879 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 "" "Ðко наÑтавите, трајно ћете уклонити Ñве преводе означене као избриÑане. " "Мораћете да поново преведете Ñтрингове ако буду додати у будућноÑти." #: src/edframe.cpp:2883 msgid "Purge" msgstr "&Обриши" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Копирај из из&ворног текÑта" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Копирај из из&ворног текÑта" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Обри&ши превод" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Обри&ши превод" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Уреди коментар" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Уреди коментар" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Појављивања у коду" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Појављивања у коду" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Сакриј бочну траку" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Прикажи бочну траку" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Сакриј ÑтатуÑну траку" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "&СтатуÑна трака" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Дужина Ñтринга у знаковима: превод | извор" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Дужина Ñтринга у знаковима" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Изворни текÑÑ‚" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Једнина" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Множина" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Превод" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Прелиминарни превод" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Потребна дорада" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Потребна дорада" #: src/editing_area.cpp:566 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 датотеку према шаблону." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Ðаправи нови превод" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Ðаправите нови превод из POT датотеке." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID изворног текÑта" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Све" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Облик %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Облик %i (не кориÑти Ñе)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Ðула" #: src/editing_area.cpp:788 msgid "One" msgstr "Један" #: src/editing_area.cpp:790 msgid "Two" msgstr "Два" #: src/editing_area.cpp:804 msgid "Other" msgstr "Друго" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "КонтекÑÑ‚ Ñтринга: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Идентификатор Ñтринга: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s формат" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s формат" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Превод – %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Изворни текÑÑ‚ – %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "непознат језик" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Грешка на мрежи: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Ðепозната грешка" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Ðије могуће објединити gettext каталоге." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Отвори у уређивачу" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Отвори у уређивачу" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "У датотеци није наведена информација о појављивањима овог Ñтринга у изворном " "коду." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Ðема информација о коришћењу" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d појављивање у коду" msgstr[1] "%d појављивања у коду" msgstr[2] "%d појављивања у коду" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Изворни кôд није пронађен" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit не може да прикаже изворни кôд у ком Ñе Ñтринг кориÑти, јер датотека " "није доÑтупна на наведеној локацији или Ñе ради о Ñимболичкој референци која " "не упућује на Ñтварну датотеку." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Ðије могуће отворити датотеку" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit не може да отвори датотеку „%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Пронађи" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Замени" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Опције" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ðе разликуј велика и мала Ñлова" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Тражи укруг" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Само целе речи" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Изворни текÑÑ‚" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Преводи" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Коментари" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "З&амени Ñве" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "З&амени Ñве" #: src/findframe.cpp:150 msgid "&Replace" msgstr "За&мени" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Претходно" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Следеће >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Стринг за претрагу" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Стринг за замену" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "упозорење: " #: src/gexecute.cpp:171 msgid "error: " msgstr "грешка: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Ðазив или кôд језика" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Језик превода" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Језик превода:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Сви Ñтрингови" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Ðије могуће преузети податке о пројекту на Localazy-ју." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Дошло је до грешке при отпремању превода на Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Пројекти" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Сазнајте више о уÑлузи %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy је платформа за локализацију Ñа виÑоким нивоом аутоматизације која " "Ñвакоме омогућава да једноÑтавно преведе Ñвоје производе и Ñадржај на више " "језика." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Додај пројекат" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Додај пројекат" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit – менаџер каталога" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Уреди…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Ðаправи нови преводилачки пројекат" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Избриши пројекат" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Уреди пројекат" #: src/manager.cpp:176 msgid "Update all" msgstr "Ð&журирај Ñве" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Ðжурирај Ñве каталоге у пројекту" #: src/manager.cpp:378 msgid "Total" msgstr "Укупно" #: src/manager.cpp:379 msgid "Untrans" msgstr "Ðепреведено" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Потребна дорада" #: src/manager.cpp:381 msgid "Errors" msgstr "Грешке" #: src/manager.cpp:382 msgid "Last modified" msgstr "ПоÑледња измена" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Избор фолдера" #: src/manager.cpp:433 msgid "Directories:" msgstr "Фолдери:" #: src/manager.cpp:503 msgid "" msgstr "<неименован>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Желите ли да избришете пројекат „%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Избриши пројекат" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "БриÑањем пројекта нећете избриÑати датотеке превода." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Потврда" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Желите ли да ажурирате Ñве каталоге у овом пројекту?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Ðжурираћете Ñве датотеке у пројекту из изворног кода." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Ðжурирање каталога пројекта" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Провери д&а ли поÑтоје иÑправке…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Менаџер каталога" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Подешавања…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Уређивање" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Опозови" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Понови" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Ðалепи и уÑклади Ñтил" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "&Избриши" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "ÐŸÑ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð¸ граматика" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Прикажи Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð¸ граматику" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Одмах провери документ" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Проверавај Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ñ‚Ð¾ÐºÐ¾Ð¼ куцања" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Провера граматике Ñа правопиÑом" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "ÐутоматÑки иÑправи правопиÑ" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Замене" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Прикажи замене" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Паметно копирање/налепљивање" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Паметни наводници" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Паметне црте" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Паметни линкови" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Замена текÑта" #: src/menus.cpp:230 msgid "Transformations" msgstr "ТранÑформације" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Претвори у велика Ñлова" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Претвори у мала Ñлова" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Претвори у велика почетна Ñлова" #: src/menus.cpp:237 msgid "Speech" msgstr "Говор" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Покрени говор" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "ЗауÑтави говор" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Приказ" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Прикажи траку Ñа алаткама" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Прилагоди траку Ñа алаткама…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Пређи у режим целог екрана" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Прозор" #: src/menus.cpp:263 msgid "Minimize" msgstr "Умањи" #: src/menus.cpp:264 msgid "Zoom" msgstr "Зум" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Добро дошли у Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "ПоÑтави Ñве у предњи план" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Информације о преводиоцу" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Име:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Ваше име" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "&Имејл:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "adresa@domen.rs" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ваше име и имејл-адреÑа Ñе кориÑте Ñамо при поÑтављању поÑледњег преводиоца " "у заглављу GNU gettext датотека." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Уређивање" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "ÐутоматÑки компајлирај MO датотеку при чувању" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Проверавај правопиÑ" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Увек пребаци Ñ„Ð¾ÐºÑƒÑ Ð½Ð° поље за ÑƒÐ½Ð¾Ñ Ñ‚ÐµÐºÑта" #: src/prefsdlg.cpp:211 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 "" "Ðе дозвољава да лиÑта Ñтрингова заузме фокуÑ. Ðко је омогућено, морате да " "кориÑтите Ctrl и Ñтрелице за навигацију. ТекÑÑ‚ можете да уноÑите директно у " "поље а да не притиÑкате Tab за промену фокуÑа." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Изглед" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Фонт за лиÑту:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Фонт за текÑтуална поља:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Промените језик интерфејÑа" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(потребан је Windows 8 или новији)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Опште" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "КориÑти преводилачку меморију" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Управљај…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "При ажурирању из изворног кода" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "кориÑти Ñличне преводе из датотеке" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "преведи помоћу преводилачке меморије" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit може покушати да попуни нове уноÑе Ñамо из претходних превода у " "датотеци или из читаве преводилачке меморије. Употреба преводилачке меморије " "неће имати много учинка ако је Ñлабо попуњена, али ће бити Ñве боља како " "додајете нове преводе." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Сачуваних превода:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Величина базе на диÑку:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Увези датотеке превода…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Увези датотеке превода…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Увези из TMX-а…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Увези из TMX-а…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Извези у TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Извези у TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Поништи" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Избор датотеке превода за увоз" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Избор ТМХ датотека за увоз" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX датотеке" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Увоз превода…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Ðије уÑпео увоз преводилачке меморије." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Увоз из „%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "Увезен је %s превод." msgstr[1] "Увезена Ñу %s превода." msgstr[2] "Увезено је %s превода." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Извези као…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Извоз превода…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Извоз преводилачке меморије у „%s†није уÑпео." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "РеÑетовање преводилачке меморије" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Желите ли заиÑта да реÑетујете преводилачку меморију?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "ОбриÑаћете Ñве преводе у преводилачкој меморији. Ова радња је неповратна." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "Меморија" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Преводилачка меморија" #: src/prefsdlg.cpp:730 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 "" "Издвајачи Ñе кориÑте за проналажење и издвајање Ñтрингова за превод у " "датотекама изворног кода." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Прилагођени издвајачи:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Прилагођени издвајачи:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Подржава Ñве програмÑке језике које препознају GNU gettext алатке (PHP, C/C+" "+, C#, Python, Java, JavaScript и друге)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Избриши издвајач" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Желите ли заиÑта да избришете издвајач „%sâ€?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Издвајачи" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Ðалози" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "ÐутоматÑки тражи ажурирања" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Укључи бета верзије" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Бета верзије Ñадрже најновије функције и побољшања, али могу бити мање " "Ñтабилне." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Ðжурирања" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Ова подешавања утичу на форматирање PO датотека. Прилагодите их Ñвојим " "потребама, нпр. ако кориÑтите ÑиÑтем за управљање изворним кодом." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Завршеци редова:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (препоручено)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Прелом:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Очувај форматирање поÑтојећих датотека" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Ðапредно" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "ПоÑтавке" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Припрема Ñтрингова…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Прелиминарно превођење помоћу преводилачке меморије…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Прелиминарно је преведен %u Ñтринг" msgstr[1] "Прелиминарно Ñу преведена %u Ñтринга" msgstr[2] "Прелиминарно је преведено %u Ñтрингова" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Прелиминарно превођење…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "Прелиминарно је преведен %d уноÑ." msgstr[1] "Прелиминарно Ñу преведена %d уноÑа." msgstr[2] "Прелиминарно је преведено %d уноÑа." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "Преводи Ñу означени за дораду. Проверите њихову иÑправноÑÑ‚." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Идентична подударања Ñа преводилачком меморијом" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Приближна подударања Ñа преводилачком меморијом" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Ðиједан ÑƒÐ½Ð¾Ñ Ñе не може прелиминарно превеÑти." #: src/pretranslate.cpp:218 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 научи довољно из датотека које Ñте ручно превели." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Ðије могуће прелиминарно превеÑти без изворног текÑта." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Прелиминарни превод" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "За прелиминарни превод је потребан изворни текÑÑ‚. Ова функција неће радити " "Ñамо Ñа идентификаторима." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Ðије могуће прелиминарно превеÑти Ñа непознатог језика." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Да биÑте кориÑтили прелиминарни превод потребно је да изворни језик буде " "познат. Poedit га није препознао у овој датотеци." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Само потпуна подударања" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Подразумевано Ñе приказују и приближни резултати, али Ñу означени да им је " "потребна дорада. Означите ову опцију како би Ñе приказивала Ñамо потпуна " "подударања." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Потпуна подударања не означавај за дораду" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Укључите ову опцију Ñамо ако Ñте Ñигурни у квалитет ваше преводилачке " "меморије. Подразумевано Ñе Ñвим подударањима додељује ознака „потребна " "дорада†и такве Ñтрингове би требало проверити." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Прелиминарни превод аутоматÑки проналази потпуна или приближна подударања за " "непреведене Ñтрингове у преводилачкој меморији и попуњава њихове преводе." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Грешка: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "Дошло је до %d грешке:" msgstr[1] "Дошло је до %d грешке:" msgstr[2] "Дошло је до %d грешака:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Дошло је до грешке." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "Дошло је до %d грешке." msgstr[1] "Дошло је до %d грешке." msgstr[2] "Дошло је до %d грешака." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Отказивање…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Овде превуците фолдере или датотеке" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Овде превуците фолдере или датотеке" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Додај фолдере…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Додај фолдере…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Додај датотеке…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Додај датотеке…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Додај заменÑки знак…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Додај заменÑки знак…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Прикажи у Finder-у" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Прикажи у Explorer-у" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Прикажи у фолдеру" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Путање" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Изузете путање" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Ðапредна подешавања издвајања" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Издвој напомене преводиоцима:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Из коментара који почињу Ñа:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Из Ñвих коментара" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Додатне xgettext ознаке:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Додатне кључне речи" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Ðазив пројекта за који је намењен превод" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Ðазив групе и имејл-адреÑа или URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "нпр. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (препоручује Ñе)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Прво Ñачувајте датотеку. Овај одељак Ñе не може уређивати док то не урадите." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "ИÑправноÑÑ‚ чувара меÑта" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "У преводу недоÑтаје чувар меÑта „%sâ€." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Ðепотребан чувар меÑта „%s†који не поÑтоји у изворном текÑту." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Преводи множинÑких облика" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "ÐиÑу Ñви множинÑки облици преведени." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "ÐедоÑледноÑÑ‚ при употреби великих и малих Ñлова" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Превод мора почињати великим Ñловом." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Превод мора почињати малим Ñловом." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "ÐедоÑледноÑÑ‚ при употреби размака" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Превод не почиње размаком." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Превод почиње размаком, али изворни текÑÑ‚ не." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "У преводу недоÑтаје нови ред на крају." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Превод Ñе завршава новим редом, али изворни текÑÑ‚ не." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "У преводу недоÑтаје размак на крају." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Превод Ñе завршава размаком, али изворни текÑÑ‚ не." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Провере интерпункције" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Превод Ñе мора завршавати знаком „%sâ€." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Превод Ñе не Ñме завршавати знаком „%sâ€." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Превод Ñе завршава знаком „%sâ€, а изворни текÑÑ‚ знаком „%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Облак" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Обриши лиÑту" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Обриши лиÑту" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Коментар:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Ðжурирај" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "Из&бриши" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Избриши коментар" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Уређивање пројекта" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Ðазив пројекта:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "&Потражи" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Додајте фолдер на лиÑту" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "&У реду" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Датотека" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Ðово…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Ðо&во из POT/PO датотеке…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Ðо&во из POT/PO датотеке…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Отвори…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Отвори &недавне" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Отвори &недавне" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Отвори превод из облака…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Отвори превод из облака…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Уводни прозор" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Уводни прозор" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Менаџер каталога" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Менаџер каталога" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Затвори" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Сачувај" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Сачувај &као…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Сачувај &као…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Ко&мпајлирај у MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "И&звоз у HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Потр&ажи ажурирања…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Подешавања…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Подешавања" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Изађи" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Изађи" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Копирај из &једнине" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Копирај из &једнине" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Означи превод за &дораду" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Означи превод за &дораду" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Уреди ко&ментар" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Уреди ко&ментар" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Предлози" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "П&ронађи…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "&Замени…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Пронађи &Ñледеће" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Пронађи пр&етходно" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Пронађи и замени…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Пронађи &Ñледеће" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Пронађи пр&етходно" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "ID &Ñтринга" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "ID &Ñтринга" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "&Упозорења" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "&Упозорења" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Сортирај као у &датотеци" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Сортирај као у &датотеци" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Сортирај према &изворном текÑту" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Сортирај према &изворном текÑту" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Сортирај према п&реводу" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Сортирај према п&реводу" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Групиши по контекÑту" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Групиши по контекÑту" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Прво уноÑи Ñа грешкама" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Прво уноÑи Ñа грешкама" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Прво &непреведени уноÑи" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Прво &непреведени уноÑи" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "Појављивања у &коду" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "Појављивања у &коду" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Прикажи бочну траку" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "&СтатуÑна трака" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "П&ревод" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Ðжурирај из изворног кода" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Ðжурирај из изворног кода" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "&Синхронизуј Ñа Crowdin-ом" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "&Прелиминарни превод…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "П&ровери ваљаноÑÑ‚ превода" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "П&ровери ваљаноÑÑ‚ превода" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Уклони преводе идентичне извору" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&ОчиÑти избриÑане преводе" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&ОчиÑти избриÑане преводе" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "С&војÑтва…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Ðавигација" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Заврши и наÑтави" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Заврши и наÑтави" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Претходна &измена" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Претходна &измена" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Претходни превод" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Претходни превод" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Следећи превод" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Следећи превод" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "П&ретходни недовршени" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "П&ретходни недовршени" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "С&ледећи недовршени" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "С&ледећи недовршени" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Пр&етходни множинÑки облик" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Пр&етходни множинÑки облик" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Сле&дећи множинÑки облик" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Сле&дећи множинÑки облик" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "О&нлајн помоћ" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "О&нлајн помоћ" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "П&риручник за GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "П&риручник за GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&О Poedit-у" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&О програму" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Подешавање издвајача" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "ЛиÑта екÑтензија раздвојених тачка-зарезом (нпр. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Позивање:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Команда за издвајање превода:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ова команда покреће издвајач.\n" "%o – назив излазне датотеке,\n" "%K – лиÑта кључних речи,\n" "%F – лиÑта улазних датотека,\n" "%C – кодирање (в. иÑпод)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Ставка у лиÑти кључних речи:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Ово ће бити додато у командну линију за Ñваку кључну реч.\n" "Параметар %k означава кључну реч." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Ставка у лиÑти улазних датотека:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Ово ће бити додато у командну линију за Ñваку улазну датотеку.\n" "Параметар %f означава назив датотеке." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Кодирање изворног кода:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Ово ће бити додато у командну линију Ñамо ако је наведено кодирање изворног " "кода.\n" "Параметар %c означава кодирање." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "СвојÑтва превода" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Ðазив и верзија пројекта:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Тим преводилаца:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "МножинÑки облици:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "&Подразумевана правила за овај језик" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Прилагођени израз" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Сазнајте више о множинÑким облицима" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Кодирање:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Ðапредна подешавања издвајања…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Ðапредна подешавања издвајања…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "СвојÑтва превода" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Путање до изворних датотека" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Путање до изворних датотека" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Издвој текÑÑ‚ из изворних датотека у Ñледеће фолдере:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "ОÑновна путања:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Кључне речи изворних датотека" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Кључне речи изворних датотека" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Тражи Ñтрингове за превод у изворним датотекама према овим кључним речима " "(називима функција):" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "КориÑти и подразумеване кључне речи за подржане језике" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Сазнајте више о кључним речима gettext-а" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Отвори датотеку" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Сачувај датотеку" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Провери ваљаноÑÑ‚" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Провери да ли има грешака у преводу" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Ðжурирај из кода" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Ðжурирај из кода" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Ðжурирај из изворног кода" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Бочна трака" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Прикажи или Ñакриј бочну траку" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Претходни изворни текÑÑ‚" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "Стари изворни текÑÑ‚ (до ажурирања) који одговара нетачном преводу." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Ðапомене преводиоцима" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Коментар" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Додај коментар" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Додај коментар" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Избриши из преводилачке меморије" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Избриши из преводилачке меморије" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Предложени преводи" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Ðема резултата" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Ðема резултата" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Овај Ñтринг је пронађен у Poedit-овој преводилачкој меморији." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "За предложене преводе је потребан изворни текÑÑ‚. Ова функција неће радити " "Ñамо Ñа идентификаторима." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Да биÑте кориÑтили предлоге превода потребно је да изворни језик буде " "познат. Poedit га није препознао у овој датотеци." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Ðије могуће извршити програм: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "ÐеиÑправан формат TMX датотеке." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "База података преводилачке меморије је оштећена: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Грешка у преводилачкој меморији: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(подразумевани језик)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Избор језика" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Изаберите жељени језик" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "" "Потребно је да поново покренете Poedit како би ова измена Ñтупила на Ñнагу." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Ðије могуће направити привремени фолдер." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Ðема уноÑа. То је необично." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Сазнајте више о GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "ÐајједноÑтавнији начин да попуните ову датотеку преводима јеÑте да је " "ажурирате помоћу POT датотеке:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Ðжурирај помоћу POT датотеке" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Преузмите Ñтрингове за превод из поÑтојећег POT шаблона." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Стрингове за превод можете да издвојите и директно из изворног кода:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Издвој из изворног кода" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "ПодеÑите издвајање из изворног кода у ÑвојÑтвима." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Верзија %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Ðаправи нови" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Ðаправите нови превод помоћу POT шаблона." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Прегледај датотеке" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Отворите и уређујте датотеке превода." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Преведите пројекат у облаку" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Сарађујте Ñа другима онлајн." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Ðедавне датотеке" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Синхронизуј" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Синхронизуј превод Ñа Crowdin-ом" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "О %s-у" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Подешавања %s-а" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "ОÑновни подаци о %s апликацији" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "УÑлуге" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Сакриј %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Сакриј друге" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Прикажи Ñве" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Изађи из %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Подешавања…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Подешавања…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "ПоÑтавке..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Примени" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Примени" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Ðазад" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Ðазад" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Откажи" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Обриши" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Обриши" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Копирај" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&ИÑеци" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "ИÑеци" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Уреди" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Изађи" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Помоћ" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Ðово" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "&Ðово" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Ðе" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ðе" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&У реду" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Отвори…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Отвори…" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Отвори…" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Ðалепи" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Ðалепи" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Подешавања" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Понови" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "ОÑвежи" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Сачувај као" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Сачувај као" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Изабери &Ñве" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Изабери Ñве" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Опозови" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Да" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Да" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Горе" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Доле" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Лево" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "ДеÑно" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Упозорење: " poedit-3.6.3/locales/nb.mo0000644000175100001660000015440015011674364011062 Þ• ‹*H8 I8 U8&`8‡8<›8Ø8Jë8g69 ž9¨9 ·9Á9 È9Ö9Ý9ã9ë9ò9ù9ÿ9::%:+:1:::N:b:f:x:Š::•::¥:·:É:Í: Ñ: Þ:ë:ô:ý: ;;!;7;M;\;x;”;š; ;©;¯;¸;Ï; æ; ô; <<<1<M<f<<–<­<³<¸<Ï<ß< ý< ===$=-= 1= ==J= Y=e= u== ›=¨= ·=Ã=Ó=ç=> >+>H>h> ~> ‹>1—>'É>ñ>? (?3?79?6q?¨?)È?ò? ÷?]@`@<s@D°@$õ@A !A€.A¯A ¶A"ÄAçA+B).B XBcBuB‡B˜B«B´BÇBãBÿB#C8CMC\C bCmC CŠCœC¢C¨C¹C%ÊCðC D,D4D=DUD fDtD/D ¿DkÌD8E=EPEfEyEE-®E1ÜEF 'F2F)IFsF “F¡F¦F¹FÌFáFåFüFG"G3GRGaGtG;‡G ÃG'ÐG^øGLWH?¤H äH òHÿH*I=I"PI5sI©IÄIßIåIøI ýI J J &J 3J@JQJYJaJhJfzJáJûJuK‹KžK"°KÓK ÚKåKôK LL$L05LfL€L#•L<¹LöL M*M0ZMZ \ZhZpZxZ€Z†Z›Z°ZÅZßZp[v[Œ[=’[Ð[1ã[\n.\E\ã\ê\;] ?]M]T]@n]õ¯]¿¥^,e_,’_¿_ Ñ_ß_2î_*!`L`Ž_`wî`jfa ÑaÝaìaûa%b6bKb`bub‡b™b ³bÁbÊbÓbæbìbc8 c EcRcWc _c kc wc…c"Œc"¯cÒc Úc çcôc d(d;dAdzZdÕdædíd òd þd e e"e *e 5e Be Le Ye eepe‹eœe"´e×eóe f f,f 5f AfNfhfxfˆf ›f ¨f¶fÇfÖf ïfüf g g*g2g:gCg KgYgrg…gžg§g°g Ág Îg Úgçgûg h h4hDhYh†nhõhi &i2iAiTi eisi „i’iK™iåiúi jj,j?jUj1qj£j ²j ÀjŽÌj=[k™kll(0lYl alol+Œl¸l »l8Ål"þl!mÂ2mõmCn8TnînŸ|o8p1UpR‡pcÚpQ>qq'«q:ÓqlrP{r-ÌrCúrA>sK€s0Ìs.ýsŽ,t!»t)Ýt-u+5u8auCšuuÞu,TvLv;Îv] w…hwJîwc9x[xoùx«iy7zmMz_»z[{w{}{{¥{ Â{Î{ã{ö{|2%|"X|{|“|ª|~Â|qA}³}ˆÆ}O~S~g~ l~~ ~ ·~Å~Í~ Ô~"ß~$'@Yjz‹£²ºÊà$ý"€B€\€r€ˆ€#¥€VÉ€ 7@ S^|Ž©ºÁ.É ø‚ ‚%‚H)‚5r‚m¨‚7ƒ Nƒ3XƒaŒƒîƒóƒøƒ.„ D„e„„¡„¸„ʄ݄…'…;…K…\…n……š…²…Î…í…††7†M†^†w†!‡†±©† [ˆeˆ#tˆ˜ˆM¶ˆ‰K‰d`‰ ʼnω Þ‰è‰ ë‰ö‰û‰Š ŠŠŠ Š'Š9ŠJŠSŠXŠaŠ|Š—ŠœŠµŠΊÕŠÙŠ àŠëŠÿŠ‹‹‹+‹ :‹ E‹O‹X‹g‹y‹‹¨‹·‹Ô‹ò‹ û‹ŒŒ Œ Œ:Œ OŒ ZŒ eŒsŒzŒ”Œ®ŒÆŒÞŒõŒ +<[ jv|‚Š“¦¸ËÝóŽŽ/ŽBŽTŽjŽyŽ•Ž+žŽ!ÊŽ+ìŽ0 A4O+„%°#Öú2 =?!}(ŸÈ ÐcÛ?‘=N‘:Œ‘*Ç‘ ò‘ÿ‘’’¤’ ¬’&¸’ß’1û’,-“Z“j“|““!¡“ ÓГ'å“ ”+”E”b” |” ‡”‘” ”²”Á”Ó” Ø”ã”ô”"•+•'@• h• r•}•›•®•¾•-Ü• –h––†–˜–®–À–Ö–3õ–4)—^—w—~—*–—Á— à— í—÷—˜)˜B˜K˜i˜o˜Œ˜˜º˜ɘÛ˜7ê˜"™"*™LM™Cš™8Þ™ š #š.š/=šmš"|š=ŸšÝšøš››2›;›N›a›s›…›–› §› ²›½›Å›oØ›Hœeœq‚œôœ!(JOSez‹¡2¶éž$ž4=žržƒž,Œž$¹ž)Þž+Ÿ4Ÿ8ŸNŸ)hŸ\’ŸïŸ ôŸ ÿŸ   2 F  [  f s ƒ “ ¤ µ РØ  í ù  ¡ ¡¡%¡7¡#M¡q¡Žt¡—¢Š›¢&£.£K£_£~£’£±£Í£Õ£ ì£ ¤%¤ A¤ K¤W¤_¤w¤~¤0•¤"Ƥé¤ ¥ ¥¥ #¥/¥H¥`¥i¥x¥5Œ¥Â¥AÕ¥¦(¦-¶¦ä¦§*§H§b§ s§§™§*¡§̧Ò§á§ð§ÿ§¨¥%¨˨Ϩå¨ û¨©©/©3©.F©Mu©é)Ö©:ª;ª'Rª*zª¥ª½ªÁªŸÄªd«« š«$¨«Í«ã« ü«¬!¬ <¬J¬S¬ \¬i¬o¬¬“¬©¬À¬N­V­n­?t­´­-Æ­ô­l ®;w®³®¼®=Ø®¯'¯.¯<I¯†¯º°IJ±'”±¼±Ò±å±Gø±.@²o²ª‡²p2³n£³ ´ ´/´@´+W´ƒ´™´¯´Ä´Õ´è´ µ µ µ&µ:µ@µ]µ<eµ ¢µ¯µ ¸µµص ðµþµ+¶#0¶T¶ \¶ j¶x¶ ж(•¶ ¾¶˶€ë¶ l· y·…· ‹· ™· §· µ· ÷ Í·Ú· ê· ö· ¸ ¸¸ 8¸C¸+Y¸…¸›¸ ³¸ ¿¸ ˸Ù¸ê¸ú¸¹*¹9¹J¹ \¹j¹ z¹†¹¢¹²¹¹ ѹ ß¹é¹ò¹ú¹ºº)º>ºTº\ºcº {º ‰º–ºŸº¼ºк뺻»7»{J»Æ»æ» ý»¼¼+¼ <¼G¼ Y¼d¼Fi¼°¼̼ݼí¼½½.½-B½p½ ‰½–½Žž½<-¾†j¾ ñ¾ý¾%¿ ;¿I¿%a¿+‡¿³¿ ¶¿5À¿*ö¿!À©1ÀÛÀH÷À6@ÁåwÁ]Â0ëÂ:ÃKWÃ[£ÃLÿÃLÄdÄ2„Äv·Ä^.Å,Å@ºÅDûÅB@Æ+ƒÆ/¯Æ‹ßÆkÇ$‹Ç)°Ç+ÚÇ1ÈH8ȈÈ/ ÉS:É<ŽÉYËÉ%ÊL¶ÊmËbqËuÔËÂJÌ7 ÍpEÍ]¶ÍcÎxÎÎΥΠÀÎÍÎâÎõÎÏ/+Ï [Ï|Ϛ϶ÏqËÏr=аÐqÄÐ6Ñ9ÑKÑQÑoÑ€Ñ ™Ñ¥Ñ·Ñ ÀÑ%ÎÑ+ôÑ Ò9ÒRÒfÒwÒ‹Ò ¢Ò ­Ò»ÒÑÒêÒ- Ó"8Ó[ÓwÓ"’Ó'µÓ&ÝÓ^ÔcÔ{ÔƒÔ —Ô¢Ô¾ÔÓÔ îÔüÔÕ$ Õ /Õ :ÕEÕ^Õ@aÕ5¢Õ[ØÕF4Ö {Ö4…ÖƒºÖ>×C×H×/W×'‡×¯×&Â×é×ØØØØØ Ø'Ø.Ø2Ø6Ø;ØAØGØ PØ\Ø kØ vØ€Ø‰Ø £Ø±ØÎØ!ÞØÓ¢hå` »•ŠðQ@/Ä{j @È׋ËïBxÖ“eïe|”3é4‘µi-l‰²Y™/fHÎã%cš*^r#pÝŸ»²g‹Ê-!…œÑ7yÛa/ÿ‡lùC™hDøo†W€^•ŒàKá ƒÜByV‚@¢?%æÁàטڌ'2#zm p³nVJOŒ§&œR–þ ÙÍËÉŽç’„ä¤w^¯;9üj«M8) uýíj5qè÷¼ k;{b¤<9ƒ~cX6ðö‹…¹núfdT§<‰âS01Ó, N¬wW†X¼—çC.¡]É ë—‘ ·Òœ›|<Å–iî®›°òÈ}: ¥uØ`ytF¸5)“ÿ±[ [Sl°b3TÔ´³o…$ÍU]zô*)¹ãÆV'â0ÀhoN£SŠÎ¦K¥ép ›YE‡?>RP†Ž4õ1 ´!áe½¶!—?\Pì"î_=.QDÑŠÏì3ÐÂø:sW‡ÃÅ€\ßåRP|v#F2š1T>Ax x'GB“=Ì.`F$®H¿Eq,ÜU¬Aý5­IMqZ%6&LÔäÙ=dÁþæNž((_„Âê©ÄßQZAˆ ¦uÇÕÚ}c€DªXƒ˜êµ‚¾v¨4ÖY¸Cë \Ÿˆ(m’IvZOg™šGwñóõÌ ~9•ñHmó”’À£üº{ŸLíò:¨"Þ÷J +«]gž­è‘}_úk¯"ÒùºÝz86·ÃO7kö¡M0[½Ûs‚;iKŽØs-©7Ær+~ÊÕEa±¿žUǘ Þ8Lt&aI,Ï2d¾‰*ª>Gû¶nôfr„tˆ+JbÐû”$– (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Norwegian Bokmal Language: nb_NO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: nb X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (endret) (ikke lagret)%d kodeforekomst%d kodeforekomster%d oppføring%d oppføringer%d oppføring ble forhÃ¥nds-oversatt.%d oppføringer ble forhÃ¥nds-oversatt.%d feil%d feil%d problem med oversettelsen funnet.%d problemer med oversettelsen funnet.%i linje i fil «%s» ble ikke riktig lastet inn.%i linjer i fil «%s» ble ikke riktig lastet inn.%s-format%s preferanser%s-formatOm&Om PoeditBrukTil&bakeAvbrytTøm&AvsluttKopier&Slett&Utført og nesteUtført og neste&Rediger&Fil&Søk…&GNU gettext-dokumentasjon&GNU gettext-dokumentasjon&GÃ¥&Sorter etter sammenheng&Sorter etter sammenheng&Hjelp&Ny&Ny…&Neste →&Neste oversettelse&Neste oversettelse&Nei&OKHjelp pÃ¥ nettHjelp pÃ¥ nett&Ã…pne ...&Ã…pne…&Lim inn&Innstillinger&Innstillinger…Tidligere oversettelse&Tidligere oversettelse&Egenskaper…Fjern slettede oversettelser&Fjern slettede oversettelser&AvsluttGjø&r om&ErstattLa&greLagre &som&Vis Kodetime-forekomster&Vis kodeforekomster&Startmeny&Startmeny&Oversettelse&Angre&Uoversatte poster først&Uoversatte poster først&Oppdater fra kildekode&Oppdater fra kildekode&Valider oversettelser&Valider oversettelser&VisJa(Bruk standard sprÃ¥k)(ikke pÃ¥logget)(krever Windows 8 eller nyere)↠&TidligereOm %sKontoKontoerLegg tilLegg til kommentarLegg til filer…Legg til mapper…Legg til prosjektLegg til jokertegn…Legg til kommentarLegg katalog til listaLegg til filer…Legg til mapper…Legg til prosjektLegg til jokertegn…Flere søkeordYtterligere xgettext-flagg:AvansertAvanserte innstillinger for eksportering…Avanserte utvinningsinnstillingerAvanserte innstillinger for eksportering…Alle oversettelsesfilerAlle kommentarerAlle strengerBruk forvalgte nøkkelord ogsÃ¥ for støttede sprÃ¥k&Fokuser automatisk pÃ¥ oversettelsesfeltetEt element i lista over inndatafiler:Et element i lista over nøkkelord:UtseendeLegg tilEr du sikker pÃ¥ at du vil slette "%s" ekstraktor?Er du sikker pÃ¥ at du vil tilbakestille oversettelsesminnet?Automatisk se etter oppdateringerAutomatisk kompiler MO-filen ved lagringTilbake&Grunnsti:Beta-versjoner inneholder de nyeste funksjonene og forbedringene, men kan være litt mindre stabil.Plasser fremstØdelagt PO-fil: flertallsform msgstr brukt uten msgid_pluralØdelagt PO-fil: entallsform msgstr brukt med msgid_pluralØdelagt merking i oversettelses-strengen.Bla &gjennomBla gjennom filerSom standard er ogsÃ¥ unøyaktige resultater inkludert, men markert som «trenger arbeid». Kryss av her for Ã¥ kun inkludere perfekte resultater.&AvbrytAvbryter…Kan ikke opprette midlertidig katalog.Kan ikke kjøre program: %sKan ikke forhÃ¥ndsoversette fra et ukjent sprÃ¥k.Kan ikke forhÃ¥ndsoversette uten kildetekst.Stor forbokstavKatalog&behandlerKatalog&hÃ¥ndtererKatalogbehandlingSett sprÃ¥k for brukergrensesnitt&Tegnkoding:Sjekk dokumentet nÃ¥Kontroller grammatikk i stavekontrollenStavekontroll mens du skriverSe etter oppdateringer…Se etter feil i oversettelseSe etter oppdateringer…StavesjekkKlargjørNullstill menyTøm oversettelseNullstill menyTøm oversettelseLukkSkylagringKode forekomsterForekomster av kodeSamarbeid med andre pÃ¥ internett.Samler kildefiler…Kommando for Ã¥ pakke ut oversettelser:KommentarKommentar:Kommentarer som innledes med:Kompiler til MO…Kompiler til…Kompilerte oversettelsesfilerKonfigurer kildekodeutvinningen i Egenskaper.BekreftelseKoble Poedit til støttede lokaliserings-platformer i skyen for Ã¥ synkronisere oversettelser sømløst.KopierKopier fra entallKopier fra kildetekstKopier fra entallKopier fra kildetekstKorrigere stavefeil automatiskKunne ikke laste ned prosjektdetaljer fra Localazy.Kunne ikke laste filen. Den er sannsynligvis skadet.Kunne ikke lagre fil %s.Lag nyOpprett ny oversettelseLag en ny oversettelse ut i fra en POT-malLag nytt oversettelsesprosjektCrowdin-feilKlipp &utEgendefinerte utpakkere:Egendefinerte utpakkere:Tilpass verktøylinje...Klipp utDatabasestørrelsen pÃ¥ disk:SlettSlett fra oversettelsesminneSlett ekstraktorSlett fra oversettelsesminneSlett prosjektSlett kommentarenSlett prosjektSlette prosjektet vil ingen oversettelsesfiler slettes.Mapper:Vil du slette prosjektet “%sâ€?Vil du laste inn filen fra disken? Ulagrede endringer i Poedit vil gÃ¥ tapt.Vil du fjerne alle oversettelser som er identiske med kildeteksten?Vil du fjerne alle oversettelser som ikke lenger brukes?Ik&ke lagreIkke lagreIkke vis igjenIkke marker nøyaktige treff som Trenger arbeidIkke vis igjenLaster ned nyeste oversettelser…Nedlasting av oversettelser er deaktivert i dette prosjektet.Dra mapper eller filer hitDra mapper eller filer hitAvsluttE&ksporter til HTML…&RedigerRediger &kommentar&Rediger kommentarRediger kommentarRediger kommentarRediger prosjektRediger prosjektRedigeringRediger…E-post:GÃ¥ til fullskjermOppføringer i denne filen har forskjellige antall flertallsformer enn spesifisert i filens Plural-Forms headerOppføringer med feil førstOppføringer med feil førstOppføringer med feil ble markert med rødt i listen. Detaljer om feilen vises nÃ¥r du velger en slik oppføring.Feil under Ã¥pning av filenFeil ved lagring av filFeil ved lasting av XLIFF-fil: %sFeilAltEkskluderte banerEksporter til TMX…Eksporter som…Eksporter til HTML…Eksporter til TMX…Kunne ikke eksportere oversettelsesminne til "%s".Eksporterer oversettelser…Utdrag fra kilderHent ut notater for oversettere fra:Trekk ut tekst fra kildefiler i følgende kataloger:Utpakker-oppsettUtpakkerKunne ikke kommunisere med Poedit-prosessen.Kunne ikke lese oversettelses-filen.Klarte ikke slÃ¥ sammen gettex-kataloger.Kunne ikke oppdatere oversettingsminnet: %sFilFilen kan ikke Ã¥pnesFilen «%s» finnes ikke.Filen «%s» er ikke en oversettelsesfil.Fil «%s» er skrivebeskyttet og kan ikke lagres. Vennligst lagre filen under et annet navn.FinnFinn nesteFinn forrigeSøk og erstatt…Finn i kommentarerFinn i kildeteksterFinn i oversettelserFinn nesteFinn forrigeRett opp sprÃ¥kRett opp sprÃ¥kReparer headerenReparer headerenFlutter oversettelsesfilerForm %iSkjemaet %i (ubrukt)GNU gettextGenereltHTML-filerHjelpSkjul sidepaneletSkjul statuslinjeSkjul denne meldingenHvordan fungerer skysynkronisering?IDHvis du fortsetter vil alle oversettelser merket som slettet fjernes permanent. Du mÃ¥ oversette dem igjen hvis de legges tilbake i fremtiden.Hvis du tidligere har nektet tilgang til filene dine, kan du gi tilgang ved Ã¥ gÃ¥ til Systeminnstillinger > Personvern og sikkerhet > Filer og mapper.Hvis du tidligere har nektet tilgang til filene dine, kan du gi tilgang i Systeminnstillinger > Personvern og Sikkerhet > Filer og mapper.IgnorerIgnorer smÃ¥/STORE bokstaverImporter fra TMX…Importer oversettelsesfiler…Importer fra TMX…Importer oversettelsesfiler…Importerer oversettelser…Inn: %sInkluder betaversjonerUkonsekvent øvre/smÃ¥ bokstaverInconsistent whitespaceInformasjon om oversetterenInstallerUgyldig filStart: JSON oversettelsesfilerBeholdSprÃ¥knavn eller -kodeOversettelsessprÃ¥k og kildesprÃ¥k er det samme.OversettelsessprÃ¥k er ikke valgt.SprÃ¥ket til oversettelsen:SprÃ¥kvalgSprÃ¥klag:SprÃ¥k:Sist endretLær om gettext-søkeordLær om flertallsformerLær merLær mer om %sLær mer om CrowdinLinje %d i filen «%s» er korrupt (ugyldig %s data).Linjeavslutninger:Liste over etternavn skilt med semikolon (f.eks. «*.cpp; *.h»):Last inn engelskLocalazy er en høyt automatisert lokaliserings-plattform som enkelt lar hvem som helst oversette sine produkter og innhold til flere sprÃ¥k.MO-filer kan ikke redigeres direkte i Poedit.Gjør om til smÃ¥ bokstaverGjør om til store bokstaverLag en ny oversettelse av denne POT-filen.Misformet topptekst: "%s"Behandle kontoerBehandle…SlÃ¥r sammen endringer…MinimerNavnet pÃ¥ prosjektet oversettelsen er forNavn:Neste uferdigeNeste uferdigeTrenger arbeidTrenger arbeidNettverksfeil: %s (%d)La aldri tekstlisten fÃ¥ fokus. Du mÃ¥ bruke Ctrl + piltast for Ã¥ bevege deg mellom tekstene, men du kan ogsÃ¥ skrive direkte, uten Ã¥ mÃ¥tte trykke pÃ¥ Tab først.&NyNy fra &POT/PO fil…Ny fra &POT/PO fil…Nye teksterNeste flertallsformNeste flertallsformNeiIngen treff funnetIngen oppføringer kan bli forhÃ¥nds-oversatt.Ingen informasjon om denne strengens forekomster i kildekoden finnes i filen.Ingen treff funnetIngen problemer med oversettelsen funnet.Ingen oversettelsesprosjekter er oppført pÃ¥ kontoen din.Ingen bruksinformasjonIkke alle flertallsformer er oversatte.Ikke autorisert, vennligst logg inn igjen.Notater for oversettere&OKEnBare skru pÃ¥ dette hvis du stoler pÃ¥ kvaliteten pÃ¥ ditt OM. Som forvalg, blir alle treff fra OM markert som Trenger arbeid, og bør ses over før de brukes.Fyll kun ut nøyaktige treffÃ…pne skyoversettelse…Åpne senesteÃ…pne og rediger oversettelsesfiler.Ã…pne skyoversettelseÃ…pne skyoversettelse…Åpne filÃ…pne i redigeringsprogramÃ…pne i redigeringsprogramÃ…pne senesteÃ…pne...Ã…pne…AlternativerAndreFo&rrige uferdigeFo&rrige uferdigePO oversettelsesfilerPOT OversettelsesmalerPOT-filer er bare maler og inneholder ikke noen oversettelser i seg selv. For Ã¥ lage en oversettelse, opprett en ny PO-fil basert pÃ¥ malen.Lim innLim inn og tilpass stilStierUtfører oppdatering fra kildekode pÃ¥ alle filer i prosjektet.Ingen tillatelse.Midlertidig â€%s†mangler i oversettelsen.Plassholder-riktighetVennligst Ã¥pne og rediger den tilsvarende PO-filen i stedet. NÃ¥r du lagrer den, oppdateres MO-filen ogsÃ¥.Lagre filen først. Denne delen kan ikke redigeres før da.FlertallFlertallsform oversettelserFlertallsformuttrykket som brukes av filen er uvanlig for %s.Flertallsformer:PoeditPoedit - KataloghÃ¥ndtererPoedit rettet automatisk opp ugyldig innhold i filen «%s».Poedit kan prøve Ã¥ fylle inn nye oppføringer ved bruk av tidligere oversettelser i fila, eller fra hele ditt oversettelsesminne. Bruk av OM vil ikke være særlig effektivt, siden den nesten er tom, men det bedrer seg etterhvert som oversettelser blir lagt til.Poedit kan ikke vise kildekode der strengen er brukt. fordi filen enten ikke er tilgjengelig i den refererte posisjonen, eller det er en symbolsk referanse som ikke peker pÃ¥ en realfil.Poedit er et redigeringsprogram for oversettelser som er enkelt Ã¥ bruke.Poedit kunne ikke Ã¥pne “%s†filen.ForhÃ¥nds&oversett…ForhÃ¥nds-oversettForhÃ¥nds-oversattForhÃ¥nds-oversatte %u tekststrengForhÃ¥nds-oversatte %u tekststrengerForhÃ¥nds-oversetter fra oversettelsesminne…ForhÃ¥nds-oversetter…ForhÃ¥nds-oversettelse vil automatisk finne eksakte eller vilkÃ¥rlige sammensettinger for uoversatte strenger i oversettelses-minnet og fyller deretter ut oversettelsene.ForhÃ¥ndsoversettelse krever at en kildetekst er tilgjengelig. Det virker ikke om kun IDer uten tekst er i bruk.ForhÃ¥ndsoversettelse krever at kildetekstens sprÃ¥k er kjent. Poedit kunne ikke gjenkjenne det i denne filen.InnstillingerPreferanser...Innstillinger…Forbereder strenger…Behold formateringen til eksisterende filerForrige flertallsformForrige flertallsformTidligere kildetekstTidligere endretTidligere redigert&Prosjektnavn og -versjon:Prosjektnavn:Prosjekt:ProsjekterStikkprøvekontrollFjernFjern slettede oversettelserAvsluttLesing av filinnhold mislyktes med følgende feilmelding: %sNylige filerGjør omOppdatérLast inn fil pÃ¥ nyttLast inn filen pÃ¥ nyttGjenstÃ¥r: %dFjernFjern oversettelser som er lik kildetekstenFjern samme-som-kilde oversettelserErstattErstatt &alleErstatt &alleErstatningsstrengErstatt…En pÃ¥krevd Plural-Forms header mangler.TilbakestillTilbakestill oversettingsminnetÃ… tilbakestille oversettelsesminnet vil ugjenkallelig slette alle lagrede oversettelser fra den. Du kan ikke angre operasjonen.Vis i FinderSe igjennomLagreLagre &som…Lagre &som…Lagre uansettLagre uansettLagre somLagre som…Lagre endringerLagre filenSkjermbilder:&Merk alleMerk alleVelg TMX filer for importeringVelg mappeVelg oversettelsesfilVelg oversettelsesfiler som skal importeresVelg oversettelsesmalVelg foretrukket sprÃ¥kVelg sprÃ¥kVelg sprÃ¥kInnstillingerInnstillinger…Vis sidepaneletVis stavekontroll og grammatikkVis statuslinjeVis string-&IDVis erstatningerVis verktøylinjeVis advarslerVis i utforskerVis i mappeVis eller skjul sidepaneletVis sidepaneletVis statuslinjeVis string-&IDVis advarslerSidepanelLogg innLogg utLogg innLogg inn pÃ¥ %sLogg inn pÃ¥ skykontoLogg inn pÃ¥ CrowdinLogg inn pÃ¥ skykontoLogg utEntallEnkel Kopiering/Lim innEnkle punkterEnkle lenkerApostrofSorter etter &filrekkefølgeSorter etter &kildeSorter etter overse&ttelseSorter etter &filrekkefølgeSorter etter &kildeSorter etter overse&ttelseKildekodetegnsett:Kildekodeutpakkere brukes til Ã¥ finne oversettbare strenger i kildekodefiler og Ã¥ pakke dem ut slik at de kan oversettes.Kildekode er ikke tilgjengelig.Kildekoden ikke funnetKildetekstKildetekstens IDKildetekst — %sKilde-nøkkelordKildestierKilder nøkkelordKildebanerTaleStavekontroll er deaktivert fordi ordlisten for %s ikke er installert.Stavekontroll og grammatikkBegynn Ã¥ snakkeSlutt Ã¥ snakkeLagrede oversettelser:Kontekst for streng: %sID for streng: %sTekst lengde i tegnLengde pÃ¥ streng i tegn: oversettelsec kildeStrengen som skal finnesErstatningerForslagForslag er ikke tilgjengelig hvis oversettelsesprÃ¥ket ikke er riktig angitt. Andre funksjoner, for eksempel flertallsformer, pÃ¥virkes ogsÃ¥.Superflukt plassholder “%s, that is not is in source text.Støtter alle programmeringssprÃ¥k som er gjenkjent av GNU gettext-verktøy (PHP, C/C++, C#, Perl, Python, Java, JavaScript og andre).SynkroniserSynkroniser med CrowdinSynkroniser oversettelsen med CrowdinSynkronisererFeil ved synkroniseringSynkronisering med Crowdin mislyktes.Syntaksfeil i Plural-Forms header («%s»).TMTMX filerTa oversettbare strenger fra en eksisterende POT mal.Lagnavn og e-postadresse eller nettadresseTeksterstatningTM inneholder ikke strenger lik innholdet i denne filen. Det er bare effektivt for semi-automatiske oversettelser, som Poedit lærer fra filer som du oversetter manuelt.TMX-filen er feilformatert.Endringene gjort av den andre applikasjonen vil gÃ¥ tapt hvis du lagrer.Filen kunne ikke kompileres til MO-formatet og brukes.Filen inneholdt duplikater, noe som ikke er tillatt i PO-filer og ville hindret filen i Ã¥ bli brukt. Poedit har løst problemet, men du bør gjennomgÃ¥ alle oversettelser merket med «Trenger arbeid» og rette dem om nødvendig.Filen kunne ikke lagres i "%s" tegnsett som angitt i innstillinger. Den ble lagret i UTF-8 i stedet og innstillingen ble endret tilsvarende.Filen har blitt endret. Vil du lagre endringene?Denne filen er i et format som ikke gjenkjennes av Poedit.Filen ble kompilert i MO-format, men vil sannsynligvis ikke fungere riktig.Filen ble trygt lagret og kompilert i MO-format, men vil sannsynligvis ikke fungere riktig.Filen ble trygt lagret, men kunne ikke kompileres til MO-formatet og brukes.Filen ble trygt lagret.«%s»-filen kunne ikke Ã¥pnes.Filen «%s» har blitt endret av et annet program.Den gamle kildeteksten (før den endres under en oppdatering) som den nÃ¥ ikke-nøyaktige oversettelsen samsvarer med.Den enkleste mÃ¥ten Ã¥ fylle ut denne filen med oversettelser, er Ã¥ oppdatere den fra en POT:Oversettelsen starter ikke med et mellomrom.Oversettelsen slutter med en linje, men kildeteksten gjør ikke.Oversettelsen slutter med et mellomrom, men kildeteksten gjør ikke.Oversettelsen slutter med "%s", men kildeteksten slutter med "%s".Oversettelsen mangler en linje pÃ¥ slutten.Oversettelsen mangler et mellomrom pÃ¥ slutten.Oversettelsen er klar til bruk, men %d streng er ikke oversatt enda.Oversettelsen er klar til bruk, men %d strenger er ikke oversatt enda.Oversettelsen er klar til bruk.Oversettelsen burde slutte med "%s".Oversettelsen burde ikke slutte med "%s".Oversettelsen burde begynne som en setning.Oversettelsen burde begynne med en liten bokstav.Oversettelsen starter med et mellomrom, men kildeteksten gjør det ikke.Oversettelsene ble markert som Trenger arbeid, fordi de kan være unøyaktige. Du bør gjennomse dem for Ã¥ vurdere hvor korrekte de er.Det finnes ingen oversettelser. Det er uvanlig.Det oppstod et problem med Ã¥ formatere filen pÃ¥ pent vis (men den ble lagret OK).En feil oppsto ved opplasting av oversettelser til Localazy.Det oppstod problemer under lastingen av filen. Noe data kan mangle eller være ødelagt.Disse innstillingene pÃ¥virker den interne formateringen av PO-filer. Juster dem hvis du har bestemte krav, f.eks pÃ¥ grunn av versjonskontroll.Denne JSON-filen er ikke en oversettelsesfil og kan ikke redigeres i Poedit.Denne handlingen vil slette alle oversettelser som samsvarer perfekt med kildeteksten. Dette kan ikke angres.Denne filen har oppføringer med flertallsformer, men har ikke en Plural-Forms header konfigurert.Denne filen bruker strenge-ID-er istedet for kildetekst. Poedit kan laste inn engelsk tekst fra filen «%s» for deg.Denne kommandoen brukes til Ã¥ starte utpakker. %o utvides til navnet pÃ¥ utdatafilen, %K til listen over søkeord, %F til listen over inndatafiler, og %C til karaktersettsflagget (se nedenfor).Denne strengen ble funnet i Poedits oversettelsesminne.Dette blir lagt til kommandolinja bare hvis kildekodetegnsett ble angitt. %c blir utvidet til tegnsettets verdi.Dette blir lagt til kommandolinja en gang for hver inndatafil. %f blir utvidet til filnavnet.Dette blir føyd til kommandolinja én gang for hvert nøkkelord. %k blir utvidet til nøkkelordet.TotaltTransformasjonerOversett skyprosjektOversatt: %d av %d (%d %%)OversettelseOversettelsesprÃ¥ketOversettelsesminneOversettelsen trenger &arbeidOversettelsesegenskaperOversettelsesminnedatabasen er skadet: %s (%d).Oversettelsesminnefeil: %s (%d).Oversettelsen trenger &arbeidEgenskaper for oversettelseOversettelsesforslagOversettelsesforslag krever en tilgjengelig kildetekst. De virker ikke om bare strenge-IDer uten tekst er i bruk.Oversettelsesforslag krever at kildetekstens sprÃ¥k er kjent. Poedit kunne ikke gjenkjenne sprÃ¥ket i denne filen.Oversettelse — %sKunne ikke oppdatere oversettelser fra kildekoden, fordi ingen ble funnet i plasseringen angitt i filegenskapene.ToUTF-8 (anbefales)AngreUbehandlet unntak oppstod: %sUNIX (anbefales)Ukjent feil med Crowdin.Ukjent feilIkke oversettbartOppdaterOppdater alleOppdater alle katalogene i prosjektetOppdater alle kataloger i dette prosjektet?Oppdater fra &POT-fil…Oppdater fra &POT-fil…Oppdatere fra kodenOppdater fra POTOppdatere fra kodenOppdater fra kildekodeSammendragOppdateringerOppdatering mislyktesOppdaterer oversettelserOppdaterer brukerinformasjon...Opplasting av oversettelser til %s mislyktes.Laster opp oversettelser til %s…Laster opp oversettelser…Bruk egendefinerte uttrykkBruk egendefinert listeskrifttype:Bruk egendefinert tekstfelt-skrifttype:Bruk standardregler for dette sprÃ¥ketBruk disse nøkkelordene (funksjonsnavn) til Ã¥ gjenkjenne oversettbare strenger i kildefiler:Bruk oversettelsesminneValiderValideringsresultatVersjon %sVenter pÃ¥ autentisering…Velkommen til PoeditVed oppdatering fra kilderBare hele ordVinduWindowsVil du bruke engelsk som kildetekst?Pakk rundtVikle pÃ¥:XLIFF oversettelsesfilerJaDu kan ogsÃ¥ hente oversettbare strenger direkte fra kildekoden:Du kan ikke dra mer enn én fil inn i Poedit-vinduet.Du har ikke tillatelse til Ã¥ lese kildekodefiler fra plasseringen angitt i filegenskapene.Du mÃ¥ starte Poedit pÃ¥ nytt for at denne endringen skal tre i kraft.Ditt navnDine endringer vil gÃ¥ tapt hvis du ikke lagrer dem.Navnet og E-postadressen din brukes bare til Ã¥ bestemme hvem som skal oppføres som den seneste oversetteren av GNU gettext-filer.NullZoomTrenger arbeidikke slett midlertidige filer (for feilsøking)f.eks nplurals = 2; flertall = (n > 1);fuzzy-treff i filagÃ¥ til elementet pÃ¥ gitt linjenummerhÃ¥ndter en poedit://-URIAlt+Ctrl+NedSkrivVenstreHøyreShift+OppaltctrlshiftOm %sSkjul %sSkjul andrePreferanser...Avslutt %sTjenesterVis alleforhÃ¥nds-oversatt fra TMukjent sprÃ¥kversjonen støttes ikke (%s)deg@eksempel.no«%s» er ikke en gyldig POT-fil.poedit-3.6.3/locales/sv.po0000644000175100001660000026554115011674230011117 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Swedish\n" "Language: sv_SE\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: sv-SE\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Dölj det här meddelandet" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Visa inte igen" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Visa inte igen" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Uppdatera sammanfattning" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Uppdatera sammanfattning" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Stäng" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Problem" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Arkiv" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Rad" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problem" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Nya strängar" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Nya strängar" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Borttagna strängar" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Borttagna strängar" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Samlar källfiler…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Extraherar översättningsbara strängar frÃ¥n filen %s…" msgstr[1] "Extraherar översättningsbara strängar frÃ¥n %s filer…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Det gick inte att läsa in filen med extraherade översättningar." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "I: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Ingen källkod tillgänglig." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Översättningar kunde inte uppdateras frÃ¥n källkoden, eftersom ingen kod " "hittades i den plats som anges i filens egenskaper." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Ã…tkomst nekad." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Du har inte behörighet att läsa källkodfiler frÃ¥n den plats som " "specificerats i filens egenskaper." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Om du tidigare har nekat Ã¥tkomst till dina filer sÃ¥ kan du tillÃ¥ta det i " "Systeminställningar > Säkerhet och integritet > Integritet > Filer och " "mappar." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Om du tidigare nekat Ã¥tkomst till dina filer kan du tillÃ¥ta det i " "Systeminställningar > Säkerhet och integritet > Integritet > Filer och " "mappar." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Det gick inte att extrahera strängar frÃ¥n källkoden." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Filen “%s†kunde inte öppnas." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Uppdaterar översättningar" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Fastställer skillnader…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Sammanfogar skillnader…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Översättningsfilen är redan uppdaterad, inga ändringar av strängar gjordes." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Översättningsfilen uppdaterades med %s ändring." msgstr[1] "Översättningsfilen uppdaterades med %s ändringar." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Nya strängar att översätta:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Borttagna strängar (används inte längre):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "%d problem med källsträngarna upptäcktes." msgstr[1] "%d problem med källsträngarna upptäcktes." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Visa detaljer…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Visa detaljer…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Felaktig rubrik: \"%s\"" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO-översättningsfiler" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT-översättningsmallar" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF-översättningsfiler" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode-lokaliseringskatalog" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON-översättningsfiler" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter-översättningsfiler" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Alla översättningsfiler" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Filen är i ett format som inte känns igen av Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Denna JSON-fil är inte en översättningsfil och kan inte redigeras i Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Det gick inte att läsa filinnehÃ¥llet med följande fel: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Filen \"%s\" är skrivskyddad och kan inte sparas.\n" "Spara den under ett annat namn." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Kunde inte spara filen %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Skärmdumpar:" #: src/catalog_po.cpp:134 #, 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] "Rad %i i filen \"%s\" lästes inte korrekt." msgstr[1] "Raderna %i i filen \"%s\" kunde inte läsas korrekt." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Rad %d i filen '%s' är felaktig (inte giltig %s-data)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Trasig PO-fil: singularformen msgstr används tillsammans med msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "Trasig PO-fil: pluralformen msgstr används utan msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Det gick inte att ladda filen, den är förmodligen skadad." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Det uppstod fel vid inläsning av filen. Som resultat kan vissa uppgifter " "saknas eller vara skadade." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Det uppstod ett problem med att formatera filen snyggt (men den sparades " "okej)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Filen kunde inte sparas med teckenkodningen \"%s\" som specificerats i " "översättningsinställningar.\n" "\n" "Den sparades därför istället i UTF-8 och inställningen ändrades därefter." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Fel vid sparande av fil" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "\"%s\" är inte en giltig POT-fil." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Oväntat saknat innehÃ¥ll i XCLOC-filen." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Spara pÃ¥ en annan plats stöds inte för XCLOC-filer." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Fel vid laddning av XLIFF-fil: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "version som inte stöds (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Trasig markering i översättningssträng." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Koppla Poedit till molnbaserade lokaliseringsplattformar som stöds för att " "sömlöst synkronisera översättningar som hanteras pÃ¥ dem." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Hur fungerar molnsynkronisering?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Konto" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(Inte inloggad)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Öppna molnöversättning" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Hantera konton" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekt:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "SprÃ¥k:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Logga in pÃ¥ molnkonto" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Logga in pÃ¥ molnkonto" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Inga översättningsprojekt listade pÃ¥ ditt konto." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Hämtar senaste översättningar…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Logga in pÃ¥ %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Synkroniserar" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Laddar upp översättningar till %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Det gick inte att ladda upp översättningar till %s." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Synkroniseringsfel" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Lägg till" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Okänt Crowdin-fel." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Inte behörig, vänligen logga in igen." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Strängbaserade Crowdin-projekt stöds inte." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Nedladdning av översättningar är inaktiverade i detta projekt." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Logga in" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Logga in" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Logga ut" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Logga ut" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Lär dig mer om Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin är en online-översättningsplattform och ett samarbetsverktyg för " "översättningar. Vi använder Crowdin själva för att översätta Poedit till " "mÃ¥nga sprÃ¥k, och vi älskar det." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Väntar pÃ¥ autentisering…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Uppdaterar användarinformation…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Logga in pÃ¥ Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Synkronisering med Crowdin misslyckades." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin-fel" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Laddar upp översättningar…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopiera" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Läs mer" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Hjälp" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO-filer kan inte öppnas med Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Problem när filen lästes in" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Öppna och redigera motsvarande PO-fil i stället. När du sparar den, " "uppdateras MO-filen ocksÃ¥." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ta inte bort temporära filer (för felsökning)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "hantera en poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "gÃ¥ till post pÃ¥ givet radnummer" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Misslyckades att kommunicera med Poedit-processen." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ohanterat undantag inträffade: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Välj översättningsmall" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Ogiltig fil" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Välj översättningsfil" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit är en lättanvänd översättningsredigerare." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Du kan inte släppa mer än en fil i Poedit-fönstret." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Filen â€%s†är inte en översättningsfil." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Filen \"%s\" finns inte." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Stavningskontroll är inaktiverad, eftersom ordboken för %s inte är " "installerad." #: src/edframe.cpp:871 msgid "Install" msgstr "Installera" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Filen â€%s†har ändrats av ett annat program." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Läs om fil" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Vill du läsa om filen frÃ¥n disken? Dina osparade ändringar i Poedit kommer " "att gÃ¥ förlorade om du gör det." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignorera" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Läs om fil" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Filen har ändrats. Vill du spara ändringarna?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Spara ändringar" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Dina ändringar gÃ¥r förlorade om du inte sparar dem." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Spara" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Spara i&nte" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Spara inte" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Ändringarna som gjorts av den andra applikationen kommer att gÃ¥ förlorade om " "du sparar." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Avbryt" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Spara ändÃ¥" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Spara ändÃ¥" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Spara som…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Kompilera till…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Kompilerade översättningsfiler" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Exportera till HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML-filer" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Exporterar till HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Uppdatering misslyckades" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Öppna referensfilen" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Uppdatera frÃ¥n &POT-fil…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Uppdatera frÃ¥n &POT-fil…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d problem med översättningen hittades." msgstr[1] "%d problem med översättningen hittades." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Valideringsresultat" #: src/edframe.cpp:1842 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 "" "Poster med fel har rödmarkerats i listan. Detaljer om felet visas dÃ¥ en " "sÃ¥dan post väljs." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Filen sparades pÃ¥ ett säkert sätt." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Filen sparades säkert och kompilerades till MO-format, men den kommer " "förmodligen inte att fungera korrekt." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Filen sparades säkert, men den kan inte kompileras till MO-formatet och " "användas." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Filen kompilerades till MO-format, men den kommer förmodligen inte att " "fungera korrekt." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Filen kan inte kompileras till MO-format och användas." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Inga problem med översättningen hittades." #: src/edframe.cpp:1894 #, 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] "" "Översättningen är klar att användas, men %d post är ännu inte översatt." msgstr[1] "" "Översättningen är klar att användas, men %d poster är ännu inte översatta." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Översättningen är klar för användning." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit rättade automatiskt ogiltigt innehÃ¥ll i filen \"%s\"." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Filen innehöll dubbletter, vilket inte är tillÃ¥tet i PO-filer och skulle " "förhindra att filen används. Poedit rättade problemet, men du bör granska " "översättningar av alla poster som är markerade som behöver arbete och " "korrigera dem vid behov." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "ÖversättningssprÃ¥k är inte inställt." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Ange sprÃ¥k" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 korrekt " "inställt. Andra funktioner, sÃ¥som pluralformer, kan ocksÃ¥ pÃ¥verkas." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "ÖversättningssprÃ¥ket är samma som källsprÃ¥ket." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Fixa sprÃ¥k" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Ã…tgärda sprÃ¥k" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Denna fil innehÃ¥ller poster med pluralformer, men har inte Plural-Former " "header konfigurerad." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Poster i denna fil har olika antal pluralformer än vad som anges i Plural-" "Former headern" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Nödvändig Plural-Forms header saknas." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Syntaxfel i Plural-Forms header (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Korrigera rubriken" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Korrigera rubriken" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Pluralformsuttryck som används av filen är ovanliga för %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Granska" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Vill du använda Engelsk källtext?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Denna fil använder sträng-ID istället för källtext. Poedit kan läsa in " "Engelsk text frÃ¥n \"%s\" Ã¥t dig." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Läs in Engelska" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Översatt: %d av %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Ã…terstÃ¥r: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d fel" msgstr[1] "%d fel" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d post" msgstr[1] "%d poster" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (osparad)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (ändrad)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Det gick inte att uppdatera översättningsminne: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Filen \"%s\" kunde inte sparas." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Ta bort översättningar samma som källtext" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Vill du ta bort alla översättningar som är identiska med källtexten?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Denna Ã¥tgärd kommer att ta bort översättningar som matchar källtexten exakt. " "Detta kan inte Ã¥ngras." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "BehÃ¥ll" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Ta bort" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Rensa borttagna översättningar" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Vill du ta bort alla översättningar som inte längre används?" #: src/edframe.cpp:2879 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 "" "Om du fortsätter med rensningen kommer alla översättningar som är märkta för " "borttagning att tas bort permanent. Du mÃ¥ste översätta dem igen om de läggs " "tillbaka i framtiden." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Rensa" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Kopiera frÃ¥n källtext" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopiera frÃ¥n källtext" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Rensa översättning" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Rensa översättning" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Redigera kommentar" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Redigera kommentar" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Kodförekomster" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Kodförekomster" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Dölj sidofält" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Visa sidofält" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Dölj statusfältet" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Visa statusfältet" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Stränglängd i tecken: översättning | källa" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Stränglängd i tecken" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Källtext" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singular" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plural" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Översättning" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Förhandsöversatt" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Behöver arbete" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Behöver arbete" #: src/editing_area.cpp:566 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." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Skapa ny översättning" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Skapa en ny översättning frÃ¥n denna POT-fil." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Källtext-ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Allt" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Formulär %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Formulär %i (Oanvänd)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Noll" #: src/editing_area.cpp:788 msgid "One" msgstr "Ett" #: src/editing_area.cpp:790 msgid "Two" msgstr "TvÃ¥" #: src/editing_area.cpp:804 msgid "Other" msgstr "Övrigt" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Strängkontext: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Strängidentifierare: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s-format" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s-format" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Översättning — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Källtext — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "okänt sprÃ¥k" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Nätverksfel: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Okänt fel" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Det gick inte att sammanfoga gettext-kataloger." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Öppna i redigeraren" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Öppna i redigeraren" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Ingen information om denna strängs förekomster i källkoden finns i filen." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Ingen användningsinformation" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d kodförekomst" msgstr[1] "%d kodförekomster" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Källkoden hittades inte" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit kan inte visa källkod där strängen används, eftersom filen antingen " "inte är tillgänglig pÃ¥ den refererade platsen eller sÃ¥ är det en symbolisk " "referens som inte pekar mot en riktig fil." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Filen kan inte öppnas" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit kunde inte öppna filen â€%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Hitta" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Ersätt" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Alternativ" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignorera skiftlägeskänslig" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Loopa" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Endast hela ord" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Hitta i källtexter" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Sök i översättningar" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Sök i kommentarer" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Ersätt &alla" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Ersätt &alla" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Ersätt" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< FöregÃ¥ende" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Nästa >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Sträng att hitta" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Ersättningssträng" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "varning: " #: src/gexecute.cpp:171 msgid "error: " msgstr "fel: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "SprÃ¥knamn eller kod" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "ÖversättningssprÃ¥k" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Översättningens sprÃ¥k:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Alla strängar" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Kunde inte ladda ner Localazy-projektets detaljer." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Det gick inte att ladda upp översättningar till Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projekt" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Läs mer om %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy är en högt automatiserad plattform för lokaliseringshantering som " "gör det enkelt för vem som helst att översätta sina produkter och innehÃ¥ll " "till flera sprÃ¥k." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Lägg till projekt" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Lägg till projekt" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Kataloghanterare" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Redigera…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Skapa nytt översättningsprojekt" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Ta bort projektet" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Redigera projektet" #: src/manager.cpp:176 msgid "Update all" msgstr "Uppdatera alla" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Uppdatera alla kataloger i projektet" #: src/manager.cpp:378 msgid "Total" msgstr "Totalt" #: src/manager.cpp:379 msgid "Untrans" msgstr "Oöversatt" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Behöver arbete" #: src/manager.cpp:381 msgid "Errors" msgstr "Fel" #: src/manager.cpp:382 msgid "Last modified" msgstr "Senast ändrad" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Välj katalog" #: src/manager.cpp:433 msgid "Directories:" msgstr "Kataloger:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Vill du ta bort projektet â€%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Ta bort projektet" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" "Borttagning av projektet kommer inte att ta bort nÃ¥gra översättningsfiler." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Bekräftelse" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Uppdatera alla kataloger i detta projekt?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Utför uppdatering frÃ¥n källkod pÃ¥ alla filer i projektet." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Uppdaterar projektkataloger" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Sök efter uppdateringar…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Kataloghanterare" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Inställningar…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Redigera" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Ã…ngra" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Gör om" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Klistra in och matcha stil" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Ta bort" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Stavning och grammatik" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Visa stavning och grammatik" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Kontrollera dokumentet nu" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Kontrollera stavning medan jag skriver" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Kontrollera grammatik tillsammans med stavning" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Korrigera stavning automatiskt" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Ersättningar" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Visa ersättningar" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Smart kopiera/klistra in" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Typografiska citattecken" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Smarta streck" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Smarta länkar" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Textersättning" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformeringar" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Gör till versaler" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Gör till gemener" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Kapitalisera" #: src/menus.cpp:237 msgid "Speech" msgstr "Tal" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Börja tala" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Sluta tala" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Visa" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Visa verktygsfält" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Anpassa verktygsfält…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "GÃ¥ till helskärm" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Fönster" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimera" #: src/menus.cpp:264 msgid "Zoom" msgstr "Zooma" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Välkommen till Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Lägg alla överst" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Information om översättaren" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Namn:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Ditt namn" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-post:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "du@exempel.se" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ditt namn och e-postadress används endast för att ställa in i sista-" "översättare huvudet pÃ¥ GNU gettext-filer." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Redigering" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Kompilera MO-fil automatiskt när du sparar" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Kontrollera stavning" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Ändra alltid fokus till textinmatningsfältet" #: src/prefsdlg.cpp:211 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 "" "LÃ¥t aldrig listan med strängar ta fokus. Om det är aktiverat, mÃ¥ste du " "använda Ctrl-pilar för tangentbordsnavigering men du kan ocksÃ¥ skriva text " "direkt, utan att behöva trycka Tab för att byta fokus." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Utseende" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Använd anpassat typsnitt i lista:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Använd anpassat typsnitt i textfält:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Ändra sprÃ¥k för gränssnittet" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(kräver Windows 8 eller nyare)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Allmänt" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Använda översättningsminne" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Hantera…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Vid uppdatering frÃ¥n källor" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "ungefärlig träff i filen" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "förhandsöversätt frÃ¥n TM" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit kan försöka fylla i nya poster frÃ¥n endast tidigare översättningar i " "filen eller hela översättningsminnet. Att använda TM är inte effektivt om " "det är nästan tomt, men det kommer bli bättre allt eftersom du lägger till " "fler översättningar till det." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Lagrade översättningar:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Databasstorlek pÃ¥ disk:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importera översättningsfiler…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importera översättningsfiler…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importera frÃ¥n TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importera frÃ¥n TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Exportera till TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Exportera till TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Ã…terställ" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Välj översättningsfiler att importera" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Välj TMX-fil som ska importeras" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX-filer" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Importerar översättningar…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Import av översättningsminne misslyckades." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importerar frÃ¥n â€%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s översättning importerades." msgstr[1] "%s översättningar importerades." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exportera som…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Exporterar översättningar…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Export av översättningsminne till â€%s†misslyckades." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Ã…terställ översättningsminne" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Är du säker pÃ¥ att du vill Ã¥terställa översättningsminnet?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Rensa översättningsminnet kommer oÃ¥terkalleligt ta bort alla lagrade " "översättningar frÃ¥n den. Du kan inte Ã¥ngra Ã¥tgärden." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Översättningsminne (TM)" #: src/prefsdlg.cpp:730 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 "" "Källkodsextrahering används för att hitta översättbara strängar i " "källkodsfiler och packa upp dem sÃ¥ att de kan översättas." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Anpassade extraherare:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Anpassade extraherare:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Stöder alla programmeringssprÃ¥k som känns igen av GNU gettext-verktyg (PHP, " "C/C++, C#, Perl, Python, Java, JavaScript och andra)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Ta bort extraherare" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Är du säker pÃ¥ att du vill ta bort extraheraren \"%s\"?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extraherare" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Konton" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Sök efter uppdateringar automatiskt" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Inkludera betaversioner" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Betaversioner innehÃ¥ller de senaste nya funktionerna och förbättringarna, " "men kan vara lite mindre stabila." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Uppdateringar" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Dessa inställningar pÃ¥verkar den interna formateringen av PO-filer. Justera " "dem om du har särskilda önskemÃ¥l t.ex. pÃ¥ grund av versionskontroll." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Radslut:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (rekommenderas)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Radbryt efter:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Bevara formateringen av befintliga filer" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Avancerat" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Inställningar" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Förbereder strängar…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Föröversätter frÃ¥n översättningsminne…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Förhandsöversatte %u sträng" msgstr[1] "Förhandsöversatte %u strängar" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Förhandsöversätter…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d post förhandsöversattes." msgstr[1] "%d poster förhandsöversattes." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Översättningarna markerades som att de behöver arbete, eftersom de kan vara " "felaktiga. Du bör granska dem för korrekthet." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Exakta matchningar frÃ¥n TM" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Ungefärliga matchningar frÃ¥n TM" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Inga poster kan förhandsöversättas." #: src/pretranslate.cpp:218 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 "" "Översättningsminnet innehÃ¥ller inga matchande strängar till innehÃ¥llet i " "denna fil. Detta är bara effektivt för semi-automatiska översättningar efter " "att Poedit har lärt sig frÃ¥n filer som du tidigare har översatt manuellt." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Kan inte föröversätta utan källtext." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Förhandsöversätt" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Föröversättning kräver att källtexten är tillgänglig. Det fungerar inte om " "endast ID, utan den faktiska texten, används." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Kan inte föröversätta frÃ¥n okänt sprÃ¥k." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Föröversättning kräver att källtextens sprÃ¥k är känt. Poedit kunde inte " "identifiera det i denna fil." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Fyll endast i exakta matchningar" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Som standard inkluderas även inexakta resultat, men de markeras som att de " "behöver bearbetas. Markera detta alternativ för att endast inkludera " "perfekta träffar." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Markera inte exakta träffar som behöver arbete" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Aktivera endast om du litar pÃ¥ kvaliteten pÃ¥ ditt TM. Som standard, alla " "träffar frÃ¥n TM markeras som behöver arbete och bör ses över innan " "användning." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Förhandsöversättning söker automatiskt efter exakta eller ungefärliga " "träffar för oöversatta strängar i översättningsminnet och fyller i dessa " "översättningar." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Fel: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d fel uppstod:" msgstr[1] "%d fel uppstod:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Ett fel uppstod." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d fel uppstod." msgstr[1] "%d fel uppstod." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Avbryter…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Dra mappar eller filer hit" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Dra mappar eller filer hit" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Lägg till mappar…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Lägg till mappar…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Lägg till filer…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Lägg till filer…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Lägg till jokertecken…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Lägg till jokertecken…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Visa i Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Visa i utforskare" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Visa i mapp" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Sökvägar" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Undantagna sökvägar" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Avancerade extraheringsinställningar" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Extrahera anteckningar för översättare frÃ¥n:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Kommentarer som börjar med:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Alla kommentarer" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Ytterligare xgettext-flaggor:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Ytterligare sökord" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Namnet pÃ¥ projektet översättningen är för" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Gruppnamn och e-postadress eller webbadress" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "t.ex. nplurals = 2; plural = (n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (rekommenderas)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "Spara filen först. Det här avsnittet kan inte redigeras förrän dess." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "PlatshÃ¥llares korrekthet" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "PlatshÃ¥llare â€%s†saknas i översättningen." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Överflödig platshÃ¥llare â€%s†som inte finns i källtexten." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Översättningar i pluralform" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Inte alla pluralformer är översätta." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Inkonsekventa versaler/gemener" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Översättningen bör inledas som en mening." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Översättningen bör inledas med en liten bokstav." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Inkonsekvent blanktecken" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Översättningen börjar inte med ett mellanslag." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Översättningen börjar med ett mellanslag, men det gör inte källtexten." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Översättning saknar ett radslut i slutet." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Översättningen slutar med ett radslut, men det gör inte källtexten." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Översättning saknar ett mellanslag i slutet." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Översättningen slutar med ett mellanslag, men det gör inte källtexten." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Kontroller av skiljetecken" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Översättningen bör avslutas med \"%s\"." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Översättningen bör inte sluta med \"%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "Översättningen avslutas med \"%s\", medan källtexten avslutas med \"%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Moln" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Rensa meny" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Rensa meny" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Kommentar:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Uppdatera" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Ta bort" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Ta bort kommentaren" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Redigera projekt" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Projektnamn:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Bläddra" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Lägg till katalog till listan" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Arkiv" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Ny…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nytt frÃ¥n &POT/PO-fil…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nytt frÃ¥n &POT/PO-fil…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Öppna…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Öppna senaste" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Öppna nyligen använt" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Öppna molnöversättning…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Öppna molnöversättning…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Start&fönster" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Start&fönster" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Kataloghanterare" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Kataloghanterare" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Stäng" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Spara" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Spar&a som…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Spar&a som…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Kompilera till MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&xportera till HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Sök efter uppdateringar…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Inställningar…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Inställningar" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Avsluta" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Avsluta" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopiera frÃ¥n singular" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopiera frÃ¥n singular" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Översättning behöver &arbete" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Översättning behöver &arbete" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Redigera &kommentar" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Redigera &kommentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Förslag" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Sök…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Ersätt…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Sök nästa" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Hitta föregÃ¥ende" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Sök och ersätt…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Sök nästa" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Hitta föregÃ¥ende" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Visa sträng-ID" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Visa sträng-&ID" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Visa varningar" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Visa varningar" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Sortera efter &filordning" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Sortera efter &filordning" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Sortera efter &källa" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Sortera efter &källa" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Sortera efter ö&versättning" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Sortera efter ö&versättning" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Gruppera efter innehÃ¥ll" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Gruppera efter innehÃ¥ll" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Poster med fel först" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Poster med fel först" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Oöversatta poster först" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Oöversatta poster först" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Visa kodförekomster" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Visa kodförekomster" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Visa sidofält" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Visa statusfältet" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Översättning" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Uppdatera frÃ¥n källkod" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Uppdatera frÃ¥n källkod" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Synkronisera med Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Förhandsöversä&tt…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validera översättningar" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validera översättningar" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Ta bort översättningar samma som källtext" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Rensa borttagna översättningar" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Rensa borttagna översättningar" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Egenskaper…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Kör" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Klar och nästa" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Klar och nästa" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Tidigare redigerad" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Tidigare redigerad" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&FöregÃ¥ende översättning" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&FöregÃ¥ende översättning" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Nästa översättning" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Nästa översättning" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Fö®Ã¥ende ofärdiga" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Fö®Ã¥ende ofärdiga" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Nä&sta ofärdiga" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Nä&sta ofärdiga" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "FöregÃ¥ende pluralform" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "FöregÃ¥ende pluralform" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Nästa pluralform" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Nästa pluralform" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Hjälp pÃ¥ nätet" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Hjälp pÃ¥ nätet" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext-handbok" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext-handbok" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Om Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Om" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Konfigurera extraherare" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista över tillägg avgränsas med semikolon (t.ex. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Anrop:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Kommando för att extrahera översättningar:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Detta är kommandot som används för att starta extraheraren.\n" "%o expanderar till namnet pÃ¥ utmatningsfilen, %K till listan\n" "av sökord, %F till listan över inmatningsfiler,\n" "%C till teckenuppsättningsflaggan (se nedan)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "En post i sökordslistan:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Detta kommer att bifogas till kommandoraden en\n" "gÃ¥ng för varje sökord. %k expanderar till sökordet." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "En post i inmatningslistan:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Detta kommer att bifogas till kommandoraden en gÃ¥ng\n" "för varje inmatningsfil. %f expanderar till filnamnet." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Källkod teckenuppsättning:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Detta kommer att bifogas till kommandoraden\n" "endast om källkodsteckenuppsättningen har angetts. %c expanderar till " "teckenuppsättningsvärdet." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Översättningsegenskaper" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Projektnamn och version:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "SprÃ¥kteam:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Flertalsformer:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Använd standardregler för detta sprÃ¥k" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Använd anpassat uttryck" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Lär dig mer om pluralformer" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Teckenuppsättning:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Avancerade extraheringsinställningar…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Avancerade extraheringsinställningar…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Översättningsegenskaper" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Källsökvägar" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Källsökvägar" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Extrahera text frÃ¥n källfilen i följande kataloger:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Rotsökväg:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Källsökord" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Källsökord" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Använd dessa sökord (funktionsnamn) att känna igen översättningsbara " "strängar\n" "i källfiler:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Använda ocksÃ¥ standardsökord för sprÃ¥k som stöds" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Lär dig mer om gettext-sökord" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Öppna fil" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Spara fil" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validera" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Kontrollera om det finns fel i översättningen" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Uppdatera frÃ¥n kod" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Uppdatera frÃ¥n kod" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Uppdatera frÃ¥n källkod" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Sidofält" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Tidigare källtext" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Den gamla källtexten (innan den ändrades under en uppdatering) som den nu " "felaktiga översättningen motsvarar." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Anteckningar för översättare" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Kommentar" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Lägg till kommentar" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Lägg till kommentar" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Ta bort frÃ¥n översättningsminne" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Ta bort frÃ¥n översättningsminne" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Översättningsförslag" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Inga träffar hittades" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Inga träffar hittades" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Den här strängen hittades i Poedits översättningsminne." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Översättningsförslag kräver att källtexten är tillgänglig. De fungerar inte " "om bara ID, utan den faktiska texten, används." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Översättningsförslag kräver att källtextens sprÃ¥k är känt. Poedit kunde inte " "identifiera det i denna fil." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Kan inte köra program: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX-filen är felformad." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Databasens översättningsminne är skadat: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Översättningsminne-fel: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Använd standardsprÃ¥k)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "SprÃ¥kval" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Välj önskat sprÃ¥k" #: src/uilang.cpp:263 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." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Det gÃ¥r inte att skapa en temporär mapp." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Det finns inga översättningar. Detta är ovanligt." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Översättningsbara poster läggs inte till manuellt i Gettext-systemet, men " "extraheras automatiskt frÃ¥n källkoden. PÃ¥ detta sätt hÃ¥lles de uppdaterade " "och korrekta.\n" "Översättare använder vanligtvis PO-mallfiler (POTs) förberedda Ã¥t dem av " "utvecklaren." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Läs mer om GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Det enklaste sättet att fylla denna fil med översättningar är att uppdatera " "den frÃ¥n en POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Uppdatera frÃ¥n POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Ta översättningsbara strängar frÃ¥n en befintlig POT-mall." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Du kan ocksÃ¥ extrahera översättningsbara strängar direkt frÃ¥n källkoden:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Extrahera frÃ¥n källor" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Konfigurera källkodsextrahering i egenskaper." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Version %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Skapa ny" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Skapa ny översättning frÃ¥n POT-mall." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Bläddra bland filer" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Öppna och redigera översättningsfiler." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Översätt molnprojekt" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Samarbeta med andra människor online." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Senaste filer" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Synkronisera" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Synkronisera översättningen med Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Om %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s-inställningar" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Om %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Tjänster" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Dölj %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Dölj andra" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Visa alla" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Avsluta %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Inställningar…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Inställningar..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Inställningar..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Tillämpa" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Tillämpa" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Tillbaka" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Tillbaka" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Avbryt" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Rensa" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Rensa" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopiera" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Kl&ipp ut" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Klipp ut" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Redigera" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Avsluta" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Hjälp" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Ny" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Ny" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Nej" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Nej" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Öppna…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Öppna..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Öppna..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Klistra in" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Klistra in" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Inställningar" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Gör om" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Uppdatera" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Spara som" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Spara som" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Välj &alla" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Markera allt" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Ã…ngra" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Ja" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Ja" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Skift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Retur" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Upp" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Ner" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Vänster" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Höger" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "skift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Varning: " poedit-3.6.3/locales/an.po0000644000175100001660000024562615011674362011075 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Aragonese\n" "Language: an_ES\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: an\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Amagar iste mensache de notificación" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "No tornar a amostrar-lo" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "No tornar a amostrar-lo" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Resumen de l'actualización" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Zarrar" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Fichero" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Textos nuevos" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Replegando los fichers d'orichen…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "No s'ha puesto cargar l'archivo con las traduccions extraïdas." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "O codigo fuent no ye disponible." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Permiso denegau." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Si previament denegués l'acceso a los tuyos fichers, puetz permitir-lo en as " "preferencias d'o sistema > Seguridat y Privacidat > Privacidat > Fichers y " "carpetas." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Actualizando traduccions" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Mezclando las diferencais…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Capitero malformau: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Fichers de traducción PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Plantiellas de traducción POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Fichers de traducción XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Totz os fichers de traducción" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Lo fichero “%s†ye de nomás lectura y no puet alzar-se.\n" "Por favor alza-lo baixo atro nombre." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "No s'ha puesto alzar lo fichero %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "" #: src/catalog_po.cpp:134 #, 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 linia d'o fichero “%s†no s'ha cargau correctament." msgstr[1] "%i linias d'o fichero “%s†no s'han cargau cargoron correctament." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "" "La linia %d d'o fichero “%s†ye corrupta (los datos %s not son valius)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "No s'ha puesto cargar l'archivo. Puet estar que s'haigan perdiu u corrumpiu " "alguns datos per esta accion." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "S'ha produciu un problema en dar formato correctament a lo fichero (pero ye " "estau bien alzau)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "S'ha produciu un error al guardar l'archivo" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s†no ye un fichero POT valiu." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Marca crebada en a cadena de traducción." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Prochecto:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Luenga:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Se ye baixando as zagueras traduccions…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sincronizando" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Error de sincronización" #: src/commentdlg.cpp:48 msgid "Add" msgstr "" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "No ye autorizau, encieta la sesión de nuevas." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "A descarga de traduccions ye desactivada en iste prochecto." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Encetar a sesión" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Encetar a sesión" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Zarrar a sesión" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Zarrar a sesión" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Aprender mas arredol d'o Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Se ye asperando l'autenticación…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Se ye esviellando a información de l'usuario…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Encetar a sesión en o Crowdin." #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "A sincronización con o Crowdin ha fallau." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "S'ha produciu una error d'o Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Se ye puyando as traduccions…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Copiar" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Aprender-ne más" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Aduya" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Os fichers MO no se pueden editar dreitament en o Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "S'ha produciu una error ubrindo lo fichero" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "En cuenta ubre y edita o fichero PO correspondient. En que l'alces o fichero " "MO s'esviellará tamién." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "No borrar los fichers temporals (pa depurar)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "maniar un poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "Ir ta l'elemento en o numero de linia dau" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Ha fallau en comunicar-se con o proceso d'o Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "S'ha produciu una error no maniada: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Fichero invaliu" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit ye un editor de traduccions d'uso facil." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Tu puetz borrar mas d'un fichero en a finestr ad'o Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Lo fichero “%s†no ye un fichero de traducción." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Lo fichero “%s†no existe." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "S'ha desactivau a revisión ortografica porque falta o diccionario pa %s." #: src/edframe.cpp:871 msgid "Install" msgstr "Instalar" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Torna a cargar l'archivo" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignora" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Torna a cargar l'archivo" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "L'archivo ha estau modificau. Quiers guardar es cámbios fetos?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Alzar os cambios" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Los cambios tuyos se perderán si no los alzas." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Alzar" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&No alzar" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "No alzar" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Es cámbios fetos per atras aplicacions se perderan si guardas el fichiero." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Cancelar" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Guarda igualment" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Guarda igualment" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Alzar como…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Compilar ta…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Fichers de traducción compilaus" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Fichers HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "L'actualización ha fallau" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d problema trobau en a traducción." msgstr[1] "%d problemas trobaus en a traducción." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Resultaus d'a validación" #: src/edframe.cpp:1842 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 dentradas con errors s'han marcau en royo en a lista. S'amostrarán os " "detalles d'a error quan selecciones a dentrada." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "O fichero s'ha alzau de traza segura." #: src/edframe.cpp:1854 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 t'o formato MO pero " "prebablement no marche correctament." #: src/edframe.cpp:1857 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 t'o formato MO ni usar-se." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "O fichero s'ha compilau t'o formato MO pero prebablement no funcionará " "correctament." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "O fichero no se puet compilar t'o formato MO pa emplegar-se." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "No se troba problemas en ista traducción." #: src/edframe.cpp:1894 #, 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] "" "A traducción ye presta pa usar-se, pero %d dentrada ye encara sin traducir." msgstr[1] "" "A traducción ye presta pa usar-se, pero %d dentradas son encara sin traducir." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "A traducción ye presta pa usar-se." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "O Poedit ha apanyau automaticament conteniu invalido en o fichero “%sâ€." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "O fichero conteneba elementos duplicaus, ixo not ye permitiu en os fichers " "PO y empacharía que se fese servir o fichero. O Poedit ha apanyau o problema " "pero s'ha a revisar as traduccions de qualsiquier elemento marcau como que " "le fa falta treballo y correchir-lo si ye menister." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "No s'ha establiu lo idioma d'a traducción." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Establir l'idioma" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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." #: src/edframe.cpp:2334 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." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Apanyar l'idioma" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Apanyar l'idioma" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Falta o capitero de formas plurals requiesto." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Bi ha una error sintactica en as formas plurals d'o capitero (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Apanyar o capitero" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Adequar o capitero" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Revisar" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduciu: %d de %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "En queda: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d error" msgstr[1] "%d errors" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d dentrada" msgstr[1] "%d dentradas" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (sin alzar)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (modificau)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "S'ha produciu una error en esviellar as traduccions memorizadas: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Mantener-las" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Purgar as traduccions borradas" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Deseyas eliminar todas as traduccions que ya no se fan servir?" #: src/edframe.cpp:2879 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 "" "Si continas con o purgau, todas as traduccions marcadas como borradas serán " "eliminadas permanentment. Habrás a traducir-las unatra vegada si son " "adhibidas unatra vegada en o esvenidero." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Purgar-las" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Copiar dende o texto fuent" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Copiar dende o texto fuent" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Limpiar a traducción" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Limpiar a traducción" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Editar o comentario" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Editar o comentario" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Amagar a barra lateral" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Amostrar a barra lateral" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Amagar a barra d'estau" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Amostrar a barra d'estau" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Texto fuent" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Traducción" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pretraduciu" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Le fa falta treballo" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Le fa falta treballo" #: src/editing_area.cpp:566 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" "Pa fer una traducción, creya un nuevo fichero PO basau en a plantiella." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Creyar una nueva traducción" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Tot" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Zero" #: src/editing_area.cpp:788 msgid "One" msgstr "Un" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dos" #: src/editing_area.cpp:804 msgid "Other" msgstr "Unatro" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Formato %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Formato %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Traducción — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Texto d'orichen — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "idioma desconoixiu" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "S'ha produciu una error en unir catalogos gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Ubrir-lo en l'editor" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Ubrir-lo en l'editor" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Mirar" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Substituir" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opcions" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignorar as mayusclas y as minusclas" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Embolicau arredol" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Nomás as parolas completas" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Mirar en o texto d'orichen" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Mirar en as traduccions" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Mirar en os comentarios" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "" #: src/findframe.cpp:150 msgid "&Replace" msgstr "" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Anterior" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Siguient >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Cadena que mirar" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Cadena de substitución" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Idioma d'a traducción" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Idioma d'a traducción:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Chestor de catalogos" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Creyar un nuevo prochecto de traducción" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Borrar o prochecto" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Editar o prochecto" #: src/manager.cpp:176 msgid "Update all" msgstr "Esviellar-lo tot" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Esviellar totz os catalogos d'o prochecto" #: src/manager.cpp:378 msgid "Total" msgstr "Total" #: src/manager.cpp:379 msgid "Untrans" msgstr "Sin traducir" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Le fa falta treballo" #: src/manager.cpp:381 msgid "Errors" msgstr "" #: src/manager.cpp:382 msgid "Last modified" msgstr "Zaguera modificación" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Seleccionar a carpeta" #: src/manager.cpp:433 msgid "Directories:" msgstr "Carpetas:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "" #: src/manager.cpp:540 msgid "Delete project" msgstr "" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" #: src/manager.cpp:571 msgid "Confirmation" msgstr "Confirmación" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Comprebar si bi ha actualizacions…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Chestor de catalogos" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Edición" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Desfer" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Refer" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Apegar con o mesmo estilo" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Borrar" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Ortografía y gramatica" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Amostrar a ortografía y a gramatica" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Comprebar o documento agora" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Comprebar a ortografía en escribir" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Comprebar a gramatica con a ortografía" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Correchir automaticament a ortografía" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Substitucions" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Amostrar as substitucions" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Copiau y apegau intelichent" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Cometas intelichents" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Guions intelichents" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Vinclos intelichents" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Substitución de texto" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformacions" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Convertir en mayusclas" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Convertir en minusclas" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Meter en mayusclas" #: src/menus.cpp:237 msgid "Speech" msgstr "Voz" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Rancar a voz" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Aturar a voz" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Veyer" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Amostrar a barra de ferramientas" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Personalizar a barra de ferramientas" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Dentrar ta pantalla completa" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Finestra" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimizar" #: src/menus.cpp:264 msgid "Zoom" msgstr "Enamplar" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "مرحبا بك ÙÙŠ Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Trayer-ne tot t'o frent" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Información arredol d'o traductor" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nombre:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "O tuyo nombre" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Correu electronico:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "O tuyo nombre y l'adreza de correu electronico no s'emplegan que ta " "establir o capitero de zaguer traductor d'os fichers GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Editando" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Compilar o fichero MO automaticament en alzar" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Comprebar a ortografía" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Pasar siempre o foco t'o quadro de traducción" #: src/prefsdlg.cpp:211 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 "" "No deixar que a lista de textos retienga l'enfoque. Si ista opción ye " "activada puet fer-se servir de conchunta con CTRL + teclas d'adreza\n" "ta mover-se por a lista de textos y prencipiar a tecliar immediatament sin " "pretar o tabulador ta cambiar o foco." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Aparencia" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Fer servir una fuent personalizada t'as listas:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Fer servir una fuent personalizada pa os quadros de texto:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Cambiar a luenga d'a interficie d'usuario" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(requier o Windows 8 u superior)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Cheneral" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Fer servir a memoria de traducción" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "En esviellar-lo dende as fuents" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "Coincidencia fusca adintro d'o fichero" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pretraducir dende a MT" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "O Poedit puet mirar de replenar as nuevas dentradas nomás dende as " "traduccions anteriors d'o fichero u de toda la memoria de traducción. L'uso " "d'a MT no será guaire efectivo si ye quasi lasa, pero amillorará contra mas " "traduccions se bi anyada." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Traduccions almagazenadas:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Grandaria d'a base de datos en disco:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Reenchegar-ne" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Seleccionar os fichers de traducción pa importar-los" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exportar como…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Reenchegar a memoria de traducción" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "De seguras que quiers reenchegar as traduccions memorizadas?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "En reenchegar a memoria de traducción se borrarán todas as traduccions " "almagazenadas. Ista operación no se puet desfer." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Traduccions memorizadas" #: src/prefsdlg.cpp:730 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 "" "Os extractors de codigo fuent se fan servir pa trobar os mensaches " "traducibles en os fichers de codigo fuent y extrayer-los pa permitir a suya " "traducción." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Extractors personalizaus:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Extractors personalizaus:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Suporta totz os luengaches de programación reconoixius por as ferramientas " "d'o GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript y atros)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Borrar l'extractor" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Yes seguro que quiers eliminar l'extractor “%sâ€?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extractors" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Cuentas" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Comprebar-ne as actualizacions automaticament" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Incluir-ie as versions beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "As versions beta contienen as funcionalidatz y milloras mas recients, pero " "pueden resultar menos estables." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Actualizacions" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Istas valors afectan o formato interno d'os fichers PO. Achusta-los si tiens " "requisitos especificos; por eixemplo, a causa d'o control de versión." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "finals d'as linias" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (recomendau)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Achustar-lo en:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Conservar o formato d'os fichers existents" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Avanzau" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "S'ha pretraduciu %u cadena" msgstr[1] "S'ha pretraduciu %u cadenas" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Pretraducindo…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "S'ha pretraduciu %d dentrada." msgstr[1] "S'ha pretraduciu %d dentradas." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "S'ha marcau as traduccions como que les fa falta treballo porque pueden " "estar imprecisas. Has a revisar-las pa correchir-las." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "No s'ha puesto pretraducir garra dentrada." #: src/pretranslate.cpp:218 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 no contién cadenas similars a lo conteniu d'iste fichero. Nomás ye " "efectivo pa las traduccions semiautomaticas dimpués que o Poedit aprenda " "prau de fichers que traduciés de traza manual." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pretraducir" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "No replenar que as coincidencias exactas" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "No marcar as coincidencias exactas como si les fese falta treballo" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Activa-lo nomás si confidas en a calidat d'a tuya MT. De traza " "predeterminada todas as coincidencias d'a MT se marcan como que les fa falta " "treballo y s'han a revisar antis de no usar-las" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "A pretraducción mira automaticament coincidencias exactas u fuscas pa las " "cadenas no traducidas en a memoria de traducción y replena las suyas " "traduccions." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Carpetas" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Rotas excluidas" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Opcions avanzadas d'extracción" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Extrayer as notas pa os traductors dende:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Totz os comentarios" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Indicadors xgettext adicionals:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Parolas clau adicionals" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Nombre d'o prochecto pa o que ye a traducción" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "p. eix. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomendau)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "En primeras alza o fichero. Ista sección no se puet editar dica que no se " "faga." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "" #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Comentario:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Borrar" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Editar o prochecto" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nombre d'o prochecto:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Examinar" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Adhibir a carpeta t'a lista" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Acceptar" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Fichero" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Ubrir recient" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Chestor de &catalogos" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Chestor de &catalogos" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Zarrar" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Alzar" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Preferencias" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Salir" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Salir" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Copiar dende o singular" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Copiar dende o singular" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "A la traducción le fa falta &treballo" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "A la traducción le fa falta &treballo" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Editar o &comentario" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Editar o &comentario" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Sucherencias" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Mirar o siguient" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Mirar l'anterior" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Mirar o siguient" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Mirar l'anterior" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Ordenar-los por l'orden d'o &fichero" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Ordenar-los por l'orden d'o fichero" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Ordenar-los por l'&orichen" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Ordenar-los por l'orichen" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Ordenar-los por a &traducción" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Ordenar-los por a &traducción" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "A&grupar por o contexto" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "A&grupar por o contexto" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Dentradas con errors primero" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Dentradas con errors primero" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Dentradas sin traducir primero" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Dentradas sin traducir primero" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Amostrar a barra lateral" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Amostrar a barra d'estau" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sincronizar con o Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validar as traduccions" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validar as traduccions" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Purgar as traduccions borradas" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Purgar as traduccions borradas" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Ir" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "Feito y &siguient" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "Feito y &siguient" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Traducción &anterior" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Traducción &anterior" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Traducción siguie&nt" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Traducción siguie&nt" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Ante&rior sin rematar" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Ante&rior sin rematar" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Siguien&t sin rematar" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Siguien&t sin rematar" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Anterior forma plural" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Anterior forma plural" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Siguient forma plural" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Siguient forma plural" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Aduya en linia" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Aduya en linia" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "manual de &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Manual de &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Sobre o Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "Arredol de" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Configuración d'extractor" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista d'extensions deseparadas por punto y coma (p. eix. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Execución:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Comando ta extrayer as traduccions:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Iste comando se fa servir ta ubrir l'extractor.\n" "%u expande o nombre d'o fichero de salida, %K amuestra\n" "as parolas clau, %F enlista os fichers de dentrada y\n" "%C define o conchunto de caracters (vei abaixo)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Elemento d'a lista de parolas clau:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "S'adhibirá a la linia de comandos una vegada por\n" "cada parola clau. %k contién a parola clau." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Elemento d'a lista de fichers de dentrada:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "S'adhibirá a la linia de comandos una vegada por cada\n" "fichero de dentrada. %f contién o nombre de fichero." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Chuego de caracters d'o codigo fuent:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "S'adhibirá a la linia de comandos nomás si se proporciona\n" "o codigo d'o chuego de caracters fuent. %c contién a valura d'o chuego de " "caracters." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Propiedatz de traducción" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nombre d'o prochecto y versión:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Formas plurals:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Fer servir os regles predeterminaus pa iste idioma" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Emplegar una expresión personalizada" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Aprender arredol de formas plurals" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Chuego de caracters:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Propiedatz de traducción" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Rotas de fuents" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Directorios fuent" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Extrayer o texto d'o fichero d'orichen en os directorios siguients:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Directorio radiz:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Parolas clau de fuents" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Parolas clau orichinals" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Fer servir istas parolas clau (nombres de funcions) pa reconoixer textos\n" "traducibles en fichers fuent, amás d'as parolas clau por defecto:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" "Fer servir tamién as parolas clau predeterminadas pa os idiomas suportaus" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Aprender sobre as parolas clau d'o GNU gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validar" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Mirar as errors en a traducción" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Barra lateral" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "O texto viello d'orichen (antis que no cambiase mientras bella " "actualización) con que corresponde a traducción imprecisa d'agora." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "" #: src/sidebar.cpp:196 msgid "Comment" msgstr "" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Adhibir un comentario" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Adhibir un comentario" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "No s'ha trobau coincidencias." #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "No s'ha trobau coincidencias" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Ista cadena s'ha trobau en as traduccions memorizadas d'o Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "No se puet executar o programa: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "" #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Fer servir a luenga por defecto)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Selección de luenga" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Seleccionar a luenga preferida" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Cal reenchegar o Poedit ta que os cambeos tiengan efecto." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "No puet creyar-se a carpeta temporal." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "No bi ha garra traducción. Ixo ye insolito." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Esviellar-lo dende un fichero POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Prener as cadenas traducibles d'una plantilla POT existent." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Puetz tamién extrayer cadenas traduciblesdreitament dende o codigo fuent:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Esviellar-lo dende as fuents" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Configurar o codigo d'extracción de fuents en propiedatz." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versión %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sincronizar" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sincronizar a traducción con o Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Arredol de %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Preferencias d’o %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Arredol de %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Servicios" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Amagar %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Amagar atros" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Amostrar-lo tot" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Salir de %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Preferencias..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferencias..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Aplicar" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Aplicar" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Dezaga" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Dezaga" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Cancelar" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Vuedar" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Vuedar" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Copiar" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Retallar" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Retallar" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Editar" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Salir" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Aduya" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nuevo" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Nuevo" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Acceptar" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Ubrir..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Ubrir..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "A&pegar" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Apegar" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Preferencias" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Refer" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Refrescar" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Alzar como" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Alzar como" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Seleccion&ar-lo tot" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Seleccionar-lo tot" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Desfer" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Sí" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Sí" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Mayus+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Intro" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Alto" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Abaixo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "mayus" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/README0000644000175100001660000000042015011674230010766 Poedit translations are managed at Crowdin and the best way to contribute translations is to do it over there: https://crowdin.com/project/poedit (Note that you can download the PO file, edit it in Poedit and upload back; you don't have to use the web interface.) poedit-3.6.3/locales/es.mo0000644000175100001660000017275015011674363011101 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-«O û‘ ’2’K’7b’š’9®’9è’k"“ZŽ“xé“ b”m” €”G‹” Ó”Þ”ð”ù” • ••• #•-•?•Q•Y• b•m•„•›•¤•º•Еו Þ• è•õ• –#–'–0–A– R– \–f– m–{–Œ–¢–¸–È–æ–— — — — )—7—W—w—Š— — ª—´—Ó— ò— ˜4˜J˜`˜e˜j˜‡˜#›˜ ¿˜ ˘ ؘå˜ì˜ô˜ü˜™#™7™H™\™o™Š™ž™²™Ù×™!ò™ š$š!Cš$eš!Šš¬ššOÔš,$›Q›/k›*›› ƛћ"Ù›3ü›<0œ'mœ2•œÈœÏœoáœQOf_¶0žGžPž«bžŸ Ÿ&%Ÿ$LŸ4qŸ.¦Ÿ ÕŸãŸùŸ $ B Z 'u  ½  × ø ¡)¡ 0¡=¡ P¡]¡p¡w¡|¡“¡&ª¡)Ñ¡$û¡ ¢ +¢7¢S¢e¢"t¢:—¢ Ò¢Œà¢m£t£ˆ£¢£¶£%УAö£:8¤%s¤ ™¤¥¤9½¤#÷¤¥²,¥ߥ祦%¦E¦%L¦r¦%{¦¡¦%´¦Ú¦ì¦§B§[§ w§%§j§§L¨;_¨ ›¨ §¨²¨.ƨõ¨. ©?8©"x©"›©¾©Å©Ù©à©ó©ªª*ª:ªMª Vª`ªuª|ª «)«{F««Ü«$ø«¬%¬-¬2¬Q¬a¬ s¬¬”¬¦¬=¸¬ö¬­/.­H^­m§­® 1®.=®,l®=™®,×®4¯9¯A¯^¯'{¯]£¯°°°)°@°Z°y°°¡°±°Á°Ѱã°"õ°±!± 9± E± O±]±c±y±‘±/¬±ܱ²à±¥“²9³ɳ!ѳó³# ´-´#C´g´4„´¹´Ô´Û´$ò´µ!7µYµbµ {µ‡µ µšµ ·µÁµ?ܵ1¶N¶h¶}¶”¶œ¶5²¶'è¶·"·=·&]·„·G‹·Ó·Dè·-¸£<¸;ู5¹8N¹'‡¹¯¹ Á¹ι è¹9ò¹,º4ºLº dº pº|º’º˜»ž»½»Ì»ë»ú»¼,¼C¼F¼'c¼g‹¼ó¼1½4B½w½/’½3½ö½ ¾¾«¾žã¾¿%¿6¿S¿ p¿~¿‘¿¤¿´¿пÙ¿â¿ë¿ð¿ÀÀ9À‹WÀãÀéÀÁW ÁaÁ0xÁ©ÁrÆÁO9‰ÂÂJ°Âû ÃÃM0à ~ÃÄŒÄ3QÅ'…Å­Å ½Å ÉÅ3ÖÅ1 Æ<Æ«NÆ{úÆrvÇ éÇöÇÈÈ/,È\ÈrȈȡȵÈÉÈéÈ þÈ ÉÉ0É7ÉVÉF\É£É¶É ¾ÉÉÉáÉ ùÉÊ' Ê'3Ê[ÊnÊ%Ê §Ê²ÊÃÊÔÊ çÊ/õÊ %Ë"1Ë}TËÒËçËïË÷ËÌÌ0Ì GÌTÌdÌtÌD„ÌÉÌßÌñÌ(Í+Í$AÍ9fÍ& Í!ÇÍéÍûÍ ÎÎ.Î DÎeÎ}ΔΪÎÈÎØÎñÎ"Ï'Ï=ÏUÏlÏ |ÏŠÏ’Ï˜Ï  Ï­ÏÉÏÛÏ÷ÏýÏÐÐ2ÐGÐ^ÐsЇРеÐÉÐ*âО Ñ&¬Ñ!ÓÑõÑÒÒ3ÒMÒ^ÒxÒ‰ÒOÒßÒøÒ ÓÓ6ÓMÓ iÓ6ŠÓÁÓ<ÕÓ Ô Ô,ÔA¼Ô’þÔ‘Õ¡Õ&¹ÕàÕðÕ& Ö70ÖhÖ kÖ@xÖ¹ÖÙÖäïÖ'Ô×Fü×=CØñØÇsÙ:;Ú6vÚW­ÚrÛYxÛ$ÒÛ#÷Û#Ü1?Ü{qÜ\íÜ*JÝKuÝAÁÝMÞ6QÞ)ˆÞ¡²Þ'Tß(|ß+¥ß/Ñß6àB8àu{à$ñàOá>fái¥áœâG¬âvôâdkãŠÐãÏ[ä@+å’låsÿågsæÛæáæ òæÿçè 9èEè^èvèè[­èu éEé,Åéòé ê&êAêÃêEë¦Xëÿëìì? ì+`ìŒìŸì½ì Ïì Üìçìúì, í67í ní í°íÉíÞí÷íî4îDî$]î‚î+œî%Èîîî ï!)ï+Kï4wï*¬ïl×ïDð`ðhð …ð‘ð¡ð±ð ÐðÞð%íðñ+ñ3ñ6;ñrñ Šñ•ñ ³ñÔñOØñ>(òvgò9Þò ó*"óMóÍóÒó Ùó2åó#ô<ô(Dô-mô›ô´ô¹ô¿ôÅô ËôÕôÝôåôìôðôõô üô õõ%õ 5õ Aõ KõXõvõ‰õ £õ±õ$Ãõ|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Spanish Language: es_ES MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: es-ES X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (modificado) (sin guardar)%d aparición en código%d apariciones en código%d entrada%d entradasSe pretradujo %d entrada.Se pretradujeron %d entradas.%d error%d erroresSe ha producido un error %d.Se han producido %d errores.Se ha producido un error %d:Se han producido errores %d:Se detectó un problema %d con las cadenas de origen.Se detectaron %d problemas con las cadenas de origen.Se encontró %d problema en la traducción.Se encontraron %d problemas en la traducción.No se cargó %i renglón del archivo «%s» correctamente.No se cargaron %i renglones del archivo «%s» correctamente.Formato %sPreferencias de %sFormato %sLa traducción %s fue importada.Las traducciones %s fueron importadas.A&cerca deA&cerca de Poedit&Aplicar&Volver&Cancelar&Vaciar&Cerrar&Copiar&Eliminar&Hecho; siguiente&Hecho; siguiente&Editar&Archivo&Buscar…Manual de &GNU gettextManual de &GNU gettext&NavegarA&grupar por contextoA&grupar por contextoAy&uda&Nuevo&Nuevo…&Siguiente >Traducción &siguienteTraducción &siguiente&No&Aceptar&Ayuda en línea&Ayuda en línea&Abrir…&Abrir…&Pegar&Preferencias&Preferencias…Traducción &anteriorTraducción &anterior&Propiedades…&Purgar traducciones sin usar&Purgar traducciones sin usar&Salir&Rehacer&Reemplazar&GuardarG&uardar como&Mostrar ocurrencias de código&Mostrar ocurrencias de código&Ventana de inicio&Ventana de inicio&Traducción&DeshacerEntradas &sin traducir primeroEntradas &sin traducir primeroActualizar desde código &fuenteActualizar desde código &fuente&Validar traducciones&Validar traducciones&Ver&Sí(Usar idioma predeterminado)(no se ha accedido)(se necesita Windows 8 o posterior)< &AnteriorAcerca de %sCuentaCuentasAñadirAñadir comentarioAñadir archivos…Añadir carpetas…Añadir proyectoAñadir comodín…Añadir comentarioAñadir carpeta a la listaAñadir archivos…Añadir carpetas…Añadir proyectoAñadir comodín…Palabras clave adicionalesSeñales de xgettext adicionales:AvanzadasOpciones avanzadas de extracción…Opciones avanzadas de extracciónOpciones avanzadas de extracción…Todos los archivos de traducciónTodos los comentariosTodas las cadenasUtilizar también las palabras clave predeterminadas en los lenguajes admitidosEnfocar siempre el campo de entrada de textoSe ha producido un error.Un elemento de la lista de archivos de entrada:Un elemento de la lista de palabras clave:AparienciaAplicarCoincidencias aproximadas desde TM¿Confirma que quiere eliminar el extractor «%s»?¿Confirma que quiere restablecer la memoria de traducción?Buscar actualizaciones automáticamenteCompilar automáticamente el archivo MO al guardarVolverDirectorio raíz:Las versiones beta contienen las funcionalidades y mejoras más recientes, pero pueden resultar menos estables.Traer todo al frenteArchivo PO erróneo: la forma plural «msgstr» se utiliza sin «msgid_plural»Archivo PO erróneo: la forma singular «msgstr» se utiliza conjuntamente con «msgid_plural»Marcación errónea en la cadena de traducción.ExaminarExaminar archivosDe manera predeterminada, también se incluyen los resultados imprecisos, pero se marcan para revisión. Active esta opción para incluir solo las coincidencias perfectas.CancelarCancelando…No se puede crear la carpeta temporal.No se puede ejecutar el programa: %sNo se puede pretraducir desde un idioma desconocido.No se puede pretraducir sin el texto original.A mayúsculas&Gestor de catálogos&Gestor de catálogosGestor de catálogosCambiar idioma de la interfazConjunto de caracteres:Revisar el documento ahoraComprobar gramática con la ortografíaRevisar ortografía al escribirBuscar actualizaciones…Buscar errores en la traducciónBuscar actualizaciones…Revisar la ortografíaVaciarVaciar menúVaciar traducciónVaciar menúVaciar traducciónCerrarNubeApariciones en códigoApariciones en códigoColabore con otras personas en línea.Recopilando archivos de código fuente…Orden para extraer las traducciones:ComentarioComentario:Comentarios con el prefijo:Compilar en MO…Compilar en…Archivos de traducción compiladosConfigure la extracción de código fuente en Propiedades.ConfirmaciónConecte Poedit con plataformas de localización en la nube compatibles para sincronizar perfectamente las traducciones gestionadas en ellas.CopiarCopiar del singularCopiar del texto originalCopiar del singularCopiar del texto originalCorregir ortografía automáticamenteNo se han podido descargar los detalles del proyecto de Localazy.No se pudo cargar el archivo; probablemente esté dañado.No se pudo guardar el archivo «%s».Crear nuevoCrear traducción nuevaCree una traducción nueva a partir de una plantilla POT.Crear proyecto de traducción nuevoError de CrowdinCrowdin es una plataforma de gestión de traducciones en línea y una herramienta de traducción colaborativa. Usamos Crowdin para traducir Poedit a muchos idiomas y nos encanta.Cor&tarExtractores personalizados:Extractores personalizados:Personalizar barra de herramientas…CortarTamaño de base de datos en el disco:EliminarEliminar de la memoria de traducciónEliminar extractorEliminar de la memoria de traducciónEliminar proyectoEliminar el comentarioEliminar el proyectoEliminar el proyecto no suprimirá ningún archivo de traducción.Determinando diferencias…Carpetas:¿Quiere eliminar el proyecto «%s»?¿Quiere volver a cargar el archivo desde el disco? Los cambios que haya efectuado en Poedit se perderán.¿Quiere eliminar todas las traducciones que son idénticas al texto fuente?¿Quiere eliminar todas las traducciones que ya no se usan?&No guardarNo guardarNo mostrar de nuevoNo marcar coincidencias exactas para revisiónNo mostrar de nuevoDescargando las traducciones más recientes…La descarga de traducciones está desactivada en este proyecto.Arrastre carpetas o archivos aquíArrastre carpetas o archivos aquí&SalirE&xportar a HTML…EditarEditar &comentarioEditar &comentarioEditar comentarioEditar comentarioEditar proyectoEditar el proyectoEdiciónEditar…Correo electrónico:Modo de pantalla completaHay entradas en este archivo con una cantidad de formas de plural distinta de la establecida en la cabecera «Plural-Forms»Entradas con errores primeroEntradas con errores primeroLas entradas con errores se han marcado en rojo en la lista. Se mostrarán detalles del error cuando seleccione la entrada.Error al abrir el archivoError al guardar el archivoError al cargar el archivo XLIFF: %sError: ErroresTodoCoincidencias exactas desde TMRutas excluidasExportar a TMX…Exportar a…Exportar a HTML…Exportar a TMX…Exportando a HTMLFalló la exportación de la memoria de traducción a «%s».Exportando traducciones…Extraer desde código fuenteExtraer las notas para traductores a partir de:Extraer textos de archivos de código fuente en las carpetas siguientes:Extrayendo cadenas traducibles desde el archivo %s…Extrayendo cadenas traducibles desde los archivos %s…Configuración de extractorExtractoresNo se pudo comunicar con el proceso de Poedit.Error al extraer cadenas del código fuente.No se pudo cargar el archivo con las traducciones extraídas.Error al combinar los catálogos de gettext.No se pudo actualizar la memoria de traducciones: %sArchivoNo se puede abrir el archivoNo existe el archivo «%s».El archivo «%s» no es de traducción.El archivo «%s» es de solo lectura y no se puede guardar. Guárdelo con un nombre distinto.BuscarBuscar siguienteBuscar anteriorBuscar y reemplazar…Buscar en los comentariosEncontrar en textos originalesBuscar en traduccionesBuscar siguienteBuscar anteriorCorregir idiomaCorregir idiomaCorregir cabeceraCorregir cabeceraArchivos de traducción de FlutterForma %iForma %i (no utilizada)GNU gettextGeneralesArchivos HTMLAyudaOcultar barra lateralOcultar barra de estadoOcultar esta notificación¿Cómo funciona la sincronización en la nube?Id.Si continúa con la purga, se eliminarán permanentemente todas las traducciones no utilizadas. Si las cadenas correspondientes vuelven a añadirse, deberá traducirlas de nuevo.Si anteriormente denegó el acceso a sus archivos, puede permitirlo en Preferencias del sistema ▸ Seguridad y privacidad ▸ Privacidad ▸ Archivos y carpetas.Si previamente denegó el acceso a sus archivos, puede permitirlo en Configuración del sistema > Privacidad y Seguridad > Archivos y carpetas.IgnorarIgnorar mayúsculas y minúsculasImportar desde TMX…Importar archivos de traducción…Importar desde TMX…Importar archivos de traducción…Importando desde “%sâ€â€¦La importación de la memoria de traducción falló.Importando traducciones…En: %sIncluir versiones betaMayúsculas/minúsculas incoherentesEspacios en blanco incoherentesInformación acerca del traductorInstalarEl archivo no es válidoEjecución:ProblemaProblemasArchivos de traducción JSONConservarNombre o código de idiomaEl idioma de la traducción es igual que el del texto original.No se ha establecido el idioma de la traducción.Idioma de la traducción:Selección de idiomaEquipo de traductores:Idioma:Última modificaciónMás información sobre las palabras clave de gettextMás información sobre formas pluralesMás informaciónMás información sobre %sMás información sobre CrowdinMás información sobre gettext de GNULíneaEl renglón %d del archivo «%s» está dañado (datos %s no válidos).Finales de renglón:Lista de extensiones separadas por punto y coma (p. ej., *.cpp;*.h):Cargar inglésLocalazy es una plataforma de localización altamente automatizada que permite a cualquiera traducir sus productos y contenidos a varios idiomas de forma sencilla.No se pueden editar los archivos MO directamente en Poedit.Convertir en minúsculasConvertir en mayúsculasCree una traducción nueva a partir de este archivo POT.Cabecera con formato incorrecto: «%s»Gestionar cuentasGestionar…Combinando diferencias…MinimizarEl nombre del proyecto al que se destina esta traducciónNombre:Siguien&te sin terminarSiguien&te sin terminarPor revisarPor revisarError de red: %s (%d)No dejar que la lista de cadenas retenga el enfoque. Si se activa esta opción, debe usar Ctrl + teclas de dirección para moverse por la lista, pero también puede comenzar a teclear inmediatamente sin necesidad de oprimir el tabulador para cambiar el enfoque.NuevoNueva desde archivo &POT/PO…Cadenas nuevasNueva desde archivo &POT/PO…Cadenas nuevasNuevas cadenas a traducir:Forma plural siguienteForma plural siguienteNoNo se hallaron coincidenciasNo se pudo pretraducir ninguna entrada.En el archivo no se proporciona información sobre las apariciones de esta cadena en el código fuente.No se hallaron coincidenciasNo se encontraron problemas con esta traducción.No hay ningún proyecto de traducción en su cuenta.No hay información de usoNo todas las formas plurales están traducidas.Acción no autorizada. Acceda a la cuenta de nuevo.Notas para traductoresAceptarUnoActive esta opción si confía en la calidad de la TM. De manera predeterminada, todas las coincidencias de TM son marcadas para revisar y deben repasarse antes de su uso.Solo correspondencias exactasAbrir traducción en nube…Abrir recientesAbra y edite archivos de traducción.Abrir traducción en la nubeAbrir traducción en nube…Abrir archivoAbrir en el editorAbrir en el editorAbrir recientesAbrir archivo de referenciaAbrir…Abrir…OpcionesOtroAnte&rior sin terminarAnte&rior sin terminarArchivos de traducción POPlantillas de traducción POTLos archivos POT son plantillas; no contienen traducciones. Para realizar una traducción, cree un archivo PO nuevo basado en la plantilla.PegarPegar con el mismo estiloRutasEfectúa una actualización desde el código fuente de todos los archivos del proyecto.Se denegó el permiso.A la traducción le falta el sustitutivo «%s».Uso correcto de sustitutivosEn su lugar, abra y edite el archivo PO correspondiente. Cuando lo guarde, el archivo MO se actualizará también.Guarde el archivo primero. No se podrá editar esta sección hasta que lo haga.PluralTraducciones de formas pluralesLa expresión de formas plurales utilizada en el archivo es inusual en %s.Formas plurales:PoeditPoedit. Gestor de catálogosPoedit corrigió automáticamente el contenido no válido del archivo «%s».Poedit puede intentar rellenar las entradas nuevas solo a partir de traducciones anteriores en el archivo o desde su memoria de traducción entera. Si la MT está casi vacía, la operación no será muy efectiva, pero mejorará a medida que le añada más traducciones.Poedit no puede mostrar el código fuente donde se utiliza la cadena porque el archivo no está disponible en la ubicación referida o es una referencia simbólica que no apunta a un archivo real.Poedit es un editor de traducciones fácil de usar.Poedit no pudo abrir el archivo «%s».Pre&traducir…PretraducirPretraducidaSe pretradujo %u cadenaSe pretradujeron %u cadenasPretraduciendo desde la memoria de traducción…Pretraduciendo…La pretraducción encuentra automáticamente en la memoria de la traducción coincidencias exactas o por revisar de cadenas sin traducir y las incluye en sus traducciones.La pre-traducción requiere que el texto original esté disponible. No funciona si sólo se utilizan IDs sin el texto real.La pretraducción requiere que se conozca la lengua del texto original. Poedit no pudo detectarlo en este archivo.PreferenciasPreferencias…Preferencias…Preparando cadenas…Conservar el formato de los archivos existentesForma plural anteriorForma plural anteriorTexto de origen anteriorEditada previamenteEditada previamenteNombre del proyecto y versión:Nombre del proyecto:Proyecto:ProyectosComprobaciones de puntuaciónPurgarPurgar traducciones eliminadasSalirLa lectura del contenido del archivo falló con el siguiente error: %sArchivos recientesRehacerActualizarVolver a cargar archivoVolver a cargar archivoQuedan: %dQuitarQuitar traducciones iguales a la fuenteQuitar traducciones iguales a la fuenteCadenas eliminadasCadenas eliminadasCadenas eliminadas (ya innecesarias):ReemplazarReemplazar &todoReemplazar &todoTexto de reemplazoReemplazar…Falta la cabecera obligatoria «Plural-Forms».RestablecerRestablecer memoria de traducciónAl reiniciar la memoria de traducción se borrarán todas las traducciones almacenadas. Esta operación no se puede deshacer.Revelar en el FinderRevisarGuardarG&uardar como…G&uardar como…Guardar de todos modosGuardar de todos modosGuardar comoGuardar como…Guardar cambiosGuardar archivoNo se permite guardar en un lugar diferente para los archivos XCLOC.Capturas de pantalla:Seleccionar &todoSeleccionar todoSeleccione los archivos TMX que importarSeleccione la carpetaSeleccione el archivo de traducciónSeleccione los archivos de traducción que se importaránSeleccione la plantilla de traducciónSeleccione el idioma que prefieraEstablecer idiomaEstablecer idiomaConfiguraciónConfiguración…Mostrar barra lateralMostrar ortografía y gramáticaMostrar barra de estadoMostrar &id. de cadenaMostrar sustitucionesMostrar barra de herramientasMostrar alertasMostrar en el ExploradorMostrar en carpetaMostrar u ocultar la barra lateralMostrar barra lateralMostrar barra de estadoMostrar &id. de cadenaMostrar alertasBarra lateralAccederSalirAccederAcceder a %sAcceder a cuenta en la nubeAcceder a CrowdinAcceder a cuenta en la nubeSalirSingularCopipegado inteligenteGuiones inteligentesEnlaces inteligentesComillas tipográficasOrdenar por &archivoOrdenar por &origenOrdenar por &traducciónOrdenar por &archivoOrdenar por &origenOrdenar por &traducciónConjunto de caracteres del código fuente:Los extractores de código fuente se usan para encontrar los mensajes traducibles en los archivos de código fuente y extraerlos para permitir su traducción.El código fuente no está disponible.No se encontró el código fuenteTexto de origenId. del texto originalTexto de origen — %sPalabras clave de fuentesRutas de fuentesPalabras clave de fuentesRutas de fuentesHablaSe desactivó la revisión ortográfica porque falta el diccionario para el %s.Ortografía y gramáticaIniciar locuciónDetener locuciónTraducciones almacenadas:Contexto de cadena: %sIdentificador de cadena: %sLongitud de cadena en caracteresLongitud de cadena en caracteres: traducción | origenTexto que encontrarLos proyectos Crowdin basados en cadenas no son compatibles.SustitucionesSugerenciasSi el idioma de traducción no se configura correctamente, se afectarán funcionalidades como las sugerencias y la gestión de formas plurales.Sustitutivo superfluo «%s» que no figura en el texto de origen.Admite todos los lenguajes de programación que reconocen las herramientas gettext de GNU (PHP, C/C++, C#, Perl, Python, Java, JavaScript y más).SincronizaciónSincronizar con CrowdinSincronizar la traducción con CrowdinSincronizaciónError de sincronizaciónFalló la sincronización con Crowdin.Error de sintaxis en la cabecera Plural-Forms («%s»).MTArchivos TMXTomar las cadenas traducibles desde una plantilla POT existente.Nombre de equipo y correo o URLSustitución de textoLa MT no contiene ninguna cadena similar al contenido de este archivo. Solo será efectiva para traducciones semiautomáticas después de que Poedit haya aprendido lo suficiente de archivos traducidos manualmente por el usuario.El formato del archivo TMX es erróneo.Si guarda, se perderán los cambios efectuados en la otra aplicación.El archivo no se puede compilar en el archivo MO para su uso.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 pendientes de revisión y corregirlas si es necesario.No se pudo guardar el archivo en el juego de caracteres «%s», tal como se indicó en la configuración de la traducción. En su lugar, se guardó en UTF-8 y se modificó la opción en consonancia.Se ha modificado el archivo. ¿Quiere guardar los cambios?El archivo está en un formato que Poedit no reconoce.El archivo se compiló en el formato MO, pero es posible que no funcione correctamente.El archivo se guardó con seguridad y se compiló en el formato MO, pero es posible que no funcione correctamente.El archivo se guardó con seguridad, pero no puede compilarse en el formato MO ni usarse.El archivo se guardó con seguridad.No se pudo abrir el archivo «%s».El archivo "%s" no se pudo guardar.Otra aplicación ha modificado el archivo «%s».El texto original anterior (antes de que cambiase en una actualización) al que corresponde la traducción ahora imprecisa.La forma más sencilla de llenar este archivo con traducciones es actualizarlo desde un POT:La traducción no comienza con un espacio.La traducción termina con un salto de renglón, pero el texto original no.La traducción termina con un espacio, pero el texto original no.La traducción termina con «%s», pero el texto original termina con «%s».Falta un salto de renglón al final en la traducción.Falta un espacio final en la traducción.La traducción está lista para su uso, pero aún no se ha traducido %d cadena.La traducción está lista para su uso, pero aún no se han traducido %d cadenas.La traducción está lista para su uso.La traducción debe terminar con «%s».La traducción no debe terminar con «%s».La traducción debe comenzar como una oración.La traducción debe comenzar con una letra minúscula.La traducción comienza con un espacio, pero el texto original no.Las traducciones se marcaron para revisar ya que pueden ser imprecisas. Debe repasarlas para garantizar la exactitud.No hay traducciones. Eso es inusual.Ocurrió un problema al dar formato al archivo (pero se guardó correctamente).Se ha producido un error al subir las traducciones a Localazy.Se han producido errores al cargar el archivo. Es posible que falten algunos datos o que estén dañados.Estos valores afectan el formato interno de los archivos PO. Ajústelos si usted tiene requisitos específicos; por ejemplo, debido al control de versiones.Este archivo JSON no es de traducciones y no se puede editar en Poedit.Esta acción borrará cualquier traducción que coincida exactamente con el texto original. Esto no se puede deshacer.Este archivo tiene entradas con formas plurales, pero no tiene configurada la cabecera Plural-Forms.Este archivo utiliza ID de cadena en lugar del texto original. Poedit puede cargar textos en inglés desde el archivo “%s†para usted.Esta orden se utiliza para abrir el extractor. %o expande el nombre del archivo de salida, %K muestra las palabras clave, %F enlista los archivos de entrada y %C define el conjunto de caracteres (vea abajo).Esta cadena se encontró en la memoria de traducción de Poedit.Esto se adjuntará a la línea de órdenes solo si se proporcionó el conjunto de caracteres del código fuente. %c expande al valor del conjunto.Esto se añadirá a la línea de órdenes una vez por cada archivo de entrada. %f se expande al nombre del archivo.Esto se añadirá a la línea de órdenes una vez por cada palabra clave. %k contiene la palabra clave.TotalTransformacionesLas entradas traducibles no se añaden manualmente en el sistema Gettext, sino que se extraen automáticamente del código fuente. Así se mantienen actualizadas y precisas. Los traductores normalmente emplean plantillas de PO (POT) que proporcionan los programadores.Traducir proyecto en la nubeTraducidas: %d de %d (%d %%)TraducciónIdioma de la traducciónMemoria de traduccionesTraducción por re&visarPropiedades de la traducciónEl archivo de traducción ya está actualizado, no se han realizado cambios en las cadenas.El archivo de traducción se actualizó con el cambio %s.El archivo de traducción se actualizó con los cambios %s.La base de datos de la memoria de traducción está dañada: %s (%d).Error de la memoria de traducción: %s (%d).Traducción por re&visarPropiedades de traducciónSugerencias de traducciónHace falta el texto de origen para que funcionen las sugerencias de traducción. No funcionarán si solo se usan identificadores.Las sugerencias de traducción requieren que se conozca la lengua del texto de origen. Poedit no pudo detectarlo en este archivo.Traducción — %sLas traducciones no pudieron actualizarse desde el código fuente porque no se encontró ningún código en la ubicación especificada en las propiedades del archivo.DosUTF-8 (recomendado)DeshacerInesperadamente el contenido está ausente en el archivo XCLOC.Se produjo una excepción no controlada: %sUnix (recomendado)Error desconocido en Crowdin.Error desconocidoSin traducirActualizarActualizar resumenActualizar todoActualizar todos los catálogos del proyecto¿Quiere actualizar todos los catálogos del proyecto?Actualizar desde archivo &POT…Actualizar desde archivo &POT…Actualizar desde códigoActualizar desde POTActualizar desde códigoActualizar desde código fuenteResumen de la actualizaciónActualizacionesFalló la actualizaciónActualizando catálogos de proyectosActualizando traduccionesActualizando la información del usuario…Error al subir las traducciones a %s.Cargando traducciones a %s…Cargando las traducciones…Usar una expresión personalizadaUsar tipo de letra personalizado en listas:Usar tipo de letra personalizado en campos de texto:Usar reglas predeterminadas de este idiomaUsar estas palabras clave (nombres de funciones) para reconocer mensajes traducibles en los archivos fuente:Usar memoria de traducciónValidarResultados de la validaciónVersión %sVer detalles…Ver detalles…Esperando la autenticación…Advertencia: Este es PoeditAl actualizar desde el código fuenteSolo palabras completasVentanaWindows¿Le gustaría usar el inglés para el texto original?Búsqueda bidireccionalAjustar a:Archivos de traducción XLIFFCatálogo de localización XcodeSíTambién puede extraer las cadenas traducibles directamente del código fuente:No se puede soltar más de un archivo en la ventana de Poedit.No tiene permiso para leer archivos de código fuente desde la ubicación especificada en las Propiedades del archivo.Debe reiniciar Poedit para que los cambios surtan efecto.Su nombreLos cambios se perderán si no los guarda.Estos datos se utilizan únicamente para establecer el valor de la cabecera «Last-Translator» de los archivos de GNU gettext.CeroEscalaPor revisarno eliminar archivos temporales (para depuración)p. ej., nplurals=2; plural=(n > 1);error: incluir coincidencias aprox. del archivoir al elemento en el número de renglón dadomanejar un URI poedit://Alt+Ctrl+AbajoIntroIzquierdaDerechaMayús+ArribaaltctrlmayúsAcerca de %sOcultar %sOcultar el restoPreferencias…Salir de %sServiciosMostrar todopretraducir a partir de la MTidioma desconocidoversión no admitida (%s)advertencia: usted@ejemplo.com«%s» no es un archivo POT válido.poedit-3.6.3/locales/sl.po0000644000175100001660000026267415011674230011111 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Slovenian\n" "Language: sl_SI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " "n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: sl\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Skrij to obvestilo" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ne prikazuj veÄ" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ne prikazuj veÄ" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Posodobi povzetek" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Zapri" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Datoteka" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Novi nizi" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Zbiranje izvornih datotek …" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Datoteke z razÅ¡irjenimi prevodi ni bilo mogoÄe naložiti." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "V: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Izvorna koda ni na voljo." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Prevoda ni mogoÄe posodobiti iz izvorne kode, ker na mestu, ki je doloÄeno v " "lastnostih datoteke, ni bilo mogoÄe najti nobene kode." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Dovoljenje zavrnjeno." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Nimate dovoljenja za branje datotek izvorne kode z mesta, navedenega v " "lastnostih datoteke." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "ÄŒe ste predhodno zavrnili dostop do svojih datotek, ga lahko dovolite v " "Nastavitve sistema -> Zasebnost in varnost -> Datoteke in mape." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "ÄŒe ste prej zavrnili dostop do vaÅ¡ih datotek, lahko to dovolite v Nastavitve " "sistema > Varnost in zasebnost > Zasebnost > Datoteke in mape." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Datoteke “%s†ni bilo mogoÄe odpreti." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Posodabljanje prevodov" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Združevanje razlik …" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Nepravilno oblikovana glava: »%s«" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Datoteke PO za prevajanje" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Predloge POT za prevajanje" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Datoteke s prevodi XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Prevajalske datoteke JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Prevajalske datoteke Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Vse prevajalske datoteke" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Datoteka je v formatu, ki ga Poedit ne prepozna." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Ta datoteka JSON ni prevajalska datoteka in je ni mogoÄe urejati v Poeditu." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Branje vsebine datoteke ni uspelo z naslednjo napako: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Datoteka \"%s\" je le za branje in je ni mogoÄe shraniti.\n" "Shranite jo lahko pod drugim imenom." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Datoteke %s ni možno shraniti." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Posnetki zaslona:" #: src/catalog_po.cpp:134 #, 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 vrstica datoteke \"%s\" ni pravilno naložena." msgstr[1] "%i vrstici datoteke »%s« nista pravilno naloženi." msgstr[2] "%i vrstice datoteke »%s« niso pravilno naložene." msgstr[3] "%i vrstic datoteke »%s« ni pravilno naloženih." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Vrstica %d datoteke \"%s\" je poÅ¡kodovana (niso veljavni %s podatki)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "PoÅ¡kodovana datoteka PO: edninska oblika msgstr je uporabljena skupaj z " "msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "PoÅ¡kodovana datoteka PO: množinska oblika msgstr je uporabljena brez " "msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Datoteke ni bilo mogoÄe naložiti, verjetno je poÅ¡kodovana." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Pri nalaganju datoteke je priÅ¡lo do napak. Nekateri podatki morda zaradi " "tega manjkajo ali so poÅ¡kodovani." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "PriÅ¡lo je do težav pri pravilnem oblikovanju datoteke (datoteka je bila " "sicer uspeÅ¡no shranjena)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Datoteke ni mogoÄe shraniti v naboru znakov \"%s\", kot je doloÄeno v " "nastavitvah prevajanja.\n" "\n" "Namesto tega je bila shranjena v UTF-8 in nastavitev je bila ustrezno " "spremenjena." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Napaka pri shranjevanju datoteke" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "»%s« ni veljavna datoteka POT." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Napaka pri nalaganju datoteke XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "nepodprta razliÄica (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Okvarjena oznaka v prevajalskem nizu." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Povežite Poedit s podprtimi platformami za lokalizacijo v oblaku, da " "nemoteno sinhronizirate prevode, ki se upravljajo na njih." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Kako deluje sinhronizacija v oblaku?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "RaÄun" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(niste vpisani)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Odpri prevod v oblaku" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Upravljaj raÄune" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekt:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Jezik:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "VpiÅ¡i se v raÄun v oblaku" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "VpiÅ¡i se v raÄun v oblaku" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "V vaÅ¡em raÄunu ni navedenih prevajalskih projektov." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "PrenaÅ¡anje najnovejÅ¡ih prevodov ..." #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Vpis v %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Usklajevanje" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Nalaganje prevodov na %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Ni uspelo nalaganje prevodov na %s." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Napaka usklajevanja" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Dodaj" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Neznana napaka Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Niste pooblaÅ¡Äeni, ponovno se prijavite." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Prenos prevodov je v tem projektu onemogoÄen." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Prijava" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Prijavi" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Odjava" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Odjavi" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "VeÄ o Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "ÄŒakanje na preverjanje pristnosti …" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Posodabljanje uporabniÅ¡kih podatkov …" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Prijava v Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Usklajevanje s Crowdin ni uspelo." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Napaka v Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Nalaganje prevodov …" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopiraj" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "VeÄ o tem" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "Po&moÄ" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Datotek MO ni mogoÄe neposredno urejati s programom Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Napaka pri odpiranju datoteke" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Poskusite odpreti in urediti ustrezno datoteko PO. Ko jo shranite, bo " "posodobljena tudi kodno prevedena datoteka MO." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ne izbriÅ¡i zaÄasnih datotek (za razhroÅ¡Äevanje)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "upravljaj z naslovom URI poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "pojdi na element v vrstici z dano Å¡tevilko" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Povezovanje s programom Poedit je spodletelo." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Neobravnavana izjema: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Izberi pedlogo prevoda" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Neveljavna datoteka" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Izberi datoteko za prevod" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit je enostaven in priroÄen urejevalnik prevodov." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Ni mogoÄe povleÄi veÄ kot ene datoteke v okno Poedita." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Datoteka »%s« ni datoteka s prevodom." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Datoteka »%s« ne obstaja." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Preverjanje Ärkovanja je onemogoÄeno, ker ni nameÅ¡Äen slovar za %s." #: src/edframe.cpp:871 msgid "Install" msgstr "Namesti" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Datoteko »%s« je spremenil drug program." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Znova naloži datoteko" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Ali želite datoteko znova naložiti z diska? V nasprotnem primeru bodo vaÅ¡e " "neshranjene spremembe v Poeditu izgubljene." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Prezri" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Znova naloži datoteko" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Datoteka je bila spremenjena. Ali želite shraniti spremembe?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Shrani spremembe" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "ÄŒe opravljenih sprememb ne shranite, bodo trajno izgubljene." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Shrani" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Ne shrani" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ne shrani" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Spremembe, ki jih je naredila druga aplikacija bodo izgubljene, Äe shranite." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "PrekliÄi" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Vseeno shrani" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Vseeno shrani" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Shrani kot …" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Prevedi v …" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Pretvorjene prevodne datoteke" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Izvozi v HTML …" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Datoteke HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Posodobitev ni uspela" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Posodobi z datoteko &POT ..." #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Posodobi iz datoteke &POT …" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Najdena je %d napaka v prevodu." msgstr[1] "Najdeni sta %d napaki v prevodu." msgstr[2] "Najdene so %d napake v prevodu." msgstr[3] "Najdenih je %d napak v prevodu." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Rezultati preverjanja" #: src/edframe.cpp:1842 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 "" "Vnosi na seznamu z napakami so oznaÄeni z rdeÄo barvo. Podrobnosti napake so " "prikazane ob izboru." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Datoteka je varno shranjena." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Datoteka je bila varno shranjena in zbrana v formatu MO, vendar verjetno ne " "bo delovala pravilno." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Datoteka je varno shranjena, vendar je ni mogoÄe prevesti v format MO in " "uporabljati." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Datoteka je bila prevesena v format MO, vendar verjetno ne bo delovala " "pravilno." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Datoteke ni mogoÄe prevesti v format MO in uporabiti." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Ni bilo najdenih nobenih težav pri prevodu." #: src/edframe.cpp:1894 #, 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] "" "Prevod je pripravljen za uporabo, vendar pa %d nizov Å¡e ni prevedenih." msgstr[1] "" "Prevod je pripravljen za uporabo, vendar pa %d niza Å¡e nista prevedena." msgstr[2] "" "Prevod je pripravljen za uporabo, vendar pa %d nizi Å¡e niso prevedeni." msgstr[3] "" "Prevod je pripravljen za uporabo, vendar pa %d nizov Å¡e ni prevedenih." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Prevod je pripravljen za uporabo." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Program je samodejno popravil neveljavno vsebino v datoteki \"%s\"." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Datoteka je vsebovala podvojene vnose, ki niso dovoljeni v datotekah PO in " "bi prepreÄili uporabo datoteke. Poedit je odpravil težavo, vendar bi morali " "pregledati prevode vseh vnosov, oznaÄenih za delo, in jih po potrebi " "popraviti." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Jezik prevoda ni nastavljen." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Nastavi jezik" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Nastavi jezik" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "Predlogi niso na voljo, Äe jezik prevoda ni pravilno nastavljen. To lahko " "vpliva tudi na druge funkcije, kot so množinske oblike." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Jezik prevoda je enak izvornemu jeziku." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Popravi jezik" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Popravi jezik" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "V tej datoteki so vnosi z množinskimi oblikami, vendar ni nastavljena glava " "'Množinske oblike'." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Vnosi v tej datoteki imajo razliÄno Å¡tevilo oblik množine, od tistega, kar " "piÅ¡e v glavi 'Množinske oblike', datoteke" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "V glavi manjka zahtevano doloÄilo za množinske oblike." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Napaka skladnje v glavi množinskih oblik (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Popravi glavo" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Popravi glavo" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Izraz množinskih oblik, ki ga uporablja datoteka, je nenavaden za %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Pregled" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Ali želite za izvorno besedilo uporabiti angleÅ¡Äino?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Ta datoteka uporablja ID-je nizov namesto izvornega besedila. Poedit lahko " "namesto vas naloži angleÅ¡ka besedila iz datoteke “%sâ€." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Naloži angleÅ¡Äino" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Prevedeno: %d %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Preostalo: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d napaka" msgstr[1] "%d napaki" msgstr[2] "%d napake" msgstr[3] "%d napak" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d vnos" msgstr[1] "%d vnosa" msgstr[2] "%d vnosi" msgstr[3] "%d vnosov" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (neshranjeno)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (spremenjeno)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Ni uspela posodobitev pomnilnika prevodov: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Odstrani prevode, ki so enaki viru" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Ali želite odstraniti vse prevode, ki so enaki izvornemu besedilu?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "S tem dejanjem bo izbrisan prevod, ki je povsem skladen z izvornim " "besedilom. Tega dejanja ni mogoÄe razveljaviti." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Ohrani" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Odstrani" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Odstrani izbrisane prevode" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Ali res želite odstraniti vse prevode, ki niso veÄ v uporabi?" #: src/edframe.cpp:2879 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 "" "ÄŒe prevode poÄistite, bodo vsi, ki so oznaÄeni kot izbrisani, trajno " "izgubljeni. V kolikor se ti nizi v prihodnje znova pojavijo, jih bo treba " "ponovno prevesti." #: src/edframe.cpp:2883 msgid "Purge" msgstr "PoÄisti" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Kopiraj iz izvornega besedila" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopiraj iz izvornega besedila" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Krmilka+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "PoÄisti prevod" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "PoÄisti prevod" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Uredi komentar" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Uredi komentar" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Pojavitve v kodi" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Pojavitve v kodi" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Skrij stransko vrstico" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Prikaži stransko vrstico" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Skrij vrstico stanja" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Pokaži vrstico stanja" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Dolžina niza v znakih: prevod | vir" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Dolžina niza v znakih" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Izvorno besedilo" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Ednina" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Množina" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Prevod" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Vnaprej prevedeno" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Potrebno predelave" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Potrebno predelave" #: src/editing_area.cpp:566 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 datoteke so samo predloge in ne vsebujejo prevodov.\n" "Za prevod ustvarite novo datoteko PO na osnovi predloge." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Ustvari nov prevod" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Naredi nov prevod iz te datoteke POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID izvornega besedila" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Vse" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Oblika %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Oblika %i (ni uporabljeno)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "NiÄ" #: src/editing_area.cpp:788 msgid "One" msgstr "Eden" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dva" #: src/editing_area.cpp:804 msgid "Other" msgstr "Drugo" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Zveza niza: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identifikator niza: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Oblika %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Oblika %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Prevod — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Izvorno besedilo — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "neznani jezik" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Omrežna napaka: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Neznana napaka" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Povezovalnih katalogov ni bilo mogoÄe združiti." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Odpri v urejevalniku" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Odpri v urejevalniku" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "Ni podatkov o pojavih tega niza v izvorni kodi zagotovljene datoteke." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Ni podatkov o uporabi" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d pojavitvi kode" msgstr[1] "%d pojavitvi kode" msgstr[2] "%d pojavitev kode" msgstr[3] "%d pojavitev v kodi" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Izvorne kode ni mogoÄe najti" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit ne more prikazati izvorne kode, kjer se niz uporablja, ker datoteka " "bodisi ni na voljo na mestu sklica ali pa je ta sklic simbolen in ne kaže na " "resniÄno datoteko." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Datoteke ni mogoÄe odpreti" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit ne more odpreti datoteke »%s«." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Najdi" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Zamenjaj" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Možnosti" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Prezri velikost Ärk" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Prelomi besedilo" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Le cele besede" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "PoiÅ¡Äi v izvirnih besedilih" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "PoiÅ¡Äi v prevodih" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Najdi v komentarjih" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Zamenjaj &vse" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Zamenjaj &vse" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Zamenjaj" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &PrejÅ¡nji" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Naslednji >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Iskalni niz" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Nadomestni niz" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Ime ali koda jezika" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Jezik prevoda" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Jezik prevoda:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Vsi nizi" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Ni bilo mogoÄe prenesti podrobnosti projekta Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Pri nalaganju prevodov v Localazy je priÅ¡lo do napake." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Projekti" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "VeÄ o %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy je visoko avtomatizirana lokalizacijska platforma, ki vsakomur " "omogoÄa enostavno prevajanje njihovih izdelkov in vsebine v veÄ jezikov." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Dodaj projekt" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Dodaj projekt" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit – upravljalnik katalogov" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Uredi ..." #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Ustvari nov projekt prevajanja" #: src/manager.cpp:145 msgid "Delete the project" msgstr "IzbriÅ¡i projekt" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Uredi projekt" #: src/manager.cpp:176 msgid "Update all" msgstr "Posodobi vse" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Posodobi vse kataloge projekta" #: src/manager.cpp:378 msgid "Total" msgstr "Skupno" #: src/manager.cpp:379 msgid "Untrans" msgstr "Neprevedeno" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Potrebno predelave" #: src/manager.cpp:381 msgid "Errors" msgstr "Napake" #: src/manager.cpp:382 msgid "Last modified" msgstr "ZadnjiÄ spremenjeno" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Izberite mapo" #: src/manager.cpp:433 msgid "Directories:" msgstr "Mape:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Ali želite izbrisati projekt »%s«?" #: src/manager.cpp:540 msgid "Delete project" msgstr "IzbriÅ¡i projekt" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Brisanje projekta ne bo izbrisalo nobene prevajalske datoteke." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Potrditev" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Ali želite posodobiti vse kataloge v tem projektu?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Izvede posodobitev iz izvorne kode za vse datoteke v projektu." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Preveri obstoj posodobitev…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Upravitelj katalogov" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Nastavitve ..." #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Uredi" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Razveljavi" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Povrni" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Prilepi in uskladi slog" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "IzbriÅ¡i" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "ÄŒrkovanje in slovnica" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Prikaži Ärkovanje in slovnico" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Preveri dokument zdaj" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Preverjanje Ärkovanja med vnosom" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Ob preverjanju Ärkovanja preveri tudi slovnico" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Samodejno odpravljaj napake Ärkovanja" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Zamenjave" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Prikaži zamenjave" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Pametno kopiranje/lepljenje" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Pametni narekovaji" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Pametni pomiÅ¡ljaji" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Pametne povezave" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Zamenjava besedila" #: src/menus.cpp:230 msgid "Transformations" msgstr "Preobliovanja" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "IzpiÅ¡i z velikimi Ärkami" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "IzpiÅ¡i z malimi Ärkami" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Z velikimi zaÄetnicami" #: src/menus.cpp:237 msgid "Speech" msgstr "Govor" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "ZaÄni govoriti" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Nehaj govoriti" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Pogled" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Prikaži orodno vrstico" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Prilagodi orodno vrstico …" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Celozaslonski naÄin" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Okno" #: src/menus.cpp:263 msgid "Minimize" msgstr "PomanjÅ¡aj" #: src/menus.cpp:264 msgid "Zoom" msgstr "PoveÄava" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "DobrodoÅ¡li v Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Postavi vse v ospredje" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Podatki o prevajalcu" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Ime:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "VaÅ¡e ime" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-poÅ¡ta:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "vi@primer.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "Ime in elektronski naslov se zavedeta v datotekah GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Urejanje" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Med shranjevanjem samodejno ustvari datoteko MO" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Preveri Ärkovanje" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Vedno spremeni fokus na polje za vnos besedila" #: src/prefsdlg.cpp:211 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 "" "Nikoli ne dovoli postavitve seznama nizov v fokus. ÄŒe je omogoÄeno morate " "uporabiti tipke Ctrl+Smerne tipke za premikanje vendar lahko takoj tudi " "tipkate besedilo brez predhodno pritisnjene tipke Tab, za spremembo fokusa." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Videz" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Uporabi pisavo seznama po meri:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Uporabi pisavo po meri besedilnih polj:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Spremeni jezik uporabniÅ¡kega vmesnika" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(zahteva Windows 8 ali novejÅ¡e)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "SploÅ¡no" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Uporabi pomnilnik prevodov" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Upravljaj …" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Pri posodabljanju iz virov" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "mehko ujemanje znotraj datoteke" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "vnaprej prevedi iz pomnilnika prevodov" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit lahko poskusi zapolniti na novo dodane nize zgolj iz prevodov, ki so " "že v datoteki ali pa iz pomnilnika prevodov. Uporaba pomnilnika ne bo " "uÄinkovita, Äe je ta prazen, vendar se bo izboljÅ¡ala, ko boste vanj dodali " "Å¡e veÄ prevodov." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Shranjeni prevodi:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Velikost zbirke podatkov na disku:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Uvoz datoteke s prevodom …" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Uvoz datoteke s prevodom …" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Uvozi iz TMX …" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Uvozi iz TMX …" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Izvozi v TMX …" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Izvozi v TMX …" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Ponastavi" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Izberite prevodne datoteke za uvoz" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Izberi datoteke TMX za uvoz" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Datoteke TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Uvažanje prevodov…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Izvozi kot ..." #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Izvažanje prevodov…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Izvažanje pomnilnika prevodov v \"%s\" je spodletelo." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Ponastavi pomnilnik prevodov" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Ali ste prepriÄani, da želite ponastaviti pomnilnik prevodov?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Ponastavitev pomnilnika prevodov bo nepovratno izbrisala vse njegove " "shranjene prevode. Te operacije ne morete razveljaviti." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "PP" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Pomnilnik prevodov" #: src/prefsdlg.cpp:730 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 "" "Pretvorniki se uporabljajo za izloÄevanje prevedljivih nizov iz datotek " "izvorne kode. Po pretvarjanju so nizi zbrani v datoteke, ki jih je nato " "mogoÄe prevesti." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Pretvorniki po meri:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Pretvorniki po meri:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Podpira vse programskih jezikov, prepoznanih z orodji GNU gettext (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript in drugi)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "IzbriÅ¡i pretvornik" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Ali ste prepriÄani, da želite izbrisati razÅ¡irjevalca \"%s\"?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Pretvorniki" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "RaÄuni" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Samodejno preveri obstoj posodobitve" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "VkljuÄi razliÄice beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "RazliÄice beta vsebujejo najnovejÅ¡e izboljÅ¡ave, vendar pa je lahko delovanje " "programa nestabilno." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Posodobitve" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Te nastavitve vplivajo na notranje oblikovanje datotek PO. Prilagodite jih, " "Äe imate posebne zahteve, npr. zaradi nadzora razliÄice." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Konci vrstic:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (priporoÄeno)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "MS Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Prelomi na:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Ohrani oblikovanje obstojeÄih datotek" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Napredno" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Nastavitve" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Priprava nizov …" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Predhodno prevajanje iz pomnilnika prevodov …" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Vnaprej preveden niz %u" msgstr[1] "Zapolnjena sta %u niza" msgstr[2] "Zapolnjeni so %u nizi" msgstr[3] "Vnaprej prevedenih %u nizov" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Prevajanje vnaprej ..." #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d vnos je bil vnaprej preveden." msgstr[1] "%d vnosa sta bila vnaprej prevedena." msgstr[2] "%d vnosi so bili vnaprej prevedeni." msgstr[3] "%d vnosov je bilo vnaprej prevedenih." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Prevodi so bili oznaÄeni kot kot potrebni predelave, ker so morda netoÄni. " "Zaradi pravilnosti bi jih morali pregledati in ustrezno popraviti." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Noben vnos ni bil vnaprej preveden." #: src/pretranslate.cpp:218 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 "" "Pomnilnik prevodov ne vsebuje nobenih nizov, podobnih vsebini te datoteke. " "UÄinkovit je le za polavtomatske prevode potem, ko se Poedit dovolj nauÄi iz " "datotek, ki ste jih roÄno prevedli." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Ni mogoÄe vnaprej prevesti brez izvornega besedila." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Prevedi vnaprej" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Predhodni prevod zahteva, da je na voljo izvorno besedilo. Ne deluje, Äe se " "uporabljajo samo ID-ji brez dejanskega besedila." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Ni mogoÄe vnaprej prevesti iz neznanega jezika." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "VnaprejÅ¡nji prevod zahteva znani jezik izvornega besedila. Poedit ga v tej " "datoteki ni mogel zaznati." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Zapolni le natanÄna ujemanja" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Privzeto so vkljuÄeni tudi netoÄni rezultati, vendar oznaÄeni kot potrebni " "dela. OznaÄite to možnost, Äe želite vkljuÄiti samo popolna ujemanja." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "NatanÄnih ujemanj ne oznaÄi kot potrebnih predelave" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "OmogoÄite to možnost le, Äe zaupate kakovosti vaÅ¡ega pomnilnika prevodov. " "Vsa ujemanja iz njega so privzeto oznaÄena kot potrebna predelave in jih je " "treba pred uporabo skrbno pregledati." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "VnaprejÅ¡nji prevod samodejno najde natanÄna ali približna ujemanja " "neprevedenih nizov v pomnilniku prevodov ter zapolni njihove prevode." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Preklic …" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Sem povlecite mape ali datoteke" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Sem povlecite mape ali datoteke" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Dodaj mape ..." #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Dodaj mape ..." #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Dodaj datoteke ..." #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Dodaj datoteke ..." #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Dodaj nadomestni znak ..." #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Dodaj nadomestni znak ..." #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Razkrij v Finderju" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Pokaži v Raziskovalcu" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Pokaži v mapi" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Poti" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "IzkljuÄene poti" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Napredne nastavitve razÅ¡irjanja" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "RazÅ¡iri opombe za prevajalce iz:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Pripombe s predpono:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Vsi komentarji" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Dodatne zastavice xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Dodatne kljuÄne besede" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Ime projekta, za katerega je prevod namenjen" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Ime ekipe ter e-poÅ¡tni naslov ali URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "npr. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (priporoÄeno)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "Najprej shranite datoteko. Do tedaj, tega oddelka ni mogoÄe urejati." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Pravilnost oznak mest" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "V prevodu manjka oznaka mesta \"%s\"." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "OdveÄna oznaka mesta \"%s\", ki je ni v izvornem besedilu." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Množinske oblike prevodov" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Vse množinske oblike niso prevedene." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Nedosledena V/m Ärka presledek" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Prevod se mora zaÄeti kot stavek." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Prevod se mora zaÄeti z malo Ärko." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Nedosleden presledek" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Prevod se ne zaÄne s presledkom." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Prevod se zaÄne s presledkom, ki ga NI v izvornem besedilu." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Nizu prevoda manjka na koncu oznaka za novo vrstico." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Prevod se konÄa z novo vrstico, ki ne obstaja v izvornem besedilu." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Na koncu prevoda manjka presledek." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Prevod se konÄa s presledkom, ki ne obstaja v izvornem besedilu." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Preverjanja loÄil" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Prevod se mora konÄati z znakom \"%s\"." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Prevod se ne sme konÄati z znakom \"%s\"." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "Prevod se konÄa z znakom \"%s\", toda izborno besedilo se konÄa z \"%s\"." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Oblak" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "PoÄisti meni" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "PoÄisti meni" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Komentar:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Posodobi" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&IzbriÅ¡i" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "IzbriÅ¡i komentar" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Uredi projekt" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Ime projekta:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Prebrskaj" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Dodaj mapo na seznam" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "V redu" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Datoteka" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Nov…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nov iz datoteke &POT/PO …" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nov iz datoteke &POT/PO …" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Odpri …" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Odpri nedavne" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Odpri nedavno" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Odpri prevod v oblaku…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Odpri prevod v oblaku…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&ZaÄetno okno" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&ZaÄetno okno" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Upravitelj katalogov" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Upravitelj katalogov" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Zapri" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Shrani" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Shrani &kot…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Shrani &kot …" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Prevedi v MO ..." #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "Izvozi v &HTML …" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Preveri obstoj posodobitev ..." #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Nastavitve…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "Nas&tavitve " #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "Iz&hod" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Izhod" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopiraj iz edninske oblike" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopiraj iz edninske oblike" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Prevo&d potrebuje predelavo" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Prevo&d potrebuje predelavo" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Uredi &komentar" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Uredi &komentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Predlogi" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Najdi …" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Zamenjaj …" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "PoiÅ¡Äi naslednjega" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "PoiÅ¡Äi prejÅ¡njega" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "PoiÅ¡Äi in zamenjaj …" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "PoiÅ¡Äi naslednjega" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "PoiÅ¡Äi prejÅ¡njega" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Prikaži &ID niza" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Prikaži &ID niza" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Prikaži opozorila" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Prikaži opozorila" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Razvrsti po &datotekah" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Razvrsti po &datotekah" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Razvrsti po &viru" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Razvrsti po &viru" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Razvrsti po &prevodu" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Razvrsti po &prevodu" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Združi po vsebini" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Združi po vsebini" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Najprej vnosi z napakami" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Najprej vnosi z napakami" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Najprej neprevedeni nizi" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Najprej neprevedeni nizi" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Prikaži pojavitve kode" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "Prikaži poja&vitve kode" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Prikaži stransko vrstico" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Prikaži statusno vrstico" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Prevod" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Posodobi iz izvorne kode" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Posodobi iz izvorne kode" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Uskladi s Crowdinom" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Vnapre&j prevedi ..." #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Preveri ustreznost prevoda" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Preveri ustreznost prevoda" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Odstranite prevode istega izvora" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "PoÄi&sti izbrisane prevode" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&PoÄisti izbrisane prevode" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Lastnosti ..." #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Pojdi" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&DokonÄano in naprej" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&DokonÄano in naprej" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Prej urejeno" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Prej urejeno" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&PrejÅ¡nji prevod" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&PrejÅ¡nji prevod" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Naslednji prevod" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Naslednji prevod" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "&PrejÅ¡nji nedokonÄan" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "&PrejÅ¡nji nedokonÄan" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "&Naslednji nedokonÄan" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "&Naslednji nedokonÄan" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "PrejÅ¡nja množinska oblika" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "PrejÅ¡nja množinska oblika" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Naslednja množinska oblika" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Naslednja množinska oblika" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Spletna pomo&Ä" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Spletna pomo&Ä" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "PriroÄnik GNU &gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "PriroÄnik GNU &gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Vizitka Poedita" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Vizitka programa" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Nastavitve pretvornikov" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Seznam konÄnic, loÄenih s podpiÄjem (npr. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Priklic:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Ukaz za razÅ¡irjanje prevodov:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "To je ukaz za zagon razÅ¡irjevalnika.\n" "%o se razÅ¡iri v ime izhodne datoteke, %K v seznam kljuÄnih besed,\n" "%F v seznam vhodnih datotek,\n" "%C pa v zastavico kodnega nabora (oglejte si spodaj)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Vnos na seznamu kljuÄnih besed:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Zastavica bo dodana ukazni vrstici za vsako kljuÄno\n" "besedo. Parameter %k se razÅ¡iri v kljuÄno besedo." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Vnos na seznamu vhodnih datotek:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Zastavica bo dodana ukazni vrstici za vsako vhodno\n" "datoteko. Parameter %f se razÅ¡iri v ime datoteke." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Kodni nabor izvorne kode:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Zastavica bo dodana ukazni vrstici le, Äe je podan nabor znakov izvorne " "kode.\n" " Parameter %c razÅ¡iri vvrednost kodnega nabora." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Lastnosti prevoda" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Ime in razliÄica projekta:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Ekipa prevajalcev:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Množinske oblike:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Uporabi privzeta pravila za ta jezik" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Uporabi izraz po meri" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "VeÄ o množinskih oblikah" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Nabor znakov:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Napredne nastavitve razÅ¡irjanja ..." #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Napredne nastavitve razÅ¡irjanja ..." #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Lastnosti prevoda" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Poti virov" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Poti virov" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "RazÅ¡iri besedilo iz izvornih datotek v naslednjih mapah:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Osnovna pot:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "KljuÄne besede virov" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "KljuÄne besede virov" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Uporabi te kljuÄne besede (imena funkcij) za prepoznavanje\n" "prevedljivih nizov v izvornih datotekah:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Uporabi tudi privzete kljuÄne besede za podprte jezike" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "VeÄ o gettext kljuÄnih besedah" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Odpri datoteko" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Shrani datoteko" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Preveri ustreznost" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Preveri napake v prevodu" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Posodobi iz kode" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Posodobi iz kode" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Posodobi iz izvorne kode" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Stranska vrstica" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Prikaži ali skrij stransko vrstico" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "PrejÅ¡nje izvorno besedilo" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Stari vir besedila (preden je bil spremenjen med posodobitvijo), da je " "nepravilen prevod zdaj ustrezen." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Opombe za prevajalce" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Komentar" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Dodaj komentar" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Dodaj komentar" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "IzbriÅ¡i iz pomnilnika prevodov" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "IzbriÅ¡i iz pomnilnika prevodov" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Predlogi prevoda" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Ni zadetkov" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Ni zadetkov" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Ta niz se nahaja v pomnilniku prevodov Poedita." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Predlogi prevodov zahtevajo, da je na voljo izvorno besedilo. Ne delujejo, " "Äe so uporabljeni samo ID-ji brez dejanskega besedila." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Predlogi prevoda zahtevajo znani jezik izvornega besedila. Poedit ga v tej " "datoteki ni mogel zaznati." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Ni mogoÄe izvesti programa: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Datoteka TMX ni pravilno oblikovana." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Zbirka podatkov pomnilnika prevodov je poÅ¡kodovana: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Napaka pomnilnika prevodov: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(uporabi privzeti jezik)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Izbor jezika" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Izberite želeni jezik" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Poedit morate ponovno zagnati, da bo sprememba zaÄela veljati." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Ni mogoÄe ustvariti zaÄasne mape." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Ni prevodov. To je nenavadno." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "NajpreprostejÅ¡i naÄin zapolnitve te datoteke s prevodi je posodobitev iz " "datoteke POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Posodobi iz datoteke POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Prevzame prevedljive nize iz obstojeÄe predloge POT." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Prav tako lahko razÅ¡irite prevedljive nize neposredno iz izvorne kode:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "RazÅ¡iri iz izvorne kode" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Konfigurirajte razÅ¡irjanje izvorne kode v Lastnostih." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "RazliÄica %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Ustvari nov" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Ustvari nov prevod iz predloge POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Prebrskaj datoteke" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Odpri in uredi datoteke za prevajanje." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Prevedi projekt v oblaku" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Sodelujte z drugimi na spletu." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Nedavne datoteke" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Uskladi" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Uskladi prevod s Crowdinom" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "O %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Nastavitve %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "O %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Storitve" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Skrij %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Skrij druge" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Prikaži vse" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Izhod iz %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Nastavitve ..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Nastavitve ..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Nastavitve ..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Uporabi" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Uporabi" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "Naza&j" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Nazaj" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "Pre&kliÄi" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "Po&Äisti" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "PoÄisti" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopiraj" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "I&zreži" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Izreži" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Uredi" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "I&zhod" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "PomoÄ" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nov" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Novo" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Ne" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ne" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "V&redu" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Odpri ..." #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Odpri ..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Odpri ..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Prilepi" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Prilepi" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Nastavitve" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Povrni" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Osveži" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Shrani kot" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Shrani kot" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Izberi &vse" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Izberi vse" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Razveljavi" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Da" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Da" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Izmenjalka+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Dvigalka+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "VnaÅ¡alka" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Navzgor" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Navzdol" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Levo" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Desno" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "krmilka" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "izmenjalka" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "dvigalka" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/bs.po0000644000175100001660000023530415011674363011074 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Bosnian\n" "Language: bs_BA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: bs\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Sakrij ovu napomenu" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ne prikazuj ponovo" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ne prikazuj ponovo" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Rezime ažuriranja" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Zatvori" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Novi stringovi" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Prikupljam izvorne fajlove…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "" #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Izvorni kod nije dostupan." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "" #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Sastavljanje razlika…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Neispravno zaglavlje: \"%s\"" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO fajlovi sa prijevodom" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT predloÅ¡ci prijevoda" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF fajlovi s prijevodima" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Sve datoteke s prijevodima" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "" #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "" #: src/catalog_po.cpp:134 #, 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 red fajla \"%s\" nije ispravno uÄitan." msgstr[1] "%i reda fajla \"%s\" nisu ispravno uÄitana." msgstr[2] "%i redova fajla \"%s\" nije ispravno uÄitano." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Linija %d fajla \"%s\" nije ispravna (neispravni podaci %s)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Desio se problem prilikom formatiranja datoteke (sve ostalo je uspjeÅ¡no " "saÄuvano)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "\"%s\" nije ispravan POT fajl." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "" #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Projekat:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Jezik:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Preuzimam najnovije prijevode..." #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "" #: src/commentdlg.cpp:48 msgid "Add" msgstr "" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Nemate ovlaÅ¡tenje, molimo vas da se ponovo prijavite." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Preuzimanje prijevoda je onemogućeno u ovom projektu." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Prijava" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Prijava" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Odjava" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Odjava" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Saznaj viÅ¡e o Crowdinu" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "ÄŒekam na autentifikaciju..." #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Ažuriram korisniÄke informacije..." #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Prijavi se u Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Sinhronizacija sa Crowdinom nije uspjela." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin greÅ¡ka" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Ažuriram prijevode..." #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Kopiraj" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Saznaj viÅ¡e" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Pomoć" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO fajl se ne može direktno ureÄ‘ivati u Poeditu." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "GreÅ¡ka pri otvaranju fajla" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Umjesto ovog, molimo vas da otvorite i izmijenite odgovarajući PO fajl. " "Nakon Å¡to ga saÄuvate, MO fajl će takoÄ‘er da bude ažuriran." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "upravljaÄ za poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Nije moguće komunicirati sa Poedit procesom." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Desio se neoÄekivan izuzetak: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Neispravna datoteka" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit je jednostavni alat za prevoÄ‘enje." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "" #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "" #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "" #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Provjera pravopisa je onemogućena zato Å¡to rjeÄnik za %s nije instaliran." #: src/edframe.cpp:871 msgid "Install" msgstr "Instaliraj" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" #: src/edframe.cpp:968 msgid "Ignore" msgstr "" #: src/edframe.cpp:968 msgid "Reload File" msgstr "" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "SaÄuvaj promjene" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "" #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "SaÄuvaj" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ne s&nimaj" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ne s&nimaj" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "PoniÅ¡ti" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "SaÄuvaj kao…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Kompajliraj za…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Kompajlirani prijevodi datoteka" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML fajlovi" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Ažuriranje nije uspjelo" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "PronaÄ‘en je %d problem s prijevodima." msgstr[1] "PronaÄ‘ena su %d problema s prijevodima." msgstr[2] "PronaÄ‘eno je %d problema s prijevodima." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Rezultati validacije" #: src/edframe.cpp:1842 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 "" "Unosi koji sadrže greÅ¡ke oznaÄeni su crvenom bojom u listi. Detalji o greÅ¡ki " "će biti prikazani kada odaberete jedan od unosa." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Datoteka je uspjeÅ¡no saÄuvana." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Datoteka je uspjeÅ¡no saÄuvana i kompajlirana u MO format, ali navjerovatnije " "neće ispravno funkcionisati." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Datoteka je uspjeÅ¡no saÄuvana ali je nije moguće kompajlirati u MO format i " "koristiti nakon toga." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Datoteka je kompajlirana u MO format, ali najvjerovatnije neće funkcionisati " "ispravno." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Datoteka ne može biti kompajlirana u MO format i nakon toga koriÅ¡tena." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Nisu pronaÄ‘eni problemi u prijevodu." #: src/edframe.cpp:1894 #, 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] "Prijevod je spreman za upotrebu, ali joÅ¡ %d unos nije preveden." msgstr[1] "Prijevod je spreman za upotrebu, ali joÅ¡ %d unosa nisu prevedena." msgstr[2] "Prijevod je spreman za upotrebu, ali joÅ¡ %d unosa nije prevedeno." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Prijevod je spreman za upotrebu." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit je automatski popravio neispravan sadržaj u datoteci \"%s\"." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "" #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Postavi jezik" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Jezik prijevoda je isti kao i izvorni jezik." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Popravi jezik" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Popravi jezik" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Nedostaje neophodno zaglavlje za oblik množine." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Sintaksna greÅ¡ka u zaglavlju za obrazac množine (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Popravi zaglavlje" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Popravi zaglavlje" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Pregledaj" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Prevedeno: %d od %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Preostalo: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d greÅ¡ka" msgstr[1] "%d greÅ¡ke" msgstr[2] "%d greÅ¡aka" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d unos" msgstr[1] "%d unosa" msgstr[2] "%d unosa" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (nesaÄuvano)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (mijenjano)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Nije moguće ažurirati memoriju prijevoda: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Zadrži" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "OÄisti obrisane prijevode" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Da li želite ukloniti sve prijevode koji viÅ¡e nisu u upotrebi?" #: src/edframe.cpp:2879 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 "" "Ako nastavite sa uklanjanjem, svi prijevodi koji su oznaÄeni za uklanjanje " "će trajno biti uklonjeni. Morat ćete ih ponovo prevesti ako budu ponovo " "dodani nekad u budućnosti." #: src/edframe.cpp:2883 msgid "Purge" msgstr "OÄisti" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "&Kopiraj iz originalnog teksta" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Kopiraj iz originalnog teksta" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "ObriÅ¡i prijevod" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "ObriÅ¡i prijevod" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Uredi komentar" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Uredi komentar" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Sakrij boÄnu traku" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Prikaži boÄnu traku" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Sakrij statusnu traku" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Prikaži statusnu traku" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Originalni tekst" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Jednina" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Množina" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Prijevod" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "" #: src/editing_area.cpp:566 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 datoteke su samo predloÅ¡ci i ne sadrže bilo kakve prijevode.\n" "Da napravite prijevod, kreirajte novu PO datoteku na osnovu predloÅ¡ka." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Kreiraj novi prijevod" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Sve" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Oblik %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Nula" #: src/editing_area.cpp:788 msgid "One" msgstr "Jedan" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dva" #: src/editing_area.cpp:804 msgid "Other" msgstr "Ostalo" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Prijevod — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Izvorni tekst — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "nepoznat jezik" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Nije moguće spojiti gettext kataloge." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Otvori u ureÄ‘ivaÄu" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Otvori u ureÄ‘ivaÄu" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "PronaÄ‘i" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Zamijeni" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Opcije" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Zanemari velika/mala slova" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Omotaj" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Samo cijele rijeÄi" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "PronaÄ‘i u izvornim tekstovima" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "PronaÄ‘i u prijevodima" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "PronaÄ‘i u komentarima" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "" #: src/findframe.cpp:150 msgid "&Replace" msgstr "" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Prethodno" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Sljedeće >" #: src/findframe.cpp:235 msgid "String to find" msgstr "String koji tražite" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Zamjenski string" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Jezik prijevoda" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Jezik prijevoda:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - upravljanje katalozima" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Napravi novi projekt prevoÄ‘enja" #: src/manager.cpp:145 msgid "Delete the project" msgstr "ObriÅ¡i projekt" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Uredi projekt" #: src/manager.cpp:176 msgid "Update all" msgstr "Ažuriraj sve" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Ažuriraj sve kataloge u projektu" #: src/manager.cpp:378 msgid "Total" msgstr "Ukupno" #: src/manager.cpp:379 msgid "Untrans" msgstr "Neprevedeno" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "" #: src/manager.cpp:381 msgid "Errors" msgstr "" #: src/manager.cpp:382 msgid "Last modified" msgstr "Zadnji put mijenjano" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Odaberite direktorij" #: src/manager.cpp:433 msgid "Directories:" msgstr "Direktoriji:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "" #: src/manager.cpp:540 msgid "Delete project" msgstr "" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" #: src/manager.cpp:571 msgid "Confirmation" msgstr "Potvrda" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Upravljanje katalozima" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Uredi" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Nazad" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Vrati" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Umetni i uskladi stil" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "ObriÅ¡i" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Pravopis i gramatika" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Prikaži pravopis i gramatiku" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Odmah provjeri dokument" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Provjeravaj pravopis prilikom pisanja" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Provjeri gramatiku i pravopis" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Automatski popravljaj greÅ¡ke u pravopisu" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Zamjene" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Prikaži zamjene" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Pametno kopiranje/umetanje" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Pametni navodnici" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Pametne crtice" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Pametni linkovi" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Zamjena teksta" #: src/menus.cpp:230 msgid "Transformations" msgstr "Tranformacije" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Pretvori u velika slova" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Pretvori u mala slova" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Velika slova" #: src/menus.cpp:237 msgid "Speech" msgstr "Govor" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "PoÄnite priÄati" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Prestanite priÄati" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Prikaz" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Prikaži alatnu traku" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Prilagodi alatnu traku…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Aktiviraj prikaz preko cijelog ekrana" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Prozor" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimiziraj" #: src/menus.cpp:264 msgid "Zoom" msgstr "Uvećavanje" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Dobro doÅ¡li u Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Dovedi u fokus" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Informacije o prevodiocu" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Ime:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "VaÅ¡e ime" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Email:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "VaÅ¡e ime i email adresa se koriste samo u Last-Translator zaglavlju GNU " "gettext fajlova." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "UreÄ‘ivanje" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Automatski kompajliraj MO datoteku prilikom snimanja" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Provjeri pravopis" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Uvijek promijeni fokus na polje za unos teksta" #: src/prefsdlg.cpp:211 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 "" "Ne dopusti da lista stringova preuzme fokus.Ako je omogućeno, morat ćete " "koristiti Ctrl-strelice za navigaciju pomoću tastature ali takoÄ‘er možete " "ukucati tekst odmah, bez da morate pritisnuti Tab za promjenu fokusa." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Izgled" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Koristi vlastiti font za listu:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Koristi vlastiti font za tekstualna polja:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Promijeni jezik interfejsa" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(barem Windows 8 ili noviji)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Općenito" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Koristi memoriju prijevoda" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Pohranjeni prijevodi:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "VeliÄina baze na disku:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Resetuj" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Odaberite datoteke prijevoda za uvoz" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Izvezi kao…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Resetuj memoriju prijevoda" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Jeste li sigurni da želite resetovati memoriju prijevoda?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Resetiranje memorije prijevoda će nepovratno obrisati sve pohranjene " "prijevode. Ovu operaciju nije moguće poniÅ¡titi." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Memorija prijevoda" #: src/prefsdlg.cpp:730 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 "" "Izdvajanje izvornog koda se koristi za pronalazak stringova za prijevoda u " "fajlovima izvornog koda, da biste ih kasnije mogli prevesti." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "ObriÅ¡i ekstraktor" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Jeste li sigurni da želite obrisati \"%s\" ekstrator?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Izdvajanje" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "RaÄuni" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Automatski provjeravaj ima li ažuriranja" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Uvrsti i beta verzije" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Beta verzije sadrže najnovije mogućnosti i poboljÅ¡anja, ali bi mogle biti " "manje stabilne." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Ažuriranja" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Ove postavke utiÄu na interno formatiranje PO datoteka. Prilagodite ih vaÅ¡im " "specifiÄnim potrebama, npr. zbog kontrole verzija." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "ZavrÅ¡etak linije:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (preporuÄeno)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Prozori" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Prelomi tekst na:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "SaÄuvaj oblikovanje postojećih datoteka" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Napredno" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "" #: src/pretranslate.cpp:218 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 ne sadrži nijedan string sliÄan sadržaju u ovoj datoteci. Ovo je moguće " "efikasno iskoristiti za poluautomatsko prevoÄ‘enje nakon Å¡to Poedit nauÄi " "dovoljno fraza iz datoteka koje ste preveli ruÄno." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Samo popunjavaj taÄna poklapanja" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Putanje" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Izuzete putanje" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Dodatne kljuÄne rijeÄi" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Naziv projekta za koji je namijenjen ovaj prijevod" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "npr. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (preporuÄeno)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Molimo vas da prvo saÄuvate datoteku. Ova sekcija se ne može ureÄ‘ivati dok " "to ne uradite." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "" #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Komentar:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&ObriÅ¡i" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Uredi projekt" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Ime projekta:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Pretraži" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Dodaj direktorij u listu" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "U redu" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Datoteka" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Otvori nedavne" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Upravljanje katalozima" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Upravljanje katalozima" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Zatvori" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&SaÄuvaj" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "SaÄuvaj &kao…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Postavke" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "I&zaÄ‘i" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Zatvori" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Kopiraj iz jednine" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Kopiraj iz Jednine" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Uredi &komentar" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Uredi &komentar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Prijedlozi" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "PronaÄ‘i sljedeće" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "PronaÄ‘i prethodno" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "PronaÄ‘i sljedeće" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "PronaÄ‘i prethodno" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Sortiraj po redoslijedu &datoteka" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Sortiraj po redoslijedu &datoteka" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Sortiraj po &originalima" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Sortiraj po &originalima" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Sortiraj po &prijevodima" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Sortiraj po &prijevodima" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "& GrupiÅ¡i po kontekstu" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "& GrupiÅ¡i po kontekstu" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Prvo unosi sa greÅ¡kama" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Prvo unosi sa greÅ¡kama" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Prvo prikaži neprevedene reÄenice" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Prvo prikaži neprevedene reÄenice" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Prikaži boÄnu traku" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Prikaži statusnu traku" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sinhronizuj sa Crowdinom" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validacija prijevoda" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validacija prijevoda" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&OÄisti izbrisane prijevode" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&OÄisti izbrisane prijevode" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Akcije" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&ZavrÅ¡i i nastavi" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&ZavrÅ¡i i nastavi" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "& Prethodni prijevod" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "& Prethodni prijevod" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "& Sljedeći prijevod" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "& Sljedeći prijevod" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "P&rethodno nedovrÅ¡eno" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "P&rethodno nedovrÅ¡eno" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Slje&deće nedovrÅ¡eno" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Slje&deće nedovrÅ¡eno" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Prethodni oblik množine" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Prethodni oblik množine" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Sljedeći oblik množine" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Sljedeći oblik množine" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&Online pomoć" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&Online pomoć" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext dokumentacija" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext dokumentacija" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&O programu" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&O programu" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Postavka izdvajanja" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista ekstenzija odvojenih pomoću taÄka-zareza (npr. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Pozivanje:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Komanda za izdvajanje prijevoda:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ovo je komanda koja se koristi za pokretanje izdvajanja.\n" "%o se proÅ¡iruje u naziv izlaznog fajla, %K u listu\n" " kljuÄnih rijeÄi, %F u listu ulaznih fajlova,\n" "%C o oznake kodiranja (pogledajte ispod)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Stavka u listi kljuÄnih rijeÄi:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Ovo će biti dodano komandnoj liniji jednom\n" "za svaku kljuÄnu rijeÄ. %k se proÅ¡iruje na kljuÄnu rijeÄ." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Stavka u listi datoteka za ubacivanje:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Ovo će biti dodano komandnoj liniji po jednom\n" "za svaku ulaznu datoteku. %f se proÅ¡iruje na ime datoteke." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Kodiranje znakova izvornog koda:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Ovo će biti dodano u komandu liniju\n" "samo ako je dato izvorno kodiranje znakova. %c se proÅ¡iruje na vrijednost " "znakova." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Ime projekta i verzija:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Koristi zadana pravila za ovaj jezik" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Koristi vlastiti izraz" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Saznaj viÅ¡e o oblicima množina" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Kodiranje znakova:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Svojstva prijevoda" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Putanje originala" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Izvezi tekst iz originalnih datoteka u sljedeće foldere:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Bazna putanja:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "KljuÄne rijeÄi originala" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Koristite ove kljuÄne rijeÄi (nazivi funkcija) za prepoznavanje stringova za " "prijevod\n" "u originalnim datotekama:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Saznaj viÅ¡e o gettext kljuÄnim rijeÄima" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validacija" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Provjeri ima li greÅ¡ki u prijevodu" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "BoÄna traka" #: src/resources/toolbar.xrc:56 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. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "" #: src/sidebar.cpp:196 msgid "Comment" msgstr "" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Dodaj komentar" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Dodaj komentar" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Nema rezultata" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Nema rezultata" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Ovaj string je pronaÄ‘en u Poedit memoriji prijevoda." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Nije moguće izvrÅ¡iti program: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "" #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Koristi poÄetni jezik)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Odabir jezika" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Odaberite vaÅ¡ omiljeni jezik" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Morate ponovo pokrenuti Poedit da bi promjene poÄele djelovati." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Nije moguće napraviti privremeni folder!" #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Nema prijevoda. Ovo je neobiÄno." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Ažuriraj iz POT-a" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Uzmi stringove za prijevod iz postojećeg POT predloÅ¡ka." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "TakoÄ‘er, možete napraviti stringove za prijevod direktno iz izvornog koda:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Ažuriraj iz originala" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "KonfiguriÅ¡ite izvoz izvornog koda u Svojstvima." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Verzija %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sinhronizuj" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sinhronizuj prijevode sa Crowdinom" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "O programu %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "O programu %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "" #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Kopiraj" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Izrež&i" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Izreži" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Uredi" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Novo" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Otvori..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Zalijepi" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Zalijepi" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Vrati" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Oznaži &sve" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "OznaÄi sve" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&PoniÅ¡ti" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Gore" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Dole" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/ga.po0000644000175100001660000027763215011674363011071 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-05-16 10:16\n" "Last-Translator: \n" "Language-Team: Irish\n" "Language: ga_IE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : " "4);\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: ga-IE\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Cuir an fógra seo i bhfolach" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ná Taispeáin Arís" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ná taispeáin arís" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Achoimre Nuashonraithe" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Nuashonraigh achoimre" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Dún" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Eisiúintí" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Comhad" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Líne" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Eisiúint" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Teaghráin Nua" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Teaghráin nua" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Teaghráin Bainte" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Teaghráin bainte" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Foinsí á mbailiú…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Ag baint teaghráin inaistrithe as comhad %s…" msgstr[1] "Ag baint teaghráin inaistrithe as %s comhad…" msgstr[2] "Ag baint teaghráin inaistrithe as %s comhad…" msgstr[3] "Ag baint teaghráin inaistrithe as %s comhad…" msgstr[4] "Ag baint teaghráin inaistrithe as %s comhad…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Níorbh fhéidir an comhad le haistriúcháin bailithe a lódáil." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "I: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Níl an cód foinseach ar fáil." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Níorbh fhéidir aistriúcháin a nuashonrú ón gcód foinse, mar nach bhfuarthas " "aon chód san áit a shonraítear in Airíonna an chomhaid." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Níl cead agat é seo a dhéanamh." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Níl cead agat comhaid cód foinse a léamh ón suíomh atá sonraithe in Airíonna " "an chomhaid." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Má dhiúltaigh tú rochtain ar do chuid comhad roimhe seo, is féidir leat é " "sin a cheadú i Socruithe Córais > Príobháideacht & Slándáil > Comhaid & " "Fillteáin." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Mura bhfuil teacht agat ar do chuid comhad a thuilleadh, is féidir leat cead " "a thabhairt in System Preferences > Security & Privacy > Privacy > Files & " "Folders." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Theip ar theaghráin a bhaint as an gcód foinse." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Níorbh fhéidir comhad “%s†a oscailt." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Aistriúcháin á nuashonrú" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Ag cinneadh difríochtaí…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Difríochtaí á gcumasc…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "Tá an comhad aistriúcháin cothrom le dáta cheana féin, ní dhearnadh aon " "athruithe ar na teaghráin." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Nuashonraíodh an comhad aistriúcháin le %s athrú." msgstr[1] "Nuashonraíodh an comhad aistriúcháin le %s athruithe." msgstr[2] "Nuashonraíodh an comhad aistriúcháin le %s athruithe." msgstr[3] "Nuashonraíodh an comhad aistriúcháin le %s athruithe." msgstr[4] "Nuashonraíodh an comhad aistriúcháin le %s athruithe." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Teaghráin nua le haistriú:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Teaghráin bainte (nach n-úsáidtear a thuilleadh):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "Braitheadh ​​%d fadhb leis na teaghráin foinse." msgstr[1] "Braitheadh ​​%d fadhb leis na teaghráin foinse." msgstr[2] "Braitheadh ​​%d fadhb leis na teaghráin foinse." msgstr[3] "Braitheadh ​​%d fadhb leis na teaghráin foinse." msgstr[4] "Braitheadh ​​%d fadhb leis na teaghráin foinse." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Féach Sonraí…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Féach sonraí…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Ceanntásc míchumtha: '%s'" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Comhaid Aistriúcháin PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Teimpléid Aistriúcháin POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Comhaid Aistriúcháin XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Catalóg Logánaithe Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Comhaid Aistriúcháin JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Comhaid Aistriúcháin Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Gach Comhad Aistriúcháin" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Ní aithníonn Poedit formáid an chomhaid seo." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Ní comhad aistriúcháin é an comhad JSON seo, agus ní féidir é a chur in " "eagar in Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" "Níorbh fhéidir ábhar an chomhaid a léamh agus fuarthas an earráid seo: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Is comhad inléite-amháin é “%s†agus ní féidir é a chur i dtaisce.\n" "Cuir i dtaisce é faoi ainm eile." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Níorbh fhéidir comhad %s a shábháil." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Seatanna scáileáin:" #: src/catalog_po.cpp:134 #, 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] "Níor luchtaíodh %i líne i gcomhad '%s' mar is ceart." msgstr[1] "Níor luchtaíodh %i líne i gcomhad '%s' mar is ceart." msgstr[2] "Níor luchtaíodh %i líne i gcomhad '%s' mar is ceart." msgstr[3] "Níor luchtaíodh %i líne i gcomhad '%s' mar is ceart." msgstr[4] "Níor luchtaíodh %i líne i gcomhad '%s' mar is ceart." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Líne %d i gcomhad '%s' truaillithe (ní sonraí bailí %s é)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Comhad PO briste: baineadh úsáid as leagan uatha msgstr le msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Comhad PO briste: baineadh úsáid as leagan iolra msgstr gan msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Níorbh fhéidir comhad a lódáil, is dóigh go bhfuil sé damáistithe." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Tharla botúin i rith luchtú an chomhaid. D'fhéadfadh sonraí bheith in " "easnamh nó truaillithe dá bharr." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Níorbh fhéidir leagan amach deas a chur ar an gcomhad (ach sábháladh é mar " "sin féin)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Níorbh fhéidir an comhad a shábháil i dtacar carachtair “%s†mar atá " "sonraithe sna socruithe aistriúcháin.\n" "\n" "Sábháladh é in UTF-8 ina ionad sin agus rinneadh an socrú a mhodhnú dá réir." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Earráid agus an comhad á shábháil" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "Ní comhad POT ceart é “%sâ€." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Ãbhar ar iarraidh go gan choinne sa chomhad XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Ní thacaítear le sábháil in áit eile le haghaidh comhaid XCLOC." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Earráid agus comhad XLIFF á lódáil: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "leagan nach dtugtar tacaíocht dó (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Marcáil bhriste sa teaghrán." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Ceangail Poedit le hardáin logánaithe scamall a dtacaítear leo chun " "aistriúcháin a bhainistítear orthu a shioncrónú go gan uaim." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Conas a oibríonn sioncrónú scamall?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Cuntas" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(níl mé logáilte isteach)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Aistriúchán scamall oscailte" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Bainistigh cuntais" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Tionscadal:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Béarla:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Sínigh isteach i gCuntas Néil" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Sínigh isteach i gcuntas scamall" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Níl aon tionscadail aistriúcháin liostaithe i do chuntas." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Na haistriúcháin is déanaí á n-íosluchtú…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Sínigh isteach i %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "à shioncronú" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Ag uaslódáil aistriúcháin chuig %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Theip ar uaslódáil aistriúcháin chuig %s." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Earráid le linn sioncronaithe" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Cuir leis" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Earráid anaithnid Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Níl cead agat. Logáil isteach arís." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Ní thacaítear le tionscadail Crowdin atá bunaithe ar theaghráin." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Ní féidir aistriúcháin a íosluchtú don tionscadal seo." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Logáil isteach" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Logáil isteach" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Logáil Amach" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Logáil amach" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Tuilleadh eolais faoi Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Is ardán bainistíochta aistriúcháin ar líne agus uirlis aistriúcháin " "chomhoibríoch é Crowdin. Úsáidimid Crowdin féin chun Poedit a aistriú go go " "leor teangacha, agus is breá linn é." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Ag fanacht le fíordheimhniú…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Sonraí an úsáideora á nuashonrú…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Logáil isteach i Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Níorbh fhéidir sioncronú le Crowdin." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Earráid Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Aistriúcháin á n-uasluchtú…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Cóipeáil" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Tuilleadh eolais" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Cabhair" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "Ní féidir comhaid MO a chur in eagar go díreach in Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Earráid agus an comhad á oscailt" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Oscail agus cuir an comhad PO in eagar ina áit sin. Nuair a shábhálfaidh tú " "é, nuashonrófar an comhad MO freisin." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ná scrios comhaid shealadacha (dífhabhtú)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "déileáil le URI poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "léim go dtí an mhír ar an líne shonraithe" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Theip ar chumarsáid leis an bpróiseas Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Tharla earráid gan réiteach: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Roghnaigh teimpléad aistriúcháin" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Comhad neamhbhailí" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Roghnaigh comhad aistriúcháin" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Is eagarthóir aistriúcháin é Poedit atá furasta feidhm a bhaint as." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "" "Ní féidir ach comhad amháin a chaitheamh isteach ar an fhuinneog PoEdit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Ní comhad aistriúcháin é \"%s\"." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Níl comhad “%s†ann." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "Níl an litreoir ar fáil, toisc nach bhfuil foclóir %s ann." #: src/edframe.cpp:871 msgid "Install" msgstr "Suiteáil" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Tá an comhad “%s†athraithe ag feidhmchlár eile." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Athluchtaigh an comhad" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Ar mhaith leat an comhad a athlódáil ón diosca? Caillfear d’eagarthóireacht " "neamhshábháilte i Poedit má dhéanann tú amhlaidh." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Neamhaird" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Athluchtaigh an Comhad" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Tá an comhad athraithe. Ar mhaith leat na hathruithe a shábháil?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Cuir i dtaisce na hathruithe" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Caillfidh tú do chuid athruithe mura sábhálfaidh tú iad." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Cuir i dtaisce" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ná sábháil" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ná Sábháil" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Caillfear na hathruithe a rinne an feidhmchlár eile má shábhálann tú iad." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Cealaigh" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Sábháil mar sin féin" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Sábháil mar sin féin" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Sábháil mar…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Tiomsaigh mar…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Comhaid Aistriúcháin Tiomsaithe" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Easpórtáil go HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Comhaid HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Ag easpórtáil go HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Theip ar nuashonrú" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Oscail comhad tagartha" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Nuashonraigh ó Chomhad &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Nuashonraigh ó chomhad &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "Aimsíodh %d fhadhb leis an aistriúchán." msgstr[1] "Aimsíodh %d fhadhb leis an aistriúchán." msgstr[2] "Aimsíodh %d fhadhb leis an aistriúchán." msgstr[3] "Aimsíodh %d bhfadhb leis an aistriúchán." msgstr[4] "Aimsíodh %d fadhb leis an aistriúchán." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Torthaí an bhailíochtaithe" #: src/edframe.cpp:1842 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 "" "Marcáladh earráidí le cló dearg sa liosta. Gheobhaidh tú mionsonraí na " "hearráide nuair a roghnóidh tú iontráil sa liosta." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Sábháladh an comhad." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Sábháladh an comhad agus tiomsaíodh mar chomhad MO é, ach is dócha nach n-" "oibreoidh sé mar is ceart." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "Sábháladh an comhad, ach ní féidir é a thiomsú mar chomhad MO." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "Tiomsaíodh an comhad mar chomhad MO, ach is dócha nach n-oibreoidh sé mar is " "ceart." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Ní féidir an comhad a thiomsú mar chomhad MO." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Níor aimsíodh aon fhadhb leis an aistriúchán." #: src/edframe.cpp:1894 #, 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] "" "Tá an t-aistriúchán réidh le húsáid, ach tá %d teaghrán gan aistriúchán fós." msgstr[1] "" "Tá an t-aistriúchán réidh le húsáid, ach tá %d theaghrán gan aistriúchán fós." msgstr[2] "" "Tá an t-aistriúchán réidh le húsáid, ach tá %d theaghrán gan aistriúchán fós." msgstr[3] "" "Tá an t-aistriúchán réidh le húsáid, ach tá %d dteaghrán gan aistriúchán fós." msgstr[4] "" "Tá an t-aistriúchán réidh le húsáid, ach tá %d teaghrán gan aistriúchán fós." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Tá an t-aistriúchán réidh le húsáid." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Dheisigh Poedit ábhar neamhbhailí sa chomhad \"%s\" go huathoibríoch." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Bhí teaghráin dhúblacha sa chomhad, rud nach gceadaítear i gcomhaid PO. " "Réitigh Poedit an fhadhb, ach ba chóir duit na haistriúcháin a bhfuil " "tuilleadh oibre de dhíth orthu a athbhreithniú." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Níl teanga an aistriúcháin socraithe." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Roghnaigh Teanga" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Roghnaigh teanga" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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í féidir moltaí a fháil mura bhfuil teanga an aistriúcháin socraithe. Agus " "beidh fadhbanna agat le gnéithe eile freisin, mar shampla iolraí." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Is ionann an bhunteanga agus an sprioctheanga." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Athraigh an Teanga" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Athraigh an teanga" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Tá iontrálacha le foirmeacha iolra sa chomhad seo, ach níl ceanntásc Plural-" "Forms cumraithe ann." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Tá líon difriúil foirmeacha iolra ag iontrálacha sa chomhad seo ná mar a " "deir ceanntásc Foirmeacha Iolra an chomhaid" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Ceanntásc riachtanach Plural-Forms ar iarraidh." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Earráid chomhréire ar an líne Plural-Forms (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Deisigh an Ceanntásc" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Deisigh an ceanntásc" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "Tá an abairt iolra a úsáideann an comhad neamhghnách do %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Athbhreithniú" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Ar mhaith leat Béarla a úsáid don téacs foinse?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Úsáideann an comhad seo aitheantóirí teaghrán in ionad téacs foinse. Is " "féidir le Poedit téacsanna Béarla a luchtú ón gcomhad “%s†duit." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Luchtaigh Béarla" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Aistrithe: %d as %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Fágtha: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d earráid" msgstr[1] "%d earráid" msgstr[2] "%d earráid" msgstr[3] "%d n-earráid" msgstr[4] "%d earráid" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d iontráil" msgstr[1] "%d iontráil" msgstr[2] "%d iontráil" msgstr[3] "%d n-iontráil" msgstr[4] "%d iontráil" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (gan sábháil)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (mionathraithe)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Níorbh fhéidir an chuimhne aistriúchán a nuashonrú: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Níorbh fhéidir an comhad “%s†a shábháil." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Bain aistriúcháin atá cosúil leis an bhfoinse" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "Ar mhaith leat gach aistriúchán atá comhionann leis an téacs foinse a bhaint?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Scriosfaidh an gníomh seo aon aistriúcháin a mheaitseálann an téacs foinse " "go díreach. Ní féidir é seo a chealú." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Ná Scrios" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Bain" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Glan aistriúcháin scriosta" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "" "An bhfuil fonn ort na haistriúcháin go léir nach bhfuil in úsáid a scriosadh?" #: src/edframe.cpp:2879 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 "" "Má leanann tú ar aghaidh leis seo, déanfar léirscriosadh buan ar gach " "aistriúchán atá marcáilte \"scriosta\". Beidh sé ort iad a aistriú arís má " "chuirtear ar ais iad amach anseo." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Scrios" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Cóipeáil ón fhoinse" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Cóipeáil ón Fhoinse" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Glan an t-aistriúchán" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Glan an tAistriúchán" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Déan eagar ar an nóta tráchta" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Cuir Nóta Tráchta in Eagar" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Tarluithe Cód" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Tarluithe cóid" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Cuir an Barra Taoibh i bhfolach" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Taispeáin an Barra Taoibh" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Cuir an Barra Stádais i bhfolach" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Taispeáin an Barra Stádais" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Fad teaghrán i gcarachtair: aistriúchán | foinse" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Fad teaghrán i gcarachtair" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Téacs foinseach" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Uatha" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Iolra" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Aistriúchán" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Réamhaistrithe" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Tuilleadh oibre de dhíth" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Tuilleadh oibre de dhíth" #: src/editing_area.cpp:566 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 "" "Níl sna comhaid POT ach teimpléid; níl aon aistriúcháin iontu.\n" "Chun aistriúchán a dhéanamh, cruthaigh comhad nua PO, bunaithe ar an " "teimpléad." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Cruthaigh aistriúchán nua" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Déan aistriúchán nua ón gcomhad POT seo." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID an téacs fhoinsigh" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Gach Rud" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Leagan %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Foirm %i (neamhúsáidte)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Náid" #: src/editing_area.cpp:788 msgid "One" msgstr "Aon" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dó" #: src/editing_area.cpp:804 msgid "Other" msgstr "Eile" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Comhthéacs teaghrán: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Aitheantóir teaghrán: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Formáid %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Formáid %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Aistriúchán — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "Aitheantas" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Téacs foinseach — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "teanga anaithnid" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Earráid líonra: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Earráid anaithnid" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Theip ar cláir gettext a chumascú. " #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Oscail san Eagarthóir" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Oscail san eagarthóir" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Níl aon fhaisnéis faoi tharla an teaghrán seo sa chód foinse ar fáil sa " "chomhad." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Gan eolas úsáide" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d teagmhas cód" msgstr[1] "%d eachtraí cóid" msgstr[2] "%d eachtraí cóid" msgstr[3] "%d eachtraí cóid" msgstr[4] "%d eachtraí cóid" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Cód foinseach gan aimsiú" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Ní féidir le Poedit an cód foinse a thaispeáint san áit a n-úsáidtear an " "teaghrán, mar nach bhfuil an comhad ar fáil san áit a bhfuil tagairt á " "déanamh di nó gur tagairt shiombalach é nach bhfuil ag tagairt do chomhad " "fíor." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Ní féidir an comhad a oscailt" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Ní raibh Poedit in ann an comhad “%s†a oscailt." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Aimsigh" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Ionadaigh" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Roghanna" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ná bac le cás uachtair/íochtair" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Timfhilleadh" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Focail iomlán amháin" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Aimsigh sna foinsí" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Cuardaigh in aistriúcháin" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Aimsigh sna nótaí tráchta" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "Ionadaigh &Uile" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "Ionadaigh &uile" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Ionadaigh" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Roimhe Seo" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Ar Aghaidh >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Teaghrán le haimsiú" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Teaghrán le cur ina ionad" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "rabhadh " #: src/gexecute.cpp:171 msgid "error: " msgstr "earráid " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Ainm nó cód teanga" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Sprioctheanga" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Teanga an aistriúcháin:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Gach teaghrán" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Níorbh fhéidir sonraí tionscadail Localazy a íoslódáil." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Tharla earráid agus aistriúcháin á n-uaslódáil chuig Locazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Tionscadail" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Foghlaim tuilleadh faoi %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Is ardán logánaithe uathoibrithe go mór é Locazy a ligeann d’aon duine a " "gcuid táirgí agus ábhair a aistriú go teangacha éagsúla go héasca." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Cuir Tionscadal leis" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Cuir tionscadal leis" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Bainisteoir Clár" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Eagar…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Cruthaigh tionscadal aistriúcháin nua" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Scrios an tionscadal" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Cuir an tionscadal in eagar" #: src/manager.cpp:176 msgid "Update all" msgstr "Nuashonraigh uile" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Nuashonraigh gach catalóg sa tionscadal" #: src/manager.cpp:378 msgid "Total" msgstr "Iomlán" #: src/manager.cpp:379 msgid "Untrans" msgstr "Neamhaistrithe" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Tuilleadh oibre de dhíth" #: src/manager.cpp:381 msgid "Errors" msgstr "Earráidí" #: src/manager.cpp:382 msgid "Last modified" msgstr "Mionathraithe an uair deirineadh ar an" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Select directory" #: src/manager.cpp:433 msgid "Directories:" msgstr "Comhadlannaí:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "An bhfuil fonn ort tionscadal “%s†a scriosadh?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Scrios an tionscadal" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Má scriosann tú an tionscadal, ní scriosfar aon chomhad aistriúcháin." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Dearbhú" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Nuashonraigh gach catalóg sa tionscadal seo?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" "Déanann sé seo nuashonrú ón gcód foinseach ar gach comhad sa tionscadal." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Nuashonrú catalóg tionscadal" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Lorg Nuashonruithe…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Bainisteoir na gCatalóg" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Sainroghanna…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Eagar" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Cealaigh" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Athdhéan" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Paste and Match Style" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Scrios" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Litriú agus Gramadach" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Taispeáin Litriú agus Gramadach" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Seiceáil an Cháipéis Anois" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Seiceáil Litrithe Bheo" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Seiceáil Gramadach agus Litriú" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Seiceáil Litrithe go hUathoibríoch" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Ionadaithe" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Taispeáin Ionadaithe" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Cóipeáil/Greamú Cliste" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Athfhriotail Chliste" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Daiseanna Cliste" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Nascanna Cliste" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Ionadú Téacs" #: src/menus.cpp:230 msgid "Transformations" msgstr "Claochluithe" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Cás Uachtair" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Cás Ãochtair" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Ceannlitir" #: src/menus.cpp:237 msgid "Speech" msgstr "Caint" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Tosaigh ag Labhairt" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Stop ag Labhairt" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Amharc" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Taispeáin an Barra Uirlisí" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Saincheap an Barra Uirlisí…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Mód Lánscáileáin" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Fuinneog" #: src/menus.cpp:263 msgid "Minimize" msgstr "Ãoslaghdaigh" #: src/menus.cpp:264 msgid "Zoom" msgstr "Súmáil" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Fáilte go dtí Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Tabhair Uile Chun Tosaigh" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Eolas faoin aistritheoir" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Ainm:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "D'ainm" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Ríomhphost:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "tusa@seoladh.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Ní úsáidfear d'ainm nó do sheoladh r-phoist ach ar an líne Last-Translator i " "gcomhaid GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Cur in Eagar" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Tiomsaigh mar chomhad MO go huathoibríoch agus é á shábháil" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Seiceáil an litriú" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Athruigh an sprioc i gcónaí chuig réimse inchur téacs" #: src/prefsdlg.cpp:211 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á riamh lig don réim teaghráin bheith mar sprioc. Má tá sé chumasaithe, " "caithfear feidhm a bhaint as na saighdeanna Ctrl le haghaidh an méarchlár a " "fheidhmiú ach is féidir téacs a chlóscríobh láithreach, gan Tab a bhrúigh " "chun an sprioc a athrú." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Cuma" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Úsáid cló saincheaptha liosta:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Úsáid cló saincheaptha i réimsí téacs:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Athraigh teanga an chomhéadain" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(Windows 8 nó níos déanaí)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Ginearálta" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Úsáid cuimhne aistriúcháin" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Bainistigh…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Agus teaghráin sa bhunteanga á nuashonrú" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "garbhmheaitseáil laistigh den chomhad" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "réamhaistriúchán ón chuimhne aistriúcháin" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Is féidir leat Poedit iarracht a dhéanamh iontrálacha nua a líonadh ó " "aistriúcháin eile sa chomhad seo amháin, nó ón chuimhne aistriúcháin iomlán. " "Ní bheidh an TM ró-éifeachtach má tá sé beagnach folamh, ach tiocfaidh " "feabhas uirthi de réir a chéile." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Aistriúcháin stóráilte:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Méid an bhunachair sonraí ar an diosca:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Tabhair Isteach Comhaid Aistriúcháin…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Tabhair isteach comhaid aistriúcháin…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Tabhair Isteach Ó TMX Iad…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Tabhair isteach ó TMX iad…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Bain Amach Chuig an TMX é…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Bain amach chuig an TMX é…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Athshocraigh" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Roghnaigh comhaid aistriúcháin le hiompórtáil" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Roghnaigh comhaid TMX le tabhairt isteach" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Comhaid TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Aistriúcháin á n-iompórtáil…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Theip ar an gcuimhne aistriúcháin a iompórtáil." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Ag iompórtáil ó “%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "Iompórtáladh %s aistriúchán." msgstr[1] "Iompórtáladh %s aistriúchán." msgstr[2] "Iompórtáladh %s aistriúchán." msgstr[3] "Iompórtáladh %s aistriúchán." msgstr[4] "Iompórtáladh %s aistriúchán." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Easpórtáil mar…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Aistriúcháin á mbaint amach…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Níorbh fhéidir an chuimhne aistriúcháin a easpórtáil go “%sâ€." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Athshocraigh an cuimhneachán aistriúchán" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "" "An bhfuil tú cinnte gur mhaith leat an chuimhne aistriúcháin a athshocrú?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Má athshocraíonn tú an chuimhne aistriúcháin, scriosfar gach aistriúchán atá " "inti go buan. Ní féidir dul ar ais air seo." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Cuimhne Aistriúcháin" #: src/prefsdlg.cpp:730 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 "" "Baintear úsáid as bailitheoir chun teaghráin inaistrithe a aimsiú i mbunchód " "sa chaoi gur féidir iad aistriú." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Bailitheoirí Saincheaptha:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Bailitheoirí saincheaptha:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Tacaíonn sé le gach teanga ríomhchlárúcháin a aithníonn na huirlisí GNU " "gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript agus cinn eile)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Scrios an bailitheoir" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "An bhfuil tú cinnte gur mhaith leat an bailitheoir \"%s\" a scriosadh?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Bailitheoirí" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Cuntais" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Lorg nuashonruithe go huathoibríoch" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Leaganacha béite san áireamh" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Gheobhaidh tú na gnéithe agus na feabhsúcháin is déanaí sa leagan béite, ach " "seans nach mbeidh sé chomh cobhsaí." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Nuashonruithe" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Rachaidh na socruithe seo i bhfeidhm ar fhormáidiú inmheánach comhad PO. Is " "féidir leat iad a athrú má tá riachtanais ar leith agat, m.sh. mar gheall ar " "chóras rialaithe leaganacha." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Deireadh líne:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (molta)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Timfhilleadh ag:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Caomhnaigh an formáidiú i gcomhaid atá ann" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Casta" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Socruithe" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Teaghráin á n-ullmhú…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Réamhaistriúchán ón chuimhne aistriúcháin…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u teaghrán réamhaistrithe" msgstr[1] "%u theaghrán réamhaistrithe" msgstr[2] "%u theaghrán réamhaistrithe" msgstr[3] "%u dteaghrán réamhaistrithe" msgstr[4] "%u teaghrán réamhaistrithe" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Réamhaistriúchán ar siúl…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "Rinneadh réamhaistriúchán ar %d teaghrán." msgstr[1] "Rinneadh réamhaistriúchán ar %d theaghrán." msgstr[2] "Rinneadh réamhaistriúchán ar %d theaghrán." msgstr[3] "Rinneadh réamhaistriúchán ar %d dteaghrán." msgstr[4] "Rinneadh réamhaistriúchán ar %d teaghrán." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Marcáladh go bhfuil tuilleadh oibre de dhíth ar na haistriúcháin toisc gurbh " "fhéidir nach bhfuil siad cruinn. Ba chóir duit iad a athbhreithniú." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Meaitseálacha beachta ó TM" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Meaitseálacha garbha ó TM" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Níorbh fhéidir réamhaistriúchán a dhéanamh ar theaghrán ar bith." #: src/pretranslate.cpp:218 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 "" "Níl aon teaghráin cosúil le hábhar an chomhaid seo sa gcuimhne aistriúcháin. " "Ní bheidh an TM éifeachtach go dtí go mbaileoidh Poedit go leor comhad a " "aistríonn tú de láimh." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Ní féidir réamh-aistriúchán a dhéanamh gan an téacs foinse." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Réamhaistriúchán" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Éilíonn réamh-aistriúchán go mbeadh an téacs foinse ar fáil. Ní oibríonn sé " "mura n-úsáidtear ach aitheantóirí gan an téacs iarbhír." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Ní féidir réamh-aistriúchán a dhéanamh ó theanga anaithnid." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Éilíonn réamh-aistriúchán go mbeadh teanga an téacs foinse ar eolas. Níorbh " "fhéidir le Poedit é a bhrath sa chomhad seo." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Ná húsáid ach meaitseálacha cruinne" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "De réir réamhshocraithe, cuirtear torthaí míchruinne san áireamh freisin, " "ach marcáiltear iad mar thorthaí a bhfuil gá le hobair orthu. Seiceáil an " "rogha seo chun meaitseálacha foirfe amháin a chur san áireamh." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Ná marcáil go bhfuil tuilleadh oibre de dhíth más meaitseáil chruinn é" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Ná húsáid an rogha seo mura bhfuil an-mhuinín agat as do chuimhne " "aistriúcháin. De réir réamhshocraithe, marcálfar go bhfuil tuilleadh oibre " "de dhíth ar gach aistriúchán a thagann ón TM." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Le réamhaistriúchán, aimsítear meaitseálacha, cruinn nó neamhchruinn, ar " "theaghráin gan aistriúchán sa gcuimhne aistriúcháin." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Earráid " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "Tharla %d earráid:" msgstr[1] "Tharla %d earráid:" msgstr[2] "Tharla %d earráid:" msgstr[3] "Tharla %d earráid:" msgstr[4] "Tharla %d earráid:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Tharla earráid." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "Tharla %d earráid." msgstr[1] "Tharla %d earráid." msgstr[2] "Tharla %d earráid." msgstr[3] "Tharla %d earráid." msgstr[4] "Tharla %d earráid." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "à chur i gceal…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Tarraing Fillteáin nó Comhaid Anseo" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Tarraing fillteáin nó comhaid anseo" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Cuir Fillteáin Leis…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Cuir fillteáin leis…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Cuir Comhaid Leis…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Cuir comhaid leis…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Cuir Saoróg leis…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Cuir saoróg leis…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Taispeáin sa Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Taispeáin in Explorer" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Taispeáin san fhillteán" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Cosáin:" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Cosáin eisiata" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Ardsocruithe bailithe" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Bailigh nótaí le haghaidh aistritheoirí ó:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Réimír roimh nótaí tráchta:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Gach nóta tráchta" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Bratacha breise xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Lorgfhocail sa bhreis" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Ainm an tionscadail a mbaineann an t-aistriúchán leis" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Ainm na foirne agus seoladh rphoist nó URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "m.sh. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (molta)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Sábháil an comhad ar dtús. Ní féidir an rannán seo a chur in eagar go dtí go " "sábhálfaidh tú é." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Ceartas áitchoinneálaithe" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Tá an áitchoimeádaí “%s†ar iarraidh ón aistriúchán." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Ãitchoinneálaí iomarcach “%s†nach bhfuil sa téacs foinse." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Aistriúcháin ar leaganacha iolra" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Níl gach foirm iolra aistrithe." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Cás uachtair/íochtair neamhréireach" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Ba chóir an t-aistriúchán a thosú mar abairt." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Ba chóir don aistriúchán a thosú le litir bheag." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Spás bán neamhréireach" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Ní thosaíonn an t-aistriúchán le spás." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "" "Tosaíonn an t-aistriúchán le spás, ach ní thosaíonn an buntéacs le spás." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Tá spás ar iarraidh ag deireadh an aistriúcháin." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Tá líne nua ag deireadh an aistriúcháin cé nach bhfuil sa mbuntéacs." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Tá spás ar iarraidh ag deireadh an aistriúcháin." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Tá spás ag deireadh an aistriúcháin cé nach bhfuil sa mbuntéacs." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Seiceálacha poncaíochta" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Ba chóir “%s†a bheith ag deireadh an aistriúcháin." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Níor chóir “%s†a bheith ag deireadh an aistriúcháin." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" "Tá “%s†ag deireadh an aistriúcháin, ach tá “%s†ag deireadh an bhuntéacs." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Scamall" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Glan an roghchlár" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Glan an roghchlár" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Nóta tráchta:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Nuashonraigh é" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Scrios" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Scrios an nóta tráchta" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Cuir an tionscadal in eagar" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Ainm an tionscadail:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Siortaigh" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Cuir comhadlann leis an réim" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Tá go maith" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Comhad" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Nua…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Ceann nua ó chomhad &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Ceann nua ó chomhad &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Oscail…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Oscail Comhaid Le Déanaí" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Oscail comhaid le déanaí" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Aistriúchán scamall oscailte…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Aistriúchán Oscailte Scamall…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Tosaigh fuinneog" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Tosaigh fuinneog" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Bainisteoir clár" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Bainisteoir na gCatalóg" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Dún" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Cuir i dtaisce" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Sábháil m&ar…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Sábháil M&ar…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Tiomsaigh go MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&aspórtáil go HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Lorg nuashonruithe…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Socruithe…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Sainroghanna" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "S&coir" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Scoir" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Cóipeáil ón uatha" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Cóipeáil ón Uatha" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Tuilleadh &oibre de dhíth" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Tuilleadh &oibre de dhíth" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Déan eagar ar an &nóta tráchta" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Cuir &Nóta Tráchta in Eagar" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Moltaí" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Aimsigh…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Ionadaigh…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "An chéad toradh eile" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "An toradh roimhe seo" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Aimsigh agus Ionadaigh…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "An chéad toradh eile" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "An toradh roimhe seo" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Taispeáin aitheantas an teaghráin" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Taispeáin Aitheantas an Teaghráin" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Taispeáin na rabhaidh" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Taispeáin na Rabhaidh" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Sórtáil mar atá sa &chomhad" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Sórtáil mar atá sa &chomhad" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Sórtáil de réir &foinse" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Sórtáil de réir &Foinse" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Sórtáil de réir &aistriúcháin" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Sórtáil de réir &Aistriúcháin" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Grúpáil de réir comhthéacs" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Grúpáil de réir Comhthéacs" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Iontrálacha a bhfuil earráidí iontu ar dtús" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Iontrálacha a bhfuil earráidí iontu ar dtús" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Iontrálacha &gan aistriú ar dtús" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Iontrálacha &gan aistriú ar dtús" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Taispeáin teagmhais chóid" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Taispeáin Teagmhais Chóid" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Taispeáin an barra taoibh" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Taispeáin an barra stádais" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Aistriúchán" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "N&uashonraigh ón chód foinseach" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "N&uashonraigh ón Chód Foinseach" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sioncronaigh le Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Réamhais&triúchán…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Bailíochtaigh aistriúcháin" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Bailíochtaigh Aistriúcháin" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Bain Aistriúcháin den Fhoinse chéanna" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Glan na haistriúcháin scriosta" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Glan na hAistriúcháin Scriosta" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Airíonna…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Téigh" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Críochnú agus dul ar aghaidh" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Críochnú agus dul ar aghaidh" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Curtha in eagar roimhe seo" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Curtha in eagar roimhe seo" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "An t-aistriúchán &roimhe seo" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "An tAistriúchán &Roimhe Seo" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&An chéad aistriúchán eile" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "An &Chéad Aistriúchán Eile" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Teagh&rán gan chríochnú roimhe seo" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Teagh&rán gan chríochnú roimhe seo" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "An &chéad cheann eile gan chríochnú" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "An &chéad cheann eile gan chríochnú" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "An t-iolra roimhe seo" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "An tIolra Roimhe Seo" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "An chéad iolra eile" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "An Chéad Iolra Eile" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Cúnamh &ar líne" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Cúnamh &Ar Líne" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Cáipéisí gettext &GNU" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Cáipéisí gettext &GNU" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Maidir le Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Maidir Leis" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Socrú an bhailitheora" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Réim breiseáin scartha le leathstadanna (m.sh. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Gairm:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Ordú chun aistriúcháin a bhailiú:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Seo é an t-ordú chun an bailitheoir a thosú.\n" "Is é %o ainm an aschomhaid, is é %K liosta lorgfhocal,\n" "%F liosta inchomhad,\n" "agus %C an tacar carachtar (féach thíos)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Mír i réim na treoirfhocail:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Ceanglófar é seo chuig líne na n-orduithe uair amháin\n" "do gach treoirfhocal. Leathnaíonn &k chuig an treoirfhocal." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Mír i réim na comhaid inchur:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Ceanglófar é seo chuig líne na n-orduithe uair amháin\n" "do gach comhad inchur. Leathnaíonn %f chuig an ainm comhad." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Tagairt foinse foireann litreacha:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Ceanglófar é seo le líne na n-orduithe\n" "amháin má tugadh tacar carachtar an chóid. Leathnaíonn %c go dtí an tacar " "carachtar." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Airíonna an Aistriúcháin" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Ainm agus leagan an tionscadail:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Foireann teanga:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Leaganacha iolra:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Úsáid rialacha réamhshocraithe na teanga seo" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Úsáid slonn saincheaptha" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Tuilleadh eolais maidir le hiolraí" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Foireann litreacha:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Ardsocruithe Bailithe…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Ardsocruithe bailithe…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Airíonna an aistriúcháin" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Cosáin na bhFoinsí" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Cosáin na bhfoinsí" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Faigh téacs ó comhaid fhoinseacha sna comhadlanna seo a leanas:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Cosán bunaidh:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Lorgfhocail sna Foinsí" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Lorgfhocail sna foinsí" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Úsáid na lorgfhocail seo (ainmneacha ar fheidhmeanna) chun teacht ar " "theaghráin\n" "inaistrithe san fhoinse:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" "Bain úsáid as lorgfhocail réamhshocraithe le haghaidh teangacha a dtacaítear " "leo" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Maidir le lorgfhocail gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Oscail comhad" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Cuir an comhad i dtaisce" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Deimhnigh" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Lorg botúin sna haistriúcháin" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Nuashonraigh ón gcód é" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Nuashonraigh ón gCód é" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Nuashonraigh ón chód foinseach" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Barra taoibh" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Taispeáin nó folaigh an barra taoibh" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Seantéacs foinseach" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "An sean-bhuntéacs (sular athraigh sé) a fhreagraíonn an t-aistriúchán (atá " "míchruinn anois) dó." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Nótaí ar son aistritheoirí" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Nóta tráchta" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Cuir nóta tráchta leis" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Cuir nóta tráchta leis" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Scrios ón gCuimhne Aistriúcháin É" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Scrios ón gcuimhne aistriúcháin é" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Aistriúcháin mholta" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Gan torthaí" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Gan Torthaí" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Aimsíodh an teaghrán seo i gcuimhne aistriúcháin Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Éilíonn moltaí aistriúcháin go bhfuil an téacs foinse ar fáil. Ní oibreoidh " "siad mura n-úsáidtear ach aitheantóirí gan an téacs iarbhír." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Éilíonn moltaí aistriúcháin go bhfuil teanga an téacs foinse ar eolas. " "Níorbh fhéidir le Poedit é a bhrath sa chomhad seo." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Ní féidir an clár a rith: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Tá an comhad TMX míchumtha." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Tá bunachar sonraí na cuimhne aistriúcháin truaillithe: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Earráid chuimhne aistriúcháin: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Bain feidhm as an béarla réamhshocraithe)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Rogha béarla" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Roghnaigh do rogha béarla" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Caithfear Poedit a atosú chun an athrú a chur i bhfeidhm." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Ní féidir comhadlann shealadach a chruthú." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Níl aon aistriúcháin ann. Nach ait é sin." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Ní chuirtear iontrálacha inaistrithe leis de láimh sa chóras Gettext, ach " "baintear iad go huathoibríoch ón gcód foinse. Ar an mbealach seo, fanann " "siad cothrom le dáta agus cruinn. De ghnáth úsáideann aistritheoirí comhaid " "teimpléid PO (POTanna) a ullmhaíonn an forbróir dóibh." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Foghlaim tuilleadh faoi GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "An bealach is fusa an chatalóg seo a líonadh ná nuashonrú ó chomhad POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Nuashonrú ó POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Tóg teaghráin inaistrithe ó theimpléad POT atá ann." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" "Nó is féidir leat teaghráin inaistrithe a bhailiú go díreach ón bhunchód:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Faigh teaghráin ón chód" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Cumraigh an próiseas bailithe teaghrán ó bhunchód sna hAiríonna." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Leagan %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Cruthaigh nua" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Cruthaigh aistriúchán nua ó theimpléad POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Siortaigh comhaid" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Comhaid aistriúcháin a oscailt agus a chur in eagar." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Aistrigh tionscadal scamall" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Comhoibrigh le daoine eile ar líne." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Comhaid le déanaí" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Siocronaigh" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sioncronaigh an t-aistriúchán le Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Maidir le %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Sainroghanna %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Maidir le %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Seirbhísí" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Folaigh %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Folaigh na cinn eile" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Taispeáin Uile" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Scoir %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Sainroghanna…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Sainroghanna..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Sainroghanna..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Cuir i bhFeidhm" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Cuir i bhFeidhm" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Siar" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Siar" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Cealaigh" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Glan" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Glan" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Cóipeáil" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "Gea&rr" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Gearr" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Déan eagar" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "Sc&oir" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Cabhair" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nua" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Nua" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Níl" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Níl" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&OK" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Oscail…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Oscail..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Oscail..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Greamaigh" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Greamaigh" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Sainroghanna" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Athdhéan" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Athnuaigh" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Sábháil mar" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Sábháil mar" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Roghnaigh &Uile" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Roghnaigh Uile" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Cealaigh" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Tá" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Tá" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Saighead Suas" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Saighead Síos" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Ar Chlé" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Ar Dheis" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Rabhadh " poedit-3.6.3/locales/an.mo0000644000175100001660000011302415011674362011054 Þ•Êle¼P& Q& ]&h&<|&¹&JÌ&g' '‰' ˜'¢' ©'·'¾'Ä'Ì'Ó'Ú'à'è'÷'( ((&(:(>(P(b(h(m(u(‡(™( ( ª(·(À( Ç(Ô(ê())8)>)D)J)S)Y)u)‘)¨)¿)Å)Ê)á) ÿ) *** '* 3*?*Y*m*ˆ*‘*®* Ä*1Ñ*'+++H+ b+m+7s+6«+â+),,, 1,]<,š,$­,Ò,Ù,"à,- -)-;-M-^-q-z--©-Å-#Ú-þ- ..%.7.=. X.y. ‚../«. Û.è.í.//)/?/^/w/Ž/ ®/¼/Á/Ô/ç/ü/000/0 B0?O0 0 0ª0*½0è0"û051T1Z1 _1 m1 {1 ˆ1 •1¢1³1»1Â1Ô1î1u2~2‘2 £2®2 ½2Ê2#ß2<3@3 P3*[30†3!·3'Ù344(%4TN4£4 ¨4 ²4À4Ñ4æ4 û4 5 5 5-5<5K5S5 [5f5 k5x5ˆ5§5©ª5‡T6Ü6 ã6ï6 7&7 .7 ;7G7;L7(ˆ7±7Î7 á7 ë7ù78 /8:8:S8 Ž8<œ8.Ù899(9C9Z9*c9Ž9”9¥9 ¶9 Á9»Ì9ˆ: Œ:˜:©:º:#Ë:ï:';%(;N;Q;’U;è; <<<-<5<=<C<X<m<‚<œ<-=3=I=O=nb=EÑ= >%>,>@F>õ‡>,}? ª?¸?2Ç?ú?Ž @ œ@¨@%·@Ý@ò@A !A/A8A>AYA^AcA kA wA ƒA‘A™A(¬AÕAÛAzôAoBvB {B ‡B“B ›B ¦B ³B ¿BÊB"ÛBþB C *C 7CDC^CnC CŽC §C´CÄCÌCÔCÝCåCøCD D D +D8DLD\DqD…D•DªD†¿DFE aEmE€E ‘EŸE °E¾EKÅEF&F 5FCFXF gF uFŽFGG•G(§GÐG ØGæG+H/H82HkHÂ|HC?I8ƒIî¼I8«JRäJc7KQ›KíKlLŽuL!Mu&M,œMLÉM]N…tN«úN7¦OmÞO_LP[¬PQQQ ;QGQ\QoQ‡QžQ¶QÍQàQäQøQ ýQR1R 9R"DRgRwR†RŽRžR´RÑRëRSS#4SVXS¯SÆSÏS âSíS TT8TITPT XTdTmT…TH‰T5ÒT7U @U3JUa~UàUåUêU.V 6VWVsV“VªV½VÏVâVöVWW)We#ge ‹e•e¯e$Éeîe%÷ef$f7f Jf>Tf “ff¦fB¾fg)g;Cgg†gg¢g·gËgßgòghh"h?h\hyyh*óh+iJiNi^ioi)ŒiC¶iúi j3 j?Tj2”jCÇj kk42kagkÉkÏkàkñk l$lûÊŒL¤Xï¶è u ´^œ6# Ÿ?¢•Àž’,–ŠqBäbWp ÉŽþ$„Q…$;Fz(¾3l†N¿ÊKÉU P:^qÀ<Ý 9E‚p£BîZÓ_ñ[2¹x‰gJªSÖ nÚª00¶Ô¥!˜PÄHm±÷’Qy¼W1EHÇáVš%+wj= ù­ÿ">/°ãGòÆÃ|¬K¾T%©˨½D!‰G¡¦кS"–CY¸)ßXAüšY—8 Z?`voTF¬M[Å ;@™rì«ÕÌÁŠÃ-nŸ.<€L‘¢×Á¸¥k¤â¯4˜ˆ5 OƒÆMfd—Âi»¹rRJ›„.\h·©¯~5Vb®{e²o])‡ë,N­1ŧ'æye‹¨O…ý«ö›”™ØÍ@h9aIψt곆zú¡Ù4c¦‹ ²{“&Ä&Ž=c|k‡t³7iÈ“**l]§#j:g½º7 •Iu`wÑ\°ÎÒÇDaŒ´xœé¿µssC®}Uà·RôÛ~ž3dµ6AÜçå}+2õm/È𣼠øó»‚Þ-íƒv”(8'‘±€ (modified) (unsaved)%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&Next >&Next Translation&Next translation&OK&Online Help&Online help&Open...&Paste&Preferences&Previous Translation&Previous translation&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Save&Save as&Undo&Untranslated Entries First&Untranslated entries first&Validate Translations&Validate translations&View&Yes(Use default language)(requires Windows 8 or newer)< &PreviousAbout %sAccountsAdd CommentAdd commentAdd directory to the listAdditional keywordsAdditional xgettext flags:AdvancedAdvanced extraction settingsAll Translation FilesAll commentsAlso use default keywords for supported languagesAlways change focus to text input fieldAn item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken markup in translation string.BrowseCancelCannot create temporary directory.Cannot execute program: %sCapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck spellingClearClear TranslationClear translationCloseCollecting source files…Command to extract translations:Comment:Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationCopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t save file %s.Create new translationCreate new translations projectCrowdin errorCu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete extractorDelete the projectDirectories:Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.E&xitEditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEmail:Enter Full ScreenEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileEverythingExcluded pathsExport as…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerForm %iGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageIDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.IgnoreIgnore caseInclude beta versionsInformation about the translatorInstallInvalid fileInvocation:KeepLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about CrowdinLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMalformed header: “%sâ€Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNever 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.NewNew stringsNext Plural FormNext plural formNo Matches FoundNo entries could be pre-translated.No matches foundNo problems with the translation found.Not authorized, please sign in again.OKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen RecentOpen in EditorOpen in editorOpen...OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPermission denied.Please open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit is an easy to use translation editor.Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.PreferencesPreferences...Preserve formatting of existing filesPrevious Plural FormPrevious plural formProject name and version:Project name:Project:PurgePurge deleted translationsQuitRedoRefreshReload FileReload fileRemaining: %dReplaceReplacement stringRequired header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.ReviewSaveSave AnywaySave anywaySave asSave as…Save changesSelect &AllSelect AllSelect directorySelect translation files to importSelect your preferred languageSet LanguageSet languageShow SidebarShow Spelling and GrammarShow Status BarShow SubstitutionsShow ToolbarShow or hide the sidebarShow sidebarShow status barSidebarSign InSign OutSign inSign in to CrowdinSign outSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source textSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String to findSubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTake translatable strings from an existing POT template.Text ReplacementThe 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.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file has been modified. Do you want to save changes?The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation needs &workTranslation propertiesTranslation — %sTwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)UntransUpdate allUpdate all catalogs in the projectUpdate from POTUpdate summaryUpdatesUpdating failedUpdating translationsUpdating user information…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown language“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Aragonese Language: an_ES MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: an X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (modificau) (sin alzar)%d dentrada%d dentradasS'ha pretraduciu %d dentrada.S'ha pretraduciu %d dentradas.%d error%d errors%d problema trobau en a traducción.%d problemas trobaus en a traducción.%i linia d'o fichero “%s†no s'ha cargau correctament.%i linias d'o fichero “%s†no s'han cargau cargoron correctament.Formato %sPreferencias d’o %sFormato %sArredol de&Sobre o Poedit&Aplicar&Dezaga&Cancelar&Vuedar&Zarrar&Copiar&BorrarFeito y &siguientFeito y &siguient&Edición&FicheroManual de &GNU gettextmanual de &GNU gettext&IrA&grupar por o contextoA&grupar por o contexto&Aduya&Nuevo&Siguient >Traducción siguie&ntTraducción siguie&nt&Acceptar&Aduya en linia&Aduya en linia&Ubrir...A&pegar&PreferenciasTraducción &anteriorTraducción &anterior&Purgar as traduccions borradas&Purgar as traduccions borradas&Salir&Refer&Alzar&Alzar como&Desfer&Dentradas sin traducir primero&Dentradas sin traducir primero&Validar as traduccions&Validar as traduccions&Veyer&Sí(Fer servir a luenga por defecto)(requier o Windows 8 u superior)< &AnteriorArredol de %sCuentasAdhibir un comentarioAdhibir un comentarioAdhibir a carpeta t'a listaParolas clau adicionalsIndicadors xgettext adicionals:AvanzauOpcions avanzadas d'extracciónTotz os fichers de traducciónTotz os comentariosFer servir tamién as parolas clau predeterminadas pa os idiomas suportausPasar siempre o foco t'o quadro de traducciónElemento d'a lista de fichers de dentrada:Elemento d'a lista de parolas clau:AparenciaAplicarYes seguro que quiers eliminar l'extractor “%sâ€?De seguras que quiers reenchegar as traduccions memorizadas?Comprebar-ne as actualizacions automaticamentCompilar o fichero MO automaticament en alzarDezagaDirectorio radiz:As versions beta contienen as funcionalidatz y milloras mas recients, pero pueden resultar menos estables.Trayer-ne tot t'o frentMarca crebada en a cadena de traducción.ExaminarCancelarNo puet creyar-se a carpeta temporal.No se puet executar o programa: %sMeter en mayusclasChestor de &catalogosChestor de &catalogosChestor de catalogosCambiar a luenga d'a interficie d'usuarioChuego de caracters:Comprebar o documento agoraComprebar a gramatica con a ortografíaComprebar a ortografía en escribirComprebar si bi ha actualizacions…Mirar as errors en a traducciónComprebar a ortografíaVuedarLimpiar a traducciónLimpiar a traducciónZarrarReplegando los fichers d'orichen…Comando ta extrayer as traduccions:Comentario:Compilar ta…Fichers de traducción compilausConfigurar o codigo d'extracción de fuents en propiedatz.ConfirmaciónCopiarCopiar dende o singularCopiar dende o texto fuentCopiar dende o singularCopiar dende o texto fuentCorrechir automaticament a ortografíaNo s'ha puesto alzar lo fichero %s.Creyar una nueva traducciónCreyar un nuevo prochecto de traducciónS'ha produciu una error d'o Crowdin&RetallarExtractors personalizaus:Extractors personalizaus:Personalizar a barra de ferramientasRetallarGrandaria d'a base de datos en disco:BorrarBorrar l'extractorBorrar o prochectoCarpetas:Deseyas eliminar todas as traduccions que ya no se fan servir?&No alzarNo alzarNo tornar a amostrar-loNo marcar as coincidencias exactas como si les fese falta treballoNo tornar a amostrar-loSe ye baixando as zagueras traduccions…A descarga de traduccions ye desactivada en iste prochecto.&SalirEditarEditar o &comentarioEditar o &comentarioEditar o comentarioEditar o comentarioEditar o prochectoEditar o prochectoEditandoCorreu electronico:Dentrar ta pantalla completaDentradas con errors primeroDentradas con errors primeroAs dentradas con errors s'han marcau en royo en a lista. S'amostrarán os detalles d'a error quan selecciones a dentrada.S'ha produciu una error ubrindo lo ficheroS'ha produciu un error al guardar l'archivoTotRotas excluidasExportar como…Esviellar-lo dende as fuentsExtrayer as notas pa os traductors dende:Extrayer o texto d'o fichero d'orichen en os directorios siguients:Configuración d'extractorExtractorsHa fallau en comunicar-se con o proceso d'o Poedit.No s'ha puesto cargar l'archivo con las traduccions extraïdas.S'ha produciu una error en unir catalogos gettext.S'ha produciu una error en esviellar as traduccions memorizadas: %sFicheroLo fichero “%s†no existe.Lo fichero “%s†no ye un fichero de traducción.Lo fichero “%s†ye de nomás lectura y no puet alzar-se. Por favor alza-lo baixo atro nombre.MirarMirar o siguientMirar l'anteriorMirar en os comentariosMirar en o texto d'orichenMirar en as traduccionsMirar o siguientMirar l'anteriorApanyar l'idiomaApanyar l'idiomaApanyar o capiteroAdequar o capiteroForma %iCheneralFichers HTMLAduyaAmagar a barra lateralAmagar a barra d'estauAmagar iste mensache de notificaciónIDSi continas con o purgau, todas as traduccions marcadas como borradas serán eliminadas permanentment. Habrás a traducir-las unatra vegada si son adhibidas unatra vegada en o esvenidero.Si previament denegués l'acceso a los tuyos fichers, puetz permitir-lo en as preferencias d'o sistema > Seguridat y Privacidat > Privacidat > Fichers y carpetas.IgnoraIgnorar as mayusclas y as minusclasIncluir-ie as versions betaInformación arredol d'o traductorInstalarFichero invaliuExecución:Mantener-lasL'idioma d'a traducción ye o mesmo que l'idioma d'orichen.No s'ha establiu lo idioma d'a traducción.Idioma d'a traducción:Selección de luengaLuenga:Zaguera modificaciónAprender sobre as parolas clau d'o GNU gettextAprender arredol de formas pluralsAprender-ne másAprender mas arredol d'o CrowdinLa linia %d d'o fichero “%s†ye corrupta (los datos %s not son valius).finals d'as liniasLista d'extensions deseparadas por punto y coma (p. eix. *.cpp;*.h):Os fichers MO no se pueden editar dreitament en o Poedit.Convertir en minusclasConvertir en mayusclasCapitero malformau: “%sâ€Mezclando las diferencais…MinimizarNombre d'o prochecto pa o que ye a traducciónNombre:Siguien&t sin rematarSiguien&t sin rematarLe fa falta treballoLe fa falta treballoNo deixar que a lista de textos retienga l'enfoque. Si ista opción ye activada puet fer-se servir de conchunta con CTRL + teclas d'adreza ta mover-se por a lista de textos y prencipiar a tecliar immediatament sin pretar o tabulador ta cambiar o foco.NuevoTextos nuevosSiguient forma pluralSiguient forma pluralNo s'ha trobau coincidenciasNo s'ha puesto pretraducir garra dentrada.No s'ha trobau coincidencias.No se troba problemas en ista traducción.No ye autorizau, encieta la sesión de nuevas.AcceptarUnActiva-lo nomás si confidas en a calidat d'a tuya MT. De traza predeterminada todas as coincidencias d'a MT se marcan como que les fa falta treballo y s'han a revisar antis de no usar-lasNo replenar que as coincidencias exactasUbrir recientUbrir-lo en l'editorUbrir-lo en l'editorUbrir...OpcionsUnatroAnte&rior sin rematarAnte&rior sin rematarFichers de traducción POPlantiellas de traducción POTOs fichers POT no son que plantiellas y no contienen garra traducción en sí mesmas. Pa fer una traducción, creya un nuevo fichero PO basau en a plantiella.ApegarApegar con o mesmo estiloCarpetasPermiso denegau.En cuenta ubre y edita o fichero PO correspondient. En que l'alces o fichero MO s'esviellará tamién.En primeras alza o fichero. Ista sección no se puet editar dica que no se faga.Formas plurals:PoeditPoedit - Chestor de catalogosO Poedit ha apanyau automaticament conteniu invalido en o fichero “%sâ€.O Poedit puet mirar de replenar as nuevas dentradas nomás dende as traduccions anteriors d'o fichero u de toda la memoria de traducción. L'uso d'a MT no será guaire efectivo si ye quasi lasa, pero amillorará contra mas traduccions se bi anyada.Poedit ye un editor de traduccions d'uso facil.PretraducirPretraduciuS'ha pretraduciu %u cadenaS'ha pretraduciu %u cadenasPretraducindo…A pretraducción mira automaticament coincidencias exactas u fuscas pa las cadenas no traducidas en a memoria de traducción y replena las suyas traduccions.PreferenciasPreferencias...Conservar o formato d'os fichers existentsAnterior forma pluralAnterior forma pluralNombre d'o prochecto y versión:Nombre d'o prochecto:Prochecto:Purgar-lasPurgar as traduccions borradasSalirReferRefrescarTorna a cargar l'archivoTorna a cargar l'archivoEn queda: %dSubstituirCadena de substituciónFalta o capitero de formas plurals requiesto.Reenchegar-neReenchegar a memoria de traducciónEn reenchegar a memoria de traducción se borrarán todas as traduccions almagazenadas. Ista operación no se puet desfer.RevisarAlzarGuarda igualmentGuarda igualmentAlzar comoAlzar como…Alzar os cambiosSeleccion&ar-lo totSeleccionar-lo totSeleccionar a carpetaSeleccionar os fichers de traducción pa importar-losSeleccionar a luenga preferidaEstablir l'idiomaEstablir l'idiomaAmostrar a barra lateralAmostrar a ortografía y a gramaticaAmostrar a barra d'estauAmostrar as substitucionsAmostrar a barra de ferramientasAmostrar u amagar a barra lateralAmostrar a barra lateralAmostrar a barra d'estauBarra lateralEncetar a sesiónZarrar a sesiónEncetar a sesiónEncetar a sesión en o Crowdin.Zarrar a sesiónCopiau y apegau intelichentGuions intelichentsVinclos intelichentsCometas intelichentsOrdenar-los por l'orden d'o ficheroOrdenar-los por l'orichenOrdenar-los por a &traducciónOrdenar-los por l'orden d'o &ficheroOrdenar-los por l'&orichenOrdenar-los por a &traducciónChuego de caracters d'o codigo fuent:Os extractors de codigo fuent se fan servir pa trobar os mensaches traducibles en os fichers de codigo fuent y extrayer-los pa permitir a suya traducción.O codigo fuent no ye disponible.Texto fuentTexto d'orichen — %sParolas clau de fuentsRotas de fuentsParolas clau orichinalsDirectorios fuentVozS'ha desactivau a revisión ortografica porque falta o diccionario pa %s.Ortografía y gramaticaRancar a vozAturar a vozTraduccions almagazenadas:Cadena que mirarSubstitucionsSucherenciasAs 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.Suporta totz os luengaches de programación reconoixius por as ferramientas d'o GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript y atros).SincronizarSincronizar con o CrowdinSincronizar a traducción con o CrowdinSincronizandoError de sincronizaciónA sincronización con o Crowdin ha fallau.Bi ha una error sintactica en as formas plurals d'o capitero ("%s").TMPrener as cadenas traducibles d'una plantilla POT existent.Substitución de textoA MT no contién cadenas similars a lo conteniu d'iste fichero. Nomás ye efectivo pa las traduccions semiautomaticas dimpués que o Poedit aprenda prau de fichers que traduciés de traza manual.Es cámbios fetos per atras aplicacions se perderan si guardas el fichiero.O fichero no se puet compilar t'o formato MO pa emplegar-se.O fichero conteneba elementos duplicaus, ixo not ye permitiu en os fichers PO y empacharía que se fese servir o fichero. O Poedit ha apanyau o problema pero s'ha a revisar as traduccions de qualsiquier elemento marcau como que le fa falta treballo y correchir-lo si ye menister.L'archivo ha estau modificau. Quiers guardar es cámbios fetos?O fichero s'ha compilau t'o formato MO pero prebablement no funcionará correctament.O fichero s'ha alzau de traza segura y s'ha compilau t'o formato MO pero prebablement no marche correctament.O fichero s'ha alzau pero no puet compilar-se t'o formato MO ni usar-se.O fichero s'ha alzau de traza segura.O texto viello d'orichen (antis que no cambiase mientras bella actualización) con que corresponde a traducción imprecisa d'agora.A traducción ye presta pa usar-se, pero %d dentrada ye encara sin traducir.A traducción ye presta pa usar-se, pero %d dentradas son encara sin traducir.A traducción ye presta pa usar-se.S'ha marcau as traduccions como que les fa falta treballo porque pueden estar imprecisas. Has a revisar-las pa correchir-las.No bi ha garra traducción. Ixo ye insolito.S'ha produciu un problema en dar formato correctament a lo fichero (pero ye estau bien alzau).No s'ha puesto cargar l'archivo. Puet estar que s'haigan perdiu u corrumpiu alguns datos per esta accion.Istas valors afectan o formato interno d'os fichers PO. Achusta-los si tiens requisitos especificos; por eixemplo, a causa d'o control de versión.Iste comando se fa servir ta ubrir l'extractor. %u expande o nombre d'o fichero de salida, %K amuestra as parolas clau, %F enlista os fichers de dentrada y %C define o conchunto de caracters (vei abaixo).Ista cadena s'ha trobau en as traduccions memorizadas d'o Poedit.S'adhibirá a la linia de comandos nomás si se proporciona o codigo d'o chuego de caracters fuent. %c contién a valura d'o chuego de caracters.S'adhibirá a la linia de comandos una vegada por cada fichero de dentrada. %f contién o nombre de fichero.S'adhibirá a la linia de comandos una vegada por cada parola clau. %k contién a parola clau.TotalTransformacionsTraduciu: %d de %d (%d %%)TraducciónIdioma d'a traducciónTraduccions memorizadasA la traducción le fa falta &treballoPropiedatz de traducciónA la traducción le fa falta &treballoPropiedatz de traducciónTraducción — %sDosUTF-8 (recomendau)DesferS'ha produciu una error no maniada: %sUnix (recomendau)Sin traducirEsviellar-lo totEsviellar totz os catalogos d'o prochectoEsviellar-lo dende un fichero POTResumen de l'actualizaciónActualizacionsL'actualización ha fallauActualizando traduccionsSe ye esviellando a información de l'usuario…Se ye puyando as traduccions…Emplegar una expresión personalizadaFer servir una fuent personalizada t'as listas:Fer servir una fuent personalizada pa os quadros de texto:Fer servir os regles predeterminaus pa iste idiomaFer servir istas parolas clau (nombres de funcions) pa reconoixer textos traducibles en fichers fuent, amás d'as parolas clau por defecto:Fer servir a memoria de traducciónValidarResultaus d'a validaciónVersión %sSe ye asperando l'autenticación…مرحبا بك ÙÙŠ PoeditEn esviellar-lo dende as fuentsNomás as parolas completasFinestraWindowsEmbolicau arredolAchustar-lo en:Fichers de traducción XLIFFSíPuetz tamién extrayer cadenas traduciblesdreitament dende o codigo fuent:Tu puetz borrar mas d'un fichero en a finestr ad'o Poedit.Cal reenchegar o Poedit ta que os cambeos tiengan efecto.O tuyo nombreLos cambios tuyos se perderán si no los alzas.O tuyo nombre y l'adreza de correu electronico no s'emplegan que ta establir o capitero de zaguer traductor d'os fichers GNU gettext.ZeroEnamplarLe fa falta treballoNo borrar los fichers temporals (pa depurar)p. eix. nplurals=2; plural=(n > 1);Coincidencia fusca adintro d'o ficheroIr ta l'elemento en o numero de linia daumaniar un poedit:// URICtrl+AbaixoIntroMayus+AltoaltctrlmayusArredol de %sAmagar %sAmagar atrosPreferencias...Salir de %sServiciosAmostrar-lo totpretraducir dende a MTidioma desconoixiu“%s†no ye un fichero POT valiu.poedit-3.6.3/locales/ckb.po0000644000175100001660000024044115011674363011225 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Sorani (Kurdish)\n" "Language: ckb_IR\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: ckb\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "شاردنەوەی ئەم پەیامی ئاگادارکردنەوەیە" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Don’t Show Again" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "دووبارە پیشانی مەدەرەوە" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "کورتە نوێ بکەرەوە" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "داخستن" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Ù¾Û•Ú•Ú¯Û•" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "زنجیرەنووسەی نوێ" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "کۆکردنەوەی پەڕگەکانی سەرچاوە…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "نەتوانرا ÙØ§ÛŒÙ„Û•Ú©Û• Ù„Û•Ú¯Û•Úµ وەرگێڕانە دەرهێندراوەکان بخوێندرێنەوە." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "کۆدی سەرچاوە کراوە بوونی نیە." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "ڕێگەپێدان ڕەتکرایەوە." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "نوێکردنەوەی وەرگێڕانەکان" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "لکاندنی جیاوازییەکان…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" msgstr[1] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "ناونیشانی ناتەواو: '%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "بوخچەی وەڕگێرانی PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "تێمپلەتى وەرگێڕانی POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Ù¾Û•Ú•Ú¯Û•ÛŒ وەرگێڕانی XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "هەموو ÙØ§ÛŒÙ„ەکانی وەرگێڕان" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "" #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "" #: src/catalog_po.cpp:134 #, 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] "" #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "" #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "کێشەیەک ڕوویدا Ù„Û• کاتی بەمەرجکردنی Ù¾Û•Ú•Ú¯Û•Ú©Û•(بەڵام هەرچۆنێک بێت پاشەکەوتکرا)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%s' پەڕگەیەکی دروستی POT نییە." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "" #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Ù¾Ú•Û†Ú˜Û•:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "زمان:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "دابەزاندنی دوایین وەرگێرانەکان…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "هاوکاتگەری" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Ù‡Û•ÚµÛ• ڕوویدا Ù„Û• هاوکاتکردن" #: src/commentdlg.cpp:48 msgid "Add" msgstr "زیادکردن" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "دەسەڵاتی Ù¾ÛŽÙ‰ نەدراوە، تكايە دووبارە بڕۆ ژوورەوە." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Ù„Û• پڕۆژەیەدا دابەزاندنی وەڕگێرانەکان لەکار خراوە." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "چونەژوورەوە" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "چونەژوورەوە" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "دەرچوون" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "دەرچوون" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Crowdin زانیاری زیاتر دەربارەی" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "چاوەڕوانی ڕێگەپێدانبە…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "نوێکردنەوەی زانیارییەکانی بەکارهێنەر…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Crowdin چونەژوورەوە بۆ" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "هەماهەنگ کردن Ù„Û•Ú¯Û•Úµ Crowdin سەرکەوتوو نەبوو." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Ù‡Û•ÚµÛ•ÛŒ Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "بەرزکردنەوەی وەرگێران…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&لەبەرگرتنەوە" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "زیاتر بزانە" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&یارمەتی" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "ناتواندرێت راستەوخۆ پەڕەگەکانی MO Ù„Û• ناو Poedit دەستکاری بکرێت." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Ù‡Û•ÚµÛ• هەیە Ù„Û• کردنەوەی ÙØ§ÛŒÙ„دا" #: src/edapp.cpp:735 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 بە باشی نوێ دەبێتەوە." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "Ù¾Û•Ú•Ú¯Û• کاتییەکان مەسڕەوە(بۆ ڕاستکردنەوە)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "هەڵسوکەوت بکە Ù„Û•Ú¯Û•Úµ poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "" #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "جۆری ÙØ§ÛŒÙ„ نادروستە" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit دەستکاریکەرێکی سادە Ùˆ ئاسان Ù„Û• بەکارهێنانە بۆ وەرگێڕانەکان." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "" #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Ù¾Û•Ú•Ú¯Û•ÛŒ \"%s\" Ù¾Û•Ú•Ú¯Û•ÛŒ وەرگیڕان نیە." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "" #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "هەڵەگری زمانەوەانی ناچالاکە چونکە Ùەرهەنگ نامە بۆ %s دانەمەزراوە." #: src/edframe.cpp:871 msgid "Install" msgstr "دابەزاندن" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ùەرامۆشکردن" #: src/edframe.cpp:968 msgid "Reload File" msgstr "بارکردنەوەی Ù¾Û•Ú•Ú¯Û•" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "پاشەکەوت کردنی گۆڕانکارییەکان" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "گۆڕانکارییەکانت دەÙەوتێت ئەگەر پاشەکەوتی نەکەیت." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "پاشەکەوت کردن" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "پاشەکەوتی Ù…Û•Ú©Û•" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "هەڵوەشاندنەوە" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "پاشەکەوت کردن وەکو…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "ÙØ§ÛŒÙ„Û• وەرگێڕدراوە بەراوردکراوەکان" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Ù¾Û•Ú•Ú¯Û•ÛŒ HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "نوێکردنەوە سەرکەوتو نەبوو" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "" msgstr[1] "" #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "" #: src/edframe.cpp:1842 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 "" #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "" #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "" #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "" #: src/edframe.cpp:1894 #, 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] "" msgstr[1] "" #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "وەرگێڕانەکە ئامادەیە بۆ بەکارهێنان." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "زمانی وەرگیڕان دیارینەکراوە." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "ڕێکخستنی زمان" #: src/edframe.cpp:2317 msgid "Set language" msgstr "ڕێکخستنی زمان" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "" #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "زمان چاک بکە" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "زمان چاک بکە" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "" #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Ù‡Û•ÚµÛ•ÛŒ ڕستەکار Ù„Û• ناوونیشانی ÙÛ†Ú•Ù…ÛŒ Ú©Û† (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "چاککردنەوەی ناوونیشان" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "چاو پیاخشاندنەوە" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "وەرگێڕدراو: %d Ù„Û• %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "ماوە: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "" msgstr[1] "" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "" msgstr[1] "" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr "" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (گۆڕدراو)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "هێشتنەوە" #: src/edframe.cpp:2856 msgid "Remove" msgstr "" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "پاکژکردنەوەی وەرگێڕانە سڕدراوەکان" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "دەتەوێت هەموو ئەو وەرگێڕانە لاببەیت Ú©Û• چیتر بەکارنایەن؟" #: src/edframe.cpp:2879 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 "" "ئەگەر بەردەوام بیت Ù„Û•Ú¯Û•Úµ بەرکەنارخستن،هەموو ئەو وەرگێڕدراوانەی نیشانەکراون " "ÙˆÛ•Ú©Ùˆ سڕدراوە بە یەکجاریی لادەبرێن.ئەو کات دەبێت دووبارە وەریان بگێڕیتەوە " "ئەگەر زیادکران Ù„Û• داهاتوودا." #: src/edframe.cpp:2883 msgid "Purge" msgstr "پاکژکردنەوە" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "لەبەرگرتنەوەی Ù„Û• دەقی ژێدەرەکەوە" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "لەبەرگرتنەوەی Ù„Û• دەقی ژێدەرەکەوە" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "سڕینەوەی وەرگێڕان" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "سڕینەوەی وەرگێڕان" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "دەستکاریکردنی لێدوان" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "دەستکاریکردنی لێدوان" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "شاردنەوەی لاتەنیشت" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "پیشاندانی لاتەنیشت" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "شارنەوەی شریتی دۆخ" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "پیشاندانی شریتی دۆخ" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "دەقی ژێدەر" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "تاک" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Ú©Û†" #: src/editing_area.cpp:477 msgid "Translation" msgstr "وەرگێڕانەکان" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Ù¾ÛŽØ´-وەرگێڕان" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "پێویستی بە دەستکارییە" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "پێویستی بە دەستکارییە" #: src/editing_area.cpp:566 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 ÛŒ نوێ دروست بكە لەسەر بنەماى تێمپلەتەكە." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "دروستکردنی وەرگێڕانی نوێ" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "" #: src/editing_area.cpp:768 msgid "Everything" msgstr "هەموو شتێک" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "ÙÛ†Ú•Ù… %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Ø³ÙØ±" #: src/editing_area.cpp:788 msgid "One" msgstr "یەک" #: src/editing_area.cpp:790 msgid "Two" msgstr "دوو" #: src/editing_area.cpp:804 msgid "Other" msgstr "جۆری تر" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "وەرگێڕان — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "سەرچاوەی دەق — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "زمانی نەزانراو" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "" #: src/errors.cpp:93 msgid "Unknown error" msgstr "" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "لکاندنی کەتەلۆگەکان سەرکەوتوو نەبوو." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "کردنەوە Ù„Û• دەستکاریکەردا" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "کردنەوە Ù„Û• دەستکاریکەردا" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "" msgstr[1] "" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "دۆزینەوە" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "جێگۆڕین" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "هەڵبژاردنەکان" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "تەنیا گشت وشەکان" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "دۆزینەوە Ù„Û• وەرگێڕاندا" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "دۆزینەوە Ù„Û• لێدوانەکان" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "" #: src/findframe.cpp:150 msgid "&Replace" msgstr "" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "" #: src/findframe.cpp:152 msgid "&Next >" msgstr "" #: src/findframe.cpp:235 msgid "String to find" msgstr "" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "" #: src/gexecute.cpp:171 msgid "error: " msgstr "" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "زمانی وەرگێڕان" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "زمانی وەرگێڕ:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - سازکاریی کەتەلۆگەکان" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "دروستکردنی پرۆژەیەکی نوێی وەرگێڕان" #: src/manager.cpp:145 msgid "Delete the project" msgstr "سڕینەوەی پرۆژەکە" #: src/manager.cpp:146 msgid "Edit the project" msgstr "دەستکاریکردنی پرۆژەکە" #: src/manager.cpp:176 msgid "Update all" msgstr "نوێکردنەوەی هەموو" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "نوێکردنەوەی هەموو کەتەلۆگەکان Ù„Û• پرۆژەکە" #: src/manager.cpp:378 msgid "Total" msgstr "هەموو" #: src/manager.cpp:379 msgid "Untrans" msgstr "" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "پێویستی بە دەستکارییە" #: src/manager.cpp:381 msgid "Errors" msgstr "" #: src/manager.cpp:382 msgid "Last modified" msgstr "دوایین گۆڕانکاریی" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "پێڕست دەستنیشان بکە" #: src/manager.cpp:433 msgid "Directories:" msgstr "پێڕستەکان:" #: src/manager.cpp:503 msgid "" msgstr "<ناونەنراو>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "" #: src/manager.cpp:540 msgid "Delete project" msgstr "" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" #: src/manager.cpp:571 msgid "Confirmation" msgstr "دڵنیاییپێدان" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "پشکنین بۆ نوێکردنەوە…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&دەستکاری" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "پووچکردنەوە" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "پێشتر" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "سڕینەوە" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "" #: src/menus.cpp:219 msgid "Substitutions" msgstr "" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "" #: src/menus.cpp:226 msgid "Smart Links" msgstr "" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "" #: src/menus.cpp:230 msgid "Transformations" msgstr "" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "" #: src/menus.cpp:234 msgid "Capitalize" msgstr "" #: src/menus.cpp:237 msgid "Speech" msgstr "دەنگ" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "قسە بکە" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "راوەستاندنی قشەکردن" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&بینین" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "پیشاندانی شریتی ئامرازەکان" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "ڕێکخستنی شریتی ئامرازەکان…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Ù¾Ú• بە شاشە" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "پەنجەرە" #: src/menus.cpp:263 msgid "Minimize" msgstr "بچوککردنەوە" #: src/menus.cpp:264 msgid "Zoom" msgstr "نزیکخستنەوە" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Poedit بەخێربێیت بۆ" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "گشتی بۆ Ù¾ÛŽØ´Û•ÙˆÛ• بهێنە" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "زانیاری دەربارەی وەرگێڕ" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "ناو:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "ناوی تۆ" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "پۆستی ئەلکترۆنی:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "ناوەکەت Ùˆ پۆستی ئەلکترۆنییەکەت تەنها بۆ ئەوە بەکاردێت Ú©Û• کۆتا-وەرگێڕ " "دیاریدەکات Ù„Û• Ù¾Û•Ú•Ú¯Û•ÛŒ وەرگێڕان." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "دەستکاریکردن" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "هەمیشە سەرنج بگۆڕە بۆ خانەی تێئاخنینی دەق" #: src/prefsdlg.cpp:211 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 "" "هەرگیز Ù…Û•Ù‡ÛŽÚµÛ• لیستێک Ù„Û• زنجیرەنووسەکان سەرنج ببەن.ئەگەر چالاککرا،پێویستە " "Ctrl- Ùˆ ئاراستەکان بەکاربهێنیت بۆ ڕێنیشاندەرەکانی تەختەکلیل بەڵام دەشتوانیت " "بەخێرایی دەق بنووسیت بە بێ ئەوەی کرتە لەسەر تاب بکەیت بۆ گۆڕینی سەرنج." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "ڕووکار" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "بەکارهێنانی Ùۆنتی تایبەتی:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "گۆڕینی زمان" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(پێویستی بە ویندۆزی Ù¨ یان نوێترە)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "گشتی" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "بەڕێوەبردن..." #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "ڕێکخستنەوە" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" msgstr[1] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "هەناردن ÙˆÛ•Ú©Ùˆ..." #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "هەناردەکردنی وەرگێڕانەکان..." #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Ø³ÙØ±Ú©Ø±Ø¯Ù†Û•ÙˆÛ•ÛŒ بیرگەی وەرگێڕان" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "ئایا دڵنیایت Ù„Û• Ø³ÙØ±Ú©Ø±Ø¯Ù†Û•ÙˆÛ•ÛŒ بیرگەی وەرگێڕان؟" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "بیرگەی وەرگێڕان" #: src/prefsdlg.cpp:730 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 "" #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "سڕینەوەی دەرهێنەر" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "ئایا دڵنیایت Ù„Û• سڕینەوەی دەرهێنەری “%s†extractorØŸ" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "دەهێنەرەکان" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "هەژمار" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "پشکنین بۆ نوێکردنەوە بەخۆکاری" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "هەروەها وەشانی بیتا" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "نوێکردنەوە" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (پێشنیارکراو)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "پەرەسەندوو" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "" msgstr[1] "" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "" msgstr[1] "" #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "" #: src/pretranslate.cpp:218 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 "" #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Ù¾ÛŽØ´-وەرگێڕان" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" msgstr[1] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "هەڵوەشاندنەوە…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "زیادکردنی Ùۆڵدەر…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "زیادکردنی Ùۆڵدەر…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "زیادکردنی پەڕگە…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "زیادکردنی پەڕگە…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "ڕێچکەکان" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (پێشنیارکراو)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "" #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "لێدوان:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "نوێکردنەوە" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&سڕینەوە" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "سڕینەوەی لێدوان" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "دەستکاریکردنی پرۆژە" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "ناوی پرۆژە:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "گەڕان" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "زیادکردنی پێڕست بۆ لیستەکە" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "باشە" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Ù¾Û•Ú•Ú¯Û•" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&نوێ…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "نوێکردنەوە Ù„Û• Ù¾Û•Ú•Ú¯Û•ÛŒ &POT/PO ـەوە…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "نوێکردنەوە Ù„Û• Ù¾Û•Ú•Ú¯Û•ÛŒ &POT/PO ـەوە…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&کردنەوە…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "کردنەوەی دوایین" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "کردنەوەی دوایین" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "سازکاریی &کەتەلۆگەکان" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "سازکاریی &کەتەلۆگەکان" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&داخستن" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&پاشەکەوت کردن" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&سازکارییەکان" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "چوو&نەدەرەوە" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "وازهێنان" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "دەستکاریکردنی &لێدوان" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "دەستکاریکردنی &لێدوان" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "دۆزینەوەی دواتر" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "دۆزینەوەی پێشتر" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "دۆزینەوەی دواتر" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "دۆزینەوەی پێشتر" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "ڕێکخستن بەپێی &ڕیزی Ù¾Û•Ú•Ú¯Û•" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "ڕێکخستن بەپێی &ڕیزی Ù¾Û•Ú•Ú¯Û•" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "ڕێکخستن بەپێی &ژێدەر" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "ڕێکخستن بەپێی &ژێدەر" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "ڕێکخستن بەپێی &وەرگێڕان" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "ڕێکخستن بەپێی &وەرگێڕان" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&سەرەتا وەرنەگێڕدراوە تێئاخنراوەکان" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&سەرەتا وەرنەگێڕدراوە تێئاخنراوەکان" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "پیشاندانی لاتەنیشت" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "پیشاندانی شریتی دۆخ" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Crowdin هاوکاتکردن Ù„Û•Ú¯Û•Úµ " #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&پاکژکردنەوەی وەرگێڕانە سڕاوەکان" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&پاکژکردنەوەی وەرگێڕانە سڕاوەکان" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&بڕۆ" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&جێبەجێکراو Ùˆ بچۆ دانەی دواتر" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&جێبەجێکراو Ùˆ بچۆ دانەی دواتر" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&وەرگێڕانی پێشتر" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&وەرگێڕانی پێشتر" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&وەرگێڕانی دواتر" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&وەرگێڕانی دواتر" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "تەواو&نەکراوی پێشوو" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "تەواو&نەکراوی پێشوو" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "تەواو&نەکراوی دواتر" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "تەواو&نەکراوی دواتر" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&یارمەتی سەرهێڵ" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&یارمەتی سەرهێڵ" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Poedit دەربارەی" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&دەربارە" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "لیستێک Ù„Û• extensions جیاکرانەتەوە بە خاڵبۆر (e.g. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "دانەیەک Ù„Û• لیستەی وشەکلیلەکان:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "ئەمە هاوپێچ دەکرێت بۆ دێڕی Ùەرمی یەکجار\n" "بۆ هەر کلیلەوشەیەک. %k ÙØ±Ø§ÙˆØ§Ù†ÛŒ دەکات بۆ کلیلەوشەکە." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "دانەیەک Ù„Û• لیستەی تێئاخنینی پەڕگەکان:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "ئەمە هاوپێچ دەکرێت بۆ دێڕی Ùەرمی یەکجار\n" "بۆ هەر پەڕگەیەکی تێچوو. %f ÙØ±Ø§ÙˆØ§Ù†ÛŒ دەکات بۆ ناوی Ù¾Û•Ú•Ú¯Û•." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "هێڵکاری کۆدی ژێدەر:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "ئەمە هاوپێچ دەکرێت بۆ دێڕی Ùەرمان\n" "تەنیا ئەگەر کۆدی هێڵکاریی ژێدەر درابوو. %c ÙØ±Ø§Ø§ÙˆØ§Ù†ÛŒ دەکات بۆ نرخی هێڵکاریی." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "ناو Ùˆ وەشانی پرۆژە:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Koma tîpan (Charset):" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "ژێدەرەکانی ڕێچکەکان" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "دەرهێنانی دەق Ù„Û• پەڕگەکانی ژێدەرەوە Ù„Û• پێڕستەکانی دادێ:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Ú•ÛŽÚ†Ú©Û•ÛŒ بنچینە:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "ژێدەرەکانی کلیلەوشە" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "ئەم کلیلەوشانە بەکاربهێنە(ناوی نەخشەکان) بۆ ناسینەوەی ئەو زنجیرەنووسانەی " "دەتوانرێت وەربگێڕدرێت\n" "Ù„Û• پەڕگەکانی ژێدەرەکە:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "لاتەنیشت" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "پیشاندان Ùˆ شارنەوەی لاتەنیشت" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "" #: src/sidebar.cpp:196 msgid "Comment" msgstr "" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "نووسینی لێدوان" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "نووسینی لێدوان" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "" #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "ناتوانرێت پرۆگرام جێبەجێ بکرێت: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "" #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(زمانی بنەڕەتی بەکاربهێنە)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "هەڵبژاردنەکانی زمان" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "زمانی پەسەندکراوت دەستنیشان بکە" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "" "پێویستە دووبارە Poedit دەستپێبکەیتەوە بۆ ئەوەی گۆڕانکارییەکان شوێنی خۆیان " "بگرن." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "ناتوانرێت پێڕستی کاتی دروست بکرێت." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "" #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "" #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "وەشان %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "دەربارەی %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "دەربارەی %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "ئەوانی تر بشارەوە" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "هەمووی پیشان بدە" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "هەڵبژاردەکان..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "هەڵبژاردەکان..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "هەڵبژاردەکان..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "بڕۆدواوە" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "پاککردنەوە" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "لەبەرگرتنەوە" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "بڕ&ین" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "بڕین" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "دەستکاریکردن" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "یارمەتی" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&نوێ" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "نوێ" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "نەخێر" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "کردنەوە..." #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&کردنەوە..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "کردنەوە…" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&دانان" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "دانان" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "هەڵبژاردەکان" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&دواتر" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "نوێکردنەوە" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "پاشەکەوتکردن ÙˆÛ•Ú©" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "دیاریکردنی &هەمووی" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "دیاریکردنی هەمووی" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&پێشتر" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "بەڵێ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "دوگمەی سەرەوە" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "دوگمەی خوارەوە" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Ú†Û•Ù¾" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "ڕاست" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "" poedit-3.6.3/locales/af.mo0000644000175100001660000016104515011674362011052 Þ•±¤—,+ˆ9 ‰9 •9& 9Ç9<Û9:&+:&R:Jy:gÄ: ,;6; E;;O;‹; ’; ;§;­;µ;¼;Ã;É;Ñ;à;ï;õ;û;<<,<0<B<T<Z<_<g<o<<“<—< ›< ¨<µ<¾<Ç< Î<Û<ë<==&=B=^=d=j=s=y=‚=™= °= ¾= Ì=Ù=ß=û=>0>I>`>w>}>‚>™>©> Ç> Ó>Ý>æ>î>÷> û> ?? #?/? ??K? e?r? ???±?Ì?Õ?õ?@2@ H@ U@1a@'“@»@Î@ë@ AA7A6NA…A)¥AÏA ÔA]ßA=B<PBDB$ÒB÷B þB€ CŒC “C"¡CÄC+ßC) D 5D@DRDdDuDˆD‘D¤DÀDÜD#ñDE*E9E ?EJE \EgEyEE…E–E%§EÍE èE FFF2F CFQF/lF œFk©FGG-GCGVGlG-‹G1¹GëG HH)&HPH pHª~H)I.IAITIiImI„I‹IªI»IÚIéIüI;J KJ'XJ^€JLßJ?,K lK zK‡K*šKÅK"ØK5ûK1LLLgLmL€L …L “L ¡L ®L »LÈLÙLáLéLðLfMiMƒMuMN&N"8N[NcN jNuN„N •N¢N´NÅN0×NO"O#7O<[O`˜OùO P*P0?P!pP'’PºP¿PÕP(ôPTQrQ wQ QQ£Q´QÉQ ÞQ èQ öQ RRR.RHRPR aRmR uR€R …R’R¢RÁRÛR©ÞR‡ˆSzT‹T ’TžT±TÍTàTüT$U‚ˆQ‚Ú‚Þ‚ò‚ ÷‚ƒ+ƒ BƒPƒXƒ _ƒ"jƒ$ƒ²ƒ˃äƒõƒ„„.„=„E„U„o„…„$¢„DŽ焅…-…#J…Vn…Å…Ü…å… ø…† !†+†=†X†i†p†.x† §†³†¼†Ô†H؆5!‡mW‡7Ň ý‡3ˆa;ˆˆ¢ˆ§ˆ.Ĉ 󈉉8‰X‰o‰‰”‰¦‰¹‰ˉÞ‰ò‰ŠŠ%Š8ŠQŠiЅФмŠÕŠîŠ‹‹ .‹8‹!H‹ªj‹  !!-O@l­.¾.íKŽlhŽ ÕŽ àŽ íŽ4øŽ- 2>G NZ _iry¡¨¯¸Ñêð $*0 FRfz … ‘¦¯ µ ÀÎàò‘-‘ M‘W‘`‘i‘ q‘|‘‘‘ ¦‘ ´‘ ‘֑͑ö‘’/’H’]’r’y’}’“’¨’ Ä’ Î’Ù’à’ é’ó’ü’ “ “3“C“Y“j“„“—“ª“º“Гê“ ”#” 3”#T”x”‹” ›”6¨”(ß”•!•?•^•g•2o•+¢•Ε%ì•– –P"–s–D‡–GÌ– —5—;—ˆM— Ö—à—ó—˜03˜+d˜˜¦˜»˜Иä˜ ü˜ ™™?™W™q™‘™§™¸™ ¼™ È™ Ö™ â™ð™ù™þ™ š!š>š"Zš }š ˆš”š²šÅšÕš,ñš ›i*›”›œ›º›Ñ›ï›œ*$œ4Oœ„œ ¡œ«œ'¿œçœ ÿœ¡ ®´Ðìžžž%ž=žQž ižvžŽž6ŸžÖžÝžlúžAgŸ>©ŸèŸûŸ  ," O "d 9‡ Á Ý ù ¡¡¡0¡B¡S¡ d¡q¡‚¡‹¡”¡›¡h¬¡¢2¢xO¢È¢ã¢$ý¢"£)£/£5£G£[£k£€£”£3«£ߣ÷£%¤96¤hp¤Ù¤î¤.ý¤6,¥&c¥$Š¥¯¥µ¥Ó¥,ï¥Z¦w¦ |¦ Ц–¦©¦¼¦Ϧ ⦠ð¦ ü¦ §§)§:§O§W§ k§w§ €§Œ§‘§¢§&¶§ݧû§¥þ§•¤¨‰:©Ä©Í©é©þ©ª,ªEª(dªª©ª°ª&Ǫ !«,« <«H«Y«_«0q«+¢«Ϋ æ« ð«ú« ¬(¬!7¬ Y¬c¬t¬ Ь=«¬ é¬<ö¬ 3­?­3Ï­®®/&®V®n® €®‹® §®-´®â®è®þ® ¯ ¯*¯Ó?¯°°4° Q°^°u°Œ°°,¥°^Ò°1±'F±0n±Ÿ±'¶±!Þ±²²²–²´²Ó² é²÷²³'³ =³H³X³ h³v³~³†³³“³§³»³̳à³n´s´ˆ´LŽ´Û´-ð´µh9µH¢µëµôµM¶V¶f¶n¶H‹¶üÔ¶ÚÑ·3¬¸+ภ¹¹ .¹6<¹$s¹˜¹…¯¹z5ºg°º » "» /»<»'W»»”»©»¹»Í»á» ú»¼¼¼)¼1¼N¼;W¼“¼£¼«¼ ³¼ Á¼ϼÞ¼%ç¼% ½3½;½J½Y½ l½$w½œ½¤½tº½/¾>¾F¾ M¾ [¾i¾}¾ ‘¾ ›¾¨¾ ¼¾ ɾ ×¾ ã¾î¾ ¿¿ ,¿M¿d¿ ¿ Ž¿ ˜¿¤¿ ³¿À¿Ü¿ì¿ü¿ ÀÀ-À >ÀLÀ iÀvÀ†À–À¨À °ÀºÀ ÃÀÍÀÝÀ÷À Á&Á /Á9Á KÁ VÁbÁwÁ–Á¬ÁÇÁæÁüÁÂy-§ÂÀÂØÂáÂñÂà Ãà /Ã9ÃO@Ãà §Ã ³ÃÀÃÕÃçÃÄ+ÄGÄ;YÄ •Ä ¡Ä¬Ä><Å‹{Å ÆÆ'/ÆWÆgÆ'yÆ,¡ÆÎÆ ÑÆ;ÜÆ#Ç<ÇÑKÇÈ[7ÈD“ÈéØÈµÂÉ5xÊ2®ÊQáÊe3Ë^™ËøËÌ:3ÌqnÌjàÌ,KÍGxÍ?ÀÍHÎ7IÎ/Ξ±Î$PÏ'uÏ/Ï%ÍÏ.óÏ>"ÐcaÐ'ÅÐVíÐ=DÑi‚Ñ‹ìÑBxÒn»Ò_*ÓpŠÓÆûÓ4ÂÔu÷ÔcmÕfÑÕ8Ö ?ÖJÖb×u× ×š× ­×»×Ò×0äר1ØHØZØlØiîØXÙiÙ÷ÙüÙÚ*ÚAÚRÚjÚ yÚƒÚ ‹Ú&™Ú+ÀÚìÚ Û&Û:ÛMÛaÛyÛ ‹Û–Û«ÛÊÛ#âÛ'Ü .ÜOÜjÜŠÜ!§Ü&ÉÜ[ðÜLÝbÝkÝ €ÝŒÝ ©Ý·ÝÈÝçÝùÝÞ! Þ+Þ 1Þ<ÞPÞBSÞ:–ÞrÑÞ>D߃ß8ŠßoÃß3à7à Ià4Sàˆà¨à"¯à#Òàöà ááááá%á*á2á5á9á@áGá NáYá há uáá ‰á”á«áºá Ñáßá+ùá—7û¡=¸f 1yÍ”}BXr…!~L C¡„“.<Á*iñŒ·sFál ‘Bd)“S¥æqNJ9“•ÝbpW{ \}XX[Ü£u2)£€;»Zª°0¤‹×ª8®¬ƒ‰ÓwšH.|’%ü"žYé?7à!ÏHh¤' _Eµ÷4ˆé3Ä®¹Aøg÷)ɉøð,ŒQ- ’}‘R­n0]|> ˜ý+жY.û<:Þý™45pÖbâM+wލÏÀ"Ë‹HÒØ”‡jUðíÔrmžUk¢:&†‚b8¼ T›ÑQ•DÚ/ìtÕzî 0ÑVÖ~ÜM„ y¢›xáÌv±±öw1qcìƱ…sÂå?­1<ùãE7AÛ”þ½@Ê]#›j]ëÀ'`c@a_e‹#,È 2¨n93Võ ª6ÅÿïËÓ;€²=€=è‚ä½*¥I¦³˜lß§úŠÔuöghŸqþŸš2Ç`ƒL %KNúGiDlçy¾‘^f-Ÿ¦9C¯î "–®`(ºf*«'¼Úâ†ØäkœV£Pàõ(;ͤd_Ƨ(ù¿Î¯RÇ&6[hÙgê‡ÙÞ’°Q©$žºLiOÛ3—óóE¦Éa†Gt¶{%¨ƒmΖ —B–‡/~OÌ^&³/ŒæK¬Gd •ЬÁ«¢CÝŽTçxv>ãNex×Aapñ\ÃoFMòrKS¯Z|ôW¿5™²Ð È5S·{8P‰Fsô!ß +J‚eÊ´?Oÿµ©È$I´»,Õ6òvzZum^P­œ°oˆ#¸-@ľœ¡¹˜ŽIëÅå§  [4W\oRjtín…DÒÂ꫊Y>U©Tc™zï$š:J„k¥èü (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Afrikaans Language: af_ZA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: af X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (verander) (onbewaar)%d kodevoorkoms%d kodevoorkomste%d inskrywing%d inskrywings%d inskrywing is voorafvertaal.%d inskrywings is voorafvertaal.%d fout%d foute%d fout het voorgekom.%d foute het voorgekom.%d fout het voorgekom:%d foute het voorgekom:%d probleem met die vertaling gevind.%d probleme met die vertaling gevind.%i reël van lêer “%s†is nie korrek gelaai nie.%i reëls van lêer “%s†is nie korrek gelaai nie.%s-Formaat%s Voorkeure%s-formaat%s vertaling is ingevoer.%s vertalings is ingevoer.&Oor&Oor Poedit&Pas Toe&Terug&Kanselleer&WisMaak &toe&Kopieer&Skrap&Gereed en Volgende&Gereed en volgendeW&ysig&Lêer&Soek…&GNU-gettext-handleiding&GNU-gettext-handleiding&Gaan&Groepeer Volgens Konteks&Groepeer volgens konteks&Hulp&NuutOpen Onlangse&Nuut…&Volgende >&Volgende Vertaling&Volgende vertaling&Nee&Goed&Aanlynhulp&Aanlynhulp&Open…&Open…&Plak&Voorkeure&Voorkeure…&Vorige Vertaling&Vorige vertaling&Eienskappe…&Purgeer Geskrapte Vertalings&Verwyder vertalings wat vir uitvee gemerk is&Sluit Af&Herdoen&Vervang&Bewaar&Bewaar as&Toon kodevoorkomste&Toon kodevoorkomste&Beginvenster&Beginvenster&Vertaling&Ontdaan&Onvertaalde Inskrywings Eerste&Onvertaalde inskrywings eerste&Werk By vanuit Bronkode&Werk by vanuit bronkode&Valideer Vertalings&Valideer vertalings&Bekyk&Ja(Gebruik verstektaal)(nie aangeteken nie)(vereis Windows 8 of nuwer)< &VorigeOor %sRekeningRekeningeVoeg toeSkryf KommentaarVoeg Lêers Toe…Voeg Vouers Toe…Voeg projek toeVoeg Swartpiet toe…Skryf kommentaarVoeg gids tot die lys toeVoeg lêers toe…Voeg vouers toe…Voeg projek toeVoeg swartpiet toe…Aanvullende sleutelwoordeAanvullende xgettext-vlae:GevorderdGevorderde Ekstraheerinstellings…Gevorderde ekstraheerinstellingsGevorderde ekstraheerinstellings…Alle VertaallêersAlle kommentareAlle stringeGebruik ook versteksleutelwoorde vir ondersteunde taleVerander altyd fokus na teks-toevoerveld’n Fout het voorgekom.’n Item in toevoerlêerlys:’n Item in sleutelwoordelys:VoorkomsPas ToeIs u seker u wil die “%sâ€-ekstraheerder skrap?Is u seker u wil die vertaalgeheue herstel?Soek outomaties na bywerkingsMaak outomaties MO-lêer tydens stoorTerugBasispad:Betaweergawes bevat die nuutste funksies en verbeteringe maar is minder stabiel.Bring Alles na VoreGebroke PO-lêer: meervoudvorm msgstr is gebruik sonder msgid_pluralGebroke PO-lêer: enkelvoudvorm msgstr is gebruik saam met msgid_pluralGebroke markup in vertaalstring.BlaaiBlaai deur lêersOnakkurate resultate word by verstek ook ingesluit, maar gemerk vir aandag. Merk hierdie blokkie om slegs akkurate trefslae in te sluit.KanseleerKanselleer tans…Kan nie tydelike gids skep nie.Kan nie program uitvoer nie: %sKan nie vanuit onbekende taal voorafvertaal nie.Kan nie vooraf vertaal sonder bronteks nie.Maak BeginhooflettersKatalogus&bestuurderKatalogus&bestuurderKatalogusbestuurderVerander koppelvlaktaalKarakterstel:Gaan Dokument Nou NaGaan Grammatika Met Spelling NaGaan Spelling Intyds NaGaan na vir Bywerkings…Gaan die vertaling na vir fouteSoek na bywerkings…Gaan spelling naWisWis kieslysWis VertalingWis kieslysWis vertalingMaak toeWolkKodevoorkomsteKodevoorkomsteWerk aanlyn saam met ander mense.Versamel tans bronlêers…Bevel om vertalings te ekstraheer:KommentaarKommentaar:Kommentaar voorafgegaan deur:Kompileer na MO…Kompileer na…Gekompileerde VertaallêersStel bronkode-ekstrahering op in Eienskappe.BevestigingKoppel Poedit met ondersteunde wolklokaliseringsplatforms om vertalings daarop naatloos te sinchroniseer.KopieerKopieer Vanuit EnkelvoudsvormKopieer vanaf BronteksKopieer vanuit enkelvoudsvormKopieer vanaf bronteksKorrigeer Spelling OutomatiesKon nie Localazy-projekdetails aflaai nie.Horiima loowde fiilde ndee, ena gasa nde moÆ´Æ´aani.Kon nie lêer %s bewaar nie.Skep nuweSkep nuwe vertalingSkep nuwe vertaling vanaf POT-sjabloon.Skep nuwe vertaalprojekCrowdin-foutCrowdin is ’n aanlyn vertaalbestuurplatform en meewerkingsvertaalnutsmiddel. Ons gebruik self Crowdin om Poedit in vele tale te vertaal, en ons is mal daaroor.Kni&pPasgemaakte Ekstraheerders:Pasgemaakte ekstraheerders:Pas Taakbalk Aan…KnipDatabasisgrootte op skyf:SkrapSkrap Uit VertaalgeheueSkrap ekstraheerderSkrap uit vertaalgeheueSkrap projekVerwyder die kommentaarSkrap die projekSkrap van die projek sal geen vertaallêers skrap nie.Gidse:Wil u projek “%s†skrap?Wil u die lêer vanaf die skyf herlaai? U onbewaarde wysigings in Poedit sal verlore gaan indien u dit doen.Wil u alle vertalings wat identies aan die bronteks is, verwyder?Wil u alle vertalings wat nie meer gebruik word nie, verwyder?Mo&enie bewaar nieMoenie Bewaar NieMoenie Weer Toon NieMoenie presiese trefslae vir aandag merk nieMoenie weer toon nieLaai tans nuutste vertalings af…Aflaai van vertalings vir hierdie projek is gedeaktiveer.Sleep vouers of lêers hierSleep vouers of lêers hier&VerlaatS&tuur uit as HTML…WysigWysig &Kommentaar&Wysig kommentaarWysig KommentaarWysig kommentaarWysig projekWysig die projekWysigingWysig…E-pos:Gaan na VolskermInskrywings in hierdie lêer se meervoudsformtelling verskil van wat die lêer se Meervourdsvorm-kop sêInskrywings met Foute EersteInskrywings met foute eersteInskrywings met foute is in rooi gemerk in die lys. Details van die fout word vertoon wanneer u so ’n inskrywing kies.Fout tydens open van lêerFout met bewaar van lêerJuumre tuma loowgol fiilde XLIFF: %sFout: FouteAllesUitgesluite paaieStuur Uit Na TMX…Stuur Uit as…Stuur uit na HTML…Stuur uit na TMX…Stuur tans uit na HTMLUitstuur van vertaalgeheue van “%s†het misluk.Stuur vertalings uit…Ekstraheer vanuit bronneEkstraheer notas vir vertalers vanaf:Ekstraheer teks uit die bronlêers in die volgende gidse:Ekstraheer tans vertaalbare stringe van %s-lêer…Ekstraheer tans vertaalbare stringe van %s-lêers…EkstraheeropstellingEkstraheerdersKommunikasie met die Poedit-proses het misluk.Kon nie lêer met geëkstraheerde vertalings laai nie.Kon nie gettext-katalogi saamvoeg nie.Kon nie vertaalgeheue bywerk nie: %sLêerLêer kan nie geopen word nieLêer “%s†bestaan nie.Lêer “%s†is nie ’n vertaallêer nie.Lêer “%s†is leesalleen en kan nie bewaar word nie. Bewaar dit onder ’n ander naam.SoekSoek VolgendeSoek VorigeSoek en Vervang…Vind in kommentaarSoek in bronteksteSoek in vertalingsSoek volgendeSoek vorigeRepareer TaalRepareer taalRepareer die KopRepareer die kopPiillde Firo FlutterVorm %iVorm %i (ongebruik)GNU gettextAlgemeenHTML-lêersHulpVersteek SystaafVersteek StatusbalkVersteek hierdie kennisgewingsboodskapHoe werk wolksinchronisering?IDIndien u met purgering voortgaan word alle vertalings wat as “skrap†gemerk is, verwyder. U sal dit weer moet vertaal sou dit in die toekoms weer toegevoeg word.Indien u voorheen toegang tot u lêers geweier het, kan u dit in Stelselvoorkeure > Sekuriteit & Privaatheid > Privaatheid > Lêers & Vouers toelaat.Indien u voorheen toegang tot u lêers geweier het, kan u dit in Stelselinstellings > Privaatheid & Sekuriteit > Lêers & Vouers toelaat.IgnoreerIgnoreer hoof-/kleinlettersVoer In Vanaf TMX…Voer Vertaallêers In…Voer in vanaf TMX…Voer vertaallêers in…Voer tans in vanaf “%sâ€â€¦Invoer van vertaalgeheue van het misluk.Vertalings word ingevoer…In: %sSluit betaweergawes inInkonsekwente groot/kleinlettergebruikInkonsekwente witruimteInligting oor die vertalerInstalleerOngeldige lêerAanroeping:Piille Fire JSONBehouTaalnaam of -kodeTaal van die vertaling is dieselfde as brontaal.Taal vir die vertaling is nie ingestel nie.Taal van die vertaling:TaalkeuseTaalspan:Taal: Laas gewysigMeer inligting oof gettext-sleutelwoordeMeer inligting oor meervoudsvormeLeer meerLeer meer oor %sLeer meer oor CrowdinKom meer te wete oor GNU-gettextReël %d van lêer “%s†is korrup (geen geldige %s-data).Reëleindes:Lys van uitbreidings geskei deur kommapunte (bv. *.cpp;*.h):Laai EngelsLocalazy is ’n hoogs geoutomatiseerde lokaliseringsplatform wat enigeen toelaat om maklik hul produkte en inhoud in meerdere tale te vertaal.MO-lêers kan nie direk in Poedit gewysig word nie.Maak KleinlettersMaak HooflettersSkep ’n nuwe vertaling van hierdie POT-lêer.Misvormde kop: “%sâ€Bestuur rekeningeBestuur…Voeg tans verskille saam…MinimaliseerNaam van die projek waarvoor die vertaling isNaam:&Volgende Onvoltooide&Volgende onvoltooideKort WerkKort aandagNetwerkfout: %s (%d)Moet nooit die stringlys laat fokus nie. Indien dit geaktiveer is moet Ctrl-pyltjies vir sleutelbordnavigasie gebruik word maar teks kan ook onmiddellik toegevoer word sonder om Tab te druk om fokus te verander.NuweNuut Vanuit POT/PO-lêer…Nuut vanuit &POT/PO-lêer…Nuwe stringeVolgende MeervoudsvormVolgende meervoudsvormNeeGeen Trefslae GevindGeen inskrywings kon voorafvertaal word nie.Geen inligting oor hierdie string se voorkomste in die bronkode word in die lêer verskaf nie.Geen trefslae gevindGeen probleme met die vertaling gevind.Geen vertaalprojekte aanwesig in u rekening nie.Geen gebruiksinligtingNie alle meervoudsvorme is vertaal nie.Nie gemagtig nie, teken weer aan.Notas vir vertalersGoedEenAktiveer slegs indien u die gehalte van u TM vertrou. Alle trefslae vanuit die TM word by verstek vir aandag gemerk en moet hersien word voor gebruik.Vul slegs presiese trefslae inOpen wolkvertaling…Open OnlangseOpen en wysig vertaallêers.Open wolkvertalingOpen wolkvertaling…Open lêerOpen in WysigerOpen in wysigerOpen onlangseOpen…Open…OpsiesAnderV&orige OnvoltooideV&orige onvoltooidePO-vertaallêersPOT-vertaalsjablonePOT-lêers is slegs sjablone en bevat self geen vertalings nie. Skep ’n nuwe PO-lêer, gebaseer op die sjabloon, om ’n vertaling te maak.PlakPlak en Pas Styl AanPaaieDit voer ’n bywerking vanaf die bronkode op alle lêers in die projek uit.Toestemming geweier.Plekhouer “%s†word uit vertaling vermis.Korrektheid van plekhouersOpen en wysig liewer die ooreenstemmende PO-lêer. Wanneer u dit bewaar, word die MO-lêer ook bygewerk.Bewaar eers die lêer. Hierdie afdeling kan tot dan nie bewerk word nie.MeervoudMeervoudsvertalingsMeervoudsvormuitdrukking wat deur die lêer vir %s gebruik word, is ongewoon.Meervoudsvorme:Poedit Poedit - KatalogusbestuurderPoedit het ongeldige inhoud in die lêer “%s†outomaties gerepareer.Poedit kan probeer om nuwe inskrywings slegs vanaf vorige vertalings in die lêer of vanuit u gehele vertaalgeheue in te vul. Gebruik van die TM sal nie baie effektief indien dit byna leeg is nie, maar dit sal beter raak soos u meer vertalings toevoeg.Poedit kan nie die bronkode toon waar die string gebruik word nie omdat die lêer òf nie beskikbaar is in die ligging waarna verwys word nie òf dit is ’n simboliese verwysing wat nie na ’n werklike lêer wys nie.Poedit is ’n maklik-om-te-gebruik vertaalwysiger.Poedit kon nie die “%sâ€-lêer open nie.Vooraf&vertaal…VoorafvertalingVoorafvertaal%u string is voorafvertaal%u stringe is voorafvertaalVoorvertaling vanaf vertaalgeheue…Vertaal tans vooraf…Voorafvertaling vind presiese of wollerige trefslae vir onvertaalde stringe outomaties in die vertaalgeheue en vul hul vertalings in.Voorafvertaling vereis dat bronteks beskikbaar is. Dit werk nie indien slegs ID’s sonder die werklike teks gebruik word.Voorafvertaling vereis dat die brontekstaal bekend is. Poedit kon dit nie in hierdie lêer bespeur nie.VoorkeureVoorkeure…Voorkeure…Berei tans stringe voor…Behou formattering van bestaande lêersVorige MeervoudsvormVorige meervoudsvormVorige bronteksVoorheen geredigeerVoorheen geredigeerProjeknaam en -weergawe:Projeknaam:Projek:ProjekteLeestekenkontrolePurgeerPurgeer geskrapte vertalingsSluit AfTargol loowdi fiilde woorii kadi addii ndee-É—oo juumre: %sOnlangse lêersHerdoenVerfrisHerlaai lêerHerlaai lêerOorblywend: %dVerwyderVerwyder dieselfde-as-bron-vertalingsVerwyder dieselfde-as-bron-vertalingsVervangVervang &AllesVervang &allesVervangende stringVervang…Vereiste Meervoudsvorm-kop ontbreek.HerstelHerstel vertaalgeheueDeur die vertaalgeheue te herstel sal alle bewaarde vertalings permanent geskrap word. Dit kan nie ontdaan word nie.Toon in FinderHersienBewaarBewaar &As…Bewaar &as…Bewaar in elk gevalBewaar in elk gevalBewaar asBewaar as…Bewaar veranderingeBewaar lêerSkermkiekies:Kies &AllesKies AllesKies TMX-lêers om in te voerKies gids Kies vertalingslêerKies vertaalleêrs om in te voerKies vertalingsjabloonKies aseblief u voorkeurtaalStel Taal InStel taalInstellingsInstellings…Toon SystaafToon Spelling en GrammatikaToon StatusbalkToon String-&IDToon VervangingsToon NutsbalkToon WaarskuwingsToon in ExplorerToon in vouerToon of versteek die systaafToon systaafToon StatusbalkToon string-&IDToon waarskuwingsSystaafTeken AanTeken AfTeken aanTeken aan by %sTeken aan op wolkrekeningTeken aan op CrowdinTeken aan op wolkrekeningTeken afEnkelvoudSlimkopieer/-plakSlimstrepeSlimskakelsSlimaanhalingstekensSorteer volgens &LêervolgordeSorteer volgens &BronSorteer volgens &VertalingSorteer volgens &lêervolgordeSorteer volgens &bronSorteer volgens &vertalingBronkodekarakterstel:Bronkodeëkstraheerders word gebruik om vertaalbare stringe in die bronkodelêers te soek en vir vertaling te ekstraheer.Bronkode nie beskikbaar.Bronkode nie gevind nieBronteksID binndol iwdiBronteks — %sBronsleutelwoordeBronpaaieBronsleutelwoordeBronpaaieSpraakSpeltoets is gedeaktiveer omdat die woordeboek vir %s nie geïnstalleer is nie.Spelling en GrammatikaBegin PraatHou op PraatBewaarde vertalings:Stringkonteks: %sStringidentifiseerder: %sStringlengte in karaktersStringlengte in karakters: vertaling | bronString om te soekString-gebaseerde Crowdin-projekte word nie ondersteun nie.VervangingsVoorstelleVoorstelle is nie beskikbaar indien die vertaaltaal verkeer ingestel is nie. Ander funksies, soos meervoudsvorme, kan ook hierdeur geraak word.’n Oorbodige plekhouer “%s†wat nie in brontekst is nie.Ondersteun alle programmeringstale wat deur GNU-gettext-nutsmiddels herken word (PHP, C/C++, C#, Perl, Python, Java, JavaScript en andere).SinchroniseerSinchroniseer met CrowdinSinchroniseer die vertaling met CrowdinSinchroniseringSinchroniseerfoutSinchronisering met Crowdin het misluk.Sintaksfout in Meervoudsvorm-kop (“%sâ€).TMTMX-lêersKry vertaalbare stringe vanuit ’n bestaande POT-sjabloon.Spannaam en e-posadres of bronadresTeksvervangingDie vertaalgeheue bevat geen stringe soortgelyk aan die inhoud van hierdie lêer nie. Dit is slegs effektief vir halfoutomatiese vertalings nadat Poedit genoeg geleer het van lêers wat u per hand vertaal het.Die TMX-lêer is misvorm.Die veranderinge wat deur die ander toepassing gemaak is, sal verlore gaan indien u bewaar.Die lêer kan nie in die MO-formaat gekompileer en gebruik word nie.Die lêer het duplikaatitems bevat, wat ontoelaatbaar in PO-lêers is en die lêer onbruikbaar sal maak. Poedit het die fout herstel maar u moet nuwe vertalings van enige items wat vir aandag gemerk is nagaan en regstel indien nodig.Die lêer kon nie met die “%s†karakterstel gestoor word soos aangedui in die vertalingsinstellings nie. Daarom is dit met UTF-8 kodering gestoor en die opstelling is aangepas.Die lêer is verander. Wil u die veranderinge bewaar?Fiilde ndee woni ko e mbayka ko Poedit heftinaani.Die lêer is in die MO-formaat gekompileer maar sal waarskynlik nie reg werk nie.Die lêer is veilig bewaar en in die MO-formaat gekompileer maar sal waarskynlik nie korrek werk nie.Die lêer is veilig bewaar maar dit kan nie in die MO-formaat gekompileer en gebruik word nie.Die lêer is veilig bewaar.Fiilde "%s" horiima udditaade.Die lêer “%s†is deur ’n ander toepassing verander.Die ou bronteks (voor dit gedurende ’n bywerking verander is) waar die nou onakkurate vertaling mee ooreenstem.Die eenvoudigste manier om hierdie lêer met vertalings aan te vul is deur dit vanuit ’n POT by te werk:Die vertaling begin nie met ’n spasie nie.Die vertaling eindig met ’n reëlafbreking maar nie die bronteks nie.Die vertaling eindig met ’n spasie maar nie die bronteks nie.Die vertaling eindig met “%s†maar die bronteks eindig met “%sâ€.Die vertaling makeer ’n reëlafbreking aan die einde.Die vertaling makeer ’n spasie aan die einde.Die vertaling is gereed vir gebruik maar %d inskrywing is nog nie vertaal nie.Die vertaling is gereed vir gebruik maar %d inskrywings is nog nie vertaal nie.Die vertaling is gereed vir gebruik.Die vertaling moet met “%s†eindig.Die vertaling moet nie met “%s†eindig nie.Die vertaling moet as ’n sin begin.Die vertaling moet met ’n kleinletter begin.Die vertaling begin met ’n spasie maar nie die bronteks nie.Die vertalings is vir aandag gemerk omdat dit onakkuraat mag wees. U moet dit vir juistheid nagaan.Daar is geen vertalings. Dit is vreemd.Iets het skeefgeloop met netjiese formattering van die lêer (maar dit is wel bewaar).Daar was ’n fout met die oplaai van vertalings na Localazy.Daar was foute tydens die laai van die lêer. As gevolg daarvan kan sommige data ontbreek of korrup wees.Hierdie instellings beïnvloed interne formattering van PO-lêers. Pas dit aan indien u spesifieke behoeftes het, bv. weens weergawebeheer.Ndee fiilde JSON wonaa fiilde firo etee waawaa taÆ´teede e Poedit.Hierdie aksie sal enige vertalings skrap wat presies met die bronteks ooreenkom. Dit kan nie ontdaan word nie.Hierdie lêer bevat inskrywings met meervoudsvorme maar geen Meervoudsvorm-kop is opgestel nie.Hierdie lêer gebruik string-ID’s i.p.v. bronteks. Poedit kan vir u Engelse tekse van die “%sâ€-lêer laai.Dit is die bevel wat gebruik word om die ekstraheerder te lanseer. %o brei uit na die naam van die afvoerlêer, %K na sleutelwoordlys, %F na toevoerlêerlys, %C na karakterstelvlag (sien hieronder).Hierdie string is in Poedit se vertaalgeheue gevind.Dit word tot die opdragreël toegevoeg indien slegs bronkodekarakterstel gegee is. %c brei uit na karakterstelwaarde.Dit sal vir elke toevoerlêer eenmaal bygevoeg word by die bevellyn. %f brei uit na die lêernaam.Dit sal vir elke sleutelwoord eenmaal bygevoeg word by die bevellyn. %k brei uit na die sleutelwoord.TotaalOmvormingsVertaalbare inskrywings word nie handmatig tot die Gettext-stelsel toegevoeg nie maar word outomaties vanuit die bronkode geëkstraheer. Op hierdie manier bly hulle op datum en akkuraat. Vertalers gebruik tipies PO-sjabloonlêers (POT’e) wat deur die ontwikkelaar voorberei is.Vertaal wolkprojekVertaal: %d van %d (%d %%)VertalingTaal van VertalingVertaalgeheueVertaling Kort &AandagVertaaleienskappeVertaalgeheuedatabasis is gekorrupteer: %s (%d).Vertaalgeheuefout: %s (%d).Vertaling kort &aandagVertaaleienskappeVertaalvoorstelleVertalingsvoorstelle vereis dat bronteks beskikbaar is. Hulle werk nie indien slegs ID’s sonder die werklike teks gebruik word.Vertaalvoorstelle vereis dat die brontekstaal bekend is. Poedit kon dit nie in hierdie lêer bespeur nie.Vertaling — %sVertalings kon nie vanuit die bronkode bygewerk word nie omdat geen kode in die gespesifiseerde ligging in die lêereienskappe gevind is nie.TweeUTF-8 (aanbeveel)OntdaanOnhanteerde uitsondering het voorgekom: %sUnix (aanbeveel)Onbekende Crowdin-fout.Onbekende foutOnvertaalWerk byWerk alles byWerk alle katalogusse in die projek byWerk alle katalogusse in hierdie projek by?Werk by vanuit &POT-lêer…Werk by vanuit &POT-lêer…Werk By vanuit KodeWerk by vanuit POTWerk by vanuit kodeWerk by vanuit bronkodeWerk opsomming byBywerkingsBywerking het mislukWerk tans projekkatalogusse byWerk tans vertalings byWerk tans gebruikersinligting by…Oplaai van vertalings na %s het misluk.Laai tans vertalings op na %s…Laai tans vertalings op…Gebruik pasgemaakte uitdrukkingGebruik pasgemaakte lysfont:Gebruik pasgemaakte teksveldfont:Gebruik verstekreëls vir hierdie taalGebruik hierdie sleutelwoorde (funksiename) om vertaalbare stringe in bronlêers te herken:Gebruik vertaalgeheueValideerValideringsresultateWeergawe %sWag tans vir bekragtiging…Waarskuwing: Welkom by PoeditTydens bywerking vanuit bronneSlegs heel woordeVensterWindowsWil u Engels as bronteks gebruik?OmvouVou om by:XLIFF-vertaallêersJaU kan ook vertaalbare stringe direk vanaf die bronkode ekstraheer:U kan nie meer as een lêer in die Poedit-venster los nie.U het nie toestemming om bronkodelêers vanuit die gespesifiseerde ligging in die lêer se Eienskappe te lees nie.Herbegin Poedit vir hierdie verandering om in werking te tree.U NaamU veranderinge gaan verlore indien u dit nie bewaar nie.U naam en e-posadres word slegs gebruik om die “Laaste-Vertalerâ€-kop van die GNU-gettext-lêers in te stel.NulVergroot/verkleinKort Werkmoenie tydelike lêers skrap nie (vir foutopsporing)bv. nplurals=2; plural=(n > 1);fout: wollerige trefslae binne die lêergaan na item met gegewe reëlnommergebruik poedit:// URIAlt+Ctrl+AfDoenLinksRegsWissel+OpaltbeheerwisselOor %sVerberg %sVerberg AndereVoorkeure…Sluit %s afDiensteToon Allesvoorafvertaal vanaf TMonbekende taalYamre (%s) tammbitaakawaarskuwing: gebruiker@voorbeeld.co.za“%s†is nie ’n geldige POT-lêer nie.poedit-3.6.3/locales/pl.mo0000644000175100001660000017543215011674351011102 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-9O‰’š’Q©’&û’¹"“.Ü“a ”am”ºÏ”žŠ•Ï)– ù– — —y— •— ¢— ¬—¸—À— È—Ó—Ü—ä—#ë—#˜3˜;˜ A˜L˜f˜ €˜‹˜ ˜µ˜¼˜˜ ˘Ù˜ñ˜ ™™ ™ ™ .™ :™F™ M™Y™h™™š™!­™!Ï™ñ™ù™š š šš8š Rš `š nš|š„š¢š Àš áš››2›9›>›Z›k›‹› 𛦛¶›¼››È›Ø›ç› ø›œœ-œDœSœ dœrœ‰œ£œ ½œ)Êœ&ôœ)EawEˆ#Îò(ž%.žTž \žgž5…ž9»ž2õž2(Ÿ[ŸbŸ_xŸØŸAöŸI8 /‚  ² ¾ ¡Ð r¡ y¡+‡¡"³¡:Ö¡>¢P¢f¢{¢¢¤¢ ½¢È¢ à¢%£&'£/N£&~£¥£ ¹£ãÒ£é£ø£¤¤¤0¤'B¤"j¤)¤ ·¤ Á¤̤ä¤÷¤¥B&¥ i¥Žw¥¦ ¦*¦I¦f¦!…¦3§¦:Û¦§ 4§A§)[§ …§¦§Ìµ§‚¨Ѝ¦¨¨Þ¨å¨© ©*© ?© `©n© ~©JŒ©ש ï©!ù©uªY‘ª7ëª #« 0«<«<Q«Ž«%£«2É«$ü«$!¬ F¬P¬h¬o¬¬“¬¤¬µ¬Ĭ Ó¬ Þ¬ è¬ö¬u ­€­“­…¦­,®L®)`®Š®“®›®¤®¿®Ô®è®ú®¯#¯B9¯|¯™¯'²¯IÚ¯Ý$°±±'+±;S±A±.ѱ;²<²A²\²+x²f¤² ³³%³8³M³c³ƒ³›³­³ À³ γܳî³´´#´ >´J´ ^´i´o´‚´”´%³´Ù´¡Ü´¬~µ’+¶¾¶ƶß¶ñ¶·!·?·9Z· ”·µ·»·Ø·ø· ¸ !¸,¸ @¸L¸T¸]¸t¸}¸9“¸$͸ò¸¹¹,¹4¹2K¹#~¹¢¹·¹Ϲ"Eº^º;zº¶ºžÉºAh»ª»»+Ú»¼$¼ 7¼E¼ Z¼f¼†¼¼¦¼ ¿¼ ̼Ù¼äï¼Ô½Ù½ ñ½ý½ ¾ !¾B¾a¾€¾„¾;¢¾ZÞ¾9¿W¿1r¿#¤¿7È¿(À)À?ÀBÀ´HÀ*ýÀ (ÁIÁ#\Á€Á!ŸÁ ÁÁÎÁáÁôÁ  *Â5Â;Â@ÂZÂt‰œ¢Â?ÃEà ZÃNdóÃ1ÄÃ$öÊÄM¦Ä ôÄÅG ÅhÅ~Å…ÅC¢Å*æÅèÇ3úÇ&.ÈUÈpȇȎ¡È30Édɶ}É4ÊsÅÊ 9ËEË TËbË+~˪ËÊËêËÌÌ0ÌIÌYÌbÌkÌ „Ì ŽÌ¯ÌN¶ÌÍÍ Í%Í;ÍQÍ`Í3fÍ*šÍÅÍÖÍ$çÍ ÎÎ&Î8Î IÎ TÎ uÎ"΢Î$Ï6ÏEÏLÏ\ÏlÏ{Ï ŠÏ–Ï ¥Ï ³ÏP¿ÏÐÐ1Ð#BÐfÐvÐ+мÐÙÐôÐÑ Ñ Ñ+Ñ?Ñ]ÑpьўѵÑÉÑàÑ òÑÒ'Ò:ÒWÒ kÒxÒ€Ò ˆÒ•Ò¨ÒÈÒàÒ Ó Ó!ÓAÓXÓpӄӜӱÓÉÓáÓöÓÔ®#Ô"ÒÔ!õÔÕ)ÕAÕZÕvÕŠÕ¦ÕºÕSÃÕÖ,ÖAÖUÖlÖƒÖœÖ5¸ÖîÖ9× <× G×¥S×Qù׎KØ ÚØçØ.þØ-Ù>Ù,TÙ5Ù·Ù ºÙ,ÄÙ(ñÙÚø/Ú(ÛEBÛ?ˆÛ ÈÛ»ÖÜ3’Ý/ÆÝ^öÝtUÞ`ÊÞ"+ß$Nß#sß7—߇Ïß[Wà(³àLÜàI)áPsá-Äá(òákâ$‡ã)¬ã-Öã/ä24äIg䆱ä*8åWcå?»å~ûåœzæOç‚gç]êç•HèÔÞèH³éüérŒêvÿêvë|ëë­ì Ìì íìúìí&íFíPbíÖ³í>Šî)Éîóîï/ï–EïvÜïSðgð÷ðûð ñ1ñ'Eñmñ}ñ–ñ¦ñ ¹ñÄñÞñ(óñ6òSònò‰ò›ò²òÄòÜò öòó"#óFó+aó2ó!Àóâóþó%ô/?ô)oôs™ô õ .õ9õ KõUõkõ"õ¤õ³õ!Ãõåõøõýõ@öFö [öhö€öšöXžö<÷öo4÷D¤÷é÷9ú÷ˆ4ø½øÂø Çø1Ôøù&ù)/ù0Yù&Šù±ù¶ù¼ùÎùÔùÙùßùæùùùýùúúú!ú2ú AúLúTú>eú¤ú´úÐúßú&óú|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Polish Language: pl_PL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: pl X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (zmodyfikowano) (niezapisany)%d wystÄ…pienie kodu%d wystÄ…pienia kodu%d wystÄ…pieÅ„ kodu%d wystÄ…pieÅ„ kodu%d wpis%d wpisy%d wpisów%d wpisów%d wpis zostaÅ‚ wstÄ™pnie przetÅ‚umaczony.%d wpisy zostaÅ‚y wstÄ™pnie przetÅ‚umaczone.%d wpisów zostaÅ‚o wstÄ™pnie przetÅ‚umaczonych.%d wpisów zostaÅ‚o wstÄ™pnie przetÅ‚umaczonych.%d błąd%d błędy%d błędów%d błędówWystÄ…piÅ‚ %d błąd.WystÄ…piÅ‚y %d błędy.WystÄ…piÅ‚o %d błędów.WystÄ…piÅ‚o %d błędów.WystÄ…piÅ‚ %d błąd:WystÄ…piÅ‚y %d błędy:WystÄ…piÅ‚o %d błędów:WystÄ…piÅ‚o %d błędów:Wykryto %d problem z ciÄ…gami źródÅ‚owymi.Wykryto %d problemy z ciÄ…gami źródÅ‚owymi.Wykryto %d problemów z ciÄ…gami źródÅ‚owymi.Wykryto %d problemów z ciÄ…gami źródÅ‚owymi.W tÅ‚umaczeniu znaleziono %d problem.W tÅ‚umaczeniu znaleziono %d problemy.W tÅ‚umaczeniu znaleziono %d problemów.W tÅ‚umaczeniu znaleziono %d problemów.Nie wczytano prawidÅ‚owo %i wiersza pliku „%sâ€.Nie wczytano prawidÅ‚owo %i wierszy pliku „%sâ€.Nie wczytano prawidÅ‚owo %i wierszy pliku „%sâ€.Nie wczytano prawidÅ‚owo %i wierszy pliku „%sâ€.Format %sUstawienia %sFormat %sZaimportowano %s tÅ‚umaczenie.Zaimportowano %s tÅ‚umaczenia.Zaimportowano %s tÅ‚umaczeÅ„.Zaimportowano %s tÅ‚umaczeÅ„.&O programie&O Poedit&Zatwierdź&Wstecz&Anuluj&Wyczyść&Zamknij&Kopiuj&UsuÅ„&ZakoÅ„cz i przejdź do nastÄ™pnego&ZakoÅ„cz i przejdź do nastÄ™pnego&Edycja&PlikZnajdź…Dokumentacja &GNU gettextDokumentacja &GNU gettextNawi&gacja&Grupuj wg kontekstu&Grupuj wg kontekstu&Pomoc&Nowy&Nowy…&NastÄ™pne »&NastÄ™pne tÅ‚umaczenie&NastÄ™pne tÅ‚umaczenie&Nie&OKPomoc &onlinePomoc &online&Otwórz...&Otwórz…&Wklej&Ustawienia&Ustawienia…&Poprzednie tÅ‚umaczenie&Poprzednie tÅ‚umaczenie&WÅ‚aÅ›ciwoÅ›ci…&Wyczyść usuniÄ™te tÅ‚umaczenia&Wyczyść usuniÄ™te tÅ‚umaczenia&Wyjdź&PonówZamieÅ„&ZapiszZapi&sz jako&Pokaż wystÄ…pienia kodu&Pokaż wystÄ…pienia kodu&Uruchom okno&Uruchom okno&TÅ‚umaczenie&Cofnij&NieprzetÅ‚umaczone na górze&NieprzetÅ‚umaczone na górzeZaktualizuj z kodu źródÅ‚owegoZaktualizuj z kodu źródÅ‚owego&Weryfikuj tÅ‚umaczenie&Weryfikuj tÅ‚umaczenia&Widok&Tak(Użyj jÄ™zyka domyÅ›lnego)(nie zalogowano)(wymaga Windows 8 lub nowszego)« &PoprzednieInformacje o %sKontoKontaDodajDodaj komentarzDodaj pliki…Dodaj foldery…Dodaj projektDodaj wieloznacznik…Dodaj komentarzDodaj katalog do listyDodaj pliki…Dodaj foldery…Dodaj projektDodaj wieloznacznik…Dodatkowe sÅ‚owa kluczoweDodatkowe flagi Xgettext:ZaawansowaneZaawansowane ustawienia wyodrÄ™bniania…Zaawansowane ustawienia wyodrÄ™bnianiaZaawansowane ustawienia wyodrÄ™bniania…Wszystkie pliki tÅ‚umaczeÅ„Wszystkich komentarzyWszystkie ciÄ…giUżyj także domyÅ›lnych słów kluczowych z obsÅ‚ugiwanych jÄ™zykówUaktywniaj pole wprowadzania tekstuWystÄ…piÅ‚ błąd.Element na liÅ›cie plików wejÅ›ciowych:Element na liÅ›cie słów kluczowych:WyglÄ…dZatwierdźPrzybliżone dopasowania z TMCzy na pewno chcesz usunąć wyodrÄ™bnienie “%sâ€?Czy na pewno chcesz wyczyÅ›cić pamięć tÅ‚umaczeniowÄ…?Automatycznie sprawdzaj dostÄ™pność aktualizacjiAutomatycznie kompiluj plik MO podczas zapisywaniaWsteczÅšcieżka podstawowa:Wersje beta zawierajÄ… nowÄ… funkcjonalność i usprawnienia, mogÄ… być jednak mniej stabilne.Umieść wszystko na wierzchuUszkodzony plik PO: użyto liczby mnogiej msgstr bez msgid_pluralUszkodzony plik PO: użyto liczby pojedynczej msgstr razem z msgid_pluralUszkodzone znaczniki w Å‚aÅ„cuchu tÅ‚umaczenia.PrzeglÄ…dajPrzeglÄ…daj plikiDomyÅ›lnie uwzglÄ™dnia siÄ™ również niedokÅ‚adne wyniki, ale oznaczone jako wymagajÄ…ce pracy. Sprawdź tÄ™ opcjÄ™, aby uwzglÄ™dnić tylko idealne dopasowania.AnulujAnulowanie…Nie można utworzyć katalogu tymczasowego.Nie można uruchomić programu: %sNie można wstÄ™pnie przetÅ‚umaczyć z nieznanego jÄ™zyka.Nie można wstÄ™pnie przetÅ‚umaczyć bez tekstu źródÅ‚owego.ZamieÅ„ na kapitaliki&Menedżer pakietów&Menedżer pakietówMenedżer pakietówZmieÅ„ jÄ™zyk interfejsuKodowanie:Sprawdź dokument terazSprawdzaj gramatykÄ™ i pisowniÄ™Sprawdzaj pisowniÄ™ w trakcie pisaniaSprawdź dostÄ™pność aktualizacji…Sprawdza czy w tÅ‚umaczeniu wystÄ™pujÄ… błędySprawdź dostÄ™pność aktualizacji…Sprawdzaj pisowniÄ™WyczyśćWyczyść menuWyczyść tÅ‚umaczenieWyczyść menuWyczyść tÅ‚umaczenieZamknijChmuraWystÄ…pienia koduWystÄ…pienia koduWspółpracuj z innymi osobami w sieci.Zbieranie plików źródÅ‚owych…Polecenie do wyodrÄ™bnienia tÅ‚umaczenia:KomentarzKomentarz:Komentarzy z prefiksem:Skompiluj do MO…Skompiluj do…Skompilowany pliki tÅ‚umaczeÅ„Konfiguruj wyodrÄ™bnianie kodu źródÅ‚owego we wÅ‚aÅ›ciwoÅ›ciach.PotwierdzeniePołącz program Poedit z obsÅ‚ugiwanymi platformami lokalizacyjnymi w chmurze, aby pÅ‚ynnie synchronizować zarzÄ…dzane na nich tÅ‚umaczenia.KopiujSkopiuj z liczby pojedynczejSkopiuj z tekstu źródÅ‚owegoSkopiuj z liczby pojedynczejSkopiuj z tekstu źródÅ‚owegoPoprawiaj pisowniÄ™ automatycznieNie można pobrać szczegółów projektu Localazy.Nie można wczytać pliku. Prawdopodobnie jest uszkodzony.Nie można zapisać pliku %s.Utwórz nowyUtwórz nowe tÅ‚umaczenieUtwórz nowe tÅ‚umaczenie z szablonu POT.Utwórz nowy projekt tÅ‚umaczeÅ„Błąd CrowdinCrowdin to internetowa platforma do zarzÄ…dzania tÅ‚umaczeniami i narzÄ™dzie do współpracy przy tÅ‚umaczeniu. Sami używamy Crowdin do tÅ‚umaczenia Poedit na wiele jÄ™zyków i bardzo nam siÄ™ to podoba.Wy&tnijNiestandardowe ekstraktory:Niestandardowe ekstraktory:Dostosuj pasek narzÄ™dzi…WytnijRozmiar bazy danych na dysku:UsuÅ„UsuÅ„ z pamiÄ™ci tÅ‚umaczeniowejUsuÅ„ wyodrÄ™bnienieUsuÅ„ z pamiÄ™ci tÅ‚umaczeniowejUsuÅ„ projektUsuÅ„ komentarzUsuÅ„ projektUsuniÄ™cie projektu nie spowoduje usuniÄ™cia żadnych plików tÅ‚umaczeÅ„.OkreÅ›lanie różnic…Katalogi:Czy chcesz usunąć projekt "%s"?Czy chcesz ponownie zaÅ‚adować plik z dysku? JeÅ›li to zrobisz, twoje niezapisane zmiany w Poedit zostanÄ… utracone.Czy chcesz usunąć wszystkie tÅ‚umaczenia, które sÄ… identyczne z tekstem źródÅ‚owym?Czy chcesz usunąć wszystkie nieużywane tÅ‚umaczenia?N&ie zapisujNie zapisujNie pokazuj ponownieNie oznaczaj dokÅ‚adnych dopasowaÅ„ jako wymagajÄ…cych pracyNie pokazuj ponowniePobieranie najnowszych tÅ‚umaczeń…Ten projekt ma wyłączone pobieranie tÅ‚umaczeÅ„.PrzeciÄ…gnij tutaj foldery lub plikiPrzeciÄ…gnij tutaj foldery lub pliki&ZakoÅ„czW&yeksportuj do HTML…EdytujEdytuj &komentarzEdytuj &komentarzEdytuj komentarzEdytuj komentarzEdytuj projektEdytuj projektEdytowanieEdytuj…Adres e-mail:Tryb peÅ‚noekranowyWpisy w tym pliku zawierajÄ… róźne formy liczby mnogiej liczÄ… siÄ™ od tego, co mówi nagłówek plural-forms plikuBłędne na górzeBłędne na górzeElementy zawierajÄ…ce błędy zostaÅ‚y oznaczone kolorem czerwonym. Szczegółowy opis błędu bÄ™dzie widoczny po wybraniu elementu.Błąd podczas otwierania plikuBłąd zapisu plikuBłąd podczas Å‚adowania pliku XLIFF: %sBłąd: BłędyWszystkoDokÅ‚adne dopasowania z TMWykluczone Å›cieżkiEksportuj do TMX…Eksportuj jako…Eksportuj do HTML…Eksportuj do TMX…Eksportowanie do HTMLEksportowanie pamiÄ™ci tÅ‚umaczeniowej do "%s" nie powiodÅ‚o siÄ™.Eksportowanie tÅ‚umaczeń…WyodrÄ™bnij ze źródeÅ‚WyodrÄ™bnij informacje dla tÅ‚umaczy z:WyodrÄ™bniaj tekst z plików źródÅ‚owych do nastÄ™pujÄ…cych katalogów:WyodrÄ™bnianie ciÄ…gów do tÅ‚umaczenia z %s pliku…WyodrÄ™bnianie ciÄ…gów do tÅ‚umaczenia z %s plików…WyodrÄ™bnianie ciÄ…gów do tÅ‚umaczenia z %s plików…WyodrÄ™bnianie ciÄ…gów do tÅ‚umaczenia z %s plików…Ustawienia wyodrÄ™bnianiaWyodrÄ™bnianieNieudana komunikacja z procesem Poedit.Nie udaÅ‚o siÄ™ wyodrÄ™bnić ciÄ…gów z kodu źródÅ‚owego.Nie udaÅ‚o siÄ™ zaÅ‚adować pliku z rozpakowanymi tÅ‚umaczeniami.Nie udaÅ‚o siÄ™ połączyć pakietów gettext.Nie udaÅ‚o siÄ™ zaktualizować pamiÄ™ci tÅ‚umaczeniowej: %sPlikNie można otworzyć plikuPlik “%s†nie istnieje.Plik „%s†nie jest plikiem tÅ‚umaczeÅ„.Plik „%s†ma atrybut „tylko do odczytu†i nie może być zapisany. Zapisz go pod innÄ… nazwÄ….ZnajdźZnajdź nastÄ™pneZnajdź poprzednieZnajdź i zamień…Szukaj w komentarzachSzukaj w tekstach źródÅ‚owychSzukaj w tÅ‚umaczeniachZnajdź nastÄ™pneZnajdź poprzednieNapraw jÄ™zykNapraw jÄ™zykNapraw nagłówekNapraw nagłówekPliki tÅ‚umaczeÅ„ FlutterForma %iFormularz %i (nieużywany)GNU gettextUstawienia głównePliki HTMLPomocUkryj pasek bocznyUkryj pasek stanuNie wyÅ›wietlaj tej informacjiJak dziaÅ‚a synchronizacja w chmurze?IDKontynuujÄ…c trwale usuniesz wszystkie tÅ‚umaczenia oznaczone jako usuniÄ™te. JeÅ›li w przyszÅ‚oÅ›ci zostanÄ… dodane, konieczne bÄ™dzie ich ponowne tÅ‚umaczenie.JeÅ›li wczeÅ›niej odmówiÅ‚eÅ› dostÄ™pu do swoich plików, możesz zezwolić na to w Preferencjach System > BezpieczeÅ„stwo i Prywatność > Prywatność > Pliki i Foldery.JeÅ›li wczeÅ›niej odmówiono dostÄ™pu do swoich plików, można ponownie zezwolić na to w System Settings > Privacy & Security > Files & Folders.IgnorujIgnoruj wielkość literImportuj z TMX…Importuj pliki tÅ‚umaczeń…Importuj z TMX…Importuj pliki tÅ‚umaczeń…Importowanie z „%sâ€â€¦Importowanie pamiÄ™ci tÅ‚umaczeniowej nie powiodÅ‚o siÄ™.Trwa importowanie tÅ‚umaczeń…W: %sSprawdzaj także wersje betaNiespójne wielkie/maÅ‚e literyNiespójne spacjeInformacje o tÅ‚umaczuZainstalujNieprawidÅ‚owy plikWywoÅ‚anie:ProblemProblemyPliki tÅ‚umaczeÅ„ JSONZachowajNazwa jÄ™zyka lub kodJÄ™zyk tÅ‚umaczenia jest taki sam jak jÄ™zyk źródÅ‚owy.Nie okreÅ›lono jÄ™zyka tÅ‚umaczenia.JÄ™zyk tÅ‚umaczenia:Wybór jÄ™zykaGrupa tÅ‚umaczeniowa:JÄ™zyk:Ostatnio zmodyfikowanoDowiedz siÄ™ wiÄ™cej o sÅ‚owach kluczowych gettextInformacje o formach liczby mnogiejDowiedz siÄ™ wiÄ™cejWiÄ™cej informacji o %sDowiedz siÄ™ wiÄ™cej o CrowdinDowiedz siÄ™ wiÄ™cej o GNU gettextWierszWiersz %d pliku „%s†jest uszkodzony (niepoprawne dane „%sâ€).Format zakoÅ„czeÅ„ wierszy:Lista rozszerzeÅ„ rozdzielonych Å›rednikami, np. *.cpp;*.h:ZaÅ‚aduj angielskiLocalazy jest wysoce zautomatyzowanÄ… platformÄ… lokalizacyjnÄ…, umożliwiajÄ…cÄ… każdemu Å‚atwe tÅ‚umaczenie swoich produktów i treÅ›ci na wiele jÄ™zyków.Plików MO nie można edytować bezpoÅ›rednio w programie Poedit.ZamieÅ„ na maÅ‚e literyZamieÅ„ na duże literyUtwórz nowe tÅ‚umaczenie z tego pliku POT.Uszkodzony nagłówek: „%s"ZarzÄ…dzaj kontamiZarzÄ…dzaj…Scalanie różnic…MinimalizujNazwa dla projektu tÅ‚umaczeniaAutor:&NastÄ™pne nieukoÅ„czone&NastÄ™pne nieukoÅ„czoneWymaga pracyWymaga pracyBłąd sieci: %s (%d)Nie zaleca siÄ™ włączania tej opcji. JeÅ›li zostanie włączona, do nawigacji po polach trzeba bÄ™dzie używać klawisza Ctrl i strzaÅ‚ek, ale za to bÄ™dzie można niezwÅ‚ocznie przystÄ…pić do wpisywania tÅ‚umaczonego tekstu.NowyNowy z pliku &POT/PO…Nowe ciÄ…giNowy z pliku &POT/PO…Nowe tekstyNowe ciÄ…gi do przetÅ‚umaczenia:NastÄ™pna forma liczby mnogiejNastÄ™pna forma liczby mnogiejNieNie znaleziono odpowiednikówÅ»aden z wpisów nie mógÅ‚ być wstÄ™pnie przetÅ‚umaczony.W pliku nie podano żadnych informacji o wystÄ…pieniach tego ciÄ…gu w kodzie źródÅ‚owym.Nie znaleziono odpowiednikówNie znaleziono problemów.Brak projektów z tÅ‚umaczeniami na twoim koncie.Nie znaleziono informacji o użyciuNie wszystkie formy liczby mnogiej sÄ… przetÅ‚umaczone.Brak autoryzacji, zaloguj siÄ™ ponownie.Notatki dla tÅ‚umaczyOKJedenWłącz tylko wtedy, jeÅ›li ufasz jakoÅ›ci swojej TM. DomyÅ›lnie wszystkie dopasowania z TM sÄ… oznaczone jako wymagajÄ…ce dopracowania i powinny zostać przejrzane przed użyciem.UzupeÅ‚niaj jedynie dokÅ‚adne odpowiednikiOtwórz Å‚umaczenie w chmurze…Ostatnio otwieraneOtwórz i edytuj pliki tÅ‚umaczeÅ„.Otwórz tÅ‚umaczenie w chmurzeOtwórz tÅ‚umaczenie w chmurze…Otwórz plikOtwórz w edytorzeOtwórz w edytorzeOtwórz ostatnieOtwórz plik referencyjnyOtwórz...Otwórz…OpcjeInnePop&rzednie nieukoÅ„czonePop&rzednie nieukoÅ„czonePliki tÅ‚umaczeÅ„ POSzablony tÅ‚umaczeÅ„ POTPliki POT sÄ… jedynie szablonem tÅ‚umaczenia i nie zawierajÄ… one tÅ‚umaczeÅ„. Aby utworzyć nowe tÅ‚umaczenie utwórz nowy plik PO oparty na tym szablonie.WklejWklej i dopasuj stylÅšcieżkiWykonuje aktualizacjÄ™ z kodu źródÅ‚owego na wszystkich plikach w projekcie.Odmowa dostÄ™pu.W tÅ‚umaczeniu brakuje symbolu zastÄ™pczego "%s".PrawidÅ‚owość symboli zastÄ™pczychZamiast tego, otwórz i edytuj odpowiadajÄ…cy mu plik PO. Podczas zapisywania pliku PO, odpowiadajÄ…cy mu plik MO zostanie zaktualizowany.Najpierw zapisz plik. Przed zapisaniem pliku nie można edytować tej sekcji.Liczba mnogaTÅ‚umaczenia form liczb mnogicWyrażenie formy liczby mnogiej używane w pliku jest nietypowe dla %s.Formy liczby mnogiej:PoeditPoedit - Menedżer pakietówPoedit automatycznie naprawiÅ‚ nieprawidÅ‚owoÅ›ci w pliku „%sâ€.Poedit może spróbować wypeÅ‚nić pola, korzystajÄ…c wyłącznie z poprzednich tÅ‚umaczeÅ„ zawartych w pliku lub z caÅ‚ej pamiÄ™ci tÅ‚umaczeÅ„. Skuteczność użycia TM nie bÄ™dzie duża, jeÅ›li pamięć jest prawie pusta, bÄ™dzie jednak ulegać poprawie w miarÄ™ dodawania kolejnych tÅ‚umaczeÅ„.Poedit nie może pokazać kodu źródÅ‚owego, w którym jest używany ciÄ…g, ponieważ plik nie jest dostÄ™pny w lokalizacji, do której istnieje odwoÅ‚anie, albo jest odwoÅ‚aniem symbolicznym, które nie wskazuje na prawdziwy plik.Poedit jest Å‚atwym w użyciu edytorem tÅ‚umaczeÅ„.Poedit nie może otworzyć pliku "%s".WstÄ™pnie prze&tÅ‚umacz…WstÄ™pnie przetÅ‚umaczWstÄ™pnie przetÅ‚umaczoneWstÄ™pnie przetÅ‚umaczony %u ciÄ…gWstÄ™pnie przetÅ‚umaczone %u ciÄ…giWstÄ™pnie przetÅ‚umaczone %u ciÄ…giWstÄ™pnie przetÅ‚umaczone %u ciÄ…giWstÄ™pne tÅ‚umaczenie z pamiÄ™ci tÅ‚umaczeniowej…WstÄ™pne tÅ‚umaczenie…WstÄ™pne tÅ‚umaczenie automatycznie znajduje w pamiÄ™ci tÅ‚umaczeÅ„ dokÅ‚adne lub przybliżone dopasowania dla nieprzetÅ‚umaczonych ciÄ…gów, a nastÄ™pnie wypeÅ‚nia ich tÅ‚umaczenia.WstÄ™pne tÅ‚umaczenie wymaga, aby tekst źródÅ‚owy byÅ‚ dostÄ™pny. Nie dziaÅ‚a, jeÅ›li używane sÄ… tylko identyfikatory bez aktualnego tekstu.WstÄ™pne tÅ‚umaczenie wymaga, aby jÄ™zyk tekstu źródÅ‚owego byÅ‚ znany. Poedit nie mógÅ‚ wykryć go w tym pliku.PreferencjePreferencje...Ustawienia…Przygotowywanie ciÄ…gów…Zachowaj formatowanie istniejÄ…cych plikówPoprzednia forma liczby mnogiejPoprzednia forma liczby mnogiejPoprzedni tekst źródÅ‚owyPoprzednio edytowanePoprzednio edytowaneNazwa projektu i wersja:Nazwa projektu:Projekt:ProjektySprawdzanie interpunkcjiWyczyśćWyczyść usuniÄ™te tÅ‚umaczeniaWyjdźWczytywanie zawartoÅ›ci pliku nie powiodÅ‚o siÄ™ z nastÄ™pujÄ…cym błędem: %sOstatnie plikiPonówOdÅ›wieżWczytaj plik ponownieWczytaj plik ponowniePozostaÅ‚o: %dUsuÅ„UsuÅ„ tÅ‚umaczenia takie same jak tekst źródÅ‚owyUsuÅ„ tÅ‚umaczenia z tego samego źródÅ‚aUsuniÄ™te ciÄ…giUsuniÄ™te ciÄ…giUsuniÄ™te ciÄ…gi (już nieużywane):ZamieÅ„Z&amieÅ„ wszystkoZ&amieÅ„ wszystkoZamieÅ„ na tekstZamień…Brakuje nagłówka Plural-Forms.WyczyśćWyczyść pamięć tÅ‚umaczeniowÄ…Wyczyszczenie pamiÄ™ci tÅ‚umaczeniowej bezpowrotnie usunie wszystkie zapamiÄ™tane tÅ‚umaczenia. Tej operacji nie można cofnąć.Pokaż w FinderzeDo sprawdzeniaZapiszZapisz j&ako…Zapisz j&ako…Zapisz mimo toZapisz mimo toZapisz jakoZapisz jako…Zapisz zmianyZapisz plikZapisywanie w innej lokalizacji nie jest obsÅ‚ugiwane w przypadku plików XCLOC.Zrzuty ekranu:Zaznacz &wszystkoZaznacz wszystkoWybierz pliki TMX do zaimportowaniaWybierz katalogWybierz plik tÅ‚umaczeniaWybierz pliki tÅ‚umaczeÅ„ do zaimportowaniaWybierz szablon tÅ‚umaczeniaWybierz preferowany jÄ™zykWybierz jÄ™zykWybierz jÄ™zykUstawieniaUstawienia…Pokaż pasek bocznyPokaż pisowniÄ™ i gramatykÄ™Pokaż pasek stanuPokaż ciÄ…g &identyfikatorPokaż zamiennikiPokaż pasek narzÄ™dziPokaż ostrzeżeniaPokaż w EksploratorzePokaż w folderzeWyÅ›wietl lub ukryj pasek bocznyPokaż pasek bocznyPokaż pasek stanuPokaż &identyfikator ciÄ…guPokaż ostrzeżeniaPasek bocznyZalogujWylogujZaloguj siÄ™Zaloguj siÄ™ do %sZaloguj siÄ™ na konto w chmurzeZaloguj siÄ™ do CrowdinZaloguj siÄ™ na konto w chmurzeWyloguj siÄ™Liczba pojedynczaInteligentne kopiowanie/wklejanieInteligentne myÅ›lnikiInteligentne odnoÅ›nikiInteligentne cytatySortuj wg &nazw plikówSortuj wg &źródÅ‚aSortuj wg &tÅ‚umaczeniaSortuj wg &nazw plikówSortuj wg &źródÅ‚aSortuj wg &tÅ‚umaczeniaKodowanie źródÅ‚a:WyodrÄ™bnianie z kodu źródÅ‚owego pozwala odnaleźć teksty, które mogÄ… zostać przetÅ‚umaczone w plikach źródÅ‚owych programu i wyodrÄ™bnia je, gotowe do tÅ‚umaczenia.Kod źródÅ‚owy jest niedostÄ™pny.Nie znaleziono kodu źródÅ‚owegoTekst źródÅ‚owyID tekstu źródÅ‚owegoTekst źródÅ‚owy — %sŹródÅ‚owe sÅ‚owa kluczoweÅšcieżki źródełŹródÅ‚a słów kluczowychÅšcieżki źródeÅ‚NarracjaSprawdzanie pisowni jest wyłączone, ponieważ sÅ‚ownik %s nie jest zainstalowany.Pisownia i gramatykaRozpocznij mówienieZatrzymaj mówienieZapisane tÅ‚umaczenia:Zawartość ciÄ…gu: %sIdentyfikator ciÄ…gu: %sDÅ‚ugość ciÄ…gu w znakachDÅ‚ugość ciÄ…gu w znakach: tÅ‚umaczenie | źródÅ‚oTekst do wyszukaniaProjekty Crowdin oparte na ciÄ…gach nie sÄ… obsÅ‚ugiwane.ZamiennikiPodpowiedziPodpowiedzi nie sÄ… dostÄ™pne, jeżeli jÄ™zyk tÅ‚umaczenia nie jest poprawnie ustawiony. Inne funkcje, takie jak liczba mnogÄ…, mogÄ… także nie dziaÅ‚ać poprawnie.ZbÄ™dny symbol zastÄ™pczy "%s", który nie znajduje siÄ™ w tekÅ›cie źródÅ‚owym.ObsÅ‚uguje wszystkie jÄ™zyki programowania rozpoznawalne przez narzÄ™dzia GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript i inne).SynchronizujSynchronizuj z CrowdinSynchronizuj tÅ‚umaczenie z platformÄ… CrowdinSynchronizowanieBłąd synchronizacjiSynchronizacja z Crowdin nie powiodÅ‚a siÄ™.Błąd skÅ‚adni w nagłówku Plural-Forms („%sâ€).TMPliki TMXUżyj tekstów z istniejÄ…cego szablonu POT.Nazwa grupy i adres e-mail lub adres URLZastÄ™powanie tekstuPamięć tÅ‚umaczeniowa nie zawiera żadnych wpisów pasujÄ…cych do treÅ›ci tego pliku. Funkcja ta jest efektywna tylko dla tÅ‚umaczeÅ„ półautomatycznych po tym, jak pamięć tÅ‚umaczeniowa Poedit nauczy siÄ™ z plików rÄ™cznie przetÅ‚umaczonych.Plik TMX jest uszkodzony.JeÅ›li zapiszesz, utracisz zmiany wprowadzone przez innÄ… aplikacjÄ™.Ten plik nie może zostać skompilowany do formatu MO i użyty.Plik zawieraÅ‚ powielone elementy, co nie jest dozwolone w plikach PO i mogÅ‚oby uniemożliwić jego użycie. Poedit naprawiÅ‚ ten problem, ale należy przejrzeć tÅ‚umaczenia wszystkich pozycji oznaczonych jako wymagajÄ…ce dopracowania i w razie potrzeby poprawić je.Nie można zapisać pliku w zestawie znaków „%sâ€, jak okreÅ›lono w ustawieniach tÅ‚umaczeÅ„. Zamiast tego zostaÅ‚ on zapisany w UTF-8, a samo ustawienie zostaÅ‚o do tego dopasowane.Plik zostaÅ‚ zmieniony. Czy chcesz zapisać zmiany?Poedit nie może rozpoznać tego formatu pliku.Plik zostaÅ‚ skompilowany do formatu MO jednak prawdopodobnie nie bÄ™dzie dziaÅ‚aÅ‚ poprawnie.Plik zostaÅ‚ zapisany bezpiecznie i skompilowany do formatu .mo, ale prawdopodobnie nie bÄ™dzie dziaÅ‚aÅ‚ poprawnie.Plik zostaÅ‚ zapisany bezpiecznie, ale nie może zostać skompilowany do formatu .mo ani użyty.Plik zostaÅ‚ zapisany bezpiecznie.Nie można otworzyć pliku „%sâ€.Nie można zapisać pliku „%sâ€.Plik „%s†zostaÅ‚ zmieniony przez innÄ… aplikacjÄ™.Stary tekst źródÅ‚owy (sprzed zmian wynikajÄ…cych z aktualizacji), do którego odwoÅ‚uje siÄ™, teraz już niedokÅ‚adne, tÅ‚umaczenie.Najprostszym sposobem wypeÅ‚nienia tego pliku tÅ‚umaczeniami jest zaktualizowanie go z POT:TÅ‚umaczenie nie zaczyna siÄ™ od spacji.TÅ‚umaczenie koÅ„czy siÄ™ nowÄ… liniÄ…, podczas gdy tekst źródÅ‚owy - nie.TÅ‚umaczenie zaczyna siÄ™ od spacji, podczas gdy tekst źródÅ‚owy - nie.TÅ‚umaczenie koÅ„czy siÄ™ "%s", podczas gdy tekst źródÅ‚owy koÅ„czy siÄ™ "%s".W tÅ‚umaczeniu brakuje nowej linii na koÅ„cu.W tÅ‚umaczeniu brakuje spacji na koÅ„cu.TÅ‚umaczenie jest gotowe do użycia, ale %d pozycja nie zostaÅ‚a jeszcze przetÅ‚umaczony.TÅ‚umaczenie jest gotowe do użycia, ale %d pozycje nie zostaÅ‚y jeszcze przetÅ‚umaczone.TÅ‚umaczenie jest gotowe do użycia, ale %d pozycji nie zostaÅ‚o jeszcze przetÅ‚umaczonych.TÅ‚umaczenie jest gotowe do użycia, ale %d pozycji nie zostaÅ‚o jeszcze przetÅ‚umaczonych.TÅ‚umaczenie jest gotowe do użycia.TÅ‚umaczenie powinno koÅ„czyć siÄ™ "%s".TÅ‚umaczenie nie powinno koÅ„czyć siÄ™ "%s".TÅ‚umaczenie powinno siÄ™ zaczynać jak zdanie.TÅ‚umaczenie powinno zacząć siÄ™ małą literÄ….TÅ‚umaczenie zaczyna siÄ™ od spacji, podczas gdy tekst źródÅ‚owy - nie.TÅ‚umaczenia zostaÅ‚y oznaczone jako wymagajÄ…ce dopracowania, ponieważ mogÄ… być niedokÅ‚adne. Należy sprawdzić ich poprawność.Nie ma tÅ‚umaczeÅ„. To siÄ™ rzadko zdarza.WystÄ…piÅ‚ problem z dokÅ‚adnym formatowaniem pliku, ale zostaÅ‚ on zapisany poprawnie.WystÄ…piÅ‚ błąd podczas przesyÅ‚ania tÅ‚umaczeÅ„ do Localazy.WystÄ…piÅ‚y błędy w czasie odczytu pakietu. W wyniku czego może brakować części danych bÄ…dź mogÄ… być one uszkodzone.Te ustawienia majÄ… wpÅ‚yw na wewnÄ™trzne formatowanie plików PO. ZmieÅ„ je, jeżeli masz specyficzne wymagania np.: ze wzglÄ™du na system kontroli wersji.Ten plik JSON nie jest plikiem tÅ‚umaczeÅ„ i nie może być edytowany w Poedit.Ta akcja spowoduje usuniÄ™cie wszystkich tÅ‚umaczeÅ„, które dokÅ‚adnie pasujÄ… do tekstu źródÅ‚owego. Nie można tego cofnąć.Ten plik zawiera wpisy z liczbami mnogimi, ale nie ma skonfigurowany nagłówek Plural-Forms.Ten plik używa identyfikatorów ciÄ…gów zamiast tekstu źródÅ‚owego. Poedit może zaÅ‚adować dla ciebie teksty w jÄ™zyku angielskim z pliku "%s".To jest polecenie które uruchomi program do wyodrÄ™bniania. %o zastÄ™puje nazwÄ™ pliku wyjÅ›ciowego, %K - listÄ™ słów kluczowych, %F listÄ™ plików wejÅ›ciowych %C - flagÄ™ kodowania źródÅ‚a (zobacz niżej).Ten tekst zostaÅ‚ znaleziony w pamiÄ™ci tÅ‚umaczeniowej programu Poedit.Zostanie to dołączone do wiersza poleceÅ„ tylko, jeÅ›li zostaÅ‚o podane kodowanie znaków źródÅ‚a. %c zostanie zastÄ…pione typem kodowania.Zostanie to dołączone do wiersza poleceÅ„ dla każdego pliku wejÅ›ciowego. %f zostanie zastÄ…pione nazwÄ… pliku.Zostanie to dołączone do wiersza poleceÅ„ dla każdego sÅ‚owa kluczowego. %k zostanie zastÄ…pione sÅ‚owem kluczowym.RazemPrzeksztaÅ‚ceniaWpisy możliwe do przetÅ‚umaczenia nie sÄ… dodawane rÄ™cznie w systemie Gettext, ale sÄ… automatycznie wyodrÄ™bniane z kodu źródÅ‚owego. W ten sposób pozostajÄ… aktualne i dokÅ‚adne. TÅ‚umacze zazwyczaj używajÄ… plików szablonów PO (POT) przygotowanych dla nich przez programistÄ™.PrzetÅ‚umacz projekt w chmurzePrzetÅ‚umaczone: %d z %d (%d %%)TÅ‚umaczenieJÄ™zyk tÅ‚umaczeniaPamięć tÅ‚umaczeniowaTÅ‚umaczenie &wymagajÄ…ce pracyWÅ‚aÅ›ciwoÅ›ci tÅ‚umaczeniaPlik tÅ‚umaczenia jest już aktualny, nie wprowadzono żadnych zmian w ciÄ…gach.Plik tÅ‚umaczenia zostaÅ‚ zaktualizowany o %s zmianÄ™.Plik tÅ‚umaczenia zostaÅ‚ zaktualizowany o %s zmiany.Plik tÅ‚umaczenia zostaÅ‚ zaktualizowany o %s zmian.Plik tÅ‚umaczenia zostaÅ‚ zaktualizowany o %s zmian.Baza danych pamiÄ™ci tÅ‚umaczeniowej jest uszkodzona: %s (%d).Błąd pamiÄ™ci tÅ‚umaczeniowej: %s (%d).TÅ‚umaczenie &wymagajÄ…ce pracyWÅ‚aÅ›ciwoÅ›ci tÅ‚umaczeniaSugestie tÅ‚umaczeniaWstÄ™pne tÅ‚umaczenia wymagajÄ…, aby tekst źródÅ‚owy byÅ‚ dostÄ™pny. Nie dziaÅ‚ajÄ…, jeÅ›li używane sÄ… tylko identyfikatory bez aktualnego tekstu.Sugestie tÅ‚umaczenia wymagajÄ…, aby jÄ™zyk tekstu źródÅ‚owego byÅ‚ znany. Poedit nie mógÅ‚ wykryć go w tym pliku.TÅ‚umaczenie — %sTÅ‚umaczeÅ„ nie można zaktualizować z kodu źródÅ‚owego, ponieważ nie znaleziono kodu w lokalizacji okreÅ›lonej we wÅ‚aÅ›ciwoÅ›ciach pliku.DwaUTF-8 (zalecane)CofnijNieoczekiwanie brakuje zawartoÅ›ci w pliku XCLOC.WystÄ…piÅ‚ nieobsÅ‚ugiwany wyjÄ…tek: %sUnix (zalecany)Nieznany błąd Crowdin.Nieznany błądNieprzetÅ‚umaczoneAktualizujPodsumowanie aktualizacjiAktualizuj wszystkieAktualizuj wszystkie pakiety w projekcieCzy zaktualizować wszystkie katalogi w tym projekcie?Aktualizuj z pliku &POT…Aktualizuj z pliku &POT…Aktualizuj z koduAktualizuj z pliku POTAktualizuj z koduAktualizuj ze źródeÅ‚Podsumowanie aktualizacjiAktualizacjeAktualizacja nie powiodÅ‚a siÄ™Aktualizacja katalogów projektówAktualizowanie tÅ‚umaczeÅ„Aktualizowanie informacji o użytkowniku…PrzesyÅ‚anie tÅ‚umaczeÅ„ do %s nie powiodÅ‚o siÄ™.PrzesyÅ‚anie tÅ‚umaczeÅ„ do %s…PrzesyÅ‚anie tÅ‚umaczeń…Użyj wyrażenia wÅ‚asnegoUżyj niestandardowej czcionki listy:Użyj niestandardowej czcionki pola tekstowego:Użyj domyÅ›lnych reguÅ‚ dla tego jÄ™zykaDo rozpoznania tekstów do tÅ‚umaczenia w plikach źródÅ‚owych użyj poniższych słów kluczowych (nazw funkcji):Używaj pamiÄ™ci tÅ‚umaczeniowejZweryfikujWynik weryfikacjiWersja %sZobacz szczegóły…Zobacz szczegóły…Oczekiwanie na uwierzytelnienie…Ostrzeżenie: Witamy w PoeditPodczas aktualizacji ze źródeÅ‚Tylko caÅ‚e wyrazyOknoWindowsCzy chcesz użyć jÄ™zyka angielskiego dla tekstu źródÅ‚owego?Zawijaj wyszukiwanieSzerokość:Pliki tÅ‚umaczeÅ„ XLIFFKatalog lokalizacji XcodeTakMożesz także wyodrÄ™bnić elementy do tÅ‚umaczenia bezpoÅ›rednio z kodu źródÅ‚owego:Na okno Poedit nie można upuÅ›cić wiÄ™cej niż jeden plik.Nie masz uprawnieÅ„ do odczytu plików kodu źródÅ‚owego z lokalizacji okreÅ›lonej we wÅ‚aÅ›ciwoÅ›ciach pliku.Aby zmiany zostaÅ‚y zastosowane, należy ponownie uruchomić Poedit.ImiÄ™ i nazwiskoJeÅ›li nie zapiszesz swoich zmian, zostanÄ… one utracone.Twoje imiÄ™ i nazwisko oraz adres e-mail użyte zostanÄ… wyłącznie w celu ustawienia nagłówka Last-Translator w plikach GNU gettext.ZeroZoomWymaga pracynie usuwaj plików tymczasowych (dla debugowania)np. nplurals=2; plural=(n > 1);błąd: wskaż rozmyte dopasowania w ramach plikuprzejdź do elementu w wierszu o podanym numerzewłącz obsÅ‚ugÄ™ protokoÅ‚u poedit://Alt+Ctrl+StrzaÅ‚ka w dółEnterLewoPrawoShift+StrzaÅ‚ka w górÄ™altctrlshiftInformacje o %sUkryj %sUkryj pozostaÅ‚ePreferencje...Zamknij %sUsÅ‚ugiPokaż wszystkiewstÄ™pnie przetÅ‚umacz korzystajÄ…c z pamiÄ™ci tÅ‚umaczeniowejnieznany jÄ™zyknieobsÅ‚ugiwana wersja (%s)ostrzeżenie: twojmail@domena.com„%s" nie jest poprawnym plikiem POT.poedit-3.6.3/locales/et.mo0000644000175100001660000016330515011674363011076 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-©O ù‘’%’;’6N’…’•’µ’@Õ’8“eO“ µ“ “ Г*Ý“ ” ” ”)”0” 9”C”J”S”\”o”‚”‘”—” ”µ” ʔՔ𔠕•• •*•<•N•R• V• `• j•v•~• …•‘• •°• À•͕앖 –– $– .–;–T– m– w–– ‰–—–³–Ï–å–û–—#—*—.—B—W— v——Š—™—Ÿ—¦—«—»—Ê— Ú—ç—ù— ˜"˜1˜ A˜N˜`˜x˜ ”˜ ˜º˜͘ç˜ú˜ ™2™%O™ u™‚™ ™¾™Ç™ Ï™:ð™.+š,Zš*‡š²š ¹š_Ú#›S2›R†›&Ù›œ œ“œ¨œ±œ&Áœ'èœ*';cwˆ™¯ Ë×5ð%&žLžbž{ž‘ž ¦ž°žžÑžãžöžüžŸŸ#ŸCŸ!]Ÿ Ÿ ŠŸ–Ÿ¯Ÿ ÀŸΟ.韠k!  • § » Í æ 9¡6@¡#w¡›¡£¡²¡Ò¡è¡´ø¡­¢µ¢΢碣 £#£+£A£T£j£z££4£Ò£ ì£(ø£`!¤:‚¤3½¤ ñ¤ ÿ¤ ¥9 ¥Z¥"k¥4Ž¥ Ã¥ 䥦 ¦#¦)¦<¦S¦h¦}¦¦¡¦ ª¦·¦¿¦VÕ¦,§I§Xf§¿§Õ§ð§¨¨¨!¨>¨X¨j¨z¨¨¡¨2³¨æ¨ÿ¨0©AH©_Š©ê© ª,ª*=ª3hª*œª'Ǫïªôª«!«dA«¦««« º«Ç«Ù«ó« ¬¬ (¬ 5¬ B¬ O¬ ]¬k¬¬‰¬ ž¬ª¬ ²¬¾¬¬Ò¬â¬#ó¬­—­¡²­ŽT® ã®í®¯¯/¯B¯Z¯%r¯˜¯ °¯»¯ѯ𯰰 $° 0°>° G°R°f°o°#„°¨°İ à°ë°û°±+±(>±g±v±‰±"¢±ű:ʱ ²6²G²Œ[²$è² ³"³%5³[³n³}³†³  ³ª³óɳà³ ÷³ ´´È%´î´ò´ µµ -µ:µWµmµƒµ†µ+˜µ>ĵ¶¶(0¶Y¶$o¶&”¶»¶Ö¶Ù¶ºÞ¶™·¶·É·Ø·ò·¸¸¸-¸ <¸J¸Y¸a¸h¸p¸t¸‰¸ž¸®¸}¿¸=¹C¹Y¹0_¹¹#£¹ǹVÚ¹K1º}º„ºJ™ºäºôºûº9» N»®X¼&½&.½ U½ c½ n½-y½#§½˽xݽuV¾g̾ 4¿ ?¿ M¿[¿&x¿Ÿ¿³¿Ç¿Û¿î¿ÀÀ.À 7ÀAÀ^ÀfÀ†À1ŽÀÀÀÒÀ ØÀãÀóÀ ÁÁ)Á DÁeÁyÁ*Á¸Á ¿Á ÍÁÛÁ êÁ1ôÁ &Â0ÂhB «Â ¹ÂÄÂÍÂÞÂïÂÿ ÃÃ,à @Ã;NÊà ™Ã ¥Ã°ÃÐÃãÃ!ôÃÄ&Ä ;Ä HÄUÄ \ÄgÄ xęĪĽÄÍÄäÄôÄÅÅ1ÅBÅSÅfÅ vÅ €Å ‹Å —ŢŽÅÕÅìÅ ÆÆ Æ8ÆOÆ^ÆrƌƫÆÄÆÞÆýÆÇ.ǼÇÖÇìÇûÇ ÈÈ6ÈKÈ dÈqÈEwȽÈÕÈèÈüÈÉ&ÉAÉ/_É É7™É ÑÉ ÛÉŠæÉ8qʉªÊ4ËCË]ËzËË&¨Ë+ÏËûË þË- Ì+7ÌcÌËuÌ!AÍ@cÍ1¤ÍÖͨ×Î3€Ï'´ÏPÜÏf-Ðg”ÐüÐÑ*Ñ1HÑkzÑQæÑ8Ò@RÒ?“Ò?ÓÒ#Ó7Ó…TÓÚÓùÓ!Ô9Ô"YÔ<|Ôz¹Ô/4ÕCdÕ3¨ÕVÜÕ‚3ÖF¶ÖdýÖTb×p·×³(Ø&ÜØrÙ\vÙWÓÙ+Ú 1Úõ=Ú3ÛJÛeÛ lÛ wÛƒÛÛ>­ÛJìÛ*7ÜbÜ}ܗܧÜ}¸Üs6Ý ªÝg¸Ý Þ%Þ9Þ&@Þ0gÞ˜Þ«Þ ÃÞ ÑÞÜÞãÞ ÷Þ ß1%ßWßnß…ßšß­ßÂß×ß íß÷ßà/àCà._àŽà¬àÈàæà(á+.á]Zá¸á ËáÕá éáõá ââ 5â?âUâlââ†â5ŽâÄâ Øâåâøâã>ã.Zãb‰ã;ìã (ä:2ä[mäÉä Îä Øä'åä å-å4åHåhå …å ‘åœå ¡å¯åµå »åÈå ÎåÙåÞåüå æ æ !æ /æ:æ CæNæ gæuæ æ˜æ§æ|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-05-11 10:16 Last-Translator: Language-Team: Estonian Language: et_EE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: et X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (muudetud) (salvestamata)%d koodi esinemine%d koodi esinemist%d kirje%d kirjet%d sissekanne eeltõlgiti.%d sissekannet eeltõlgiti.%d viga%d vigaEsines %d viga.Esines %d viga.Esines %d viga:Esines %d viga:%d probleem leiti lähtekoodis.%d probleemi leiti lähtekoodis.Tõlkest leiti %d probleem.Tõlkest leiti %d probleemi.%i rida failis "%s" mis ei ole laetud korrektselt.%i rida failis "%s" mis ei ole laetud korrektselt.%s formaadis%s Eelistused%s formaadis%s tõlge imporditi.%s tõlget imporditi.&Programmist&Poeditist&RakendaTagasiKatkestaTühjendaSu&lge&KopeeriK&ustuta&Valmis, järgmine&Valmis, järgmine&Redigeerimine&Fail&Otsi…& GNU gettext juhend& GNU gettext juhend&Liikumine&Rühmita konteksti järgi&Rühmita konteksti järgiA&bi&Uus&Uus…&Järgmine >&Järgmine tõlge&Järgmine tõlge&Nr&OK&Veebiabi&Veebiabi&Avamine...&Ava…&Aseta&Eelistused&Eelistused…&Eelmine tõlge&Eelmine tõlge&Omadused…&Puhasta kustutatud tõlgetest&Puhasta kustutatud tõlkedLõpeta&Tee uuestiA&senda&SalvestaSalvesta kui&Näita koodi esinemised&Näita koodi esinemised&Ava aken&Ava aken&Tõlge&Võta tagasiTõlkimata tekstid &eespool&Tõlkimata tekstid eespool&Uuenda lähtekoodist&Uuenda lähtekoodist&Kontrolli tõlkeid&Kontrolli tõlkeid&VaadeJah(Kasuta vaikekeelt)(pole sisse loginud)(nõuab Windows 8 või uuemat)< &EelmineProgrammist %sKontoKontodLisaLisa kommentaarLisa failid…Lisa kaustad…Lisa projektLisa metamärk…Lisa kommentaarLisa kataloog nimistusseLisa failid…Lisa kaustad…Lisa projektLisa metamärk…Täiendavad märksõnadTäiendavad xgettext lipud:LisavalikudEkstraktori lisaseaded…Ekstraktori seadedEkstraktori lisaseaded…Kõik tõlkefailidKõik kommentaaridKõik stringidKasuta toetatud keelte jaoks vaikimisi klaviatuuriFookus on alati tekstisisestusväljalEsines viga.Liige sisendfailide nimistus:Liige võtmesõnade nimistus:VälimusRakendaLigikaudsed vasted tõlkemälustOled sa kindel, et soovid kustutada ekstraktorit “%sâ€?Oled sa kindel, et soovid tõlkemälu nullida?Kontrolli automaatselt uuendusi automaatseltSalvestamisel luuakse automaatselt MO failTagasiBaasrada:Beetaversioonides on uuemad funktsioonid ja täiendused, aga nad ei pruugi olla nii stabiilsed.Too kõik etteKatkenud PO-fail: mitmuse vorm msgstr, mida kasutatakse ilma mitmuseta msgid_pluralKatkine PO-fail: ainsuse vorm msgstr, mida kasutatakse koos mitmusega msgid_pluralKatkestatud märgistus tõlkestringis.LehitseSirvi faileVaikimisi kaasatakse ka ebatäpsed tulemused, kuid need märgitakse kui tööd vajavateks. Märkige see valik, et lisada ainult täiuslikud vasted.KatkestaTühistamine…Pole võimalik luua ajutist kataloogi.Programmi pole võimalik käivitada: %sTundmatust keelest ei saa eeltõlget teha.Ei saa eeltõlkida ilma lähtetekstita.Suure algus tähega&Kataloogihaldur&KataloogihaldurKataloogide haldamineMuuda kasutajaliidese keeltMärgistik:Kontrolli dokumenti koheKontrolli grammatikat koos õigekirja kontrollimisegaKontrolli õigekirja kirjutamise ajalUuenduste kontroll…Tõlkest vigade otsimineUuenduste kontroll…Kontrolli õigekirjaTühjendaTühjenda menüüEemalda tõlgeTühjenda menüüTõlke eemaldamineSulgePilvKoodi esinemisedKoodi esinemisedTee teistega veebis koostööd.Lähtefailide kogumine…Käsk tõlgete välja valimiseks:KommentaarKommentaar:Kommentaarid eesliitega:Kompileeri MO…Kompileeri…Kompileeritud tõlkefailidSeadista lähtekoodi ekstraktimist omadustest.KinnitusÜhenda Poedit toetatud pilve tõlkimise platvormidega, et sujuvalt sünkroonida neil hallatavaid tõlkeid.KopeeriKopeeri ainsusestKopeeri lähtetekstKopeeri ainsusestLähteteksti kopeerimineParanda õigekirja automaatseltLocalazy projekti üksikasade allalaadimine ebaõnnestus.Ei saadud laadida faili, see on tõenäoliselt vigane.Faili %s pole võimalik salvestada.Loo uusLoo uus tõlgeLoo POT-mallist uus tõlkefail.Loo uus tõlkeprojektCrowdini tõrgeCrowdin on veebipõhine tõlgete haldamise platform ja kollektiivse tõlkimise tööriist. Kasutame ka ise Crowdinit, et tõlkida Poedit paljudesse keeltese ning me armastame seda.Lõik&aKohandatud Ekstraktorid:Kohandatud ekstraktorid:Kohanda tööriistariba…LõikaAndmebaasi suurus kettal:KustutaKustuta tõlkemälustKustuta ekstraktorKustuta tõlkemälustKustuta projektKustuta kommentaarKustuta projektProjekti kustutamine ei kustuta ühtegi tõlkefaili.Erinevuste tuvastamine…Kataloogid:Kas soovite projekti “%s†kustutada?Kas soovite faili kettalt uuesti laadida? Teie salvestamata muudatused Poeditis lähevad kaotsi.Kas soovite eemaldada kõik lähtetekstiga seotud tõlked?Kas tahad eemaldada tõlked, mida enam ei kasutata?Ära salvestaÄra salvestaÄra näita uuestiÄra märgi täpseid vasteid tööd vajavateks tõlgeteksÄra kuva uuestiViimaste tõlgete allalaadimine…Tõlgete allalaadimine on selles projektis keelatud.Lohista kaustad või failid siiaLohista kaustad või failid siia&VäljuE&kspordi HTML-ina…MuudaMuuda &kommentaariRedigeeri ko&mmentaariKommentaari muutmineKommentaari muutmineProjekti muutmineProjekti muutmineMuutmineRedigeeri…E-post:Aktiveeri täisekraanNii nagu mitmuse vormi päises öeldud, loetakse selles failis mitmuse vorme erinevaltVigadega sissekanded eespoolVigadega sissekanded eespoolVigadega tekstid märgiti loendis punasega. Vea üksikasju kuvatakse teksti märkimisel.Tõrge faili avamiselTõrge faili salvestamiselXLIFF faili laadimise viga: %sViga: VeadKõikTäpsed vasted tõlkemälustVälja jäetud kaustateedEkspordi TMX-i…Ekspordi kui…Ekspordi HTML-ina…Ekspordi TMX-i…Ekspordi HTML-ina“%s†tõlkemälusse eksportimine ebaõnnestus.Tõlgete eksportimine…Ekstrakti lähtekoodistVõta märkmed tõlkijatele selle sildi järelt:Teksti otsitakse järgnevates kataloogides asuvast lähtekoodist:Tõlgitavate tekstide eraldamine failist %s…Tõlgitavate tekstide eraldamine failidest %s…Ekstraktori seadistamineEkstraktoridPoediti protsessiga suhtlemine ebaõnnestus.Stringi lisamine lähtekoodi ebaõnnestus.Eemaldatud tõlgetega faili ei õnnestunud laadida.Viga teksti ühildumisel antud kataloogis.Tõlkemälu uuendamine ebaõnnestus: %sFailFaili ei saa avadaFaili "%s" pole olemas.Fail “%s†ei ole tõlke fail.Fail "%s" on kirjutuskaitstud ja seda ei uudetud salvestada. Palun salvesta fail mõne teise nimega.LeiaLeia järgmineLeia eelmineOtsi ja asenda…Otsitakse kommentaaridestOtsi lähtetekstidestOtsi tõlgetestLeia järgmineLeia eelmineParanda keelParanda keelParanda päisParanda päisFlutteri tõlkefailid%i vormVorm %i (kasutamata)GNU gettextÜldineHTML-failidAbiPeida külgribaPeida olekuribaPeida see teatisKuidas pilvega sünkimine töötab?IDKui sa jätkad puhastamisega, eemaldatakse kõik kustutatuks märgitud tõlked lõplikult. Kui need kunagi uuesti lisatakse, pead need uuesti tõlkima.Kui sa ei andnud eelnevalt ligipääsu oma failidele, siis saad selle sisse lülitada kohast System Preferences > Security & Privacy > Privacy > Files & Folders.Kui keelasite varem juurdepääsu oma failidele, saate selle lubada menüüs Süsteemi sätted > Privaatsus ja turvalisus > Failid ja kaustad.IgnoreeriIgnoreeri tähesuurustImpordi TMX-ist…Impordi tõlkefailid…Impordi TMX-ist…Impordi tõlkefailid…Importimine “%sâ€â€¦Tõlkemälu importimine ebaõnnestus.Tõlgete importimine…Failis: %sKaasa beetaversioonidVastuoluline suur/väike tähtEbajärjekindel tühikInfo tõlkija kohtaPaigaldaVigane failKäivitamine:ProbleemProbleemidJSON-i tõlkefailidSäilitaKeele nimi või koodTõlke keel on sama kui lähtekeel.Tõlke keel on määramata.Keel, millesse tõlgitakse:KeelevalikKeele meeskond:Keel:Viimati muudetudVaata lisainfot Gettexti märksõnade kohtaMitmuse vormide kohta lähemalt uurimineUuri lähemaltLisateave %s kohtaLisateave Crowdini kohtaVaata insainfot GNU gettexti kohtaRidaRida %d failis "%s" on vigane (ei ole kehtivad %s andmed).Realõpud:Laiendite nimistu, eraldaja semikoolon (nt *.cpp;*.h):Lae inglise keelestLocalazy on kõrgelt automatiseeritud lokaliseerimisplatvorm, mis võimaldab kõigil oma tooteid ja sisu hõlpsalt mitmesse keelde tõlkida.MO faile ei saa otse Poeditis muuta.Tee väiketähtedeksTee suurtähtedeksTehke sellest POT failist uus tõlge.Vigane päis: "%s"Halda kontosidHalda…Erinevuste ühendamine…MinimeeriTõlgitava projekti nimiNimi:Järgmine &lõpetamataJärgmine &lõpetamataVajab töödVajab töödVõrguviga: %s (%d)Ära luba tekstinimekirjal fookust haarata. Kui sisse lülitatud, pead kasutama klaviatuuriga navigeerimiseks Ctrl-nooli, kuid teksti võib sisestada ka vahetult, ilma Tab-klahviga fookust vahetamata.UusUus & POT/PO-failist…Uus stringUus & POT/PO-failist…Uued tekstidUus tõlkimist vajav string:Järgmine mitmusevormJärgmine mitmusevormEiVasteid ei leitudÜhtegi sissekannet ei saanud eel-tõlkida.Failis pole teavet selle stringi esinemise kohta lähtekoodis.Vasteid ei leitudTõlgetest ei leitud vigu.Teie kontol pole ühtegi tõlkeprojekti.Kasutamise infot poleKõik mitmuse vormid pole tõlgitud.Pole lubatud, palun logi uuesti sisse.Märkused tõlkijate jaoksOKÜksVali see ainult siis, kui usaldad oma tõlkemälu kvaliteeti. Kõigile tõlkemälust võetud tõlkevastetele lisatakse märge 'Vajab tööd' ning need peaks enne kasutamist üle vaatama.Täida ainult täpsed vastedAva pilvetõlge…Ava hiljutisedAva ja muuda tõlkefaile.Ava pilvetõlgeAva pilvetõlge…Ava failAva redaktorisAva redaktorisAva hiljutineAva viite fail&Ava...Ava…ValikudMuuEel&mine lõpetamataEel&mine lõpetamataPO tõlkefailidPOT tõlkemallidPOT failid on ainult mallid ja neis endis pole mingeid tõlkeid. Tõlke tegemiseks loo palun selle malli põhjal uus PO fail.AsetaAseta ja sobita stiilRajadVärskendab lähtekoodist kõiki projekti faile.Õigused puuduvad.Tõlkes puudub kohatäide „%sâ€.Kohatäite õigsusPalun ava hoopis vastav PO fail. Kui sa selle salvestad, siis uuendatakse ka MO faili.Palun salvesta esmalt fail. Seda sektsiooni ei saa enne salvestamist muuta.MitmusMitmuse vorm tõlkesMitmuse vormide avaldis, mida fail kasutab, on faili %s jaoks ebatavaline.Mitmuse vormid:PoeditPoedit - KataloogihaldurPoedit parandas automaatselt vigase sisu failis “%sâ€.Poedit võib proovida täita uusi sissekandeid ainult eelmistest tõlgetest failis või kogu sinu tõlkemälust. Tõlkemälu kasutamine pole väga tõhus, kui see on veel peaaegu tühi, aga kui sa lisad sinna jooksvalt tõlkeid, siis see muutub ajaga üha paremaks.Poedit ei saa lähtekoodi näidata seal, kus stringi kasutatakse, kuna fail pole kas viidatud asukohas saadaval või on see sümboolne viide, mis ei osuta tegelikule failile.Poedit on lihtne tõlkimise abivahend.Poedit ei saanud faili “%s†avada.Eel-tõlge…Eel-tõlgeEel-tõlgeEeltõlgitud %u tekstEeltõlgitud %u tekstidEeltõlke tegemine tõlkemälust…Eel-tõlkimine…Eeltõlge leiab teksti jaoks täpsed või tööd vajavad tõlkevasted tõlkemälust üles ning täidab tõlgete lahtrid.Eeltõlke jaoks on vaja lähteteksti olemasolu. See ei tööta, kui kasutatakse ainult ID-sid ilma tegeliku tekstita.Eeltõlge eeldab, et lähteteksti keel on teada. Poedit ei suutnud selles failis lähtekeelt tuvastada.EelistusedEelistused...Eelistused…Tekstide ettevalmistamine…Säilite olemasolevate failide vormingEelmine mitmusevormEelmine mitmusevormEelmine lähtetekstVarem redigeeritudVarem redigeeritudProjekti nimi ja versioon:Projekti nimetus:Projekt:ProjektidKirjavahemärkide kontrollidPuhastaKustutatud tõlgete puhastamineLõpetaFaili sisu lugemine katkes jrgmise vea tõttu: %sHiljutised failidKordaVärskendaLae fail uuestiLaadi fail uuestiJäänud: %dEemaldaEemaldage samad kui tõlke allikas olevadEemaldage allikaga samad tõlkedEemaldatud stringidEemaldatud stringidEemaldatud string (enam ei ole kasutuses):Asenda&Asenda kõik&Asenda kõikAsenda sellegaAsenda…Vajalik päis Plural-Forms (mitmusvormid) puudub.LähtestaNulli tõlkemäluTõlkemälu nullimine kustutab sellest pöördumatult kõik tõlked. Seda tegevust ei saa tagasi võtta.Leia FinderisVaata üleSalvestaSalvesta &kui…Salvesta &kui…Salvesta ikkagiSalvesta ikkagiSalvesta kuiSalvesta kui…Salvesta muudatusedSalvesta failXCLOC failid ei toeta erinevatesse kohtadesse salvestamist.Ekraanipildid:V&ali kõikVali kõikValige importimiseks TMX-failidKataloogi valimineVali tõlke failVali tõlkefailid, mida importidaVali tõlkemallVali enda meeliskeelMäära keelMäära keelSeadedSätted…Näita külgribaNäita õigekirja ja grammatikatNäita olekuribaNäita teksti ID-dNäita asendusiNäita tööriistaribaNäita hoiatusiNäita ExplorerisNäita kaustasNäita või peida külgribaNäita külgribaNäita olekuribaNäita teksti ID-dNäita hoiatusiKülgribaLogi sisseLogi VäljaLogi sisseLogige sisse rakendusse %sLogi pilvekontole sisseLogi Crowdinisse sisseLogi pilvekontole sisseLogi väljaAinsusNutikas kopeerimine ja asetamineNutikad mõttekriipsudNutikad lingidNutikad jutumärkidSortimine &failide järgiSortimine &lähteteksti järgiSortimine &tõlke järgiSortimine &failide järgiSortimine &lähteteksti järgiSortimine &tõlke järgiLähtekoodi märgistik:Lähtekoodi ekstraktoreid kasutatakse tõlgitavate tekstide leidmiseks lähtekoodist ning nende väljavalimiseks nii, et neid saaks tõlkida.Lähtekood pole saadaval.Lähtekoodi ei leitudOriginaaltekstLähteteksti IDLähtetekst — %sLähtekoodi märksõnadLähtekoodi asukohadLähtekoodi võtmesõnadOtsingurajadKõneÕigekirjakontroll on keelatud, kuna %s sõnastikku pole paigaldatud.Õigekiri ja grammatikaAlusta rääkimistLõpeta rääkimineSalvestatud tõlked:Stringi kontekst: %sStringi identifikaator: %sStringi pikkus tähemärkidesStringi pikkus tähemärkides: tõlge | allikasOtsisõnaSrringidel põhinevad Corwdini projektid pole toetatud.AsendusedSoovitusedSoovitused pole saadaval, kui tõlkekeel pole õigesti seadistatud. See võib mõjutada ka teisi funktsioone nagu näiteks mitmuse vormid.Üleliigne kohatäide „%sâ€, mida lähtetekstis pole.Toetab kõiki programmeerimiskeeli, mida GNU gettext tööriistad ära tunnevad (PHP, C/C++, C#, Perl, Python, Java, JavaScript ja muud).SünkroonimineSünkroonimine CrowdinigaSünkrooni tõlge CrowdinigaSünkroniseerimineSünkrooniseerimise tõrgeCrowdiniga sünkronimine ebaõnnestus.Süntaksi viga Plural-Forms päises ("%s").TMTMX-failidTõlgitavad failid olemasolevast POT failist.Meeskonna nimi ja e-posti aadress või linkTeksti asendamineSelles tõlkemälus pole ühtegi tõlkevastet, mis oleks selle faili sisuga sarnane. See on poolautomaatseks tõlkimiseks tõhus pärast seda kui Poedit õpib failidest, mida oled ise käsitsi tõlkinud.TMX fail on vigaselt vormindatud.Teise rakenduse tehtud muudatused lähevad salvestamisel kaduma.Faili ei saa kasutada ja MO failiks kompileerida.Selles failis oli topelt sissekanne, mis pole PO failides lubatud ning see takistab selle faili kasutamist. Poedit parandas selle probleemi, aga sa peaksid vaatama üle tõlked, mille juures on märge, et 'Vajab tööd' ning vajaduse korral neid parandama.Kataloogi polnud võimalik salvestada märgistikus "%s", nagu oli märgitud kataloogi seadetes. See salvestati hoopis UTF-8 märgistikus ja muudeti ka vastavat sätet.Faili on muudetud. Kas soovid muudatusi salvestada?Fail on formaadis mida Poedit ei toeta.Fail kompileeriti MO vormingusse, aga tõenäoliselt see ei tööta korrektselt.Fail salvestati ja kompileeriti MO vormingusse, aga tõenäoliselt see vorming ei tööta korrektselt.Fail salvestati edukalt, kuid seda polnud võimalik kompileerida MO vormingusse ning kasutusele võtta.Fail on salvestatud.Faili "%s" ei saa avada.Faili "%s" ei saa salvestada.Faili “%s†on teise rakenduse poolt muudetud.Vana lähtekood (enne, kui seda uuendamise käigus värskendati), millele nüüdseks aegunud tõlge vastab.Lihtsaim viis selle faili täitmiseks tõlgetega on selle uuendamine POT failist:Tõlge ei alga tühikuga.Tõlge lõpeb uue rea märgiga, aga lähtekeeles seda seal pole.Tõlge lõpeb tühikuga, aga lähteteksti lõpus tühikut pole.Tõlke lõpus on “%sâ€, aga lähteteksti lõpus on “%sâ€.Tõlke lõpus puudub uue rea märk.Tõlke lõpus puudub tühik.Tõlge on kasutamiseks valmis, kuid %d kirjet pole veel tõlgitud.Tõlge on kasutamiseks valmis, kuid %d kirjet pole veel tõlgitud.Tõlge on kasutamiseks valmis.Tõlke peab lõppema "%s"-ga.Tõlke ei peaks lõppema "%s"-ga.Tõlge peaks algama nagu lause.Tõlge peaks algama väiketähega.Tõlge algab tühikuga, aga lähtekeeles seal tühikut pole.Tõlgetele lisati märge 'Vajab tööd', kuna need võivad olla ebatäpsed. Need vajavad inimese poolt üle kontrollimist.Ühtegi tõlget pole. See on küll ebatavaline.Faili kauni vormindusega tekkis viga (kuid see salvestati edukalt).Tõlgete Localazysse üleslaadimisel tekkis tõrge.Mõned vead tekkisid kausta laadimisel. Mõned andmed on puudu või vigase tulemusega.Need seaded mõjutavad PO failide vormingut. Muuda neid, kui sul on mingid spetsiifilised nõuded nagu näiteks versioonikontroll.See JSON-i fail ei ole tõlkefail ja seda ei saa redideerida Poeditis.See toiming kustutab kõik tõlked, mis vastavad täpselt lähtetekstile. Seda ei saa tagasi võtta.Kataloogis on tekste mitmusvormidega, kuid sel pole Plural-Forms päist seadistatud.See fail kasutab lähteteksti asemel stringi ID-sid. Poedit saab laadida ingliskeelseid tekste failist „%sâ€.Seda käsku kasutatakse parseri käivitamiseks. %o asendatakse väljundfaili nimega, %K võtmesõnade loeteluga, %F sisendfailide loeteluga, %C märgistiku lipuga (vaata allpool).See tekst leiti Poediti tõlkemälust.See lisatakse käsureale ainult siis, kui on toodud algteksti märgistik. %c asendatakse märgistiku väärtusega.See lisatakse käsureale üks kord iga sisendfaili kohta. %f asendatakse sisendfaili nimega.See lisatakse käsureale üks kord iga võtmesõna kohta. %k asendatakse võtmesõnaga.KokkuTeisendusedTõlgitavaid sissekandeid ei lisata käsitsi Gettext süsteemi, vaid need ekstraktitakse automaatselt lähtekoodist. Sellisel moel püsivad need ajakohaste ja täpsetena. Tõlkijad kasutavad tavaliselt arendaja poolt valmistatud PO faile (POTs).Tõlgi projekti pilvesTõlgitud: %d / %d (%d %%)TõlgeTõlkekeelTõlkemäluTõlge vajab veel &töödTõlke omadusedTõlkefail on juba uuendatud, muutuseid tõlkes ei ole tehtud.Tõlkefailis on uuendatud %s tõlge.Tõlkefailis on uuendatud %s tõlget.Tõlkemälu on kahjustada saanud: %s (%d).Tõlkemälu viga: %s (%d).Tõlge vajab veel &töödTõlke omadusedTõlkesoovitusedTõlkesoovitused eeldavad, et lähtetekst on saadaval. Need ei tööta, kui kasutatakse ainult ID-sid ilma tegeliku tekstita.Tõlkesoovitused nõuavad, et lähteteksti keel oleks teada. Poedit ei suutnud selles failis lähtekeelt tuvastada.Tõlge — %sTõlked ei saanud värskendada lähtekoodist, sest faili omadustes määratud kaustast ei leitud koodi.KaksUTF-8 (soovituslik)TaastaXCLOC failis puudub ootuspärane sisu.Erand, millega ei osatud midagi peale hakata: %sUnix (soovituslik)Tundmatu Crowdini viga.Tundmatu vigaTõlkimataUuendaViimased muudatusedUuenda kõikUuenda kõiki projekti kataloogeKas värskendada selle projekti kõiki katalooge?Uuenda &POT failist…Uuenda &POT failist…Uuenda lähtekoodistUuenda POT failistUuenda lähtekoodistUuenda lähtekoodistUuendamise kokkuvõteUuendusedUuendamine ebaõnnestusProjekti kataloogide uuendamineTõlgete uuendamineKasutaja info uuendamine…Tõlgete üleslaadimine kohta %s ebaõnnestus.Tõlgete üleslaadimine %s…Tõlgete üles laadimine…Kasuta kohandatud väljendeidKasuta kohandatud loend fonti:Kasuta kohandatud teksti väljade fonti:Kasuta selle keele jaoks vaikimisi reegleidKasuta neid võtmesõnu (funktsioonide nimesid) leidmaks lähtekoodist tõlgitavaid sõnesid:Kasuta tõlkemäluKontrolliKontrolli tulemusedVersioon %sVaata üksikasju…Vaata üksikasju…Autentimise ootamine…Hoiatus: Tere tulemast PoeditiAllikatest uuendamiselAinult terved sõnadAkenWindowsKas soovid lähteteksti jaoks kasutada inglise keelt?Alusta otsast pealeReamurdmine:XLIFF tõlkefailidXcode lokaliseerimise kataloogJahTõlgitavaid stringe saab ka otse lähtekoodist välja otsida:Poedit aknasse saab lohistada vaid ühe faili.Sul pole õiguseid lähtekoodi failide lugemiseks kataloogi omadustes määratud failide asukohas.Selle muudatuse jõustumiseks peab Poedit-i taaskäivitama.Sinu nimiTehtud muudatused lähevad kaotsi, kui neid ei salvestata.Sinu nime ja e-posti kasutatakse ainult viimase tõlkija kohal GNU gettext failide päises.NullSuurendusVajab töödajutisi faile ei kustutata (silumiseks)nt. nplurals=2; plural=(n > 1);vigu: hägus vaste failismine antud real olevale kirjelepoedit:// URL-i käsitlemineMuuteklahv+Juhtklahv+AllaSisestusklahvVasakParemTõstuklahv+Ülesmuuteklahvctrltõstuklahv ehk registriklahvProgrammist %sPeida %sPeida teisedEelistused...Lõpeta %sTeenusedKuva kõikeel-tõlge tõlkemälusttundmatu keeltoetamata versioon (%s)hoiatusi: sina@n2ide.com'%s' pole korrektne POT fail.poedit-3.6.3/locales/fr.mo0000644000175100001660000017747215011674363011107 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-¦O ö‘’,’B’GY’¡’2¶’6é’w “S˜“ì“ |”†” š”E¤” ê”õ” •••$•-•5• =•H•`• x•‚•‹•𕱕 ȕҕè•þ•– – –$–9–N–S–W–f– u– €–‹–“–¢–´–Í–æ–#÷–#—?— H— S— ^—k—!}—!Ÿ—Á—Ù— ñ—ý—"˜")˜#L˜#p˜”˜­˜ Ƙј Õ˜ö˜&™-™ <™G™W™^™f™n™…™™µ™$Ç™ì™"š&š>šVš$hšš#©šÍš$Öš!ûš$›B›b›x›PŒ›+Ý› œ4"œ*Wœ ‚œ Œœ'–œ?¾œ?þœ,>?k«²{Ä@žI\žY¦ž1Ÿ 2Ÿ<Ÿ¯SŸ   / +I 7u .­ Ü ð  ¡%¡"@¡c¡ y¡'š¡)¡ì¡( ¢5¢U¢o¢w¢‡¢¢­¢âÊ¢Тé¢.£ 1£(R£ {£‡£'–£¾£У ߣ?¤ @¤œM¤ê¤ñ¤"¥(¥<¥(\¥<…¥@Â¥)¦-¦4¦<S¦&¦·¦ÎƦ•§œ§¹§$Ö§û§-¨ 0¨&:¨a¨&z¨¡¨µ¨ΨCâ¨"&©I©-Y©…‡©P ªJ^ª©ª¼ªϪ<ફ..«C]«(¡«(Ê«ó«ü«¬!¬:¬S¬k¬ƒ¬–¬ ©¬ ¶¬¬ˬ{ç¬ c­ „­€¥­ &®$G®0l® ®¨®°® µ®Ö®å®¯¯,¯G¯Hb¯«¯ʯ5æ¯-°mJ°¸° ×°4ã°2±?K±+‹±;·±ó± û±%²;B²y~²ø²³³.³ I³!j³Œ³©³¿³Ù³ì³ÿ³´)´H´Q´ l´ x´ ‚´´•´±´"Ì´5ï´%µÁ(µÁêµ®¬¶[·c·t·&‘·¸·&Ë· ò·6¸J¸ i¸t¸ ¸°¸ø â¸ì¸ÿ¸ ¹ ¹¹ 9¹C¹:\¹-—¹Źß¹ô¹ ºº))º(Sº|º‹º¡º¼ºÛºKáº-»J=»ˆ»£œ»G@¼ˆ¼¼:²¼#í¼½ $½.½N½W½s½y½Œ½ Ÿ½ «½·½ѽÚ¾+⾿+!¿M¿!`¿‚¿›¿´¿¸¿,׿lÀqÀ+À4¼À"ñÀ3Á2HÁ{Á–Á™ÁÅœÁ.bÂ%‘·Â.ÊÂ"ùÂ%ÃBÃTÃmÃ„à ”à µÃ ¿ÃÉÃÑÃ×ÃîÃÄÄ:ÄØÄ%ßÄÅS ÅaÅ<vÅ ³ÅƒÔÅ[XÆ´Æ!¼ÆKÞÆ*Ç>Ç$EÇNjÇ(¹ÇìâÈ8ÏÉ1Ê:ÊLÊ \Ê3iÊ3ÊÑÊ“äÊxËzÌ ƒÌ‘̢̳Ì.ÐÌÿÌÍ9ÍRÍj͂ͯ͞͸ÍÀÍÞÍ$çÍ ÎJÎ_ÎqÎ y΄ΙΠ®Î»Î/ÃÎ/óÎ#Ï6Ï&IÏ pÏzÏŠÏšÏ ²Ï.¿ÏîÏ(ýÏ&ÐÄÐÜÐ åÐñÐÑÑ3ÑKÑ\ÑpÑŽÑ\¥ÑÒÒ+Ò*>ÒiÒ&€Ò4§Ò&ÜÒ*Ó.ÓAÓ TÓ`ÓoÓ&ŒÓ³ÓÏÓîÓ Ô$Ô@Ô^Ô'wÔŸÔ¼ÔØÔ÷ÔÕ $Õ1Õ AÕNÕaÕ€Õ›ÕºÕ ÊÕÔÕîÕÖÖ-Ö@ÖRÖhÖ{ÖÖ$£Ö•ÈÖ^×zגס״×Ê×Ý×ñרØe؅؞زØÅØÝØöØ%Ù<8ÙuÙV‹Ù âÙ ðÙÄüÙIÁÚ… Û ‘ÛžÛ'¸ÛàÛðÛ* Ü95ÜoÜ rÜ=Ü+½ÜéÜÒÿÜÒÝZñÝELÞ9’ÞäÌßI±à5ûà`1á|’ánâ,~â0«â3ÜâAãxRã|Ëã-HäHväB¿äTå6Wå0Žåµ¿å,uæ/¢æ6Òæ1 ç?;ç@{ç¼ç5Jè_€èKàèu,é§¢é_Jê|ªêc'ë–‹ëá"ìHíŸMítííebîÈîÎî:Þîð2ð MðXðmð&„ð«ðdÆð†+ñI²ñ.üñ&+òRòmòœ‡ò…$óªó®¼ókôpô„ô4Œô-Áôïôõõ +õ7õFõaõ,uõ4¢õ(×õ(ö)öGödö$‚ö§ö ÂöÐö&êö÷3.÷1b÷%”÷#º÷&Þ÷$ø:*ø0eøs–ø" ù-ù5ù Qù\ùqù"†ù©ù»ù,Ñùþùúú:'úbújú‚úŸú¿ú`ÃúX$û}ûBýû @ü@Jüƒ‹üýý ýD*ý"oý ’ý#ý*Áýìýþ þþþþ"þ)þ.þ3þ7þ<þ@þ Pþ[þlþ }þˆþ ‘þŸþ¸þ Èþéþûþ- ÿ|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-05-13 10:16 Last-Translator: Language-Team: French Language: fr_FR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: fr X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (modifié) (non enregistré)%d occurrence du code%d occurrences du code%d entrée%d entrées%d entrée a été pré-traduite.%d entrées ont été pré-traduites.%d erreur%d erreurs%d erreur est survenue.%d erreurs sont survenues.%d erreur est survenue :%d erreurs sont survenues :%d problème avec les chaînes sources a été détecté.%d problèmes avec les chaînes sources ont été détectés.%d problème trouvé dans la traduction.%d problèmes trouvés dans la traduction.%i ligne du fichier « %s » n’a pas été chargée correctement.%i lignes du fichier « %s » n’ont pas été chargées correctement.Format %sPréférences de %sformat %s%s traduction a été importée.%s traductions ont été importées.&À propos&À propos de Poedit&AppliquerRetourAnnulerEffa&cer&Fermer&Copier&Supprimer&Appliquer et continuer&Appliquer et continuer&Édition&Fichier&Rechercher…Manuel de &GNU gettextManuel de &GNU gettext&Aller à&Grouper par contexte&Grouper par contexte&Aide&Nouveau&Nouveau…&Suivant >Traduction suiva&nteTraduction suiva&nte&Non&OK&Aide en ligne&Aide en ligne&Ouvrir...&Ouvrir…&Coller&Préférences&Préférences…Traduction &précédenteTraduction &précédente&Propriétés…&Purger les traductions supprimées&Purger les traductions supprimées&Quitter&Rétablir&Remplacer&Enregistrer&Enregistrer sous&Afficher les occurrences du code&Afficher les occurrences du code&Fenêtre de démarrage&Fenêtre de démarrage&TraductionAnn&ulerEntrées &non traduites en premierEntrées &non traduites en premier&Mise à jour depuis le code source&Mise à jour depuis le code source&Valider les traductions&Valider les traductions&AffichageOui(Utiliser la langue par défaut)(non connecté)(nécessite Windows 8 ou plus récent)< &PrécédentÀ propos de %sCompteComptesAjouterAjouter un commentaireAjouter des fichiers…Ajouter des dossiers…Ajouter un projetAjouter un caractère générique…Ajouter un commentaireAjouter un répertoire à la listeAjouter des fichiers…Ajouter des dossiers…Ajouter un projetAjouter un caractère générique…Mots clés supplémentairesIndicateurs additionnels xgettext :AvancésRéglages avancés d’extraction…Réglages avancés d’extractionRéglages avancés d’extraction…Tous les fichiers de traductionTous les commentairesToutes les chaînesUtilisez également des mots-clés par défaut pour les langues prises en chargeToujours activer la zone de saisie du texteUne erreur est survenue.Un élément de la liste des fichiers d’entrée :Un élément de la liste des mots clés :ApparenceAppliquerCorrespondances approximatives de la TMÊtes-vous sûr de vouloir supprimer l’extracteur « %s » ?Voulez-vous vraiment réinitialiser la mémoire de traduction ?Rechercher automatiquement les mises à jourCompiler automatiquement le fichier MO lors de l'enregistrementRetourChemin de base :Les versions bêta contiennent les dernières nouveautés et améliorations, mais elles peuvent être un peu moins stables.Tout passer au premier planFichier PO corrompu : forme plurielle msgstr utilisée sans msgid_pluralFichier PO corrompu : forme singulière msgstr utilisée conjointement avec msgid_pluralBalisage cassé dans la traduction de la chaîne.ParcourirParcourir les fichiersPar défaut, les résultats inexacts sont également inclus, mais marqués comme nécessitant du travail. Cochez cette option pour n'inclure que les correspondances parfaites.AnnulerAnnulation…Impossible de créer le répertoire temporaire.Impossible d’exécuter le programme : %sImpossible de pré-traduire depuis une langue inconnue.Impossible de pré-traduire sans texte source.Mettre en majusculeGestionnaire des &cataloguesGestion des &cataloguesGestionnaire de cataloguesChanger la langue de l’interfaceJeu de caractères :Vérifier le document maintenantVérifier la grammaire et l'orthographeVérifier l'orthographe lors de la frappeRechercher des mises à jour…Vérifier les erreurs dans la traductionRechercher des mises à jour…Vérifier l’orthographeEffacerEffacer le menuEffacer la traductionEffacer le menuEffacer la traductionFermerCloudOccurrences dans le codeOccurrences dans le codeCollaborer avec d‘autres personnes en ligne.Collecte des fichiers sources…Commande pour extraire des traductions :CommentaireCommentaire :Les commentaires sont précédés par :Compiler le MO…Compilation…Fichiers de traduction compilésConfigurer l’extraction du code source dans les Propriétés.ConfirmationConnecter Poedit avec les plateformes de localisation cloud prises en charge pour synchroniser de manière transparente les traductions qui y sont gérées.CopierCopier du singulierCopier à partir du texte originalCopier du singulierCopier depuis le texte originalCorriger l’orthographe automatiquementImpossible de télécharger les détails du projet Localazy.Échec du chargement du fichier, il est probablement endommagé.Impossible d’enregistrer le fichier %s.CréerCréer une nouvelle traductionCréer une nouvelle traduction à partir d’un modèle POT.Créer un nouveau projet de traductionErreur CrowdinCrowdin est une plateforme de gestion de traduction en ligne et un outil de traduction collaborative. Nous utilisons nous-mêmes Crowdin pour traduire Poedit dans de nombreuses langues, et nous l‘adorons.CouperExtracteurs personnalisés :Extracteurs personnalisés :Personnaliser la barre d‘outils…CouperTaille de la base de données sur le disque :SupprimerSupprimer de la mémoire de traductionSupprimer l’extracteurSupprimer de la mémoire de traductionSupprimer le projetSupprimer le commentaireSupprimer le projetLa suppression du projet ne supprimera aucun fichier de traduction.Détermination des différences…Répertoires :Voulez-vous supprimer le projet « %s » ?Voulez-vous recharger le fichier depuis le disque ? Vos modifications non enregistrées dans Poedit seront perdues si vous le faites.Voulez-vous retirer toutes les traductions qui sont identiques au texte source ?Voulez-vous supprimer toutes les traductions qui ne sont plus utilisées ?Ne pas enregistrerNe pas enregistrerNe plus afficherNe pas marquer les correspondances exactes comme à réviserNe plus afficherTéléchargement des dernières traductions...Le téléchargement des traductions est désactivé dans ce projet.Glisser ici les dossiers ou les fichiersGlisser ici les dossiers ou les fichiers&QuitterE&xporter au format HTML…ModifierModifier le &commentaireModifier le &commentaireModifier le commentaireModifier le commentaireModifier le projetModifier le projetModificationModifier…E-mail :Passer en mode plein écranLes entrées dans ce fichier ont un nombre de formes plurielles différent de celui indiqué dans l’en-tête Plural-FormsEntrées avec erreurs en premierEntrées avec erreurs en premierLes entrées comportant des erreurs ont été marquées en rouge dans la liste. Sélectionnez-les pour en afficher les détails.Erreur à l'ouverture du fichierErreur d’enregistrement du fichierErreur lors du chargement du fichier XLIFF : %sErreur : ErreursToutCorrespondances exactes de la TMChemins exclusExportation vers un TMX…Exporter en tant que…Exporter en HTML…Exportation vers un TMX…Exportation au format HTMLL’exportation de la mémoire de traduction vers « %s » a échoué.Exportation des traductions…Extraire depuis les sourcesExtrait les notes pour les traducteurs à partir de :Extraire le texte des répertoires suivants :Extraction des chaînes traduisibles du fichier %s…Extraction des chaînes traduisibles des fichiers %s…Installation de l’extracteurExtracteursÉchec de la communication avec le processus Poedit.Impossible d'extraire les chaînes du code source.Échec de chargement du fichier avec les traductions extraites.Échec de la fusion des catalogues gettext.Échec de la mise à jour de la mémoire de traduction : %sFichierImpossible d’ouvrir le fichierLe fichier « %s » n’existe pas.Le fichier « %s » n’est pas un fichier de traduction.Le fichier « %s » est en lecture seule et ne peut être enregistré. Veuillez l’enregistrer sous un nom différent.TrouverRechercher le suivantChercher le précédentRechercher et remplacer…Rechercher dans les commentairesTrouver dans les textes originauxTrouver dans les traductionsRechercher le suivantRechercher le précédentCorriger la langueCorriger la langueCorriger l'en-têteCorriger l’en-têteFichiers de traduction FlutterForme %iFormulaire %i (inutilisé)GNU gettextGénéralFichiers HTMLAideMasquer le panneau latéralMasquer la barre d’étatMasquer ce message de notificationComment fonctionne la synchronisation dans le cloud ?IDSi vous validez l’épuration, toutes les traductions marquées comme supprimées seront définitivement effacées. Il faudra les traduire à nouveau si elles sont réintroduites par la suite.Si précédemment vous avez refusé l‘accès à vos fichiers, vous pouvez l‘autoriser dans Préférences Système > Sécurité et confidentialité > Confidentialité > Fichiers et dossiers.Si précédemment vous avez refusé l‘accès à vos fichiers, vous pouvez l‘autoriser dans Préférences Système > Sécurité et confidentialité > Fichiers et dossiers.IgnorerIgnorer la casseImportation depuis un TMX…Importer les fichiers de traduction…Importer un TMX…Importer les fichiers de traduction…Importation depuis « %s »…L'importation de la mémoire de traduction a échoué.Importation des traductions…Dans : %sInclure les versions bêtaIncohérence majuscule/minusculeEspace incohérentInformations sur le traducteurInstallerFichier non valideAppel :ProblèmeProblèmesFichiers de traduction JSONConserverNom ou code de la langueLa langue de traduction est identique à la langue source.La langue de traduction n’est pas définie.Langue de la traduction :Sélection de langueÉquipe de langue :Langue :Dernière modificationEn savoir plus sur les mots clés gettextEn savoir plus sur les formes pluriellesEn savoir plusEn savoir plus sur %sEn savoir plus sur CrowdinEn savoir plus sur GNU gettextLigneLa ligne %d du fichier « %s » est corrompue (données %s non valides).Fins de ligne :Liste des extensions séparées par des points-virgules (ex. *.cpp;*.h) :Charger l‘anglaisLocalazy est une plateforme de localisation hautement automatisée permettant à quiconque de traduire facilement ses produits et son contenu en plusieurs langues.Les fichiers MO ne peuvent pas être directement modifiés dans Poedit.Mettre en minusculesMettre en majusculesFaire une nouvelle traduction à partir de ce fichier POT.En-tête mal formée : « %s »Gérer les comptesGérer…Intégration des changements…RéduireNom du projet de traductionNom :Incomplet suivan&tIncomplet suivan&tÀ réviserÀ réviserErreur réseau : %s (%d)Ne laisse jamais le focus à la liste des chaînes. Si activé, il vous faut utiliser les touches Ctrl+flèches pour une navigation au clavier, mais vous pouvez aussi taper du texte directement, sans avoir à utiliser la touche de tabulation pour changer le focus.NouveauNouveau à partir d’un fichier &POT/PO…Nouvelles chaînesNouveau à partir d’un fichier &POT/PO…Nouvelles chaînesNouvelles chaînes à traduire :Forme plurielle suivanteForme plurielle suivanteNonAucune correspondance trouvéeAucune entrée n’a pu être pré-traduite.Aucune information sur les occurrences de cette chaîne dans le code source n’est fournie dans le fichier.Aucune correspondance trouvéeAucun problème trouvé dans la traduction.Aucun projet de traduction listé dans votre compte.Aucune information d’utilisationToutes les formes plurielles ne sont pas traduites.Non autorisé, veuillez vous connecter à nouveau.Notes pour les traducteursOKUnÀ activer uniquement si vous êtes sûr de la qualité de votre MT. Par défaut, toutes les correspondances de la MT sont marquées comme à réviser et doivent être examinées avant utilisation.Remplir uniquement les correspondances exactesOuvrir la traduction dans le cloud…Récemment ouvertsOuvrir et modifier les fichiers de traduction.Ouvrir la traduction dans le cloudOuvrir la traduction dans le cloud…Ouvrir le fichierOuvrir dans l’ÉditeurOuvrir dans l'éditeurOuvrir récentsOuvrir le fichier de référenceOuvrir...Ouvrir…OptionsAutreIncomplet p&récédentIncomplet p&récédentFichiers de traduction POModèles de traduction POTLes fichiers POT ne sont que des modèles et ne contiennent pas de traductions. Pour faire une traduction, créez un nouveau fichier PO à partir du modèle.CollerColler en conservant la mise en formeCheminsEffectue une mise à jour à partir du code source sur tous les fichiers du projet.Permission refusée.Le texte indicatif « %s » est absent dans la traduction.Exactitude des textes indicatifsVeuillez ouvrir et modifier le fichier PO correspondant. Lorsque vous l‘enregistrerez, le fichier MO sera également mis à jour.Veuillez d’abord enregistrer le fichier. Cette section ne peut pas être modifiée avant.PlurielTraductions des formes pluriellesLes formes plurielles utilisées par le fichier sont inhabituelles pour %s.Formes plurielles :PoeditPoedit - Gestionnaire des cataloguesPoedit a automatiquement corrigé le contenu non valide du fichier « %s ».Poedit peut essayer de remplir les nouvelles entrées uniquement depuis les précédentes traductions de ce fichier ou depuis votre mémoire de traduction. Pour que la MT soit performante, il faut qu’elle contienne le plus possible de traductions, car à moitié vide elle ne sera pas efficace.Poedit ne peut pas afficher le code source où la chaîne est utilisée, parce que le fichier n'est soit pas disponible dans l'emplacement référencé, soit il s'agit d'une référence symbolique qui ne pointe pas vers un vrai fichier.Poedit est un logiciel de traduction simple à utiliser.Poedit n’a pas pu ouvrir le fichier « %s ».Pré-&traduire…Pré-traductionPré-traduit%u chaîne pré-traduite%u chaînes pré-traduitesPré-traduction depuis la mémoire de traduction…Pré-traduction…La pré-traduction automatique trouve dans la MT des correspondances exactes ou approximatives pour les entrées non traduites afin de les remplir.La pré-traduction nécessite que le texte source soit disponible. Elle ne fonctionne pas si seuls les ID, sans le texte réel, sont utilisés.La pré-traduction nécessite que la langue du texte source soit connue. Poedit n’a pas pu la détecter dans ce fichier.PréférencesPréférences...Préférences…Préparation des chaînes…Préserver le formatage des fichiers existantsForme plurielle précédenteForme plurielle précédenteTexte source précédentModifié précédemmentModifié précédemmentNom et version du projet :Nom du projet :Projet :ProjetsVérifications de ponctuationNettoyerNettoyer les traductions suppriméesQuitterLa lecture du contenu du fichier a échoué avec l‘erreur suivante : %sFichiers récentsRefaireActualiserRecharger le fichierRecharger le fichierRestant : %dRetirerRetirer les traductions identiques à la sourceRetirer les traductions identiques à la sourceChaînes retiréesChaînes retiréesChaînes retirées (non utilisées) :RemplacerRemplacer &tout&Tout remplacerChaîne de remplacementRemplacer…L’en-tête requise Plural-Forms est absente.RéinitialiserRéinitialiser la mémoire de traductionLa réinitialisation de la mémoire de traduction supprimera définitivement toutes les traductions qui y sont stockées. Cette opération est irréversible.Afficher dans le FinderRéviserEnregistrerEnregistrer &sous…Enregistrer &sous…Enregistrer quand mêmeEnregistrer quand mêmeEnregistrer sousEnregistrer sous…Enregistrer les modificationsEnregistrer le fichierL'enregistrement dans un autre emplacement n'est pas pris en charge pour les fichiers XCLOC.Captures d‘écran :Tout sélectionnerTout sélectionnerSélectionner les fichiers TMX à importerChoisir un répertoireSélectionner le fichier de traductionSélectionner les fichiers de traduction à importerSélectionner le modèle de traductionSélectionnez votre langue de préférenceDéfinir la langueDéfinir la langueParamètresParamètres…Afficher le panneau latéralAfficher l'orthographe et la grammaireAfficher la barre d’étatAfficher l‘&ID de la chaîneAfficher les substitutionsAfficher la barre d'outilsAfficher les avertissementsAfficher dans l’ExplorateurAfficher dans le dossierAfficher ou masquer le panneau latéralAfficher le panneau latéralAfficher la barre d’étatAfficher l‘&ID de la chaîneAfficher les avertissementsPanneau latéralSe connecterSe déconnecterSe connecterSe connecter à %sConnectez-vous au compte CloudConnectez-vous sur CrowdinConnectez-vous au compte CloudSe déconnecterSingulierCopier/coller intelligentTirets intelligentsLiens intelligentsGuillemets intelligentsTrier par &fichierTrier par &sourceTrier par &traductionTrier par &fichierTrier par &sourceTrier par &traductionJeu de caractères du code source :Les extracteurs de code source sont utilisés pour rechercher et extraire les chaînes traduisibles des fichiers du code source afin de les traduire.Code source non disponible.Code source introuvableTexte originalID du texte sourceTexte original — %sMots-clés sourcesChemins des sourcesMots clés sourcesChemins des sourcesDicterLa vérification orthographique est désactivée, car le dictionnaire pour le %s n'est pas installé.Orthographe et GrammaireCommencer à dicterArrêter de dicterTraductions stockées :Contexte de chaîne : %sIdentifiant de chaîne : %sLongueur de la chaîne en caractèresLongueur de la chaîne en caractères : traduction | sourceChaîne à rechercherLes projets Crowdin basés sur des chaînes de caractères ne sont pas pris en charge.SubstitutionsSuggestionsLes suggestions ne sont pas disponibles si la langue de traduction n’est pas définie correctement. Les autres fonctionnalités, comme les formes plurielles, peuvent également être affectées.Texte indicatif superflu « %s » qui n‘est pas dans le texte source.Prend en charge tous les langages de programmation des outils GNU gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript et autres).SynchroniserSynchroniser avec CrowdinSynchroniser la traduction avec CrowdinSynchronisationErreur de synchronisationÉchec de la synchronisation avec Crowdin.Erreur de syntaxe dans l’en-tête Plurial-Forms ("%s").MTFichiers TMXUtiliser les chaînes traduisibles d'un modèle POT existant.Nom de l’équipe et adresse e-mail ou URLTexte de remplacementLa MT ne contient aucune chaîne identique au contenu de ce fichier. C'est effectif uniquement pour des traductions semi-automatiques après que Poedit ait appris suffisamment de fichiers traduits manuellement.Le fichier TMX est mal formé.Les modifications apportées par l’autre application seront perdues si vous enregistrez.Le fichier ne peut pas être compilé au format MO et être utilisé.Le fichier contenait des éléments dupliqués, ce qui n’est pas autorisé dans les fichiers PO et empêcherait le fichier d'être utilisé. Poedit a résolu le problème, mais vous devriez examiner les traductions de tous les éléments marqués comme nécessitant une révision et les corriger si nécessaire.Le fichier n’a pas pu être enregistré avec le jeu de caractères « %s » spécifié dans les paramètres de traduction. Le jeu UTF-8 a été utilisé en remplacement et la configuration a été modifiée en conséquence.Le fichier a été modifié. Voulez-vous enregistrer les modifications ?Le fichier est dans un format non reconnu par Poedit.Le fichier a été compilé au format MO, mais il ne fonctionnera probablement pas correctement.Le fichier a été enregistré avec succès et compilé au format MO, mais il ne fonctionnera probablement pas correctement.Le fichier a été enregistré avec succès, mais il ne peut ni être compilé au format MO ni être utilisé.Le fichier a été enregistré avec succès.Le fichier « %s » n’a pas pu être ouvert.Le fichier « %s » n'a pas pu être enregistré.Le fichier « %s » a été modifié par une autre application.L’ancien texte source (avant sa modification lors d’une mise à jour) auquel correspond la traduction approximative.La façon la plus simple de remplir ce fichier avec des traductions est de le mettre à jour à partir d‘un fichier POT :La traduction ne commence pas par une espace.La traduction se termine par un saut de ligne, mais pas le texte source.La traduction se termine par une espace, mais pas le texte source.La traduction se termine par â€%sâ€, mais le texte source se termine par â€%sâ€.Il manque un saut de ligne à la fin de la traduction.Il manque une espace à la fin de la traduction.La traduction est prête à être utilisée, mais %d entrée n’est pas encore traduite.La traduction est prête à être utilisée, mais %d entrées ne sont pas encore traduites.La traduction est prête à être utilisée.La traduction devrait se terminer par â€%sâ€.La traduction ne devrait pas se terminer par â€%sâ€.La traduction devrait commencer comme une phrase.La traduction devrait commencer par un caractère en minuscule.La traduction commence par une espace, mais pas le texte source.Les traductions ont été marquées comme à réviser car il est possible quelles soient imprécises. Vous devriez vérifier leur exactitude.Il n’y a aucune traduction. Ce n’est pas courant.Il y a eu un problème lors du formatage du fichier (mais il a été enregistré correctement).Il y a eu une erreur lors du téléversement des traductions vers Localazy.Il y a eu des erreurs lors du chargement du fichier. Il se pourrait que des données soient manquantes ou corrompues.Ces paramètres modifient la mise en forme interne des fichiers PO. Ajustez-les si vous avez des exigences spécifiques, par exemple en raison du contrôle de version.Ce fichier JSON n‘est pas un fichier de traduction et ne peut pas être modifié dans Poedit.Cette action supprimera toutes les traductions qui correspondent exactement au texte source. Cela ne peut pas être annulé.Ce fichier possède des entrées au pluriel, mais aucune en-tête Plural-Forms n’est configurée.Ce fichier utilise des identifiants de chaîne au lieu du texte source. Poedit peut charger des textes en anglais à partir du fichier "%s" pour vous.Il s'agit de la commande utilisée pour lancer l'extracteur. %o se développe au nom du fichier de sortie, %K pour lister les mots-clés, %F pour lister les fichiers d'entrée, %C pour le jeu de caractères (voir ci-dessous).Cette chaîne a été trouvée dans la mémoire de traduction de Poedit.Ce sera attaché à la ligne de commande seulement si le code source du jeu de caractères a été donné. %c se développe à la valeur du jeu de caractères.Ce sera attaché à la ligne de commande une fois pour chaque fichier d'entrée. %f se développe au nom de fichier.Ce sera attaché à la ligne de commande une fois pour chaque mot-clé. %k se développe au mot-clé.TotalTransformationsLes entrées traduisibles ne sont pas ajoutées manuellement dans le système Gettext, mais sont automatiquement extraites du code source. De cette façon, elles restent à jour et exactes. Les traducteurs utilisent généralement des fichiers de modèles PO (POT) préparés à leur attention par le développeur.Traduire le projet cloudTraduit : %d de %d (%d %%)TraductionLangue de traductionMémoire de traductionTraduction nécessitant une &révisionPropriétés de traductionLe fichier de traduction est déjà à jour, aucune modification n‘a été apportée aux chaînes.Le fichier de traduction a été mis à jour avec %s modification.Le fichier de traduction a été mis à jour avec %s modifications.La base de données de la mémoire de traduction est corrompue : %s (%d).Erreur de la mémoire de traduction : %s (%d).Traduction nécessitant une &révisionPropriétés de traductionSuggestions de traductionLes suggestions de traduction nécessitent que le texte source soit disponible. Elles ne fonctionnent pas si seuls des ID, sans texte réel, sont utilisés.Les suggestions de traduction nécessitent que la langue du texte source soit connue. Poedit n'a pas pu la détecter dans ce fichier.Traduction — %sLes traductions n’ont pas pu être mises à jour à partir du code source, car aucun code n’a été trouvé à l’emplacement précisé dans les propriétés du fichier.DeuxUTF-8 (recommandé)AnnulerContenu inopinément manquant dans le fichier XCLOC.Une exception non gérée s'est produite : %sUnix (recommandé)Erreur Crowdin inconnue.Erreur inconnueNon traduitMettre à jourMettre à jour le résuméTout mettre à jourMettre à jour tous les catalogues du projetMettre à jour tous les catalogues dans ce projet ?Mettre à jour depuis un fichier &POT…Mettre à jour depuis un fichier &POT…Mettre à jour depuis le codeMettre à jour depuis un POTMettre à jour depuis le codeMettre à jour depuis le code sourceMettre à jour le résuméMises à jourÉchec de la mise à jourMise à jour des catalogues de projetsMise à jour des traductionsMise à jour des informations de l‘utilisateur…Le chargement des traductions vers %s a échoué.Chargement des traductions vers %s…Téléchargement des traductions...Utiliser une expression personnaliséeUtiliser une police personnalisée :Utiliser une police personnalisée pour les champs texte :Utiliser les règles par défaut de cette langueUtiliser ces mots-clés (noms de fonctions) pour reconnaître les chaînes traduisibles dans les fichiers sources :Utiliser la mémoire de traductionValiderRésultats de la validationVersion %sVoir les détails…Voir les détails…En attente d‘authentification…Avertissement : Bienvenue dans PoeditLors de l’actualisation depuis les sourcesMots entiers uniquementFenêtreWindowsAimeriez-vous utiliser l‘anglais pour le texte source ?BouclerPasser à la ligne à :Fichiers de traduction XLIFFCatalogue de localisation XcodeOuiVous pouvez également extraire les chaînes traduisibles directement à partir du code source :Il est impossible de déposer plus d’un fichier à la fois dans la fenêtre de Poedit.Vous n'avez pas la permission de lire les fichiers de code source à l'emplacement spécifié dans les propriétés du fichier.Vous devez redémarrer Poedit pour que ce changement prenne effet.Votre nomVos modifications seront perdues si vous ne les enregistrez pas.Votre nom et votre adresse e-mail sont uniquement utilisés pour définir l’en-tête Last-Translator des fichiers de GNU gettext.ZéroAgrandirÀ réviserne pas supprimer les fichiers temporaires (à des fins de débogage)p. ex. nplurals=2; plural=(n > 1);erreur : remplissage approx. dans le fichieraller à l’élément à la ligne donnéegérer un URI poedit://Alt+Ctrl+BasEntréeGaucheDroiteMaj+HautaltctrlmajÀ propos de %sMasquer %sMasquer le restePréférences…Quitter %sServicesTout afficherpré-traduire avec la MTlangue inconnueversion non prise en charge (%s)avertissement : vous@example.com« %s » n’est pas un fichier POT valide.poedit-3.6.3/locales/zh_TW.po0000644000175100001660000025661315011674230011522 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Chinese Traditional\n" "Language: zh_TW\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" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: zh-TW\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "éš±è—這項通知訊æ¯" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "ä¸è¦å†é¡¯ç¤º" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "ä¸å†é¡¯ç¤º" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "更新摘è¦" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "更新摘è¦" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "關閉" #: src/cat_update.cpp:161 msgid "Issues" msgstr "å•題" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "檔案" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "橫列" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "å•題" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "新字串" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "新字串" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "移除的字串" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "移除的字串" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "æ­£åœ¨æ”¶é›†ä¾†æºæª”..." #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "正在從 %s 個檔案中擷å–å¯ç¿»è­¯å­—串……" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "ç„¡æ³•è¼‰å…¥åŒ…å«æ“·å–翻譯的檔案。" #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "在:%s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "原始程å¼ç¢¼ç„¡æ³•使用。" #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "ç”±æ–¼åœ¨æª”æ¡ˆã€Œå±¬æ€§ã€æŒ‡å®šçš„路徑中找ä¸åˆ°ç¨‹å¼ç¢¼ï¼Œç¿»è­¯ç„¡æ³•從原始碼更新。" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "權é™ä¸è¶³ã€‚" #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "æ‚¨ç„¡æ¬Šè®€å–æª”æ¡ˆã€Œå±¬æ€§ã€æŒ‡å®šä¹‹è·¯å¾‘中的原始碼檔案。" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "è‹¥æ‚¨å…ˆå‰æ‹’絕檔案存å–,å¯ä¾å¾ªã€Œç³»çµ±è¨­å®šã€ >「 éš±ç§æ¬Šèˆ‡å®‰å…¨æ€§ã€ > ã€Œéš±ç§æ¬Šã€ > " "「檔案與檔案夾ã€è®Šæ›´æ”¾è¡Œã€‚" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "è‹¥æ‚¨å…ˆå‰æ‹’絕檔案存å–,å¯ä»¥åˆ°ç³»çµ±å好設定 > å®‰å…¨æ€§èˆ‡éš±ç§æ¬Š > éš±ç§æ¬Š > 檔案與資" "料夾放行。" #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "無法從原始程å¼ç¢¼ä¸­æ“·å–字串。" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "無法開啟檔案「%sã€ã€‚" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "正在更新翻譯" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "正在比å°å·®ç•°â€¦â€¦" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "正在åˆä½µå·®ç•°â€¦" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "翻譯檔案已經是最新狀態,因此未å°å­—串進行更動。" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "翻譯檔已經更新,共進行 %s 項更動。" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "è¦ç¿»è­¯çš„æ–°å­—串:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "已經移除的字串(ä¸å†ä½¿ç”¨ï¼‰ï¼š" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "嵿¸¬åˆ°ä¾†æºå­—串有 %d 個å•題。" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "檢視詳細資訊…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "檢視詳細資訊…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "æ ¼å¼éŒ¯èª¤çš„æª”案標頭:%s" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO 翻譯檔" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT 譯文模本" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF 翻譯檔" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode 在地化編目檔" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON 翻譯檔" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter 翻譯檔" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "全部譯文檔案" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Poedit ä¸èªè­˜é€™å€‹æª”案格å¼ã€‚" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "本 JSON æª”æ¡ˆä¸æ˜¯ç¿»è­¯æª”案,故無法在 Poedit 編輯。" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "è®€å–æª”案內容時發生錯誤,錯誤為:%s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "檔案 %s 因設定為唯讀而無法儲存。\n" "請以ä¸åŒæª”å儲存檔案。" #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "無法儲存檔案 %s。" #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "螢幕截圖:" #: src/catalog_po.cpp:134 #, 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) 沒有正確載入。" #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "第 %d 列 (檔案為 %s) 已毀æ (無效的 %s 資料)。" #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "ææ¯€çš„ PO 檔:單數形å¼çš„ msgstr è·Ÿ msgid_plural 一åŒä½¿ç”¨" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "ææ¯€çš„ PO 檔:沒有 msgid_plural,å»ä½¿ç”¨è¤‡æ•¸å½¢å¼çš„ msgstr" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "無法載入檔案,檔案å¯èƒ½æå£žã€‚" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "載入檔案時發生錯誤,因此å¯èƒ½å°Žè‡´éƒ¨åˆ†è³‡æ–™éºå¤±æˆ–æ˜¯ææ¯€ã€‚" #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "試圖讓檔案的排版格å¼è®Šå¾—整齊時é­é‡å•題 (但ä»èˆŠé †åˆ©å„²å­˜)。" #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "檔案ä¸èƒ½å­˜æˆç¿»è­¯è¨­å®šæ‰€æŒ‡å®šçš„「%sã€å­—元集。\n" "\n" "å·²æ”¹å­˜æˆ UTF-8ï¼Œäº¦å·²ä¿®æ”¹å°æ‡‰è¨­å®šã€‚" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "儲存檔案時發生錯誤" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "「%sã€æ˜¯ç„¡æ•ˆçš„ POT 檔。" #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "XCLOC 檔案中有éžé æœŸçš„éºå¤±å…§å®¹ã€‚" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "䏿”¯æ´å°‡ XCLOC 檔案存在ä¸åŒä½ç½®ã€‚" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "載入 XLIFF 檔案時發生錯誤:%s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "䏿”¯æ´çš„版本 (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "翻譯字串中有æå£žçš„æ¨™è¨˜ã€‚" #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "å°‡ Poedit 和支æ´çš„雲端在地化平å°é€£ç·šï¼Œç„¡ç¸«åŒæ­¥ä»£ç®¡å¹³å°ä¸Šçš„翻譯。" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "é›²ç«¯åŒæ­¥å¦‚何é‹ä½œï¼Ÿ" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "帳戶" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(尚未登入)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "開啟雲端翻譯" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "管ç†å¸³æˆ¶" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "專案:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "語言:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "登入至雲端帳戶" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "登入至雲端帳戶" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "您的帳戶中尚無翻譯專案。" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "正在下載最新的翻譯⋯" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "登入至 %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "åŒæ­¥ä¸­" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "正在上傳翻譯至 %s……" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "無法上傳翻譯至 %s。" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "åŒæ­¥ç™¼ç”ŸéŒ¯èª¤" #: src/commentdlg.cpp:48 msgid "Add" msgstr "加入" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "未知的 Crowdin 錯誤。" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "尚未ç²å¾—æŽˆæ¬Šï¼Œè«‹é‡æ–°ç™»å…¥ã€‚" #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "䏿”¯æ´å­—串基底的 Crowdin 專案。" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "此專案已åœç”¨ç¿»è­¯ä¸‹è¼‰ã€‚" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "登入" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "登入" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "登出" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "登出" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "深入瞭解 Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin 是一個線上翻譯管ç†å¹³å°å’Œå”作翻譯工具。我們自己也使用 Crowdin å°‡ " "Poedit 翻譯æˆå¤šç¨®èªžè¨€ï¼Œä¹Ÿå¾ˆå–œæ­¡å®ƒã€‚" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "正在等候身分核å°â‹¯" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "正在更新使用者資訊⋯" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "登入 Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "與 Crowdin åŒæ­¥å¤±æ•—。" #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin 錯誤" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "正在上傳翻譯⋯" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "複製(&C)" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "深入瞭解" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "說明(&H)" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "無法在 Poedit 中直接編輯 MO 檔。" #: src/edapp.cpp:733 msgid "Error opening file" msgstr "開啟檔案發生錯誤" #: src/edapp.cpp:735 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 æª”æœƒåŒæ™‚更新。" #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ä¸è¦åˆªé™¤æš«å­˜æª” (用於åµéŒ¯)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "è™•ç† poedit:// URI" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "å‰å¾€æŒ‡å®šåˆ—號的項目" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "無法與 Poedit ç¨‹åºæºé€šã€‚" #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "é­é‡æœªè™•ç†çš„例外:%s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "鏿“‡ç¿»è­¯æ¨¡æ¿" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "檔案無效" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "鏿“‡ç¿»è­¯æª”案" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit 是個易用的翻譯編輯器。" #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "è«‹ä¸è¦æ‹–放超éŽä¸€å€‹æª”案至 Poedit 視窗中。" #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "「%sã€æª”æ¡ˆä¸æ˜¯ç¿»è­¯æª”。" #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "檔案 %s ä¸å­˜åœ¨ã€‚" #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "ç”±æ–¼å°šæœªå®‰è£ %s 字典,因此拼字檢查已åœç”¨ã€‚" #: src/edframe.cpp:871 msgid "Install" msgstr "安è£" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "「%sã€æª”案已被其他應用程å¼ä¿®æ”¹ã€‚" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "釿–°è¼‰å…¥æª”案" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "是å¦å¾žç¡¬ç¢Ÿé‡æ–°è¼‰å…¥æª”æ¡ˆï¼Ÿé€™éº¼åšæœƒå°Žè‡´æ‚¨åœ¨ Poedit 的未儲存編輯消失ä¸è¦‹ã€‚" #: src/edframe.cpp:968 msgid "Ignore" msgstr "忽略" #: src/edframe.cpp:968 msgid "Reload File" msgstr "釿–°è¼‰å…¥æª”案" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "檔案已經修改。是å¦å„²å­˜è®Šæ›´ï¼Ÿ" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "儲存變更" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "如果ä¸å„²å­˜ï¼Œä¾¿æœƒå¤±åŽ»å‰›å‰›é€²è¡Œçš„è®Šæ›´ã€‚" #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "儲存" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "ä¸è¦å„²å­˜(&N)" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "ä¸è¦å„²å­˜" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "å¦‚æžœå„²å­˜ï¼Œå…¶ä»–æ‡‰ç”¨ç¨‹å¼æ‰€åšçš„變更就會消失ä¸è¦‹ã€‚" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "å–æ¶ˆ" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "ä»è¦å„²å­˜" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "ä»è¦å„²å­˜" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "å¦å­˜æ–°æª”…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "編譯æˆâ€¦" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "已編譯的譯文檔案" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "匯出為 HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML 檔案" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "正在匯出為 HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "更新失敗" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "開啟åƒç…§æª”案" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "從 POT 檔案進行更新(&P)…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "從 POT 檔案進行更新(&P)…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "è­¯æ–‡ä¸­ç™¼ç¾ %d 個å•題。" #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "é©—è­‰çµæžœ" #: src/edframe.cpp:1842 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 "出錯的項目在清單中以紅色標記。您å¯ä»¥é»žé¸è©²é …目以顯示詳細的錯誤資訊。" #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "檔案已順利儲存。" #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "檔案已順利儲存,且æˆåŠŸç·¨è­¯ç‚º MO æ ¼å¼çš„æª”案,但有å¯èƒ½ç„¡æ³•正確é‹ä½œã€‚" #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "æª”æ¡ˆå·²é †åˆ©å„²å­˜ï¼Œä½†ç„¡æ³•ç·¨è­¯æˆ MO æ ¼å¼çš„æª”案,所以無法使用。" #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "å·²ç·¨è­¯æˆ MO æ ¼å¼çš„æª”案,但有å¯èƒ½ç„¡æ³•正確é‹ä½œã€‚" #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "ç„¡æ³•ç·¨è­¯æˆ MO æ ¼å¼çš„æª”案,所以無法使用。" #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "找ä¸åˆ°è­¯æ–‡çš„å•題。" #: src/edframe.cpp:1894 #, 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] "è­¯æ–‡å·²æº–å‚™å°±ç·’ï¼Œä½†ä»æœ‰ %d 個項目尚未翻譯。" #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "譯文已準備就緒。" #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit 已自動修正 %s 檔案中無效的內容。" #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "檔案包å«é‡è¤‡é …目,然而 PO 檔並ä¸å…許é‡è¤‡ï¼Œé€²è€Œä½¿æª”案無法使用。Poedit 已修正這" "個å•題,但您應該校閱任何標記為需è¦è™•ç†çš„項目,如有需è¦ä¹Ÿè«‹æ ¡æ­£å…¶å…§å®¹ã€‚" #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "尚未設定目標語言。" #: src/edframe.cpp:2317 msgid "Set Language" msgstr "設定語言" #: src/edframe.cpp:2317 msgid "Set language" msgstr "設定語言" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "如果沒有正確設定目標語言,便無法使用建議譯文;其他功能如複數型設定,也å¯èƒ½å—" "到影響。" #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "目標語言與來æºèªžè¨€ç›¸åŒã€‚" #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "修正語言" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "修正語言" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "這個檔案有複數型æ¢ç›®ï¼Œå»æœªè¨­å®š Plural-Forms 標頭。" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "這個檔案中æ¢ç›®çš„è¤‡æ•¸å½¢å¼æ•¸ç›®ï¼Œèˆ‡æª”案中 Plural-Forms 標頭的記錄ä¸ç¬¦" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "éºå¤±å¿…è¦çš„ Plural-Forms 標頭。" #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Plural-Forms 標頭中有語法錯誤 (%s)。" #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "修正標頭" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "檔案所採用的複數形å¼è¡¨è¿°å¼ï¼Œå°%s來說ä¸å¸¸è¦‹ã€‚" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "æ ¡é–±" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "您è¦ä½¿ç”¨è‹±æ–‡ä½œç‚ºä¾†æºæ–‡å­—嗎?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "此檔案使用字串 ID 而éžä¾†æºæ–‡å­—。Poedit å¯ä»¥ç‚ºæ‚¨å¾žã€Œ%sã€æª”案載入英文文字。" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "載入英文" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "已翻譯 %d 筆,總計 %d ç­† (完æˆåº¦ç‚º %d%%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "尚餘 %d 筆原文未翻譯" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d 項錯誤" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d 個項目" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (未儲存)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (已修改)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "無法更新譯文記憶庫:%s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "無法儲存「%sã€æª”案。" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "ç§»é™¤å’Œä¾†æºæ–‡å­—相åŒçš„翻譯" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "è«‹å•æ‚¨æ˜¯å¦æƒ³è¦ç§»é™¤æ‰€æœ‰å’Œä¾†æºæ–‡å­—相åŒçš„譯文?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "é€™å€‹å‹•ä½œæœƒåˆªé™¤æ‰€æœ‰å’Œä¾†æºæ–‡å­—完全相åŒçš„譯文,ä¸èƒ½å–消。" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "ä¿ç•™" #: src/edframe.cpp:2856 msgid "Remove" msgstr "移除" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "清除已刪除的譯文" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "確定è¦ç§»é™¤å…¨éƒ¨ä¸å†ä½¿ç”¨çš„譯文?" #: src/edframe.cpp:2879 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 "" "如果繼續清除,全部標示為已刪除的譯文便會永久移除。如果未來這些訊æ¯å†æ¬¡åŠ å…¥ï¼Œ" "就必須å†é‡æ–°ç¿»è­¯ä¸€æ¬¡ã€‚" #: src/edframe.cpp:2883 msgid "Purge" msgstr "清除" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "從原文複製" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "從原文複製" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "清除譯文" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "清除譯文" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "編輯註解" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "編輯註解" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "程å¼ç¢¼å‡ºç¾è™•" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "程å¼ç¢¼å‡ºç¾è™•" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "éš±è—å´é‚Šæ¬„" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "顯示å´é‚Šæ¬„" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "éš±è—狀態列" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "顯示狀態列" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "以字元數表示的字串長度:翻譯字串 | 來æºå­—串" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "以字元數表示的字串長度" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "原文" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "單數" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "複數" #: src/editing_area.cpp:477 msgid "Translation" msgstr "譯文" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "å‰ç½®ç¿»è­¯" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "å¾…æ ¡é–±" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "å¾…æ ¡é–±" #: src/editing_area.cpp:566 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 譯文檔案。" #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "建立新譯文" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "從這個 POT 檔案建立新翻譯。" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ä¾†æºæ–‡å­— ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "單複數åˆä½µè­¯æ–‡" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "å½¢å¼ %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "å½¢å¼ %i (未使用)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "é›¶" #: src/editing_area.cpp:788 msgid "One" msgstr "單數" #: src/editing_area.cpp:790 msgid "Two" msgstr "複數" #: src/editing_area.cpp:804 msgid "Other" msgstr "å…¶ä»–" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "字串上下文:%s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "字串識別碼:%s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s æ ¼å¼" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s æ ¼å¼" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "譯文 — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "原文 — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "未知的語言" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "網路錯誤:%s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "未知錯誤" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "無法åˆä½µ gettext 編目檔。" #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "在編輯器中開啟" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "在編輯器中開啟" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "檔案中沒有這個字串在原始碼中的出ç¾è™•資料。" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "沒有用é‡è³‡è¨Š" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d 個程å¼ç¢¼å‡ºç¾è™•" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "找ä¸åˆ°åŽŸå§‹ç¢¼" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit 無法顯示使用這個字串的原始碼,因為檔案無法從åƒè€ƒä½ç½®å–得,或是一個未指" "å‘真實檔案的符號åƒè€ƒã€‚" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "無法開啟檔案" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit 無法開啟「%sã€æª”案。" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "尋找" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "å–代" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "é¸é …" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "忽略字æ¯å¤§å°å¯«" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "循環尋找" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "全字拼寫須相符" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "在原文中尋找" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "在譯文中尋找" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "在註解中尋找" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "全部å–代(&A)" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "全部å–代(&A)" #: src/findframe.cpp:150 msgid "&Replace" msgstr "å–代(&R)" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< å‰ä¸€ç­†(&P)" #: src/findframe.cpp:152 msgid "&Next >" msgstr "下一筆(&N) >" #: src/findframe.cpp:235 msgid "String to find" msgstr "尋找字串" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "å–代字串" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "警告:" #: src/gexecute.cpp:171 msgid "error: " msgstr "錯誤:" #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "語言å稱或代碼" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "譯文語言" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "譯文語言:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "所有字串" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "無法下載 Localazy 專案詳細資訊。" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "上傳翻譯至 Localazy 時發生錯誤。" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "專案" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "深入瞭解 %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy 是一個高度自動化的在地化平å°ï¼Œå¯è®“任何人輕鬆將產å“和內容翻譯æˆå¤šç¨®èªž" "言。" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "新增專案" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "新增專案" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - 編目檔管ç†å“¡" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "編輯…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "建立譯文專案" #: src/manager.cpp:145 msgid "Delete the project" msgstr "刪除專案" #: src/manager.cpp:146 msgid "Edit the project" msgstr "編輯專案" #: src/manager.cpp:176 msgid "Update all" msgstr "更新全部" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "更新專案中的所有編目檔" #: src/manager.cpp:378 msgid "Total" msgstr "總計" #: src/manager.cpp:379 msgid "Untrans" msgstr "未譯" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "å¾…æ ¡é–±" #: src/manager.cpp:381 msgid "Errors" msgstr "錯誤" #: src/manager.cpp:382 msgid "Last modified" msgstr "上次修改時間" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "é¸å–目錄" #: src/manager.cpp:433 msgid "Directories:" msgstr "目錄:" #: src/manager.cpp:503 msgid "" msgstr "<未命å>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "是å¦åˆªé™¤ã€Œ%sã€å°ˆæ¡ˆï¼Ÿ" #: src/manager.cpp:540 msgid "Delete project" msgstr "刪除專案" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "「刪除專案ã€ä¸æœƒåˆªé™¤å…¶ä»–翻譯檔案。" #: src/manager.cpp:571 msgid "Confirmation" msgstr "確èª" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "æ˜¯å¦æ›´æ–°å°ˆæ¡ˆä¸­çš„æ‰€æœ‰ç·¨ç›®æª”?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "自來æºç¢¼é€²è¡Œæ‰€æœ‰å°ˆæ¡ˆä¸­çš„æª”案的字串更新" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "正在更新專案編目檔" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "檢查更新…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "編目檔管ç†å“¡" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "å好設定(&P)…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "編輯(&E)" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "å–æ¶ˆå‹•作" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "冿¬¡å‹•作" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "è²¼ä¸Šä¸¦æ¯”å°æ¨£å¼" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "刪除" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "拼字與文法" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "顯示拼字與文法" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "立刻檢查文件" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "æ‰“å­—åŒæ™‚檢查拼字" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "檢查文法與拼字" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "自動校正拼字" #: src/menus.cpp:219 msgid "Substitutions" msgstr "替æ›é …ç›®" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "顯示替æ›é …ç›®" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "智慧複製/貼上" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "智慧引號" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "智慧破折號" #: src/menus.cpp:226 msgid "Smart Links" msgstr "智慧連çµ" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "文字å–代" #: src/menus.cpp:230 msgid "Transformations" msgstr "轉æ›" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "轉為大寫" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "轉為å°å¯«" #: src/menus.cpp:234 msgid "Capitalize" msgstr "轉為大寫" #: src/menus.cpp:237 msgid "Speech" msgstr "朗讀" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "開始朗讀" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "åœæ­¢æœ—讀" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "檢視(&V)" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "顯示工具列" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "自訂工具列…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "進入全螢幕" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "視窗" #: src/menus.cpp:263 msgid "Minimize" msgstr "最å°åŒ–" #: src/menus.cpp:264 msgid "Zoom" msgstr "縮放" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "歡迎使用 Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "å…¨éƒ¨å¸¶åˆ°æœ€å‰æ–¹" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "譯者資訊" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "å§“å:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "您的姓å" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "é›»å­éƒµä»¶åœ°å€ï¼š" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "您的姓å與電å­éƒµä»¶ä½å€åƒ…用於設定 GNU gettext 檔案的 Last-Translator 標頭。" #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "編輯" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "儲存時自動編譯 MO 檔案" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "拼字檢查" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "æ°¸é å°‡ç„¦é»žæ”¾åœ¨æ–‡å­—輸入欄ä½ä¸­" #: src/prefsdlg.cpp:211 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 "" "æ°¸é ä¸è¦è®“字串清單å–得焦點。如果您啟用這個é¸é …,就得並用 Ctrl éµèˆ‡æ–¹å‘鵿‰èƒ½" "以éµç›¤å°Žè¦½ï¼Œä¸éŽåŒæ™‚您能立å³è¼¸å…¥æ–‡å­—,而ä¸å¿…先按 Tab éµè®Šæ›´è¼¸å…¥ç„¦é»žã€‚" #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "外觀" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "使用自訂清單字型:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "使用自訂文字欄ä½å­—型:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "變更使用者介é¢èªžè¨€" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(éœ€è¦ Windows 8 或更新版本)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "一般" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "使用譯文記憶庫" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "管ç†â€¦" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "從原始程å¼ç¢¼é€²è¡Œæ›´æ–°æ™‚" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "在檔案內部進行模糊比å°" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "使用譯文記憶進行å‰ç½®ç¿»è­¯" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit 會嘗試將舊版檔案中的譯文或譯文記憶中的譯文代入新項目中。如果譯文記憶中" "ç´¯ç©çš„譯文é‡å¾ˆå°‘ï¼Œé€™é …åŠŸèƒ½çš„æ•ˆæžœå°±ä¸æœƒå¾ˆå¥½ï¼Œä½†æ˜¯æœƒéš¨è‘—譯文é‡çš„å¢žåŠ é€æ¼¸æ”¹å–„效" "果。" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "已儲存的譯文:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "譯文記憶庫使用的儲存空間:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "匯入譯文檔案…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "匯入譯文檔案…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "從 TMX 檔案匯入…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "從 TMX 檔案匯入…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "åŒ¯å‡ºæˆ TMX 檔案…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "åŒ¯å‡ºæˆ TMX 檔案…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "é‡è¨­" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "é¸å–è¦åŒ¯å…¥çš„譯文檔案" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "é¸å–è¦åŒ¯å…¥çš„ TMX 檔案" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX 檔案" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "正在匯入譯文…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "無法匯入譯文記憶庫。" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "正在從「%sã€åŒ¯å…¥â€¦â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "已經匯入 %s æ¢è­¯æ–‡ã€‚" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "匯出æˆâ€¦" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "正在匯出譯文…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "無法將譯文記憶庫匯出至 %s。" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "é‡è¨­è­¯æ–‡è¨˜æ†¶åº«" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "確定è¦é‡è¨­è­¯æ–‡è¨˜æ†¶åº«ï¼Ÿ" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "é‡è¨­è­¯æ–‡è¨˜æ†¶åº«å°‡æ°¸ä¹…刪除全部已儲存的譯文。這項æ“作無法復原。" #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "譯文記憶" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "譯文記憶庫" #: src/prefsdlg.cpp:730 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 "" "原始程å¼ç¢¼æ“·å–器用於尋找原始程å¼ç¢¼ä¸­çš„å¯ç¿»è­¯å­—串,並將之擷å–出來進行本地化。" #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "自訂擷å–器:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "自訂擷å–器:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "支æ´å…¨éƒ¨ GNU gettext 工具能辨識的程å¼èªžè¨€ï¼ŒåŒ…å« PHPã€C/C++ã€C#ã€Perlã€" "Pythonã€Javaã€JavaScript 等程å¼èªžè¨€ã€‚" #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "刪除擷å–器" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "確定è¦åˆªé™¤ã€Œ%sã€æ“·å–器?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "æ“·å–器" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "帳號" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "自動檢查更新" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "åŒ…å« Beta 版" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "Beta ç‰ˆæœ¬åŒ…å«æœ€æ–°åŠŸèƒ½å’Œæ”¹é€²ï¼Œä½†å¯èƒ½æœ‰é»žä¸ç©©å®šã€‚" #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "æ›´æ–°" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "這些設定會影響 PO 檔案的內部格å¼åŒ–è™•ç†æ–¹å¼ã€‚如果有特定需求æ‰éœ€è¦èª¿æ•´å®ƒå€‘,例" "如需è¦é€²è¡Œç‰ˆæœ¬æŽ§åˆ¶ã€‚" #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "è¡Œå°¾çµæŸç¬¦è™Ÿ:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (建議採用)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "æ›è¡Œä½ç½®ï¼š" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "ä¿ç•™ç¾æœ‰æª”案的格å¼åŒ–è™•ç†æ–¹å¼" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "進階" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "設定" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "準備字串中..." #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "從翻譯記憶體å‰ç½®ç¿»è­¯ä¸­..." #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "å·²å‰ç½®ç¿»è­¯ %u 筆字串" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "正在進行å‰ç½®ç¿»è­¯â€¦" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d 筆原文已完æˆå‰ç½®ç¿»è­¯ã€‚" #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "這些譯文已標示為「待校閱ã€ï¼Œå¯èƒ½ç¿»è­¯å°šæœªæ˜Žç¢ºã€‚ä½ æ‡‰è©²æ ¡é–±å®ƒå€‘æ˜¯å¦æ­£ç¢ºã€‚" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "來自譯文記憶的完全符åˆé …ç›®" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "來自譯文記憶的大致符åˆé …ç›®" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "沒有任何原文å¯ä»¥å®Œæˆå‰ç½®ç¿»è­¯ã€‚" #: src/pretranslate.cpp:218 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 儲存使用者夠" "å¤šçš„æ‰‹å‹•ç¿»è­¯çµæžœå¾Œï¼Œå°åŠè‡ªå‹•ç¿»è­¯æ‰æœƒç”¢ç”Ÿæ•ˆæžœã€‚" #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "ç„¡æ³•åœ¨æ²’æœ‰ä¾†æºæ–‡å­—時進行é å…ˆç¿»è­¯ã€‚" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "å‰ç½®ç¿»è­¯" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "é å…ˆç¿»è­¯éœ€è¦å¯ä¾›ä½¿ç”¨çš„ä¾†æºæ–‡å­—。如果僅使用沒有實際文字的 ID,é å…ˆç¿»è­¯å°‡ç„¡æ³•é‹" "作。" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "無法å‰ç½®æœªçŸ¥èªžè¨€çš„翻譯。" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "需è¦å…ˆçŸ¥é“ä¾†æºæ–‡å­—的語言,æ‰èƒ½é€²è¡Œå‰ç½®ç¿»è­¯ã€‚Poedit ç„¡æ³•å¾žé€™å€‹æª”æ¡ˆåµæ¸¬èªžè¨€ã€‚" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "僅代入完全相符的譯文" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "é è¨­æƒ…æ³ä¸‹ï¼Œä¸ç²¾ç¢ºçš„項目也會包å«åœ¨å…§ï¼Œä½†æœƒå°‡ä¹‹æ¨™è¨˜ç‚ºéœ€è¦è™•ç†ã€‚勾鏿­¤é¸é …以僅" "åªç´å…¥å®Œç¾Žç¬¦åˆçš„項目。" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "ä¸è¦å°‡å®Œå…¨ç›¸ç¬¦çš„譯文標示為「待校閱ã€" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "åªæœ‰åœ¨ä¿¡ä»»è­¯æ–‡è¨˜æ†¶çš„å“質時æ‰å•Ÿç”¨é€™é …設定。ä¾ç…§é è¨­ï¼Œèˆ‡è­¯æ–‡è¨˜æ†¶æ¯”å°å¾Œï¼Œå®Œå…¨ç›¸" "符的項目代入的譯文都會標記為「待校閱ã€ï¼Œä¸¦è«‹åœ¨æŽ¡ç”¨å‰å…ˆè¡Œæ ¡é–±ã€‚" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "å‰ç½®ç¿»è­¯æœƒå¾žè­¯æ–‡è¨˜æ†¶åº«ä¸­è‡ªå‹•å°‹æ‰¾å®Œå…¨ç›¸åŒæˆ–相似的譯文代入未翻譯的項目中。" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "錯誤:" #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "發生 %d 個錯誤:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "發生錯誤。" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "發生 %d 個錯誤。" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "å–æ¶ˆä¸­..." #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "拖曳資料夾或檔案至此" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "拖曳資料夾或檔案至此" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "加入資料夾…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "加入資料夾…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "加入檔案…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "加入檔案…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "加入è¬ç”¨å­—元…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "加入è¬ç”¨å­—元…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "在 Finder 顯示" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "在檔案總管顯示" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "在資料夾顯示" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "路徑" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "排除的路徑" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "進階擷å–設定" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "「譯者注æ„äº‹é …ã€æ“·å–來æºï¼š" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "註解å‰ç½®è©žï¼š" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "全部註解" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "é¡å¤–çš„ xgettext 旗標:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "é¡å¤–的關éµå­—" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "本地化專案å稱" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "團隊å稱和電å­éƒµä»¶ä½å€æˆ–ç¶²å€" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "例如 nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (建議採用)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "è«‹å…ˆå„²å­˜æª”æ¡ˆã€‚å„²å­˜å®Œç•¢å¾Œï¼Œé€™å€‹å€æ®µæ‰èƒ½é€²è¡Œç·¨è¼¯ã€‚" #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "é ç•™ä½ç½®æº–確性" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "é ç•™ä½ç½® “%s†並未出ç¾åœ¨ç¿»è­¯ä¸­ã€‚" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "多餘的é ç•™ä½ç½® “%s†並未出ç¾åœ¨åŽŸå§‹æœ¬æ–‡ã€‚" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "複數形å¼ç¿»è­¯" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "複數型內容並未全部翻譯。" #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "大å°å¯«ä¸ä¸€è‡´" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "譯文應該以å¥å­é–‹å§‹ã€‚" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "譯文應該以å°å¯«å­—元開始。" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "空白數ä¸ä¸€è‡´" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "譯文應該以空白字元開始。" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "譯文以空白字元開始,但原文並未以空白字元開始。" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "è­¯æ–‡çµæŸä½ç½®éºæ¼æ–°è¡Œå­—元。" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "譯文以新行字元çµå°¾ï¼Œä½†åŽŸæ–‡ä¸¦æœªä»¥æ–°è¡Œå­—å…ƒçµå°¾ã€‚" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "è­¯æ–‡çµæŸä½ç½®éºæ¼ç©ºç™½å­—元。" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "譯文以空白字元çµå°¾ï¼Œä½†åŽŸæ–‡ä¸¦æœªä»¥ç©ºç™½å­—å…ƒçµå°¾ã€‚" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "標點檢查" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "譯文應該以「%sã€çµæŸã€‚" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "è­¯æ–‡ä¸æ‡‰è©²ä»¥ã€Œ%sã€çµæŸã€‚" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "譯文以「%sã€çµå°¾ï¼Œä½†åŽŸæ–‡æ˜¯ä»¥ã€Œ%sã€çµå°¾ã€‚" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "雲端" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "清除é¸å–®" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "清除é¸å–®" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "註解:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "æ›´æ–°" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "刪除(&D)" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "刪除註解" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "編輯專案" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "專案å稱:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "ç€è¦½" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "將目錄加入清單" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "確定" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "檔案(&F)" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "新增(&N)…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "從 &POT/PO 檔案新增…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "從 &POT/PO 檔案新增…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "開啟(&O)…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "開啟最近使用的檔案" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "開啟最近" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "開啟雲端翻譯…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "開啟雲端翻譯…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "啟動視窗(&S)" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "啟動視窗(&S)" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "編目檔管ç†å“¡(&M)" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "編目檔管ç†å“¡(&M)" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "關閉(&C)" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "儲存(&S)" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "å¦å­˜æ–°æª”(&A)…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "å¦å­˜æ–°æª”(&A)…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "ç·¨è­¯æˆ MO 檔案…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "匯出為 HTML(&X)…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "檢查更新…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "系統設定" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "å好設定(&P)" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "çµæŸ(&X)" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "退出" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "從單數型內容複製" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "從單數型內容複製" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "譯文待校閱(&W)" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "譯文待校閱(&W)" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "編輯註解(&C)" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "編輯註解(&C)" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "譯文建議" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "尋找(&F)…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "å–代…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "尋找下一筆" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "尋找上一筆" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "尋找åŠå–代…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "尋找下一筆" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "尋找上一筆" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "顯示字串 ID(&I)" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "顯示字串 ID(&I)" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "顯示警告訊æ¯" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "顯示警告訊æ¯" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "便“šæª”æ¡ˆé †åºæŽ’åº(&F)" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "便“šæª”æ¡ˆé †åºæŽ’åº(&F)" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "便“šåŽŸæ–‡æŽ’åº(&S)" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "便“šåŽŸæ–‡æŽ’åº(&S)" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "便“šè­¯æ–‡æŽ’åº(&T)" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "便“šè­¯æ–‡æŽ’åº(&T)" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "便“šä¸Šä¸‹æ–‡åˆ†çµ„(&G)" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "便“šä¸Šä¸‹æ–‡åˆ†çµ„(&G)" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "包å«éŒ¯èª¤çš„項目優先" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "包å«éŒ¯èª¤çš„項目優先" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "未翻譯項目優先(&U)" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "未翻譯項目優先(&U)" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "顯示程å¼ç¢¼å‡ºç¾è™•(&S)" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "顯示程å¼ç¢¼å‡ºç¾è™•(&S)" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "顯示å´é‚Šæ¬„" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "顯示狀態列" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "翻譯(&T)" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "從原始程å¼ç¢¼é€²è¡Œæ›´æ–°(&U)" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "從原始程å¼ç¢¼é€²è¡Œæ›´æ–°(&U)" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "與 Crowdin é€²è¡ŒåŒæ­¥" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "å‰ç½®ç¿»è­¯(&T)…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "驗證譯文(&V)" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "驗證譯文(&V)" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "ç§»é™¤å’Œä¾†æºæ–‡å­—相åŒçš„翻譯" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "清除已刪除的譯文(&P)" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "清除已刪除的譯文(&P)" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "屬性(&P)…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "å‰å¾€(&G)" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "完æˆä¸¦å‰å¾€ä¸‹ä¸€ç­†è­¯æ–‡(&D)" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "完æˆä¸¦å‰å¾€ä¸‹ä¸€ç­†è­¯æ–‡(&D)" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "å…ˆå‰ç·¨è¼¯éŽ" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "å…ˆå‰ç·¨è¼¯éŽ" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "å‰ä¸€ç­†è­¯æ–‡(&P)" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "å‰ä¸€ç­†è­¯æ–‡(&P)" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "下一筆譯文(&N)" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "下一筆譯文(&N)" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "å‰ä¸€ç­†æœªå®Œæˆè­¯æ–‡(&R)" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "å‰ä¸€ç­†æœªå®Œæˆè­¯æ–‡(&R)" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "下一筆未完æˆè­¯æ–‡(&X)" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "下一筆未完æˆè­¯æ–‡(&X)" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "å‰ä¸€ç­†è¤‡æ•¸åž‹è­¯æ–‡" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "å‰ä¸€ç­†è¤‡æ•¸åž‹è­¯æ–‡" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "下一筆複數型譯文" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "下一筆複數型譯文" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "線上說明(&O)" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "線上說明(&O)" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "GNU gettext 手冊(&G)" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "GNU gettext 手冊(&G)" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "關於 Poedit(&A)" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "關於(&A)" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "æ“·å–器設定" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "è«‹ä»¥åˆ†è™Ÿéš”é–‹å‰¯æª”åæ¸…å–® (例如 *.cpp; *.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "喚起:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "æ“·å–譯文的命令:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "這是用來啟動抽å–器的指令。\n" "%o 會展開æˆè¼¸å‡ºæª”çš„å稱,%K 是\n" "é—œéµå­—清單,%F 是輸入檔清單,\n" "%C 是字集旗標 (åƒé–±ä¸‹æ–¹)。" #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "é—œéµå­—清單中的一個項目:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "這個內容會按照æ¯å€‹é—œéµå­—逿¬¡\n" "附到命令列中。%k 會展開æˆé—œéµå­—。" #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "輸入檔清單中的一個項目:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "這個內容會按照æ¯å€‹è¼¸å…¥æª”逿¬¡\n" "附到命令列中。%f æœƒå±•é–‹æˆæª”å。" #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "原始程å¼ç¢¼å­—元集:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "åªæœ‰åœ¨çµ¦å®šåŽŸå§‹ç¢¼å­—é›†æ™‚ï¼Œé€™å€‹å…§å®¹\n" "æ‰æœƒé™„到命令列中。%c 會展開æˆå­—集的值。" #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "譯文屬性" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "專案å稱åŠç‰ˆæœ¬ï¼š" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "語言團隊:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "複數型:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "使用這個語言的é è¨­è¦å‰‡" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "使用自訂é‹ç®—å¼" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "深入瞭解複數型" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "字元集:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "進階擷å–設定…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "進階擷å–設定…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "譯文屬性" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "原始程å¼ç¢¼è·¯å¾‘" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "原始程å¼ç¢¼è·¯å¾‘" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "æ“·å–ä¸‹åˆ—ç›®éŒ„ä¸­çš„åŽŸå§‹ç¨‹å¼æª”文字:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "基底路徑:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "原始程å¼ç¢¼é—œéµå­—" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "原始程å¼ç¢¼é—œéµå­—" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "在原始程å¼ç¢¼ä¸­ä½¿ç”¨é€™äº›é—œéµå­— (函å¼å稱) 以辨識å¯ç¿»è­¯å­—串:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "åŒæ™‚為支æ´çš„語言使用é è¨­é—œéµå­—" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "深入瞭解 gettext é—œéµå­—" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "開啟檔案" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "儲存檔案" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "é©—è­‰" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "æª¢æŸ¥è­¯æ–‡ä¸­æ˜¯å¦æœ‰éŒ¯èª¤" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "從原始程å¼ç¢¼é€²è¡Œæ›´æ–°" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "從原始程å¼ç¢¼é€²è¡Œæ›´æ–°" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "從原始程å¼ç¢¼æ›´æ–°" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "å´é‚Šæ¬„" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "顯示或隱è—å´é‚Šæ¬„" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "éŽåŽ»çš„ä¾†æºæ–‡å­—" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "ç¾åœ¨çš„ä¸ç²¾ç¢ºè­¯æ–‡å°æ‡‰çš„æ˜¯ï¼ˆåœ¨ç”¨æ¨¡æ¿æª”更新之å‰ï¼‰èˆŠçš„æºæ–‡ã€‚" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "給譯者的備註" #: src/sidebar.cpp:196 msgid "Comment" msgstr "註解" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "新增註解" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "新增註解" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "從譯文記憶庫中刪除" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "從譯文記憶庫中刪除" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "翻譯建議" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "找ä¸åˆ°ç¬¦åˆæ¢ä»¶çš„é …ç›®" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "找ä¸åˆ°ç¬¦åˆæ¢ä»¶çš„é …ç›®" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "這個字串已儲存於 Poedit 的譯文記憶庫。" #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "翻譯建議需è¦å¯ä¾›ä½¿ç”¨çš„ä¾†æºæ–‡å­—。如果僅使用沒有實際文字的 ID,翻譯建議將無法é‹" "作。" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "需è¦å…ˆçŸ¥é“ä¾†æºæ–‡å­—的語言,æ‰èƒ½æä¾›ç¿»è­¯å»ºè­°ã€‚Poedit ç„¡æ³•å¾žé€™å€‹æª”æ¡ˆåµæ¸¬èªžè¨€ã€‚" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "無法執行程å¼ï¼š%s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX 檔案格å¼éŒ¯èª¤ã€‚" #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "è­¯æ–‡è¨˜æ†¶åº«å·²ææ¯€ï¼š%s (%d)。" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "譯文記憶庫錯誤:%s (%d)。" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(使用é è¨­èªžè¨€)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "èªžè¨€é¸æ“‡" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "é¸å–您å好的語言" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "您得è¦é‡æ–°å•Ÿå‹• Poedit é€™é …æ›´å‹•æ‰æœƒç”Ÿæ•ˆã€‚" #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "無法建立暫存目錄。" #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "沒有譯文。這並ä¸å°‹å¸¸ã€‚" #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "在 Gettext 系統中,å¯ç¿»è­¯é …ç›®ä¸¦éžæ‰‹å‹•新增,而是自動從原始程å¼ç¢¼ä¸­æ“·å–。如此一" "來,這些項目æ‰èƒ½ä¿æŒæœ€æ–°ç‹€æ…‹å’Œæº–確性。翻譯人員通常會使用開發人員為其準備的 " "PO 範本檔案(POT)。" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "深入瞭解 GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "填充翻譯至檔案的最簡易解法,就是從 POT 檔更新:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "從 POT 檔更新" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "從既有的 POT æ¨¡æ¿æª”æ‹¿å–å¯ç¿»è­¯å­—串。" #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "您也å¯ä»¥ç›´æŽ¥å¾žåŽŸå§‹ç¢¼æŠ½å‡ºå¯ç¿»è­¯å­—串:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "å¾žä¾†æºæ›´æ–°" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "在「屬性ã€ä¸­è¨­å®šåŽŸå§‹ç¢¼æŠ½å‡ºé …ç›®ã€‚" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "版本 %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "新增" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "從 POT 模æ¿å»ºç«‹æ–°ç¿»è­¯ã€‚" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "ç€è¦½æª”案" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "開啟åŠç·¨è¼¯ç¿»è­¯æª”案。" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "翻譯雲端專案" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "與其他人在線上å”作。" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "最近檔案" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "åŒæ­¥" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "與 Crowdin åŒæ­¥è­¯æ–‡" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "關於 %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s å好設定" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "關於 %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "æœå‹™" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "éš±è— %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "éš±è—å…¶ä»–" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "顯示全部" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "çµæŸ %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "å好設定…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "設定å好..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "設定å好..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "套用(&A)" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "套用" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "返回(&B)" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "返回" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "å–æ¶ˆ(&C)" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "清除(&C)" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "清除" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "複製" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "剪下(&T)" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "剪下" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "編輯" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "離開(&Q)" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "說明" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "新增(&N)" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "新增" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "å¦(&N)" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "å¦" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "確定(&O)" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "開啟…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "開啟(&O)..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "開啟..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "貼上(&P)" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "貼上" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "å好設定" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "é‡åš(&R)" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "釿–°æ•´ç†" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "å¦å­˜ç‚º(&S)" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "å¦å­˜ç‚º" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "é¸å–全部(&A)" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "é¸å–全部" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "復原(&U)" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "是(&Y)" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "是" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "å‘上éµ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "å‘下éµ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "å‘å·¦éµ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "å‘å³éµ" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "警告:" poedit-3.6.3/locales/ka.po0000644000175100001660000034120415011674364011061 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-05-11 10:16\n" "Last-Translator: \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=2; plural=(n != 1);\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: ka\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "დáƒáƒ›áƒáƒšáƒ” ეს შეტყáƒáƒ‘ინებáƒ" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "áƒáƒ¦áƒáƒ  მáƒáƒ©áƒ•ენáƒ" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "áƒáƒ¦áƒáƒ  მáƒáƒ©áƒ•ენáƒ" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "შეჯáƒáƒ›áƒ”ბის გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "შეჯáƒáƒ›áƒ”ბის გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "დáƒáƒ®áƒ£áƒ áƒ•áƒ" #: src/cat_update.cpp:161 msgid "Issues" msgstr "პრáƒáƒ‘ლემები" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "ფáƒáƒ˜áƒšáƒ˜" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "ხáƒáƒ–ი" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "პრáƒáƒ‘ლემáƒ" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "áƒáƒ®áƒáƒšáƒ˜ სტრიქáƒáƒœáƒ”ბი" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებები" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ სტრიქáƒáƒœáƒ”ბი" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ სტრიქáƒáƒœáƒ”ბი" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "მáƒáƒœáƒáƒªáƒ”მების სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ კáƒáƒ“იდáƒáƒœ შეგრáƒáƒ•ებáƒâ€¦" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "მიმდინáƒáƒ áƒ”áƒáƒ‘ს სáƒáƒ—áƒáƒ áƒ’მნი ფრáƒáƒ–ების áƒáƒ›áƒáƒ¦áƒ”ბრ%s ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœâ€¦" msgstr[1] "მიმდინáƒáƒ áƒ”áƒáƒ‘ს სáƒáƒ—áƒáƒ áƒ’მნი ფრáƒáƒ–ების áƒáƒ›áƒáƒ¦áƒ”ბრ%s ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœâ€¦" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "ვერ მáƒáƒ®áƒ”რხდრფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¢áƒ•ირთვრáƒáƒ›áƒáƒ¦áƒ”ბული თáƒáƒ áƒ’მáƒáƒœáƒ”ბით." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "%s -ში" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "წყáƒáƒ áƒáƒ¡ კáƒáƒ“ი მიუწვდáƒáƒ›áƒ”ლიáƒ." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "წყáƒáƒ áƒáƒ¡ კáƒáƒ“იდáƒáƒœ თáƒáƒ áƒ’მáƒáƒœáƒ”ბის გáƒáƒœáƒáƒ®áƒšáƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ, რáƒáƒ“გáƒáƒœ ფáƒáƒ˜áƒšáƒ˜áƒ¡ თვისებებში " "მითითებულ áƒáƒ“გილáƒáƒ¡ კáƒáƒ“ი ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "ნებáƒáƒ áƒ—ვრუáƒáƒ áƒ§áƒáƒ¤áƒ˜áƒšáƒ˜áƒ." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "თქვენ áƒáƒ  გáƒáƒ¥áƒ•თ ნებáƒáƒ áƒ—ვáƒ, წáƒáƒ˜áƒ™áƒ˜áƒ—ხáƒáƒ— წყáƒáƒ áƒáƒ¡ კáƒáƒ“ის ფáƒáƒ˜áƒšáƒ”ბი ფáƒáƒ˜áƒšáƒ˜áƒ¡ თვისებებში " "მითითებული მდებáƒáƒ áƒ”áƒáƒ‘იდáƒáƒœ." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "თუ თქვენ შეზღუდეთ წვდáƒáƒ›áƒ თქვენს ფáƒáƒ˜áƒšáƒ”ბზე, შეგიძლიáƒáƒ— წვდáƒáƒ›áƒ˜áƒ¡ მიცემრსისტემის " "პáƒáƒ áƒáƒ›áƒ”ტრებში > კáƒáƒœáƒ¤áƒ˜áƒ“ენციáƒáƒšáƒ£áƒ áƒáƒ‘რ& უსáƒáƒ¤áƒ áƒ—ხáƒáƒ”ბრ> ფáƒáƒ˜áƒšáƒ”ბი & სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეები." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "თუ თქვენ შეზღუდეთ წვდáƒáƒ›áƒ თქვენს ფáƒáƒ˜áƒšáƒ”ბზე, შეგიძლიáƒáƒ— წვდáƒáƒ›áƒ˜áƒ¡ მიცემრსისტემის " "პáƒáƒ áƒáƒ›áƒ”ტრებში > უსáƒáƒ¤áƒ áƒ—ხáƒáƒ”ბრ& კáƒáƒœáƒ¤áƒ˜áƒ“ენციáƒáƒšáƒ£áƒ áƒáƒ‘რ> კáƒáƒœáƒ¤áƒ˜áƒ“ენციáƒáƒšáƒ£áƒ áƒáƒ‘რ> ფáƒáƒ˜áƒšáƒ”ბი " "& სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეები." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "კáƒáƒ“იდáƒáƒœ სტრიქáƒáƒœáƒ”ბის áƒáƒ›áƒáƒ¦áƒ”ბრჩáƒáƒ•áƒáƒ áƒ“áƒ." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ \"%s\" გáƒáƒ®áƒ¡áƒœáƒ შეუძლებელიáƒ." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "მიმდინáƒáƒ áƒ”áƒáƒ‘ს თáƒáƒ áƒ’მáƒáƒœáƒ”ბის გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "სხვáƒáƒáƒ‘ის დáƒáƒ“ებáƒâ€¦" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "გáƒáƒœáƒ¡áƒ®áƒ•áƒáƒ•ებების შერწყმáƒâ€¦" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ˜ უკვე გáƒáƒœáƒáƒ®áƒšáƒ”ბულიáƒ. სტრიქáƒáƒœáƒ”ბში გáƒáƒœáƒáƒ®áƒšáƒ”ბრáƒáƒ  მáƒáƒ›áƒ®áƒ“áƒáƒ áƒ." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ˜ áƒáƒ˜áƒ¢áƒ•ირთრ%s ცვლილებით." msgstr[1] "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ˜ áƒáƒ˜áƒ¢áƒ•ირთრ%s ცვლილებით." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "áƒáƒ®áƒáƒšáƒ˜ სტრიქáƒáƒœáƒ”ბი სáƒáƒ—áƒáƒ áƒ’მნáƒáƒ“:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ სტრიქáƒáƒœáƒ”ბი (áƒáƒ¦áƒáƒ  გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნებáƒ):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირ%d ცვლილებრწყáƒáƒ áƒ სტრიქáƒáƒœáƒ”ბში." msgstr[1] "áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირ%d ცვლილებრწყáƒáƒ áƒ სტრიქáƒáƒœáƒ”ბში." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "დეტáƒáƒšáƒ”ბის ნáƒáƒ®áƒ•áƒâ€¦" #: src/cat_update.cpp:530 msgid "View details…" msgstr "დეტáƒáƒšáƒ”ბის ნáƒáƒ®áƒ•áƒâ€¦" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ჰედერი: \"%s\"" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO თáƒáƒ áƒ’მნის ფáƒáƒ˜áƒšáƒ”ბი" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT თáƒáƒ áƒ’მნის შáƒáƒ‘ლáƒáƒœáƒ”ბი" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ”ბი" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Xcode-ის ლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ კáƒáƒ¢áƒáƒšáƒáƒ’ი" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON თáƒáƒ áƒ’მნის ფáƒáƒ˜áƒšáƒ”ბი" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter თáƒáƒ áƒ’მნის ფáƒáƒ˜áƒšáƒ”ბი" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "თáƒáƒ áƒ’მნის ყველრფáƒáƒ˜áƒšáƒ˜" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ ფáƒáƒ áƒ›áƒáƒ¢áƒ˜ Poedit-სთვის უცნáƒáƒ‘იáƒ." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "ეს JSON ფáƒáƒ˜áƒšáƒ˜ სáƒáƒ—áƒáƒ áƒ’მნი ფáƒáƒ˜áƒšáƒ˜ áƒáƒ áƒáƒ დრმáƒáƒ¡ Poedit-ით ვერ ჩáƒáƒáƒ¡áƒ¬áƒáƒ áƒ”ბთ." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ შიგთáƒáƒ•სის წáƒáƒ™áƒ˜áƒ—ხვრდáƒáƒ¡áƒ áƒ£áƒšáƒ“რშემდეგი შეცდáƒáƒ›áƒ˜áƒ—: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "ფáƒáƒ˜áƒšáƒ˜ “%s†áƒáƒ áƒ˜áƒ¡ მხáƒáƒšáƒáƒ“ წáƒáƒ™áƒ˜áƒ—ხვáƒáƒ“ი დრმისი შენáƒáƒ®áƒ•რშეუძლებელიáƒ.\n" "გთხáƒáƒ•თ, შეინáƒáƒ®áƒáƒ— სხვრსáƒáƒ®áƒ”ლით." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "%s ფáƒáƒ˜áƒšáƒ˜áƒ¡ შენáƒáƒ®áƒ•რვერ მáƒáƒ®áƒ”რხდáƒ." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "ეკრáƒáƒœáƒ˜áƒ¡ áƒáƒœáƒáƒ‘ეჭდები:" #: src/catalog_po.cpp:134 #, 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] "“%2$s†ფáƒáƒ˜áƒšáƒ˜áƒ¡ %1$i ხáƒáƒ–ი სწáƒáƒ áƒáƒ“ áƒáƒ  ჩáƒáƒ˜áƒ¢áƒ•ირთáƒ." msgstr[1] "“%2$s†ფáƒáƒ˜áƒšáƒ˜áƒ¡ %1$i ხáƒáƒ–ი სწáƒáƒ áƒáƒ“ áƒáƒ  ჩáƒáƒ˜áƒ¢áƒ•ირთáƒ." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "“%2$s†ფáƒáƒ˜áƒšáƒ˜áƒ¡ %1$d ხáƒáƒ–ი დáƒáƒ–იáƒáƒœáƒ”ბულირ(მáƒáƒœáƒáƒªáƒ”მი %3$s áƒáƒ  áƒáƒ áƒ˜áƒ¡ ვáƒáƒšáƒ˜áƒ“ური)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "დáƒáƒ–იáƒáƒœáƒ”ბული PO ფáƒáƒ˜áƒšáƒ˜: msgstr-ის მხáƒáƒšáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ გáƒáƒ›áƒáƒ§áƒ”ნებულირmsgid_plural-" "თáƒáƒœ ერთáƒáƒ“" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "დáƒáƒ–იáƒáƒœáƒ”ბული PO ფáƒáƒ˜áƒšáƒ˜: msgstr-ის მრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ გáƒáƒ›áƒáƒ§áƒ”ნებულირmsgid_plural-" "ის გáƒáƒ áƒ”შე" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¢áƒ•ირთვრშეუძლებელიáƒ. სáƒáƒ•áƒáƒ áƒáƒ£áƒ“áƒáƒ“ იგი დáƒáƒ–იáƒáƒœáƒ”ბულიáƒ." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¢áƒ•ირთვისáƒáƒ¡ წáƒáƒ áƒ›áƒáƒ˜áƒ¨áƒ•რშეცდáƒáƒ›áƒ”ბი. შედეგáƒáƒ“, ზáƒáƒ’იერთი მáƒáƒœáƒáƒªáƒ”მი შესáƒáƒ«áƒšáƒáƒ " "იყáƒáƒ¡ გáƒáƒ›áƒáƒ™áƒšáƒ”ბული áƒáƒœ დáƒáƒ–იáƒáƒœáƒ”ბული." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "ფáƒáƒ˜áƒšáƒ˜áƒ¡ უკეთ ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ áƒ”ბისáƒáƒ¡ პრáƒáƒ‘ლემრშეიქმნრ(თუმცრფáƒáƒ˜áƒšáƒ˜ გáƒáƒ›áƒáƒ áƒ—ულáƒáƒ“ იქნრ" "შენáƒáƒ®áƒ£áƒšáƒ˜)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "ფáƒáƒ˜áƒšáƒ˜áƒ¡ შენáƒáƒ®áƒ•რპáƒáƒ áƒáƒ›áƒ”ტრებში მითითებული “%s†კáƒáƒ“ირებით ვერ მáƒáƒ®áƒ”რხდáƒ.\n" "\n" "მის ნáƒáƒªáƒ•ლáƒáƒ“, ფáƒáƒ˜áƒšáƒ˜ შენáƒáƒ®áƒ£áƒšáƒ˜áƒ UTF-8 კáƒáƒ“ირებით დრპáƒáƒ áƒáƒ›áƒ”ტრიც შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒáƒ“ " "შეიცვáƒáƒšáƒ." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "შეცდáƒáƒ›áƒ ფáƒáƒ˜áƒšáƒ˜áƒ¡ შენáƒáƒ®áƒ•ისáƒáƒ¡" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "'%s' áƒáƒ  áƒáƒ áƒ˜áƒ¡ ვáƒáƒšáƒ˜áƒ“ური POT ფáƒáƒ˜áƒšáƒ˜." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "მáƒáƒ£áƒšáƒáƒ“ნელი ნáƒáƒ™áƒšáƒ£áƒšáƒ˜ შემცველáƒáƒ‘რXCLOC ფáƒáƒ˜áƒšáƒ¨áƒ˜." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "სხვრáƒáƒ“გილáƒáƒ¡ შენáƒáƒ®áƒ•რXCLOC ფáƒáƒ˜áƒšáƒ”ბისთვის მხáƒáƒ áƒ“áƒáƒ­áƒ”რილი áƒáƒ áƒáƒ." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFF ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ¢áƒ•ირთვის შეცდáƒáƒ›áƒ: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "მხáƒáƒ áƒ“áƒáƒ£áƒ­áƒ”რელი ვერსირ(%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "დáƒáƒ–იáƒáƒœáƒ”ბული მáƒáƒ áƒ™áƒ˜áƒ áƒ”ბáƒáƒ—áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ხáƒáƒ–ში." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "დáƒáƒáƒ™áƒáƒ•შირეთ Poedit ღრუბლáƒáƒ•áƒáƒœ ლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ მხáƒáƒ áƒ“áƒáƒ­áƒ”რილ პლáƒáƒ¢áƒ¤áƒáƒ áƒ›áƒ”ბთáƒáƒœ, მáƒáƒ—ზე " "áƒáƒ áƒ¡áƒ”ბული თáƒáƒ áƒ’მáƒáƒœáƒ”ბის შეუფერხებლáƒáƒ“ სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡áƒ—ვის." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "რáƒáƒ’áƒáƒ  მუშáƒáƒáƒ‘ს ღრუბლáƒáƒ•áƒáƒœáƒ˜ სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "( áƒáƒ  áƒáƒ áƒ˜áƒ¡ áƒáƒ•ტáƒáƒ áƒ˜áƒ–ებული)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "ღრუბლáƒáƒ•áƒáƒœáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒ" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ”ბის მáƒáƒ áƒ—ვáƒ" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "პრáƒáƒ”ქტი:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "ენáƒ:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "გáƒáƒ˜áƒáƒ áƒ”თ áƒáƒ•ტáƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ ღრუბლáƒáƒ•áƒáƒœ áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¨áƒ˜" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "გáƒáƒ˜áƒáƒ áƒ”თ áƒáƒ•ტáƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ ღრუბლáƒáƒ•áƒáƒœ áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¨áƒ˜" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "თქვენს áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¨áƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ პრáƒáƒ”ქტები áƒáƒ  áƒáƒ áƒ˜áƒ¡." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "მიმდინáƒáƒ áƒ”áƒáƒ‘ს უáƒáƒ®áƒšáƒ”სი თáƒáƒ áƒ’მáƒáƒœáƒ”ბის ჩáƒáƒ›áƒáƒ¢áƒ•ირთვáƒâ€¦" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "შედით %s-ში" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "მიმდინáƒáƒ áƒ”áƒáƒ‘ს თáƒáƒ áƒ’მáƒáƒœáƒ”ბის áƒáƒ¢áƒ•ირთვრ%s-ზე…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "%s-ზე თáƒáƒ áƒ’მáƒáƒœáƒ”ბის áƒáƒ¢áƒ•ირთვრვერ მáƒáƒ®áƒ”რხდáƒ." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ შეცდáƒáƒ›áƒ" #: src/commentdlg.cpp:48 msgid "Add" msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Crowdin-ის უცნáƒáƒ‘ი შეცდáƒáƒ›áƒ." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "áƒáƒ  ხáƒáƒ áƒ— áƒáƒ•ტáƒáƒ áƒ˜áƒ–ებული. გთხáƒáƒ•თ, ხელáƒáƒ®áƒšáƒ გáƒáƒ˜áƒáƒ áƒáƒ— áƒáƒ•ტáƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "სტრიქáƒáƒœáƒ”ბზე დáƒáƒ¤áƒ£áƒ«áƒœáƒ”ბული Crowdin-ის პრáƒáƒ”ქტები მხáƒáƒ áƒ“áƒáƒ­áƒ”რილი áƒáƒ áƒáƒ." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "áƒáƒ› პრáƒáƒ”ქტში თáƒáƒ áƒ’მáƒáƒœáƒ”ბის ჩáƒáƒ›áƒáƒ¢áƒ•ირთვრგáƒáƒ›áƒáƒ áƒ—ულიáƒ." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "შესვლáƒ" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "შესვლáƒ" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "გáƒáƒ›áƒáƒ¡áƒ•ლáƒ" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "გáƒáƒ›áƒáƒ¡áƒ•ლáƒ" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "შეიტყვეთ მეტი Crowdin-ის შესáƒáƒ®áƒ”ბ" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "áƒáƒ£áƒ—ენთიფიკáƒáƒªáƒ˜áƒ˜áƒ¡ ლáƒáƒ“ინი…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "მიმდინáƒáƒ áƒ”áƒáƒ‘ს მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒâ€¦" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "შედით Crowdin-ში" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Crowdin-თáƒáƒœ სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ ვერ მáƒáƒ®áƒ”რხდáƒ." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin-ის შეცდáƒáƒ›áƒ" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "მიმდინáƒáƒ áƒ”áƒáƒ‘ს თáƒáƒ áƒ’მáƒáƒœáƒ”ბის áƒáƒ¢áƒ•ირთვáƒâ€¦" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&კáƒáƒžáƒ˜áƒ áƒ”ბáƒ" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO ფáƒáƒ˜áƒšáƒ”ბის Poedit-ში ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბრშეუძლებელიáƒ." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "შეცდáƒáƒ›áƒ ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡áƒáƒ¡" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "გთხáƒáƒ•თ, MO ფáƒáƒ˜áƒšáƒ˜áƒ¡ ნáƒáƒªáƒ•ლáƒáƒ“, გáƒáƒ®áƒ¡áƒ”ნით დრდáƒáƒáƒ áƒ”დáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”თ შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒ˜ PO ფáƒáƒ˜áƒšáƒ˜. " "რáƒáƒ“ესáƒáƒª PO ფáƒáƒ˜áƒšáƒ¡ შეინáƒáƒ®áƒáƒ•თ, MO ფáƒáƒ˜áƒšáƒ˜áƒª გáƒáƒœáƒáƒ®áƒšáƒ“ებáƒ." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "áƒáƒ  მáƒáƒ®áƒ“ეს დრáƒáƒ”ბითი ფáƒáƒ˜áƒšáƒ”ბის წáƒáƒ¨áƒšáƒ (გáƒáƒ›áƒáƒ áƒ—ვისთვის)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "poedit:// URI-ების გáƒáƒ®áƒ¡áƒœáƒ" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "მითითებული ხáƒáƒ–ის ნáƒáƒ›áƒ áƒ˜áƒ— ელემენტზე გáƒáƒ“áƒáƒ¡áƒ•ლáƒ" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "ვერ მáƒáƒ®áƒ”რხდრPoedit-ის პრáƒáƒªáƒ”სთáƒáƒœ დáƒáƒ™áƒáƒ•შირებáƒ." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "წáƒáƒ áƒ›áƒáƒ˜áƒ¨áƒ•რმáƒáƒ£áƒšáƒáƒ“ნელი გáƒáƒ›áƒáƒœáƒáƒ™áƒšáƒ˜áƒ¡áƒ˜: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ შáƒáƒ‘ლáƒáƒœáƒ˜" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒ˜áƒšáƒ˜" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ˜" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit áƒáƒ áƒ˜áƒ¡ მáƒáƒ áƒ¢áƒ˜áƒ•ი გáƒáƒ›áƒáƒ¡áƒáƒ§áƒ”ნებელი თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ რედáƒáƒ¥áƒ¢áƒáƒ áƒ˜." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "თქვენ áƒáƒ  შეგიძლიáƒáƒ— ერთზე მეტი ფáƒáƒ˜áƒšáƒ˜áƒ¡ ჩáƒáƒ’დებრPoedit-ის ფáƒáƒœáƒ¯áƒáƒ áƒáƒ¨áƒ˜." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "ფáƒáƒ˜áƒšáƒ˜ “%s†áƒáƒ  áƒáƒ áƒ˜áƒ¡ თáƒáƒ áƒ’მნის ფáƒáƒ˜áƒšáƒ˜." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "ფáƒáƒ˜áƒšáƒ˜ \"%s\" áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "მáƒáƒ áƒ—ლწერის შემáƒáƒ¬áƒ›áƒ”ბრგáƒáƒ›áƒáƒ áƒ—ულიáƒ, რáƒáƒ“გáƒáƒœ %s-ისთვის ლექსიკáƒáƒœáƒ˜ áƒáƒ  áƒáƒ áƒ˜áƒ¡ " "დáƒáƒ§áƒ”ნებული." #: src/edframe.cpp:871 msgid "Install" msgstr "დáƒáƒ§áƒ”ნებáƒ" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "ფáƒáƒ˜áƒšáƒ˜ “%s†შეიცვáƒáƒšáƒ სხვრáƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ მიერ." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ თáƒáƒ•იდáƒáƒœ ჩáƒáƒ¢áƒ•ირთვáƒ" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "გსურთ ფáƒáƒ˜áƒšáƒ˜áƒ¡ ხელáƒáƒ®áƒšáƒ ჩáƒáƒ¢áƒ•ირთვრდისკიდáƒáƒœ? თუ ხელáƒáƒ®áƒšáƒ ჩáƒáƒ¢áƒ•ირთáƒáƒ•თ, Poedit-ში " "თქვენს მიერ გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლებული ცვლილებები დáƒáƒ˜áƒ™áƒáƒ áƒ’ებáƒ." #: src/edframe.cpp:968 msgid "Ignore" msgstr "იგნáƒáƒ áƒ˜áƒ áƒ”ბáƒ" #: src/edframe.cpp:968 msgid "Reload File" msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ ხელáƒáƒ®áƒšáƒ ჩáƒáƒ¢áƒ•ირთვáƒ" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "ფáƒáƒ˜áƒšáƒ˜ შეიცვáƒáƒšáƒ. გსურთ ცვლილებების შენáƒáƒ®áƒ•áƒ?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "ცვლილებების შენáƒáƒ®áƒ•áƒ" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "თქვენი ცვლილებები დáƒáƒ˜áƒ™áƒáƒ áƒ’ებáƒ, თუ მáƒáƒ— áƒáƒ  შეინáƒáƒ®áƒáƒ•თ." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "შენáƒáƒ®áƒ•áƒ" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&áƒáƒ  შეინáƒáƒ®áƒ" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "áƒáƒ  შეინáƒáƒ®áƒ" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "თუ შეინáƒáƒ®áƒáƒ•თ, სხვრáƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ მხრიდáƒáƒœ გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლებული ცვლილებები დáƒáƒ˜áƒ™áƒáƒ áƒ’ებáƒ." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "შეინáƒáƒ®áƒ” მáƒáƒ˜áƒœáƒª" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "შეინáƒáƒ®áƒ” მáƒáƒ˜áƒœáƒª" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "შენáƒáƒ®áƒ•რრáƒáƒ’áƒáƒ áƒªâ€¦" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "კáƒáƒ›áƒžáƒ˜áƒšáƒáƒªáƒ˜áƒ ფáƒáƒ˜áƒšáƒ¨áƒ˜â€¦" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ კáƒáƒ›áƒžáƒ˜áƒšáƒ˜áƒ áƒ”ბული ფáƒáƒ˜áƒšáƒ”ბი" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "გáƒáƒ¢áƒáƒœáƒ HTML-ში…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML ფáƒáƒ˜áƒšáƒ”ბი" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "გáƒáƒ¢áƒáƒœáƒ HTML-ში" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "მიმáƒáƒ áƒ—ვების ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒ" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "&POT ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒâ€¦" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "&POT ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒâ€¦" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "თáƒáƒ áƒ’მáƒáƒœáƒ—áƒáƒœ დáƒáƒ™áƒáƒ•შირებით წáƒáƒ áƒ›áƒáƒ˜áƒ¨áƒ•რ%d შეფერხებáƒ." msgstr[1] "თáƒáƒ áƒ’მáƒáƒœáƒ—áƒáƒœ დáƒáƒ™áƒáƒ•შირებით წáƒáƒ áƒ›áƒáƒ˜áƒ¨áƒ•რ%d შეფერხებáƒ." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "ვáƒáƒšáƒ˜áƒ“áƒáƒªáƒ˜áƒ˜áƒ¡ შედეგები" #: src/edframe.cpp:1842 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 "" "ჩáƒáƒœáƒáƒ¬áƒ”რები, რáƒáƒ›áƒ”ლიც შეიცáƒáƒ•ს შეცდáƒáƒ›áƒáƒ¡, სიáƒáƒ¨áƒ˜ მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜áƒ წითლáƒáƒ“. შეცდáƒáƒ›áƒ˜áƒ¡ " "დეტáƒáƒšáƒ”ბი გáƒáƒ›áƒáƒ©áƒœáƒ“ებრმáƒáƒ¨áƒ˜áƒœ, რáƒáƒ“ესáƒáƒª áƒáƒ˜áƒ áƒ©áƒ”ვთ შეცდáƒáƒ›áƒ˜áƒ¡ შემცველ ჩáƒáƒœáƒáƒ¬áƒ”რს." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "ფáƒáƒ˜áƒšáƒ˜ უსáƒáƒ¤áƒ áƒ—ხáƒáƒ“ იქნრშენáƒáƒ®áƒ£áƒšáƒ˜." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "ფáƒáƒ˜áƒšáƒ˜ უსáƒáƒ¤áƒ áƒ—ხáƒáƒ“ იქნრშენáƒáƒ®áƒ£áƒšáƒ˜ დრდáƒáƒ™áƒáƒ›áƒžáƒ˜áƒšáƒ˜áƒ áƒ”ბული MO ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜, მáƒáƒ’რáƒáƒ› ის " "სáƒáƒ•áƒáƒ áƒáƒ£áƒ“áƒáƒ“ áƒáƒ  იმუშáƒáƒ•ებს სწáƒáƒ áƒáƒ“." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "ფáƒáƒ˜áƒšáƒ˜ წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით იქნრშენáƒáƒ®áƒ£áƒšáƒ˜, თუმცრმისი MO ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜ კáƒáƒ›áƒžáƒ˜áƒšáƒáƒªáƒ˜áƒ დრ" "გáƒáƒ›áƒáƒ§áƒ”ნებრვერ მáƒáƒ®áƒ”რხდáƒ." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "ფáƒáƒ˜áƒšáƒ˜ დáƒáƒ™áƒáƒ›áƒžáƒ˜áƒšáƒ˜áƒ áƒ”ბულირMO ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜, თუმცრშესáƒáƒ«áƒšáƒáƒ, áƒáƒ  იმუშáƒáƒáƒ¡ სწáƒáƒ áƒáƒ“." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ MO ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜ დáƒáƒ™áƒáƒ›áƒžáƒ˜áƒšáƒ˜áƒ áƒ”ბრდრგáƒáƒ›áƒáƒ§áƒ”ნებრშეუძლებელიáƒ." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ¨áƒ˜ შეცდáƒáƒ›áƒ”ბი ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." #: src/edframe.cpp:1894 #, 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] "" "თáƒáƒ áƒ’მáƒáƒœáƒ˜ გáƒáƒ›áƒáƒ¡áƒáƒ§áƒ”ნებლáƒáƒ“ მზáƒáƒ“áƒáƒ, მáƒáƒ’რáƒáƒ› %d ჩáƒáƒœáƒáƒ¬áƒ”რი ჯერ áƒáƒ  áƒáƒ áƒ˜áƒ¡ ნáƒáƒ—áƒáƒ áƒ’მნი." msgstr[1] "" "თáƒáƒ áƒ’მáƒáƒœáƒ˜ გáƒáƒ›áƒáƒ¡áƒáƒ§áƒ”ნებლáƒáƒ“ მზáƒáƒ“áƒáƒ, მáƒáƒ’რáƒáƒ› %d ჩáƒáƒœáƒáƒ¬áƒ”რი ჯერ áƒáƒ  áƒáƒ áƒ˜áƒ¡ ნáƒáƒ—áƒáƒ áƒ’მნი." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜ გáƒáƒ›áƒáƒ¡áƒáƒ§áƒ”ნებლáƒáƒ“ მზáƒáƒ“ áƒáƒ áƒ˜áƒ¡." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit-მრáƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ გáƒáƒáƒ¡áƒ¬áƒáƒ áƒ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ შინáƒáƒáƒ áƒ¡áƒ˜ “%s†ფáƒáƒ˜áƒšáƒ¨áƒ˜." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ენრáƒáƒ  áƒáƒ áƒ˜áƒ¡ დáƒáƒ§áƒ”ნებული." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "ენის áƒáƒ áƒ©áƒ”ვáƒ" #: src/edframe.cpp:2317 msgid "Set language" msgstr "ენის áƒáƒ áƒ©áƒ”ვáƒ" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "" #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "ენის გáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "ენის გáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "" "ფáƒáƒ˜áƒšáƒ¡ áƒáƒ™áƒšáƒ˜áƒ áƒáƒ£áƒªáƒ˜áƒšáƒ”ბელი ჰედერი მრáƒáƒ•ლáƒáƒ‘ითის ფáƒáƒ áƒ›áƒ”ბთáƒáƒœ (Plural-Forms) " "დáƒáƒ™áƒáƒ•შირებით." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "სინტáƒáƒ¥áƒ¡áƒ£áƒ áƒ˜ შეცდáƒáƒ›áƒ Plural-Forms ჰედერის ჩáƒáƒœáƒáƒ¬áƒ”რში (\"%s\")." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "ჰედერის გáƒáƒ›áƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "გáƒáƒ“áƒáƒ®áƒ”დვáƒ" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "გსურთ გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნáƒáƒ— ინგლისური ენრსáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ტექსტისთვის?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "ინგლისურის ჩáƒáƒ¢áƒ•ირთვáƒ" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "ნáƒáƒ—áƒáƒ áƒ’მნიáƒ: %d %d-დáƒáƒœ (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "დáƒáƒ áƒ©áƒ”ნილიáƒ: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d შეცდáƒáƒ›áƒ" msgstr[1] "%d შეცდáƒáƒ›áƒ" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d ჩáƒáƒœáƒáƒ¬áƒ”რი" msgstr[1] "%d ჩáƒáƒœáƒáƒ¬áƒ”რი" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (შეუნáƒáƒ®áƒáƒ•ი)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (შეიცვáƒáƒšáƒ)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერების გáƒáƒœáƒáƒ®áƒšáƒ”ბის შეცდáƒáƒ›áƒ: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ \"%s\" შენáƒáƒ®áƒ•რშეუძლებელიáƒ." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "შენáƒáƒ áƒ©áƒ£áƒœáƒ”ბáƒ" #: src/edframe.cpp:2856 msgid "Remove" msgstr "წáƒáƒ¨áƒšáƒ" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ”ბისგáƒáƒœ გáƒáƒ¬áƒ›áƒ”ნდáƒ" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "გსურთ ყველრიმ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ წáƒáƒ¨áƒšáƒ, რáƒáƒ›áƒšáƒ”ბიც áƒáƒ¦áƒáƒ  გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნებáƒ?" #: src/edframe.cpp:2879 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 "" "თუ გáƒáƒ¬áƒ›áƒ”ნდáƒáƒ¡ გáƒáƒáƒ’რძელებთ, სáƒáƒ›áƒ£áƒ“áƒáƒ›áƒáƒ“ წáƒáƒ˜áƒ¨áƒšáƒ”ბრყველრის თáƒáƒ áƒ’მáƒáƒœáƒ˜, რáƒáƒ›áƒšáƒ”ბიც " "áƒáƒ¦áƒáƒ  გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნებáƒ. მáƒáƒ›áƒáƒ•áƒáƒšáƒ¨áƒ˜ მáƒáƒ—ი ხელáƒáƒ®áƒšáƒ თáƒáƒ áƒ’მნრმáƒáƒ’იწევთ, თუ კáƒáƒ¢áƒáƒšáƒáƒ’ს კვლáƒáƒ• " "დáƒáƒ”მáƒáƒ¢áƒ”ბáƒ." #: src/edframe.cpp:2883 msgid "Purge" msgstr "გáƒáƒ¬áƒ›áƒ”ნდáƒ" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ტექსტიდáƒáƒœ კáƒáƒžáƒ˜áƒ áƒ”ბáƒ" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ტექსტიდáƒáƒœ კáƒáƒžáƒ˜áƒ áƒ”ბáƒ" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ გáƒáƒ¬áƒ›áƒ”ნდáƒ" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ გáƒáƒ¬áƒ›áƒ”ნდáƒ" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "შენიშვნის დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒ" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜áƒ¡ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "კáƒáƒ“ი ჩáƒáƒœáƒ¡" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "კáƒáƒ“ი ჩáƒáƒœáƒ¡" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "გვერდითრზáƒáƒšáƒ˜áƒ¡ დáƒáƒ›áƒáƒšáƒ•áƒ" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "გვერდითრზáƒáƒšáƒ˜áƒ¡ ჩვენებáƒ" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘ის ზáƒáƒšáƒ˜áƒ¡ დáƒáƒ›áƒáƒšáƒ•áƒ" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘ის ზáƒáƒšáƒ˜áƒ¡ ჩვენებáƒ" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "სტრიქáƒáƒœáƒ¨áƒ˜ სიმბáƒáƒšáƒáƒ”ბის რáƒáƒáƒ“ენáƒáƒ‘áƒ" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "წყáƒáƒ áƒáƒ¡ ტექსტი" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "მხáƒáƒšáƒáƒ‘ითში" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "მრáƒáƒ•ლáƒáƒ‘ითი" #: src/editing_area.cpp:477 msgid "Translation" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "სáƒáƒ­áƒ˜áƒ áƒáƒ”ბს დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒ¡" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "სáƒáƒ­áƒ˜áƒ áƒáƒ”ბს დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒ¡" #: src/editing_area.cpp:566 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 "" #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "áƒáƒ®áƒáƒšáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ შექმნáƒ" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "წყáƒáƒ áƒáƒ¡ ტექსტის ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "ყველáƒáƒ¤áƒ”რი" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "%i-დáƒáƒœ" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "ფáƒáƒ áƒ›áƒ %i (áƒáƒ  გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნებáƒ)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "ნული" #: src/editing_area.cpp:788 msgid "One" msgstr "ერთი" #: src/editing_area.cpp:790 msgid "Two" msgstr "áƒáƒ áƒ˜" #: src/editing_area.cpp:804 msgid "Other" msgstr "სხვáƒ" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "სტრიქáƒáƒœáƒ˜áƒ¡ კáƒáƒœáƒ¢áƒ”ქსტი: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "სტრიქáƒáƒœáƒ˜áƒ¡ იდენტიფიკáƒáƒ¢áƒáƒ áƒ˜: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "ფáƒáƒ áƒ›áƒáƒ¢áƒ˜: %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "ფáƒáƒ áƒ›áƒáƒ¢áƒ˜: %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜ - %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "წყáƒáƒ áƒáƒ¡ ტექსტი - %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "უცნáƒáƒ‘ი ენáƒ" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "ქსელის შეცდáƒáƒ›áƒ: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "უცნáƒáƒ‘ი შეცდáƒáƒ›áƒ" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "'gettext' კáƒáƒ¢áƒáƒšáƒáƒ’ების შერწყმრჩáƒáƒ•áƒáƒ áƒ“áƒ." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "რედáƒáƒ¥áƒ¢áƒáƒ áƒ¨áƒ˜ გáƒáƒ®áƒ¡áƒœáƒ" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "რედáƒáƒ¥áƒ¢áƒáƒ áƒ¨áƒ˜ გáƒáƒ®áƒ¡áƒœáƒ" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "გáƒáƒ›áƒáƒ§áƒ”ნების მáƒáƒœáƒáƒªáƒ”მები áƒáƒ áƒáƒ" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "კáƒáƒ“ში ჩáƒáƒœáƒ¡ %d-ხელ" msgstr[1] "კáƒáƒ“ში ჩáƒáƒœáƒ¡ %d-ჯერ" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "წყáƒáƒ áƒáƒ¡ კáƒáƒ“ი ნáƒáƒžáƒáƒ•ნი áƒáƒ áƒáƒ" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒ შეუძლებელიáƒ" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "ძებნáƒ" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "ჩáƒáƒœáƒáƒªáƒ•ლებáƒ" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "პáƒáƒ áƒáƒ›áƒ”ტრები" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "რეგისტრის გáƒáƒ›áƒáƒ¢áƒáƒ•ებáƒ" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "სიტყვების გáƒáƒ“áƒáƒ¢áƒáƒœáƒ" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "მხáƒáƒšáƒáƒ“ მთლიáƒáƒœáƒ˜ სიტყვები" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "წყáƒáƒ áƒáƒ¡ ტექსტში ძებნáƒ" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ¨áƒ˜ ძებნáƒ" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "შენიშვნებში ძიებáƒ" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "ყველáƒáƒ¡ &ჩáƒáƒœáƒáƒªáƒ•ლებáƒ" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "ყველáƒáƒ¡ &ჩáƒáƒœáƒáƒªáƒ•ლებáƒ" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&ჩáƒáƒœáƒáƒªáƒ•ლებáƒ" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &წინáƒ" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&შემდეგი >" #: src/findframe.cpp:235 msgid "String to find" msgstr "სáƒáƒ«áƒ˜áƒ”ბელი ტექსტი" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "ჩáƒáƒ¡áƒáƒœáƒáƒªáƒ•ლებელი სტრიქáƒáƒœáƒ˜" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "გáƒáƒ¤áƒ áƒ—ხილებáƒ: " #: src/gexecute.cpp:171 msgid "error: " msgstr "შეცდáƒáƒ›áƒ: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "ენის სáƒáƒ®áƒ”ლი áƒáƒœ კáƒáƒ“ი" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ენáƒ" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ენáƒ:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "áƒáƒ®áƒáƒšáƒ˜ სტრიქáƒáƒœáƒ”ბი" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Localazy-ის პრáƒáƒ”ქტის დეტáƒáƒšáƒ”ბის გáƒáƒ“მáƒáƒ¬áƒ”რის შეცდáƒáƒ›áƒ." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "შეცდáƒáƒ›áƒ თáƒáƒ áƒ’მáƒáƒœáƒ”ბის Localazy-ზე áƒáƒ¢áƒ•ირთვისáƒáƒ¡." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "პრáƒáƒ”ქტები" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "შეიტყვეთ მეტი %s-ის შესáƒáƒ®áƒ”ბ" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy áƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ˜áƒ–ებული ლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ პლáƒáƒ¢áƒ¤áƒáƒ áƒ›áƒáƒ, რáƒáƒ›áƒ”ლიც ყველáƒáƒ¡ áƒáƒ«áƒšáƒ”ვს " "სáƒáƒ¨áƒ£áƒáƒšáƒ”ბáƒáƒ¡, თáƒáƒ•ისი პრáƒáƒ“უქტი დრშემცველáƒáƒ‘რსხვáƒáƒ“áƒáƒ¡áƒ®áƒ•რენáƒáƒ–ე áƒáƒ“ვილáƒáƒ“ თáƒáƒ áƒ’მნáƒáƒ¡." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - კáƒáƒ¢áƒáƒšáƒáƒ’ების მენეჯერი" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒâ€¦" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "შექმენი áƒáƒ®áƒáƒšáƒ˜ სáƒáƒ—áƒáƒ áƒ’მი პრáƒáƒ”ქტი" #: src/manager.cpp:145 msgid "Delete the project" msgstr "პრáƒáƒ”ქტის წáƒáƒ¨áƒšáƒ" #: src/manager.cpp:146 msgid "Edit the project" msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒ" #: src/manager.cpp:176 msgid "Update all" msgstr "ყველáƒáƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "გáƒáƒœáƒáƒáƒ®áƒšáƒ” ყველრკáƒáƒ¢áƒáƒšáƒáƒ’ი პრáƒáƒ”ქტში" #: src/manager.cpp:378 msgid "Total" msgstr "სულ" #: src/manager.cpp:379 msgid "Untrans" msgstr "უთáƒáƒ áƒ’მნ" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "სáƒáƒ­áƒ˜áƒ áƒáƒ”ბს დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒ¡" #: src/manager.cpp:381 msgid "Errors" msgstr "შეცდáƒáƒ›áƒ”ბი" #: src/manager.cpp:382 msgid "Last modified" msgstr "ბáƒáƒšáƒ ცვლილებáƒ" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "უჯრის áƒáƒ›áƒáƒ áƒ©áƒ”ვáƒ" #: src/manager.cpp:433 msgid "Directories:" msgstr "უჯრები:" #: src/manager.cpp:503 msgid "" msgstr "<უსáƒáƒ®áƒ”ლáƒ>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "გნებáƒáƒ•თ პრáƒáƒ”ქტის \"%s\" წáƒáƒ¨áƒšáƒâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "პრáƒáƒ”ქტის წáƒáƒ¨áƒšáƒ" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" #: src/manager.cpp:571 msgid "Confirmation" msgstr "დáƒáƒ¡áƒ¢áƒ£áƒ áƒ˜" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "პრáƒáƒ”ქტის კáƒáƒ¢áƒáƒšáƒáƒ’ების გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბების შემáƒáƒ¬áƒ›áƒ”ბáƒâ€¦" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "კáƒáƒ¢áƒáƒšáƒáƒ’ების მმáƒáƒ áƒ—ველი" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&მáƒáƒ áƒ’ებáƒâ€¦" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "ჩ&áƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "დáƒáƒ‘რუნებáƒ" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "áƒáƒ¦áƒ“გენáƒ" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "კáƒáƒžáƒ˜áƒ áƒ”ბისრდრჩáƒáƒ¡áƒ›áƒ˜áƒ¡ სტილი" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "წáƒáƒ¨áƒšáƒ" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "მáƒáƒ áƒ—ლწერრდრგრáƒáƒ›áƒáƒ¢áƒ˜áƒ™áƒ" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "მáƒáƒ áƒ—ლწერისრდრგრáƒáƒ›áƒáƒ¢áƒ˜áƒ™áƒ˜áƒ¡ ჩვენებáƒ" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "შეáƒáƒ›áƒáƒ¬áƒ›áƒ” დáƒáƒ™áƒ£áƒ›áƒ”ნტი áƒáƒ®áƒšáƒ" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "მáƒáƒ áƒ—ლწერის რეáƒáƒšáƒ£áƒ  დრáƒáƒ¨áƒ˜ შემáƒáƒ¬áƒ›áƒ”ბáƒ" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ გრáƒáƒ›áƒáƒ¢áƒ˜áƒ™áƒ მáƒáƒ áƒ—ლწერით" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "მáƒáƒ áƒ—ლწერის áƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ შემáƒáƒ¬áƒ›áƒ”ბáƒ" #: src/menus.cpp:219 msgid "Substitutions" msgstr "შენáƒáƒªáƒ•ლებები" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "შენáƒáƒªáƒ•ლებების ჩვენებáƒ" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "ჭკვიáƒáƒœáƒ˜ კáƒáƒžáƒ˜áƒ áƒ”ბáƒ/ჩáƒáƒ¡áƒ›áƒ" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "ჭკვიáƒáƒœáƒ˜ ბრჭყáƒáƒšáƒ”ბი" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "ჭკვიáƒáƒœáƒ˜ ტირეები" #: src/menus.cpp:226 msgid "Smart Links" msgstr "ჭკვიáƒáƒœáƒ˜ ბმულები" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "ტექსტის ჩáƒáƒœáƒáƒªáƒ•ლებáƒ" #: src/menus.cpp:230 msgid "Transformations" msgstr "გáƒáƒ áƒ“áƒáƒ¥áƒ›áƒœáƒ”ბი" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "დიდ áƒáƒ¡áƒáƒ”ბში გáƒáƒ“áƒáƒ§áƒ•áƒáƒœáƒ" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "პáƒáƒ¢áƒáƒ áƒ áƒáƒ¡áƒáƒ”ბში გáƒáƒ“áƒáƒ§áƒ•áƒáƒœáƒ" #: src/menus.cpp:234 msgid "Capitalize" msgstr "დიდი áƒáƒ¡áƒáƒ—ი áƒáƒ¦áƒœáƒ˜áƒ¨áƒ•ნáƒ" #: src/menus.cpp:237 msgid "Speech" msgstr "სáƒáƒ£áƒ‘áƒáƒ áƒ˜" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "ლáƒáƒžáƒáƒ áƒáƒ™áƒ˜áƒ¡ დáƒáƒ¬áƒ§áƒ”ბáƒ" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "ლáƒáƒžáƒáƒ áƒáƒ™áƒ˜áƒ¡ დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბáƒ" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&ხედი" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "პáƒáƒœáƒ”ლის ჩვენებáƒ" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "ხელსáƒáƒ¬áƒ§áƒáƒ—რზáƒáƒšáƒ˜áƒ¡ მáƒáƒ áƒ’ებáƒâ€¦" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "სრული ეკრáƒáƒœáƒ˜" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "ფáƒáƒœáƒ¯áƒáƒ áƒ" #: src/menus.cpp:263 msgid "Minimize" msgstr "ჩáƒáƒ™áƒ”ცვáƒ" #: src/menus.cpp:264 msgid "Zoom" msgstr "დáƒáƒáƒ®áƒšáƒáƒ”ბáƒ" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "მáƒáƒ’ესáƒáƒšáƒ›áƒ”ბáƒáƒ— Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "ყველáƒáƒ¡ წინ გáƒáƒ›áƒáƒ¢áƒáƒœáƒ" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ მთáƒáƒ áƒ’მნელის შესáƒáƒ®áƒ”ბ" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "სáƒáƒ®áƒ”ლი:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "თქვენი სáƒáƒ®áƒ”ლი" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "ელ-ფáƒáƒ¡áƒ¢áƒ:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "MO ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ კáƒáƒ›áƒžáƒ˜áƒšáƒáƒªáƒ˜áƒ შენáƒáƒ®áƒ•ისáƒáƒ¡" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "მáƒáƒ áƒ—ლწერის შემáƒáƒ¬áƒ›áƒ”ბáƒ" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "ყáƒáƒ•ელთვის გáƒáƒáƒ¥áƒ¢áƒ˜áƒ£áƒ áƒ” ტექსტის ჩáƒáƒ¡áƒáƒ¬áƒ”რი ველი" #: src/prefsdlg.cpp:211 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 "" "áƒáƒ áƒáƒ¡áƒáƒ“ეს გáƒáƒáƒ¥áƒ¢áƒ˜áƒ£áƒ áƒ“ეს სáƒáƒ—áƒáƒ áƒ’მნი ტექსტების სáƒáƒ áƒ™áƒ›áƒ”ლი. თუ áƒáƒ› ფუნქციáƒáƒ¡ ჩáƒáƒ áƒ—áƒáƒ•თ, " "Ctrl+ისრების სáƒáƒ¨áƒ£áƒáƒšáƒ”ბით შეგეძლებáƒáƒ— ტექსტებს შáƒáƒ áƒ˜áƒ¡ ნáƒáƒ•იგáƒáƒªáƒ˜áƒ, მáƒáƒ’რáƒáƒ› ტექსტის " "შეყვáƒáƒœáƒ პირდáƒáƒžáƒ˜áƒ  იქნებრშესáƒáƒ«áƒšáƒ”ბელი, შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒáƒ“ ტექსტის ჩáƒáƒ¡áƒáƒ¬áƒ”რáƒáƒ“ Tab " "ღილáƒáƒ™áƒ–ე ხელის დáƒáƒ­áƒ”რრáƒáƒ¦áƒáƒ  მáƒáƒ’იწევთ." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "გáƒáƒ áƒ”გნáƒáƒ‘áƒ" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "სიის ფáƒáƒœáƒ¢áƒ˜áƒ¡ ხელით მითითებáƒ:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "ხელით მითითებული ტექსტური ველის ფáƒáƒœáƒ¢áƒ˜:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "ინტერფეისის ენის შეცვლáƒ" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(სáƒáƒ­áƒ˜áƒ áƒáƒ”ბს Windows 8 áƒáƒœ უფრრáƒáƒ®áƒáƒšáƒ¡)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "სáƒáƒ”რთáƒ" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერების გáƒáƒ›áƒáƒ§áƒ”ნებáƒ" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "მáƒáƒ áƒ—ვáƒâ€¦" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "წყáƒáƒ áƒáƒ¡ კáƒáƒ“იდáƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბისáƒáƒ¡" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "მსგáƒáƒ•სი დáƒáƒ›áƒ—ხვევები áƒáƒ›áƒáƒ•ე ფáƒáƒ˜áƒšáƒ¨áƒ˜" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "პრე-თáƒáƒ áƒ’მáƒáƒœáƒ˜ TM-დáƒáƒœ" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "დáƒáƒ›áƒáƒ®áƒ¡áƒáƒ•რებული თáƒáƒ áƒ’მáƒáƒœáƒ”ბი:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "ბáƒáƒ–ის ზáƒáƒ›áƒ დისკზე:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ”ბის შემáƒáƒ¢áƒáƒœáƒâ€¦" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ”ბის შემáƒáƒ¢áƒáƒœáƒâ€¦" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "TMX-დáƒáƒœ შემáƒáƒ¢áƒáƒœáƒâ€¦" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "TMX-დáƒáƒœ შემáƒáƒ¢áƒáƒœáƒâ€¦" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "TMX-ში გáƒáƒ¢áƒáƒœáƒâ€¦" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "TMX-ში გáƒáƒ¢áƒáƒœáƒâ€¦" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "გáƒáƒ“áƒáƒ¢áƒ•ირთვáƒ" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ შემáƒáƒ¡áƒáƒ¢áƒáƒœáƒ˜ სáƒáƒ—áƒáƒ áƒ’მნი ფáƒáƒ˜áƒšáƒ”ბი" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ შემáƒáƒ¡áƒáƒ¢áƒáƒœáƒ˜ TMX ფáƒáƒ˜áƒšáƒ”ბი" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX ფáƒáƒ˜áƒšáƒ”ბი" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ”ბის შემáƒáƒ¢áƒáƒœáƒâ€¦" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერების შემáƒáƒ¢áƒáƒœáƒ ჩáƒáƒ•áƒáƒ áƒ“áƒ." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "შემáƒáƒ¢áƒáƒœáƒ \"%s\"-დáƒáƒœâ€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "შემáƒáƒ¢áƒáƒœáƒ˜áƒšáƒ˜áƒ %s თáƒáƒ áƒ’მáƒáƒœáƒ˜." msgstr[1] "შემáƒáƒ¢áƒáƒœáƒ˜áƒšáƒ˜áƒ %s თáƒáƒ áƒ’მáƒáƒœáƒ˜." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "გáƒáƒ¢áƒáƒœáƒ რáƒáƒ’áƒáƒ áƒªâ€¦" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ”ბის გáƒáƒ¢áƒáƒœáƒâ€¦" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერების ჩáƒáƒ›áƒáƒ§áƒ áƒ" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "TM" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერებáƒ" #: src/prefsdlg.cpp:730 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 "" #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "მáƒáƒ áƒ’ებული ექსტრáƒáƒ¥áƒ¢áƒáƒ áƒ”ბი:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "მáƒáƒ áƒ’ებული ექსტრáƒáƒ¥áƒ¢áƒáƒ áƒ”ბი:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "ექსტრáƒáƒ¥áƒ¢áƒáƒ áƒ˜áƒ¡ წáƒáƒ¨áƒšáƒ" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "ექსტრáƒáƒ¥áƒ¢áƒáƒ áƒ”ბი" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ”ბი" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბის áƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ შემáƒáƒ¬áƒ›áƒ”ბáƒ" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "ბეტრვერსიების ჩáƒáƒ—ვლით" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბები" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "სტრიქáƒáƒœáƒ˜áƒ¡ დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბის სიმბáƒáƒšáƒ:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (რეკáƒáƒ›áƒ”ნდებულიáƒ)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "სიტყვების გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒ¡áƒáƒ¡ მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒáƒšáƒ£áƒ áƒ˜ სიგრძე:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "áƒáƒ áƒ¡áƒ”ბული ფáƒáƒ˜áƒšáƒ”ბის ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ áƒ”ბის შენáƒáƒ áƒ©áƒ£áƒœáƒ”ბáƒ" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "მáƒáƒ áƒ’ებáƒ" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "სტრიქáƒáƒœáƒ”ბის მáƒáƒ›áƒ–áƒáƒ“ებáƒâ€¦" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერებიდáƒáƒœâ€¦" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "პრე-ნáƒáƒ—áƒáƒ áƒ’მნირ%u სტრიქáƒáƒœáƒ˜" msgstr[1] "პრე-ნáƒáƒ—áƒáƒ áƒ’მნირ%u სტრიქáƒáƒœáƒ˜" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜â€¦" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "წინáƒáƒ¡áƒ¬áƒáƒ  თáƒáƒ áƒ’მნილირ%d ჩáƒáƒœáƒáƒ¬áƒ”რი." msgstr[1] "წინáƒáƒ¡áƒ¬áƒáƒ  თáƒáƒ áƒ’მნილირ%d ჩáƒáƒœáƒáƒ¬áƒ”რი." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "ზუსტი დáƒáƒ›áƒ—ხვევები თმ-დáƒáƒœ" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "დáƒáƒáƒ®áƒšáƒáƒ”ბითი დáƒáƒ›áƒ—ხვევები თმ-დáƒáƒœ" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "წინáƒáƒ¡áƒ¬áƒáƒ -თáƒáƒ áƒ’მნáƒáƒ“ი ჩáƒáƒœáƒáƒ¬áƒ”რები áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილი áƒáƒ áƒáƒ." #: src/pretranslate.cpp:218 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 "" #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ტექსტის გáƒáƒ áƒ”შე წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜ შეუძლებელიáƒ." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "წინáƒáƒ¡áƒ¬áƒáƒ  თáƒáƒ áƒ’მáƒáƒœáƒ¡ სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ტექსტი სჭირდებáƒ. ის áƒáƒ  მუშáƒáƒáƒ‘ს, თუ გáƒáƒ›áƒáƒ§áƒ”ნებულირ" "მხáƒáƒšáƒáƒ“ ID-ები, ტექსტის გáƒáƒ áƒ”შე." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "უცნáƒáƒ‘ი ენიდáƒáƒœ თáƒáƒ áƒ’მნრშეუძლებელიáƒ." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "მხáƒáƒšáƒáƒ“ ზუსტი მნიშვნელáƒáƒ‘ებით შევსებáƒ" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "ნáƒáƒ’ულისხმევáƒáƒ“ áƒáƒ¡áƒ”ვე áƒáƒ áƒáƒ¡áƒ¬áƒáƒ  პáƒáƒ¡áƒ£áƒ®áƒ”ბსáƒáƒª გáƒáƒ©áƒ•ენებთ, მáƒáƒ’რáƒáƒ›, მáƒáƒ˜áƒœáƒ˜áƒ¨áƒœáƒ”ბიáƒáƒœ, " "რáƒáƒ’áƒáƒ áƒª ჯერ კიდევ დáƒáƒ¡áƒáƒ›áƒ£áƒ¨áƒáƒ•ებელი. ჩáƒáƒ áƒ—ეთ ეს, რáƒáƒ—რმხáƒáƒšáƒáƒ“ ზუსტი დáƒáƒ›áƒ—ხვევები " "ჩáƒáƒáƒœáƒáƒªáƒ•ლáƒáƒ—." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "შეცდáƒáƒ›áƒ: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირ%d შეცდáƒáƒ›áƒ:" msgstr[1] "áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირ%d შეცდáƒáƒ›áƒ:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირშეცდáƒáƒ›áƒ." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირ%d შეცდáƒáƒ›áƒ." msgstr[1] "áƒáƒ¦áƒ›áƒáƒ©áƒ”ნილირ%d შეცდáƒáƒ›áƒ." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒâ€¦" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "გáƒáƒ“მáƒáƒáƒ—რიეთ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეები áƒáƒœ ფáƒáƒ˜áƒšáƒ”ბი" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "გáƒáƒ“მáƒáƒáƒ—რიეთ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეები áƒáƒœ ფáƒáƒ˜áƒšáƒ”ბი" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეების დáƒáƒ›áƒáƒ¢áƒ”ბáƒâ€¦" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეების დáƒáƒ›áƒáƒ¢áƒ”ბáƒâ€¦" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "ფáƒáƒ˜áƒšáƒ”ბის დáƒáƒ›áƒáƒ¢áƒ”ბáƒâ€¦" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "ფáƒáƒ˜áƒšáƒ”ბის დáƒáƒ›áƒáƒ¢áƒ”ბáƒâ€¦" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "ვáƒáƒ˜áƒšáƒ“ კáƒáƒ áƒ“ის ჩáƒáƒ›áƒáƒ¢áƒ”ბáƒâ€¦" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "ვáƒáƒ˜áƒšáƒ“ კáƒáƒ áƒ“ის ჩáƒáƒ›áƒáƒ¢áƒ”ბáƒâ€¦" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეში ჩვენებáƒ" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "ექსპლáƒáƒ áƒ”რში ჩვენებáƒ" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეში ჩვენებáƒ" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "მდებáƒáƒ áƒ”áƒáƒ‘ები" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "áƒáƒ›áƒáƒ¦áƒ”ბული ბილიკები" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "გáƒáƒ›áƒáƒ¢áƒáƒœáƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒ áƒáƒ›áƒ”ტრები" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "კáƒáƒ›áƒ”ნტáƒáƒ áƒ”ბი იწყებრპრეფიქსით:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "ყველრკáƒáƒ›áƒ”ნტáƒáƒ áƒ˜" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Xgettext-ს დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒ áƒáƒ›áƒ”ტრები:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი სáƒáƒ™áƒ•áƒáƒœáƒ«áƒ სიტყვები" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "გუნდის სáƒáƒ®áƒ”ლი დრელფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒœ ბმული" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "მáƒáƒ’: nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (რეკáƒáƒ›áƒ”ნდებულიáƒ)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "áƒáƒ“გილმჭერების სისწáƒáƒ áƒ”" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "მრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ˜áƒ¡ თáƒáƒ áƒ’მáƒáƒœáƒ”ბი" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "ყველრმრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ გáƒáƒ“áƒáƒ áƒ—áƒáƒ áƒ’მნილი áƒáƒ áƒáƒ." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "áƒáƒ áƒáƒ›áƒ“გრáƒáƒ“ი რეგისტრი" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "შეუთáƒáƒœáƒ®áƒ›áƒ”ბელი ჰáƒáƒ áƒ”ები" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "პუნქტუáƒáƒªáƒ˜áƒ˜áƒ¡ შემáƒáƒ¬áƒ›áƒ”ბáƒ" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "ღრუბელი" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "მენიუს გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•ებáƒ" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "მენიუს გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•ებáƒ" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "შენიშვნები:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&წáƒáƒ¨áƒšáƒ" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜áƒ¡ წáƒáƒ¨áƒšáƒ" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒ" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "პრáƒáƒ”ქტის სáƒáƒ®áƒ”ლი:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "მáƒáƒ«áƒ˜áƒ”ბáƒ" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "უჯრის სიáƒáƒ¨áƒ˜ დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "კáƒáƒ áƒ’ი" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&ფáƒáƒ˜áƒšáƒ˜" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&áƒáƒ®áƒáƒšáƒ˜â€¦" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "áƒáƒ®áƒáƒšáƒ˜ &POT/PO ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœâ€¦" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "áƒáƒ®áƒáƒšáƒ˜ &POT/PO ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœâ€¦" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&გáƒáƒ®áƒ¡áƒœáƒâ€¦" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "ბáƒáƒšáƒáƒ¡ გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბის გáƒáƒ®áƒ¡áƒœáƒ" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "ბáƒáƒšáƒáƒ¡ გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბის გáƒáƒ®áƒ¡áƒœáƒ" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "ღრუბლáƒáƒ•áƒáƒœáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒâ€¦" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "ღრუბლáƒáƒ•áƒáƒœáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒâ€¦" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ფáƒáƒœáƒ¯áƒáƒ áƒ" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ფáƒáƒœáƒ¯áƒáƒ áƒ" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "კáƒáƒ¢áƒáƒšáƒáƒ’ების &მენეჯერი" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "კáƒáƒ¢áƒáƒšáƒáƒ’თრ&მმáƒáƒ áƒ—ველი" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&დáƒáƒ®áƒ£áƒ áƒ•áƒ" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "შ&ენáƒáƒ®áƒ•áƒ" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "შენáƒáƒ®áƒ•რრáƒáƒ’áƒáƒ áƒªâ€¦" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "შენáƒáƒ®áƒ•რრáƒáƒ’áƒáƒ áƒªâ€¦" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "კáƒáƒ›áƒžáƒ˜áƒšáƒáƒªáƒ˜áƒ MO ფáƒáƒ˜áƒšáƒ¨áƒ˜â€¦" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "&გáƒáƒ¢áƒáƒœáƒ HTML-ში…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბების შემáƒáƒ¬áƒ›áƒ”ბáƒâ€¦" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "მáƒáƒ áƒ’ებáƒâ€¦" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&პáƒáƒ áƒáƒ›áƒ”ტრები" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "გáƒ&სვლáƒ" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "გáƒáƒ¡áƒ•ლáƒ" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "მხáƒáƒšáƒáƒ‘ითიდáƒáƒœ დáƒáƒ™áƒáƒžáƒ˜áƒ áƒ”ბáƒ" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "მხáƒáƒšáƒáƒ‘ითიდáƒáƒœ დáƒáƒ™áƒáƒžáƒ˜áƒ áƒ”ბáƒ" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ¡ &დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებრსჭირდებáƒ" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ¡ &დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებრსჭირდებáƒ" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "შე&ნიშვნის დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒ" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "&კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜áƒ¡ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "რჩევები" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&ძებნáƒâ€¦" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "ჩáƒáƒœáƒáƒªáƒ•ლებáƒâ€¦" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "მáƒáƒ›áƒ“ევნáƒáƒ¡ მáƒáƒ«áƒ”ბნáƒ" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "წინáƒáƒœáƒ“ელის ძიებáƒ" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "ძებნრდრშეცვლáƒâ€¦" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "მáƒáƒ›áƒ“ევნáƒáƒ¡ მáƒáƒ«áƒ”ბნáƒ" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "წინáƒáƒœáƒ“ელის ძიებáƒ" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "სტრიქáƒáƒœáƒ˜áƒ¡ &ID-ის ჩვენებáƒ" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "სტრიქáƒáƒœáƒ˜áƒ¡ &ID-ის ჩვენებáƒ" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "გáƒáƒ¤áƒ áƒ—ხილების ჩვენებáƒ" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "გáƒáƒ¤áƒ áƒ—ხილების ჩვენებáƒ" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "&ფáƒáƒ˜áƒšáƒ˜áƒ¡ წყáƒáƒ‘ით დáƒáƒšáƒáƒ’ებáƒ" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "&ფáƒáƒ˜áƒšáƒ˜áƒ¡ წყáƒáƒ‘ით დáƒáƒšáƒáƒ’ებáƒ" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "&წყáƒáƒ áƒáƒ—ი დáƒáƒšáƒáƒ’ებáƒ" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "&წყáƒáƒ áƒáƒ—ი დáƒáƒšáƒáƒ’ებáƒ" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "თ&áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მიხედვით დáƒáƒšáƒáƒ’ებáƒ" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "თ&áƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მიხედვით დáƒáƒšáƒáƒ’ებáƒ" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&კáƒáƒœáƒ¢áƒ”ქსტის მიხედვით დáƒáƒ¯áƒ’უფებáƒ" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&კáƒáƒœáƒ¢áƒ”ქსტის მიხედვით დáƒáƒ¯áƒ’უფებáƒ" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "სიáƒáƒ¨áƒ˜ ჯერ შეცდáƒáƒ›áƒ”ბის ჩვენებáƒ" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "სიáƒáƒ¨áƒ˜ ჯერ შეცდáƒáƒ›áƒ”ბის ჩვენებáƒ" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&ჯერ უთáƒáƒ áƒ’მნელი შენáƒáƒ¢áƒáƒœáƒ”ბი" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&ჯერ უთáƒáƒ áƒ’მნელი შენáƒáƒ¢áƒáƒœáƒ”ბი" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&კáƒáƒ“ის áƒáƒ¦áƒ›áƒáƒ©áƒ”ნების ჩვენებáƒ" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&კáƒáƒ“ის áƒáƒ¦áƒ›áƒáƒ©áƒ”ნების ჩვენებáƒ" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "გვერდითრზáƒáƒšáƒ˜áƒ¡ ჩვენებáƒ" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘ის ზáƒáƒšáƒ˜áƒ¡ ჩვენებáƒ" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&თáƒáƒ áƒ’მáƒáƒœáƒ˜" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ კáƒáƒ“იდáƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ კáƒáƒ“იდáƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Crowdin-თáƒáƒœ სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ &თáƒáƒ áƒ’მáƒáƒœáƒ˜â€¦" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ &ვáƒáƒšáƒ˜áƒ“áƒáƒªáƒ˜áƒ" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ &ვáƒáƒšáƒ˜áƒ“áƒáƒªáƒ˜áƒ" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ”ბის &áƒáƒ›áƒáƒ¨áƒšáƒ" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&წáƒáƒ¨áƒšáƒ˜áƒš თáƒáƒ áƒ’მáƒáƒœáƒ—რგáƒáƒ¬áƒ›áƒ”ნდáƒ" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&თვისებები…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&გáƒáƒ“áƒáƒ¡áƒ•ლáƒ" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბრდრშემდეგი" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბრდრშემდეგი" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "წáƒáƒ áƒ¡áƒ£áƒšáƒ¨áƒ˜ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბულზე" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "წáƒáƒ áƒ¡áƒ£áƒšáƒ¨áƒ˜ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბულზე" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&წინრთáƒáƒ áƒ’მáƒáƒœáƒ˜" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&წინრთáƒáƒ áƒ’მáƒáƒœáƒ˜" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&შემდეგი თáƒáƒ áƒ’მáƒáƒœáƒ˜" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&შემდეგი თáƒáƒ áƒ’მáƒáƒœáƒ˜" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "წ&ინრდáƒáƒ£áƒ¡áƒ áƒ£áƒšáƒ”ბელი" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "წ&ინრდáƒáƒ£áƒ¡áƒ áƒ£áƒšáƒ”ბელი" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "შემ&დეგი დáƒáƒ£áƒ¡áƒ áƒ£áƒšáƒ”ბელი" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "შემ&დეგი დáƒáƒ£áƒ¡áƒ áƒ£áƒšáƒ”ბელი" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "წინრმრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "წინრმრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "შემდეგი მრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "შემდეგი მრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "&áƒáƒœáƒšáƒáƒ˜áƒœ-სáƒáƒ®áƒ”ლმძღვáƒáƒœáƒ”ლáƒ" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "&áƒáƒœáƒšáƒáƒ˜áƒœ-სáƒáƒ®áƒ”ლმძღვáƒáƒœáƒ”ლáƒ" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&GNU gettext-ის დáƒáƒ®áƒ›áƒáƒ áƒ”ბის ფáƒáƒ˜áƒšáƒ”ბი" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&GNU gettext-ის დáƒáƒ®áƒ›áƒáƒ áƒ”ბის ფáƒáƒ˜áƒšáƒ”ბი" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "Poedit-ის შ&ესáƒáƒ®áƒ”ბ" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "შ&ესáƒáƒ®áƒ”ბ" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "ექსტრáƒáƒ¥áƒ¢áƒáƒ áƒ˜áƒ¡ მáƒáƒ áƒ’ებáƒ" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბების სირწერტილ-მძიმეებით გáƒáƒ›áƒáƒ§áƒáƒ¤áƒ˜áƒšáƒ˜ (მáƒáƒ’. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "ინვáƒáƒ™áƒáƒªáƒ˜áƒ:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "ბრძáƒáƒœáƒ”ბრთáƒáƒ áƒ’მáƒáƒœáƒ”ბის გáƒáƒ›áƒáƒ¡áƒáƒ¦áƒ”ბáƒáƒ“:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "ელემენტი სიტყვáƒáƒ—რსიáƒáƒ¨áƒ˜:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "ეს ბრძáƒáƒœáƒ”ბáƒáƒ—რსტრიქáƒáƒœáƒ¡ მიემáƒáƒ’რებრერთხელ\n" "ყáƒáƒ•ელ სიტყვáƒáƒ–ე. %k იშლებრრáƒáƒ’áƒáƒ áƒª სიტყვáƒ." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "ელემენტი შესáƒáƒ§áƒ•áƒáƒœáƒ˜ ფáƒáƒ˜áƒšáƒ˜áƒ¡ სიáƒáƒ¨áƒ˜:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "ეს მიემáƒáƒ’რებრბრძáƒáƒœáƒ”ბáƒáƒ—რსტრიქáƒáƒœáƒ¡ ყáƒáƒ•ელ\n" "შესáƒáƒ§áƒ•áƒáƒœ ფáƒáƒ˜áƒšáƒ–ე. %f გáƒáƒ˜áƒ¨áƒšáƒ”ბრფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ®áƒ”ლáƒáƒ“." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "პრáƒáƒ’რ. წყáƒáƒ áƒáƒ¡ კáƒáƒ“ირებáƒ:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "ეს მიემáƒáƒ’რებრბრძáƒáƒœáƒ”ბáƒáƒ—რსტრიქáƒáƒœáƒ¡ მხáƒáƒšáƒáƒ“ მáƒáƒ¨áƒ˜áƒœ\n" "თუ წყáƒáƒ áƒáƒ¡ კáƒáƒ“ირებრ(charset) მითითებული იყáƒ. %c ჩáƒáƒœáƒáƒªáƒ•ლდებრკáƒáƒ“ირების " "სáƒáƒ®áƒ”ლით." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ თვისებები" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "პრáƒáƒ”ქტის სáƒáƒ®áƒ”ლი დრვერსიáƒ:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "მთáƒáƒ áƒ’მნელი გუნდი:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "მრáƒáƒ•ლáƒáƒ‘ითი ფáƒáƒ áƒ›áƒ”ბი:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "áƒáƒ› ენისთვის ნáƒáƒ’ულისხმები წესების გáƒáƒ›áƒáƒ§áƒ”ნებáƒ" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "გáƒáƒ›áƒáƒ¡áƒáƒ®áƒ£áƒšáƒ”ბის ხელით მითითებáƒ" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ მრáƒáƒ•ლáƒáƒ‘ითის ფáƒáƒ áƒ›áƒ”ბთáƒáƒœ დáƒáƒ™áƒáƒ•შირებით" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "კáƒáƒ“ირებáƒ:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "გáƒáƒœáƒ¨áƒšáƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒ áƒáƒ›áƒ”ტრები…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "გáƒáƒœáƒ¨áƒšáƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒ áƒáƒ›áƒ”ტრები…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ თვისებები" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "წყáƒáƒ áƒáƒ¡ მდებáƒáƒ áƒ”áƒáƒ‘ები" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "წყáƒáƒ áƒáƒ¡ მდებáƒáƒ áƒ”áƒáƒ‘ები" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "შემდეგი ფáƒáƒšáƒ“ერებში წყáƒáƒ áƒ-ფáƒáƒ˜áƒšáƒ”ბიდáƒáƒœ ტექსტის áƒáƒ›áƒáƒ¦áƒ”ბáƒ:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "ძირითáƒáƒ“ი მდებáƒáƒ áƒ”áƒáƒ‘áƒ:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "წყáƒáƒ áƒáƒ¡ სáƒáƒ™áƒ•áƒáƒœáƒ«áƒ სიტყვები" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "წყáƒáƒ áƒáƒ¡ სáƒáƒ™áƒ•áƒáƒœáƒ«áƒ სიტყვები" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "წყáƒáƒ áƒáƒ¡ ფáƒáƒ˜áƒšáƒ”ბში თáƒáƒ áƒ’მნáƒáƒ“ი სტრიქáƒáƒœáƒ”ბის áƒáƒ›áƒáƒ¡áƒáƒªáƒœáƒáƒ‘áƒáƒ“ áƒáƒ› სáƒáƒ™áƒ•áƒáƒœáƒ«áƒ სიტყვების\n" " (ფუნქციáƒáƒ—რსáƒáƒ®áƒ”ლების) გáƒáƒ›áƒáƒ§áƒ”ნებáƒ:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "შეიტყვეთ მეტი gettext-ის სáƒáƒ™áƒ•áƒáƒœáƒ«áƒ სიტყვების შესáƒáƒ®áƒ”ბ" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒ" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ შენáƒáƒ®áƒ•áƒ" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "ვáƒáƒšáƒ˜áƒ“áƒáƒªáƒ˜áƒ" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ¨áƒ˜ შეცდáƒáƒ›áƒ”ბის შემáƒáƒ¬áƒ›áƒ”ბáƒ" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "კáƒáƒ“იდáƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "კáƒáƒ“იდáƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ კáƒáƒ“იდáƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "გვერდითრზáƒáƒšáƒ˜" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "ხელსáƒáƒ¬áƒ§áƒáƒ—რპáƒáƒœáƒ”ლის ხილვáƒáƒ“áƒáƒ‘ის ჩáƒáƒ áƒ—/გáƒáƒ›áƒáƒ áƒ—" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "წინრწყáƒáƒ áƒáƒ¡ ტექსტი" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "შენიშვნები მთáƒáƒ áƒ’მნელებისთვის" #: src/sidebar.cpp:196 msgid "Comment" msgstr "კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერებიდáƒáƒœ წáƒáƒ¨áƒšáƒ" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერებიდáƒáƒœ წáƒáƒ¨áƒšáƒ" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მინიშნებები" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "áƒáƒ áƒáƒ¤áƒ”რი მáƒáƒ˜áƒ«áƒ”ბნáƒ" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "áƒáƒ áƒáƒ¤áƒ”რი მáƒáƒ˜áƒ«áƒ”ბნáƒ" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "" #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "%s პრáƒáƒ’რáƒáƒ›áƒ˜áƒ¡ გáƒáƒ¨áƒ•ებრვერ ხერხდებáƒ" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX ფáƒáƒ˜áƒšáƒ˜ დáƒáƒ–იáƒáƒœáƒ”ბულიáƒ." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ მეხსიერების შეცდáƒáƒ›áƒ: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნე სისტემის სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ენáƒ)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "ენის áƒáƒ áƒ©áƒ”ვáƒ" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ თქვენთვის სáƒáƒ¡áƒ£áƒ áƒ•ელი ენáƒ" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "თქვენ უნდრგáƒáƒ“áƒáƒ¢áƒ•ირთáƒáƒ— Poedit, რáƒáƒ—რეს ცვლილებრძáƒáƒšáƒáƒ¨áƒ˜ შევიდეს." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "დრáƒáƒ”ბითი სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის შექმნრშეუძლებელიáƒ." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "" #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "შეიტყვეთ მეტი GNU gettext-ის შესáƒáƒ®áƒ”ბ" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "POT-ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "" #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "წყáƒáƒ áƒáƒ“áƒáƒœ áƒáƒ›áƒáƒ¦áƒ”ბáƒ" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "ვერსირ%s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "áƒáƒ®áƒšáƒ˜áƒ¡ შექმნáƒ" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "áƒáƒ®áƒáƒšáƒ˜ თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ შექმნრPOT შáƒáƒ‘ლáƒáƒœáƒ˜áƒ“áƒáƒœ." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ áƒ©áƒ”ვáƒ" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ”ბის გáƒáƒ®áƒ¡áƒœáƒ დრჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "ღრუბლáƒáƒ•áƒáƒœáƒ˜ პრáƒáƒ”ქტის თáƒáƒ áƒ’მნáƒ" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "ითáƒáƒœáƒáƒ›áƒ¨áƒ áƒáƒ›áƒšáƒ”თ სხვრáƒáƒ“áƒáƒ›áƒ˜áƒáƒœáƒ”ბთáƒáƒœ áƒáƒœáƒšáƒáƒ˜áƒœ." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "უკáƒáƒœáƒáƒ¡áƒ™áƒœáƒ”ლი ფáƒáƒ˜áƒšáƒ”ბის სიáƒ" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "%s-ის შესáƒáƒ®áƒ”ბ" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s-ის პáƒáƒ áƒáƒ›áƒ”ტრები" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "%s-ის შესáƒáƒ®áƒ”ბ" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "სერვისები" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "%s-ის დáƒáƒ›áƒáƒšáƒ•áƒ" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "სხვების დáƒáƒ›áƒáƒšáƒ•áƒ" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "ყველáƒáƒ¡ ჩვენებáƒ" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "%s-დáƒáƒœ გáƒáƒ¡áƒ•ლáƒ" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "პáƒáƒ áƒáƒ›áƒ”ტრები…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "პáƒáƒ áƒáƒ›áƒ”ტრები..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "პáƒáƒ áƒáƒ›áƒ”ტრები..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბáƒ" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბáƒ" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&უკáƒáƒœ" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "უკáƒáƒœ" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•ებáƒ" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•ებáƒ" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "კáƒáƒžáƒ˜áƒ áƒ”ბáƒ" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "áƒáƒ›&áƒáƒ­áƒ áƒ" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "áƒáƒ›áƒáƒ­áƒ áƒ" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&გáƒáƒ›áƒáƒ¡áƒ•ლáƒ" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&áƒáƒ®áƒáƒšáƒ˜" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "áƒáƒ®áƒáƒšáƒ˜" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&áƒáƒ áƒ" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "áƒáƒ áƒ" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&დიáƒáƒ®" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "გáƒáƒ®áƒ¡áƒœáƒâ€¦" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&გáƒáƒ®áƒ¡áƒœáƒ..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "გáƒáƒ®áƒ¡áƒœáƒ..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "ჩ&áƒáƒ¡áƒ›áƒ" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "ჩáƒáƒ¡áƒ›áƒ" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "პáƒáƒ áƒáƒ›áƒ”ტრები" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&გáƒáƒ›áƒ”áƒáƒ áƒ”ბáƒ" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "შენáƒáƒ®áƒ•რ&რáƒáƒ’áƒáƒ áƒª" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "შენáƒáƒ®áƒ•რრáƒáƒ’áƒáƒ áƒª" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "ყველáƒáƒ¡ &მáƒáƒœáƒ˜áƒ¨áƒ•ნáƒ" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "ყველáƒáƒ¡ მáƒáƒœáƒ˜áƒ¨áƒ•ნáƒ" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&დიáƒáƒ®" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "დიáƒáƒ®" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "მáƒáƒ¦áƒšáƒ" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "ქვემáƒáƒ—" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "მáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ•" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "მáƒáƒ áƒ¯áƒ•ნივ" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "გáƒáƒ¤áƒ áƒ—ხილებáƒ: " poedit-3.6.3/locales/ja.po0000644000175100001660000027615615011674364011075 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-05-06 10:16\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\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" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: ja\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "ã“ã®é€šçŸ¥ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ãªã„" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "今後表示ã—ãªã„" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "今後表示ã—ãªã„" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "è¦ç´„ã‚’æ›´æ–°" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "é–‰ã˜ã‚‹" #: src/cat_update.cpp:161 msgid "Issues" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "ファイル" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "æ–°è¦æ–‡å­—列" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "ソースファイルをåŽé›†ä¸­â€¦" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "抽出ã•れãŸç¿»è¨³ãƒ•ァイルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚" #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "å•題ã®ã‚るファイル: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "ソースコードãŒå­˜åœ¨ã—ã¾ã›ã‚“。" #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "ファイルã®ãƒ—ãƒ­ãƒ‘ãƒ†ã‚£ã§æŒ‡å®šã•れãŸå ´æ‰€ã«ã‚³ãƒ¼ãƒ‰ãŒè¦‹ã¤ã‹ã‚‰ãªã‹ã£ãŸãŸã‚ã€ç¿»è¨³ã‚’" "ソースコードã‹ã‚‰æ›´æ–°ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "権é™ãŒã‚りã¾ã›ã‚“。" #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "ファイルã®ãƒ—ãƒ­ãƒ‘ãƒ†ã‚£ã§æŒ‡å®šã•れãŸå ´æ‰€ã‹ã‚‰ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®ãƒ•ァイルを読ã¿è¾¼ã‚€æ¨©é™" "ãŒã‚りã¾ã›ã‚“。" #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "以å‰ãƒ•ァイルã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ãŸå ´åˆã€ã‚·ã‚¹ãƒ†ãƒ è¨­å®š > プライãƒã‚·ãƒ¼ã¨ã‚»ã‚­ãƒ¥ãƒª" "ティ > ファイルã¨ãƒ•ォルダ ã‹ã‚‰è¨±å¯ã§ãã¾ã™ã€‚" #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "以å‰ãƒ•ァイルã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ãŸå ´åˆã€ã‚·ã‚¹ãƒ†ãƒ ç’°å¢ƒè¨­å®š > セキュリティã¨ãƒ—ラ" "イãƒã‚·ãƒ¼ > プライãƒã‚·ãƒ¼ > ファイルã¨ãƒ•ォルダ ã‹ã‚‰è¨±å¯ã§ãã¾ã™ã€‚" #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "" #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "ファイル \"%s\" ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "翻訳をアップデートã—ã¦ã„ã¾ã™" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "差分を統åˆã—ã¦ã„ã¾ã™â€¦" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "" #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "" #: src/cat_update.cpp:530 msgid "View Details…" msgstr "" #: src/cat_update.cpp:530 msgid "View details…" msgstr "" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "書å¼ãŒä¸æ­£ãªãƒ˜ãƒƒãƒ€: “%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "PO 翻訳ファイル" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "POT 翻訳テンプレート" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "XLIFF 翻訳ファイル" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "JSON 翻訳ファイル" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Flutter 翻訳ファイル" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "ã™ã¹ã¦ã®ç¿»è¨³ãƒ•ァイル" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "ファイル㯠Poedit ãŒèªè­˜ã§ããªã„フォーマットã§ã™ã€‚" #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "ã“ã® JSON ファイルã¯ç¿»è¨³ãƒ•ァイルã§ã¯ãªã„ãŸã‚ã€Poedit ã§ã¯ç·¨é›†ã§ãã¾ã›ã‚“。" #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "ファイル内容ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "ファイル “%s†ã¯èª­ã¿å‡ºã—専用ã®ãŸã‚ä¿å­˜ã§ãã¾ã›ã‚“。\n" "別ã®ãƒ•ァイルåã§ä¿å­˜ã—ã¦ãã ã•ã„。" #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "ファイル %s ã‚’ä¿å­˜ã§ãã¾ã›ã‚“。" #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "スクリーンショット:" #: src/catalog_po.cpp:134 #, 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] "ファイル \"%2$s\" 中㮠%1$iè¡ŒãŒæ­£ã—ã読ã¿è¾¼ã¾ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚" #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "%d行目 (ファイル “%s“) ãŒç ´æã—ã¦ã„ã¾ã™ã€‚無効ãª%sデータã§ã™ã€‚" #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "PO ファイルãŒç ´æã—ã¦ã„ã¾ã™: msgid_plural ãŒæŒ‡å®šã•れã¦ã„ã¾ã™ãŒã€msgstr ãŒè¤‡æ•°" "形表記ã§ã¯ã‚りã¾ã›ã‚“。" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "PO ファイルãŒç ´æã—ã¦ã„ã¾ã™ã€‚複数形表記㮠msgstr ãŒä½¿ã‚れã¦ã„ã¾ã™ãŒã€" "msgid_plural ã®æŒ‡å®šãŒã‚りã¾ã›ã‚“。" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "ファイルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚ç ´æã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "ファイルを読ã¿å‡ºã™éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ã“ã®ãŸã‚一部ã®ãƒ‡ãƒ¼ã‚¿ãŒå¤±ã‚れãŸã‚Š" "ç ´æã—ãŸã‚Šã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "ファイルを整形ã™ã‚‹éš›ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸãŒã€ä¿å­˜ã¯å®Œäº†ã—ã¦ã„ã¾ã™ã€‚" #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "翻訳ã®è¨­å®šã§æŒ‡å®šã•れã¦ã„る文字符å·åŒ–法 “%s†ã§ãƒ•ァイルをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—" "ãŸã€‚\n" "\n" "代ã‚り㫠UTF-8 ã§ä¿å­˜ã—ã€è¨­å®šã‚‚ãれã«å¾“ã£ã¦å¤‰æ›´ã•れã¾ã—ãŸã€‚" #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "ファイルã®ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "“%sâ€ ã¯æœ‰åŠ¹ãª POT ファイルã§ã¯ã‚りã¾ã›ã‚“。" #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "" #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "XLIFFファイルã®èª­ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "翻訳文字列内ã«ä¸æ­£ãªãƒžãƒ¼ã‚¯ã‚¢ãƒƒãƒ—記述ãŒã‚りã¾ã™ã€‚" #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "対応ã™ã‚‹ãƒ­ãƒ¼ã‚«ãƒªã‚¼ãƒ¼ã‚·ãƒ§ãƒ³ãƒ—ラットフォーム㨠Poedit を連æºã™ã‚‹ã¨ã€ãƒ—ラット" "フォーム上ã§ç®¡ç†ã•れã¦ã„る翻訳をシームレスã«åŒæœŸã§ãã¾ã™ã€‚" #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "ã‚¯ãƒ©ã‚¦ãƒ‰åŒæœŸã®ä»•組ã¿" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "アカウント" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(サインインã—ã¦ã„ã¾ã›ã‚“)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "クラウド翻訳を開ã" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "アカウントã®ç®¡ç†" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "プロジェクト:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "言語:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "クラウドアカウントã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³ã™ã‚‹" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "クラウドアカウントã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³ã™ã‚‹" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã¯ç¿»è¨³ãƒ—ロジェクトãŒã‚りã¾ã›ã‚“。" #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "最新ã®ç¿»è¨³ã‚’ダウンロード中…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "%s ã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "åŒæœŸä¸­..." #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "%s ã«ç¿»è¨³ã‚’アップロードã—ã¦ã„ã¾ã™â€¦" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "%s ã«ç¿»è¨³ã‚’アップロードã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "åŒæœŸã‚¨ãƒ©ãƒ¼" #: src/commentdlg.cpp:48 msgid "Add" msgstr "追加" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "䏿˜Žãª Crowdin エラー。" #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "未èªè¨¼ã§ã™ã€‚ã‚‚ã†ä¸€åº¦ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„。" #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "文字列ベース㮠Crowdin プロジェクトã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。" #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "ã“ã®ãƒ—ロジェクトã§ã¯ã€ç¿»è¨³ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãŒç„¡åйã«ãªã£ã¦ã„ã¾ã™ã€‚" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "ログイン" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "ログイン" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "ログアウト" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "ログアウト" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Crowdin ã«ã¤ã„ã¦" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdinã¯ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ç¿»è¨³ç®¡ç†ãƒ—ラットフォームã§ã‚りã€å…±åŒç¿»è¨³ãƒ„ールã§ã™ã€‚ç§ãŸã¡" "ã¯Crowdin自身を使ã£ã¦Poeditを多ãã®è¨€èªžã«ç¿»è¨³ã—ã¦ã„ã¾ã™ã€‚" #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "èªè¨¼ã‚’待機中…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "ユーザー情報を更新ã—ã¦ã„ã¾ã™â€¦" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Crowdin ã«ãƒ­ã‚°ã‚¤ãƒ³" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Crowdin ã¨ã®åŒæœŸã«å¤±æ•—ã—ã¾ã—ãŸã€‚" #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Crowdin エラー" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "翻訳をアップロード中…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "コピー (&C)" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "ã•らã«è©³ã—ã" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "ヘルプ (&H)" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO ファイル㯠Poedit ã§ç›´æŽ¥ç·¨é›†ã§ãã¾ã›ã‚“。" #: src/edapp.cpp:733 msgid "Error opening file" msgstr "ファイルを開ãéš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: src/edapp.cpp:735 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 ファ" "イルも更新ã•れã¾ã™ã€‚" #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "一時ファイルを削除ã—ãªã„ (デãƒãƒƒã‚°å‘ã‘)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "poedit:// URI を処ç†" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "指定ã®è¡Œç•ªå·ã®é …ç›®ã«ç§»å‹•" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Poedit プロセスã¨ã®é€šä¿¡ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "未処ç†ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "ç¿»è¨³ãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆã‚’é¸æŠž" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "䏿­£ãªãƒ•ァイル" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "ç¿»è¨³ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit ã¯ä½¿ã„ã‚„ã™ã„翻訳エディタã§ã™ã€‚" #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Poedit ã¸ãƒ‰ãƒ­ãƒƒãƒ—ã§ãã‚‹ã®ã¯1回ã«ã¤ã1ファイルã®ã¿ã§ã™ã€‚" #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "ファイル \"%s\" ã¯ç¿»è¨³ãƒ•ァイルã§ã¯ã‚りã¾ã›ã‚“。" #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "ファイル “%s†ã¯å­˜åœ¨ã—ã¾ã›ã‚“。" #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "%sã®è¾žæ›¸ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ãªã„ãŸã‚スペルãƒã‚§ãƒƒã‚¯ã¯ç„¡åŠ¹åŒ–ã•れã¦ã„ã¾ã™ã€‚" #: src/edframe.cpp:871 msgid "Install" msgstr "インストール" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "ファイル “%s†ã¯åˆ¥ã®ã‚¢ãƒ—リケーションã«ã‚ˆã£ã¦å¤‰æ›´ã•れã¾ã—ãŸã€‚" #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "ファイルをå†èª­ã¿è¾¼ã¿" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "ディスクã‹ã‚‰ãƒ•ァイルをå†èª­ã¿è¾¼ã¿ã—ã¾ã™ã‹ï¼Ÿã€€ã“ã®å ´åˆã€Poedit ã§ä¿å­˜ã•れã¦ã„ãª" "ã„編集内容ã¯å¤±ã‚れã¾ã™ã€‚" #: src/edframe.cpp:968 msgid "Ignore" msgstr "無視" #: src/edframe.cpp:968 msgid "Reload File" msgstr "ファイルをå†èª­ã¿è¾¼ã¿" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "ファイルãŒå¤‰æ›´ã•れã¾ã—ãŸã€‚変更をä¿å­˜ã—ã¾ã™ã‹ï¼Ÿ" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "変更をä¿å­˜" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "ä¿å­˜ã—ãªã„ã¨è¿½åŠ ã—ãŸå¤‰æ›´ã¯å¤±ã‚れã¾ã™ã€‚" #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "ä¿å­˜" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "ä¿å­˜ã—ãªã„ (&N)" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "ä¿å­˜ã—ãªã„" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "ä¿å­˜ã™ã‚‹ã¨ã€ä»–ã®ã‚¢ãƒ—リケーションã«ã‚ˆã£ã¦è¡Œã‚れãŸå¤‰æ›´ã¯å¤±ã‚れã¾ã™ã€‚" #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "キャンセル" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "強制的ã«ä¿å­˜" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "強制的ã«ä¿å­˜" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "åå‰ã‚’付ã‘ã¦ä¿å­˜â€¦" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "å½¢å¼ã‚’指定ã—ã¦ã‚³ãƒ³ãƒ‘イル…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "翻訳ファイルをコンパイルã—ã¾ã—ãŸ" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "HTML ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆâ€¦" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML ファイル" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "HTML ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "æ›´æ–°ã«å¤±æ•—ã—ã¾ã—ãŸ" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "POT ファイルã‹ã‚‰æ›´æ–° (&P)…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "POT ファイルã‹ã‚‰æ›´æ–° (&P)…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "翻訳ã«%dä»¶ã®å•題ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚" #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "検査ã®çµæžœ" #: src/edframe.cpp:1842 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 "" "エラーãŒã‚ã‚‹é …ç›®ã¯ãƒªã‚¹ãƒˆä¸­ã§èµ¤ãマークã•れã¦ã„ã¾ã™ã€‚エラーã®è©³ç´°ã¯ã€ãã®é …ç›®" "ã‚’é¸æŠžã™ã‚‹ã¨è¡¨ç¤ºã•れã¾ã™ã€‚" #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "ファイルを安全ã«ä¿å­˜ã—ã¾ã—ãŸã€‚" #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "ファイルを安全ã«ä¿å­˜ã— MO å½¢å¼ã«ã‚³ãƒ³ãƒ‘イルã—ã¾ã—ãŸãŒã€æã‚‰ã正常ã«å‹•作ã—ãªã„" "ã§ã—ょã†ã€‚" #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "ファイルã¯å®‰å…¨ã«ä¿å­˜ã•れã¾ã—ãŸãŒ MO å½¢å¼ã«ã‚³ãƒ³ãƒ‘イルã§ããªã‹ã£ãŸãŸã‚使用ã§ã" "ã¾ã›ã‚“。" #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "ファイルを MO å½¢å¼ã«ã‚³ãƒ³ãƒ‘イルã—ã¾ã—ãŸãŒã€æã‚‰ã正常ã«å‹•作ã—ãªã„ã§ã—ょã†ã€‚" #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "ファイルを MO å½¢å¼ã«ã‚³ãƒ³ãƒ‘イルã—ã¦ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。" #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "翻訳ã«å•題ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" #: src/edframe.cpp:1894 #, 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] "ã“ã®ç¿»è¨³ã‚’利用ã§ãã¾ã™ãŒã€%dä»¶ã®é …ç›®ãŒã¾ã ç¿»è¨³ã•れã¦ã„ã¾ã›ã‚“。" #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "ã“ã®ç¿»è¨³ã¯ä½¿ç”¨ã§ãã¾ã™ã€‚" #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit ã¯ã€ãƒ•ァイル「%sã€å†…ã®ç„¡åйãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„を自動的ã«ä¿®æ­£ã—ã¾ã—ãŸã€‚" #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "ファイルã«é‡è¤‡ã™ã‚‹é …ç›®ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚é‡è¤‡é …目㯠PO ファイルã§ã¯è¨±å¯ã•れã¦" "ãŠã‚‰ãšã€ãƒ•ァイルã®åˆ©ç”¨ã‚’妨ã’ã¾ã™ã€‚Poedit ã¯ã“ã®å•題を修正ã—ã¾ã—ãŸãŒã€è¦ç¢ºèªã¨" "ã—ã¦ãƒžãƒ¼ã‚¯ã•れã¦ã„る項目を確èªã—ã€å¿…è¦ã«å¿œã˜ã¦ä¿®æ­£ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "翻訳ã®è¨€èªžãŒè¨­å®šã•れã¦ã„ã¾ã›ã‚“。" #: src/edframe.cpp:2317 msgid "Set Language" msgstr "言語を設定" #: src/edframe.cpp:2317 msgid "Set language" msgstr "言語を設定" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "ç¿»è¨³è¨€èªžãŒæ­£ã—ã設定ã•れã¦ã„ãªã„å ´åˆã€ææ¡ˆã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。ã¾ãŸã€è¤‡æ•°å½¢ãªã©" "ã®ä»–ã®æ©Ÿèƒ½ã«ã‚‚影響ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "翻訳言語ãŒã‚½ãƒ¼ã‚¹è¨€èªžã¨åŒä¸€ã§ã™ã€‚" #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "言語を修正" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "言語を修正" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "ã“ã®ãƒ•ァイルã«ã¯è¤‡æ•°å½¢ã‚’å«ã‚€é …ç›®ãŒã‚りã¾ã™ãŒã€Plural-Forms ヘッダãŒè¨­å®šã•れã¦" "ã„ã¾ã›ã‚“。" #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "ファイルã®ä¸­ã®é …ç›®ãŒãƒ•ァイル㮠Plural-Forms ヘッダã§ç¤ºã•ã‚ŒãŸæ•°ã¨ç•°ãªã‚‹è¤‡æ•°å½¢" "ã‚’æŒã£ã¦ã„ã¾ã™" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "å¿…è¦ãªãƒ˜ãƒƒãƒ€ Plural-Forms ãŒã‚りã¾ã›ã‚“。" #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Plural-Forms ãƒ˜ãƒƒãƒ€ã«æ–‡æ³•エラーãŒã‚りã¾ã™ (\"%s\") 。" #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "ヘッダーを修正" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "ã“ã®ãƒ•ァイルã§ä½¿ã‚れã¦ã„る複数形表ç¾ã¯ã€%sã®ä¸€èˆ¬çš„ãªã‚‚ã®ã§ã¯ã‚りã¾ã›ã‚“。" #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "レビュー" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "ç¿»è¨³è¨€èªžã‚’è‹±èªžã«æŒ‡å®šã—ã¾ã™ã‹ï¼Ÿ" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "ã“ã®ãƒ•ァイルã¯åŽŸæ–‡ã®ä»£ã‚ã‚Šã«æ–‡å­—列 ID を使用ã—ã¾ã™ã€‚Poedit を使ã†ã“ã¨" "ã§ã€â€œ%s†ファイルã‹ã‚‰è‹±æ–‡ã‚’読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚" #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "英文を読ã¿è¾¼ã‚€" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "翻訳済ã¿: %d/%d件中 (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "未翻訳: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%dä»¶ã®ã‚¨ãƒ©ãƒ¼" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%dé …ç›®" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (未ä¿å­˜)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (変更済)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "翻訳メモリを更新ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "" #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "原文ã¨åŒã˜ç¿»è¨³ã‚’削除" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "原文ã¨åŒä¸€ãªã™ã¹ã¦ã®ç¿»è¨³ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "ã“ã®æ“作ã¯åŽŸæ–‡ã¨å®Œå…¨ä¸€è‡´ã™ã‚‹ç¿»è¨³ã‚’削除ã—ã¾ã™ã€‚å…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。" #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "ä¿æŒã™ã‚‹" #: src/edframe.cpp:2856 msgid "Remove" msgstr "削除" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "削除ã•れãŸç¿»è¨³ã‚’一掃ã™ã‚‹" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "ã‚‚ã†ä½¿ã‚れã¦ã„ãªã„翻訳をã™ã¹ã¦å‰Šé™¤ã—ã¾ã™ã‹ ?" #: src/edframe.cpp:2879 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 "" "一掃を実行ã™ã‚‹ã¨ã€å‰Šé™¤æ¸ˆã¿ã¨ã—ã¦ãƒžãƒ¼ã‚¯ã•れãŸç¿»è¨³ã¯ã™ã¹ã¦å®Œå…¨ã«å‰Šé™¤ã•れã¾ã™ã€‚" "å°†æ¥å†ã³è¿½åŠ ã•れãŸå ´åˆã¯ç¿»è¨³ã—ç›´ã™å¿…è¦ãŒã‚りã¾ã™ã€‚" #: src/edframe.cpp:2883 msgid "Purge" msgstr "翻訳ã®ä¸€æŽƒ" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "ソーステキストã‹ã‚‰ã‚³ãƒ”ー" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "ソーステキストã‹ã‚‰ã‚³ãƒ”ー" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "翻訳をクリア" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "翻訳をクリア" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "コメントを編集" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "コメントを編集" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "コードã§ã®å‡ºç¾ç®‡æ‰€" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "コードã§ã®å‡ºç¾ç®‡æ‰€" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "サイドãƒãƒ¼ã‚’éš ã™" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "サイドãƒãƒ¼ã‚’表示" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "ステータスãƒãƒ¼ã‚’éžè¡¨ç¤º" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "ステータスãƒãƒ¼ã‚’表示" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "文字列ã®é•·ã•: 翻訳 | 原文" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "文字列ã®é•·ã•" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "ソーステキスト" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "å˜æ•°å½¢" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "複数形" #: src/editing_area.cpp:477 msgid "Translation" msgstr "対訳" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "事å‰ç¿»è¨³æ¸ˆã¿" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "è¦ç¢ºèª" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "è¦ç¢ºèª" #: src/editing_area.cpp:566 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 ファイルを作æˆã—ã¾" "ã™ã€‚" #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "翻訳プロジェクトを新è¦ä½œæˆã™ã‚‹" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "ã“ã® POT ファイルã‹ã‚‰æ–°ã—ã„翻訳を作æˆã—ã¾ã™ã€‚" #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "原文 ID" #: src/editing_area.cpp:768 msgid "Everything" msgstr "ã™ã¹ã¦" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "å½¢å¼ %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "フォーム %i (未使用)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "0" #: src/editing_area.cpp:788 msgid "One" msgstr "1" #: src/editing_area.cpp:790 msgid "Two" msgstr "2" #: src/editing_area.cpp:804 msgid "Other" msgstr "ãã®ä»–" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "文字列ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆï¼š%s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "文字列ã®è­˜åˆ¥å­ï¼š %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "%s å½¢å¼" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "%s å½¢å¼" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "翻訳 — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "ソース テキスト — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "䏿˜Žãªè¨€èªž" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "䏿˜Žãªã‚¨ãƒ©ãƒ¼" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "gettext カタログã®çµ±åˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚" #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "エディターã§é–‹ã" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "エディターã§é–‹ã" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "ã“ã®ãƒ•ァイルã§ã¯ã€ã“ã®æ–‡å­—列ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰å†…ã®å‡ºç¾ç®‡æ‰€ã«é–¢ã™ã‚‹æƒ…å ±ãŒæç¤ºã•れ" "ã¦ã„ã¾ã›ã‚“。" #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "使用情報ã¯ã‚りã¾ã›ã‚“" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "コードã§ã®å‡ºç¾ç®‡æ‰€%dä»¶" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "ソースコードãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit ã¯æ–‡å­—列ãŒä½¿ç”¨ã•れã¦ã„るソースコードを表示ã§ãã¾ã›ã‚“。ファイルãŒå‚ç…§ã•" "れãŸå ´æ‰€ã§ä½¿ç”¨ã§ããªã„ã‹ã€å®Ÿãƒ•ァイルを指ã—ã¦ã„ãªã„シンボリックå‚ç…§ã§ã‚ã‚‹ãŸã‚" "ã§ã™ã€‚" #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "ファイルを開ã‘ã¾ã›ã‚“" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit 㯠“%s†ファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚" #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "検索" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "ç½®ãæ›ãˆ" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "設定" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "å¤§æ–‡å­—å°æ–‡å­—を無視" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "回り込ã¿" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "空白等ã§åŒºåˆ‡ã‚‰ã‚ŒãŸå˜èªžã ã‘を探ã™" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "ソース テキストを検索" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "翻訳ã•ã‚ŒãŸæ–‡å­—列を検索対象ã«å«ã‚ã‚‹" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "コメントを検索対象ã«å«ã‚ã‚‹" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "ã™ã¹ã¦ã‚’ç½®æ› (&A)" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "ã™ã¹ã¦ã‚’ç½®æ› (&a)" #: src/findframe.cpp:150 msgid "&Replace" msgstr "ç½®æ› (&R)" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< å‰ã¸ (&P)" #: src/findframe.cpp:152 msgid "&Next >" msgstr "次㸠> (&N)" #: src/findframe.cpp:235 msgid "String to find" msgstr "検索ã™ã‚‹æ–‡å­—列" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "ç½®æ›æ–‡å­—列" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "警告: " #: src/gexecute.cpp:171 msgid "error: " msgstr "エラー: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "言語åã¾ãŸã¯ã‚³ãƒ¼ãƒ‰" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "翻訳言語" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "翻訳ã®è¨€èªž:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "ã™ã¹ã¦ã®æ–‡å­—列" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Localazy プロジェクトã®è©³ç´°ã‚’ダウンロードã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "翻訳を Localazy ã«ã‚¢ãƒƒãƒ—ロードã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "プロジェクト" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "%s ã®è©³ç´°" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy ã¯é«˜åº¦ã«è‡ªå‹•化ã•れãŸãƒ­ãƒ¼ã‚«ãƒªã‚¼ãƒ¼ã‚·ãƒ§ãƒ³ãƒ—ラットフォームã§ã€èª°ã§ã‚‚ç°¡å˜" "ã«è£½å“やコンテンツを複数ã®è¨€èªžã«ç¿»è¨³ã§ãã¾ã™ã€‚" #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "プロジェクトを追加" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "プロジェクトを追加" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - カタログマãƒãƒ¼ã‚¸ãƒ£" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "編集…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "翻訳プロジェクトを作æˆã™ã‚‹" #: src/manager.cpp:145 msgid "Delete the project" msgstr "翻訳プロジェクトを削除ã™ã‚‹" #: src/manager.cpp:146 msgid "Edit the project" msgstr "ã“ã®ãƒ—ロジェクトを編集" #: src/manager.cpp:176 msgid "Update all" msgstr "å…¨ã¦æ›´æ–°ã™ã‚‹" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "プロジェクトã®ã™ã¹ã¦ã®ã‚«ã‚¿ãƒ­ã‚°ã‚’æ›´æ–°ã™ã‚‹" #: src/manager.cpp:378 msgid "Total" msgstr "åˆè¨ˆ" #: src/manager.cpp:379 msgid "Untrans" msgstr "未翻訳" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "è¦ç¢ºèª" #: src/manager.cpp:381 msgid "Errors" msgstr "エラー" #: src/manager.cpp:382 msgid "Last modified" msgstr "最終更新" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "ディレクトリã®é¸æŠž" #: src/manager.cpp:433 msgid "Directories:" msgstr "ディレクトリ:" #: src/manager.cpp:503 msgid "" msgstr "<å称未設定>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "プロジェクト “%s†を削除ã—ã¾ã™ã‹ï¼Ÿ" #: src/manager.cpp:540 msgid "Delete project" msgstr "プロジェクトを削除" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "プロジェクトを削除ã—ã¦ã‚‚ã€ç¿»è¨³ãƒ•ァイルã¯å‰Šé™¤ã•れã¾ã›ã‚“。" #: src/manager.cpp:571 msgid "Confirmation" msgstr "確èª" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "ã“ã®ãƒ—ロジェクトã®ã™ã¹ã¦ã®ã‚«ã‚¿ãƒ­ã‚°ã‚’æ›´æ–°ã—ã¾ã™ã‹ï¼Ÿ" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" "プロジェクト内ã®ã™ã¹ã¦ã®ãƒ•ァイルã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’ã‚‚ã¨ã«ã€ç¿»è¨³ãƒ•ã‚¡ã‚¤ãƒ«ã®æ›´æ–°ã‚’" "実行ã—ã¾ã™ã€‚" #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "プロジェクトカタログを更新中" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "アップデートã®ç¢ºèªâ€¦" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "カタログマãƒãƒ¼ã‚¸ãƒ£" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "設定 (&P)…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "編集 (&E)" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "å…ƒã«æˆ»ã™" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "å†å®Ÿè¡Œ" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "ペーストã—ã¦ã‚¹ã‚¿ã‚¤ãƒ«ã‚’åˆã‚ã›ã‚‹" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "削除" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "ç¶´ã‚Šã¨æ–‡æ³•" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "ç¶´ã‚Šã¨æ–‡æ³•を表示" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "ドキュメンテーションを今ã™ã確èª" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "入力中ã«ã‚¹ãƒšãƒ«ãƒã‚§ãƒƒã‚¯" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "文法ã¨ç¶´ã‚Šã‚’確èª" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "綴りを自動修正" #: src/menus.cpp:219 msgid "Substitutions" msgstr "代替案" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "代替案を表示" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "スマートコピー & ペースト" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "スマート引用" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "スマートダッシュ" #: src/menus.cpp:226 msgid "Smart Links" msgstr "スマートリンク" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "ãƒ†ã‚­ã‚¹ãƒˆç½®ãæ›ãˆ" #: src/menus.cpp:230 msgid "Transformations" msgstr "変æ›" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "大文字ã«å¤‰æ›" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "å°æ–‡å­—ã«å¤‰æ›" #: src/menus.cpp:234 msgid "Capitalize" msgstr "キャピタライズ" #: src/menus.cpp:237 msgid "Speech" msgstr "スピーãƒ" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "読ã¿ä¸Šã’ã‚’é–‹å§‹" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "読ã¿ä¸Šã’ã‚’åœæ­¢" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "表示 (&V)" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "ツールãƒãƒ¼ã‚’表示" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "ツールãƒãƒ¼ã‚’カスタマイズ…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "全画é¢è¡¨ç¤º" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "ウィンドウ" #: src/menus.cpp:263 msgid "Minimize" msgstr "最å°åŒ–" #: src/menus.cpp:264 msgid "Zoom" msgstr "ズーム" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Poedit ã¸ã‚ˆã†ã“ã" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "ã™ã¹ã¦ã‚’手å‰ã«ç§»å‹•" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "翻訳者ã«é–¢ã™ã‚‹æƒ…å ±" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "åå‰:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "ã‚ãªãŸã®åå‰" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "メール:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "ãŠåå‰ã¨ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ GNU gettext ファイル㮠Last-Translator ヘッダーを設" "定ã™ã‚‹ãŸã‚ã«ã®ã¿ä½¿ã‚れã¾ã™ã€‚" #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "編集" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "ä¿å­˜ã™ã‚‹éš›ã« MO ファイルを自動コンパイル" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "スペルãƒã‚§ãƒƒã‚¯" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "フォーカスã¯å¸¸ã«ãƒ†ã‚­ã‚¹ãƒˆãƒ•ィールドã«ç½®ã" #: src/prefsdlg.cpp:211 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 "" "ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨ä¸€è¦§ã«ãƒ•ォーカスãŒç§»å‹•ã—ãªããªã‚Šã¾ã™ã€‚キーボードã«ã‚ˆã‚‹é …ç›®ã®ç§»" "動㯠Ctrl + 矢å°ã‚­ãƒ¼ ã®ã¿ã¨ãªã‚Šã¾ã™ã€‚" #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "外観" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "カスタムリストフォントを使ã†:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "カスタムテキストフィールドフォントを使ã†:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Poedit ã® UI 言語を変更" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(Window 8 以é™ãŒå¿…è¦)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "一般" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "翻訳メモリを使ã†" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "管ç†â€¦" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "ソースã‹ã‚‰ã®æ›´æ–°æ™‚" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "ファイル内ã§ã®ã‚ã„ã¾ã„一致" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "翻訳メモリã‹ã‚‰äº‹å‰ç¿»è¨³" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit ã¯ã€ãƒ•ァイルã«å«ã¾ã‚Œã‚‹ä»¥å‰ã®ç¿»è¨³ã¾ãŸã¯ç¿»è¨³ãƒ¡ãƒ¢ãƒªã®ã¿ã‹ã‚‰æ–°ã—ã„項目を入" "力ã—よã†ã¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚翻訳メモリãŒã»ã¨ã‚“ã©ç©ºã®å ´åˆã€ãƒ¡ãƒ¢ãƒªã‚’使ã£ã¦ã‚‚" "ã‚ã¾ã‚ŠåŠ¹æžœã¯ã‚りã¾ã›ã‚“ãŒã€ç¿»è¨³ã‚’追加ã—ã¦ã„ãã¨ã•らã«ç²¾åº¦ãŒé«˜ã¾ã£ã¦ã„ãã¾ã™ã€‚" #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "ä¿å­˜ã•れãŸç¿»è¨³:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "ディスク上ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚µã‚¤ã‚º:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "翻訳ファイルã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆâ€¦" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "翻訳ファイルã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆâ€¦" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "TMX ã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆâ€¦" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "TMX ã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆâ€¦" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "TMX ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆâ€¦" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "TMX ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆâ€¦" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "リセット" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ç¿»è¨³ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ TMX ファイルをé¸ã‚“ã§ãã ã•ã„" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "TMX ファイル" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "翻訳をインãƒãƒ¼ãƒˆä¸­â€¦" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "翻訳メモリをインãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "\"%s\" ã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆâ€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "" #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "書å¼ã‚’指定ã—ã¦ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆâ€¦" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "翻訳をエクスãƒãƒ¼ãƒˆä¸­â€¦" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "「%sã€ã‹ã‚‰ç¿»è¨³ãƒ¡ãƒ¢ãƒªã‚’エクスãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "翻訳メモリをリセット" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "本当ã«ç¿»è¨³ãƒ¡ãƒ¢ãƒªã‚’リセットã—ã¦ã‚ˆã„ã§ã™ã‹ ?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "翻訳メモリをリセットã™ã‚‹ã¨ã€ä¿å­˜ã•れãŸç¿»è¨³ãŒã™ã¹ã¦å‰Šé™¤ã•れã¾ã™ã€‚å…ƒã«æˆ»ã™ã“ã¨" "ã¯ã§ãã¾ã›ã‚“。" #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "翻訳メモリ" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "翻訳メモリ" #: src/prefsdlg.cpp:730 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 "" "ソースコード抽出ツールã¯ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ãƒ•ァイル内ã«ã‚る翻訳å¯èƒ½ãªæ–‡å­—列を見ã¤" "ã‘ã¦æŠ½å‡ºã™ã‚‹ãŸã‚ã«ä½¿ã‚れã¾ã™ã€‚" #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "カスタム抽出ツール:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "カスタム抽出ツール:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "GNU gettext ツール (PHPã€C++ã€c#ã€Perlã€Pythonã€Javaã€JavaScript ãªã©) ã«ã‚ˆã£" "ã¦èªè­˜ã•れるã™ã¹ã¦ã®ãƒ—ログラミング言語ã«å¯¾å¿œã—ã¦ã„ã¾ã™ã€‚" #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "抽出ツールを削除" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "本当ã«ã€Œ%sã€æŠ½å‡ºãƒ„ãƒ¼ãƒ«ã‚’å‰Šé™¤ã—ã¦ã‚‚よã„ã§ã™ã‹ ?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "抽出ツール" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "アカウント" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "è‡ªå‹•çš„ã«æ›´æ–°ã‚’確èª" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "ベータ版をå«ã‚ã‚‹" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "ãƒ™ãƒ¼ã‚¿ç‰ˆã¯æœ€æ–°ã®æ©Ÿèƒ½ã‚„改善をå«ã¿ã¾ã™ãŒã€å®‰å®šæ€§ãŒä½Žã„å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "æ›´æ–°" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "ã“れらã®è¨­å®šã¯ PO ファイルã®å†…部フォーマットã«å½±éŸ¿ã—ã¾ã™ã€‚例ãˆã°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚³" "ントロールã®ã‚ˆã†ãªç‰¹åˆ¥ãªè¦ä»¶ãŒã‚ã‚‹å ´åˆã¯èª¿æ•´ã—ã¦ãã ã•ã„。" #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "改行:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (推奨)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "折り返ã—:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "既存ファイルã®ãƒ•ォーマットをä¿è­·ã™ã‚‹" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "上級者モード" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "設定" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "文字列を準備ã—ã¦ã„ã¾ã™â€¦" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "翻訳メモリã‹ã‚‰äº‹å‰ç¿»è¨³ã—ã¦ã„ã¾ã™â€¦" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%uä»¶ã®æ–‡å­—列を翻訳" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "事å‰ç¿»è¨³ä¸­â€¦" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%dä»¶ã®é …ç›®ãŒäº‹å‰ç¿»è¨³ã•れã¾ã—ãŸã€‚" #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "ç¿»è¨³ã¯æ­£ç¢ºã§ãªã„å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€è¦ç¢ºèªã¨ã—ã¦ãƒžãƒ¼ã‚¯ã•れã¦ã„ã¾ã™ã€‚é–“é•ã£ã¦ã„" "ãªã„ã‹ã©ã†ã‹ãƒ¬ãƒ“ューã—ã¦ãã ã•ã„。" #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "事å‰ç¿»è¨³ã§ãã‚‹é …ç›®ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚" #: src/pretranslate.cpp:218 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 "" "ã“ã®ãƒ•ァイルã«å«ã¾ã‚Œã‚‹ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã«ä¼¼ãŸæ–‡å­—列ãŒç¿»è¨³ãƒ¡ãƒ¢ãƒªã«ã¯å«ã¾ã‚Œã¦ã„ã¾ã›" "ん。" #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "原文ãªã—ã§äº‹å‰ç¿»è¨³ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。" #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "事å‰ç¿»è¨³" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "事å‰ç¿»è¨³ã¯ã€åŽŸæ–‡ãŒåˆ©ç”¨å¯èƒ½ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚å®Ÿéš›ã®æ–‡ç« ãŒãªã„ ID ã®ã¿ãŒä½¿" "ã‚れã¦ã„ã‚‹å ´åˆã¯ã€åˆ©ç”¨ã§ãã¾ã›ã‚“。" #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "䏿˜Žãªè¨€èªžã‹ã‚‰äº‹å‰ç¿»è¨³ã§ãã¾ã›ã‚“。" #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "事å‰ç¿»è¨³ã§ã¯ã€åŽŸæ–‡ã®è¨€èªžãŒåˆ¤æ˜Žã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚Poedit ã¯ã“ã®ãƒ•ァイルã§" "言語を検出ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "完全ãªä¸€è‡´ã®ã¿æŽ¡ç”¨ã™ã‚‹" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "デフォルトã§ã¯æ­£ç¢ºã§ã¯ãªã„çµæžœã‚‚å«ã¾ã‚Œã¾ã™ãŒã€è¦ç¢ºèªã¨ã—ã¦ãƒžãƒ¼ã‚¯ã•れã¾ã™ã€‚完" "全一致ã®ã¿ã‚’å«ã‚ã‚‹ã«ã¯ã€ã“ã®ã‚ªãƒ—ションã«ãƒã‚§ãƒƒã‚¯ã‚’入れã¦ãã ã•ã„。" #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "完全ãªä¸€è‡´ã‚’è¦ç¢ºèªã¨ã—ã¦ãƒžãƒ¼ã‚¯ã—ãªã„" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "翻訳メモリã®å“質を信頼ã§ãã‚‹å ´åˆã®ã¿æœ‰åŠ¹åŒ–ã—ã¦ãã ã•ã„。デフォルトã§ã¯ç¿»è¨³ãƒ¡" "モリã‹ã‚‰ã®ä¸€è‡´ã¯è¦ç¢ºèªã«ãƒžãƒ¼ã‚¯ã•れã€ãƒ¬ãƒ“ューãŒå¿…è¦ã¨ãªã‚Šã¾ã™ã€‚" #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "事å‰ç¿»è¨³ã¯ç¿»è¨³ãƒ¡ãƒ¢ãƒªå†…ã‹ã‚‰æœªç¿»è¨³æ–‡å­—列ã¨ã®å®Œå…¨ã¾ãŸã¯ã‚ã„ã¾ã„ä¸€è‡´ã‚’è‡ªå‹•çš„ã«æ¤œ" "出ã—ã€ãれã§ç¿»è¨³ã‚’埋ã‚ã¾ã™ã€‚" #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "エラー: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "" #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "キャンセルã—ã¦ã„ã¾ã™â€¦" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "ã“ã“ã«ãƒ•ォルダã¾ãŸã¯ãƒ•ァイルをドラッグ" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "ã“ã“ã«ãƒ•ォルダã¾ãŸã¯ãƒ•ァイルをドラッグ" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "フォルダーを追加…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "フォルダーを追加…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "ファイルを追加…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "ファイルを追加…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "ワイルドカードを追加…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "ワイルドカードを追加…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Finder ã§è¡¨ç¤º" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "エクスプローラーã§è¡¨ç¤º" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "フォルダã§è¡¨ç¤º" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "パス" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "除外ã™ã‚‹ãƒ‘ス" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "é«˜åº¦ãªæŠ½å‡ºè¨­å®š" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "以下ã‹ã‚‰ç¿»è¨³è€…å‘ã‘ã®ãƒ¡ãƒ¢ã‚’抽出:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "ä»¥ä¸‹ã®æŽ¥é ­è¾žã®ã¤ã„ãŸã‚³ãƒ¡ãƒ³ãƒˆ:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "ã™ã¹ã¦ã®ã‚³ãƒ¡ãƒ³ãƒˆ" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "追加 xgettext フラグ:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "追加キーワード" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "翻訳ã™ã‚‹ãƒ—ロジェクトã®åç§°" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "ãƒãƒ¼ãƒ åã¨ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¾ãŸã¯ URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "例: nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (推奨)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "ã¾ãšãƒ•ァイルをä¿å­˜ã—ã¦ãã ã•ã„。ä¿å­˜ã™ã‚‹ã¾ã§ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã¯ç·¨é›†ã§ãã¾ã›ã‚“。" #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "ãƒ—ãƒ¬ãƒ¼ã‚¹ãƒ›ãƒ«ãƒ€ãƒ¼ã®æ­£ç¢ºæ€§" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "プレースホルダー \"%s\" ãŒç¿»è¨³ã‹ã‚‰è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "原文ã«å«ã¾ã‚Œã¦ã„ãªã„余分ãªãƒ—レースホルダー \"%s\"。" #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "複数形ã®ç¿»è¨³" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "複数形ãŒã™ã¹ã¦ç¿»è¨³ã•れã¦ã„ã¾ã›ã‚“。" #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "一貫性ã®ãªã„大文字/å°æ–‡å­—ã®ä½¿ç”¨" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "ç¿»è¨³ã¯æ–‡ç« ã‹ã‚‰å§‹ã¾ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "翻訳ã¯å°æ–‡å­—ã‹ã‚‰å§‹ã¾ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "一貫性ã®ãªã„空白ã®ä½¿ç”¨" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "翻訳ãŒã‚¹ãƒšãƒ¼ã‚¹ã§å§‹ã¾ã£ã¦ã„ã¾ã›ã‚“。" #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "翻訳ã¯ã‚¹ãƒšãƒ¼ã‚¹ã§å§‹ã¾ã£ã¦ã„ã¾ã™ãŒã€åŽŸæ–‡ã¯ãã†ã§ã¯ã‚りã‚ã¾ã›ã‚“。" #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "ç¿»è¨³ã®æœ«å°¾ã«æ”¹è¡ŒãŒã‚りã¾ã›ã‚“。" #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "ç¿»è¨³ã¯æ”¹è¡Œã§çµ‚ã‚ã£ã¦ã„ã¾ã™ãŒã€åŽŸæ–‡ã¯ãã†ã§ã¯ã‚りã¾ã›ã‚“。" #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "ç¿»è¨³ã®æœ€å¾Œã«ã‚¹ãƒšãƒ¼ã‚¹ãŒã‚りã¾ã›ã‚“。" #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "翻訳ã¯ã‚¹ãƒšãƒ¼ã‚¹ã§çµ‚ã‚ã£ã¦ã„ã¾ã™ãŒã€åŽŸæ–‡ã¯ãã†ã§ã¯ã‚りã‚ã¾ã›ã‚“。" #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "å¥èª­ç‚¹ã®ãƒã‚§ãƒƒã‚¯" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "翻訳㯠\"%s\" ã§çµ‚ãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "翻訳㯠\"%s\" 以外ã§çµ‚ãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "翻訳㯠\"%s\" ã§çµ‚ã‚ã£ã¦ã„ã¾ã™ãŒã€åŽŸæ–‡ã¯ \"%s\" ã§çµ‚ã‚ã£ã¦ã„ã¾ã™ã€‚" #: src/recent_files.cpp:216 msgid "Cloud" msgstr "クラウド" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "メニューを消去" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "メニューを消去" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "コメント:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "æ›´æ–°" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "削除 (&D)" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "コメントを削除" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "プロジェクトを編集" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "プロジェクトå:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "å‚ç…§" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "ディレクトリをリストã«è¿½åŠ " #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "OK" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "ファイル (&F)" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "æ–°è¦ (&N)…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "POT/PO ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å…ƒã«æ–°è¦ (&P)…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "POT/PO ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å…ƒã«æ–°è¦ (&P)…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "é–‹ã (&O)…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "最近ã®ãƒ•ァイルを開ã" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "最近使用ã—ãŸãƒ•ァイル" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "クラウド翻訳を開ã…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "クラウド翻訳を開ã…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "スタートウィンドウ(&S)" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "スタートウィンドウ(&S)" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "カタログマãƒãƒ¼ã‚¸ãƒ£ (&M)" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "カタログマãƒãƒ¼ã‚¸ãƒ£ (&M)" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "é–‰ã˜ã‚‹ (&C)" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "ä¿å­˜ (&S)" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "åå‰ã‚’付ã‘ã¦ä¿å­˜ (&A)…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "åå‰ã‚’付ã‘ã¦ä¿å­˜ (&A)…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "MO ã«ã‚³ãƒ³ãƒ‘イル…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "HTML ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ (&X)…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "アップデートã®ç¢ºèªâ€¦" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "設定…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "設定 (&P)" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "終了 (&X)" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "終了" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "å˜æ•°å½¢ã‹ã‚‰è¤‡è£½" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "å˜æ•°å½¢ã‹ã‚‰è¤‡è£½" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "翻訳è¦ç¢ºèª (&W)" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "翻訳è¦ç¢ºèª (&W)" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "コメントを編集 (&C)" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "コメントを編集 (&C)" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "ææ¡ˆ" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "検索 (&F)…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "ç½®æ›â€¦" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "次を検索" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "å‰ã‚’検索" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "検索ã¨ç½®æ›â€¦" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "次を検索" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "å‰ã‚’検索" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "文字列 ID を表示(&I)" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "文字列 ID を表示(&I)" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "警告を表示" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "警告を表示" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "ファイル順ã§ã‚½ãƒ¼ãƒˆ (&F)" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "ファイル順ã§ã‚½ãƒ¼ãƒˆ (&F)" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "ソース順ã§ã‚½ãƒ¼ãƒˆ (&S)" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "ソース順ã§ã‚½ãƒ¼ãƒˆ (&S)" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "翻訳順ã§ã‚½ãƒ¼ãƒˆ (&T)" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "翻訳順ã§ã‚½ãƒ¼ãƒˆ (&T)" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "コンテクストã§ã‚°ãƒ«ãƒ¼ãƒ—化 (&G)" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "コンテクストã§ã‚°ãƒ«ãƒ¼ãƒ—化 (&G)" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "エラーã®ã‚る項目を先頭ã«è¡¨ç¤º" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "エラーã®ã‚る項目を先頭ã«è¡¨ç¤º" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "未訳ã®é …目を先頭㫠(&U)" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "未訳ã®é …目を先頭㫠(&U)" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "コードã§ã®å‡ºç¾ç®‡æ‰€ã‚’表示(&S)" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "コードã§ã®å‡ºç¾ç®‡æ‰€ã‚’表示(&S)" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "サイドãƒãƒ¼ã‚’表示" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "ステータスãƒãƒ¼ã‚’表示" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "翻訳(&T)" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "ソースコードã‹ã‚‰æ›´æ–° (&U)" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "ソースコードã‹ã‚‰æ›´æ–° (&U)" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Crowdin ã¨åŒæœŸ" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "事å‰ç¿»è¨³ (&T)…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "翻訳を検査 (&V)" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "翻訳を検査 (&V)" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "原文ã¨åŒã˜ç¿»è¨³ã‚’削除" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "削除ã•れãŸç¿»è¨³ã‚’一掃ã™ã‚‹ (&P)" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "削除ã•れãŸç¿»è¨³ã‚’一掃ã™ã‚‹ (&P)" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "プロパティ (&P)…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "移動 (&G)" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "翻訳済ã¿ã¨ã—ã€æ¬¡ã¸ (&D)" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "翻訳済ã¿ã¨ã—ã€æ¬¡ã¸ (&D)" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "編集済ã¿" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "編集済ã¿" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "å‰ã®ç¿»è¨³ (&P)" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "å‰ã®ç¿»è¨³ (&P)" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "次ã®ç¿»è¨³ (&N)" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "次ã®ç¿»è¨³ (&N)" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "å‰ã®æœªè¨³ã¾ãŸã¯æœªç¢ºå®š (&R)" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "å‰ã®æœªè¨³ã¾ãŸã¯æœªç¢ºå®š (&R)" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "æ¬¡ã®æœªè¨³ã¾ãŸã¯æœªç¢ºå®š (&X)" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "æ¬¡ã®æœªè¨³ã¾ãŸã¯æœªç¢ºå®š (&X)" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "å‰ã®è¤‡æ•°å½¢" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "å‰ã®è¤‡æ•°å½¢" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "次ã®è¤‡æ•°å½¢" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "次ã®è¤‡æ•°å½¢" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "オンラインヘルプ (&O)" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "オンラインヘルプ (&O)" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "GNU gettext ドキュメント (&G)" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "GNU gettext ドキュメント (&G)" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "Poedit ã«ã¤ã„㦠(&A)" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "ã“ã®ãƒ—ログラムã«ã¤ã„㦠(&A)" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "抽出ツール設定" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "ã‚»ãƒŸã‚³ãƒ­ãƒ³åŒºåˆ‡ã‚Šã®æ‹¡å¼µå­ (例. *.cpp;*h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "呼ã³å‡ºã—:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "翻訳を抽出ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "ã“ã‚Œã¯æŠ½å‡ºãƒ„ãƒ¼ãƒ«ã‚’ç«‹ã¡ä¸Šã’ã‚‹ãŸã‚ã®ã‚³ãƒžãƒ³ãƒ‰ã§ã™ã€‚\n" "%o ã¯å‡ºåŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã®åå‰ã¨ã—ã¦å±•é–‹ã•れã€%K ã¯\n" "キーワードã®ãƒªã‚¹ãƒˆã€%F ã¯å…¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒªã‚¹ãƒˆã€\n" "%C ã¯æ–‡å­—集åˆãƒ•ラグ (以下をå‚ç…§) ã§ã™ã€‚" #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "キーワード一覧ã®å„é …ç›®:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "å„キーワードã”ã¨ã«ä¸€å›žã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã¸è¿½åŠ ã•れã¾ã™ã€‚\n" "%k ã«ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰åãŒå±•é–‹ã•れã¾ã™ã€‚" #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "入力ファイル一覧ã®å„é …ç›®:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "å„入力ファイルã”ã¨ã«ä¸€å›žã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã¸è¿½åŠ ã•れã¾ã™ã€‚\n" "%f ã«ãƒ•ァイルåãŒå±•é–‹ã•れã¾ã™ã€‚" #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®æ–‡å­—符å·åŒ–法:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®æ–‡å­—符å·åŒ–æ³•ãŒæŒ‡å®šã•れãŸå ´åˆã®ã¿\n" "コマンドラインã«è¿½åŠ ã•れã¾ã™ã€‚%c ã«ç¬¦å·åŒ–法ã®å€¤ãŒå±•é–‹ã•れã¾ã™ã€‚" #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "翻訳ã®ç‰¹æ€§" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "プロジェクトåã¨ãƒãƒ¼ã‚¸ãƒ§ãƒ³:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "言語ãƒãƒ¼ãƒ :" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "複数形:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "ã“ã®è¨€èªžã®ãƒ‡ãƒ•ォルトルールを使ã†" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "カスタム表ç¾ã‚’使用" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "複数形ã¨ã¯" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "文字符å·åŒ–法:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "é«˜åº¦ãªæŠ½å‡ºè¨­å®šâ€¦" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "é«˜åº¦ãªæŠ½å‡ºè¨­å®šâ€¦" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "翻訳ã®è¨­å®š" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "ソースã®ãƒ‘ス" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "ã‚½ãƒ¼ã‚¹ã®æ¤œç´¢ãƒ‘ス" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "以下ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ã‚½ãƒ¼ã‚¹ãƒ•ァイルã‹ã‚‰ãƒ†ã‚­ã‚¹ãƒˆã‚’抽出:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "ベースã®ãƒ‘ス:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "ソース中ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "ソース中ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "ソースファイル中ã§ã“れらã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ (ã¾ãŸã¯é–¢æ•°å) ã‚’\n" "翻訳対象文字列ã®èªè­˜ã«ä½¿ã„ã¾ã™:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "対応言語ã®ãƒ‡ãƒ•ォルトキーワードも利用å¯èƒ½" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "gettext キーワードã¨ã¯" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "ファイルを開ã" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "ファイルをä¿å­˜" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "検査" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "翻訳中ã®ã‚¨ãƒ©ãƒ¼ã‚’ãƒã‚§ãƒƒã‚¯" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "コードã‹ã‚‰æ›´æ–°" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "コードã‹ã‚‰æ›´æ–°" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "ソースコードã‹ã‚‰æ›´æ–°" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "サイドãƒãƒ¼" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "サイドãƒãƒ¼ã‚’表示・éžè¡¨ç¤ºã«ã™ã‚‹ã€‚" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "以å‰ã®åŽŸæ–‡" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "未確定翻訳ãŒå¯¾å¿œã™ã‚‹æ—§ã‚½ãƒ¼ã‚¹ãƒ†ã‚­ã‚¹ãƒˆ (æ›´æ–°ã«ã‚ˆã‚‹å¤‰æ›´å‰)。" #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "翻訳者ã¸ã®æ³¨é‡ˆ" #: src/sidebar.cpp:196 msgid "Comment" msgstr "コメント" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "コメントを追加" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "コメントを追加" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "翻訳メモリã‹ã‚‰å‰Šé™¤" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "翻訳メモリã‹ã‚‰å‰Šé™¤" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "ç¿»è¨³ã®ææ¡ˆ" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "一致ã™ã‚‹ã‚‚ã®ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "一致ã™ã‚‹ã‚‚ã®ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Poedit ã®ç¿»è¨³ãƒ¡ãƒ¢ãƒªã«ã“ã®æ–‡å­—列ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚" #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "ç¿»è¨³ã®ææ¡ˆã¯ã€åŽŸæ–‡ãŒåˆ©ç”¨å¯èƒ½ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚å®Ÿéš›ã®æ–‡ç« ãŒãªã„ ID ã®ã¿ãŒ" "使ã‚れã¦ã„ã‚‹å ´åˆã¯ã€åˆ©ç”¨ã§ãã¾ã›ã‚“。" #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "ç¿»è¨³ææ¡ˆã§ã¯ã€åŽŸæ–‡ã®è¨€èªžãŒåˆ¤æ˜Žã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚Poedit ã¯ã“ã®ãƒ•ァイルã§" "言語を検出ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "プログラムを実行ã§ãã¾ã›ã‚“: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "TMX ファイルã®å½¢å¼ãŒæ­£ã—ãã‚りã¾ã›ã‚“。" #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "翻訳メモリã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒç ´æã—ã¦ã„ã¾ã™: %s (%d)。" #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "翻訳メモリエラー: %s (%d)。" #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(デフォルト言語を使用)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "è¨€èªžé¸æŠž" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "ãŠå¥½ã¿ã®è¨€èªžã‚’é¸æŠžã—ã¦ãã ã•ã„" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "変更を有効ã«ã™ã‚‹ã«ã¯ Poedit ã‚’å†èµ·å‹•ã—ã¦ãã ã•ã„。" #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "一時ディレクトリを作æˆã§ãã¾ã›ã‚“。" #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "翻訳ãŒå­˜åœ¨ã—ã¾ã›ã‚“。何ã‹ãŒãŠã‹ã—ã„よã†ã§ã™ã€‚" #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "翻訳å¯èƒ½ãªé …ç›®ã¯æ‰‹å‹•ã§ Gettext システムã«è¿½åŠ ã•れるã®ã§ã¯ãªãã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‹" "ã‚‰è‡ªå‹•çš„ã«æŠ½å‡ºã•れã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€é …ç›®ã‚’å¸¸ã«æœ€æ–°ç‰ˆã§æ­£ç¢ºã«ä¿ã¤ã“ã¨ãŒã§ãã¾" "ã™ã€‚翻訳者ã¯é€šå¸¸ã€é–‹ç™ºè€…ãŒç”¨æ„ã—㟠PO テンプレートファイル (POT) を使用ã—ã¾" "ã™ã€‚" #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "GNU gettext ã«ã¤ã„ã¦ã‚‚ã£ã¨çŸ¥ã‚‹" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "ã“ã®ç¿»è¨³ãƒ•ァイルを埋ã‚る一番簡å˜ãªæ–¹æ³•ã¯ã€POT ファイルã‹ã‚‰æ›´æ–°ã™ã‚‹ã“ã¨ã§ã™ã€‚" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "POT ファイルã‹ã‚‰æ›´æ–°" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "既存㮠POT テンプレートã‹ã‚‰ç¿»è¨³å¯èƒ½ãªæ–‡å­—列を使ã„ã¾ã™ã€‚" #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "翻訳å¯èƒ½ãªæ–‡å­—列をソースコードã‹ã‚‰ç›´æŽ¥æŠ½å‡ºã§ãã¾ã™ã€‚" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "ソースã‹ã‚‰æŠ½å‡º" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "設定画é¢ã§ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰æŠ½å‡ºã‚’設定ã§ãã¾ã™ã€‚" #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "æ–°è¦ä½œæˆ" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "POT テンプレートã‹ã‚‰æ–°ã—ã„翻訳を作æˆã—ã¾ã™ã€‚" #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "ファイルを閲覧" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "翻訳ファイルを開ã„ã¦ç·¨é›†ã—ã¾ã™ã€‚" #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "クラウドã®ãƒ—ロジェクトを翻訳" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "オンラインã§ä»–ã®äººã¨ã‚³ãƒ©ãƒœãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã—ã¾ã—ょã†ã€‚" #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "最近使用ã—ãŸãƒ•ァイル" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "åŒæœŸ" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Crowdin ã¨ç¿»è¨³ã‚’åŒæœŸã™ã‚‹" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "%s ã«ã¤ã„ã¦" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "%s 環境設定" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "%s ã«ã¤ã„ã¦" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "サービス" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "%s ã‚’éžè¡¨ç¤º" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "ã»ã‹ã‚’éžè¡¨ç¤º" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "ã™ã¹ã¦è¡¨ç¤º" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "%s を終了" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "設定…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "設定…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "設定…" #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "é©ç”¨ (&A)" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "é©ç”¨" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "戻る (&B)" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "戻る" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "キャンセル (&C)" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "消去 (&C)" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "消去" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "コピー" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "切りå–り (&T)" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "切りå–り" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "編集" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "終了 (&Q)" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "ヘルプ" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "æ–°è¦ (&N)" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "æ–°è¦" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "ã„ã„㈠(&N)" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "ã„ã„ãˆ" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "OK (&O)" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "é–‹ã…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "é–‹ã (&O)…" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "é–‹ã..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "ペースト (&P)" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "ペースト" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "環境設定" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "やり直㗠(&R)" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "å†èª­ã¿è¾¼ã¿" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "åå‰ã‚’付ã‘ã¦ä¿å­˜ (&S)" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "åå‰ã‚’付ã‘ã¦ä¿å­˜" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "ã™ã¹ã¦ã‚’é¸æŠž (&A)" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "ã™ã¹ã¦ã‚’é¸æŠž" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "å–り消㗠(&U)" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "ã¯ã„ (&Y)" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "ã¯ã„" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "上" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "下" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "å·¦" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "å³" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "警告: " poedit-3.6.3/locales/zh_CN.mo0000644000175100001660000015662415011674352011473 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-¯Oÿ‘’!’ :’!D’ f’p’‡’(ž’%Ç’4í’ "“ ,“ 9“C“ ]“h“ {“ †“ ‘“ œ“ §“ ²“ ½“È“å“ ” ” ”&”=” T”_”v” ” ˜” £”±”Á”Õ”é” ñ”ü” • • ,• :• E•S•d•x• Œ•š•·• Ô• ß• ê• õ• ––+–H–Y– j– u–€–š–´–Ë–â–ó– ———0—&@—g— w— ƒ——”—›— ¢—¯—¿— Ò—ß— ò—ÿ—˜(˜ ;˜H˜[˜n˜Ž˜•˜«˜¾˜Ô˜ ç˜ô˜*™*/™Z™!p™’™±™¸™¿™)Ø™*š-š"@šcšjšEzšÀšQÖšA(›$j›› –›{£›œ&œ6œRœ!kœ'œµœ¼œМäœôœ -C\l… •¢ © ¶ à ÐÝäèûž*žCž\ž cžmž†ž –ž£ž$¼žážMèž6Ÿ =ŸJŸ ZŸgŸwŸ%Ÿ0¶ŸçŸ  # > W Žf  õ ¡¡,¡B¡!I¡k¡r¡‹¡›¡ ´¡ ¡ Ï¡-Ü¡ ¢ ¢#*¢tN¢3â3÷¢ +£ 9£ C£$P£ u£‚£!¡£ã⣠¤ ¤"¤)¤:¤ K¤ X¤ e¤ r¤¤ †¤¤ ¤\³¤¥,¥oH¥¸¥Î¥!ê¥ ¦¦¦#¦<¦ L¦ Z¦g¦ y¦‡¦%œ¦¦ئî¦- §18§j§ z§#„§$¨§$ͧò§"¨4¨;¨N¨)i¨H“¨ܨã¨ó¨©©)©?©R©b© r© ©Œ© œ©¦© »©Å© Û©ç© î©ú©ªª!ª4ªMª–Pª‹çªs«ó«ú« ¬¬ .¬<¬R¬m¬‰¬Ÿ¬§¬º¬ͬݬö¬ ý¬ ­­­"­4­;­!Q­s­Œ­ ¢­¯­ ¿­ É­Ö­ï­ ®®/®(J®s®Lw®Ä®:Ô® ¯{¯,˜¯ ů Ò¯#߯° !° .°8° N°X° n°x°° ¦° ³°À°®×°†±± ¬±¹± رå±²²-²1²D²K`²¬²¿²*Û²³!³$;³`³p³w³Ÿ{³´7´J´Z´y´‰´ œ´©´¿´Õ´å´ ø´ µ µµµ1µHµXµiµëµòµ¶6¶F¶ Y¶z¶X¶Hæ¶/·6·CI···¤·9½·Í÷·‹Å¸1Q¹&ƒ¹ª¹ »¹ ŹÒ¹ï¹ºr!ºL”ºRẠ4» >» K»X»q»»£»¹» Ì» Ù»æ»ÿ» ¼¼ ¼-¼4¼M¼&T¼{¼‹¼’¼™¼¬¼ ¿¼˼Ò¼î¼ ½½'0½X½_½p½½ ‘½"›½¾½ŽfÛ½B¾U¾\¾c¾t¾ …¾ ’¾ Ÿ¾ ©¾ ¶¾ þ-оþ¾ ¿¿ ¿ >¿K¿!^¿€¿“¿ ¬¿ ¹¿Æ¿ Í¿׿ç¿ý¿ À$À7À GÀTÀmÀ†ÀŸÀ¯À¿À ÖÀ ãÀíÀôÀûÀ ÁÁÁ1ÁAÁHÁOÁcÁ sÁ €ÁÁ§Á»ÁÏÁéÁýÁÂu'³ àÍÂÚ ë øÂ à ÃÃ: Ã[à kà xÅÕíÃÅÃ!áÃÄ-ÄGÄNÄuUÄ)ËÄxõÄnÅuňСŠ«Å¸Å3ÔÅ Æ Æ8 Æ(YÆ ‚ÆÂÆRÇBoÇ+²ÇßÞÇŽ¾È'MÉ(uÉ@žÉ^ßÉI>ʈʧÊÅÊ2ãÊTËGk˳Ë<ÒË6Ì7FÌ~ÌšÌC¶ÌúÌÍ 1ÍRÍ$qÍ-–Í`ÄÍ'%ÎKMÎ"™ÎB¼ÎsÿÎGsÏQ»ÏK ÐjYЦÄÐ1kÑaÑXÿÑUXÒ®ÒµÒï¼Ò¬Ó ¼ÓÝÓäÓ ëÓøÓ Ô?Ô'\Ô+„Ô°ÔÐÔ çÔ ôÔOÕUQÕ §ÕZµÕÖÖ&Ö-Ö#LÖpÖÖ Ö ªÖ´Ö »Ö ÈÖÕÖ$ôÖ×5×Q×a×v×†× ™×¦× ­×º×Ó׿רØ;ØQØ!jØ$ŒØ±ØNÄØÙ&Ù -Ù :ÙDÙTÙdـىÙÙ³ÙÃÙÊÙ'ÒÙ úÙ ÚÚ'Ú=Ú?AÚ8ÚHºÚ2Û 6Û-CÛ`qÛÒÛÖÛ ÝÛ'êÛ%Ü8ÜAÜZÜvÜ‹ÜÜ–Ü›Ü¡Ü¥Ü©Ü°Ü³Ü·Ü¼Ü ÂÜ ÌÜ ÖÜ ãÜ ðÜúÜ ÝÝ *Ý7ÝOÝXÝ+hÝ|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Chinese Simplified Language: zh_CN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: zh-CN X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (已修改) (未ä¿å­˜ï¼‰%d 个代ç å‡ºçްä½ç½®%d æ¡ç›®%d 个æ¡ç›®å·²è¿›è¡Œé¢„翻译。%d 错误å‘生 %d 个错误。å‘生 %d 个错误:检测到æºå­—符串的 %d 个问题。在翻译中å‘现了 %d 个问题。文件“%2$sâ€çš„第 %1$i 行未能正确加载。%s æ ¼å¼%s 首选项%s æ ¼å¼å¯¼å…¥äº† %s 个翻译。关于(&A)关于 Poedit (&A)应用(&A)返回(&B)å–æ¶ˆ(&C)清除(&C)关闭(&C)å¤åˆ¶(&C)刪除(&D)完æˆå¹¶è½¬åˆ°ä¸‹ä¸€ä¸ª(&D)完æˆå¹¶è½¬åˆ°ä¸‹ä¸€ä¸ª(&D)编辑(&E)文件(&F)查找(&F)…GNU gettext 手册(&G)GNU gettext 手册(&G)转到(&G)按上下文分组(&G)按上下文分组(&G)帮助(&H)新建(&N)新建(&N)…下一个(&N) >下一个翻译(&N)下一个翻译(&N)å¦(&N)确定(&O)在线帮助(&O)在线帮助(&O)打开(&O)...打开(&O)…粘贴(&P)首选项(&P)首选项(&P)…å‰ä¸€ä¸ªç¿»è¯‘(&P)å‰ä¸€ä¸ªç¿»è¯‘(&P)属性(&P)…清除已删除的翻译(&P)清除已删除的翻译(&P)退出(&Q)æ¢å¤(&R)替æ¢(&R)ä¿å­˜(&S)å¦å­˜ä¸º(&S)显示代ç å‡ºçްä½ç½®(&S)显示代ç å‡ºçްä½ç½®(&S)å¯åŠ¨çª—å£(&S)å¯åŠ¨çª—å£(&S)翻译(&T)撤销(&U)未翻译æ¡ç›®ä¼˜å…ˆ(&U)未翻译æ¡ç›®ä¼˜å…ˆ(&U)从æºä»£ç æ›´æ–°(&U)从æºä»£ç æ›´æ–°(&U)验è¯ç¿»è¯‘(&V)验è¯ç¿»è¯‘(&V)查看(&V)是(&Y)ï¼ˆä½¿ç”¨é»˜è®¤è¯­è¨€ï¼‰ï¼ˆæœªç™»å½•ï¼‰ï¼ˆéœ€è¦ Windows 8 或更高版本)< 上一个(&P)<未命å>关于 %sè´¦æˆ·è´¦å·æ·»åŠ æ·»åŠ æ³¨é‡Šæ·»åŠ æ–‡ä»¶â€¦æ·»åŠ æ–‡ä»¶å¤¹â€¦æ·»åŠ é¡¹ç›®æ·»åŠ é€šé…符…添加注释将目录添加到列表添加文件…添加文件夹…添加项目添加通é…符…é¢å¤–的关键字é¢å¤–çš„ xgettext 标志︰:高级高级æå–设置…高级æå–设置高级æå–设置…所有翻译文件所有注释所有字符串支æŒçš„语言也使用默认的关键字总是将焦点移动到文本输入字段å‘ç”Ÿä¸€ä¸ªé”™è¯¯ã€‚åœ¨è¾“å…¥æ–‡ä»¶åˆ—è¡¨ä¸­çš„é¡¹ï¼šåœ¨å…³é”®å­—åˆ—è¡¨ä¸­çš„é¡¹ï¼šå¤–è§‚åº”ç”¨ç¿»è¯‘è®°å¿†å¤§è‡´åŒ¹é…æ‚¨ç¡®å®šè¦åˆ é™¤â€œ%sâ€æå–器å—?你确定你è¦é‡ç½®ç¿»è¯‘记忆库å—?自动检查更新在ä¿å­˜æ—¶è‡ªåŠ¨ç¼–è¯‘ MO æ–‡ä»¶è¿”å›žåŸºæœ¬è·¯å¾„ï¼šæµ‹è¯•ç‰ˆåŒ…å«æœ€æ–°åŠŸèƒ½å’Œæ”¹è¿›ï¼Œä½†å¯èƒ½æœ‰ç‚¹ä¸å¤ªç¨³å®šã€‚å…¨éƒ¨å¸¦åˆ°æœ€å‰æ–¹æŸåçš„POæ–‡ä»¶ï¼šå¤æ•°å½¢å¼çš„ msgstr 被用在没有 msgid_plural çš„ä½ç½®æŸåçš„POæ–‡ä»¶ï¼šå•æ•°å½¢å¼çš„ msgstr 被用在 msgid_pluralç¿»è¯‘æ–‡ä»¶ä¸­çš„æ ‡è®°ä¸æ­£ç¡®ã€‚æµè§ˆæµè§ˆæ–‡ä»¶é»˜è®¤è®¾ç½®ä¸‹ï¼Œä¼šåŒ…å«ä¸å‡†ç¡®çš„结果,但标记为需è¦å¤„ç†ã€‚选中此选项则åªåŒ…å«ç²¾ç¡®åŒ¹é…çš„é¡¹ã€‚å–æ¶ˆæ­£åœ¨å–消…无法创建临时目录。无法执行程åºï¼š %sæ— æ³•ä»ŽæœªçŸ¥è¯­è¨€é¢„ç¿»è¯‘ã€‚æ— æ³•åœ¨æ²¡æœ‰æºæ–‡æœ¬æ—¶é¢„翻译。大写编目管ç†å™¨(&M)编目管ç†å™¨(&M)编目管ç†å™¨æ›´æ”¹ç”¨æˆ·ç•Œé¢è¯­è¨€å­—ç¬¦é›†ï¼šç«‹å³æ£€æŸ¥æ–‡æ¡£æ£€æŸ¥æ‹¼å†™å’Œè¯­æ³•在输入时检查拼写检查更新…检查翻译中的错误检查更新…检查拼写清除清除èœå•清除翻译清除èœå•清除翻译关闭云代ç å‡ºçްä½ç½®ä»£ç å‡ºçްä½ç½®ä¸Žå…¶ä»–人在线åˆä½œã€‚æ­£åœ¨æ”¶é›†æºæ–‡ä»¶â€¦æå–翻译的命令:注释注释:有此å‰ç¼€çš„æ³¨é‡Šï¼šç¼–译为 MO…编译到…已编译的翻译文件在属性中é…ç½®æºä»£ç æå–。确认将 Poedit 与支æŒçš„云端本地化平å°è¿žæŽ¥ï¼Œä»¥æ— ç¼åŒæ­¥ç¿»è¯‘。å¤åˆ¶å¤åˆ¶å•æ•°å¤åˆ¶æºæ–‡æœ¬å¤åˆ¶å•æ•°å¤åˆ¶æºæ–‡æœ¬è‡ªåŠ¨æ›´æ­£æ‹¼å†™é”™è¯¯æ— æ³•ä¸‹è½½ Localazy 项目详情。无法加载文件,该文件å¯èƒ½å·²æŸå。无法ä¿å­˜æ–‡ä»¶ %s。新建创建新的翻译利用 POT 模æ¿åˆ›å»ºæ–°ç¿»è¯‘。创建新的翻译项目Crowdin 错误Crowdin 是一个在线翻译管ç†å¹³å°å’Œå作翻译工具。我们也使用 Crowdin å°† Poedit 翻译为许多ç§è¯­è¨€ï¼Œæˆ‘们爱它。剪切(&T)自定义æå–器:自定义æå–器:自定义工具æ â€¦å‰ªåˆ‡ç£ç›˜ä¸Šæ•°æ®æ–‡ä»¶çš„大å°ï¼šåˆ é™¤ä»Žç¿»è¯‘记忆中删除删除æå–器从翻译记忆中删除删除项目.删除注释删除项目删除项目ä¸ä¼šåˆ é™¤å…¶ä»–翻译文件。正在测定差异…目录:您想è¦åˆ é™¤é¡¹ç›®â€œ%sâ€å—?你想è¦ä»Žç£ç›˜ä¸Šé‡æ–°è½½å…¥æ–‡ä»¶å—?如果你这样åšï¼Œä½ åœ¨ Poedit 中未ä¿å­˜çš„ç¼–è¾‘å°†ä¼šä¸¢å¤±ã€‚ç¡®å®šç§»é™¤æ‰€æœ‰ä¸Žæºæ–‡æœ¬ç›¸åŒçš„翻译å—?您确定è¦ç§»é™¤æ‰€æœ‰ä¸å†ä½¿ç”¨çš„翻译å—?ä¸ä¿å­˜(&N)ä¸ä¿å­˜ä¸å†æ˜¾ç¤ºä¸å°†ç²¾ç¡®åŒ¹é…标为需è¦å¤„ç†ä¸å†æ˜¾ç¤ºæ­£åœ¨ä¸‹è½½æœ€æ–°çš„翻译…此项目ç¦ç”¨äº†ç¿»è¯‘下载。拖拽文件夹或文件于此拖拽文件夹或文件于此退出(&X)导出到 HTML(&X)…编辑编辑注释(&C)编辑注释(&C)编辑注释编辑注释编辑项目编辑项目编辑编辑…电å­é‚®ä»¶ï¼šè¿›å…¥å…¨å±æ¨¡å¼è¿™ä¸ªæ–‡ä»¶ä¸­çš„æ¡ç›®çš„å¤æ•°å½¢å¼æ•°é‡ä¸Žæ–‡ä»¶çš„ Plural-Forms 头所说明的ä¸åŒå¸¦æœ‰é”™è¯¯çš„æ¡ç›®ä¼˜å…ˆå¸¦æœ‰é”™è¯¯çš„æ¡ç›®ä¼˜å…ˆæœ‰é”™è¯¯çš„æ¡ç›®åœ¨åˆ—è¡¨ä¸­è¢«æ ‡è®°ä¸ºçº¢è‰²ã€‚æ‚¨é€‰æ‹©è¿™æ ·çš„æ¡ç›®æ—¶å°†æ˜¾ç¤ºé”™è¯¯çš„详细信æ¯ã€‚打开文件时出错ä¿å­˜æ–‡ä»¶æ—¶å‘生错误加载 XLIFF文件:%s 时出错错误: é”™è¯¯ä¸€åˆ‡ç¿»è¯‘è®°å¿†ç²¾ç¡®åŒ¹é…æŽ’é™¤çš„è·¯å¾„å¯¼å‡º TMX…导出为…导出到 HTML…导出 TMX…正在导出到 HTML导出翻译记忆 “%s†失败。正在导出译文…从æºä»£ç ä¸­æå–为译者æå–æ³¨é‡Šè‡ªï¼šä»Žä¸‹åˆ—ç›®å½•ä¸­çš„æºæ–‡ä»¶æå–文本:正在从 %s 个文件æå–å¯ç¿»è¯‘字符串…æå–器安装æå–器无法与 Poedit 的进程通信。从æºä»£ç æå–字符串失败。无法加载æå–翻译的文件。无法åˆå¹¶ gettext 编目。更新翻译记忆库失败: %s 文件无法打开文件文件“%sâ€ä¸å­˜åœ¨ã€‚文件“%sâ€ä¸æ˜¯ä¸€ä¸ªç¿»è¯‘文件。文件“%sâ€ä¸ºåªè¯»ï¼Œæ— æ³•ä¿å­˜ã€‚ 请使用其他åç§°ä¿å­˜ã€‚查找查找下一个查找上一个查找和替æ¢â€¦åœ¨æ³¨é‡Šä¸­æŸ¥æ‰¾åœ¨æºæ–‡æœ¬ä¸­æŸ¥æ‰¾åœ¨ç¿»è¯‘中查找查找下一个查找上一个修å¤è¯­è¨€ä¿®å¤è¯­è¨€ä¿®å¤æ–‡ä»¶å¤´ä¿®æ­£å¤´Flutter 翻译文件表格 %iæ¥è‡ª %i (未使用)GNU gettext常规HTML 文件帮助éšè—ä¾§è¾¹æ éšè—çŠ¶æ€æ éšè—è¿™æ¡æ¶ˆæ¯äº‘åŒæ­¥å¦‚何工作?ID如果您继续清除,则所有被标记为已删除的翻译都将被永久移除。如果未æ¥å®ƒä»¬è¢«æ·»åŠ å›žæ¥ï¼Œæ‚¨å¿…é¡»å†ç¿»è¯‘一é。如果您之å‰ç¦ç”¨äº†ç›¸åº”的访问æƒé™ï¼Œå¯ä»¥åœ¨ç³»ç»Ÿé¦–选项 > 安全和éšç§ > éšç§ > 文件和文件夹 䏭釿–°å…è®¸ã€‚å¦‚æžœæ‚¨ä»¥å‰æ‹’ç»äº†è®¿é—®æ‚¨çš„æ–‡ä»¶ï¼Œå¯ä»¥é‡æ–°åœ¨ 系统设置>éšç§å’Œå®‰å…¨>文件和文件夹 中å…许访问。忽略忽略大å°å†™å¯¼å…¥ TMX…导入译文文件…导入 TMX…导入译文文件…正在从“%sâ€å¯¼å…¥â€¦å¯¼å…¥ç¿»è¯‘记忆失败。正在导入翻译…在: %s包括测试版本大å°å†™ä¸ä¸€è‡´ç©ºæ ¼ä¸ä¸€è‡´å…³äºŽç¿»è¯‘者的信æ¯å®‰è£…无效文件调用:问题问题JSON ç¿»è¯‘æ–‡ä»¶ä¿æŒè¯­è¨€å称或代ç ç¿»è¯‘语言与æºè¯­è¨€ç›¸åŒã€‚翻译语言未设置。è¦ç¿»è¯‘的语言:语言选择语言团队:语言:最åŽä¿®æ”¹äº†è§£ gettext å…³é”®å­—äº†è§£å¤æ•°å½¢å¼äº†è§£æ›´å¤šäº†è§£æ›´å¤šå…³äºŽ %s 的信æ¯äº†è§£æ›´å¤šæœ‰å…³ Crowdin了解更多关于 GNU gettext 的内容行文件“%2$sâ€çš„第 %1$d 行已æŸåï¼ˆä¸æ˜¯æœ‰æ•ˆçš„ %3$s æ•°æ®ï¼‰ã€‚行尾风格:用分å·åˆ†éš”的扩展å列表(例如 *.cpp;*.h):加载英文Localazy 是一个高度自动化的本地化平å°ï¼Œäººäººéƒ½èƒ½è½»æ¾å°†è‡ªå·±çš„产å“和内容翻译到多ç§è¯­è¨€ã€‚无法在 Poedit 中直接编辑MO 文件。转为å°å†™è½¬ä¸ºå¤§å†™åˆ©ç”¨æ­¤ POT 文件创建新翻译首部格å¼å¼‚常:“%sâ€ç®¡ç†è´¦æˆ·ç®¡ç†â€¦æ­£åœ¨åˆå¹¶å·®å¼‚…最å°åŒ–翻译的项目åç§°å称:下一个未完æˆ(&X)下一个未完æˆ(&X)需è¦å¤„ç†éœ€è¦å¤„ç†ç½‘络错误:%s (%d)从ä¸è®©å­—串列表å–得焦点。如果å¯ç”¨ï¼Œæ‚¨å¿…须使用 “Ctrl-æ–¹å‘键†进行键盘导航,但您也å¯ä»¥ç«‹å³è¾“入文本,ä¸ç”¨æŒ‰ Tab 改å˜ç„¦ç‚¹ã€‚新建从 POT/PO 文件新建(&P)...新字符串从 POT/PO 文件新建(&P)...æ–°å»ºå­—ä¸²éœ€ç¿»è¯‘çš„æ–°å­—ç¬¦ä¸²ï¼šä¸‹ä¸€ä¸ªå¤æ•°å½¢å¼ä¸‹ä¸€ä¸ªå¤æ•°å½¢å¼å¦æœªæ‰¾åˆ°åŒ¹é…项没有æ¡ç›®å¯é¢„翻译。文件中未æä¾›æœ‰å…³æ­¤å­—符串在æºä»£ç ä¸­çš„出现ä½ç½®ä¿¡æ¯ã€‚未找到匹é…项翻译中未å‘现问题。您的账户中没有列出翻译项目。暂无用法信æ¯å¤æ•°å½¢å¼ä¸éœ€å…¨éƒ¨ç¿»è¯‘。未授æƒï¼Œè¯·å°è¯•釿–°ç™»å½•ã€‚ç¿»è¯‘è€…æ³¨é‡Šç¡®å®šä¸€ä»…åœ¨æ‚¨ä¿¡ä»»ä½ çš„ç¿»è¯‘è®°å¿†çš„è´¨é‡æ—¶å¯ç”¨ã€‚默认情况下,从翻译记忆匹é…的所有æ¡ç›®è¢«æ ‡è®°ä¸ºæ¨¡ç³Šï¼Œåœ¨ä½¿ç”¨å‰åº”加以审查。仅填补完全匹é…的项打开云翻译...打开最近的打开并编辑翻译文件。打开云翻译打开云翻译...打开文件在编辑器中打开在编辑器中打开打开最近的打开å‚考文件打开...打开…选项其他上一个未完æˆ(&R)上一个未完æˆ(&R)PO 翻译文件POT 翻译模æ¿POT æ–‡ä»¶åªæ˜¯æ¨¡æ¿ï¼Œä¸åŒ…å«ä»»ä½•翻译内容。 è‹¥è¦åˆ¶ä½œä¸€ä¸ªç¿»è¯‘,请基于模æ¿åˆ›å»ºä¸€ä¸ªæ–°çš„ PO æ–‡ä»¶ã€‚ç²˜è´´ç²˜è´´å¹¶åŒ¹é…æ ·å¼è·¯å¾„从æºä»£ç å¯¹é¡¹ç›®ä¸­çš„æ‰€æœ‰æ–‡ä»¶æ‰§è¡Œæ›´æ–°ã€‚æƒé™è¢«æ‹’ç»ã€‚译文缺少å ä½ç¬¦â€œ%sâ€ã€‚å ä½ç¬¦æ­£ç¡®æ€§è¯·æ‰“开并编辑对应的 PO 文件。当你ä¿å­˜å®ƒæ—¶ï¼ŒMO 文件也将被更新。请先ä¿å­˜æ–‡ä»¶ã€‚以下内容在文件ä¿å­˜ä¹‹å‰æ— æ³•è¢«ç¼–è¾‘ã€‚å¤æ•°å¤æ•°å½¢å¼ç¿»è¯‘è¯¥æ–‡ä»¶ä¸­æ‰€ä½¿ç”¨çš„å¤æ•°å½¢å¼å¯¹äºŽ %s 是ä¸åŒå¯»å¸¸çš„ã€‚å¤æ•°å½¢å¼ï¼šPoeditPoedit - 编目管ç†å™¨Poedit 自动修å¤äº†â€œ%sâ€æ–‡ä»¶ä¸­çš„æ— æ•ˆå†…容。Poedit å¯ä»¥æ ¹æ®ä»¥å‰çš„翻译文件或你的翻译记忆库æ¥å°è¯•填写新æ¡ç›®ã€‚接近空的翻译记忆库ä¸ä¼šå¾ˆæœ‰æ•ˆï¼Œä½†å¦‚果你为它添加了更多的翻译,它也会å˜å¾—更好。Poedit 无法显示字符串所用的æºç ï¼Œå› ä¸ºç›¸åº”的文件未存在于引用ä½ç½®æˆ–其是未指å‘实际文件的符å·å¼•用。Poedit 是一个易于使用的翻译编辑器。Poedit 无法打开 “%s†文件。预翻译(&T)…预翻译已预翻译已预翻译 %u 个字符串利用翻译内存预翻译...正在预翻译…预翻译自动在翻译记忆库中查找未翻译字符串的精确或模糊匹é…é¡¹ï¼Œå¹¶å°†å…¶å¡«å…¥ç¿»è¯‘ã€‚é¢„ç¿»è¯‘éœ€è¦æºæ–‡æœ¬ã€‚å¦‚æžœåªæœ‰éžå®žé™…文本的 ID 则ä¸èƒ½ç”¨ã€‚预翻译需è¦äº†è§£æºæ–‡æœ¬çš„语言。Poedit 在此文件中没有检测到。首选项首选项...首选项…正在准备字符串…ä¿ç•™çŽ°æœ‰æ–‡ä»¶çš„æ ¼å¼ä¸Šä¸€ä¸ªå¤æ•°å½¢å¼ä¸Šä¸€ä¸ªå¤æ•°å½¢å¼å…ˆå‰çš„æºæ–‡æœ¬å·²è¢«ç¼–è¾‘å·²è¢«ç¼–è¾‘é¡¹ç›®å称和版本:项目åç§°ï¼šé¡¹ç›®ï¼šé¡¹ç›®æ ‡ç‚¹æ£€æŸ¥æ¸…é™¤æ¸…é™¤å·²åˆ é™¤çš„ç¿»è¯‘é€€å‡ºè¯»å–æ–‡ä»¶å†…容失败,错误:%s最近的文件é‡åšåˆ·æ–°é‡æ–°è½½å…¥æ–‡ä»¶é‡æ–°è½½å…¥æ–‡ä»¶å‰©ä½™ï¼š%dç§»é™¤ç§»é™¤ç›¸åŒæºæ–‡çš„ç¿»è¯‘ç§»é™¤ç›¸åŒæºæ–‡çš„翻译已移除字符串已移除字符串已移除字符串(ä¸å†ä½¿ç”¨ï¼‰ï¼šæ›¿æ¢å…¨éƒ¨æ›¿æ¢(&A)全部替æ¢(&A)替æ¢å­—符串替æ¢â€¦ç¼ºå°‘必需的头 Plural-Forms。é‡ç½®é‡ç½®ç¿»è¯‘记忆库é‡ç½®ç¿»è¯‘è®°å¿†åº“å°†æ— å¯æŒ½å›žåœ°åˆ é™¤å…¶ä¸­å­˜å‚¨çš„æ‰€æœ‰ç¿»è¯‘。你无法撤消此æ“作。显示于查找器检查ä¿å­˜å¦å­˜ä¸º(&A)…å¦å­˜ä¸º(&A)…ä»ç„¶ä¿å­˜ä»ç„¶ä¿å­˜å¦å­˜ä¸ºå¦å­˜ä¸ºâ€¦ä¿å­˜æ›´æ”¹ä¿å­˜æ–‡ä»¶XCLOC æ–‡ä»¶ä¸æ”¯æŒåœ¨ä¸åŒä½ç½®ä¿å­˜ã€‚å±å¹•截图:全选(&A)全选选择è¦å¯¼å‡ºçš„ TMX 文件选择目录选择翻译文件选择需è¦å¯¼å…¥çš„翻译文件选择翻译模æ¿é€‰æ‹©æ‚¨çš„é¦–é€‰è¯­è¨€è®¾ç½®è¯­è¨€é€‰æ‹©è¯­è¨€è®¾ç½®è®¾ç½®â€¦æ˜¾ç¤ºä¾§è¾¹æ æ˜¾ç¤ºæ‹¼å†™å’Œè¯­æ³•æ˜¾ç¤ºçŠ¶æ€æ æ˜¾ç¤ºå­—符串 ID(&I)显示替æ¢é¡¹ç›®æ˜¾ç¤ºå·¥å…·æ æ˜¾ç¤ºè­¦å‘Šæ˜¾ç¤ºäºŽèµ„æºç®¡ç†å™¨æ˜¾ç¤ºäºŽæ–‡ä»¶å¤¹ä¹‹å†…显示或éšè—ä¾§è¾¹æ æ˜¾ç¤ºä¾§è¾¹æ æ˜¾ç¤ºçŠ¶æ€æ æ˜¾ç¤ºå­—符串 ID(&I)显示警告侧边æ ç™»å½•退出登录登录至 %s登录云账户登录到 Crowdinç™»å½•äº‘è´¦æˆ·é€€å‡ºå•æ•°æ™ºèƒ½å¤åˆ¶/ç²˜è´´æ™ºèƒ½çŸ­åˆ’çº¿æ™ºèƒ½é“¾æŽ¥æ™ºèƒ½å¼•å·æŒ‰æ–‡ä»¶é¡ºåºæŽ’åº(&F)æŒ‰æºæ–‡æŽ’åº(&S)按翻译排åº(&T)æŒ‰æ–‡ä»¶é¡ºåºæŽ’åº(&F)æŒ‰æºæ–‡æŽ’åº(&S)按翻译排åº(&T)æºä»£ç å­—符集:æºä»£ç æå–器用于在æºä»£ç æ–‡ä»¶ä¸­æ‰¾åˆ°å¯ç¿»è¯‘字符串和æå–它们,以便它们å¯ä»¥è¢«ç¿»è¯‘。æºä»£ç ä¸å¯ç”¨ã€‚未找到æºç æºæ–‡æœ¬æºæ–‡æœ¬ IDæºæ–‡æœ¬ — %sæºå…³é”®å­—æºè·¯å¾„æºå…³é”®å­—æºè·¯å¾„朗读拼写检查被ç¦ç”¨ï¼Œå› ä¸º %s çš„å­—å…¸æ²¡æœ‰å®‰è£…ã€‚æ‹¼å†™å’Œè¯­æ³•å¼€å§‹æœ—è¯»åœæ­¢æœ—读存储翻译:字符串上下文:%s字符串标识符:%s字符串长度(字符)字符串长度:翻译 | åŽŸæ–‡è¦æŸ¥æ‰¾çš„å­—ç¬¦ä¸²ä¸æ”¯æŒåŸºäºŽå­—符串的 Crowdin 项目。替æ¢å»ºè®®å¦‚æžœç¿»è¯‘è¯­è¨€è®¾ç½®ä¸æ­£ç¡®ï¼Œå»ºè®®å°†ä¸å¯ç”¨ã€‚å…¶ä»–ç‰¹æ€§ï¼ˆä¾‹å¦‚å¤æ•°å½¢å¼ï¼‰ä¹Ÿå¯èƒ½å—到影å“。存在原文没有的å ä½ç¬¦â€œ%sâ€ã€‚æ”¯æŒ GNU gettext 工具å¯è¯†åˆ«çš„æ‰€æœ‰ç¼–程语言(PHPã€C/C++ã€C#ã€Perlã€Pythonã€Javaã€JavaScript ç­‰ï¼‰ã€‚åŒæ­¥ä¸Ž Crowdin åŒæ­¥ä¸Ž Crowdin åŒæ­¥ç¿»è¯‘åŒæ­¥ä¸­åŒæ­¥å‡ºé”™ä¸Ž Crowdin åŒæ­¥å¤±è´¥ã€‚在 Plural-Forms 头中存在语法错误 ("%s")。翻译记忆TMX 文件从现有的 POT 模æ¿ä¸­æå–å¯ç¿»è¯‘的字符串。团队å称和电å­é‚®ä»¶åœ°å€æˆ– URL文本替æ¢ç¿»è¯‘记忆库中没有包å«ä»»ä½•与此文件内容相似的字符串。 Poedit 需è¦é€šè¿‡ä½ æ‰‹åŠ¨ç¿»è¯‘çš„æ–‡ä»¶æ¥å¾—åˆ°å……åˆ†çš„å­¦ä¹ ï¼Œç„¶åŽæ‰èƒ½åœ¨åŠè‡ªåŠ¨ç¿»è¯‘ä¸­å‘æŒ¥ä½œç”¨ã€‚TMX 文件格å¼ä¸æ­£ç¡®ã€‚如果您ä¿å­˜ï¼Œå¦ä¸€ä¸ªåº”ç”¨ç¨‹åºæ‰€ä½œçš„æ›´æ”¹å°†ä¸¢å¤±ã€‚æ–‡ä»¶æ— æ³•ç¼–è¯‘æˆ MO æ ¼å¼å¹¶ä½¿ç”¨ã€‚该文件中包å«é‡å¤çš„项目,这是ä¸å…许的,并且影å“了该文件被使用。Poedit ä¿®å¤äº†è¯¥é—®é¢˜ï¼Œä½†æ‚¨åº”该审阅任何已被标记为“需è¦å¤„ç†â€çš„翻译和纠正它们(如有必è¦ï¼‰ã€‚无法按翻译设置中所指定的将文件ä¿å­˜ä¸º “%s†字符集。 å°†ä¿å­˜ä¸º UTF-8 字符集,设置也会相应地被修改。文件已修改。您è¦ä¿å­˜æ›´æ”¹ï¼ŸPoedit 无法识别该文件的格å¼ã€‚æ–‡ä»¶è¢«ç¼–è¯‘æˆ MO æ ¼å¼ï¼Œä½†å®ƒå¯èƒ½æ— æ³•正常工作。文件已安全地ä¿å­˜ï¼Œå¹¶ç¼–è¯‘æˆ MO æ ¼å¼çš„æ–‡ä»¶ï¼Œä½†å®ƒå¯èƒ½æ— æ³•正常工作。文件已安全地ä¿å­˜ï¼Œä½†å®ƒæ— æ³•è¢«ç¼–è¯‘æˆ MO æ ¼å¼å¹¶ä½¿ç”¨ã€‚文件已被安全地ä¿å­˜ã€‚无法打开文件“%sâ€ã€‚无法打开文件“%sâ€ã€‚文件“%sâ€å·²è¢«å¦ä¸€ä¸ªåº”ç”¨ç¨‹åºæ›´æ”¹ã€‚现在ä¸å‡†ç¡®çš„ç¿»è¯‘å¯¹åº”çš„æ—§çš„æºæ–‡æœ¬ï¼ˆåœ¨æ­¤æ¬¡æ›´æ–°çš„å˜æ›´å‰ï¼‰ã€‚用翻译填写此文件最简å•的方å¼å°±æ˜¯åˆ©ç”¨ POT 更新它:翻译没有以空格开头。翻译以æ¢è¡Œç¬¦ç»“å°¾ï¼Œä½†æ˜¯æºæ–‡æœ¬æ²¡æœ‰æ¢è¡Œç¬¦ã€‚ç¿»è¯‘ä»¥ç©ºæ ¼ç»“å°¾ï¼Œä½†æ˜¯æºæ–‡æœ¬æ²¡æœ‰ç©ºæ ¼ã€‚翻译以“%sâ€ç»“å°¾ï¼Œä½†æ˜¯æºæ–‡æœ¬æ˜¯â€œ%sâ€ã€‚翻译结尾缺少æ¢è¡Œã€‚翻译结尾缺少空格。翻译å¯ä»¥ä½¿ç”¨äº†ï¼Œä¸è¿‡è¿˜æœ‰ %d 个æ¡ç›®æ²¡æœ‰è¢«ç¿»è¯‘。翻译å¯ä»¥ä½¿ç”¨äº†ã€‚翻译应以“%sâ€ç»“尾。翻译ä¸åº”以“%sâ€ç»“尾。翻译应该为一个å¥å­ã€‚翻译开头应该为å°å†™å­—æ¯ã€‚ç¿»è¯‘å¼€å¤´å­˜åœ¨æºæ–‡æœ¬æ²¡æœ‰çš„空格。这些翻译被标记为需è¦å¤„ç†ï¼Œå› ä¸ºå…¶å¯èƒ½ä¸å‡†ç¡®ã€‚请检查它们的准确性。找ä¸åˆ°ç¿»è¯‘æ–‡ä»¶ï¼Œè¿™ä¸æ­£å¸¸ã€‚在精确格å¼åŒ–文件时出现了问题(但文件已完整ä¿å­˜ï¼‰ã€‚上传翻译到 Localazy 出错。加载文件时é‡åˆ°é”™è¯¯ã€‚有些数æ®å¯èƒ½ç¼ºå¤±æˆ–æŸåã€‚è¿™äº›è®¾ç½®ä¼šå½±å“ PO 文件的内部格å¼ã€‚å¦‚æžœä½ æœ‰ç‰¹å®šçš„è¦æ±‚例如版本控制时,调整它们。该 JSON æ–‡ä»¶ä¸æ˜¯ä¸€ä»½ç¿»è¯‘文件,无法使用 Poedit 编辑。此æ“ä½œå°†ç§»é™¤ä¸Žæºæ–‡æœ¬å®Œå…¨åŒ¹é…的所有翻译。该æ“作ä¸å¯é€†ã€‚æ­¤æ–‡ä»¶åŒ…å«æœ‰å¤æ•°å½¢å¼çš„æ¡ç›®ï¼Œä½†æœªé…ç½®å¤æ•°å½¢å¼å¤´éƒ¨ã€‚此文件采用了字符串 ID è€Œéžæºæ–‡æœ¬ã€‚Poedit å¯ä»¥ä¸ºæ‚¨ä»Žâ€œ%sâ€æ–‡ä»¶åŠ è½½è‹±æ–‡æ–‡æœ¬ã€‚è¿™æ˜¯ç”¨æ¥å¯åЍæå–器的命令。 %o æå–到输出文件的å称,%K 关键字的列表,%F 输入文件的列表,%C 字符集标记(è§ä¸‹é¢ï¼‰ã€‚Poedit 的翻译记忆库中找到此字符串。仅在指定了æºä»£ç å­—符集时,这æ‰è¢«é™„加到命令行。 %c 展开æˆå­—符集值。对于æ¯ä¸ªè¾“入文件,这将被附加到命令行一次。 %f å±•å¼€æˆæ–‡ä»¶å。对于æ¯ä¸ªå…³é”®å­—,这将被附加到命令行一次。 %k 展开æˆå…³é”®å­—。总计转æ¢Gettext 系统中手动添加å¯ç¿»è¯‘æ¡ç›®ï¼Œè€Œæ˜¯è‡ªåŠ¨ä»Žæºä»£ç ä¸­æå–。 如此一æ¥ï¼Œæˆ‘们å¯ä»¥æ‰‹æ¡æœ€æ–°ã€æœ€å‡†ç¡®çš„需è¦ç¿»è¯‘çš„æ¡ç›®ã€‚ 译员通常使用由开å‘者为他们准备的 PO æ¨¡æ¿æ–‡ä»¶ï¼ˆPOT)。翻译云工程已翻译:%d 共计 %d (%d %%)翻译翻译翻译记忆翻译需è¦å¤„ç†(&W)翻译属性翻译文件已是最新,没有对字符串åšä»»ä½•更改。翻译文件已更新,%s 处更改。翻译记忆数æ®åº“å·²æŸå:%s (%d)。翻译记忆错误:%s (%d)。翻译需è¦å¤„ç†(&W)ç¿»è¯‘å±žæ€§ç¿»è¯‘å»ºè®®ç¿»è¯‘å»ºè®®éœ€è¦æºæ–‡æœ¬ã€‚å¦‚æžœåªæœ‰éžå®žé™…文本的 ID 则ä¸èƒ½ç”¨ã€‚翻译建议需è¦äº†è§£æºæ–‡æœ¬çš„语言。Poedit 在此文件中没有检测到。翻译 — %s无法利用æºç æ›´æ–°ï¼Œå› ä¸ºæœªèƒ½åœ¨æ–‡ä»¶å±žæ€§æ‰€æŒ‡å®šçš„ä½ç½®å†…找到代ç ã€‚二UTF-8(推è)撤销XCLOC 文件中缺失内容。å‘生了ä¸èƒ½å¤„ç†çš„异常:%sUnix(推è)未知的 Crowdin é”™è¯¯ã€‚æœªçŸ¥é”™è¯¯æœªç¿»è¯‘æ›´æ–°æ›´æ–°æ‘˜è¦æ›´æ–°å…¨éƒ¨æ›´æ–°é¡¹ç›®ä¸­çš„æ‰€æœ‰ç¼–目更新此项目中的所有目录?从 POT 文件更新(&P)…从 POT 文件更新(&P)â€¦ä»Žä»£ç æ›´æ–°ä»Ž POT æ–‡ä»¶æ›´æ–°ä»Žä»£ç æ›´æ–°ä»Žæºä»£ç æ›´æ–°æ›´æ–°æ‘˜è¦æ›´æ–°æ›´æ–°å¤±è´¥æ­£åœ¨æ›´æ–°é¡¹ç›®ç›®å½•正在更新翻译正在更新用户信æ¯â€¦ä¸Šä¼ ç¿»è¯‘到 %s 失败。正在上传翻译到 %s…正在上传翻译…使用自定义表达å¼ä½¿ç”¨è‡ªå®šä¹‰çš„列表字体:使用自定义的编辑区字体:使用默认语言使用这些关键字(函数å)æ¥è¯†åˆ«æºæ–‡ä»¶ä¸­çš„å¯ç¿»è¯‘字串:使用翻译记忆验è¯éªŒè¯ç»“果版本 %s查看详情…查看详情…正在等待身份验è¯â€¦è­¦å‘Š: 欢迎使用 Poeditå½“ä»Žæºæ–‡æ›´æ–°æ—¶ä»…整个å•è¯çª—å£Windows是å¦è¦ä½¿ç”¨è‹±æ–‡ä½œä¸ºæºæ–‡æœ¬ï¼Ÿå…¨å­—åŒ¹é…æ¢è¡Œåœ¨ï¼šXLIFF 翻译文件Xcode 本地化编目是你也å¯ä»¥ç›´æŽ¥ä»Žæºä»£ç ä¸­æå–å¯ç¿»è¯‘的字符串:您ä¸èƒ½æ‹–放一个以上的文件到 Poedit 窗å£ã€‚æ‚¨æ²¡æœ‰è¯»å–æ–‡ä»¶å±žæ€§æ‰€æŒ‡å®šä½ç½®çš„æºä»£ç æ–‡ä»¶çš„æƒé™ã€‚æ‚¨å¿…é¡»é‡æ–°å¯åЍ Poedit ä»¥ä½¿å˜æ›´ç”Ÿæ•ˆã€‚ä½ çš„å字如果您ä¸ä¿å­˜ï¼Œæ‚¨çš„æ›´æ”¹å°†ä¸¢å¤±ã€‚ä½ çš„å称和电å­é‚®ä»¶åœ°å€ä»…用于设置 GNU gettext 文件的 Last-Translator ä¿¡æ¯ã€‚零缩放需è¦å¤„ç†ä¸åˆ é™¤ä¸´æ—¶æ–‡ä»¶ï¼ˆç”¨äºŽè°ƒè¯•)例如: nplurals=2; plural=(n > 1);错误: 在文件内模糊匹é…跳转到给定行å·é¡¹ç›®å¤„ç† poedit:// URIAlt+Ctrl+DownEnterå·¦å³Shift+Upaltctrlshift关于 %séšè— %séšè—其他首选项...退出 %sæœåŠ¡å…¨éƒ¨æ˜¾ç¤ºæ ¹æ®ç¿»è¯‘è®°å¿†é¢„ç¿»è¯‘æœªçŸ¥è¯­è¨€ä¸æ”¯æŒçš„版本 (%s)警告: you@example.com“%sâ€ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„ POT 文件。poedit-3.6.3/locales/da.mo0000644000175100001660000016456215011674363011060 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-§O ÷‘ ’#’3’6E’|’Œ’¬’UÌ’K"“nn“ Ý“ç“ ø“D”G” K”V”^” g”q”v” {”ˆ”Ž”¡” ´”¾”ÔÌ”à”ô”ý”•/•7•;• B•L•b•x•}• • ••¦• ¯•¹•ȕڕñ•––5–S–[–c–k–p–y–Ž–£–³–ÖÒ–Û–ù–—/—G—`—y—~—‚———©— É— Ô—á—ç—í—ó—û— ˜˜0˜@˜T˜f˜˜˜¢˜²˜ƘÛ˜ õ˜'ÿ˜ '™'H™p™‰™ š™6§™2Þ™š#!šEšašjšqš4ŠšF¿š"›+)›U›]›aq›Ó›:ã›>œ.]œŒœ•œ‹¤œ 0 :#Hl)‰(³Üõ žž0ž JžTž"ežˆž¦žÁžÜž ÷žŸŸŸ#Ÿ,Ÿ>ŸBŸHŸXŸ$hŸŸ)¥Ÿ ÏŸ ٟ䟠 & /F  v yƒ ý ¡¡-¡?¡V¡1u¡;§¡ã¡þ¡¢(¢G¢ g¢°t¢%£+£C£[£u£z£—£!œ£¾£!Σ ð£ý£¤@¤^¤u¤!}¤eŸ¤=¥>C¥ ‚¥Œ¥ •¥<£¥ à¥$î¥:¦N¦n¦ަ–¦±¦º¦Φâ¦õ¦§§ ,§ 7§B§ J§eU§»§ѧpç§X¨r¨'Œ¨´¨»¨À¨Ĩܨí¨©©*©?©;S©©­©#À©0ä©aªwª ª-œª-ʪ7øª;0«1l«ž«¢«¸«(ЫPù«J¬ O¬ [¬h¬z¬¬¡¬ ·¬ ì Ь Ú¬ä¬ó¬­­&­ 7­C­ L­W­^­n­€­™­¶­¦¹­™`®ú®Н-’¯À¯Ô¯ô¯°(°1B°t°‘°—°,¬°9Ù°± 0± :± F±Q± Y±c±|±ƒ±4™±&αõ± ² ²%² ,²:²T²p²²‘²¦²¿²?Ų³A³Z³„j³-ï³´4´*L´!w´™´©´¹´δ,Ö´µ µµ -µ ;µIµß`µ@¶C¶ Y¶e¶ {¶‡¶¢¶¶¶ʶ ζ#Û¶Oÿ¶ O·8\·0•·Æ·$Ý·%¸(¸?¸B¸¨E¸' 0¹$=¹b¹{¹—¹  ¹ ®¹ ¼¹ɹÛ¹ä¹ ì¹ú¹ºº&º=º’Zºíºõº »>»Q».a»»g©»P¼b¼j¼@†¼Ǽ×¼Þ¼8ú¼3½¾6¾4õ¾'*¿R¿ b¿ p¿,}¿/ª¿Ú¿˜î¿y‡ÀgÁ iÁwÁˆÁ™Á'¯Á×ÁìÁÂÂ(Â< TÂa jÂt‰Ž«Â9²Â ìÂú Ã ÃÃ*Ã9Ã$?Ã$dÉÚÃ*«ÃÖà Ýà êÃ÷à Ä/ÄCÄ!KĈmÄ öÄ Å Å Å Å )Å 7ÅEÅ MÅXÅgÅBoŲŠÂÅ ÎÅ!ÙÅ ûÅÆ-ÆMÆjÆ …Æ ‘Æ Æ«Æ ¼ÆÊÆäÆôÆÇÇ (Ç6Ç FÇRÇ nÇ|ÇŒÇ ›Ç ©Ç³Ç»ÇÂÇÊÇÙÇñÇÈÈ$È*È?È SÈ`ÈoÈŽÈ£ÈÀÈßÈôÈÉ~'É ¦ÉÇÉ ÝÉ èÉöÉÊ Ê(Ê =ÊHÊDMÊ’Ê ¨Ê ³Ê½ÊÓÊæÊþÊ+Ë?Ë4VË ‹Ë˜ËŽ Ë</̇lÌôÌùÌ'Í:ÍCÍ'LÍ,tÍ¡Í ¤Í:®Í#éÍ ζÎÕÎMôÎ4BÏûwÏ£sÐ3Ñ0KÑP|ÑdÍÑO2Ò‚Ò!›Ò!½Ò9ßÒlÓY†Ó-àÓEÔDTÔ?™Ô-ÙÔ,Õˆ4Õ ½Õ"ÞÕ'Ö+)Ö-UÖDƒÖnÈÖ67×9n×;¨×\ä׌AØKÎØjÙZ…ÙsàÙÁTÚ=Û}TÛfÒÛh9ܢܨÜï¹Ü©ÝÀÝ ÚÝèÝüÝÞ2ÞOKÞe›Þ.ß(0ßYßvßßw¥ßcàà’–à)á,á>á$Fá!káážá ³á ¿áÌáÕá èá#öá'âBâ[âtâ…â–â§â¾â ÏâÜâóâã'ã,Fã!sã•ã°ã%Æã*ìã#äZ;ä–ä´ä½ä ÓäÞäíäüä å!å6å På]ådå$lå ‘å œå¨åÂåÝåCàå+$æiPæ=ºæøæ5çg7çŸç£ç ¨ç.¶ç#åç èè'/èWèrèwè}èè‡èè–èè è¤è©è¯èµè ¾èÌè Üè æèðèùè éé 7éBéRé|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-05 10:16 Last-Translator: Language-Team: Danish Language: da_DK MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: da X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (ændret) (ikke gemt)%d kodeforekomst%d kodeforekomster%d post%d poster%d emne blev præ-oversat.%d emner blev præ-oversat.%d fejl%d fejl%d fejl opstod.%d fejl opstod.%d fejl opstod:%d fejl opstod:%d problem med kildestrengene detekteret.%d problemer med kildestrengene detekteret.Fandt %d problem med oversættelsen.Fandt %d problemer med oversættelsen.%i linje af filen “%s†blev ikke indlæst korrekt.%i linjer af filen “%s†blev ikke indlæst korrekt.%s format%s indstillinger%s format%s oversættelse blev importeret.%s oversættelser blev importeret.&Om&Om Poedit&AnvendTil&bageAnnullér&Ryd&LukKopiér (&C)&SletFæ&rdig og næsteFæ&rdig og næste&Redigér&Fil&Find…&GNU gettext manual&GNU gettext manual&GÃ¥ til&Gruppér efter kontekst&Gruppér efter kontekst&Hjælp&Ny%Ny…&Næste >&Næste oversættelse&Næste oversættelse&Nej&Ok&Onlinehjælp&Onlinehjælp&Ã…bn...&Ã…bn…&Sæt ind&Indstillinger&Indstillinger…&Forrige oversættelse&Forrige oversættelse&Egenskaber…&Tøm slettede oversættelser&Tøm slettede oversættelser&Afslut&Gentag&Erstat&Gem&Gem som&Vis kodeforekomster&Vis kodeforekomsterO&pstartsvindueO&pstartsvindue&Oversættelse&Fortryd&Ikke-oversatte poster først&Ikke-oversatte poster først&Opdatér fra kildekode&Opdatér fra kildekode&Validér oversættelser&Validér oversættelser&Vis&Ja(Brug standardsprog)(ikke logget ind)(kræver Windows 8 eller nyere)< &ForrigeOm %sKontoKontiTilføjTilføj kommentarTilføj filer…Tilføj mapper…Tilføj projektTilføj wildcard…Tilføj kommentarTilføj mappe til listenTilføj filer…Tilføj mapper…Tilføj projektTilføj wildcard…Yderligere nøgleordYderligere xgettext flag:AvanceretAvancerede udtrækningsindstillinger…Avancerede udtræksindstillingerAvancerede udtrækningsindstillinger…Alle oversættelsesfilerAlle kommentarerAlle strengeBrug ogsÃ¥ standard nøgleord for understøttede sprogSkift altid fokus til indtastningsfeltet for tekstEn fejl opstod.En post i listen over inddatafiler:En post i nøgleordslisten:UdseendeAnvendOmtrentlige match fra TMEr du sikker pÃ¥ at du vil slette "%s"-udtrækkeren?Er du sikker pÃ¥ at du ønsker at nulstille oversættelseshukommelsen?Søg automatisk efter opdateringerKompilér automatisk MO-fil nÃ¥r der gemmesTilbageGrundlæggende sti:Betaversioner indeholder de nyeste funktioner og forbedringer, men kan være lidt mindre stabile.Bring alle fremDefekt PO-fil: flertalsform msgstr brugt uden msgid_pluralDefekt PO-fil: entalsform msgstr brugt sammen med msgid_pluralFejlbehæftet markup i oversættelsesstrengen.GennemseGennemse filerUnøjagtige resultater medtages som standard ogsÃ¥, men markeres som ufærdige. Markér valgmuligheden for kun at medtage 100% matchninger.AnnullérAnnullerer…Kan ikke oprette midlertidig mappe.Kan ikke udføre program: %sKan ikke præoversætte fra ukendt sprog.Kan ikke præoversætte uden kildetekst.Stort begyndelsesbogstav&KataloghÃ¥ndtering&KataloghÃ¥ndteringKataloghÃ¥ndteringSkift brugerfladens sprogTegnsæt:Tjek dokument nuKontrollér grammatik med stavningTjek stavning mens du skriverSøg efter opdateringer…Find fejl i oversættelsenSøg efter opdateringer…StavekontrolRydRyd menuRyd oversættelseRyd menuRyd oversættelseLukCloudKodeforekomsterKodeforekomsterSamarbejd med andre personer online.Indsamler kildefiler…Kommando til at udtrække oversættelser:KommentarKommentar:Kommentarer som starter med:Kompilér til MO…Kompilér til…Kompilerede oversættelsesfilerKonfigurér kildekode-udtrækning i Egenskaber.BekræftelseForbind Poedit med understøttede cloud-lokaliseringsplatforme for problemfri synk af oversættelser hÃ¥ndteret af disse.KopierKopiér fra entalKopiér fra kildetekstKopiér fra entalKopiér fra kildetekstKontroller automatisk stavningKunne ikke downloade Localazy-projektoplysninger.Kunne ikke indlæse filen. Den er sandsynligvis beskadiget.Kunne ikke gemme filen %s.Opret nyOpret ny oversættelseOpret ny oversættelse fra POT-skabelon.Opret nyt oversættelsesprojektCrowdin-fejlCrowdin er en online oversættelsesstyringsplatform og samarbejdsværktøj til oversættelse. Vi bruger selv Crowdin til at oversætte Poedit til mange sprog, og vi elsker det.Kli&pTilpassede udtrækkere:Tilpassede udtrækkere:Tilpas værktøjslinje…KlipDatabasestørrelse pÃ¥ disk:SletSlet fra OversættelseshukommelseSlet udtrækkerSlet fra OversættelseshukommelseSlet projektSlet kommentarenSlet projektetSletning af projektet vil ikke slette nogen oversættelsesfiler.FastslÃ¥r forskelle…Mapper:Vil du slette projektet “%sâ€?Vil du genindlæse filen fra disken? Dine ikke-gemte redigeringer i Poedit vil i givet fald gÃ¥ tabt.Fjern alle oversættelser, som er identiske med kildeteksten?Vil du slette alle oversættelser som ikke længere er i brug?Ge&m ikkeGem ikkeVis ikke igenMarker ikke nøjagtige overensstemmelser som "skal efterses"Vis ikke igenDownloader seneste oversættelser…Download af oversættelser er deaktiveret i dette projekt.Træk mapper eller filer hertilTræk mapper eller filer hertil&AfslutEksportér(&x) til HTML…RedigérRedigér &kommentarRedigér &kommentarRedigér kommentarRedigér kommentarRedigér projektRedigér projektetRedigeringRediger…E-mail:FuldskærmTeksterne i denne fil har et andet antal flertalsformer end hvad katalogets Plural-Forms-header sigerEmner med fejl førstEmner med fejl førstEmner med fejl er markeret med rødt i listen. Detaljer om fejlen vil blive vist nÃ¥r du vælger sÃ¥dan et emne.Fejl ved Ã¥bning af filenFejl under lagring af filFejl under indlæsning af XLIFF-fil: %sFejl: FejlAltNøjagtige match fra TMUdelukkede stierEksporter til TMX…Eksporter som…Eksportér til HTML…Eksporter til TMX…Eksportér til HTMLEksportdn af oversættelseshukommelse fra "%s" mislykkedes.Eksporterer oversættelser…Udtræk fra kilderUdtræk noter til oversættere fra:Udtræk tekst fra kildefiler i følgende mapper:Udpakker oversættelige strenge fra %s-filen…Udpakker oversættelige strenge fra %s-filerne…Opsætning af udtrækkerUdtrækkereMislykkedes at kommunikere med Poedit-proces.Mislykkedes at udpakke strenge fra kildekode.Kunne ikke indlæse filen med udpakkede oversættelser.Der opstod en fejl ved sammenfletning af gettext-kataloger.Kunne ikke opdatere oversættelseshukommelsen: %sFilFilen kan ikke Ã¥bnesFilen "%s" findes ikke.Filen "%s" er ikke en oversættelsesfil.Filen “%s†er skrivebeskyttet og kan ikke gemmes. Gem den med et andet navn.FindFind næsteFind forrigeFind og erstat…Find i kommentarerFind i kildeteksterFind i oversættelserFind næsteFind forrigeRet sprogRet sprogRet filhovedetRet filhovedetFlutter-oversættelsesfilerForm %iForm %i (ubrugt)GNU gettextGenereltHTML-filerHjælpSkjul sidepanelSkjul statuslinjeSkjul denne notifikationHvordan fungerer cloud-synk?IDHvis du fortsætter vil alle oversættelser som er markeret som slettede, blive fjernet permanent. Du vil skulle oversætte dem igen hvis de senere igen bliver brugt.Hvis du tidligere har nægtet adgang til dine filer, kan du tillade det i Systemindstillinger > Sikkerhed og anonymitet > Anonymitet > Arkiver og mapper.Hvis du tidligere har nægtet adgang til dine filer, kan du tillade adgang i Systemindstillinger > Anonymitet og sikkerhed > Arkiver og mapper.IgnorerIgnorer forskelle pÃ¥ store og smÃ¥ bogstaverImporter fra TMX…Importer oversættelsesfiler…Importer fra TMX…Importer oversættelsesfiler…Importér fra “%sâ€â€¦Importen af oversættelseshukommelse mislykkedes.Importerer oversættelser…I: %sMedtag betaversionerInkonsistent brug af store og smÃ¥ bogstaverInkonsistent brug af whitespace (blanktegn og linjeskift)Information om oversætterenInstallerUgyldig filUdførsel:ProblemProblemerJSON-oversættelsesfilerBeholdSprognavn eller -kodeOversættelsessproget er det samme som kildesproget.Oversættelsessproget er ikke angivet.Sprog for oversættelsen:SprogvalgSprog team:Sprog:Sidst ændretLær om gettext nøgleordLær mere om flertalsformerFÃ¥ mere at videLæs mere om %sLæs mere om CrowdinLæs mere om GNU gettextLinjeLinje %d af filen “%s†er beskadiget (ikke gyldig %s-data).Linjeafslutninger:Liste med filendelser, adskilt med semikolon (f.eks. *.cpp, *.h):Indlæs engelskLocalazy er en højautomatiseret lokaliseringsplatform, hvormed alle nemt kan oversætte deres produkter og indhold til flere sprog.MO-filer kan ikke redigeres direkte i Poedit.Lav til smÃ¥ bogstaverLav til store bogstaverLav en ny oversættelse fra denne POT-fil.Forkert udformet header: “%sâ€HÃ¥ndtér kontiAdministrere…Fletter forskelle…MinimerNavn pÃ¥ projektet som oversættelsen er tilNavn:N&æste ufærdigeN&æste ufærdigeSkal eftersesSkal eftersesNetværksfejl: %s (%d)Fokusér aldrig pÃ¥ listen med strenge. Hvis det er slÃ¥et til, skal du bruge Ctrl-piletaster for at navigere med tastaturet, men du kan til gengæld indtaste tekst uden at skulle bruge tabulator tasten for at flytte fokus.NyNy fra &POT/PO fil…Nye strengeNy fra &POT/PO fil…Nye strengeNye strenge at oversætte:Næste flertalsformNæste flertalsformNejIngen fundetIngen emner kunne præ-oversættes.Ingen information om denne strengs forekomster i kildekoden er angivet i filen.Ingen fundetDer blev ikke fundet nogle problemer med oversættelsen.Ingen oversættelsesprojekter opført i kontoen.Ingen brugsinformationElle alle flertalsformer er oversat.Ikke godkendt, log venligst ind igen.Noter til oversættereOKEnMarker kun hvis du stoler pÃ¥ kvaliteten af din TM. Som standard vil alle overensstemmelser fra TM'en være markeret som "skal efterses" og bør gennemlæses før brug.Udfyld kun nøjagtige overensstemmelserÃ…bn Cloud Translation…Åbn senesteÃ…bn og rediger oversættelsesfiler.Ã…bn cloud-oversættelseÃ…bn cloud-oversættelse…Åbn filÃ…bn i editorÃ…bn i editorÃ…bn senesteÃ…bn referencefil&Ã…bn...Ã…bn…IndstillingerAndetF&orrige ufærdigeF&orrige ufærdigePO-oversættelsesfilerPOT-oversættelsesskabelonerPOT-filer er kun skabeloner som ikke indeholder nogen oversættelser. For at oprette en oversættelse skal du oprette en ny PO-fil fra skabelonen.IndsætIndsæt og tilpas stilStierUdfører opdatering fra kildekoden pÃ¥ alle filer i projektet.Adgang nægtet.Pladsholder “%s†mangler i oversættelsen.Pladsholderes korrekthedÃ…bn og redigér i stedet den korresponderende PO-fil. NÃ¥r denne gemmes, opdateres MO-filen ligeledes.Gem venligst filen først. Denne kan sektion kan ikke redigere før det er sket.FlertalFlertalsform-oversættelserFlertalsformudtryk, der bruges af filen, er usædvanligt for %s.Flertalsformer:PoeditPoedit - KataloghÃ¥ndteringPoedit rettede automatisk ugyldigt indhold i filen "%s".Poedit kan prøve at udfylde nye emner blot ud fra tidligere oversættelser i filen, eller fra hele din oversættelseshukommelse. Brug af TM vil ikke være sÃ¥ effektiv hvis den er halv-tom, men vil blive bedre nÃ¥r du tilføjer flere oversættelser til den.Poedit kan ikke vise kildekode, hvor strengen bruges, fordi filen enten ikke er tilgængelig i den refererede placering, eller det er en symbolsk reference, der ikke peger pÃ¥ en rigtig fil.Poedit er et letanvendeligt oversættelsesværktøj.Poedit kunne ikke Ã¥bne filen “%sâ€.For&oversæt…Præ-oversætPræ-oversatFor-oversat %u strengFor-oversat %u strengePræoversætter fra oversættelseshukommelse…Præ-oversætter…Præ-oversættelse finder automatisk præcise eller uafklarede ord til u-oversatte strenge i oversættelseshukommelsen og udfylder deres oversættelser.Præoversættelse kræver at kildetekst er tilgængelig. Det virker ikke, hvis kun id'er uden den egentlige tekst bruges.Præoversættelse kræver, at kildetekstens sprog er kendt. Poedit kunne ikke bestemme det i denne fil.IndstillingerIndstillinger...Indstillinger…Forbereder strenge…Bevar formatering af eksisterende filerForrige flertalsformForrige flertalsformForrige kildetekstTidligere redigeretTidligere redigeretProjektnavn og version:Projektnavn:Projekt:ProjekterTegnsætningskontrolTømTøm slettede oversættelserAfslutLæsning af filindhold mislykkedes med følgende fejl: %sSeneste filerGentagGenopfriskGenindlæs filGenindlæs filResterende: %dFjernFjern samme-som-kilde oversættelserFjern samme-som-kilde oversættelserFjernede strengeFjernede strengeFjernede strenge (anvendes ikke længere):ErstatErstat &alleErstat &alleErstatningsstrengErstat…Det pÃ¥krævede filhovede Plural-Forms mangler.NulstilNulstil oversættelseshukommelsenNulstilling af oversættelseshukommelsen vil uigenkaldeligt slette alle gemte oversættelser i den. Du kan ikke fortryde denne handling.Vis i FinderKorrekturGemGem &som…Gem &som…Gem alligevelGem alligevelGem somGem som…Gem ændringerGem filLagring pÃ¥ en anden placering understøttes ikke for XCLOC-filer.Skærmbilleder:Vælg &alleVælg alleVælg en TMX fil til at importereVælg mappeVælg oversættelsesfilVælg oversættelsesfiler der skal importeresVælg oversættelsesskabelonVælg dit foretrukne sprogAngiv sprogAngiv sprogIndstillingerIndstillinger…Vis sidepanelVis stavning og grammatikVis statuslinjeVis streng &IDVis erstatningerVis værktøjslinjeVis advarslerVis i StifinderVis i mappeVis eller skjul sidepaneletVis sidepanelVis statuslinjeVis streng &IDVis advarslerSidepanelLog indLog udLog indLog ind pÃ¥ %sLog ind pÃ¥ Cloud-kontoLog ind pÃ¥ CrowdinLog ind pÃ¥ cloud-kontoLog udEntalSmart kopier/indsætSmarte bindestregerSmarte linksSmarte citaterSortér efter &filrækkefølgeSortér efter &kildeSortér efter &oversættelseSortér efter &filrækkefølgeSortér efter &kildeSortér efter &oversættelseKildekodens tegnsæt:Kildekode-udtrækkerer bruges til at finde oversætbare strenge i kildekode-filerne og trækker dem ud sÃ¥ de kan oversættes.Kildekoden er ikke tilgængelig.Kildekode ikke fundetKildetekstKildetekst-IDKildetekst — %sNøgleord i kildefilSøgestierNøgleord i kildefilSøgestierTaleStavekontrol er deaktiveret, da ordbogen til %s ikke er installeret.Stavning og grammatikStart taleStop taleGemte oversættelser:Strengkontekst: %sStrengidentifikator: %sStrenglængde i tegnStrenglængde i tegn: oversættelse | kildeStreng som skal findesStrengbaserede Crowdin-projekter understøttes ikke.ErstatningerForslagForslag er ikke tilgængelige hvis oversættelsessproget ikke er angivet korrekt. Andre ting, sÃ¥som flertalsformer kan ogsÃ¥ blive pÃ¥virket.Overflødig pladsholder “%s†der ikke er i kildeteksten.Understøtter alle programmeringssprog som kendes af GNU gettext værktøjer (PHP, C/C++, C#, Perl, Python, Java, JavaScript og andre).SynkSynkronisér med CrowdinSynkronisér oversættelsen med CrowdinSynkningSynkfejlSynkronisering med Crowdin mislykkedes.Syntaksfejl i Plural-Forms-filhovede ("%s").OHTMX filerTag oversætbare strenge fra en eksisterende POT-skabelon.Holdnavn og e-mailadresse eller URLTekst erstatningOH indeholder ikke nogen strenge der svarer til indholdet af denne fil. Den er kun god til halv-automatiske oversættelser nÃ¥r Poedit har lært nok fra filer du har oversat manuelt.TMX filen er forkert udformet.Ændringerne foretaget af den anden applikation vil gÃ¥ tabt, hvis du gemmer.Filen kan ikke kompileres til MO-formatet og bruges.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 "skal efterses" og rette dem om nødvendigt.Filen kunne ikke gemmes i “%sâ€-tegnsættet som angivet i oversættelsesindstillingerne. Den blev i stedet gemt i UTF-8 og med tilsvarende ændret indstilling.Filen er blevet ændret. Vil du gemme ændringerne?Filen er i et format, som Poedit ikke genkender.Filen blev kompileret til MO-formatet, men vil sandsynligvis ikke virke korrekt.Filen blev gemt korrekt og kompileret til MO-formatet, men den vil sandsynligvis ikke virke korrekt.FIlen blev gemt korrekt, men den kan ikke kompileres til MO-formatet og bruges.Filen blev gemt sikkert.Filen “%s†kunne ikke Ã¥bnes.Filen “%s†kunne ikke gemmes.Filen “%s†er blevet ændret af en anden applikation.Den gamle kildetekst (før den blev ændret ved en opdatering) som den nu forkerte oversættelse svarer til.Den enkleste mÃ¥de at udfylde denne fil med oversættelser er at opdatere den fra en POT:Oversættelsen starter ikke med et mellemrum.Oversættelsen slutter med et linjeskift, men kildeteksten gør ikke.Oversættelsen slutter med et mellemrum, men kildeteksten gør ikke.Oversættelsen ender med "%s", men kildeteksten ender med "%s".Oversættelsen mangler et linjeskift i enden.Oversættelsen mangler et mellemrum i enden.Oversættelsen er klar til brug, men %d emner er endnu ikke oversat.Oversættelsen er klar til brug, men %d emne er endnu ikke oversat.Oversættelsen er klar til brug.Oversættelsen bør ende med "%s".Oversættelsen bør ikke ende med "%s".Oversættelsen bør starte som en sætning.Oversættelsen bør starte med et lille tegn.Oversættelsen starter med et mellemrum, men kildeteksten gør ikke.Oversættelserne blev markeret som "skal efterses", da de kan være forkerte. Du bør tjekke deres korrekthed.Der er ikke nogen oversættelser. Det er usædvanligt.Problem med at formatere filen pænt (men den blev gemt).En fejl opstod under upload af oversættelser til Localazy.Fejl opstod under indlæsning af filen. Nogle data kan derfor mangle eller være beskadiget.Disse indstillinger pÃ¥virker den interne formatering af PO filer. Tilpas dem hvis du har specielle krav f.eks pÃ¥ grund af versionskontrol.Denne JSON-fil er ikke en oversættelsesfil og kan ikke redigeres i Poedit.Denne handling sletter alle oversættelser, som er identiske med kildeteksten. Handlingen er irreversibel.Denne fil har poster med flertalsformer, men har ikke en Plural-Forms-header konfigureret.Denne fil bruger streng-ID'er i stedet for kildetekst. Poedit kan indlæse engelske tekster fra filen "%s" for dig.Dette er kommandoen der bruges til at afvikle udtrækkeren. %o bliver til navnet for outputfilen, %K til listen over nøgleord, %F til listen over inputfiler, %C til tegnsætflag (se nedenfor).Denne streng blev fundet i Poedit's oversættelseshukommelse.Dette vil blive vedhæftet til kommandolinjen, dog kun hvis kildekodens tegnsæt er givet. %c erstattes med tegnsætværdien.Dette vil blive vedhæftet til kommandolinjen en gang for hver inddatafil. %f erstattes med filnavnet.Dette vil blive vedhæftet til kommandolinjen en gang for hvert nøgleord. %k erstattes med nøgleordet.I altTransformeringerOversættelige poster tilføjes ikke automatisk i Gettext-systemet, men udtrækkes automatisk fra kildekoden. PÃ¥ den mÃ¥de er de opdaterede og korrekte. Oversættere bruger typisk PO-skabelonfiler (POT'er) klargjort til dem af udvikleren.Oversæt cloud-projektOversat: %d af %d (%d %%)OversættelseOversættelsessprogOversættelseshukommelseOversættelse skal &eftersesOversættelsesegenskaberOversættelsesfil er allerede opdateret, ingen ændringer af strenge foretaget.Oversættelsesfil blev opdateret med %s ændring.Oversættelsesfil blev opdateret med %s ændringer.Oversættelses databasen er ødelagt: %s (%d).Oversættelses hukommelsesfejl: %s (%d).Oversættelse skal &eftersesOversættelsesegenskaberOversættelsesforslagOversættelsesforslag kræver, at kildetekst er tilgængelig. De virker ikke, hvis kun id'er uden selve teksten bruges.Oversættelse kræver, at kildetekstens sprog er kendt. Poedit kunne ikke bestemme det i denne fil.Oversættelse — %sOversættelserne kunne ikke opdateres fra kildekoden, fordi der ikke blev fundet nogen kode pÃ¥ den placering, der er angivet i filens egenskaber.ToUTF-8 (anbefalet)FortrydUventet mangler indhold i XCLOC-fil.UhÃ¥ndteret undtagelse opstod: %sUnix (anbefalet)Ukendt Crowdin-fejl.Ukendt fejlIkke-oversatOpdatérOpdateringsresuméOpdatér alleOpdatér alle kataloger i projektetOpdater alle kataloger i dette projekt?Opdatér fra &POT-fil…Opdatér fra &POT-fil…Opdater fra kodeOpdatér fra POTOpdater fra kodeOpdatér fra kildekodeOpdatér resuméOpdateringerOpdatering mislykkedesOpdatér projektekatalogerOpdaterer oversættelserOpdaterer brugeroplysninger…Upload af oversættelser til %s mislykkedes.Uploader oversættelser til %s…Uploader oversættelser…Brug tilpasset udtrykBrug tilpasset skrifttype til lister:Brug tilpasset skrifttype til tekstfelter:Brug standardregler for dette sprogBrug disse nøgleord (funktionsnavne) til at genkende oversættelige strenge i kildefiler:Brug oversættelseshukommelseValidérValideringsresultatetVersion %sSe detaljer…Se detaljer…Venter pÃ¥ godkendelse…Advarsel: Velkommen til PoeditVed opdatering fra kilderKun hele ordVindueWindowsVil du bruge engelsk som kildetekst?OmbrydningOmbryd ved:XLIFF-oversættelsesfilerXcode-lokaliseringskatalogJaDu kan ogsÃ¥ udtrække oversætbare strenge direkte fra kildekoden:Maks. én fil kan droppes i Poedit-vinduet.Du har ikke tilladelse til at læse kildekodefiler fra den placering, der er angivet i filens egenskaber.Du skal genstarte Poedit før denne ændring træder i kraft.Dit navnDine ændringer vil gÃ¥ tabt hvis du ikke gemmer dem.Dit navn og din e-mail-adresse bruges kun til at sætte Last-Translator-filhovedet i GNU gettext-filer.NulZoomSkal eftersesslet ikke midlertidige filer (til fejlfinding)f.eks. nplurals=2; plural=(n != 1);fejl: lav uafklaret søgning i filengÃ¥ til emnet pÃ¥ et givent linjenummerhÃ¥ndtér en poedit://-URIAlt+Ctrl+NedReturVenstreHøjreSkift+OpaltctrlskiftOm %sSkjul %sSkjul øvrigePræferencer...Afslut %sTjenesterVis allepræ-oversæt fra TMukendt sproguunderstøttet version (%s)advarsel: dig@eksempel.dk"%s" er ikke en gyldig POT-fil.poedit-3.6.3/locales/ja.mo0000644000175100001660000017503415011674364011063 Þ•­„—ì*H9 I9 U9&`9‡9<›9Ø9Jë9g6: ž:¨: ·:Á: È:Ö:Ý:ã:ë:ò:ù:ÿ:;;%;+;1;:;N;b;f;x;Š;;•;;¥;·;É;Í; Ñ; Þ;ë;ô;ý; <<!<7<M<\<x<”<š< <©<¯<¸<Ï< æ< ô< ===1=M=f==–=­=³=¸=Ï=ß= ý= >>>$>-> 1> =>J> Y>e> u>> ›>¨> ·>Ã>Ó>ç>? ?+?H?h? ~? ‹?1—?'É?ñ?@!@ ;@F@7L@6„@»@)Û@A A]AsA<†ADÃA$B-B 4B€ABÂB ÉB"×BúB+C)AC kCvCˆCšC«C¾CÇCÚCöCD#'DKD`DoD uD€D ’DD¯DµD»DÌD%ÝDE E?EGEPEhE yE‡E/¢E ÒEkßEKFPFcFyFŒF¢F-ÁF1ïF!G :GEG)\G†G ¦Gª´G_HdHwHŠHŸH£HºHÁHàHñHII2I;EI I'ŽI^¶ILJ?bJ ¢J °J½J*ÐJûJ"K51KgK‚KK£K¶K »K ÉK ×K äK ñKþKLLL&Lf8LŸL¹LuÓLIM\M"nM‘M™M  M«MºM ËMØMêMûM0 N>NXN#mN<‘NÎN ÞN*éN0O!EO'gOO”OªO(ÉOTòOGP LP VPdPxP‰PžP ³P ½P ËP ØPåPôPQQ%Q 6QBQ JQUQ ZQgQwQ–Q°Q©³Q‡]RzåR`S gSsS†S¢SµSÑS$ìST+T2THTfT ~TŸT §T ´TÀT×TÜT;òT(.UWUtU‡U –U  U®UËU äUïUVV:9V tV<‚V ¿VŒÌV.YWˆW˜W*¨WÓWîW þWXX*(XSXYXjX {X †X‘X»¨XdYhYY šY¦Y·YÈYËY#ÜY\Z]Z'nZ/–ZÆZ$ÛZ%[&[<[?[’C[Ö[ñ[ \ \8\O\ i\s\‚\ ‘\\¥\­\µ\»\Ð\å\ú\]¥]«]Á]=Ç]^1^J^nc^EÒ^__;8_ t_‚_‰_@£_õä_¿Ú`,ša,Çaôa bb2#b*VbbŽ”bw#cj›c dd!d0d%Edkd€d•dªd¼dÎd èdödÿdee!elLlaltlŠl1¦lØl0çl m &mŽ2m=Ámÿmn„n(–n¿n ÇnÕn+òno !o8+o"do‡o˜o[pCvp8ºpîópŸâq8‚r1»rRírc@sQ¤sös't:9tlttPát-2uC`uA¤uKæu02v.cvŽ’v!!w)Cw-mw+›w8ÇwCxuDx,ºxLçx;4y]py…ÎyJTzcŸz[{o_{«Ï{7{|m³|_!}[}Ý}ã}ùó}í~ ".CVn2…"¸Ûó €~"€q¡€ˆ&¯³Ç Ìí‚ ‚%‚-‚ 4‚"?‚$b‚‡‚ ‚¹‚ʂڂ낃ƒƒ*ƒDƒZƒ$wƒœƒ¼ƒÖƒìƒ„#„VC„š„±„º„ ̈́؄ ö„……-…>…E….M… |…ˆ…‘…©…H­…5ö…m,†7š† Ò†3܆a‡r‡w‡|‡.™‡ ȇé‡ñ‡ ˆ-ˆDˆVˆiˆ{ˆŽˆ ˆ³ˆLj׈èˆúˆ ‰&‰>‰Z‰y‰‘‰ª‰ÉÙ‰ê‰ Š Š!Š¢?Š â‹ ï‹ ü‹Œ/&ŒVŒ2hŒR›Œ îŒøŒ &9 R ^j ‹š © µ Ö ÷ŽŽ#$Ž#HŽ lŽ)xŽ)¢ŽÌŽ ÛŽçŽ öŽ(7?]{Š™ «·ÆØê)), Vb t €Œ(ª(Óü‘ <‘G‘ Y‘ z‘#›‘#¿‘ã‘ø‘ ’ ’ %’#F’j’ …’“’¥’µ’Å’Õ’Ü’ò’ “'“!C“e“'{“£“¼“Ø“!ô“”,”G”Z”s”‰”¢”Á”Ú”<ð”<-•!j•%Œ•"²•Õ•Ü•Cã•>'–f–:‚–½–Ä–iØ–B—^—ˆì—Hu˜¾˜ŘÕÛ˜±™!Á™3ã™+š3Cš<wš´š Êš ëš ›(›F›0Z›‹›!¤›Æ›$å› œ)œ?œFœ\œoœ…œ ˜œ ¢œ¯œËœHçœ$0"U x …+“¿'Ø0ž?1žqžÂxž ;ŸEŸ$[Ÿ€Ÿ$–Ÿ»ŸTÑŸ]& +„  ° -½ @ë ',¡T¡¿f¡&¢8¢U¢'r¢ š¢.§¢Ö¢Ý¢ù¢£.£J£'`£Tˆ£Ý£4ñ£”&¤<»¤Aø¤:¥O¥_¥6u¥¬¥*Â¥]í¥9K¦9…¦ ¿¦"˦î¦õ¦§+§A§W§!s§•§ œ§ ¦§±§€Á§*B¨*m¨™˜¨92©9l©H¦© ï© û© ªª"ª*?ªjªˆª¥ªMÀª!«0«.F«Ou«Å«Û«7ë«E#¬5i¬4Ÿ¬ Ô¬á¬.­?/­€o­ð­ ÷­ ®®'$®L®3l®  ® ­®º®Ê®Ú®ð®¯ !¯+¯ G¯S¯Z¯ l¯v¯!¯-±¯߯þ¯½°Í¿°²±@²G²c²'€²¨²'Ųí²< ³H³g³‡³. ³!ϳñ³ ´ ´ 6´D´ \´i´0…´0¶´ç´ ø´µµ µ+µIµYµ lµyµ'޵Y¶µ¶5¶N¶´d¶;·U·h·A{·%½·ã· ü·!¸ (¸'2¸Z¸#b¸#†¸ ª¸ ´¸$¾¸¥ã¸‰¹*¹*»¹æ¹ö¹º º3 º9Tº„Žº3»3G»N{»Ê»3é»?¼]¼s¼v¼Ïx¼!H½j½‰½0¨½Ù½õ½¾*¾C¾\¾ {¾ …¾¾ –¾# ¾#ľè¾þ¾Ù¿ õ¿-À0À„7À¼ÀEØÀ$ÁŒCÁrÐÁ CÂMÂk` ÌÂ×Â$ÞÂcÃTgÃë¼Ä4¨Å>ÝÅÆ 1Æ>ÆQÆ3lÆ Æœ³Æ£PÇšôÇ È œÈ ¦È$°È6ÕÈ ÉÉ,É <É IÉ(VÉɖɪɽÉÖÉ$æÉ Ê:ÊMÊ lÊvÊ†Ê¥Ê ÄÊÒÊÙÊøÊ Ë$Ë<ËTË dË5nË ¤Ë±Ë‡ÐËXÌ iÌvÌ }Ì žÌ¿ÌÒÌåÌþÌÍ*Í@Í]ÍuÍ>ˆÍÇÍãÍ0ÿÍ!0Î-R΀ÎΠΠ§Î±ÎÊÎãÎÏÏ0ÏIÏ!YÏ{Ï0‘ÏÂÏÛÏúÏÐ%Ð 5ÐBÐ RÐ_Ð3uЩÐ3ÁÐõÐ Ñ$Ñ4ÑMÑcÑ vÑ—ÑµÑ ÐÑñÑÒ(*ÒŸSÒ*óÒ*ÓIÓ _ÓiÓ‡Ó¦Ó¹ÓØÓ ñÓnþÓmÔ}Ô“Ô©Ô#ÀÔäÔÕ#Õ7ÕWMÕ ¥Õ¯Õ®¶ÕGeÖ¯­Ö]×d× v× —פ×,´×Bá×$Ø4ØPEØ1–ØÈØuáØ7WÙcÙXóÙILÚÍ–ÛEdÜGªÜmòÜ`Ý|àÝ-]Þ?‹Þ[ËÞT'ßp|ß3íßT!à]vàWÔà-,á3Zá\Žá$ëá3â9Dâ6~â9µâ]ïâ¥MãBóãc6äUšä¨ðäÇ™ågaælÉæ|6ç°³çdèFk飲éVêÖêVë]ëRdë*·ì!âìí íí(í=íHMí$–í»íÐíàí¦ðíš—î 2ï¨@ïéïëï úï(ð 0ð>ð]ð pðzðð<”ðKÑð$ñ$Bñgñ}ñšñ°ñÏñßñæñ*ò*-ò-Xò<†ò3Ãò!÷òó+5ó=aó0Ÿó~ÐóOôhôoôô’ô¨ô±ôÈô0äôõ%õ--õ [õ hõvõõN–õNåõ‡4öG¼ö÷9÷Q÷ß÷ á÷ ë÷9õ÷ /ø Pø'\ø$„ø©øÁøÆøÌøÐøÖøÚøÞøåøéøíøòøøøùù +ù 5ù BùOù!_ùù2‘ùÄùÍù>Ýù“3÷ž9µbœ-uÊy>To‚zI ?*9¾'fí‰ ³oBÞh Ž}>`&ÇP¢âmKF6‘Ù^lSwXzUTWÙ r.%Ÿ}7·V¦¬ , ‡Ó§4ª¨€…Ðs{—D+xŽ!øšUæþ;.3ÜËDd #c[B±ó1„å/Àª}µ>Œôdó|%Æ…Œôì)ˆMý) ŽyN©j,Zx:”ù'†³U*÷86Ú‹ù•01mÒ^ÞI'sŠ¥Ì  ½ȈE ÏR‘ƒfRíêÑni›QgŸ6"ƒü_5¸P—ÎN’@×,éqÒwë -ÍÓzØJ€vž—tÝr­®òt-n`‹èíoŒ¿â ;©Õ8õàA4=×úº=ÇY˜fYè¼#\_<]\a‡(¿…/¤k50Rñ¦3ÁûìÈÏ7|®9|:šå~á¹&¡F¢¯”hÛ¤ö‡Ðqòcd›mú›–.Ã]H!GJöüCeAiäu»Zb)œ¢5?«ýê’«\%·&¨$¹Öß‚Ôàg™SŸLÝñ$8É¡`[£$õ¼þÊ«NÄ"2WeÕcç„ÖÛ¬M¥ š¶HeKØ/“ïïA£Å]‚Cp²x"¤jË’~”?“ƒ+{KÉ[#°+ˆãH©Da‘̨ ½§ž@ÚŠQãus;ßJbtÔ=^lXÀlBIînGO¬WyðT»1™–¯Íÿ Å™2O´w4M†Cp‰ðÜ œ(F~aư<Lû²¥Ä E±¸(Ñ2îrvVqiZLª˜­k„ ´*<Áº˜¶•Š‹Eç‰Âá£X0 SYk Ogpéj@ξ槆V:Q¦P_•vë!–7Gÿ€{h¡äø (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extractor setupExtractorsFailed to communicate with Poedit process.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:JSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New from &POT/PO file…New stringsNext Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileScreenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sWaiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-05-06 10:16 Last-Translator: Language-Team: Japanese Language: ja_JP MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: ja X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (変更済) (未ä¿å­˜)コードã§ã®å‡ºç¾ç®‡æ‰€%dä»¶%dé …ç›®%dä»¶ã®é …ç›®ãŒäº‹å‰ç¿»è¨³ã•れã¾ã—ãŸã€‚%dä»¶ã®ã‚¨ãƒ©ãƒ¼ç¿»è¨³ã«%dä»¶ã®å•題ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ファイル "%2$s" 中㮠%1$iè¡ŒãŒæ­£ã—ã読ã¿è¾¼ã¾ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚%s å½¢å¼%s 環境設定%s å½¢å¼ã“ã®ãƒ—ログラムã«ã¤ã„㦠(&A)Poedit ã«ã¤ã„㦠(&A)é©ç”¨ (&A)戻る (&B)キャンセル (&C)消去 (&C)é–‰ã˜ã‚‹ (&C)コピー (&C)削除 (&D)翻訳済ã¿ã¨ã—ã€æ¬¡ã¸ (&D)翻訳済ã¿ã¨ã—ã€æ¬¡ã¸ (&D)編集 (&E)ファイル (&F)検索 (&F)…GNU gettext ドキュメント (&G)GNU gettext ドキュメント (&G)移動 (&G)コンテクストã§ã‚°ãƒ«ãƒ¼ãƒ—化 (&G)コンテクストã§ã‚°ãƒ«ãƒ¼ãƒ—化 (&G)ヘルプ (&H)æ–°è¦ (&N)æ–°è¦ (&N)…次㸠> (&N)次ã®ç¿»è¨³ (&N)次ã®ç¿»è¨³ (&N)ã„ã„㈠(&N)OK (&O)オンラインヘルプ (&O)オンラインヘルプ (&O)é–‹ã (&O)…開ã (&O)…ペースト (&P)設定 (&P)設定 (&P)…å‰ã®ç¿»è¨³ (&P)å‰ã®ç¿»è¨³ (&P)プロパティ (&P)…削除ã•れãŸç¿»è¨³ã‚’一掃ã™ã‚‹ (&P)削除ã•れãŸç¿»è¨³ã‚’一掃ã™ã‚‹ (&P)終了 (&Q)やり直㗠(&R)ç½®æ› (&R)ä¿å­˜ (&S)åå‰ã‚’付ã‘ã¦ä¿å­˜ (&S)コードã§ã®å‡ºç¾ç®‡æ‰€ã‚’表示(&S)コードã§ã®å‡ºç¾ç®‡æ‰€ã‚’表示(&S)スタートウィンドウ(&S)スタートウィンドウ(&S)翻訳(&T)å–り消㗠(&U)未訳ã®é …目を先頭㫠(&U)未訳ã®é …目を先頭㫠(&U)ソースコードã‹ã‚‰æ›´æ–° (&U)ソースコードã‹ã‚‰æ›´æ–° (&U)翻訳を検査 (&V)翻訳を検査 (&V)表示 (&V)ã¯ã„ (&Y)(デフォルト言語を使用)(サインインã—ã¦ã„ã¾ã›ã‚“)(Window 8 以é™ãŒå¿…è¦)< å‰ã¸ (&P)<å称未設定>%s ã«ã¤ã„ã¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚¢ã‚«ã‚¦ãƒ³ãƒˆè¿½åŠ ã‚³ãƒ¡ãƒ³ãƒˆã‚’è¿½åŠ ãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¿½åŠ â€¦ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’è¿½åŠ â€¦ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã‚’è¿½åŠ ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã‚’è¿½åŠ â€¦ã‚³ãƒ¡ãƒ³ãƒˆã‚’è¿½åŠ ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ãƒªã‚¹ãƒˆã«è¿½åŠ ãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¿½åŠ â€¦ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’è¿½åŠ â€¦ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã‚’è¿½åŠ ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã‚’è¿½åŠ â€¦è¿½åŠ ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰è¿½åŠ  xgettext フラグ:ä¸Šç´šè€…ãƒ¢ãƒ¼ãƒ‰é«˜åº¦ãªæŠ½å‡ºè¨­å®šâ€¦é«˜åº¦ãªæŠ½å‡ºè¨­å®šé«˜åº¦ãªæŠ½å‡ºè¨­å®šâ€¦ã™ã¹ã¦ã®ç¿»è¨³ãƒ•ァイルã™ã¹ã¦ã®ã‚³ãƒ¡ãƒ³ãƒˆã™ã¹ã¦ã®æ–‡å­—列対応言語ã®ãƒ‡ãƒ•ォルトキーワードも利用å¯èƒ½ãƒ•ォーカスã¯å¸¸ã«ãƒ†ã‚­ã‚¹ãƒˆãƒ•ィールドã«ç½®ãエラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚入力ファイル一覧ã®å„é …ç›®:キーワード一覧ã®å„é …ç›®:外観é©ç”¨æœ¬å½“ã«ã€Œ%sã€æŠ½å‡ºãƒ„ãƒ¼ãƒ«ã‚’å‰Šé™¤ã—ã¦ã‚‚よã„ã§ã™ã‹ ?本当ã«ç¿»è¨³ãƒ¡ãƒ¢ãƒªã‚’リセットã—ã¦ã‚ˆã„ã§ã™ã‹ ?è‡ªå‹•çš„ã«æ›´æ–°ã‚’確èªä¿å­˜ã™ã‚‹éš›ã« MO ファイルを自動コンパイル戻るベースã®ãƒ‘ス:ãƒ™ãƒ¼ã‚¿ç‰ˆã¯æœ€æ–°ã®æ©Ÿèƒ½ã‚„改善をå«ã¿ã¾ã™ãŒã€å®‰å®šæ€§ãŒä½Žã„å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ã™ã¹ã¦ã‚’手å‰ã«ç§»å‹•PO ファイルãŒç ´æã—ã¦ã„ã¾ã™ã€‚複数形表記㮠msgstr ãŒä½¿ã‚れã¦ã„ã¾ã™ãŒã€msgid_plural ã®æŒ‡å®šãŒã‚りã¾ã›ã‚“。PO ファイルãŒç ´æã—ã¦ã„ã¾ã™: msgid_plural ãŒæŒ‡å®šã•れã¦ã„ã¾ã™ãŒã€msgstr ãŒè¤‡æ•°å½¢è¡¨è¨˜ã§ã¯ã‚りã¾ã›ã‚“。翻訳文字列内ã«ä¸æ­£ãªãƒžãƒ¼ã‚¯ã‚¢ãƒƒãƒ—記述ãŒã‚りã¾ã™ã€‚å‚照ファイルを閲覧デフォルトã§ã¯æ­£ç¢ºã§ã¯ãªã„çµæžœã‚‚å«ã¾ã‚Œã¾ã™ãŒã€è¦ç¢ºèªã¨ã—ã¦ãƒžãƒ¼ã‚¯ã•れã¾ã™ã€‚完全一致ã®ã¿ã‚’å«ã‚ã‚‹ã«ã¯ã€ã“ã®ã‚ªãƒ—ションã«ãƒã‚§ãƒƒã‚¯ã‚’入れã¦ãã ã•ã„。キャンセルキャンセルã—ã¦ã„ã¾ã™â€¦ä¸€æ™‚ディレクトリを作æˆã§ãã¾ã›ã‚“。プログラムを実行ã§ãã¾ã›ã‚“: %s䏿˜Žãªè¨€èªžã‹ã‚‰äº‹å‰ç¿»è¨³ã§ãã¾ã›ã‚“。原文ãªã—ã§äº‹å‰ç¿»è¨³ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。キャピタライズカタログマãƒãƒ¼ã‚¸ãƒ£ (&M)カタログマãƒãƒ¼ã‚¸ãƒ£ (&M)カタログマãƒãƒ¼ã‚¸ãƒ£Poedit ã® UI 言語を変更文字符å·åŒ–法:ドキュメンテーションを今ã™ãç¢ºèªæ–‡æ³•ã¨ç¶´ã‚Šã‚’確èªå…¥åЛ䏭ã«ã‚¹ãƒšãƒ«ãƒã‚§ãƒƒã‚¯ã‚¢ãƒƒãƒ—デートã®ç¢ºèªâ€¦ç¿»è¨³ä¸­ã®ã‚¨ãƒ©ãƒ¼ã‚’ãƒã‚§ãƒƒã‚¯ã‚¢ãƒƒãƒ—デートã®ç¢ºèªâ€¦ã‚¹ãƒšãƒ«ãƒã‚§ãƒƒã‚¯æ¶ˆåŽ»ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’æ¶ˆåŽ»ç¿»è¨³ã‚’ã‚¯ãƒªã‚¢ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’æ¶ˆåŽ»ç¿»è¨³ã‚’ã‚¯ãƒªã‚¢é–‰ã˜ã‚‹ã‚¯ãƒ©ã‚¦ãƒ‰ã‚³ãƒ¼ãƒ‰ã§ã®å‡ºç¾ç®‡æ‰€ã‚³ãƒ¼ãƒ‰ã§ã®å‡ºç¾ç®‡æ‰€ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã§ä»–ã®äººã¨ã‚³ãƒ©ãƒœãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã—ã¾ã—ょã†ã€‚ソースファイルをåŽé›†ä¸­â€¦ç¿»è¨³ã‚’抽出ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰:コメントコメント:ä»¥ä¸‹ã®æŽ¥é ­è¾žã®ã¤ã„ãŸã‚³ãƒ¡ãƒ³ãƒˆ:MO ã«ã‚³ãƒ³ãƒ‘イル…形å¼ã‚’指定ã—ã¦ã‚³ãƒ³ãƒ‘イル…翻訳ファイルをコンパイルã—ã¾ã—ãŸè¨­å®šç”»é¢ã§ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰æŠ½å‡ºã‚’設定ã§ãã¾ã™ã€‚確èªå¯¾å¿œã™ã‚‹ãƒ­ãƒ¼ã‚«ãƒªã‚¼ãƒ¼ã‚·ãƒ§ãƒ³ãƒ—ラットフォーム㨠Poedit を連æºã™ã‚‹ã¨ã€ãƒ—ラットフォーム上ã§ç®¡ç†ã•れã¦ã„る翻訳をシームレスã«åŒæœŸã§ãã¾ã™ã€‚ã‚³ãƒ”ãƒ¼å˜æ•°å½¢ã‹ã‚‰è¤‡è£½ã‚½ãƒ¼ã‚¹ãƒ†ã‚­ã‚¹ãƒˆã‹ã‚‰ã‚³ãƒ”ãƒ¼å˜æ•°å½¢ã‹ã‚‰è¤‡è£½ã‚½ãƒ¼ã‚¹ãƒ†ã‚­ã‚¹ãƒˆã‹ã‚‰ã‚³ãƒ”ー綴りを自動修正Localazy プロジェクトã®è©³ç´°ã‚’ダウンロードã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ファイルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚ç ´æã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ファイル %s ã‚’ä¿å­˜ã§ãã¾ã›ã‚“。新è¦ä½œæˆç¿»è¨³ãƒ—ロジェクトを新è¦ä½œæˆã™ã‚‹POT テンプレートã‹ã‚‰æ–°ã—ã„翻訳を作æˆã—ã¾ã™ã€‚翻訳プロジェクトを作æˆã™ã‚‹Crowdin エラーCrowdinã¯ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ç¿»è¨³ç®¡ç†ãƒ—ラットフォームã§ã‚りã€å…±åŒç¿»è¨³ãƒ„ールã§ã™ã€‚ç§ãŸã¡ã¯Crowdin自身を使ã£ã¦Poeditを多ãã®è¨€èªžã«ç¿»è¨³ã—ã¦ã„ã¾ã™ã€‚切りå–り (&T)カスタム抽出ツール:カスタム抽出ツール:ツールãƒãƒ¼ã‚’カスタマイズ…切りå–りディスク上ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚µã‚¤ã‚º:削除翻訳メモリã‹ã‚‰å‰Šé™¤æŠ½å‡ºãƒ„ールを削除翻訳メモリã‹ã‚‰å‰Šé™¤ãƒ—ロジェクトを削除コメントを削除翻訳プロジェクトを削除ã™ã‚‹ãƒ—ロジェクトを削除ã—ã¦ã‚‚ã€ç¿»è¨³ãƒ•ァイルã¯å‰Šé™¤ã•れã¾ã›ã‚“。ディレクトリ:プロジェクト “%s†を削除ã—ã¾ã™ã‹ï¼Ÿãƒ‡ã‚£ã‚¹ã‚¯ã‹ã‚‰ãƒ•ァイルをå†èª­ã¿è¾¼ã¿ã—ã¾ã™ã‹ï¼Ÿã€€ã“ã®å ´åˆã€Poedit ã§ä¿å­˜ã•れã¦ã„ãªã„編集内容ã¯å¤±ã‚れã¾ã™ã€‚原文ã¨åŒä¸€ãªã™ã¹ã¦ã®ç¿»è¨³ã‚’削除ã—ã¾ã™ã‹ï¼Ÿã‚‚ã†ä½¿ã‚れã¦ã„ãªã„翻訳をã™ã¹ã¦å‰Šé™¤ã—ã¾ã™ã‹ ?ä¿å­˜ã—ãªã„ (&N)ä¿å­˜ã—ãªã„今後表示ã—ãªã„完全ãªä¸€è‡´ã‚’è¦ç¢ºèªã¨ã—ã¦ãƒžãƒ¼ã‚¯ã—ãªã„今後表示ã—ãªã„最新ã®ç¿»è¨³ã‚’ダウンロード中…ã“ã®ãƒ—ロジェクトã§ã¯ã€ç¿»è¨³ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãŒç„¡åйã«ãªã£ã¦ã„ã¾ã™ã€‚ã“ã“ã«ãƒ•ォルダã¾ãŸã¯ãƒ•ァイルをドラッグã“ã“ã«ãƒ•ォルダã¾ãŸã¯ãƒ•ァイルをドラッグ終了 (&X)HTML ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ (&X)…編集コメントを編集 (&C)コメントを編集 (&C)コメントを編集コメントを編集プロジェクトを編集ã“ã®ãƒ—ロジェクトを編集編集編集…メール:全画é¢è¡¨ç¤ºãƒ•ァイルã®ä¸­ã®é …ç›®ãŒãƒ•ァイル㮠Plural-Forms ヘッダã§ç¤ºã•ã‚ŒãŸæ•°ã¨ç•°ãªã‚‹è¤‡æ•°å½¢ã‚’æŒã£ã¦ã„ã¾ã™ã‚¨ãƒ©ãƒ¼ã®ã‚る項目を先頭ã«è¡¨ç¤ºã‚¨ãƒ©ãƒ¼ã®ã‚る項目を先頭ã«è¡¨ç¤ºã‚¨ãƒ©ãƒ¼ãŒã‚ã‚‹é …ç›®ã¯ãƒªã‚¹ãƒˆä¸­ã§èµ¤ãマークã•れã¦ã„ã¾ã™ã€‚エラーã®è©³ç´°ã¯ã€ãã®é …ç›®ã‚’é¸æŠžã™ã‚‹ã¨è¡¨ç¤ºã•れã¾ã™ã€‚ファイルを開ãéš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸãƒ•ァイルã®ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸXLIFFファイルã®èª­ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %sエラー: エラーã™ã¹ã¦é™¤å¤–ã™ã‚‹ãƒ‘スTMX ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆâ€¦æ›¸å¼ã‚’指定ã—ã¦ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆâ€¦HTML ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆâ€¦TMX ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆâ€¦HTML ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã€Œ%sã€ã‹ã‚‰ç¿»è¨³ãƒ¡ãƒ¢ãƒªã‚’エクスãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚翻訳をエクスãƒãƒ¼ãƒˆä¸­â€¦ã‚½ãƒ¼ã‚¹ã‹ã‚‰æŠ½å‡ºä»¥ä¸‹ã‹ã‚‰ç¿»è¨³è€…å‘ã‘ã®ãƒ¡ãƒ¢ã‚’抽出:以下ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ã‚½ãƒ¼ã‚¹ãƒ•ァイルã‹ã‚‰ãƒ†ã‚­ã‚¹ãƒˆã‚’抽出:抽出ツール設定抽出ツールPoedit プロセスã¨ã®é€šä¿¡ã«å¤±æ•—ã—ã¾ã—ãŸã€‚抽出ã•れãŸç¿»è¨³ãƒ•ァイルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚gettext カタログã®çµ±åˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚翻訳メモリを更新ã§ãã¾ã›ã‚“ã§ã—ãŸ: %sファイルファイルを開ã‘ã¾ã›ã‚“ファイル “%s†ã¯å­˜åœ¨ã—ã¾ã›ã‚“。ファイル "%s" ã¯ç¿»è¨³ãƒ•ァイルã§ã¯ã‚りã¾ã›ã‚“。ファイル “%s†ã¯èª­ã¿å‡ºã—専用ã®ãŸã‚ä¿å­˜ã§ãã¾ã›ã‚“。 別ã®ãƒ•ァイルåã§ä¿å­˜ã—ã¦ãã ã•ã„。検索次を検索å‰ã‚’検索検索ã¨ç½®æ›â€¦ã‚³ãƒ¡ãƒ³ãƒˆã‚’検索対象ã«å«ã‚るソース テキストを検索翻訳ã•ã‚ŒãŸæ–‡å­—列を検索対象ã«å«ã‚る次を検索å‰ã‚’検索言語を修正言語を修正ヘッダーを修正ヘッダーを修正Flutter ç¿»è¨³ãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ %iフォーム %i (未使用)GNU gettext一般HTML ファイルヘルプサイドãƒãƒ¼ã‚’éš ã™ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒãƒ¼ã‚’éžè¡¨ç¤ºã“ã®é€šçŸ¥ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ãªã„ã‚¯ãƒ©ã‚¦ãƒ‰åŒæœŸã®ä»•組ã¿ID一掃を実行ã™ã‚‹ã¨ã€å‰Šé™¤æ¸ˆã¿ã¨ã—ã¦ãƒžãƒ¼ã‚¯ã•れãŸç¿»è¨³ã¯ã™ã¹ã¦å®Œå…¨ã«å‰Šé™¤ã•れã¾ã™ã€‚å°†æ¥å†ã³è¿½åŠ ã•れãŸå ´åˆã¯ç¿»è¨³ã—ç›´ã™å¿…è¦ãŒã‚りã¾ã™ã€‚以å‰ãƒ•ァイルã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ãŸå ´åˆã€ã‚·ã‚¹ãƒ†ãƒ ç’°å¢ƒè¨­å®š > セキュリティã¨ãƒ—ライãƒã‚·ãƒ¼ > プライãƒã‚·ãƒ¼ > ファイルã¨ãƒ•ォルダ ã‹ã‚‰è¨±å¯ã§ãã¾ã™ã€‚以å‰ãƒ•ァイルã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ãŸå ´åˆã€ã‚·ã‚¹ãƒ†ãƒ è¨­å®š > プライãƒã‚·ãƒ¼ã¨ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ > ファイルã¨ãƒ•ォルダ ã‹ã‚‰è¨±å¯ã§ãã¾ã™ã€‚ç„¡è¦–å¤§æ–‡å­—å°æ–‡å­—を無視TMX ã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆâ€¦ç¿»è¨³ãƒ•ァイルã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆâ€¦TMX ã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆâ€¦ç¿»è¨³ãƒ•ァイルã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆâ€¦"%s" ã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆâ€¦ç¿»è¨³ãƒ¡ãƒ¢ãƒªã‚’インãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚翻訳をインãƒãƒ¼ãƒˆä¸­â€¦å•題ã®ã‚るファイル: %sベータ版をå«ã‚る一貫性ã®ãªã„大文字/å°æ–‡å­—ã®ä½¿ç”¨ä¸€è²«æ€§ã®ãªã„空白ã®ä½¿ç”¨ç¿»è¨³è€…ã«é–¢ã™ã‚‹æƒ…å ±ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ä¸æ­£ãªãƒ•ァイル呼ã³å‡ºã—:JSON ç¿»è¨³ãƒ•ã‚¡ã‚¤ãƒ«ä¿æŒã™ã‚‹è¨€èªžåã¾ãŸã¯ã‚³ãƒ¼ãƒ‰ç¿»è¨³è¨€èªžãŒã‚½ãƒ¼ã‚¹è¨€èªžã¨åŒä¸€ã§ã™ã€‚翻訳ã®è¨€èªžãŒè¨­å®šã•れã¦ã„ã¾ã›ã‚“。翻訳ã®è¨€èªž:è¨€èªžé¸æŠžè¨€èªžãƒãƒ¼ãƒ :言語:最終更新gettext キーワードã¨ã¯è¤‡æ•°å½¢ã¨ã¯ã•らã«è©³ã—ã%s ã®è©³ç´°Crowdin ã«ã¤ã„ã¦GNU gettext ã«ã¤ã„ã¦ã‚‚ã£ã¨çŸ¥ã‚‹%d行目 (ファイル “%s“) ãŒç ´æã—ã¦ã„ã¾ã™ã€‚無効ãª%sデータã§ã™ã€‚改行:ã‚»ãƒŸã‚³ãƒ­ãƒ³åŒºåˆ‡ã‚Šã®æ‹¡å¼µå­ (例. *.cpp;*h):英文を読ã¿è¾¼ã‚€Localazy ã¯é«˜åº¦ã«è‡ªå‹•化ã•れãŸãƒ­ãƒ¼ã‚«ãƒªã‚¼ãƒ¼ã‚·ãƒ§ãƒ³ãƒ—ラットフォームã§ã€èª°ã§ã‚‚ç°¡å˜ã«è£½å“やコンテンツを複数ã®è¨€èªžã«ç¿»è¨³ã§ãã¾ã™ã€‚MO ファイル㯠Poedit ã§ç›´æŽ¥ç·¨é›†ã§ãã¾ã›ã‚“ã€‚å°æ–‡å­—ã«å¤‰æ›å¤§æ–‡å­—ã«å¤‰æ›ã“ã® POT ファイルã‹ã‚‰æ–°ã—ã„翻訳を作æˆã—ã¾ã™ã€‚書å¼ãŒä¸æ­£ãªãƒ˜ãƒƒãƒ€: “%sâ€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ç®¡ç†ç®¡ç†â€¦å·®åˆ†ã‚’çµ±åˆã—ã¦ã„ã¾ã™â€¦æœ€å°åŒ–翻訳ã™ã‚‹ãƒ—ロジェクトã®åç§°åå‰:æ¬¡ã®æœªè¨³ã¾ãŸã¯æœªç¢ºå®š (&X)æ¬¡ã®æœªè¨³ã¾ãŸã¯æœªç¢ºå®š (&X)è¦ç¢ºèªè¦ç¢ºèªãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼: %s (%d)ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨ä¸€è¦§ã«ãƒ•ォーカスãŒç§»å‹•ã—ãªããªã‚Šã¾ã™ã€‚キーボードã«ã‚ˆã‚‹é …ç›®ã®ç§»å‹•㯠Ctrl + 矢å°ã‚­ãƒ¼ ã®ã¿ã¨ãªã‚Šã¾ã™ã€‚æ–°è¦POT/PO ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å…ƒã«æ–°è¦ (&P)…POT/PO ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å…ƒã«æ–°è¦ (&P)â€¦æ–°è¦æ–‡å­—列次ã®è¤‡æ•°å½¢æ¬¡ã®è¤‡æ•°å½¢ã„ã„ãˆä¸€è‡´ã™ã‚‹ã‚‚ã®ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸäº‹å‰ç¿»è¨³ã§ãã‚‹é …ç›®ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚ã“ã®ãƒ•ァイルã§ã¯ã€ã“ã®æ–‡å­—列ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰å†…ã®å‡ºç¾ç®‡æ‰€ã«é–¢ã™ã‚‹æƒ…å ±ãŒæç¤ºã•れã¦ã„ã¾ã›ã‚“。一致ã™ã‚‹ã‚‚ã®ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸç¿»è¨³ã«å•題ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã¯ç¿»è¨³ãƒ—ロジェクトãŒã‚りã¾ã›ã‚“。使用情報ã¯ã‚りã¾ã›ã‚“複数形ãŒã™ã¹ã¦ç¿»è¨³ã•れã¦ã„ã¾ã›ã‚“。未èªè¨¼ã§ã™ã€‚ã‚‚ã†ä¸€åº¦ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„。翻訳者ã¸ã®æ³¨é‡ˆOK1翻訳メモリã®å“質を信頼ã§ãã‚‹å ´åˆã®ã¿æœ‰åŠ¹åŒ–ã—ã¦ãã ã•ã„。デフォルトã§ã¯ç¿»è¨³ãƒ¡ãƒ¢ãƒªã‹ã‚‰ã®ä¸€è‡´ã¯è¦ç¢ºèªã«ãƒžãƒ¼ã‚¯ã•れã€ãƒ¬ãƒ“ューãŒå¿…è¦ã¨ãªã‚Šã¾ã™ã€‚完全ãªä¸€è‡´ã®ã¿æŽ¡ç”¨ã™ã‚‹ã‚¯ãƒ©ã‚¦ãƒ‰ç¿»è¨³ã‚’é–‹ã…最近ã®ãƒ•ァイルを開ã翻訳ファイルを開ã„ã¦ç·¨é›†ã—ã¾ã™ã€‚クラウド翻訳を開ãクラウド翻訳を開ã…ファイルを開ãエディターã§é–‹ãエディターã§é–‹ã最近使用ã—ãŸãƒ•ァイル開ã...é–‹ã…設定ãã®ä»–å‰ã®æœªè¨³ã¾ãŸã¯æœªç¢ºå®š (&R)å‰ã®æœªè¨³ã¾ãŸã¯æœªç¢ºå®š (&R)PO 翻訳ファイルPOT 翻訳テンプレートPOT ファイルã¯ãƒ†ãƒ³ãƒ—レートã®ã¿ã§ã€ãれ自体ã«ç¿»è¨³ã¯å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。 翻訳を行ã†ã«ã¯ã€ã“ã®ãƒ†ãƒ³ãƒ—レートをベースã«ã—ã¦æ–°ã—ã„ PO ファイルを作æˆã—ã¾ã™ã€‚ペーストペーストã—ã¦ã‚¹ã‚¿ã‚¤ãƒ«ã‚’åˆã‚ã›ã‚‹ãƒ‘スプロジェクト内ã®ã™ã¹ã¦ã®ãƒ•ァイルã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’ã‚‚ã¨ã«ã€ç¿»è¨³ãƒ•ã‚¡ã‚¤ãƒ«ã®æ›´æ–°ã‚’実行ã—ã¾ã™ã€‚権é™ãŒã‚りã¾ã›ã‚“。プレースホルダー "%s" ãŒç¿»è¨³ã‹ã‚‰è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã€‚ãƒ—ãƒ¬ãƒ¼ã‚¹ãƒ›ãƒ«ãƒ€ãƒ¼ã®æ­£ç¢ºæ€§ä»£ã‚りã«ã€å¯¾å¿œã™ã‚‹ PO ファイルを開ã„ã¦ãã ã•ã„。ãã¡ã‚‰ã‚’ä¿å­˜ã™ã‚‹éš›ã« MO ファイルも更新ã•れã¾ã™ã€‚ã¾ãšãƒ•ァイルをä¿å­˜ã—ã¦ãã ã•ã„。ä¿å­˜ã™ã‚‹ã¾ã§ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã¯ç·¨é›†ã§ãã¾ã›ã‚“。複数形複数形ã®ç¿»è¨³ã“ã®ãƒ•ァイルã§ä½¿ã‚れã¦ã„る複数形表ç¾ã¯ã€%sã®ä¸€èˆ¬çš„ãªã‚‚ã®ã§ã¯ã‚りã¾ã›ã‚“。複数形:PoeditPoedit - カタログマãƒãƒ¼ã‚¸ãƒ£Poedit ã¯ã€ãƒ•ァイル「%sã€å†…ã®ç„¡åйãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„を自動的ã«ä¿®æ­£ã—ã¾ã—ãŸã€‚Poedit ã¯ã€ãƒ•ァイルã«å«ã¾ã‚Œã‚‹ä»¥å‰ã®ç¿»è¨³ã¾ãŸã¯ç¿»è¨³ãƒ¡ãƒ¢ãƒªã®ã¿ã‹ã‚‰æ–°ã—ã„項目を入力ã—よã†ã¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚翻訳メモリãŒã»ã¨ã‚“ã©ç©ºã®å ´åˆã€ãƒ¡ãƒ¢ãƒªã‚’使ã£ã¦ã‚‚ã‚ã¾ã‚ŠåŠ¹æžœã¯ã‚りã¾ã›ã‚“ãŒã€ç¿»è¨³ã‚’追加ã—ã¦ã„ãã¨ã•らã«ç²¾åº¦ãŒé«˜ã¾ã£ã¦ã„ãã¾ã™ã€‚Poedit ã¯æ–‡å­—列ãŒä½¿ç”¨ã•れã¦ã„るソースコードを表示ã§ãã¾ã›ã‚“。ファイルãŒå‚ç…§ã•れãŸå ´æ‰€ã§ä½¿ç”¨ã§ããªã„ã‹ã€å®Ÿãƒ•ァイルを指ã—ã¦ã„ãªã„シンボリックå‚ç…§ã§ã‚ã‚‹ãŸã‚ã§ã™ã€‚Poedit ã¯ä½¿ã„ã‚„ã™ã„翻訳エディタã§ã™ã€‚Poedit 㯠“%s†ファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚事å‰ç¿»è¨³ (&T)…事å‰ç¿»è¨³äº‹å‰ç¿»è¨³æ¸ˆã¿%uä»¶ã®æ–‡å­—列を翻訳翻訳メモリã‹ã‚‰äº‹å‰ç¿»è¨³ã—ã¦ã„ã¾ã™â€¦äº‹å‰ç¿»è¨³ä¸­â€¦äº‹å‰ç¿»è¨³ã¯ç¿»è¨³ãƒ¡ãƒ¢ãƒªå†…ã‹ã‚‰æœªç¿»è¨³æ–‡å­—列ã¨ã®å®Œå…¨ã¾ãŸã¯ã‚ã„ã¾ã„ä¸€è‡´ã‚’è‡ªå‹•çš„ã«æ¤œå‡ºã—ã€ãれã§ç¿»è¨³ã‚’埋ã‚ã¾ã™ã€‚事å‰ç¿»è¨³ã¯ã€åŽŸæ–‡ãŒåˆ©ç”¨å¯èƒ½ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚å®Ÿéš›ã®æ–‡ç« ãŒãªã„ ID ã®ã¿ãŒä½¿ã‚れã¦ã„ã‚‹å ´åˆã¯ã€åˆ©ç”¨ã§ãã¾ã›ã‚“。事å‰ç¿»è¨³ã§ã¯ã€åŽŸæ–‡ã®è¨€èªžãŒåˆ¤æ˜Žã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚Poedit ã¯ã“ã®ãƒ•ァイルã§è¨€èªžã‚’検出ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚環境設定設定…設定…文字列を準備ã—ã¦ã„ã¾ã™â€¦æ—¢å­˜ãƒ•ァイルã®ãƒ•ォーマットをä¿è­·ã™ã‚‹å‰ã®è¤‡æ•°å½¢å‰ã®è¤‡æ•°å½¢ä»¥å‰ã®åŽŸæ–‡ç·¨é›†æ¸ˆã¿ç·¨é›†æ¸ˆã¿ãƒ—ロジェクトåã¨ãƒãƒ¼ã‚¸ãƒ§ãƒ³:プロジェクトå:プロジェクト:プロジェクトå¥èª­ç‚¹ã®ãƒã‚§ãƒƒã‚¯ç¿»è¨³ã®ä¸€æŽƒå‰Šé™¤ã•れãŸç¿»è¨³ã‚’一掃ã™ã‚‹çµ‚了ファイル内容ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ: %s最近使用ã—ãŸãƒ•ァイルå†å®Ÿè¡Œå†èª­ã¿è¾¼ã¿ãƒ•ァイルをå†èª­ã¿è¾¼ã¿ãƒ•ァイルをå†èª­ã¿è¾¼ã¿æœªç¿»è¨³: %d削除原文ã¨åŒã˜ç¿»è¨³ã‚’削除原文ã¨åŒã˜ç¿»è¨³ã‚’å‰Šé™¤ç½®ãæ›ãˆã™ã¹ã¦ã‚’ç½®æ› (&A)ã™ã¹ã¦ã‚’ç½®æ› (&a)ç½®æ›æ–‡å­—列置æ›â€¦å¿…è¦ãªãƒ˜ãƒƒãƒ€ Plural-Forms ãŒã‚りã¾ã›ã‚“。リセット翻訳メモリをリセット翻訳メモリをリセットã™ã‚‹ã¨ã€ä¿å­˜ã•れãŸç¿»è¨³ãŒã™ã¹ã¦å‰Šé™¤ã•れã¾ã™ã€‚å…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。Finder ã§è¡¨ç¤ºãƒ¬ãƒ“ューä¿å­˜åå‰ã‚’付ã‘ã¦ä¿å­˜ (&A)…åå‰ã‚’付ã‘ã¦ä¿å­˜ (&A)…強制的ã«ä¿å­˜å¼·åˆ¶çš„ã«ä¿å­˜åå‰ã‚’付ã‘ã¦ä¿å­˜åå‰ã‚’付ã‘ã¦ä¿å­˜â€¦å¤‰æ›´ã‚’ä¿å­˜ãƒ•ァイルをä¿å­˜ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã‚·ãƒ§ãƒƒãƒˆ:ã™ã¹ã¦ã‚’é¸æŠž (&A)ã™ã¹ã¦ã‚’é¸æŠžã‚¤ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹ TMX ファイルをé¸ã‚“ã§ãã ã•ã„ディレクトリã®é¸æŠžç¿»è¨³ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã‚¤ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹ç¿»è¨³ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžç¿»è¨³ãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆã‚’é¸æŠžãŠå¥½ã¿ã®è¨€èªžã‚’é¸æŠžã—ã¦ãã ã•ã„言語を設定言語を設定設定設定…サイドãƒãƒ¼ã‚’è¡¨ç¤ºç¶´ã‚Šã¨æ–‡æ³•を表示ステータスãƒãƒ¼ã‚’表示文字列 ID を表示(&I)代替案を表示ツールãƒãƒ¼ã‚’表示警告を表示エクスプローラーã§è¡¨ç¤ºãƒ•ォルダã§è¡¨ç¤ºã‚µã‚¤ãƒ‰ãƒãƒ¼ã‚’表示・éžè¡¨ç¤ºã«ã™ã‚‹ã€‚サイドãƒãƒ¼ã‚’表示ステータスãƒãƒ¼ã‚’表示文字列 ID を表示(&I)警告を表示サイドãƒãƒ¼ãƒ­ã‚°ã‚¤ãƒ³ãƒ­ã‚°ã‚¢ã‚¦ãƒˆãƒ­ã‚°ã‚¤ãƒ³%s ã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³ã‚¯ãƒ©ã‚¦ãƒ‰ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³ã™ã‚‹Crowdin ã«ãƒ­ã‚°ã‚¤ãƒ³ã‚¯ãƒ©ã‚¦ãƒ‰ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³ã™ã‚‹ãƒ­ã‚°ã‚¢ã‚¦ãƒˆå˜æ•°å½¢ã‚¹ãƒžãƒ¼ãƒˆã‚³ãƒ”ー & ペーストスマートダッシュスマートリンクスマート引用ファイル順ã§ã‚½ãƒ¼ãƒˆ (&F)ソース順ã§ã‚½ãƒ¼ãƒˆ (&S)翻訳順ã§ã‚½ãƒ¼ãƒˆ (&T)ファイル順ã§ã‚½ãƒ¼ãƒˆ (&F)ソース順ã§ã‚½ãƒ¼ãƒˆ (&S)翻訳順ã§ã‚½ãƒ¼ãƒˆ (&T)ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®æ–‡å­—符å·åŒ–法:ソースコード抽出ツールã¯ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ãƒ•ァイル内ã«ã‚る翻訳å¯èƒ½ãªæ–‡å­—列を見ã¤ã‘ã¦æŠ½å‡ºã™ã‚‹ãŸã‚ã«ä½¿ã‚れã¾ã™ã€‚ソースコードãŒå­˜åœ¨ã—ã¾ã›ã‚“。ソースコードãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ソーステキスト原文 IDソース テキスト — %sソース中ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã‚½ãƒ¼ã‚¹ã®ãƒ‘スソース中ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã‚½ãƒ¼ã‚¹ã®æ¤œç´¢ãƒ‘ススピーãƒ%sã®è¾žæ›¸ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ãªã„ãŸã‚スペルãƒã‚§ãƒƒã‚¯ã¯ç„¡åŠ¹åŒ–ã•れã¦ã„ã¾ã™ã€‚ç¶´ã‚Šã¨æ–‡æ³•読ã¿ä¸Šã’を開始読ã¿ä¸Šã’ã‚’åœæ­¢ä¿å­˜ã•れãŸç¿»è¨³:文字列ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆï¼š%s文字列ã®è­˜åˆ¥å­ï¼š %s文字列ã®é•·ã•文字列ã®é•·ã•: 翻訳 | 原文検索ã™ã‚‹æ–‡å­—列文字列ベース㮠Crowdin プロジェクトã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“ã€‚ä»£æ›¿æ¡ˆææ¡ˆç¿»è¨³è¨€èªžãŒæ­£ã—ã設定ã•れã¦ã„ãªã„å ´åˆã€ææ¡ˆã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。ã¾ãŸã€è¤‡æ•°å½¢ãªã©ã®ä»–ã®æ©Ÿèƒ½ã«ã‚‚影響ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚原文ã«å«ã¾ã‚Œã¦ã„ãªã„余分ãªãƒ—レースホルダー "%s"。GNU gettext ツール (PHPã€C++ã€c#ã€Perlã€Pythonã€Javaã€JavaScript ãªã©) ã«ã‚ˆã£ã¦èªè­˜ã•れるã™ã¹ã¦ã®ãƒ—ログラミング言語ã«å¯¾å¿œã—ã¦ã„ã¾ã™ã€‚åŒæœŸCrowdin ã¨åŒæœŸCrowdin ã¨ç¿»è¨³ã‚’åŒæœŸã™ã‚‹åŒæœŸä¸­...åŒæœŸã‚¨ãƒ©ãƒ¼Crowdin ã¨ã®åŒæœŸã«å¤±æ•—ã—ã¾ã—ãŸã€‚Plural-Forms ãƒ˜ãƒƒãƒ€ã«æ–‡æ³•エラーãŒã‚りã¾ã™ ("%s") 。翻訳メモリTMX ファイル既存㮠POT テンプレートã‹ã‚‰ç¿»è¨³å¯èƒ½ãªæ–‡å­—列を使ã„ã¾ã™ã€‚ãƒãƒ¼ãƒ åã¨ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¾ãŸã¯ URLãƒ†ã‚­ã‚¹ãƒˆç½®ãæ›ãˆã“ã®ãƒ•ァイルã«å«ã¾ã‚Œã‚‹ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã«ä¼¼ãŸæ–‡å­—列ãŒç¿»è¨³ãƒ¡ãƒ¢ãƒªã«ã¯å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。TMX ファイルã®å½¢å¼ãŒæ­£ã—ãã‚りã¾ã›ã‚“。ä¿å­˜ã™ã‚‹ã¨ã€ä»–ã®ã‚¢ãƒ—リケーションã«ã‚ˆã£ã¦è¡Œã‚れãŸå¤‰æ›´ã¯å¤±ã‚れã¾ã™ã€‚ファイルを MO å½¢å¼ã«ã‚³ãƒ³ãƒ‘イルã—ã¦ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。ファイルã«é‡è¤‡ã™ã‚‹é …ç›®ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚é‡è¤‡é …目㯠PO ファイルã§ã¯è¨±å¯ã•れã¦ãŠã‚‰ãšã€ãƒ•ァイルã®åˆ©ç”¨ã‚’妨ã’ã¾ã™ã€‚Poedit ã¯ã“ã®å•題を修正ã—ã¾ã—ãŸãŒã€è¦ç¢ºèªã¨ã—ã¦ãƒžãƒ¼ã‚¯ã•れã¦ã„る項目を確èªã—ã€å¿…è¦ã«å¿œã˜ã¦ä¿®æ­£ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚翻訳ã®è¨­å®šã§æŒ‡å®šã•れã¦ã„る文字符å·åŒ–法 “%s†ã§ãƒ•ァイルをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ 代ã‚り㫠UTF-8 ã§ä¿å­˜ã—ã€è¨­å®šã‚‚ãれã«å¾“ã£ã¦å¤‰æ›´ã•れã¾ã—ãŸã€‚ファイルãŒå¤‰æ›´ã•れã¾ã—ãŸã€‚変更をä¿å­˜ã—ã¾ã™ã‹ï¼Ÿãƒ•ァイル㯠Poedit ãŒèªè­˜ã§ããªã„フォーマットã§ã™ã€‚ファイルを MO å½¢å¼ã«ã‚³ãƒ³ãƒ‘イルã—ã¾ã—ãŸãŒã€æã‚‰ã正常ã«å‹•作ã—ãªã„ã§ã—ょã†ã€‚ファイルを安全ã«ä¿å­˜ã— MO å½¢å¼ã«ã‚³ãƒ³ãƒ‘イルã—ã¾ã—ãŸãŒã€æã‚‰ã正常ã«å‹•作ã—ãªã„ã§ã—ょã†ã€‚ファイルã¯å®‰å…¨ã«ä¿å­˜ã•れã¾ã—ãŸãŒ MO å½¢å¼ã«ã‚³ãƒ³ãƒ‘イルã§ããªã‹ã£ãŸãŸã‚使用ã§ãã¾ã›ã‚“。ファイルを安全ã«ä¿å­˜ã—ã¾ã—ãŸã€‚ファイル "%s" ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ファイル “%s†ã¯åˆ¥ã®ã‚¢ãƒ—リケーションã«ã‚ˆã£ã¦å¤‰æ›´ã•れã¾ã—ãŸã€‚未確定翻訳ãŒå¯¾å¿œã™ã‚‹æ—§ã‚½ãƒ¼ã‚¹ãƒ†ã‚­ã‚¹ãƒˆ (æ›´æ–°ã«ã‚ˆã‚‹å¤‰æ›´å‰)。ã“ã®ç¿»è¨³ãƒ•ァイルを埋ã‚る一番簡å˜ãªæ–¹æ³•ã¯ã€POT ファイルã‹ã‚‰æ›´æ–°ã™ã‚‹ã“ã¨ã§ã™ã€‚翻訳ãŒã‚¹ãƒšãƒ¼ã‚¹ã§å§‹ã¾ã£ã¦ã„ã¾ã›ã‚“ã€‚ç¿»è¨³ã¯æ”¹è¡Œã§çµ‚ã‚ã£ã¦ã„ã¾ã™ãŒã€åŽŸæ–‡ã¯ãã†ã§ã¯ã‚りã¾ã›ã‚“。翻訳ã¯ã‚¹ãƒšãƒ¼ã‚¹ã§çµ‚ã‚ã£ã¦ã„ã¾ã™ãŒã€åŽŸæ–‡ã¯ãã†ã§ã¯ã‚りã‚ã¾ã›ã‚“。翻訳㯠"%s" ã§çµ‚ã‚ã£ã¦ã„ã¾ã™ãŒã€åŽŸæ–‡ã¯ "%s" ã§çµ‚ã‚ã£ã¦ã„ã¾ã™ã€‚ç¿»è¨³ã®æœ«å°¾ã«æ”¹è¡ŒãŒã‚りã¾ã›ã‚“ã€‚ç¿»è¨³ã®æœ€å¾Œã«ã‚¹ãƒšãƒ¼ã‚¹ãŒã‚りã¾ã›ã‚“。ã“ã®ç¿»è¨³ã‚’利用ã§ãã¾ã™ãŒã€%dä»¶ã®é …ç›®ãŒã¾ã ç¿»è¨³ã•れã¦ã„ã¾ã›ã‚“。ã“ã®ç¿»è¨³ã¯ä½¿ç”¨ã§ãã¾ã™ã€‚翻訳㯠"%s" ã§çµ‚ãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚翻訳㯠"%s" 以外ã§çµ‚ãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ç¿»è¨³ã¯æ–‡ç« ã‹ã‚‰å§‹ã¾ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚翻訳ã¯å°æ–‡å­—ã‹ã‚‰å§‹ã¾ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚翻訳ã¯ã‚¹ãƒšãƒ¼ã‚¹ã§å§‹ã¾ã£ã¦ã„ã¾ã™ãŒã€åŽŸæ–‡ã¯ãã†ã§ã¯ã‚りã‚ã¾ã›ã‚“ã€‚ç¿»è¨³ã¯æ­£ç¢ºã§ãªã„å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€è¦ç¢ºèªã¨ã—ã¦ãƒžãƒ¼ã‚¯ã•れã¦ã„ã¾ã™ã€‚é–“é•ã£ã¦ã„ãªã„ã‹ã©ã†ã‹ãƒ¬ãƒ“ューã—ã¦ãã ã•ã„。翻訳ãŒå­˜åœ¨ã—ã¾ã›ã‚“。何ã‹ãŒãŠã‹ã—ã„よã†ã§ã™ã€‚ファイルを整形ã™ã‚‹éš›ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸãŒã€ä¿å­˜ã¯å®Œäº†ã—ã¦ã„ã¾ã™ã€‚翻訳を Localazy ã«ã‚¢ãƒƒãƒ—ロードã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ファイルを読ã¿å‡ºã™éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ã“ã®ãŸã‚一部ã®ãƒ‡ãƒ¼ã‚¿ãŒå¤±ã‚れãŸã‚Šç ´æã—ãŸã‚Šã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ã“れらã®è¨­å®šã¯ PO ファイルã®å†…部フォーマットã«å½±éŸ¿ã—ã¾ã™ã€‚例ãˆã°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã®ã‚ˆã†ãªç‰¹åˆ¥ãªè¦ä»¶ãŒã‚ã‚‹å ´åˆã¯èª¿æ•´ã—ã¦ãã ã•ã„。ã“ã® JSON ファイルã¯ç¿»è¨³ãƒ•ァイルã§ã¯ãªã„ãŸã‚ã€Poedit ã§ã¯ç·¨é›†ã§ãã¾ã›ã‚“。ã“ã®æ“作ã¯åŽŸæ–‡ã¨å®Œå…¨ä¸€è‡´ã™ã‚‹ç¿»è¨³ã‚’削除ã—ã¾ã™ã€‚å…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。ã“ã®ãƒ•ァイルã«ã¯è¤‡æ•°å½¢ã‚’å«ã‚€é …ç›®ãŒã‚りã¾ã™ãŒã€Plural-Forms ヘッダãŒè¨­å®šã•れã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ•ァイルã¯åŽŸæ–‡ã®ä»£ã‚ã‚Šã«æ–‡å­—列 ID を使用ã—ã¾ã™ã€‚Poedit を使ã†ã“ã¨ã§ã€â€œ%s†ファイルã‹ã‚‰è‹±æ–‡ã‚’読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã‚Œã¯æŠ½å‡ºãƒ„ãƒ¼ãƒ«ã‚’ç«‹ã¡ä¸Šã’ã‚‹ãŸã‚ã®ã‚³ãƒžãƒ³ãƒ‰ã§ã™ã€‚ %o ã¯å‡ºåŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã®åå‰ã¨ã—ã¦å±•é–‹ã•れã€%K 㯠キーワードã®ãƒªã‚¹ãƒˆã€%F ã¯å…¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒªã‚¹ãƒˆã€ %C ã¯æ–‡å­—集åˆãƒ•ラグ (以下をå‚ç…§) ã§ã™ã€‚Poedit ã®ç¿»è¨³ãƒ¡ãƒ¢ãƒªã«ã“ã®æ–‡å­—列ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®æ–‡å­—符å·åŒ–æ³•ãŒæŒ‡å®šã•れãŸå ´åˆã®ã¿ コマンドラインã«è¿½åŠ ã•れã¾ã™ã€‚%c ã«ç¬¦å·åŒ–法ã®å€¤ãŒå±•é–‹ã•れã¾ã™ã€‚å„入力ファイルã”ã¨ã«ä¸€å›žã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã¸è¿½åŠ ã•れã¾ã™ã€‚ %f ã«ãƒ•ァイルåãŒå±•é–‹ã•れã¾ã™ã€‚å„キーワードã”ã¨ã«ä¸€å›žã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã¸è¿½åŠ ã•れã¾ã™ã€‚ %k ã«ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰åãŒå±•é–‹ã•れã¾ã™ã€‚åˆè¨ˆå¤‰æ›ç¿»è¨³å¯èƒ½ãªé …ç›®ã¯æ‰‹å‹•ã§ Gettext システムã«è¿½åŠ ã•れるã®ã§ã¯ãªãã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‹ã‚‰è‡ªå‹•çš„ã«æŠ½å‡ºã•れã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€é …ç›®ã‚’å¸¸ã«æœ€æ–°ç‰ˆã§æ­£ç¢ºã«ä¿ã¤ã“ã¨ãŒã§ãã¾ã™ã€‚翻訳者ã¯é€šå¸¸ã€é–‹ç™ºè€…ãŒç”¨æ„ã—㟠PO テンプレートファイル (POT) を使用ã—ã¾ã™ã€‚クラウドã®ãƒ—ロジェクトを翻訳翻訳済ã¿: %d/%d件中 (%d %%)対訳翻訳言語翻訳メモリ翻訳è¦ç¢ºèª (&W)翻訳ã®ç‰¹æ€§ç¿»è¨³ãƒ¡ãƒ¢ãƒªã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒç ´æã—ã¦ã„ã¾ã™: %s (%d)。翻訳メモリエラー: %s (%d)。翻訳è¦ç¢ºèª (&W)翻訳ã®è¨­å®šç¿»è¨³ã®ææ¡ˆç¿»è¨³ã®ææ¡ˆã¯ã€åŽŸæ–‡ãŒåˆ©ç”¨å¯èƒ½ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚å®Ÿéš›ã®æ–‡ç« ãŒãªã„ ID ã®ã¿ãŒä½¿ã‚れã¦ã„ã‚‹å ´åˆã¯ã€åˆ©ç”¨ã§ãã¾ã›ã‚“ã€‚ç¿»è¨³ææ¡ˆã§ã¯ã€åŽŸæ–‡ã®è¨€èªžãŒåˆ¤æ˜Žã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚Poedit ã¯ã“ã®ãƒ•ァイルã§è¨€èªžã‚’検出ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚翻訳 — %sファイルã®ãƒ—ãƒ­ãƒ‘ãƒ†ã‚£ã§æŒ‡å®šã•れãŸå ´æ‰€ã«ã‚³ãƒ¼ãƒ‰ãŒè¦‹ã¤ã‹ã‚‰ãªã‹ã£ãŸãŸã‚ã€ç¿»è¨³ã‚’ソースコードã‹ã‚‰æ›´æ–°ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚2UTF-8 (推奨)å…ƒã«æˆ»ã™æœªå‡¦ç†ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %sUnix (推奨)䏿˜Žãª Crowdin ã‚¨ãƒ©ãƒ¼ã€‚ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼æœªç¿»è¨³æ›´æ–°å…¨ã¦æ›´æ–°ã™ã‚‹ãƒ—ロジェクトã®ã™ã¹ã¦ã®ã‚«ã‚¿ãƒ­ã‚°ã‚’æ›´æ–°ã™ã‚‹ã“ã®ãƒ—ロジェクトã®ã™ã¹ã¦ã®ã‚«ã‚¿ãƒ­ã‚°ã‚’æ›´æ–°ã—ã¾ã™ã‹ï¼ŸPOT ファイルã‹ã‚‰æ›´æ–° (&P)…POT ファイルã‹ã‚‰æ›´æ–° (&P)…コードã‹ã‚‰æ›´æ–°POT ファイルã‹ã‚‰æ›´æ–°ã‚³ãƒ¼ãƒ‰ã‹ã‚‰æ›´æ–°ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‹ã‚‰æ›´æ–°è¦ç´„ã‚’æ›´æ–°æ›´æ–°æ›´æ–°ã«å¤±æ•—ã—ã¾ã—ãŸãƒ—ロジェクトカタログを更新中翻訳をアップデートã—ã¦ã„ã¾ã™ãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…報を更新ã—ã¦ã„ã¾ã™â€¦%s ã«ç¿»è¨³ã‚’アップロードã§ãã¾ã›ã‚“ã§ã—ãŸã€‚%s ã«ç¿»è¨³ã‚’アップロードã—ã¦ã„ã¾ã™â€¦ç¿»è¨³ã‚’アップロード中…カスタム表ç¾ã‚’使用カスタムリストフォントを使ã†:カスタムテキストフィールドフォントを使ã†:ã“ã®è¨€èªžã®ãƒ‡ãƒ•ォルトルールを使ã†ã‚½ãƒ¼ã‚¹ãƒ•ァイル中ã§ã“れらã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ (ã¾ãŸã¯é–¢æ•°å) ã‚’ 翻訳対象文字列ã®èªè­˜ã«ä½¿ã„ã¾ã™:ç¿»è¨³ãƒ¡ãƒ¢ãƒªã‚’ä½¿ã†æ¤œæŸ»æ¤œæŸ»ã®çµæžœãƒãƒ¼ã‚¸ãƒ§ãƒ³ %sèªè¨¼ã‚’待機中…警告: Poedit ã¸ã‚ˆã†ã“ãソースã‹ã‚‰ã®æ›´æ–°æ™‚空白等ã§åŒºåˆ‡ã‚‰ã‚ŒãŸå˜èªžã ã‘を探ã™ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦Windowsç¿»è¨³è¨€èªžã‚’è‹±èªžã«æŒ‡å®šã—ã¾ã™ã‹ï¼Ÿå›žã‚Šè¾¼ã¿æŠ˜ã‚Šè¿”ã—:XLIFF 翻訳ファイルã¯ã„翻訳å¯èƒ½ãªæ–‡å­—列をソースコードã‹ã‚‰ç›´æŽ¥æŠ½å‡ºã§ãã¾ã™ã€‚Poedit ã¸ãƒ‰ãƒ­ãƒƒãƒ—ã§ãã‚‹ã®ã¯1回ã«ã¤ã1ファイルã®ã¿ã§ã™ã€‚ファイルã®ãƒ—ãƒ­ãƒ‘ãƒ†ã‚£ã§æŒ‡å®šã•れãŸå ´æ‰€ã‹ã‚‰ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®ãƒ•ァイルを読ã¿è¾¼ã‚€æ¨©é™ãŒã‚りã¾ã›ã‚“。変更を有効ã«ã™ã‚‹ã«ã¯ Poedit ã‚’å†èµ·å‹•ã—ã¦ãã ã•ã„。ã‚ãªãŸã®åå‰ä¿å­˜ã—ãªã„ã¨è¿½åŠ ã—ãŸå¤‰æ›´ã¯å¤±ã‚れã¾ã™ã€‚ãŠåå‰ã¨ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ GNU gettext ファイル㮠Last-Translator ヘッダーを設定ã™ã‚‹ãŸã‚ã«ã®ã¿ä½¿ã‚れã¾ã™ã€‚0ズームè¦ç¢ºèªä¸€æ™‚ファイルを削除ã—ãªã„ (デãƒãƒƒã‚°å‘ã‘)例: nplurals=2; plural=(n > 1);エラー: ファイル内ã§ã®ã‚ã„ã¾ã„一致指定ã®è¡Œç•ªå·ã®é …ç›®ã«ç§»å‹•poedit:// URI を処ç†Alt+Ctrl+下Enterå·¦å³Shift+上altctrlshift%s ã«ã¤ã„ã¦%s ã‚’éžè¡¨ç¤ºã»ã‹ã‚’éžè¡¨ç¤ºè¨­å®šâ€¦%s を終了サービスã™ã¹ã¦è¡¨ç¤ºç¿»è¨³ãƒ¡ãƒ¢ãƒªã‹ã‚‰äº‹å‰ç¿»è¨³ä¸æ˜Žãªè¨€èªžã‚µãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (%s)警告: you@example.com“%sâ€ ã¯æœ‰åŠ¹ãª POT ファイルã§ã¯ã‚りã¾ã›ã‚“。poedit-3.6.3/locales/Makefile.am0000644000175100001660000000553415011674230012155 POEDIT_LINGUAS = af an ar az be bg bs ca ckb co cs da de el en_GB es et eu fa fi fr ga gl he hr hu hy id is it ja ka kab kk ko lt lv ms nb nl oc pa pl pt_BR pt_PT ro ru sk sl sq sr sr@latin sv tg th tr ug uk uz vi zh_CN zh_TW localedir = $(datadir)/locale install-data-local: install-poedit-catalogs install-poedit-catalogs: for i in $(POEDIT_LINGUAS) ; do \ $(mkinstalldirs) $(DESTDIR)$(localedir)/$$i/LC_MESSAGES ; \ $(INSTALL_DATA) $(srcdir)/$$i.mo $(DESTDIR)$(localedir)/$$i/LC_MESSAGES/poedit.mo ; \ done uninstall-local: rm -rf $(DESTDIR)$(localedir)/*/LC_MESSAGES/poedit.mo # ---------------------------------------------------------------------------- # Logic for catalogs updating follows # (shamelessly stolen from wxWidgets makefile): # ---------------------------------------------------------------------------- # the programs we use (TODO: use configure to detect them) MSGFMT=msgfmt --verbose --check MSGMERGE=msgmerge XGETTEXT=xgettext XARGS=xargs # common xgettext args: C++ syntax, use the specified macro names as markers XGETTEXT_ARGS=-C -k_ -kwxGetTranslation -kwxTRANSLATE -kwxPLURAL:1,2 -F -j \ --add-comments=TRANSLATORS \ --from-code=UTF-8 \ --package-name=Poedit --package-version=$(PACKAGE_VERSION) \ --msgid-bugs-address=help@poedit.net # implicit rules %.mo: %.po $(MSGFMT) -o $@ $< # a PO file must be updated from poedit.pot include new translations %.po: $(srcdir)/poedit.pot if [ -f $@ ]; then $(MSGMERGE) --previous $@ $(srcdir)/poedit.pot > $@.new && mv $@.new $@; else cp $(srcdir)/poedit.pot $@; fi $(srcdir)/sr_RS@latin.po: $(srcdir)/sr.po recode-sr-latin <$< >$@ $(srcdir)/poedit.pot: touch $@ (cd $(srcdir) ; find ../src -name "*.h" | $(XARGS) $(XGETTEXT) $(XGETTEXT_ARGS) -o poedit.pot) (cd $(srcdir) ; find ../src -name "*.cpp" | $(XARGS) $(XGETTEXT) $(XGETTEXT_ARGS) -o poedit.pot) (cd $(srcdir) ; $(WXRC) --gettext ../src/resources/*.xrc | $(XGETTEXT) $(XGETTEXT_ARGS) -o poedit.pot -) allpo: force-update @-for t in $(POEDIT_LINGUAS); do $(MAKE) $(srcdir)/$$t.po; done allmo: @for t in $(POEDIT_LINGUAS); do $(MAKE) $(srcdir)/$$t.mo; done force-update: $(RM) $(srcdir)/poedit.pot # print out the percentage of the translated strings stats: @for i in $(POEDIT_LINGUAS); do \ x=`$(MSGFMT) -o /dev/null "$(srcdir)/$$i.po" 2>&1 | sed -e 's/[,\.]//g' \ -e 's/\([0-9]\+\) translated messages\?/TR=\1/' \ -e 's/\([0-9]\+\) fuzzy translations\?/FZ=\1/' \ -e 's/\([0-9]\+\) untranslated messages\?/UT=\1/'`; \ TR=0 FZ=0 UT=0; \ eval $$x; \ TOTAL=`expr $$TR + $$FZ + $$UT`; \ echo "\"$$i\" => \"`expr 100 "*" $$TR / $$TOTAL`\", /* $$TOTAL strings */"; \ done #echo "$$i.po `expr 100 "*" $$TR / $$TOTAL`% of $$TOTAL strings"; dist-hook: allmo cp -a $(srcdir)/*.pot $(srcdir)/*.po $(srcdir)/*.mo $(distdir) .PHONY: allpo allmo force-update stats FORCE poedit-3.6.3/locales/ro.po0000644000175100001660000027220315011674230011100 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-07 10:16\n" "Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && " "n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Ascunde acest mesaj de notificare" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Nu mai afiÈ™a din nou" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Nu mai afiÈ™a din nou" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Rezumat actualizări" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Actualizează rezumat" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "ÃŽnchide" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Probleme" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "FiÈ™ier" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Linie" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Problemă" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Șiruri noi" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Șiruri noi" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Șiruri eliminate" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Șiruri eliminate" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Colectare fiÈ™ierele sursă…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Extrag È™irurile traductibile dintr-un fiÈ™ier…" msgstr[1] "Extrag È™irurile traductibile din %s fiÈ™iere…" msgstr[2] "Extrag È™irurile traductibile din %s de fiÈ™iere…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "ÃŽncărcarea fiÈ™ierului cu traducerile extrase a eÈ™uat." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "ÃŽn: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "Cod sursă indisponibil." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Traducerile nu au putut fi actualizate din codul sursă, deoarece codul nu a " "fost găsit în locaÈ›ia specificată în proprietățile fiÈ™ierului." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Permisiune refuzată." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Nu ai permisiunea de a citi fiÈ™ierele de cod sursă din locaÈ›ia specificată " "în proprietățile fiÈ™ierului." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Dacă ai refuzat anterior accesul la fiÈ™ierele tale, îl poÈ›i permite în " "Setări de sistem > ConfidenÈ›ialitate È™i securitate > FiÈ™iere È™i dosare." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Dacă ai refuzat anterior accesul la fiÈ™ierele tale, îl poÈ›i permite în " "PreferinÈ›e de sistem > Securitate È™i confidenÈ›ialitate > ConfidenÈ›ialitate > " "FiÈ™iere È™i dosare." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Extragerea È™irurilor din codul sursă a eÈ™uat." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "FiÈ™ierul „%s†nu a putut fi deschis." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Se actualizează traducerile" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Se determină diferenÈ›ele…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Fuzionare diferenÈ›e…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "FiÈ™ierul de traducere este deja actualizat, nu au fost făcute modificări la " "È™iruri." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "FiÈ™ierul de traducere a fost actualizat cu %s modificare." msgstr[1] "FiÈ™ierul de traducere a fost actualizat cu %s modificări." msgstr[2] "FiÈ™ierul de traducere a fost actualizat cu %s de modificări." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Șiruri noi de tradus:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Șiruri eliminate (nu mai sunt utilizate):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "A fost detectată %d problemă cu È™irurile sursă." msgstr[1] "Au fost detectate %d probleme cu È™irurile sursă." msgstr[2] "Au fost detectate %d de probleme cu È™irurile sursă." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Vezi detalii…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Vezi detalii…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Antet malformat: „%sâ€" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "FiÈ™iere de traducere PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Șabloane de traducere POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "FiÈ™iere de traducere XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Catalog de localizare Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "FiÈ™iere de traducere JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "FiÈ™iere de traducere Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Toate fiÈ™ierele de traducere" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "FiÈ™ierul este într-un format care nu este recunoscut de Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "Acest fiÈ™ier JSON nu este un fiÈ™ier de traducere È™i nu poate fi editat în " "Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "Citirea conÈ›inutului fiÈ™ierului a eÈ™uat cu următoarea eroare: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "FiÈ™ierul „%s†este doar în citire È™i nu poate fi salvat.\n" "Te rugăm să îl salvezi sub un nume diferit." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Nu s-a putut salva fiÈ™ierul %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Capturi de ecran:" #: src/catalog_po.cpp:134 #, 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 linie din fiÈ™ierul „%s†nu a fost încărcată corect." msgstr[1] "%i linii din fiÈ™ierul „%s†nu au fost încărcate corect." msgstr[2] "%i de linii din fiÈ™ierul „%s†nu au fost încărcate corect." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Linia %d de fiÈ™ier „%s†este coruptă (data %s invalida)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "FiÈ™ier PO deteriorat: forma de singular msgtr a fost folosită împreună cu " "msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "FiÈ™ier PO deteriorat: forma de plural msgstr a fost folosită fără " "msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Nu s-a putut încărca fiÈ™ierul, probabil că este deteriorat." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Au existat erori la încărcarea fiÈ™ierului. Unele date pot lipsi sau sunt " "corupte ca rezultat." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "A fost o problemă la formatarea frumoasă a fiÈ™ierului (dar totul a fost " "salvat corect)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "FiÈ™ierul nu a putut fi salvat în setul de caractere „%s†în conformitate cu " "setările traducerii. \n" "\n" "Acesta a fost salvat în UTF-8 în schimb È™i setarea a fost modificată în mod " "corespunzător." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Eroare la salvarea fiÈ™ierului" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "„%s†nu este un fiÈ™ier POT valid." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "ConÈ›inutul lipseÈ™te în mod neaÈ™teptat din fiÈ™ierul XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" "Salvarea într-o locaÈ›ie diferită nu este acceptată pentru fiÈ™ierele XCLOC." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Eroare la încărcarea fiÈ™ierului XLIF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "versiune neacceptată (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Marcaj deteriorat în È™irul de traducere." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Conectează Poedit cu platformele de localizare în cloud acceptate pentru a " "sincroniza perfect traducerile gestionate pe acestea." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Cum funcÈ›ionează sincronizarea în cloud?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Cont" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(neconectat)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Deschide traducerea în cloud" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Gestionează conturi" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Proiect:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Limbă:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Conectează-te la contul de cloud" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Conectează-te la contul de cloud" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Nu sunt listate proiecte de traducere în contul tău." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Se descarcă ultimele traduceri…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Conectează-te la %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sincronizare" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Se încarcă traducerile în %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "ÃŽncărcarea traducerilor în %s a eÈ™uat." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Eroare sincronizare" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Adaugă" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Eroare Crowdin necunoscută." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Neautorizat, te rugăm să te conectezi din nou." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Proiectele bazate pe È™iruri Crowdin nu sunt acceptate." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Descărcarea traducerilor este dezactivată în acest proiect." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Autentificare" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Autentificare" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Deconectare" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Deconectare" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Află mai multe despre Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin este o platformă online de gestiune a traducerilor È™i un instrument " "colaborativ de traducere. Folosim Crowdin noi înÈ™ine pentru a traduce Poedit " "în mai multe limbi È™i iubim asta." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Se aÈ™teaptă autentificarea…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Se actualizează informaÈ›ii utilizator…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Autentificare în Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Sincronizarea cu Crowdin a eÈ™uat." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Eroare Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Se încarcă traducerile…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Copiază" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Află mai multe" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "&Ajutor" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "FiÈ™ierele MO nu pot fi editate direct în Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Eroare la deschiderea fiÈ™ierului" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Te rugăm să deschizi È™i să editezi fiÈ™ierul PO corespunzător. Când îl " "salvezi, fiÈ™ierul MO va fi actualizat, de asemenea." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "nu È™terge fiÈ™ierele temporare (pentru depanare)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "getionează un URI poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "mergi la elementul de pe linia cu numărul dat" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Am eÈ™uat în a comunica cu procesul Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "A apărut o excepÈ›ie netratată: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Selectează È™ablon de traducere" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "FiÈ™ier nevalid" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Selectează fiÈ™ier de traducere" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit este un editor de traduceri uÈ™or de folosit." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Nu poÈ›i plasa mai mult de un fiÈ™ier în fereastra Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "FiÈ™ierul „%s†nu este un fiÈ™ier de traducere." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "FiÈ™ierul „%s†nu există." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Verificarea ortografiei este dezactivată, pentru că dicÈ›ionarul pentru %s nu " "este instalat." #: src/edframe.cpp:871 msgid "Install" msgstr "Instalează" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "FiÈ™ierul „%s†a fost modificat de o altă aplicaÈ›ie." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Reîncarcă fiÈ™ier" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Vrei să reîncarci fiÈ™ierul de pe disc? Modificările tale nesalvate din " "Poedit vor fi pierdute dacă o faci." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignoră" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Reîncarcă fiÈ™ier" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "FiÈ™ierul a fost modificat. Vrei să salvezi modificările?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Salvează modificări" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Modificările tale vor fi pierdute dacă nu le salvezi." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Salvează" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Nu salva" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Nu salva" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "Modificările făcute de altă aplicaÈ›ie vor fi pierdute dacă salvezi." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Anulează" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Salvează oricum" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Salvează oricum" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Salvează ca…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Compilare la…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "FiÈ™iere de traducere compilate" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Exportă în HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "FiÈ™iere HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Exportare în HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Actualizarea a eÈ™uat" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Deschide fiÈ™ierul de referință" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Actualizează din fiÈ™ier &POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Actualizează din fiÈ™ier &POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "A fost găsită %d problemă cu traducerea." msgstr[1] "Au fost găsite %d probleme cu traducerea." msgstr[2] "Au fost găsite %d de probleme cu traducerea." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Rezultate validare" #: src/edframe.cpp:1842 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 "" "Intrările cu erori au fost marcate cu roÈ™u în listă. Detaliile erorii va fi " "afiÈ™ate când selectezi o astfel de intrare." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "FiÈ™ierul a fost salvat în condiÈ›ii de siguranță." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "FiÈ™ierul a fost salvat în condiÈ›ii de siguranță È™i compilat în formatul MO, " "dar, probabil că nu va funcÈ›iona corect." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "FiÈ™ierul a fost salvat în siguranță, dar nu poate fi compilat È™i utilizat în " "formatul MO." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "FiÈ™ierul a fost compilat în formatul MO, dar probabil că nu va funcÈ›iona " "corect." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "FiÈ™ierul nu poate fi compilat È™i utilizat în formatul MO." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Nu au fost găsite probleme cu traducerea." #: src/edframe.cpp:1894 #, 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] "" "Traducerea este gata de utilizat, dar %d intrare nu este încă tradusă." msgstr[1] "" "Traducerea este gata de utilizat, dar %d intrări nu sunt încă traduse." msgstr[2] "" "Traducerea este gata de utilizat, dar %d de intrări nu sunt încă traduse." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Traducerea este gata de utilizat." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "Poedit corectează automat conÈ›inutul nevalid în fiÈ™ierul „%sâ€." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "FiÈ™ierul conÈ›inea elemente duplicate, ceea ce nu este permis în fiÈ™iere PO " "È™i ar împiedica utilizarea fiÈ™ierului. Poedit a rezolvat problema, dar ar " "trebui să revizuieÈ™ti traducerile oricăror elemente marcate ca necesitând " "lucru È™i să le corectezi dacă este necesar." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "Limba traducerii nu este setată." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Setează limbă" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Setează limbă" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Limba traducerii este aceeaÈ™i cu limba sursă." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Repară limba" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Repară limba" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Acest fiÈ™ier are intrări cu forme de plural, dar nu are antetul Plural-Forms " "configurat." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Intrările din acest fiÈ™ier au un număr de forme de plural diferit de cel din " "antetul Plural-Forms din fiÈ™ier" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Antetul necesar Plural-Forms lipseÈ™te." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Eroare de sintaxă în antetul Plural-Forms („%sâ€)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Repară antetul" #: src/edframe.cpp:2383 msgid "Fix the header" msgstr "Repară antetul" #. 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "Expresia formelor de plural folosită de fiÈ™ier este neobiÈ™nuită pentru %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "RevizuieÈ™te" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Vrei să foloseÈ™ti limba engleză pentru textul sursă?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Acest fiÈ™ier foloseÈ™te ID-uri de È™ir în loc de text sursă. Poedit poate " "încărca pentru tine texte în limba engleză din fiÈ™ierul „%sâ€." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "ÃŽncarcă engleză" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Tradus: %d din %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Rămase: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d eroare" msgstr[1] "%d erori" msgstr[2] "%d de erori" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d intrare" msgstr[1] "%d intrări" msgstr[2] "%d de intrări" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (nesalvat)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (modificat)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Eroare la actualizarea memoriei de traducere: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "FiÈ™ierul „%s†nu a putut fi salvat." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Șterge traducerile similare textelor-sursă" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "DoreÈ™ti să È™tergi toate traducerile care sunt identice cu textul-sursă?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Această acÈ›iune va È™terge toate traducerile care se potrivesc exact cu " "textul-sursă. Procesul este ireversibil." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Păstrează" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Șterge" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Curăță traducerile È™terse" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Vrei să elimini toate traducerile care nu mai sunt folosite?" #: src/edframe.cpp:2879 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 "" "Dacă vei continua curățarea, toate traducerile marcate ca È™terse vor fi " "eliminate definitiv. Va trebui să le traduci din nou dacă vor fi adăugate " "înapoi în viitor." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Curăță" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Copiază din textul sursă" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Copiază din textul sursă" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Curăță traducerea" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Curăță traducerea" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Editează comentariu" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Editează comentariu" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "ApariÈ›ii în cod" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "ApariÈ›ii în cod" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Ascunde bară laterală" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Arată bară laterală" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Ascunde bară de stare" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Arată bară de stare" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Lungime È™ir în caractere: traducere | sursă" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Lungime È™ir în caractere" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Text sursă" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singular" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plural" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Traducere" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pre-tradus" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "Necesită lucru" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "Necesită lucru" #: src/editing_area.cpp:566 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 "" "FiÈ™ierele POT sunt doar È™abloane È™i nu conÈ›in nicio traducere.\n" "Pentru a face o traducere, creează un fiÈ™ier PO nou bazat pe acest È™ablon." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Creează traducere nouă" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Fă o traducere nouă din acest fiÈ™ier POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID text sursă" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Tot" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Forma %i (neutilizată)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Zero" #: src/editing_area.cpp:788 msgid "One" msgstr "Unul" #: src/editing_area.cpp:790 msgid "Two" msgstr "Două" #: src/editing_area.cpp:804 msgid "Other" msgstr "Altele" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Context È™ir: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identificator È™ir: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Format %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Format %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Traducere — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Sursă text — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "limbă necunoscută" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Eroare reÈ›ea: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Eroare necunoscută" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Fuziunea cataloagelor gettext a eÈ™uat." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Deschide în editor" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Deschide în editor" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "ÃŽn fiÈ™ier nu sunt furnizate informaÈ›ii despre apariÈ›iile acestui È™ir în " "codul sursă." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Nu există informaÈ›ii de utilizare" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d apariÈ›ie în cod" msgstr[1] "%d apariÈ›ii în cod" msgstr[2] "%d de apariÈ›ii în cod" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Codul sursă nu a fost găsit" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit nu poate afiÈ™a codul sursă acolo unde este folosit È™irul, pentru că " "fiÈ™ierul fie nu este disponibil în locaÈ›ia menÈ›ionată, fie este o referință " "simbolică care nu indică către un fiÈ™ier real." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "FiÈ™ierul nu poate fi deschis" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit nu a putut deschide fiÈ™ierul „%sâ€." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "GăseÈ™te" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "ÃŽnlocuieÈ™te" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "OpÈ›iuni" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ignoră majuscule" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Continuă căutarea de la început" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Doar cuvinte întregi" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "GăseÈ™te în textele sursă" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "GăseÈ™te în traduceri" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "GăseÈ™te în comentarii" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "ÃŽnlocuieÈ™te &tot" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "ÃŽnlocuire &tot" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&ÃŽnlocuieÈ™te" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Anterior" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Următor >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Șir de găsit" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Șir de înlocuire" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "atenÈ›ionare: " #: src/gexecute.cpp:171 msgid "error: " msgstr "eroare: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Nume sau cod limbă" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Limbă traducere" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Limba traducerii:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Toate È™irurile" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Nu s-au putut descărca detaliile proiectului Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "A apărut o eroare la încărcarea traducerilor în Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Proiecte" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Află mai multe despre %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy este o platformă de localizare extrem de automatizată care permite " "oricui să-È™i traducă produsele È™i conÈ›inutul cu uÈ™urință în mai multe limbi." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Adaugă proiect" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Adaugă proiect" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Administrator de cataloage" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Editează…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Creează un nou proiect de traduceri" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Șterge proiect" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Editează proiectul" #: src/manager.cpp:176 msgid "Update all" msgstr "Actualizează tot" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Actualizează toate cataloagele din proiect" #: src/manager.cpp:378 msgid "Total" msgstr "Total" #: src/manager.cpp:379 msgid "Untrans" msgstr "Netrad." #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "Necesita lucru" #: src/manager.cpp:381 msgid "Errors" msgstr "Erori" #: src/manager.cpp:382 msgid "Last modified" msgstr "Ultima modificare" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Selectează director" #: src/manager.cpp:433 msgid "Directories:" msgstr "Directoare:" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Vrei să È™tergi proiectul „%sâ€?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Șterge proiect" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Ștergerea proiectului nu va È™terge niciun fiÈ™ier de traducere." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Confirmare" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Actualizezi toate cataloagele din acest proiect?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" "Efectuează actualizare din codul sursă pentru toate fiÈ™ierele din proiect." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Actualizarea cataloagelor de proiecte" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Caută actualizări…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Administrator cataloage" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&PreferinÈ›e…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Editare" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Anulează" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Refă" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "LipeÈ™te È™i potriveÈ™te stilul" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Șterge" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Ortografie È™i gramatică" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Arată ortografie È™i gramatică" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Verifică documentul acum" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Verifică ortografia în timpul tastării" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Verifică gramatica cu ortografie" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Corectează ortografia automat" #: src/menus.cpp:219 msgid "Substitutions" msgstr "ÃŽnlocuiri" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Arată înlocuiri" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Copiere/lipire inteligentă" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Ghilimele inteligente" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Cratime inteligente" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Legături inteligente" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "ÃŽnlocuire text" #: src/menus.cpp:230 msgid "Transformations" msgstr "Transformări" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "ÃŽn majuscule" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "ÃŽn minuscule" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Cu majusculă iniÈ›ială" #: src/menus.cpp:237 msgid "Speech" msgstr "EnunÈ›are" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "PorneÈ™te enunÈ›area" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "OpreÈ™te enunÈ›area" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Vizualizare" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Arată bară de instrumente" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Personalizare bară de instrumente…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Intră în ecran complet" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Fereastră" #: src/menus.cpp:263 msgid "Minimize" msgstr "Minimizează" #: src/menus.cpp:264 msgid "Zoom" msgstr "MăreÈ™te" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Bine ai venit la Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Adu tot în față" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "InformaÈ›ii despre traducător" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nume:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Numele tău" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "E-mail:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "tu@exemplu.ro" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Numele È™i adresa de e-mail sunt folosite doar pentru a configura antetul " "Last-Translator din fiÈ™ierele GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Editare" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Compilează automat fiÈ™ierul MO la salvare" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Verificare ortografică" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Focalizează mereu câmpul de introducere a textului" #: src/prefsdlg.cpp:211 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 "" "Nu lasă niciodată lista de È™iruri să preia focalizarea. Dacă este activată, " "trebuie să foloseÈ™ti Ctrl-săgeÈ›i pentru a naviga cu tastatura, dar poÈ›i È™i " "să tastezi textul imediat, fără a trebui să apeÈ™i Tab pentru a schimba " "focalizarea." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Aspect" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "FoloseÈ™te font personalizat pentru listă:" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "FoloseÈ™te font personalizat pentru câmpuri text:" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Schimbă limba interfeÈ›ei" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(necesită Windows 8 sau mai nou)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "General" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "FoloseÈ™te memoria de traducere" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Gestionează…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Atunci când se actualizează din surse" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "potriveÈ™te È™irurile neclare în fiÈ™ier" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pre-tradu din MT" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit poate încerca să completeze intrările noi doar de la traducerile " "anterioare din fiÈ™ier sau din întreaga ta memorie de traducere. Folosind MT " "nu va fi foarte eficient în cazul în care este aproape goala, dar acesta va " "fi mai bună pe măsură ce adaugi mai multe traduceri." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Traduceri stocate:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Mărime bază de date pe disc:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Importă fiÈ™iere de traducere…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Importă fiÈ™iere de traducere…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Importă din TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Importă din TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Exportă în TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Exportă în TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Resetează" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Selectează fiÈ™iere de traducere pentru a le importa" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Selectează fiÈ™iere TMX pentru a le importa" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "FiÈ™iere TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Importare traduceri…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Importarea memoriei de traducere a eÈ™uat." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Importare din „%sâ€â€¦" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s traducere a fost importată." msgstr[1] "%s traduceri au fost importate." msgstr[2] "%s de traduceri au fost importate." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Exportă ca…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Exportare traduceri…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Exportarea memoriei de traducere în „%s†a eÈ™uat." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Resetare memorie de traducere" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Sigur vrei să resetezi memoria de traducere?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "Resetarea memoriei de traducere va È™terge definitiv toate traducerile " "stocate în ea. Nu poÈ›i anula această operaÈ›ie." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "MT" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Memorie de traducere" #: src/prefsdlg.cpp:730 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 "" "Extractoarele de cod sursă sunt folosite pentru a găsi È™iruri traductibile " "în codul sursă È™i a le extrage pentru a fi traduse." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Extractoare personalizate:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Extractoare personalizate:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Suportă toate limbajele de programare recunoscute de instrumentele GNU " "gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript È™i altele)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Șterge extractor" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Sigur vrei să È™tergi extractorul „%sâ€?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Extractori" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Conturi" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Caută actualizări automat" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Include versiunile beta" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "Versiunile beta conÈ›in ultimele noi caracteristici È™i îmbunătățiri, dar pot " "fi puÈ›in mai instabile." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Actualizări" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Aceste setări afectează formatarea internă a fiÈ™ierelor PO. Ajustează-le " "dacă ai cerinÈ›e specifice, de ex. din cauza controlului versiunii." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Delimitatori linii:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (recomandat)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "ÃŽncadrare la:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Păstrează formatarea fiÈ™ierelor existente" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Avansat" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Setări" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Se pregătesc È™irurile…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Pre-traducere din memoria de traducere…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Pre-tras %u sir" msgstr[1] "%u È™iruri pre-traduse" msgstr[2] "%u de È™iruri pre-traduse" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Se pre-traduce…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d intrare a fost pre-tradusă." msgstr[1] "%d intrări au fost pre-traduse." msgstr[2] "%d de intrări au fost pre-traduse." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Traducerile au fost marcate ca necesitând lucru, pentru că acestea pot fi " "inexacte. Ar trebui revizuite pentru corectitudine." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Rezultate exacte din TM" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Potriviri aproximative din TM" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Nicio intrare nu a putut fi pre-tradusă." #: src/pretranslate.cpp:218 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 "" "MT nu conÈ›ine niciun È™ir similar cu conÈ›inutul acestui fiÈ™ier. Este eficient " "doar pentru traducerile semi-automate după ce Poedit le învață suficient din " "fiÈ™ierele pe care le-ai tradus manual." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Nu se poate pre-traduce fără text sursă." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pre-traducere" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Pre-traducerea necesită ca textul sursă să fie disponibil. Nu funcÈ›ionează " "dacă sunt folosite doar ID-uri fără textul propriu-zis." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Nu se poate pre-traduce dintr-o limbă necunoscută." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Pre-traducerea necesită ca limba textului sursă să fie cunoscută. Poedit nu " "a putut să o detecteze în acest fiÈ™ier." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Completează doar potriviri exacte" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "ÃŽn mod implicit, sunt incluse È™i rezultatele inexacte, dar marcate ca " "necesitând lucru. Bifează această opÈ›iune pentru a include numai potrivirile " "perfecte." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Nu marca potrivirile exacte ca necesitând lucru" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Activează doar dacă ai încredere în calitatea memoriei tale de traducere. ÃŽn " "mod implicit, toate potrivirile din MT sunt marcate ca necesitând lucru È™i " "ar trebui revizuite înainte de utilizare." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "Pre-traducerea găseÈ™te automat potrivirile exacte sau neclare pentru È™iruri " "netraduse în memoria de traducere È™i le completează traducerile." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Eroare: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "A apărut o eroare:" msgstr[1] "Au apărut %d erori:" msgstr[2] "Au apărut %d de erori:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "A apărut o eroare." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "A apărut o eroare." msgstr[1] "Au apărut %d erori." msgstr[2] "Au apărut %d de erori." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Se anulează…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Trage aici dosare sau fiÈ™iere" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Trage aici dosare sau fiÈ™iere" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Adaugă dosare…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Adaugă dosare…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Adaugă fiÈ™iere…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Adaugă fiÈ™iere…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Adaugă wildcard…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Adaugă wildcard…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Arată în Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Arată în Explorer" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Arată în dosar" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Căi" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Căi excluse" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Setări avansate de extragere" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Extrage note pentru traducători din:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "Comentarii prefixate cu:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Toate comentariile" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Marcaje xgettext suplimentare:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Cuvinte cheie suplimentare" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Numele proiectului pentru care este traducerea" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Nume echipă È™i adresă de e-mail sau URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "ex. nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (recomandat)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "Te rugăm să salvezi mai întâi fiÈ™ierul. Această secÈ›iune nu poate fi editată " "până atunci." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Corectitudine substituenÈ›i" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "Substituentul „%s†lipseÈ™te din traducere." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Substituentul de prisos „%s†care nu este în textul sursă." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Traducerile formelor de plural" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Nu toate formele de plural sunt traduse." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Majuscule/minuscule inconsistente" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Traducerea ar trebui să înceapă ca o propoziÈ›ie." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Traducerea ar trebui să înceapă cu un caracter mic." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "SpaÈ›iu alb inconsistent" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "Traducerea nu începe cu un spaÈ›iu." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Traducerea începe cu un spaÈ›iu, dar nu È™i textul sursă." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Traducerii îi lipseÈ™te o linie nouă la sfârÈ™it." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Traducerea se termină cu o linie nouă, dar nu È™i textul sursă." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Traducerii îi lipseÈ™te un spaÈ›iu la final." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Traducerea se termină cu un spaÈ›iu, dar nu È™i textul sursă." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Verificări de punctuaÈ›ie" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Traducerea trebuie să se termine cu „%sâ€." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Traducerea nu trebuie să se termine cu „%sâ€." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Traducerea se termină cu „%sâ€, dar textul sursă se termină cu „%sâ€." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Cloud" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Curăță meniu" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Curăță meniu" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Comentariu:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Actualizează" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Șterge" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Șterge comentariul" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Editare proiect" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nume proiect:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "RăsfoieÈ™te" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Adaugă director în listă" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Ok" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&FiÈ™ier" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Nou…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Nou din fiÈ™ier &POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Nou din fiÈ™ier &POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Deschide…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Deschise recent" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Deschise recent" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Deschide traducerea în cloud…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Deschide traducere în cloud…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "Fereastră de &pornire" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "Fereastră de &pornire" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "Administrator &cataloage" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "Administrator &cataloage" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&ÃŽnchide" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Salvează" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Salvează &ca…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Salvează &ca…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Compilează în MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "E&xportă în HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Caută actualizări…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Setări…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&PreferinÈ›e" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "I&eÈ™ire" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "ÃŽnchide" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Copiază din singular" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Copiază din singular" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Traducerea necesită &lucru" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Traducerea necesită &lucru" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Editează &comentariu" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Editează &comentariu" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Sugestii" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&GăseÈ™te…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "ÃŽnlocuieÈ™te…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Rezultatul următor" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Rezultatul anterior" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "GăseÈ™te È™i înlocuieÈ™te…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Rezultatul următor" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Rezultatul anterior" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Arată &ID È™ir" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Arată &ID È™ir" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Arată avertismente" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Arată avertismente" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Sortează după &ordine fiÈ™ier" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Sortează după &ordine fiÈ™ier" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Sortează după &sursă" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Sortează după &sursă" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Sortează după &traducere" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Sortează după &traducere" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Grupează după context" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Grupează după context" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Mai întâi intrările cu erori" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Mai întâi intrările cu erori" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Mai întâi intrările &netraduse" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Mai întâi intrările &netraduse" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&AfiÈ™ează apariÈ›iile în cod" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&AfiÈ™ează apariÈ›iile în cod" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Arată bară laterală" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Arată bară de stare" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Traducere" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Actualizează din cod sursă" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Actualizează din cod sursă" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sincronizează cu Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pre-&traducere…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validează traducerile" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validează traducerile" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Șterge traducerile care se potrivesc exact cu textul-sursă" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&Curăță traducerile È™terse" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&Curăță traducerile È™terse" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Proprietăți…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Mergi la" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Gata È™i următorul" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Gata È™i următorul" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Editat anterior" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Editat anterior" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Traducerea &anterioară" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Traducerea &anterioară" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Traducerea &următoare" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Traducerea &următoare" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Neterminat a&nterior" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Neterminat a&nterior" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Neterminat u&rmător" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Neterminat u&rmător" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Forma de plural anterioară" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Forma de plural anterioară" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Forma de plural următoare" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Forma de plural următoare" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Ajutor &online" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Ajutor &online" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "Manual &GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "Manual &GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Despre Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Despre" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Configurare extractor" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista de extensii separate cu punct È™i virgulă (ex. *.cpp;*.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Invocare:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Comandă pentru extragere traduceri:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Aceasta este comanda folosită pentru a lansa extractorul.\n" "%o se extinde la numele fiÈ™ierului de ieÈ™ire, %K la lista\n" "de cuvinte cheie, %F la lista de fiÈ™iere de intrare,\n" "%C la setul de caractere (vezi mai jos)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Un element în lista de cuvinte cheie:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Aceasta va fi ataÈ™ată la linia de comandă pentru fiecare\n" "cuvânt cheie. %k se extinde la cuvântul cheie." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Un element în lista de fiÈ™iere de intrare:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Aceasta va fi ataÈ™ată la linia de comandă pentru\n" "fiecare fiÈ™ier de intrare. %f se extinde la numele fiÈ™ierului." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Set de caractere cod sursă:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Aceasta va fi ataÈ™ată la linia de comandă\n" "doar dacă setul de caractere al codului sursă a fost dat. %c se extinde la " "valoarea setului de caractere." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Proprietăți traducere" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nume È™i versiune proiect:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Echipă de traducere:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Forme de plural:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "FoloseÈ™te reguli implicit pentru această limbă" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "FoloseÈ™te expresie personalizată" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Află despre formele de plural" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Set de caractere:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Setări avansate de extragere…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Setări avansate de extragere…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Proprietăți traducere" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Căi surse" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Căi surse" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Extrage textul din fiÈ™ierele sursă în următoarele directoare:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Cale de bază:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Surse cuvinte cheie" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Surse cuvinte cheie" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "FoloseÈ™te aceste cuvinte cheie (nume de funcÈ›ii) pentru a recunoaÈ™te\n" "È™irurile traductibile în fiÈ™iere sursă:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "FoloseÈ™te È™i cuvinte cheie implicite pentru limbile acceptate" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "ÃŽnvățaÈ›i despre cuvintele cheie gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Deschide fiÈ™ier" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Salvează fiÈ™ier" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validează" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Verifică dacă există erori în traducere" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Actualizează din cod" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Actualizează din cod" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Actualizează din cod sursă" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Bară laterală" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "AfiÈ™ează sau ascunde bara laterală" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Text sursă anterior" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "Vechiul text sursă (înainte de a fi schimbat în timpul unei actualizări) " "care acum corespunde unei traduceri inexacte." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Note pentru traducători" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Comentariu" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Adaugă comentariu" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Adaugă comentariu" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Șterge din memoria de traducere" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Șterge din memoria de traducere" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Sugestii traducere" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Nicio potrivire găsită" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Nicio potrivire găsită" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Acest È™ir a fost găsit în memoria de traducere Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "Sugestiile de traducere necesită ca textul sursă să fie disponibil. Nu " "funcÈ›ionează dacă sunt folosite doar ID-uri fără textul propriu-zis." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "Sugestiile de traducere necesită ca limba textului sursă să fie cunoscută. " "Poedit nu a putut să o detecteze în acest fiÈ™ier." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Nu se poate executa programul: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "FiÈ™ierul TMX este malformat." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Baza de date a memoriei de traducere este deteriorată: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Eroare memorie de traducere: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(FoloseÈ™te limba implicită)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Selectare limbă" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Selectează-È›i limba preferată" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "" "Trebuie să reporneÈ™ti Poedit pentru ca această schimbare să aibă efect." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Nu se poate crea director temporar." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Nu există traduceri. Este neobiÈ™nuit." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "Intrările traductibile nu sunt adăugate manual în sistemul Gettext, dar sunt " "extrase automat din codul sursă. ÃŽn acest fel, acestea sunt actualizate È™i " "exacte. Traducătorii folosesc de obicei fiÈ™iere È™ablon PO (POT-uri) " "pregătite pentru ei de către dezvoltator." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Află mai multe despre GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Cel mai simplu mod de a completa acest fiÈ™ier cu traduceri este de a-l " "actualiza dintr-un fiÈ™ier POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Actualizează din POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Ia È™irurile traductibile dintr-un È™ablon POT existent." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "De asemenea, poÈ›i extrage È™iruri traductibile direct din codul sursă:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Extrage din surse" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Configurează extragerea codului sursă în Proprietăți." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versiunea %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Traducere nouă" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Creează traducere nouă din È™ablon POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "RăsfoieÈ™te fiÈ™iere" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Deschide È™i editează fiÈ™iere de traducere." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Tradu proiect în cloud" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Colaborează cu alte persoane online." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "FiÈ™iere recente" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sincronizare" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sincronizează traducerea cu Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Despre %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "PreferinÈ›e %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Despre %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Servicii" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Ascunde %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Ascunde restul" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Arată tot" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "ÃŽnchide %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "PreferinÈ›e…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "PreferinÈ›e..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "PreferinÈ›e..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Aplică" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Aplică" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&ÃŽnapoi" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "ÃŽnapoi" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Anulează" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Curăță" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Curăță" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Copiază" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Decupează" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Decupează" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Editează" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&ÃŽnchide" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Ajutor" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Nou" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Nou" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Nu" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Nu" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Ok" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Deschide…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Deschide..." #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Deschide..." #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&LipeÈ™te" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "LipeÈ™te" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "PreferinÈ›e" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Refă" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Reîmprospătează" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Salvează ca" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Salvează ca" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Selectează &tot" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Selectează tot" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Anulează" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Da" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Da" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Sus" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Jos" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Stânga" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Dreapta" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "AtenÈ›ionare: " poedit-3.6.3/locales/co.po0000644000175100001660000027506015011674363011074 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-08 10:16\n" "Last-Translator: \n" "Language-Team: Corsican\n" "Language: co_FR\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: co\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Piattà stu messaghju di nutificazione" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Ùn affissà più" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Ùn affissà più" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "Riassuntu di e mudificazioni" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Riassuntu di e mudificazioni" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "Chjode" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Prublemi" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Schedariu" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Linea" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Prublema" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Catene nove" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Frase nove" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Catene cacciate" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Catene cacciate" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Racolta di i schedarii d’origine…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Estrazzione di e catene traducevule da u schedariu %s…" msgstr[1] "Estrazzione di e catene traducevule da i schedarii %s…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Fiascu per caricà u schedariu cù e traduzzioni estratte." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "In : %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "U testu d’origine ùn hè micca dispunibule." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Ùn si pò mudificà e traduzzioni à partesi di u testu d’origine, perchè " "alcunu testu ùn hè statu trovu in u locu indicatu in e pruprietà di u " "schedariu." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "Permessu ricusatu." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "Ùn avete micca u permessu di leghje i schedarii d’origine in u locu " "specificatu in e pruprietà di u schedariu." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "S’è vo avete precedentemente ricusatu l’accessu à i vostri schedarii, pudete " "permettelu via i Parametri di u sistema > Cunfidenzialità è sicurità > " "Schedarii è cartulari." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "S’è vo avete precedentemente ricusatu l’accessu à i vostri schedarii, pudete " "permettelu avà in e Preferenze di u sistema > Sicurità è vita privata > " "Cunfidenzialità > Schedarii è cartulari." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Fiascu per estrae e catene da u codice d’origine." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Ùn si pò micca apre u schedariu « %s »." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "Mudificazione di e traduzzioni" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "Identificazione di e sfarenze…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "Integrazione di e sfarenze…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "" "U schedariu di traduzzione hè dighjà à livellu è alcuna catena ùn hè stata " "cambiata." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "U schedariu di traduzzione hè statu mudificatu cù %s cambiamentu." msgstr[1] "U schedariu di traduzzione hè statu mudificatu cù %s cambiamenti." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Catene nove à traduce :" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Catene cacciate (mai più impiegate) :" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "%d prublema hè statu scupertu cù e catene d’origine." msgstr[1] "%d prublemi sò stati scuperti cù e catene d’origine." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Affissà i detaglii…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Affissà i detaglii…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Intestatura malfuttuta : « %s »" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Schedarii di Traduzzione PO" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Mudelli di traduzzione POT" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Schedarii di traduzzione XLIFF" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Catalogu di lucalizazione Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Schedarii di traduzzione JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Schedarii di traduzzione Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Tutti i schedarii di traduzzione" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "U schedariu si trova in un furmatu micca ricunnisciutu da Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "" "U schedariu JSON ùn hè micca un schedariu di traduzzione è ùn pò micca esse " "mudificatu da Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "" "A lettura di u cuntenutu di u schedariu hà fiascata cù stu sbagliu : %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "U schedariu « %s » pò solu esse lettu è ùn pò micca esse arregistratu.\n" "Ci vole à arregistrallu cù un altru nome." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Ùn si pò micca arregistrà u schedariu %s." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Catture di screnu :" #: src/catalog_po.cpp:134 #, 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 linea di u schedariu « %s » ùn hè micca stata caricata bè." msgstr[1] "%i linee di u schedariu « %s » ùn sò micca state caricate bè." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "" "A linea %d di u schedariu « %s » hè alterata (dati %s micca accettati)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Schedariu PO alteratu : forma singulare msgstr impiegata inseme cù " "msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Schedariu PO alteratu : forma plurale msgstr impiegata senza msgid_plural" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Ùn si pò micca caricà u schedariu, forse hè dannighjatu." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Ci era sbaglii durante u caricamentu di u schedariu. Forse qualchì datu hè " "assente o alteratu." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "" "Ci hè statu un prublema durante a creazione di u schedariu (ma hè statu " "creatu quantunque)." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "U schedariu ùn pò micca esse arregistratu cù u gruppu di caratteri « %s » " "cum’è indicatu in i parametri di traduzzione.\n" "\n" "Hè statu arregistratu in UTF-8 è u parametru hè statu mudificatu." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Sbagliu à l’arregistramentu di u schedariu" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "« %s » ùn hè micca un schedariu POT accettevule." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Cuntenutu assente à l’ispensata in u schedariu XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "" "L’arregistramentu in un altru locu ùn hè micca accettatu per i schedarii " "XCLOC." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Sbagliu à u caricamentu di u schedariu XLIFF : %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "versione (%s) micca accettata" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "Marca rotta in a catena di traduzzione." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Cunnettate Poedit cù e piattaforme di lucalizazione di u nivulu per " "sincrunizà senza straziu e traduzzioni chì ci sò amministrate." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Cumu funziuneghja a sincrunizazione in u nivulu ?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Contu" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(micca cunnessu)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "Apre a traduzzione in u nivulu" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Amministrà i conti" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Prughjettu :" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Lingua :" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "Cunnittitevi à u contu di u nivulu" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "Cunnittitevi à u contu di u nivulu" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "Ùn ci hè micca prughjettu di traduzzione in u vostru contu." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "Scaricamentu in corsu di l'ultime traduzzioni…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "Cunnettesi à %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Sincrunizazione" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Incaricamentu di e traduzzioni versu %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Fiascu di l’incaricamentu di e traduzzioni versu %s." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Sbagliu di sincrunizazione" #: src/commentdlg.cpp:48 msgid "Add" msgstr "Aghjunghje" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "Sbagliu Crowdin scunnisciutu." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Micca auturizatu, autenticassi torna." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "I prughjetti Crowdin basati nant’à catene ùn sò micca accettati." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "Scaricà e traduzzioni ùn hè micca pussibule cù stu prughjettu." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "Autenticazione" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "Autenticazione" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Scunnettassi" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Scunnettassi" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Sapene di più nant'à Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin hè una piattaforma di ghjestione in linea di traduzzione è un " "attrezzu di traduzzione cuuperativa. Impieghemu Crowdin, ancu noi, per " "traduce Poedit in lingue numerose, è ci piace." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "In attesa d'autenticazione…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "Mudificazione di l’infurmazioni di l’utilizatore…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "Autenticassi à Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "Fiascu di a sincrunizazione cù Crowdin." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Sbagliu da Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Incaricamentu di e traduzzioni…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "Cu&pià" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Sapene di più" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "Ai&utu" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "I schedarii MO ùn ponu micca esse mudificati cù Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Sbagliu à l’apertura di u schedariu" #: src/edapp.cpp:735 msgid "" "Please open and edit the corresponding PO file instead. When you save it, " "the MO file will be updated as well." msgstr "" "Aprite è mudificate piuttostu u schedariu PO currispondente. Quandu vo " "l’arregistrarete, u schedariu MO serà mudificatu dinù." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "ùn squassà micca i schedarii timpurari (per spannà)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "manighjà un indirizzu poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "andà à l’elementu à u numeru di linea specificatu" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Fiascu di cumunicazione cù u prucessu Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Un anumalia imprevista hè accaduta : %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Selezziunà un mudellu di traduzzione" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Schedariu inaccettevule" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Selezziunà un schedariu di traduzzione" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit hè un editore di traduzzione faciule à aduprà." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Ùn pudete micca depone più d’un schedariu in a finestra di Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "U schedariu « %s » ùn hè micca un schedariu di traduzzione." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "U schedariu « %s » ùn esiste micca." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format 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." #: src/edframe.cpp:871 msgid "Install" msgstr "Installà" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "U schedariu « %s » hè statu mudificatu da un’altra appiecazione." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Ricaricà u schedariu" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "Vulete ricaricà u schedariu da u discu ? I vostri cambiamenti micca " "arregistrati seranu persi s’è vo fate cusì." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Ignurà" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Ricaricà u schedariu" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "U schedariu hè statu mudificatu. Vulete arregistrà i cambiamenti ?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Arregistrà i cambiamenti" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "I vostri cambiamenti seranu persi s’è voi ùn l’arregistrate micca." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "Arregistrà" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "Ùn arregistrà &micca" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Ùn arregistrà micca" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "I cambiamenti fatti da l’altra appiecazione seranu persi s’è vo arregistrate." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "Abbandunà" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Arregistrà quantunque" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Arregistrà quantunque" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Arregistrà cù u nome…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Compilà ver di…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Schedarii di traduzzione cumpilati" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "Espurtà versu HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "Schedarii HTML" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "Espurtà versu HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Fiascu di a mudificazione" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "Apre u schedariu di referenza" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "Mudificà da un schedariu P&OT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "Mudificà da un schedariu P&OT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "%d prublema trovu in a traduzzione." msgstr[1] "%d prublemi trovi in a traduzzione." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Risultati di a validazione" #: src/edframe.cpp:1842 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. I detaglii di u sbagliu " "seranu videvule quandu l'entrata serà selezziunata." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "U schedariu hè statu arregistratu bè." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "U schedariu hè statu arregistratu è trasfurmatu in furmatu MO, ma ùn puderà " "micca funziunà bè." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "U schedariu hè statu arregistratu bè, ma ùn pò micca esse trasfurmatu in " "furmatu MO è impiegatu." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "" "U schedariu hè statu trasfurmatu in furmatu MO, ma forse ùn funziunerà micca " "bè." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "U schedariu ùn pò micca esse trasfurmatu in furmatu MO è impiegatu." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Ùn ci hè penseri cù sta traduzzione." #: src/edframe.cpp:1894 #, 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] "" "A traduzzione hè pronta à l’approdu, ma %d entrata ùn hè micca tradutta." msgstr[1] "" "A traduzzione hè pronta à l’approdu, ma %d entrate ùn sò micca tradutte." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "A traduzzione hè pronta à l'approdu." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "" "Poedit hà currettu autumaticamente u cuntenutu gattivu in u schedariu « %s »." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "U schedariu cuntinia elementi in doppiu, ciò ch’ùn hè micca permessu in i " "schedarii PO è puderia impedisce u schedariu d’esse impiegatu. Poedit hà " "currettu u prublema, ma ci vole à verificà e traduzzioni di l’elementi chì " "sò marcati « À rivede » è curregeli s’ella hè bisognu." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "A lingua di a traduzzione ùn hè micca definita." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Definisce a Lingua" #: src/edframe.cpp:2317 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)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 sugestioni ùn sò micca dispunibule s’è a lingua di traduzzione ùn hè micca " "definita bè. D’altre funzioni, cum’è e forme plurale, ponu esse ancu " "affettate." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "A lingua di a traduzzione hè listessa chè quella d'origine." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "Currege a Lingua" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "Currege a lingua" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Stu schedariu cuntene entrate cù forme plurale, ma l’intestatura Forme-" "Plurale ùn hè micca pronta." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "L’entrate in stu schedariu anu un contu di forme plurale sfarente chì ciò " "chì hè scrittu in l’intestatura di u schedariu" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "L’intestatura Forme-Plurale richiesta hè assente." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Sbagliu di sintassa in l’intestatura Forme-Plurale (« %s »)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Currege l’intestatura" #: src/edframe.cpp:2383 msgid "Fix the header" 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 #. to rephrase it, e.g. to an equivalent of "for language %s". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "L’espressione di e forme plurale impiegata da u schedariu hè strana per a " "lingua %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "Verificà" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "Vi piaceria d’impiegà l’inglese per u testu d’origine ?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Stu schedariu impiegheghja l’identificazioni di catena invece di u testu " "d’origine. Per aiutavvi, Poedit pò caricà testi inglese da u schedariu " "« %s »." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Caricà l’inglese" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Traduttu : %d frà %d (%d %%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "Restu : %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d sbagliu" msgstr[1] "%d sbaglii" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d entrata" msgstr[1] "%d entrate" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (micca arregistratu)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (mudificatu)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Fiascu per mudificà a memoria di a traduzzione: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Ùn si pò micca arregistrà u schedariu « %s »." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Caccià e traduzzioni uguale à l’origine" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "Vulete caccià tutte e traduzzioni chì sò uguale à u testu d’origine ?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "St’azzione squasserà tutte e traduzzioni chì currispondenu esattamente à u " "testu d’origine. Ùn pò micca esse invertita." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "Cunservà" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Caccià" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "Spurgulà e traduzzioni cacciate" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "Vulete toglie tutte e traduzzioni chì ùn sò più impiegate ?" #: src/edframe.cpp:2879 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ì, tutte e traduzzioni marchate cum’è cacciate seranu " "tolte per sempre. Ci vulerà à traducele torna s’elle sò aghjunte à l’avvene." #: src/edframe.cpp:2883 msgid "Purge" msgstr "Spurgulà" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "Cupià da u testu d’origine" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Cupià da u testu d’origine" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "Viutà a traduzzione" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "Viutà a traduzzione" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Mudificà u cummentu" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Mudificà u Cummentu" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Occurrenze di testu" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Occurrenze di testu" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "Piattà a barra laterale" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "Affissà a barra laterale" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Piattà a barra di statu" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Affissà a barra di statu" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Longhezza di catena in caratteri : traduzzione | origine" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Longhezza di catena in caratteri" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Testu d’origine" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "Singulare" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "Plurale" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Traduzzione" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Pretraduttu" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "À rivede" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "À rivede" #: src/editing_area.cpp:566 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 traduzzione.\n" "Per fà una traduzzione, create un novu schedariu PO appughjatu nant’à u " "mudellu." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Creà una nova traduzzione" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Creà una nova traduzzione cù stu schedariu POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "ID di u testu d’origine" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Tuttu" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Forma %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Forma %i (micca impiegata)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Zeru" #: src/editing_area.cpp:788 msgid "One" msgstr "Unu" #: src/editing_area.cpp:790 msgid "Two" msgstr "Dui" #: src/editing_area.cpp:804 msgid "Other" msgstr "Altru" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "Cuntestu di catena : %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Identificazione di catena : %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Furmatu %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "Furmatu %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Traduzzione — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "ID" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Testu d'origine — %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "lingua scunnisciuta" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Sbagliu di reta : %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "Sbagliu scunnisciutu" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "Fiascu per unisce i cataloghi gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "Apre cù l'Editore" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "Apre cù l'editore" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Alcuna infurmazione nant’à l’occurrenze di sta catena in u testu d’origine " "ùn hè stata pruvista in u schedariu." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "Nisuna infurmazione d’adopru" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d occurrenza di testu" msgstr[1] "%d occurrenze di testu" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "Ùn si pò truvà u testu d’origine" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit ùn pò micca affissà u testu d’origine induve a catena hè impiegata " "perchè u schedariu ùn hè micca dispunibule in u loca referenzatu osinnò ghjè " "una referenza simbolica chì ùn appunteghja micca ver di un schedariu reale." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Ùn si pò micca apre u schedariu" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit ùn pò micca apre u schedariu « %s »." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "Circà" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "Rimpiazzà" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "Ozzioni" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ùn sfarenzià micca maiuscule è minuscule" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Circunvoglie" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "Solu e parolle sane" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "Circà in i testi d'origine" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "Circà in e traduzzioni" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "Circà in i cummenti" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "&Tuttu rimpiazzà" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "&Tuttu rimpiazzà" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&Rimpiazzà" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "< &Precedente" #: src/findframe.cpp:152 msgid "&Next >" msgstr "&Seguente >" #: src/findframe.cpp:235 msgid "String to find" msgstr "Frasa à circà" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "Frasa di rimpiazzamentu" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "avertimentu : " #: src/gexecute.cpp:171 msgid "error: " msgstr "sbagliu : " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Nome o codice di a lingua" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Lingua di Traduzzione" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Lingua di a traduzzione :" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Tutte e catene" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "Impussibule di scaricà i detaglii di u prughjettu Localazy." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "" "Un sbagliu hè accadutu à l’incaricamentu di e traduzzioni versu Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Prughjetti" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Sapene di più nant’à %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy hè una piattaforma di lucalizazione autumatizata chì permette à " "ognunu di traduce facilmente i so prudutti è u so cuntenutu in parechje " "lingue." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "Aghjunghje un prughjettu" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "Aghjunghje un prughjettu" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit - Ghjestiunariu di cataloghi" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Mudificà…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Creà un novu prughjettu di traduzzioni" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Squassà u prughjettu" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Mudificà u prughjettu" #: src/manager.cpp:176 msgid "Update all" msgstr "Tuttu mudificà" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Mudificà tutti i cataloghi di stu prughjettu" #: src/manager.cpp:378 msgid "Total" msgstr "Tutale" #: src/manager.cpp:379 msgid "Untrans" msgstr "Micca traduttu" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "À rivede" #: src/manager.cpp:381 msgid "Errors" msgstr "Sbaglii" #: src/manager.cpp:382 msgid "Last modified" msgstr "Ultima mudificazione" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Selezziunà u cartulare" #: src/manager.cpp:433 msgid "Directories:" msgstr "Cartulari :" #: src/manager.cpp:503 msgid "" msgstr "" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "Vulete squassà u prughjettu « %s » ?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Squassà u prughjettu" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "" "A squassatura di u prughjettu ùn squasserà micca i schedarii di traduzzione." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Cunfirmazione" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "Mudificà tutti i cataloghi in stu prughjettu ?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "" "Fà a mudificazione da i testi d’origine versu tutti i schedarii di u " "prughjettu." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "Mudificazione di i cataloghi di prughjettu" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Cuntrollà e nove versioni…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "Ghjestiunariu di cataloghi" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&Preferenze…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Mudificà" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "Disfà" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "Rifà" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Incullà è fà currisponde u stilu" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "Squassà" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "Ortugrafia è Gramatica" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "Affissà Ortugrafia è Gramatica" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Verificà u ducumentu avà" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Verificà l’ortugrafia durante a scrittura" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Verificà a gramatica cù l’ortugrafia" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Currege l’ortugrafia autumaticamente" #: src/menus.cpp:219 msgid "Substitutions" msgstr "Sustituzioni" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Affissà i Sustituzioni" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Cupià/Incullà astutu" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Virgulette astute" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Lineette astute" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Liami astuti" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "Rimpiazzamentu di testu" #: src/menus.cpp:230 msgid "Transformations" msgstr "Trasfurmazioni" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Mette in maiuscule" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Mette in minuscule" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Tuttu in maiuscule" #: src/menus.cpp:237 msgid "Speech" msgstr "Discussione" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Principià a lettura" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Piantà a lettura" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Affissà" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Affissà a barra d’attrezzi" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "Persunalizà a barra d’attrezzi…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Modu di screnu sanu" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Finestra" #: src/menus.cpp:263 msgid "Minimize" msgstr "Impuculì" #: src/menus.cpp:264 msgid "Zoom" msgstr "Ingrandamentu" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Benvenuta in Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Mette Tuttu di Fronte" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Infurmazione apprupositu di u traduttore" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Nome :" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "U vostru nome, cugnome, o casata" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Indirizzu elettronicu :" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "voi@esempiu.corsica" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "I vostri nome è indirizzu elettronicu sò solu impiegati per definisce a " "rubrica di l’Ultimu Traduttore in i schedarii gettext GNU." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Mudificazione" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "Pruduce autumaticamente u schedariu MO à l’arregistramentu" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Verificà l’ortugrafia" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "Dà a primura à u testu piuttostu chì à a lista" #: src/prefsdlg.cpp:211 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 dà mai a primura à a lista di catene. Osinnò, ci vole à impiegà e Ctrl-" "fleccie per navigà, ma hè ancu pussibule di scrive u testu cusì, senza " "appughjà nant’à Tab per cambià a primura." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Aspettu" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "Impiegà una grafia persunalizata per a lista :" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "Impiegà una grafia persunalizata per i testi :" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "Cambià a lingua di l’interfaccia" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(richiede Windows 8 o più recente)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Generale" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Impiegà a memoria di traduzzione (MdT)" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Urganizà…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "Quandu i testi d’origine sò mudificati" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "currispundenze simile in u schedariu" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "pretraduce grazia à a MdT" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit pò pruvà di riempie e nove catene solu da e vostre traduzzioni di stu " "schedariu osinnò da a memoria di traduzzione sana. L’impiegu di a MdT ùn " "serà micca efficiente s’ella hè guasi viota, ma serà più bona quandu ci serà " "parechje traduzzioni." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Traduzzioni pruviste :" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Dimensione di a banca di dati nant'à u dischettu :" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "Impurtà schedarii di traduzzione…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "Impurtà schedarii di traduzzione…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "Impurtà à partesi di TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "Impurtà à partesi di TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "Espurtà ver di TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "Espurtà ver di TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "Viutà" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Selezziunà i schedarii di traduzzione à impurtà" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Selezziunà i schedarii TMX à impurtà" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Schedarii TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "Impurtazione di i traduzzioni…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Fiascu à l’impurtazione di a memoria di traduzzione." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "Impurtazione da « %s »…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s traduzzione hè stata impurtata." msgstr[1] "%s traduzzioni sò state impurtate." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "Espurtà cum’è…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "Espurtazione di i traduzzioni…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Fiascu à l’espurtazione di a memoria di traduzzione ver di « %s »." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "Viutà a memoria di traduzzione" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "Da veru, vulete viutà a memoria di traduzzione ?" #: src/prefsdlg.cpp:673 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 squasserà tutte e traduzzioni chì ci " "sò arregistrate. Ùn si puderà micca disfà st’operazione." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "MdT" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Memoria di Traduzzione" #: src/prefsdlg.cpp:730 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’estrattori di testu sò impiegati per truvà e catene traducevule in i " "schedarii di testu d’origine, è estraelle per ch’elle sianu tradutte." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "Estrattori persunalizati :" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "Estrattori persunalizati :" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Accetteghja tutte e lingue di prugrammazione ricunnisciute da l’attrezzi GNU " "gettext (PHP, C/C++, C#, Perl, Python, Java, JavaScript è altre)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Squassà l'attrezzu d'estrazzione" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "Da veru, vulete squassà l’estrattore « %s » ?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Estrattori" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Conti" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "Cuntrollà autumaticamente i rinnovi" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "Inchjude e versioni « beta »" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "E versioni « beta » cuntenenu l’ultimi funzioni è migliuramenti ma ponu esse " "appena menu stabule." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "Rinnovi" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Sti parametri affettanu a forma interna di i schedarii PO. Accunciateli s’è " "vo avete una dumanda particulare, per indettu, un cuntrollu di versione." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "Fine di linea :" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (ricumandatu)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "Cambià di linea à :" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "Cunservà u furmatu di i schedarii chì esistenu" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Espertu" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "Parametri" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "Approntu di e catene…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Pretraduzzione da a memoria di traduzzione…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "%u catena pretradutta" msgstr[1] "%u catene pretradutte" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Pretraduzzione…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d entrata hè stata pretradutta." msgstr[1] "%d entrate sò state pretradutte." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "E traduzzioni sò state marcate « À rivede », perchè sò forse imprecise. Ci " "vole à verificà a so accuratezza." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Currispundenze esatte da a MdT" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Currispundenze apprussimative da a MdT" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "Nisuna entrata ùn hè stata pretradutta." #: src/pretranslate.cpp:218 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 MdT ùn cuntene alcuna catena 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." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Ùn si pò pretraduce senza testu d’origine." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Pretraduce" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "A pretraduzzione richiede chì u testu d’origine sia dispunibule. Ùn " "funziuneghja micca s’è l’identificazioni sò impiegate solu, senza u testu " "reale." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Ùn si pò pretraduce da una lingua scunnisciuta." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "A pretraduzzione richiede chì a lingua di u testu d’origine sia cunnisciuta. " "Poedit ùn pò micca determinalla in stu schedariu." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Riempie solu e catene uguale" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "Di manera predefinita, i resulti inesatti sò riempiuti dinù ma sò marcati " "« À rivede ». Attivà st’ozzione per riempie solu e currispundenze chì sò " "perfette." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Ùn marcà micca e catene uguale cum’è « À rivede »" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Attivà st’ozzione solu s’è vo site fidanciu in a qualità di a vostra MdT. Di " "regula, tutte e sugestioni chì venenu da a MdT sò marcate « À rivede » è " "devenu esse verificate prima d’impiegalle." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "A pretraduzzione riempie autumaticamente e catene micca tradutte da e " "currispundenze uguale o simile trove in a memoria di traduzzione." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Sbagliu : " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "%d sbagliu hè accadutu :" msgstr[1] "%d sbaglii sò accaduti :" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Un sbagliu hè accadutu." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "%d sbagliu hè accadutu." msgstr[1] "%d sbaglii sò accaduti." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Abbandonu…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "Sguillà quì cartulari o schedarii" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "Sguillà quì cartulari o schedarii" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "Aghjunghje cartulari…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "Aghjunghje cartulari…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "Aghjunghje schedarii…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "Aghjunghje schedarii…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "Aghjunghje un caratteru genericu…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "Aghjunghje un caratteru genericu…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Palisà cù Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Affissà in l’espluratore" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Affissà in u cartulare" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Chjassi" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Chjassi esclusi" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Parametri esperti d’estrazzione" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Estrae l’annutazioni per i traduttori da :" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "I cummenti preffissati da :" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Tutti i cummenti" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Indicadori xgettext addizziunali :" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Parolle chjave addiziunale" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "Nome di prughjettu per sta traduzzione" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Nome di a squadra è indirizzu elettronicu o URL" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "i.e. : nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (ricumandatu)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "" "In primu locu, ci vole à arregistrà u schedariu. Osinnò sta sezzione ùn pò " "micca esse mudificata." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "Esattezza di i campi di sustituzione" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "U campu di sustituzione « %s » hè assente in a traduzzione." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "U campu di sustituzione « %s » ùn hè micca in u testu d’origine." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Traduzzioni di forma plurale" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Tutte e forme plurale ùn sò micca tradutte." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "Maiuscule/minuscule cuntradittorie" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "A traduzzione duveria principià cum’è una frasa." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "A traduzzione duveria principià cù una lettera minuscula." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "Spaziu biancu cuntradittoriu" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "A traduzzione ùn principia micca cù un spaziu." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "A traduzzione principia cù un spaziu, ma micca u testu d’origine." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "Un saltu di linea manca à a fine di a traduzzione." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "" "Ci hè un saltu di linea à a fine di a traduzzione, ma micca in u testu " "d’origine." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "Un spaziu manca à a fine di a traduzzione." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "" "Ci hè un spaziu à a fine di a traduzzione, ma micca in u testu d’origine." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Cuntrolli di puntuazione" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "A traduzzione duveria finisce cù « %s »." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "A traduzzione ùn duveria micca finisce cù « %s »." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "A traduzzione finisce cù « %s », ma u testu d’origine, cù « %s »." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Nivulu" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "Viutà sta lista" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "Viutà sta lista" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "Cummentu :" #: src/resources/comment.xrc:33 msgid "Update" msgstr "Mudificà" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Squassà" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Squassà u cummentu" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Mudificà u prughjettu" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Nome di prughjettu :" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Sfuglià" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "Aghjunghje u cartulare à a lista" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Vai" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Schedariu" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Novu…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Novu da un schedariu P&OT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Novu da un schedariu P&OT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&Apre…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "Apre Recente" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "Apre recente" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "Apre a traduzzione in u nivulu…" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "Apre a traduzzione in u nivulu…" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Finestra d’accolta" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Finestra d’accolta" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "A&mministratore di cataloghi" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "A&mministratore di Cataloghi" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&Chjode" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "A&rregistrà" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Arregistrà &cù u nome…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Arregistrà &cù u nome…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Trasfurmà in un schedariu MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "Espurtà versu &HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Cuntrollà e nove versioni…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "Parametri…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&Preferenze" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Esce" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Esce" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Cupià da singulare" #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Cupià da singulare" #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Traduzzione « À ri&vede »" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Traduzzione « À ri&vede »" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "&Mudificà u cummentu" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "&Mudificà u Cummentu" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "Sugestioni" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&Circà…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "Rimpiazzà…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "Circà seguente" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "Circà precedente" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "Circà è rimpiazzà…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "Circà seguente" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "Circà precedente" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Affissà &ID di a catena" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Affissà &ID di a catena" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Affissà l’avertimenti" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Affissà l’avertimenti" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "&Classificà da l’ordine di u schedariu" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "&Classificà da l’ordine di u schedariu" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Classificà da u testu d’&origine" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Classificà da u testu d’&origine" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Classificà da a &traduzzione" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Classificà da a &traduzzione" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Gruppà da u contestu" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Gruppà da u contestu" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Elementi cù &sbaglii in primu" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Elementi cù Sbaglii in Primu" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "&Elementi micca tradutti in primu" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "&Elementi micca tradutti in primu" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "&Affissà l’occurrenze di testu" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "&Affissà l’occurrenze di testu" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "Affissà a barra laterale" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Affissà a barra di statu" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Traduzzione" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "&Mudificà da u testu d’origine" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "&Mudificà da u testu d’origine" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Sincrunizà cù Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Pre-&traduce…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Validà e traduzzione" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Validà e traduzzione" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Caccià e traduzzioni uguale à l’origine" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "Sp&urgulà e traduzzioni cacciate" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "Sp&urgulà e traduzzioni cacciate" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&Pruprietà…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "&Và" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Fattu eppò seguente" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Fattu eppò seguente" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "Mudificatu nanzu" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "Mudificatu nanzu" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "Traduzzione &precedente" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "Traduzzione &Precedente" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "Traduzzione &seguente" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "Traduzzione &Seguente" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "Incumpleta p&recedente" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "Incumpleta p&recedente" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "Incumpleta s&eguente" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "Incumpleta s&eguente" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Forma plurale precedente" #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Forma plurale precedente" #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Forma plurale seguente" #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Forma plurale seguente" #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Aiutu &inlinea" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Aiutu &Inlinea" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&Ducumentazione GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&Ducumentazione GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&Apprupositu di Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&Apprupositu" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "Installazione di l’estrattore" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "Lista di l’estensioni staccate da punti-virgule (i.e. *.cpp;*.h) :" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Chjama :" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Cumanda per estrae e traduzzioni :" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Ghjè a cumanda impiegata per lancià l’estrattore.\n" "%o serà rimpiazzatu da u nome di schedariu d’esciuta,\n" "\n" "%K da a lista di e parolle chjave, %F da a lista di i schedarii\n" "d’entrata è %C da u gruppu di caratteri (fighjate inghjò)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Un elementu in a lista di e parolle chjave :" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Què serà aghjuntu à a linea di cumanda una volta per ogni\n" "parolla chjave. %k serà rimpiazzatu da a parolla chjave." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Un elementu in a lista di schedarii d’entrata :" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Què serà aghjuntu à a linea di cumanda una volta per ogni\n" "schedariu d’entrata.\n" "%f serà rimpiazzatu da u nome di schedariu." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Gruppu di caratteri di u testu d’origine :" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Què serà aghjuntu à a linea di cumanda solu s’è ci hè un gruppu di\n" "caratteri in u testu d’origine. %c serà rimpiazzatu da stu valore." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "Pruprietà di a traduzzione" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Nome è versione di prughjettu :" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Squadra di traduzzione :" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Forme plurale :" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Impiegà e regule predefinite per sta lingua" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Impiegà un espressione predefinita" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Per amparà nant’à e forme plurale" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Gruppu di caratteri :" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Parametri esperti d’estrazzione…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Parametri esperti d’estrazzione…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "Pruprietà di a traduzzione" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Chjassi d’origine" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Chjassi d’origine" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Estrae testu da i schedarii d’origine in sti cartulari :" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "Chjassu di basa :" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Parolle chjave di testi d’origine" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Parolle chjave di testi d’origine" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Aduprate ste parolle chjave (nomi di funzioni) per ricunnosce e catene\n" "chì sò à traduce in i schedarii d’origine :" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "Impiegà dinù parolle chjave predefinite per e lingue accettate" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Per amparà nant’à e parolle chjave gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "Apre u schedariu" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Arregistrà u schedariu" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "Validazione" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "Circà i sbaglii in a traduzzione" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "Mudificà da u testu" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "Mudificà da u testu" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Mudificà da u testu d’origine" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Barra laterale" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Affissà o piattà a barra laterale" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "U testu d’origine precedente" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "U vechju testu d’origine (nanzu ch’ellu sia cambiatu) chì currisponde à a " "traduzzione imprecise avà." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Annutazioni per i traduttori" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Cummentu" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "Aghjunghje un cummentu" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "Aghjunghje un Cummentu" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Squassà da a memoria di traduzzione" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Squassà da a memoria di traduzzione" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "Sugestioni di traduzzione" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "Nisuna currispundenza trova" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "Nisuna currispundenza trova" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Sta catena hè stata trova in a memoria di traduzzione di Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "E sugestioni di traduzzione richiedenu chì u testu d’origine sia " "dispunibule. Ùn funziuneghjanu micca s’è l’identificazioni sò impiegate " "solu, senza u testu reale." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "E sugestioni di traduzzione richiedenu chì a lingua di u testu d’origine sia " "cunnisciuta. Poedit ùn pò micca determinalla in stu schedariu." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Impussibule d’eseguisce u prugramma : %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "U schedariu TMX hè malfuttutu." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "A basa di dati di a memoria di traduzzione hè alterata : %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Sbagliu di a memoria di traduzzione : %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Impiegà a lingua predefinita)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Scelta di a lingua" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Selezziunà a vostra lingua preferita" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "Ci vole à rilancià Poedit per piglià stu cambiamentu in contu." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Ùn si pò micca creà u cartulare timpurariu." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "Ùn ci hè micca elementi. Pare stranu st’affare." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "L’elementi traducevule ùn sò micca aghjunti manualmente in u sistema " "Gettext, ma sò estratti autumaticamente da u testu d’origine. Cusì, sò " "sempre attualizati è esatti. Di bona regula, i traduttori impieganu i " "schedarii di mudellu PO (POT) appruntati da u sviluppatore." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Sapene di più nant’à GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "A manera a più simplice di riempie stu schedariu cù traduzzioni hè di " "mudificallu da un POT :" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "Mudificà da un POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Piglià e catene traducevule da un mudellu POT chì esiste." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Pudete dinù estrae e catene traducevule da i schedarii d’origine :" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "Estrae da i schedarii d’origine" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "Sceglie l’ozzioni d’estrazzione da i schedarii d’origine in Pruprietà." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "Versione %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Creà una nova" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Creà una nova traduzzione da un mudellu POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Navigazione" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "Apre è mudificà schedarii di traduzzione." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Traduce u prughjettu di u nivulu" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Cullaburate in linea cù d’altre persone." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "Schedarii recente" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Sincrunizà" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Sincrunizà a traduzzione cù Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "Apprupositu di %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "Preferenze di %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "Apprupositu di %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "Servizii" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Piattà %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Piattà l’altri" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Tuttu affissà" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Esce %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "Preferenze…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "Preferenze…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "Preferenze…" #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Appiecà" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Appiecà" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Ritornu" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Ritornu" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Abbandunà" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&Spurgulà" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "Squassà" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Cupià" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&Taglià" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "Taglià" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "Mudificà" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "&Esce" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Aiutu" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Novu" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "Novu" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "I&nnò" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Nò" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Vai" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "Apre…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&Apre…" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "Apre…" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "&Incullà" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "Incullà" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "Preferenze" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&Rifà" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "Attualizà" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "&Arregistrà cù u nome" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Arregistrà cù u nome" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "T&uttu selezziunà" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Tuttu selezziunà" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&Disfà" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Sì" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Sì" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Maiusc+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Entrée" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Sù" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Ghjò" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "Manca" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "Diritta" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "maiusc" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Avertimentu : " poedit-3.6.3/locales/bg.po0000644000175100001660000033220515011674363011056 msgid "" msgstr "" "Project-Id-Version: poedit\n" "Report-Msgid-Bugs-To: help@poedit.net\n" "POT-Creation-Date: 2025-05-16 18:17+0200\n" "PO-Revision-Date: 2025-04-05 10:16\n" "Last-Translator: \n" "Language-Team: Bulgarian\n" "Language: bg_BG\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-Crowdin-Project: poedit\n" "X-Crowdin-Project-ID: 53425\n" "X-Crowdin-Language: bg\n" "X-Crowdin-File: /locales/poedit.pot\n" "X-Crowdin-File-ID: 3\n" #: src/attentionbar.cpp:82 msgid "Hide this notification message" msgstr "Скриване на това Ñъобщение" #: src/attentionbar.cpp:294 msgid "Don’t Show Again" msgstr "Да не Ñе показва повече" #: src/attentionbar.cpp:294 msgid "Don’t show again" msgstr "Да не Ñе показва повече" #: src/cat_update.cpp:99 msgid "Update Summary" msgstr "ОбновÑване на резюмето" #. TRANSLATORS: Title of window showing summary (added/removed strings, issues) of updating translations from sources or POT file #: src/cat_update.cpp:99 msgid "Update summary" msgstr "Резюме" #: src/cat_update.cpp:131 src/findframe.cpp:148 src/titleless_window.cpp:82 #: src/wx_translatable_strings.h:96 msgid "Close" msgstr "&ЗатварÑне" #: src/cat_update.cpp:161 msgid "Issues" msgstr "Проблеми" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:164 src/cloud_accounts_ui.cpp:266 src/manager.cpp:377 #: src/recent_files.cpp:548 src/wx_translatable_strings.h:104 msgid "File" msgstr "Файл" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:166 msgid "Line" msgstr "Ред" #. TRANSLATORS: Column header in the list of issues where rows are filename:line:text of issue #: src/cat_update.cpp:168 msgid "Issue" msgstr "Проблем" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New Strings" msgstr "Ðови низове" #: src/cat_update.cpp:182 src/cat_update.cpp:184 msgid "New strings" msgstr "Добавени" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed Strings" msgstr "Премахнати низове" #: src/cat_update.cpp:195 src/cat_update.cpp:197 msgid "Removed strings" msgstr "Премахнати низове" #: src/cat_update.cpp:221 msgid "Collecting source files…" msgstr "Събиране на изходните файлове…" #: src/cat_update.cpp:237 #, c-format msgid "Extracting translatable strings from %s file…" msgid_plural "Extracting translatable strings from %s files…" msgstr[0] "Извличане на низовете за превод от %s файл…" msgstr[1] "Извличане на низовете за превод от %s файла…" #: src/cat_update.cpp:259 src/cat_update.cpp:395 msgid "Failed to load file with extracted translations." msgstr "Файлът Ñ Ð¸Ð·Ð½ÐµÑените преводи не може да бъде зареден." #: src/cat_update.cpp:283 #, c-format msgid "In: %s" msgstr "Ð’: %s" #: src/cat_update.cpp:290 src/edframe.cpp:1606 msgid "Source code not available." msgstr "ИзходниÑÑ‚ код не е на разположение." #: src/cat_update.cpp:291 src/edframe.cpp:1610 msgid "" "Translations couldn’t be updated from the source code, because no code was " "found in the location specified in the file’s Properties." msgstr "" "Ðе вÑички преводи Ñа обновени от Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´, защото такъв не е открит на " "поÑоченото в наÑтройките на файла мÑÑто." #: src/cat_update.cpp:295 msgid "Permission denied." msgstr "ДоÑтъпът е отказан." #: src/cat_update.cpp:296 msgid "" "You don’t have permission to read source code files from the location " "specified in the file’s Properties." msgstr "" "ÐÑмате права за четене на файловете Ñ Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑоченото в " "наÑтройките на файла мÑÑто." #. TRANSLATORS: The System Settings etc. references macOS 13 Ventura or newer system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:301 msgid "" "If you previously denied access to your files, you can allow it in System " "Settings > Privacy & Security > Files & Folders." msgstr "" "Ðко Ñте забранили доÑтъп до файловете Ñи, можете да го разрешите в " "СиÑтемните наÑтройки > Защита и поверителноÑÑ‚ > Файлове и папки." #. TRANSLATORS: The System Preferences etc. references macOS system settings and should be translated EXACTLY as in macOS. If you don't use macOS and can't check, please leave it untranslated. #: src/cat_update.cpp:306 msgid "" "If you previously denied access to your files, you can allow it in System " "Preferences > Security & Privacy > Privacy > Files & Folders." msgstr "" "Ðко Ñте забранили доÑтъп до файловете Ñи, можете да го разрешите в " "СиÑтемните наÑтройки > Защита и поверителноÑÑ‚ > ПоверителноÑÑ‚ > Файлове и " "папки." #: src/cat_update.cpp:312 msgid "Failed to extract strings from source code." msgstr "Ðизовете не могат да бъдат извлечени от Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´." #: src/cat_update.cpp:346 src/edapp.cpp:1103 src/edframe.cpp:929 #: src/edframe.cpp:2477 #, c-format msgid "The file “%s†couldn’t be opened." msgstr "Файлът „%s“ не може да бъде отворен." #: src/cat_update.cpp:364 msgid "Updating translations" msgstr "ОбновÑване на преводите" #: src/cat_update.cpp:384 msgid "Determining differences…" msgstr "ОпределÑне на разликите…" #: src/cat_update.cpp:392 src/cat_update.cpp:445 msgid "Merging differences…" msgstr "ОбединÑване на разликите…" #: src/cat_update.cpp:405 msgid "" "Translation file is already up to date, no changes to strings were made." msgstr "Файлът за превод вече е актуален. Ðе Ñа правени промени по низовете." #: src/cat_update.cpp:411 #, c-format msgid "Translation file was updated with %s change." msgid_plural "Translation file was updated with %s changes." msgstr[0] "Във файла за превод беше направена %s промÑна." msgstr[1] "Във файла за превод бÑха направена %s промени." #: src/cat_update.cpp:414 msgid "New strings to translate:" msgstr "Ðови низове за превод:" #: src/cat_update.cpp:415 msgid "Removed strings (no longer used):" msgstr "Премахнати низове (които вече нÑма да Ñе ползват):" #: src/cat_update.cpp:503 #, c-format msgid "%d issue with the source strings was detected." msgid_plural "%d issues with the source strings were detected." msgstr[0] "Открит е %d проблем в изходните низове." msgstr[1] "Открити Ñа %d проблема в изходните низове." #: src/cat_update.cpp:530 msgid "View Details…" msgstr "Преглед на подробноÑтите…" #: src/cat_update.cpp:530 msgid "View details…" msgstr "Преглед на подробноÑтите…" #: src/catalog.cpp:125 #, c-format msgid "Malformed header: “%sâ€" msgstr "Ðеправилна заглавка: „%s“" #: src/catalog.cpp:588 msgid "PO Translation Files" msgstr "Файлове Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸" #: src/catalog.cpp:590 msgid "POT Translation Templates" msgstr "Шаблон за преводи" #: src/catalog.cpp:592 msgid "XLIFF Translation Files" msgstr "Файлове на XLIFF Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´" #: src/catalog.cpp:594 msgid "Xcode Localization Catalog" msgstr "Локализационен каталог на Xcode" #: src/catalog.cpp:596 msgid "JSON Translation Files" msgstr "Файлове Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ във формат JSON" #. TRANSLATORS: "Flutter" is proper noun, name of a developer tool #: src/catalog.cpp:599 msgid "Flutter Translation Files" msgstr "Файлове Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ на Flutter" #: src/catalog.cpp:608 msgid "All Translation Files" msgstr "Ð’Ñички файлове за превод" #: src/catalog.cpp:1169 msgid "The file is in a format not recognized by Poedit." msgstr "Файлът е във формат, който не Ñе разпознава от Poedit." #: src/catalog_json.cpp:91 msgid "" "This JSON file isn’t a translations file and cannot be edited in Poedit." msgstr "Файлът JSON не е файл Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ и не може да бъде редактиран Ñ Poedit." #: src/catalog_json.cpp:140 #, c-format msgid "Reading file content failed with the following error: %s" msgstr "При четенето на Ñъдържанието на файла възникна Ñледната грешка: %s" #: src/catalog_json.cpp:151 src/catalog_po.cpp:1162 src/catalog_xliff.cpp:556 #, c-format msgid "" "File “%s†is read-only and cannot be saved.\n" "Please save it under different name." msgstr "" "Файлът „%s“ е без право на запиÑ.\n" "Запазете го под друго име." #: src/catalog_json.cpp:165 src/catalog_po.cpp:1198 src/catalog_po.cpp:1280 #: src/catalog_po.cpp:1354 src/catalog_po.cpp:1363 src/catalog_po.cpp:1420 #: src/catalog_po.cpp:1451 src/catalog_po.cpp:1645 src/catalog_xliff.cpp:567 #: src/edframe.cpp:1317 src/prefsdlg.cpp:664 #, c-format msgid "Couldn’t save file %s." msgstr "Файлът „%s“ не може да бъде запазен." #: src/catalog_json.cpp:503 msgid "Screenshots:" msgstr "Екранни Ñнимки:" #: src/catalog_po.cpp:134 #, 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[1] "%i реда от файла „%s“ не Ñа заредени правилно." #: src/catalog_po.cpp:149 #, c-format msgid "Line %d of file “%s†is corrupted (not valid %s data)." msgstr "Ред %d от файла „%s“ е неправилен (неправилни данни за %s)." #: src/catalog_po.cpp:356 msgid "Broken PO file: singular form msgstr used together with msgid_plural" msgstr "" "Повреден файл PO: използвана е форма за единÑтвено чиÑло на msgstr при " "наличие на msgid_plural" #: src/catalog_po.cpp:408 msgid "Broken PO file: plural form msgstr used without msgid_plural" msgstr "" "Повреден файл PO: използвана е форма за множеÑтвено чиÑло на msgstr, а " "msgid_plural липÑва" #: src/catalog_po.cpp:930 src/catalog_po.cpp:944 src/catalog_po.cpp:957 #: src/catalog_po.cpp:969 msgid "Couldn’t load the file, it is probably damaged." msgstr "Файлът не може да бъде зареден. Ðай-вероÑтно е повреден." #: src/catalog_po.cpp:949 msgid "" "There were errors when loading the file. Some data may be missing or " "corrupted as the result." msgstr "" "Грешки при зареждане на файла. Може да има липÑващи или повредени данни." #: src/catalog_po.cpp:1289 msgid "" "There was a problem formatting the file nicely (but it was saved all right)." msgstr "Възникна проблем при форматиране на файлa, но той беше запазен." #: src/catalog_po.cpp:1568 #, c-format msgid "" "The file couldn’t be saved in “%s†charset as specified in translation " "settings.\n" "\n" "It was saved in UTF-8 instead and the setting was modified accordingly." msgstr "" "Файлът не може да бъде запазен в Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð·Ð½Ð°ÐºÐ¾Ð² набор „%s“, указан в " "наÑтройките.\n" "\n" "ВмеÑто това е запазен в UTF-8, а наÑтройките му Ñа променени." #: src/catalog_po.cpp:1570 src/edframe.cpp:2740 msgid "Error saving file" msgstr "Грешка при запазване на файла" #: src/catalog_po.cpp:1721 #, c-format msgid "“%s†is not a valid POT file." msgstr "„%s“ е неправилен файл POT." #: src/catalog_xcloc.cpp:85 src/catalog_xcloc.cpp:88 msgid "Unexpectedly missing content in the XCLOC file." msgstr "Ðеочаквано липÑващо Ñъдържание във файла XCLOC." #: src/catalog_xcloc.cpp:99 msgid "Saving in a different location is not supported for XCLOC files." msgstr "Запазването на друго мÑÑто не Ñе поддържа за файлове XCLOC." #: src/catalog_xliff.cpp:473 #, c-format msgid "Error while loading XLIFF file: %s" msgstr "Грешка при зареждане на файл XLIFF: %s" #: src/catalog_xliff.cpp:518 #, c-format msgid "unsupported version (%s)" msgstr "неподдържана верÑÐ¸Ñ (%s)" #. TRANSLATORS: Shown as error if a translation of XLIFF markup is not valid XML #: src/catalog_xliff.cpp:679 src/catalog_xliff.cpp:866 msgid "Broken markup in translation string." msgstr "ТекÑтът за превод е Ñ ÑƒÐ²Ñ€ÐµÐ´ÐµÐ½Ð¾ форматиране." #: src/cloud_accounts_ui.cpp:81 msgid "" "Connect Poedit with supported cloud localization platforms to seamlessly " "sync translations managed on them." msgstr "" "Свържете Poedit Ñ Ð¿Ð¾Ð´Ð´ÑŠÑ€Ð¶Ð°Ð½Ð¸Ñ‚Ðµ облачни ÑиÑтеми за локализациÑ, за да " "Ñинхронизирате безпроблемно преводите, управлÑвани от Ñ‚ÑÑ…." #: src/cloud_accounts_ui.cpp:84 src/welcomescreen.cpp:286 msgid "How does cloud sync work?" msgstr "Как работи Ñинхронизирането Ñ Ð¾Ð±Ð»Ð°ÐºÐ°?" #: src/cloud_accounts_ui.cpp:91 msgid "Account" msgstr "Профил" #: src/cloud_accounts_ui.cpp:160 msgid "(not signed in)" msgstr "(не Ñте впиÑан/а)" #: src/cloud_accounts_ui.cpp:356 msgid "Open cloud translation" msgstr "ОтварÑне на Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´" #: src/cloud_accounts_ui.cpp:368 msgid "Manage accounts" msgstr "Управление на профилите" #: src/cloud_accounts_ui.cpp:377 src/export_html.cpp:77 msgid "Project:" msgstr "Проект:" #: src/cloud_accounts_ui.cpp:381 src/export_html.cpp:79 #: src/resources/prefs.xrc:11 src/resources/prefs.xrc:15 #: src/resources/properties.xrc:54 msgid "Language:" msgstr "Език:" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to Cloud Account" msgstr "ВпиÑване в Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»" #: src/cloud_accounts_ui.cpp:436 msgid "Sign in to cloud account" msgstr "ВпиÑване в Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»" #: src/cloud_accounts_ui.cpp:527 msgid "No translation projects listed in your account." msgstr "ÐÑма проекти за превод във Ð’Ð°ÑˆÐ¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»." #: src/cloud_accounts_ui.cpp:636 src/crowdin_gui.cpp:339 msgid "Downloading latest translations…" msgstr "ИзтеглÑне на текущите преводи…" #. TRANSLATORS: "%s" is a name of online service, e.g. "Crowdin" or "Localazy" #: src/cloud_accounts_ui.cpp:732 #, c-format msgid "Sign in to %s" msgstr "ВпиÑване в %s" #: src/cloud_sync.h:98 msgid "Syncing" msgstr "Синхронизиране" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:115 #, c-format msgid "Uploading translations to %s…" msgstr "Изпращане на преводите към %s…" #. TRANSLATORS: %s is a cloud destination, e.g. "Crowdin" or ftp.wordpress.com etc. #: src/cloud_sync.h:167 #, c-format msgid "Uploading translations to %s failed." msgstr "Преводите не могат да бъдат изпратени към %s." #: src/cloud_sync.h:168 msgid "Syncing error" msgstr "Грешка при Ñинхронизиране" #: src/commentdlg.cpp:48 msgid "Add" msgstr "ДобавÑне" #: src/crowdin_client.cpp:143 msgid "Unknown Crowdin error." msgstr "ÐеизвеÑтна грешка от Crowdin." #: src/crowdin_client.cpp:153 msgid "Not authorized, please sign in again." msgstr "Ðе Ñте удоÑтоверени, молÑ, впишете Ñе отново." #. TRANSLATORS: Crowdin has string-based and file-based project kinds (see https://support.crowdin.com/creating-project/#file-based-project) #: src/crowdin_client.cpp:342 msgid "String-based Crowdin projects are not supported." msgstr "Проекти в Crowdin оÑновани на низове не Ñе поддържат." #: src/crowdin_client.cpp:346 msgid "Downloading translations is disabled in this project." msgstr "ИзтеглÑнето на преводи е изключено за този проект." #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign In" msgstr "ВпиÑване" #: src/crowdin_gui.cpp:90 src/localazy_gui.cpp:101 msgid "Sign in" msgstr "ВпиÑване" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign Out" msgstr "Изход" #: src/crowdin_gui.cpp:92 src/localazy_gui.cpp:103 msgid "Sign out" msgstr "Изход" #: src/crowdin_gui.cpp:99 msgid "Learn more about Crowdin" msgstr "Ðаучете повече за Crowdin" #: src/crowdin_gui.cpp:126 msgid "" "Crowdin is an online translation management platform and collaborative " "translation tool. We use Crowdin ourselves to translate Poedit into many " "languages, and we love it." msgstr "" "Crowdin е уеб ÑиÑтема за управление на преводите и инÑтрумент за ÑъвмеÑтен " "превод. Ðие Ñъщо използваме Crowdin за превеждане на ÑÐ°Ð¼Ð¸Ñ Poedit на много " "езици, и имаме невероÑтни впечатлениÑ." #: src/crowdin_gui.cpp:190 src/localazy_gui.cpp:202 msgid "Waiting for authentication…" msgstr "Изчакване на удоÑтоверÑване…" #: src/crowdin_gui.cpp:191 src/localazy_gui.cpp:203 msgid "Updating user information…" msgstr "ОбновÑване на информациÑта за потребителÑ…" #: src/crowdin_gui.cpp:298 msgid "Sign in to Crowdin" msgstr "ВпиÑване Ñе в Crowdin" #: src/crowdin_gui.cpp:318 msgid "Syncing with Crowdin failed." msgstr "ÐеуÑпешно Ñинхронизиране Ñ Crowdin." #: src/crowdin_gui.cpp:319 msgid "Crowdin error" msgstr "Грешка в Crowdin" #: src/crowdin_gui.cpp:327 msgid "Uploading translations…" msgstr "Изпращане на преводите…" #: src/customcontrols.cpp:282 src/wx_translatable_strings.h:98 msgid "&Copy" msgstr "&Копиране" #: src/customcontrols.cpp:326 msgid "Learn more" msgstr "Ðаучете повече" #: src/edapp.cpp:453 src/resources/menus.xrc:336 src/resources/menus.xrc:441 #: src/wx_translatable_strings.h:105 msgid "&Help" msgstr "Помо&щ" #: src/edapp.cpp:732 msgid "MO files can’t be directly edited in Poedit." msgstr "MO файловете не могат да бъдат директно променÑни Ñ Poedit." #: src/edapp.cpp:733 msgid "Error opening file" msgstr "Грешка при отварÑне на файл" #: src/edapp.cpp:735 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 Ñъщо ще бъде обновен." #: src/edapp.cpp:776 msgid "don’t delete temporary files (for debugging)" msgstr "временните файлове да не бъдат премахвани (за отÑтранÑване на дефекти)" #: src/edapp.cpp:778 msgid "handle a poedit:// URI" msgstr "управление на протокола poedit://" #: src/edapp.cpp:780 msgid "go to item at given line number" msgstr "към елемента на Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð¸Ñ Ñ€ÐµÐ´" #: src/edapp.cpp:803 msgid "Failed to communicate with Poedit process." msgstr "Грешка в комуникациÑта Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° Poedit." #: src/edapp.cpp:916 src/edapp.cpp:921 #, c-format msgid "Unhandled exception occurred: %s" msgstr "Ðеприхванато изключение: %s" #: src/edapp.cpp:1073 msgid "Select translation template" msgstr "Изберете шаблон за превод" #: src/edapp.cpp:1104 src/edframe.cpp:930 src/edframe.cpp:2295 #: src/edframe.cpp:2478 msgid "Invalid file" msgstr "Ðевалиден файл" #: src/edapp.cpp:1124 msgid "Select translation file" msgstr "Изберете файл за превод" #: src/edapp.cpp:1225 msgid "Poedit is an easy to use translation editor." msgstr "Poedit е леÑен за ползване редактор на преводи." #: src/edframe.cpp:424 msgid "You can’t drop more than one file on Poedit window." msgstr "Ðе може да пуÑнете повече от един файл в прозореца на Poedit." #: src/edframe.cpp:431 #, c-format msgid "File “%s†is not a translation file." msgstr "Файлът „%s“ не е файл за превод." #: src/edframe.cpp:438 src/recent_files.cpp:342 #, c-format msgid "File “%s†doesn’t exist." msgstr "Файлът „%s“ не ÑъщеÑтвува." #: src/edframe.cpp:455 msgid "Poedit" msgstr "Poedit" #. 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". #: src/edframe.cpp:867 #, c-format msgid "" "Spellchecking is disabled, because the dictionary for %s isn’t installed." msgstr "" "Проверката на правопиÑа е изключена, защото не е инÑталиран речник за %s." #: src/edframe.cpp:871 msgid "Install" msgstr "ИнÑталиране" #: src/edframe.cpp:963 src/edframe.cpp:1138 #, c-format msgid "The file “%s†has been changed by another application." msgstr "Файлът „%s“ е променен от друго приложение." #: src/edframe.cpp:964 src/edframe.cpp:968 msgid "Reload file" msgstr "Презареждане на файла" #: src/edframe.cpp:967 msgid "" "Do you want to reload the file from disk? Your unsaved edits in Poedit will " "be lost if you do." msgstr "" "ИÑкате ли да презаредите файла? Ðко го направите, незапазените промени в " "Poedit ще бъдат загубени." #: src/edframe.cpp:968 msgid "Ignore" msgstr "Пренебрегване" #: src/edframe.cpp:968 msgid "Reload File" msgstr "Презареждане на файла" #: src/edframe.cpp:1072 msgid "The file has been modified. Do you want to save changes?" msgstr "Файлът е променен. ИÑкате ли промените да бъдат запазени?" #: src/edframe.cpp:1073 msgid "Save changes" msgstr "Запазване на промените" #: src/edframe.cpp:1076 msgid "Your changes will be lost if you don’t save them." msgstr "Ðаправените промени ще бъдат загубени, ако не бъдат запазени." #: src/edframe.cpp:1079 src/edframe.cpp:1139 src/resources/toolbar.xrc:24 #: src/resources/toolbar.xrc:29 src/wx_translatable_strings.h:115 msgid "Save" msgstr "&Запазване" #: src/edframe.cpp:1081 msgid "Do&n’t save" msgstr "&Без запазване" #: src/edframe.cpp:1083 msgid "Don’t Save" msgstr "Без запазване" #: src/edframe.cpp:1142 msgid "The changes made by the other application will be lost if you save." msgstr "" "Ðко запазите файла, промените направени от другото приложение ще бъдат " "загубени." #: src/edframe.cpp:1143 src/prefsdlg.cpp:677 src/prefsdlg.cpp:964 #: src/resources/comment.xrc:41 src/resources/manager.xrc:63 #: src/wx_translatable_strings.h:94 msgid "Cancel" msgstr "О&тказ" #: src/edframe.cpp:1143 msgid "Save Anyway" msgstr "Запазване въпреки това" #: src/edframe.cpp:1143 msgid "Save anyway" msgstr "Запазване въпреки това" #: src/edframe.cpp:1196 msgid "Save as…" msgstr "Запазване като…" #: src/edframe.cpp:1245 msgid "Compile to…" msgstr "Компилиране до…" #: src/edframe.cpp:1248 msgid "Compiled Translation Files" msgstr "Компилирани преводи" #: src/edframe.cpp:1289 msgid "Export to HTML…" msgstr "ИзнаÑÑне като HTML…" #: src/edframe.cpp:1292 msgid "HTML Files" msgstr "HTML файлове" #: src/edframe.cpp:1307 msgid "Exporting to HTML" msgstr "ИзнаÑÑне като HTML" #: src/edframe.cpp:1607 msgid "Updating failed" msgstr "Грешка при обновÑване" #: src/edframe.cpp:1674 msgid "Open reference file" msgstr "ОтварÑне на файл ÑÑŠÑ Ñправки" #: src/edframe.cpp:1708 src/resources/menus.xrc:235 msgid "Update from &POT File…" msgstr "ОбновÑване от &файл POT…" #: src/edframe.cpp:1708 src/resources/menus.xrc:234 msgid "Update from &POT file…" msgstr "ОбновÑване от &файл POT…" #: src/edframe.cpp:1834 #, c-format msgid "%d issue with the translation found." msgid_plural "%d issues with the translation found." msgstr[0] "С превода има %d проблем." msgstr[1] "С превода има %d проблема." #: src/edframe.cpp:1839 src/edframe.cpp:1885 msgid "Validation results" msgstr "Резултат от валидиране" #: src/edframe.cpp:1842 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 "" "Ðизовете Ñ Ð³Ñ€ÐµÑˆÐºÐ¸ Ñа разграничени в ÑпиÑъка Ñ Ñ‡ÐµÑ€Ð²ÐµÐ½ цвÑÑ‚ на фона. " "ПодробноÑти ще бъдат показани, когато изберете такъв запиÑ." #: src/edframe.cpp:1851 msgid "The file was saved safely." msgstr "Файлът е запазен." #: src/edframe.cpp:1854 msgid "" "The file was saved safely and compiled into the MO format, but it will " "probably not work correctly." msgstr "" "Файлът е запазен и компилиран във формат MO, но вероÑтно нÑма да работи." #: src/edframe.cpp:1857 msgid "" "The file was saved safely, but it cannot be compiled into the MO format and " "used." msgstr "" "Файлът е запазен, но не може да бъде компилиран във формат MO и използван." #: src/edframe.cpp:1866 msgid "" "The file was compiled into the MO format, but it will probably not work " "correctly." msgstr "Файлът е компилиран във формат MO, но вероÑтно нÑма да работи." #: src/edframe.cpp:1870 msgid "The file cannot be compiled into the MO format and used." msgstr "Файлът не може да бъде компилиран във формат MO и използван." #: src/edframe.cpp:1884 msgid "No problems with the translation found." msgstr "Ðе Ñа открити проблеми в превода" #: src/edframe.cpp:1894 #, 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] "Преводът е готов за използване, но вÑе още има %d непреведен низ." msgstr[1] "Преводът е готов за използване, но вÑе още има %d непреведени низа." #: src/edframe.cpp:1899 msgid "The translation is ready for use." msgstr "Преводът е готов за използване." #: src/edframe.cpp:2294 #, c-format msgid "Poedit automatically fixed invalid content in the file “%sâ€." msgstr "PoEdit автоматично оправи невалидно Ñъдържание във файла „%s“." #: src/edframe.cpp:2299 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 needing work and correct " "them if necessary." msgstr "" "Файлът Ñъдържа дублиращи Ñе елементи, което е забранено във файлове PO и ще " "предотвратÑÑ‚ използването му. PoEdit решава този проблем, но е необходим " "преглед на преводите на вÑички елементи, отбелÑзани като мъглÑви и ако е " "необходимо да ги коригирате." #: src/edframe.cpp:2315 msgid "Language of the translation isn’t set." msgstr "ЛипÑва език на превода." #: src/edframe.cpp:2317 msgid "Set Language" msgstr "Задаване на език" #: src/edframe.cpp:2317 msgid "Set language" msgstr "Задаване на език" #. TRANSLATORS: This is shown underneath "Language of the translation isn't set (or ...is the same as source language)." #: src/edframe.cpp:2320 src/edframe.cpp:2336 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 "" "ПредложениÑта Ñа недоÑтъпни за неправилно конфигурирани езици. Други " "възможноÑти като формите за множеÑтвено чиÑло Ñъщо може да бъдат заÑегнати." #: src/edframe.cpp:2334 msgid "Language of the translation is the same as source language." msgstr "Езикът на превода е ÑъщиÑÑ‚ като Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐµÐ·Ð¸Ðº." #: src/edframe.cpp:2337 msgid "Fix Language" msgstr "ПромÑна на езика" #: src/edframe.cpp:2337 msgid "Fix language" msgstr "ПромÑна на езика" #: src/edframe.cpp:2354 msgid "" "This file has entries with plural forms, but doesn’t have Plural-Forms " "header configured." msgstr "" "Файлът Ñъдържа текÑтове Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ за множеÑтвено чиÑло, но заглавката „Plural-" "Forms“ липÑва." #: src/edframe.cpp:2358 msgid "" "Entries in this file have different plural forms count from what the file’s " "Plural-Forms header says" msgstr "" "Файлът Ñъдържа текÑтове Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ за множеÑтвено чиÑло, които не отговарÑÑ‚ на " "заглавката „Plural-Forms“" #: src/edframe.cpp:2367 msgid "Required header Plural-Forms is missing." msgstr "Задължителната заглавка „Plural-Forms“ липÑва." #: src/edframe.cpp:2371 #, c-format msgid "Syntax error in Plural-Forms header (\"%s\")." msgstr "Синтактична грешка в заглавката „Plural-Forms“ („%s“)." #: src/edframe.cpp:2383 msgid "Fix the Header" msgstr "Коригиране на заглавката" #: src/edframe.cpp:2383 msgid "Fix the header" 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". #: src/edframe.cpp:2401 #, c-format msgid "Plural forms expression used by the file is unusual for %s." msgstr "" "Изразът за формите на множеÑтвеното чиÑло във файла е необичаен за езика %s." #. TRANSLATORS: A verb, shown as action button with ""Plural forms expression used by the file is unusual for %s.")" #: src/edframe.cpp:2406 msgid "Review" msgstr "РецензиÑ" #: src/edframe.cpp:2450 msgid "Would you like to use English for source text?" msgstr "ИÑкате ли изходниÑÑ‚ текÑÑ‚ да бъде на английÑки език?" #: src/edframe.cpp:2452 #, c-format msgid "" "This file uses string IDs instead of source text. Poedit can load English " "texts from the “%s†file for you." msgstr "" "Във файла Ñе ползват идентификатори вмеÑто реален текÑÑ‚ като изходен " "материал. Poedit може да зареди английÑките текÑтове от файла „%s“, ако " "желаете." #. TRANSLATORS: Shown as action button when asking if the user wants to replace string IDs with English text; "load" as in "load from file" #: src/edframe.cpp:2454 msgid "Load English" msgstr "Зареждане на английÑките текÑтове" #: src/edframe.cpp:2555 src/export_html.cpp:103 #, c-format msgid "Translated: %d of %d (%d %%)" msgstr "Преведени: %d от %d (%d%%)" #: src/edframe.cpp:2559 src/export_html.cpp:105 #, c-format msgid "Remaining: %d" msgstr "ОÑтаващи: %d" #: src/edframe.cpp:2564 #, c-format msgid "%d error" msgid_plural "%d errors" msgstr[0] "%d грешка" msgstr[1] "%d грешки" #: src/edframe.cpp:2569 src/export_html.cpp:117 #, c-format msgid "%d entry" msgid_plural "%d entries" msgstr[0] "%d елемент" msgstr[1] "%d елемента" #: src/edframe.cpp:2598 msgid " (unsaved)" msgstr " (незапазен)" #: src/edframe.cpp:2639 msgid " (modified)" msgstr " (незапазен)" #: src/edframe.cpp:2707 src/edframe.cpp:2711 #, c-format msgid "Failed to update translation memory: %s" msgstr "Ðктуализирането на паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ е неуÑпешно: %s" #: src/edframe.cpp:2739 #, c-format msgid "The file “%s†couldn’t be saved." msgstr "Файлът „%s“ не може да бъде запазен." #: src/edframe.cpp:2849 src/resources/menus.xrc:252 msgid "Remove same-as-source translations" msgstr "Премахване на преводите, които Ñа еднакви Ñ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»Ð½Ð¸Ñ Ð½Ð¸Ð·" #: src/edframe.cpp:2851 msgid "" "Do you want to remove all translations that are idential to the source text?" msgstr "" "ИÑкате ли да премахнете вÑички преводи, които Ñа еднакви Ñ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»Ð½Ð¸Ñ Ð½Ð¸Ð·?" #: src/edframe.cpp:2852 msgid "" "This action will delete any translations that match the source text exactly. " "This cannot be undone." msgstr "" "Това дейÑтвие ще изтрие вÑички преводи, които Ñа абÑолютно еднакви Ñ " "Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»Ð½Ð¸Ñ Ð½Ð¸Ð·. ДейÑтвието е необратимо." #: src/edframe.cpp:2856 src/edframe.cpp:2883 msgid "Keep" msgstr "&Отказ" #: src/edframe.cpp:2856 msgid "Remove" msgstr "Премахване" #: src/edframe.cpp:2875 msgid "Purge deleted translations" msgstr "ПрочиÑтване на изтрити преводи" #: src/edframe.cpp:2877 msgid "Do you want to remove all translations that are no longer used?" msgstr "ИÑкате ли да премахнете вÑички преводи, които вече не Ñе използват?" #: src/edframe.cpp:2879 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 "" "Ðко продължите Ñ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñтването, вÑички преводи, обозначени като изтрити ще " "бъдат премахнати. Ще трÑбва да ги превеждате отново, ако в поÑледÑтвие бъдат " "върнати." #: src/edframe.cpp:2883 msgid "Purge" msgstr "ПрочиÑтване" #: src/edframe.cpp:2940 src/resources/menus.xrc:99 msgid "Copy from source text" msgstr "&Копиране Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚" #: src/edframe.cpp:2942 src/resources/menus.xrc:100 msgid "Copy from Source Text" msgstr "Копиране от Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚" #. TRANSLATORS: This is the key shortcut used in menus on Windows, some languages call them differently #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/edframe.cpp:2944 src/edframe.cpp:2951 src/edframe.cpp:2959 #: src/sidebar.cpp:360 src/sidebar.cpp:727 src/sidebar.cpp:752 #: src/sidebar.cpp:754 src/wx_translatable_strings.h:123 msgctxt "keyboard key" msgid "Ctrl+" msgstr "Ctrl+" #: src/edframe.cpp:2947 src/resources/menus.xrc:94 msgid "Clear translation" msgstr "И&зчиÑтване на превода" #: src/edframe.cpp:2949 src/resources/menus.xrc:95 msgid "Clear Translation" msgstr "И&зчиÑтване на преводa" #: src/edframe.cpp:2954 src/resources/comment.xrc:4 src/sidebar.cpp:246 msgid "Edit comment" msgstr "Редактиране на &коментар" #: src/edframe.cpp:2956 src/sidebar.cpp:249 msgid "Edit Comment" msgstr "Редактиране на &коментар" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 src/fileviewer.cpp:100 msgid "Code Occurrences" msgstr "Ð¡Ñ€ÐµÑ‰Ð°Ð½Ð¸Ñ Ð² кода" #. TRANSLATORS: Meaning occurrences of the string in source code #: src/edframe.cpp:2967 msgid "Code occurrences" msgstr "Ð¡Ñ€ÐµÑ‰Ð°Ð½Ð¸Ñ Ð² кода" #: src/edframe.cpp:3191 msgid "Hide Sidebar" msgstr "&Скриване Ñтранична лента" #: src/edframe.cpp:3193 src/resources/menus.xrc:214 msgid "Show Sidebar" msgstr "&Показване на Ñтранична лента" #: src/edframe.cpp:3224 msgid "Hide Status Bar" msgstr "Скриване на лента за ÑÑŠÑтоÑнието" #: src/edframe.cpp:3226 src/resources/menus.xrc:220 msgid "Show Status Bar" msgstr "Показване на лента за ÑÑŠÑтоÑнието" #: src/editing_area.cpp:354 msgid "String length in characters: translation | source" msgstr "Дължина на текÑта в брой знаци: превод | изходен текÑÑ‚" #: src/editing_area.cpp:357 msgid "String length in characters" msgstr "Дължина на текÑта в брой знаци" #: src/editing_area.cpp:404 src/editing_area.cpp:715 src/edlistctrl.cpp:663 #: src/edlistctrl.cpp:717 src/export_html.cpp:143 msgid "Source text" msgstr "Изходен текÑÑ‚" #: src/editing_area.cpp:426 src/editing_area.cpp:781 src/editing_area.cpp:797 msgid "Singular" msgstr "ЕдинÑтвено чиÑло" #: src/editing_area.cpp:431 src/editing_area.cpp:802 msgid "Plural" msgstr "МножеÑтвено чиÑло" #: src/editing_area.cpp:477 msgid "Translation" msgstr "Превод" #: src/editing_area.cpp:486 msgid "Pre-translated" msgstr "Предварителен превод" #: src/editing_area.cpp:509 msgid "Needs Work" msgstr "МъглÑв" #. TRANSLATORS: This indicates that the string's translation isn't final #. and has known problems. For example, it might be machine translated or #. fuzzy matched from an older string. The translation should be short and #. convey this. If it's problematic to translate it, "Needs review" is #. acceptable substitute, but note that the meaning is subtly different: #. "needs review" implies that somebody else should review the string after #. I am done with it (i.e. consider it good), while "needs work" implies I #. need to return to it and finish the translation. #: src/editing_area.cpp:509 msgid "Needs work" msgstr "МъглÑв" #: src/editing_area.cpp:566 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 базиран на този шаблон." #: src/editing_area.cpp:573 msgid "Create new translation" msgstr "Създаване на &нов превод" #: src/editing_area.cpp:574 msgid "Make a new translation from this POT file." msgstr "Създайте нов файл за превод от този файл POT." #. TRANSLATORS: Refers to symbolic ID of source text, i.e. when something like "button.label" is used instead of English text #: src/editing_area.cpp:713 src/edlistctrl.cpp:711 src/export_html.cpp:137 msgid "Source text ID" msgstr "Идентификатор на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚" #: src/editing_area.cpp:768 msgid "Everything" msgstr "Ð’Ñичко" #: src/editing_area.cpp:773 #, c-format msgid "Form %i" msgstr "Форма %i" #: src/editing_area.cpp:775 #, c-format msgid "Form %i (unused)" msgstr "Форма %i (не Ñе използва)" #: src/editing_area.cpp:786 msgid "Zero" msgstr "Ðула" #: src/editing_area.cpp:788 msgid "One" msgstr "Един" #: src/editing_area.cpp:790 msgid "Two" msgstr "Два" #: src/editing_area.cpp:804 msgid "Other" msgstr "Повече" #. TRANSLATORS: Tooltip on message context tag in the editing area, '%s' is the context text #: src/editing_area.cpp:988 #, c-format msgid "String context: %s" msgstr "КонтекÑÑ‚ на низа: %s" #. TRANSLATORS: Tooltip on string ID tag in the editing area, '%s' contains the ID #: src/editing_area.cpp:995 #, c-format msgid "String identifier: %s" msgstr "Идентификатор на низа: %s" #: src/editing_area.cpp:1003 #, c-format msgid "%s Format" msgstr "Формат на %s" #. TRANSLATORS: %s is replaced with language name, e.g. "PHP" or "C", so "PHP Format" etc." #: src/editing_area.cpp:1003 #, c-format msgid "%s format" msgstr "формат на %s" #: src/edlistctrl.cpp:668 src/edlistctrl.cpp:740 src/export_html.cpp:145 #, c-format msgid "Translation — %s" msgstr "Превод на — %s" #: src/edlistctrl.cpp:672 msgid "ID" msgstr "Идентификатор" #: src/edlistctrl.cpp:716 src/export_html.cpp:142 #, c-format msgid "Source text — %s" msgstr "Изходен текÑÑ‚ – %s" #: src/edlistctrl.cpp:739 src/export_html.cpp:146 msgid "unknown language" msgstr "неизвеÑтен език" #: src/errors.cpp:84 #, c-format msgid "Network error: %s (%d)" msgstr "Мрежова грешка: %s (%d)" #: src/errors.cpp:93 msgid "Unknown error" msgstr "ÐеизвеÑтна грешка" #: src/extractors/extractor.cpp:366 msgid "Failed to merge gettext catalogs." msgstr "ÐеуÑпешно обединÑване на каталози на gettext." #: src/fileviewer.cpp:132 msgid "Open in Editor" msgstr "ОтварÑне Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€" #: src/fileviewer.cpp:132 msgid "Open in editor" msgstr "ОтварÑне Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€" #: src/fileviewer.cpp:256 msgid "" "No information about this string’s occurrences in the source code is " "provided in the file." msgstr "" "Файлът не Ñъдържа Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° ÑрещаниÑта на този текÑÑ‚ в Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´." #: src/fileviewer.cpp:256 msgid "No usage information" msgstr "ÐÑма Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° начина на ползване" #: src/fileviewer.cpp:262 #, c-format msgid "%d code occurrence" msgid_plural "%d code occurrences" msgstr[0] "%d Ñрещане в кода" msgstr[1] "%d ÑÑ€ÐµÑ‰Ð°Ð½Ð¸Ñ Ð² кода" #: src/fileviewer.cpp:282 msgid "Source code not found" msgstr "ИзходниÑÑ‚ код не е наличен" #: src/fileviewer.cpp:283 msgid "" "Poedit cannot show source code where the string is used, because the file is " "either not available in the referenced location or it is a symbolic " "reference that doesn’t point to a real file." msgstr "" "Poedit не може да покаже Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´, където този текÑÑ‚ Ñе ползва, тъй като " "или файлът не е наличен на поÑоченото мÑÑто, или е Ñимволна връзка, коÑто не " "Ñочи към иÑтинÑки файл." #: src/fileviewer.cpp:297 msgid "File cannot be opened" msgstr "Файлът не може да бъде отворен" #: src/fileviewer.cpp:298 #, c-format msgid "Poedit was unable to open the “%s†file." msgstr "Poedit не може да отвори файла „%s“." #: src/findframe.cpp:83 src/findframe.cpp:101 src/findframe.cpp:300 #: src/resources/menus.xrc:142 msgid "Find" msgstr "ТърÑене…" #: src/findframe.cpp:102 src/findframe.cpp:300 msgid "Replace" msgstr "ЗамеÑтване" #. TRANSLATORS: Expander in Find window for additional options (case sensitive etc.) #: src/findframe.cpp:118 msgid "Options" msgstr "ÐаÑтройки" #: src/findframe.cpp:122 msgid "Ignore case" msgstr "Ðезачитане на региÑтъра" #: src/findframe.cpp:123 msgid "Wrap around" msgstr "Безконечно търÑене" #: src/findframe.cpp:124 msgid "Whole words only" msgstr "&Цели думи" #: src/findframe.cpp:125 msgid "Find in source texts" msgstr "ТърÑене в изходните низове" #: src/findframe.cpp:126 msgid "Find in translations" msgstr "ТърÑене в &преводите" #: src/findframe.cpp:127 msgid "Find in comments" msgstr "ТърÑене в &коментарите" #: src/findframe.cpp:149 msgid "Replace &All" msgstr "ЗамÑна на &вÑички" #: src/findframe.cpp:149 msgid "Replace &all" msgstr "ЗамÑна на &вÑички" #: src/findframe.cpp:150 msgid "&Replace" msgstr "&ЗаменÑне" #: src/findframe.cpp:151 msgid "< &Previous" msgstr "&< Предишен" #: src/findframe.cpp:152 msgid "&Next >" msgstr "Следващ &>" #: src/findframe.cpp:235 msgid "String to find" msgstr "ТърÑене" #: src/findframe.cpp:236 msgid "Replacement string" msgstr "ЗамеÑтване" #: src/gexecute.cpp:131 src/gexecute.cpp:146 src/gexecute.cpp:170 msgid "warning: " msgstr "предупреждение: " #: src/gexecute.cpp:171 msgid "error: " msgstr "грешка: " #. TRANSLATORS: placeholder/hint in language controls #: src/languagectrl.cpp:138 msgid "Language name or code" msgstr "Име или код на език" #: src/languagectrl.cpp:208 msgid "Translation Language" msgstr "Език" #: src/languagectrl.cpp:215 msgid "Language of the translation:" msgstr "Език на превода:" #: src/localazy_client.cpp:381 msgid "All strings" msgstr "Ð’Ñички низове" #: src/localazy_client.cpp:397 msgid "Couldn’t download Localazy project details." msgstr "ПодробноÑтите за проекта в Localazy не могат да бъдат Ñвалени." #: src/localazy_client.cpp:469 src/localazy_client.cpp:483 msgid "There was an error when uploading translations to Localazy." msgstr "Възникна грешка при изпращането на преводите към Localazy." #: src/localazy_gui.cpp:99 msgid "Projects" msgstr "Проекти" #. TRANSLATORS: %s is online service name, e.g. "Crowdin" or "Localazy" #: src/localazy_gui.cpp:111 #, c-format msgid "Learn more about %s" msgstr "Ðаучете повече отноÑно %s" #: src/localazy_gui.cpp:138 msgid "" "Localazy is a highly automated localization platform allowing anyone to " "translate their products and content into multiple languages easily." msgstr "" "Localazy е Ñилно автоматизирана ÑиÑтема за локализациÑ, коÑто дава " "възможноÑÑ‚ на вÑеки леÑно да преведе Ñвоите продукти и Ñъдържание на много " "езици." #: src/localazy_gui.cpp:233 msgid "Add Project" msgstr "ДобавÑне на проект" #: src/localazy_gui.cpp:233 msgid "Add project" msgstr "ДобавÑне на проект" #: src/manager.cpp:94 msgid "Poedit - Catalogs manager" msgstr "Poedit — управление на каталози" #: src/manager.cpp:139 src/prefsdlg.cpp:775 msgid "Edit…" msgstr "Редактиране…" #: src/manager.cpp:144 msgid "Create new translations project" msgstr "Създаване на нов проект за превод" #: src/manager.cpp:145 msgid "Delete the project" msgstr "Изтриване на проекта" #: src/manager.cpp:146 msgid "Edit the project" msgstr "Редактиране на проекта" #: src/manager.cpp:176 msgid "Update all" msgstr "&Ðктуализиране на вÑичко" #: src/manager.cpp:177 msgid "Update all catalogs in the project" msgstr "Ðктуализиране на вÑички каталози в проекта" #: src/manager.cpp:378 msgid "Total" msgstr "Ð’Ñичко" #: src/manager.cpp:379 msgid "Untrans" msgstr "Ðепреведени" #: src/manager.cpp:380 msgctxt "column/row header" msgid "Needs Work" msgstr "МъглÑв" #: src/manager.cpp:381 msgid "Errors" msgstr "Грешки" #: src/manager.cpp:382 msgid "Last modified" msgstr "ПоÑледна промÑна" #: src/manager.cpp:413 src/propertiesdlg.cpp:418 msgid "Select directory" msgstr "Избиране на папка" #: src/manager.cpp:433 msgid "Directories:" msgstr "Папки:" #: src/manager.cpp:503 msgid "" msgstr "<без име>" #: src/manager.cpp:539 #, c-format msgid "Do you want to delete project “%sâ€?" msgstr "ИÑкате ли да изтриете проекта „%s“?" #: src/manager.cpp:540 msgid "Delete project" msgstr "Изтриване на проект" #: src/manager.cpp:543 msgid "Deleting the project will not delete any translation files." msgstr "Изтриването на проекта нÑма да изтрие файловете му за превод." #: src/manager.cpp:571 msgid "Confirmation" msgstr "Потвърждение" #: src/manager.cpp:571 msgid "Update all catalogs in this project?" msgstr "ОбновÑване на вÑички каталози в проекта?" #: src/manager.cpp:572 msgid "Performs update from source code on all files in the project." msgstr "Извършва обновÑване от Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на вÑички файлове в проекта." #: src/manager.cpp:579 msgid "Updating project catalogs" msgstr "ОбновÑване на каталозите на проекта" #: src/menus.cpp:138 msgid "Check for Updates…" msgstr "Проверка за обновÑване…" #: src/menus.cpp:140 msgid "Catalogs Manager" msgstr "&Управление на каталози" #: src/menus.cpp:152 msgid "&Preferences…" msgstr "&ÐаÑтройки…" #: src/menus.cpp:167 src/resources/menus.xrc:81 src/resources/menus.xrc:402 #: src/wx_translatable_strings.h:102 msgid "&Edit" msgstr "&Редактиране" #: src/menus.cpp:187 src/wx_translatable_strings.h:118 msgid "Undo" msgstr "ОтмÑна" #: src/menus.cpp:188 src/wx_translatable_strings.h:113 msgid "Redo" msgstr "ПовтарÑне" #: src/menus.cpp:197 msgid "Paste and Match Style" msgstr "Вмъкване ÑÑŠÑ Ð·Ð°Ð¿Ð°Ð·Ð²Ð°Ð½Ðµ на Ñтила" #: src/menus.cpp:200 src/prefsdlg.cpp:964 src/wx_translatable_strings.h:100 msgid "Delete" msgstr "&Изтриване" #: src/menus.cpp:209 msgid "Spelling and Grammar" msgstr "ÐŸÑ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð¸ граматика" #: src/menus.cpp:211 msgid "Show Spelling and Grammar" msgstr "ÐŸÑ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð¸ граматика" #: src/menus.cpp:212 msgid "Check Document Now" msgstr "Проверка на документа" #: src/menus.cpp:214 msgid "Check Spelling While Typing" msgstr "Проверка на правопиÑа при въвеждане" #: src/menus.cpp:215 msgid "Check Grammar With Spelling" msgstr "Проверка на граматика и правопиÑ" #: src/menus.cpp:216 msgid "Correct Spelling Automatically" msgstr "Ðвтоматична ÐºÐ¾Ñ€ÐµÐºÑ†Ð¸Ñ Ð½Ð° правопиÑа" #: src/menus.cpp:219 msgid "Substitutions" msgstr "ЗамеÑтваниÑ" #: src/menus.cpp:221 msgid "Show Substitutions" msgstr "Показване на замеÑтваниÑ" #: src/menus.cpp:223 msgid "Smart Copy/Paste" msgstr "Умно копиране/поÑтавÑне" #: src/menus.cpp:224 msgid "Smart Quotes" msgstr "Умни кавички" #: src/menus.cpp:225 msgid "Smart Dashes" msgstr "Умни тирета" #: src/menus.cpp:226 msgid "Smart Links" msgstr "Умни връзки" #: src/menus.cpp:227 msgid "Text Replacement" msgstr "ЗамеÑтване на текÑÑ‚" #: src/menus.cpp:230 msgid "Transformations" msgstr "ТранÑформации" #: src/menus.cpp:232 msgid "Make Upper Case" msgstr "Към главни букви" #: src/menus.cpp:233 msgid "Make Lower Case" msgstr "Към малки букви" #: src/menus.cpp:234 msgid "Capitalize" msgstr "Ð’ главни букви" #: src/menus.cpp:237 msgid "Speech" msgstr "Говор" #: src/menus.cpp:239 msgid "Start Speaking" msgstr "Ðачало на изчитане" #: src/menus.cpp:240 msgid "Stop Speaking" msgstr "Край на изчитане" #: src/menus.cpp:243 src/resources/menus.xrc:163 src/resources/menus.xrc:412 msgid "&View" msgstr "&Изглед" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:249 msgid "Show Toolbar" msgstr "Показване на лентата Ñ Ð¸Ð½Ñтрументи" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:252 msgid "Customize Toolbar…" msgstr "ПерÑонализиране на лентата Ñ Ð¸Ð½Ñтрументи…" #. TRANSLATORS: This must be the same as OS X's translation of this View menu item #: src/menus.cpp:255 msgid "Enter Full Screen" msgstr "Ðа &цÑл екран" #: src/menus.cpp:262 src/menus.cpp:293 src/resources/menus.xrc:316 #: src/resources/menus.xrc:421 msgid "Window" msgstr "Прозорец" #: src/menus.cpp:263 msgid "Minimize" msgstr "Минимизиране" #: src/menus.cpp:264 msgid "Zoom" msgstr "Мащаб" #: src/menus.cpp:266 src/welcomescreen.cpp:220 src/welcomescreen.cpp:260 msgid "Welcome to Poedit" msgstr "Здравейте от Poedit" #: src/menus.cpp:271 msgid "Bring All to Front" msgstr "Ð’Ñички на преден план" #: src/prefsdlg.cpp:172 msgid "Information about the translator" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° преводача" #: src/prefsdlg.cpp:179 msgid "Name:" msgstr "Име:" #: src/prefsdlg.cpp:182 msgid "Your Name" msgstr "Вашето име" #: src/prefsdlg.cpp:184 msgid "Email:" msgstr "Електронна поща:" #: src/prefsdlg.cpp:187 msgid "you@example.com" msgstr "you@example.com" #: src/prefsdlg.cpp:190 msgid "" "Your name and email address are only used to set the Last-Translator header " "of GNU gettext files." msgstr "" "Името и електронната ви поща ще бъдат ползвани Ñамо за попълването на " "заглавката „Last-Translator“ на файловете на GNU gettext." #: src/prefsdlg.cpp:199 msgid "Editing" msgstr "Редактиране" #: src/prefsdlg.cpp:202 msgid "Automatically compile MO file when saving" msgstr "&автоматично компилиране до файл MO при запазване" #: src/prefsdlg.cpp:207 msgid "Check spelling" msgstr "Проверка на правопиÑа" #: src/prefsdlg.cpp:209 msgid "Always change focus to text input field" msgstr "полето за превод да е &винаги на фокуÑ" #: src/prefsdlg.cpp:211 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 "" "Ðе позволÑва на ÑпиÑъка Ñ Ð½Ð¸Ð·Ð¾Ð²Ðµ да приеме фокуÑ. Ðко е отметнато, трÑбва да " "използвате Ctrl+Ñтрелки за управление Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ð°Ñ‚Ð°, но така можете да " "въвеждате текÑÑ‚ веднага, без да Ñе налага да натиÑкате табулатора, за да " "промените фокуÑа." #: src/prefsdlg.cpp:219 msgid "Appearance" msgstr "Външен вид" #: src/prefsdlg.cpp:226 msgid "Use custom list font:" msgstr "шрифт за &ÑпиÑъка Ñ Ð½Ð¸Ð·Ð¾Ð²Ðµ" #: src/prefsdlg.cpp:229 msgid "Use custom text fields font:" msgstr "шрифт за &текÑтовите полета" #: src/prefsdlg.cpp:239 msgid "Change UI language" msgstr "СмÑна на &езика" #. TRANSLATORS: This is a note appended to "Check spelling" when running on older Windows versions #: src/prefsdlg.cpp:249 msgid "(requires Windows 8 or newer)" msgstr "(изиÑква Windows 8 или по-нов)" #: src/prefsdlg.cpp:352 msgid "General" msgstr "Общи" #: src/prefsdlg.cpp:374 msgid "Use translation memory" msgstr "Използване на &паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸" #: src/prefsdlg.cpp:384 msgid "Manage…" msgstr "Управление…" #. TRANSLATORS: Followed by "match translations within the file" or "pre-translate from TM" #: src/prefsdlg.cpp:391 msgid "When updating from sources" msgstr "При обновÑване от изходен код" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:394 msgid "fuzzy match within the file" msgstr "напаÑване на Ñходните текÑтове в рамките на файла" #. TRANSLATORS: Preceded by "When updating from sources" #: src/prefsdlg.cpp:396 msgid "pre-translate from TM" msgstr "предварителен превод от ПП" #: src/prefsdlg.cpp:412 msgid "" "Poedit can attempt to fill in new entries from only previous translations in " "the file or from your entire translation memory. Using the TM won’t be very " "effective if it’s near-empty, but it will get better as you add more " "translations to it." msgstr "" "Poedit може да Ñе опита да попълни новите запиÑи чрез вече ÑъщеÑтвуващите " "преводи във файла или като използва цÑлата памет за преводи. Използването на " "ПП нÑма да е оÑобено ефикаÑно, ако в Ð½ÐµÑ Ð½Ñма много запиÑ, но това ще Ñтава " "вÑе по-добре при попълването Ñ." #: src/prefsdlg.cpp:487 msgid "Stored translations:" msgstr "Брой запомнени преводи:" #: src/prefsdlg.cpp:488 msgid "Database size on disk:" msgstr "Големина на базата от данни:" #: src/prefsdlg.cpp:503 msgid "Import Translation Files…" msgstr "ВнаÑÑне на файлове за превод…" #: src/prefsdlg.cpp:503 msgid "Import translation files…" msgstr "ВнаÑÑне на файлове за превод…" #: src/prefsdlg.cpp:505 msgid "Import From TMX…" msgstr "ВнаÑÑне от TMX…" #: src/prefsdlg.cpp:505 msgid "Import from TMX…" msgstr "ВнаÑÑне от TMX…" #: src/prefsdlg.cpp:506 msgid "Export To TMX…" msgstr "ИзнаÑÑне като TMX…" #: src/prefsdlg.cpp:506 msgid "Export to TMX…" msgstr "ИзнаÑÑне като TMX…" #. TRANSLATORS: This is a button that deletes everything in the translation memory (i.e. clears/resets it). #: src/prefsdlg.cpp:509 src/prefsdlg.cpp:677 msgid "Reset" msgstr "ВъзÑтановÑване" #: src/prefsdlg.cpp:528 msgid "Select translation files to import" msgstr "Избиране на файлове за импорт" #: src/prefsdlg.cpp:561 msgid "Select TMX files to import" msgstr "Изберете файлове TMX за внаÑÑне" #: src/prefsdlg.cpp:564 src/prefsdlg.cpp:640 msgid "TMX Files" msgstr "Файлове TMX" #: src/prefsdlg.cpp:591 msgid "Importing translations…" msgstr "ВнаÑÑне на преводи…" #: src/prefsdlg.cpp:592 msgid "Importing translation memory failed." msgstr "Грешка при внаÑÑне на памет Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸." #: src/prefsdlg.cpp:606 #, c-format msgid "Importing from “%sâ€â€¦" msgstr "ВнаÑÑне от „%s“…" #. TRANSLATORS: %s is a (formatted) number here #: src/prefsdlg.cpp:624 #, c-format msgid "%s translation was imported." msgid_plural "%s translations were imported." msgstr[0] "%s превод беше внеÑен." msgstr[1] "%s превода бÑха внеÑени." #: src/prefsdlg.cpp:637 msgid "Export as…" msgstr "ИзнаÑÑне като…" #: src/prefsdlg.cpp:652 msgid "Exporting translations…" msgstr "ИзнаÑÑне на преводи…" #: src/prefsdlg.cpp:653 #, c-format msgid "Exporting translation memory to “%s†failed." msgstr "Грешка при изнаÑÑне на памет Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ от „%s“." #: src/prefsdlg.cpp:671 msgid "Reset translation memory" msgstr "ВъзÑтановÑване на паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸" #: src/prefsdlg.cpp:672 msgid "Are you sure you want to reset the translation memory?" msgstr "ÐаиÑтина ли желаете паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ да бъде нулирана?" #: src/prefsdlg.cpp:673 msgid "" "Resetting the translation memory will irrevocably delete all stored " "translations from it. You can’t undo this operation." msgstr "" "ВъзÑтановÑването на паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ñ‚Ðµ безвъзвратно ще изтрие вÑички " "запомнени от Ð½ÐµÑ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸. Тази Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ може да бъде отменена." #. TRANSLATORS: This is abbreviation of "Translation Memory" used in Preferences on macOS. #. Long text looks weird there, too short (like TM) too, but less so. "General" is about ideal #. length there. #: src/prefsdlg.cpp:708 msgid "TM" msgstr "Памет" #: src/prefsdlg.cpp:710 msgid "Translation Memory" msgstr "Памет Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸" #: src/prefsdlg.cpp:730 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 "" "ИнÑтрументът намира годни за превод низове във файлове Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код и ги " "извлича, за да бъдат преведени." #: src/prefsdlg.cpp:741 msgid "Custom Extractors:" msgstr "ПотребителÑки команди за извличане:" #: src/prefsdlg.cpp:741 msgid "Custom extractors:" msgstr "ПотребителÑки команди за извличане:" #: src/prefsdlg.cpp:827 msgid "GNU gettext" msgstr "GNU gettext" #: src/prefsdlg.cpp:833 msgid "" "Supports all programming languages recognized by GNU gettext tools (PHP, C/C+" "+, C#, Perl, Python, Java, JavaScript and others)." msgstr "" "Поддържа вÑички програмни езици, признати от инÑтрументите на GNU gettext " "(PHP, C/C++, C#, Perl, Python, Java, JavaScript и други)." #: src/prefsdlg.cpp:957 msgid "Delete extractor" msgstr "Изтриване на инÑтрумент за извличане" #: src/prefsdlg.cpp:958 #, c-format msgid "Are you sure you want to delete the “%s†extractor?" msgstr "ÐаиÑтина ли желаете да изтриете инÑтрументът за извличане „%s“?" #: src/prefsdlg.cpp:996 msgid "Extractors" msgstr "Извличане" #: src/prefsdlg.cpp:1054 msgid "Accounts" msgstr "Профили" #: src/prefsdlg.cpp:1074 msgid "Automatically check for updates" msgstr "автоматична &проверка за обновÑване" #: src/prefsdlg.cpp:1077 msgid "Include beta versions" msgstr "&включително beta-верÑии" #: src/prefsdlg.cpp:1080 msgid "" "Beta versions contain the latest new features and improvements, but may be a " "bit less stable." msgstr "" "ИзданиÑта бета Ñъдържат поÑледните нови възможноÑти и подобрениÑ, но може да " "бъдат по-малко Ñтабилни." #: src/prefsdlg.cpp:1109 msgid "Updates" msgstr "ОбновÑване" #: src/prefsdlg.cpp:1127 msgid "" "These settings affect internal formatting of PO files. Adjust them if you " "have specific requirements e.g. because of version control." msgstr "" "Тези наÑтройки влиÑÑÑ‚ върху Ð²ÑŠÑ‚Ñ€ÐµÑˆÐ½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ на файловете PO. ÐаÑтройте ги, " "ако имате конкретни изиÑкваниÑ, например, заради контрол на верÑиите." #: src/prefsdlg.cpp:1131 msgid "Line endings:" msgstr "&Ñимвол за край на ред:" #: src/prefsdlg.cpp:1134 msgid "Unix (recommended)" msgstr "Unix (препоръчително)" #: src/prefsdlg.cpp:1135 msgid "Windows" msgstr "Windows" #. TRANSLATORS: Followed by text control for entering number; wraps text at given width #: src/prefsdlg.cpp:1139 msgid "Wrap at:" msgstr "пренаÑÑне &на:" #: src/prefsdlg.cpp:1150 msgid "Preserve formatting of existing files" msgstr "&запазване на формата на ÑъщеÑтвуващите файлове" #: src/prefsdlg.cpp:1202 msgid "Advanced" msgstr "Разширени" #: src/prefsdlg.cpp:1230 msgid "Settings" msgstr "ÐаÑтройки" #: src/pretranslate.cpp:97 msgid "Preparing strings…" msgstr "ПодготвÑне на текÑтовете…" #: src/pretranslate.cpp:165 msgid "Pre-translating from translation memory…" msgstr "Предварителен превод чрез паметта за преводи…" #: src/pretranslate.cpp:176 #, c-format msgid "Pre-translated %u string" msgid_plural "Pre-translated %u strings" msgstr[0] "Предварително преведен %u низ" msgstr[1] "Предварително преведени %u низа" #: src/pretranslate.cpp:194 msgid "Pre-translating…" msgstr "Предварителен превод…" #: src/pretranslate.cpp:203 #, c-format msgid "%d entry was pre-translated." msgid_plural "%d entries were pre-translated." msgstr[0] "%d Ð·Ð°Ð¿Ð¸Ñ Ðµ предварително преведен." msgstr[1] "%d запиÑа Ñа предварително преведени." #: src/pretranslate.cpp:209 msgid "" "The translations were marked as needing work, because they may be " "inaccurate. You should review them for correctness." msgstr "" "Преводите Ñа отбелÑзани като мъглÑви, защото може да Ñа неточни. ТрÑбва да " "бъдат проверени." #: src/pretranslate.cpp:212 msgid "Exact matches from TM" msgstr "Точни ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¾Ñ‚ ПП" #: src/pretranslate.cpp:213 msgid "Approximate matches from TM" msgstr "Приблизителни ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¾Ñ‚ ПП" #: src/pretranslate.cpp:217 msgid "No entries could be pre-translated." msgstr "ÐÑма запиÑи, които могат да бъдат предварително преведени." #: src/pretranslate.cpp:218 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 "" "Паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ не Ñъдържа низове Ñ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾ Ñъдържание. Ð¢Ñ Ðµ ефективна " "Ñамо за полу-автоматичен превод Ñлед като Ñе е обучила от файловете, които " "ръчно превеждате." #: src/pretranslate.cpp:247 msgid "Cannot pre-translate without source text." msgstr "Предварителен превод не може да бъде извършен без изходен текÑÑ‚." #. TRANSLATORS: This is a somewhat common term describing the action where #. you apply the translation memory and/or machine translation to all of the #. strings you're translating as the first step, followed by correcting, #. improving etc., i.e. actually translating the strings. This may be tricky #. to express in other languages as simply as in English, but please try to #. keep it similarly concise. Please try to avoid, if possible, describing it #. as "auto-translation" and similar, because such terminology would mislead #. some users into thinking it's all that needs to be done (spoken from #. experience). "Pre-translate" nicely expresses that it's only the step done #. *before* actual translation. #: src/pretranslate.cpp:248 src/pretranslate.cpp:263 src/pretranslate.cpp:272 #: src/pretranslate.cpp:281 src/pretranslate.cpp:307 msgid "Pre-translate" msgstr "Предварителен превод" #: src/pretranslate.cpp:252 msgid "" "Pre-translation requires that source text is available. It doesn’t work if " "only IDs without the actual text are used." msgstr "" "Предварителените преводи Ñе нуждаÑÑ‚ от иÑтинÑки изходен текÑÑ‚. Те не могат " "да работÑÑ‚, ако във файла има Ñамо текÑтови идентификатори." #: src/pretranslate.cpp:262 msgid "Cannot pre-translate from unknown language." msgstr "Ðе може да Ñе извърши предварителен превод от непознат език." #: src/pretranslate.cpp:267 msgid "" "Pre-translation requires that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "За извършването на предварителен превод трÑбва да е ÑÑно кой е изходниÑÑ‚ " "език на текÑта. Poedit не може да го разпознае в този файл." #: src/pretranslate.cpp:275 msgid "Only fill in exact matches" msgstr "Попълване Ñамо на точните ÑъвпадениÑ" #: src/pretranslate.cpp:276 msgid "" "By default, inaccurate results are also included, but marked as needing " "work. Check this option to only include perfect matches." msgstr "" "По подразбиране, неточните резултати Ñъщо биват добавÑни, но отбелÑзани като " "мъглÑви. Отметнете, за да бъдат добавÑни Ñамо точните ÑъвпадениÑ." #: src/pretranslate.cpp:277 msgid "Don’t mark exact matches as needing work" msgstr "Точните ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð´Ð° не бъдат отбелÑзвани като мъглÑви" #: src/pretranslate.cpp:278 msgid "" "Only enable if you trust the quality of your TM. By default, all matches " "from the TM are marked as needing work and should be reviewed before use." msgstr "" "Отметнете, Ñамо ако вÑрвате в качеÑтвото на паметта за преводи. По " "подразбиране вÑички ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¾Ñ‚ ПП Ñе отбелÑзват като мъглÑви и трÑбва да " "бъдат проверени преди употреба." #: src/pretranslate.cpp:283 msgid "" "Pre-translation automatically finds exact or fuzzy matches for untranslated " "strings in the translation memory and fills in their translations." msgstr "" "ПредварителниÑÑ‚ превод намира автоматично точни или мъглÑви ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð·Ð° " "непреведените низове в паметта за преводи и попълва преводите им." #: src/progress_ui.cpp:172 src/wx_translatable_strings.h:151 msgid "Error: " msgstr "Грешка: " #: src/progress_ui.cpp:176 #, c-format msgid "%d error occurred:" msgid_plural "%d errors occurred:" msgstr[0] "Възникна %d грешка:" msgstr[1] "Възникнаха %d грешки:" #: src/progress_ui.cpp:284 msgid "An error occurred." msgstr "Възникна грешка." #: src/progress_ui.cpp:290 #, c-format msgid "%d error occurred." msgid_plural "%d errors occurred." msgstr[0] "Възникна %d грешка." msgstr[1] "Възникнаха %d грешки." #: src/progress_ui.cpp:437 msgid "Cancelling…" msgstr "Отказване…" #: src/propertiesdlg.cpp:307 msgid "Drag Folders or Files Here" msgstr "ПуÑнете папки или файлове тук" #: src/propertiesdlg.cpp:307 msgid "Drag folders or files here" msgstr "ПуÑнете папки или файлове тук" #: src/propertiesdlg.cpp:411 msgid "Add Folders…" msgstr "ДобавÑне на папки…" #: src/propertiesdlg.cpp:411 msgid "Add folders…" msgstr "ДобавÑне на папки…" #: src/propertiesdlg.cpp:412 msgid "Add Files…" msgstr "ДобавÑне на файлове…" #: src/propertiesdlg.cpp:412 msgid "Add files…" msgstr "ДобавÑне на файлове…" #: src/propertiesdlg.cpp:414 msgid "Add Wildcard…" msgstr "ДобавÑне на замеÑтващ знак…" #: src/propertiesdlg.cpp:414 msgid "Add wildcard…" msgstr "ДобавÑне на замеÑтващ знак…" #. TRANSLATORS: Used on macOS, should match standard translation of this in other apps (incl. name of the Finder app) #: src/propertiesdlg.cpp:485 msgid "Reveal in Finder" msgstr "Показване във Finder" #. TRANSLATORS: Used on Windows to show in the Explorer file manager, should match standard translation of "Explorer" #: src/propertiesdlg.cpp:488 msgid "Show in Explorer" msgstr "Показване в Explorer" #: src/propertiesdlg.cpp:490 msgid "Show in Folder" msgstr "Показване в папката" #: src/propertiesdlg.cpp:521 msgid "Paths" msgstr "Пътища" #: src/propertiesdlg.cpp:532 msgid "Excluded paths" msgstr "Пренебрегнати пътища" #: src/propertiesdlg.cpp:549 msgid "Advanced extraction settings" msgstr "Разширени наÑтройки за извличане" #: src/propertiesdlg.cpp:555 msgid "Extract notes for translators from:" msgstr "Извличане на бележки към преводачите от:" #: src/propertiesdlg.cpp:557 msgid "Comments prefixed with:" msgstr "ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð½Ð° &коментарите:" #: src/propertiesdlg.cpp:566 msgid "All comments" msgstr "Ð’Ñички коментари" #: src/propertiesdlg.cpp:569 msgid "Additional xgettext flags:" msgstr "Допълнителни флагове към xgettext:" #: src/propertiesdlg.cpp:709 msgid "Additional keywords" msgstr "Допълнителни ключови думи" #: src/propertiesdlg.cpp:740 msgid "Name of the project the translation is for" msgstr "име и верÑиÑ" #: src/propertiesdlg.cpp:741 msgid "Team name and email address or URL" msgstr "Име и електронна поща на екипа или адреÑ:" #: src/propertiesdlg.cpp:742 msgid "e.g. nplurals=2; plural=(n > 1);" msgstr "например nplurals=2; plural=(n > 1);" #: src/propertiesdlg.cpp:795 msgid "UTF-8 (recommended)" msgstr "UTF-8 (препоръчително)" #: src/propertiesdlg.cpp:976 msgid "Please save the file first. This section cannot be edited until then." msgstr "МолÑ, първо запазете файла. Тези наÑтройки ще Ñа неактивни дотогава." #: src/qa_checks.cpp:63 msgid "Placeholders correctness" msgstr "СъответÑтвие на замеÑтителите" #: src/qa_checks.cpp:118 #, c-format msgid "Placeholder “%s†is missing from translation." msgstr "ЗамеÑтителÑÑ‚ „%s“ липÑва в превода." #: src/qa_checks.cpp:130 #, c-format msgid "Superfluous placeholder “%s†that isn’t in source text." msgstr "Излшен замеÑтител „%s“, който не приÑÑŠÑтва в Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚." #: src/qa_checks.cpp:166 msgid "Plural form translations" msgstr "Преводи на множеÑтвени чиÑла" #: src/qa_checks.cpp:187 msgid "Not all plural forms are translated." msgstr "Ðе вÑички форма за множеÑтвено чиÑло Ñа преведени." #: src/qa_checks.cpp:199 msgid "Inconsistent upper/lower case" msgstr "ÐеÑъответÑтвие на главни/малки букви" #: src/qa_checks.cpp:215 msgid "The translation should start as a sentence." msgstr "Преводът би трÑбвало да започва като изречение." #: src/qa_checks.cpp:223 msgid "The translation should start with a lowercase character." msgstr "Преводът би трÑбвало да започва Ñ Ð¼Ð°Ð»ÐºÐ° буква." #: src/qa_checks.cpp:241 msgid "Inconsistent whitespace" msgstr "ÐеÑъответÑтващи интервали и празни меÑта" #: src/qa_checks.cpp:255 msgid "The translation doesn’t start with a space." msgstr "ЛипÑва интервал в началото на превода." #: src/qa_checks.cpp:261 msgid "The translation starts with a space, but the source text doesn’t." msgstr "Преводът започва Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð», но изходниÑÑ‚ низ не." #: src/qa_checks.cpp:267 msgid "The translation is missing a newline at the end." msgstr "ЛипÑва нов ред в ÐºÑ€Ð°Ñ Ð½Ð° превода." #: src/qa_checks.cpp:273 msgid "The translation ends with a newline, but the source text doesn’t." msgstr "Преводът завършва Ñ Ð½Ð¾Ð² ред, но изходниÑÑ‚ низ не." #: src/qa_checks.cpp:279 msgid "The translation is missing a space at the end." msgstr "ЛипÑва интервал в ÐºÑ€Ð°Ñ Ð½Ð° превода." #: src/qa_checks.cpp:285 msgid "The translation ends with a space, but the source text doesn’t." msgstr "Преводът завършва Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð», но изходниÑÑ‚ низ не." #: src/qa_checks.cpp:300 msgid "Punctuation checks" msgstr "Проверки на пунктуациÑта" #: src/qa_checks.cpp:365 #, c-format msgid "The translation should end with “%sâ€." msgstr "Преводът би трÑбвло да завършва Ñ â€ž%s“." #: src/qa_checks.cpp:377 #, c-format msgid "The translation should not end with “%sâ€." msgstr "Преводът не би трÑбвало да завършва Ñ â€ž%s“." #: src/qa_checks.cpp:398 #, c-format msgid "The translation ends with “%sâ€, but the source text ends with “%sâ€." msgstr "Преводът завършва Ñ â€ž%s“, а изходниÑÑ‚ низ Ñ â€ž%s“." #: src/recent_files.cpp:216 msgid "Cloud" msgstr "Облак" #: src/recent_files.cpp:397 msgid "Clear Menu" msgstr "ИзчиÑтване на менюто" #: src/recent_files.cpp:397 msgid "Clear menu" msgstr "ИзчиÑтване на менюто" #: src/resources/comment.xrc:10 msgid "Comment:" msgstr "&Коментар:" #: src/resources/comment.xrc:33 msgid "Update" msgstr "ОбновÑване" #: src/resources/comment.xrc:48 src/wx_translatable_strings.h:100 msgid "&Delete" msgstr "&Изтриване" #: src/resources/comment.xrc:49 msgid "Delete the comment" msgstr "Изтриване на коментара" #: src/resources/manager.xrc:4 msgid "Edit project" msgstr "Редактиране на проект" #: src/resources/manager.xrc:9 msgid "Project name:" msgstr "Име на проекта:" #: src/resources/manager.xrc:39 msgid "Browse" msgstr "Избиране" #: src/resources/manager.xrc:41 msgid "Add directory to the list" msgstr "ДобавÑне на папка към ÑпиÑъка" #: src/resources/manager.xrc:55 src/wx_translatable_strings.h:108 msgid "OK" msgstr "Д&обре" #: src/resources/menus.xrc:5 src/resources/menus.xrc:343 #: src/wx_translatable_strings.h:104 msgid "&File" msgstr "&Файл" #: src/resources/menus.xrc:8 src/resources/menus.xrc:346 msgid "&New…" msgstr "&Ðов…" #: src/resources/menus.xrc:12 src/resources/menus.xrc:350 msgid "New from &POT/PO file…" msgstr "Ðов от &файл POT/PO…" #: src/resources/menus.xrc:13 src/resources/menus.xrc:351 msgid "New From &POT/PO File…" msgstr "Ðов от &файл POT/PO…" #: src/resources/menus.xrc:17 src/resources/menus.xrc:355 #: src/wx_translatable_strings.h:109 msgid "&Open…" msgstr "&ОтварÑне…" #: src/resources/menus.xrc:21 src/resources/menus.xrc:359 msgid "Open Recent" msgstr "ОтварÑне на поÑледните файлове" #: src/resources/menus.xrc:22 src/resources/menus.xrc:360 msgid "Open recent" msgstr "ОтварÑне на Ñкорошен файл" #: src/resources/menus.xrc:25 src/resources/menus.xrc:363 msgid "Open cloud translation…" msgstr "ОтварÑне на Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´â€¦" #: src/resources/menus.xrc:26 src/resources/menus.xrc:364 msgid "Open Cloud Translation…" msgstr "ОтварÑне на Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´â€¦" #: src/resources/menus.xrc:30 src/resources/menus.xrc:368 msgid "&Start window" msgstr "&Ðачален прозорец" #: src/resources/menus.xrc:31 src/resources/menus.xrc:369 msgid "&Start Window" msgstr "&Ðачален прозорец" #: src/resources/menus.xrc:35 src/resources/menus.xrc:374 msgid "Catalogs &manager" msgstr "&Управление на каталози" #: src/resources/menus.xrc:36 src/resources/menus.xrc:375 msgid "Catalogs &Manager" msgstr "&Управление на каталози" #: src/resources/menus.xrc:40 src/resources/menus.xrc:379 #: src/wx_translatable_strings.h:96 msgid "&Close" msgstr "&ЗатварÑне" #: src/resources/menus.xrc:44 src/wx_translatable_strings.h:115 msgid "&Save" msgstr "&Запазване" #: src/resources/menus.xrc:48 msgid "Save &as…" msgstr "Запазване &като…" #: src/resources/menus.xrc:49 msgid "Save &As…" msgstr "Запазване &като…" #: src/resources/menus.xrc:54 msgid "Compile to MO…" msgstr "Компилиране до файл на MO…" #: src/resources/menus.xrc:57 msgid "E&xport to HTML…" msgstr "Из&наÑÑне като HTML…" #: src/resources/menus.xrc:62 src/resources/menus.xrc:383 msgid "Check for updates…" msgstr "Проверка за обновÑване…" #: src/resources/menus.xrc:65 src/resources/menus.xrc:386 msgid "Settings…" msgstr "ÐаÑтройки…" #: src/resources/menus.xrc:69 src/resources/menus.xrc:390 #: src/wx_translatable_strings.h:112 msgid "&Preferences" msgstr "&ÐаÑтройки" #: src/resources/menus.xrc:76 src/resources/menus.xrc:397 msgid "E&xit" msgstr "&Изход" #: src/resources/menus.xrc:77 src/resources/menus.xrc:398 #: src/wx_translatable_strings.h:103 msgid "Quit" msgstr "Изход" #: src/resources/menus.xrc:104 msgid "Copy from singular" msgstr "Копиране от ед. ч." #: src/resources/menus.xrc:105 msgid "Copy From Singular" msgstr "Копиране от ед. ч." #: src/resources/menus.xrc:110 msgid "Translation needs &work" msgstr "Преводът е &мъглÑв" #: src/resources/menus.xrc:111 msgid "Translation Needs &Work" msgstr "Преводът е &мъглÑв" #: src/resources/menus.xrc:116 msgid "Edit &comment" msgstr "Редактиране на &коментар" #: src/resources/menus.xrc:117 msgid "Edit &Comment" msgstr "Редактиране на &коментар" #. TRANSLATORS: as in: translation suggestions, suggested translations; should be similarly short #: src/resources/menus.xrc:122 src/sidebar.cpp:537 msgid "Suggestions" msgstr "ПредложениÑ" #: src/resources/menus.xrc:125 src/resources/menus.xrc:144 msgid "&Find…" msgstr "&ТърÑене…" #: src/resources/menus.xrc:130 msgid "Replace…" msgstr "&ЗаменÑне…" #: src/resources/menus.xrc:134 msgid "Find next" msgstr "&Следващо Ñъвпадение" #: src/resources/menus.xrc:138 msgid "Find previous" msgstr "&Предишно Ñъвпадение" #: src/resources/menus.xrc:148 msgid "Find and Replace…" msgstr "ТърÑене и замÑна…" #: src/resources/menus.xrc:152 msgid "Find Next" msgstr "&Следващо Ñъвпадение" #: src/resources/menus.xrc:156 msgid "Find Previous" msgstr "&Предишно Ñъвпадение" #: src/resources/menus.xrc:165 msgid "Show string &ID" msgstr "Показване на &идентификатора на текÑта" #: src/resources/menus.xrc:166 msgid "Show String &ID" msgstr "Показване на &идентификатора на текÑта" #: src/resources/menus.xrc:170 msgid "Show warnings" msgstr "Показване на предупреждениÑта" #: src/resources/menus.xrc:171 msgid "Show Warnings" msgstr "Показване на предупреждениÑта" #: src/resources/menus.xrc:176 msgid "Sort by &file order" msgstr "Сортиране по &файл" #: src/resources/menus.xrc:177 msgid "Sort by &File Order" msgstr "Сортиране по &файл" #: src/resources/menus.xrc:181 msgid "Sort by &source" msgstr "Сортиране по &изходен текÑÑ‚" #: src/resources/menus.xrc:182 msgid "Sort by &Source" msgstr "Подреждане по &изходен текÑÑ‚" #: src/resources/menus.xrc:186 msgid "Sort by &translation" msgstr "Сортиране по &превод" #: src/resources/menus.xrc:187 msgid "Sort by &Translation" msgstr "Сортиране по &превод" #: src/resources/menus.xrc:192 msgid "&Group by context" msgstr "&Групиране по контекÑÑ‚" #: src/resources/menus.xrc:193 msgid "&Group By Context" msgstr "&Групиране по контекÑÑ‚" #: src/resources/menus.xrc:197 msgid "Entries with errors first" msgstr "Преводите Ñ Ð³Ñ€ÐµÑˆÐºÐ¸ първи" #: src/resources/menus.xrc:198 msgid "Entries with Errors First" msgstr "Преводите Ñ Ð³Ñ€ÐµÑˆÐºÐ¸ първи" #: src/resources/menus.xrc:202 msgid "&Untranslated entries first" msgstr "Ð&епреведените първи" #: src/resources/menus.xrc:203 msgid "&Untranslated Entries First" msgstr "Ð&епреведените първи" #: src/resources/menus.xrc:208 msgid "&Show code occurrences" msgstr "Показване на &ÑрещаниÑта в кода" #: src/resources/menus.xrc:209 msgid "&Show Code Occurrences" msgstr "Показване на &ÑрещаниÑта в кода" #: src/resources/menus.xrc:213 msgid "Show sidebar" msgstr "&Показване на Ñтранична лента" #: src/resources/menus.xrc:219 msgid "Show status bar" msgstr "Показване на лента за ÑÑŠÑтоÑнието" #: src/resources/menus.xrc:227 src/resources/menus.xrc:415 msgid "&Translation" msgstr "&Превод" #: src/resources/menus.xrc:230 msgid "&Update from source code" msgstr "ОбновÑване от &Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´" #: src/resources/menus.xrc:231 msgid "&Update from Source Code" msgstr "ОбновÑване от &Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´" #: src/resources/menus.xrc:238 msgid "Sync with Crowdin" msgstr "Синхронизиране Ñ Crowdin" #: src/resources/menus.xrc:242 src/resources/menus.xrc:243 msgid "Pre-&translate…" msgstr "Предварителен &превод…" #: src/resources/menus.xrc:247 msgid "&Validate translations" msgstr "&Валидиране на превода" #: src/resources/menus.xrc:248 msgid "&Validate Translations" msgstr "&Валидиране на превода" #: src/resources/menus.xrc:253 msgid "Remove Same-as-Source Translations" msgstr "Премахване на преводите, които Ñа еднакви Ñ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»Ð½Ð¸Ñ Ð½Ð¸Ð·" #: src/resources/menus.xrc:256 msgid "&Purge deleted translations" msgstr "&ПрочиÑтване на изтрити преводи" #: src/resources/menus.xrc:257 msgid "&Purge Deleted Translations" msgstr "&ПрочиÑтване на изтрити преводи" #: src/resources/menus.xrc:261 msgid "&Properties…" msgstr "&СвойÑтва…" #: src/resources/menus.xrc:268 src/resources/menus.xrc:418 msgid "&Go" msgstr "О&бхождане" #: src/resources/menus.xrc:271 msgid "&Done and next" msgstr "&Готово, към ÑледващиÑ" #: src/resources/menus.xrc:272 msgid "&Done and Next" msgstr "&Готово, към ÑледващиÑ" #: src/resources/menus.xrc:278 msgid "Previously edited" msgstr "ПоÑледно променÑни" #: src/resources/menus.xrc:279 msgid "Previously Edited" msgstr "ПоÑледно променÑни" #: src/resources/menus.xrc:284 msgid "&Previous translation" msgstr "&Предишен низ" #: src/resources/menus.xrc:285 msgid "&Previous Translation" msgstr "&Предишен низ" #: src/resources/menus.xrc:289 msgid "&Next translation" msgstr "&Следващ низ" #: src/resources/menus.xrc:290 msgid "&Next Translation" msgstr "&Следващ низ" #: src/resources/menus.xrc:294 msgid "P&revious unfinished" msgstr "П&редишен незавършен" #: src/resources/menus.xrc:295 msgid "P&revious Unfinished" msgstr "П&редишен незавършен" #: src/resources/menus.xrc:299 msgid "Ne&xt unfinished" msgstr "С&ледващ незавършен" #: src/resources/menus.xrc:300 msgid "Ne&xt Unfinished" msgstr "С&ледващ незавършен" #: src/resources/menus.xrc:305 msgid "Previous plural form" msgstr "Предишна форма за мн. ч." #: src/resources/menus.xrc:306 msgid "Previous Plural Form" msgstr "Предишна форма за мн. ч." #: src/resources/menus.xrc:310 msgid "Next plural form" msgstr "Следващата форма за мн. ч." #: src/resources/menus.xrc:311 msgid "Next Plural Form" msgstr "Следващата форма за мн. ч." #: src/resources/menus.xrc:320 src/resources/menus.xrc:425 msgid "&Online help" msgstr "Он&лайн помощ" #: src/resources/menus.xrc:321 src/resources/menus.xrc:426 msgid "&Online Help" msgstr "Он&лайн помощ" #: src/resources/menus.xrc:327 src/resources/menus.xrc:432 msgid "&GNU gettext manual" msgstr "&РъководÑтво на GNU gettext" #: src/resources/menus.xrc:328 src/resources/menus.xrc:433 msgid "&GNU gettext Manual" msgstr "&РъководÑтво на GNU gettext" #: src/resources/menus.xrc:332 src/resources/menus.xrc:437 msgid "&About Poedit" msgstr "&ОтноÑно Poedit" #: src/resources/menus.xrc:333 src/resources/menus.xrc:334 #: src/resources/menus.xrc:438 src/resources/menus.xrc:439 msgid "&About" msgstr "&ОтноÑно" #: src/resources/prefs.xrc:4 msgid "Extractor setup" msgstr "ÐаÑтройка на извличане" #: src/resources/prefs.xrc:27 msgid "List of extensions separated by semicolons (e.g. *.cpp;*.h):" msgstr "СпиÑък на разширениÑта разделени Ñ â€ž;“ (напр. *.cpp; *.h):" #: src/resources/prefs.xrc:43 msgid "Invocation:" msgstr "Извикване:" #: src/resources/prefs.xrc:47 msgid "Command to extract translations:" msgstr "Команда за извличане на низове:" #: src/resources/prefs.xrc:61 msgid "" "This is the command used to launch the extractor.\n" "%o expands to the name of output file, %K to list\n" "of keywords, %F to list of input files,\n" "%C to charset flag (see below)." msgstr "" "Това е командата за изпълнение на извличаниÑ.\n" "%o Ñе замеÑтва Ñ Ð¸Ð¼ÐµÑ‚Ð¾ на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»,\n" "%K – ÑÑŠÑ ÑпиÑъка от ключови думи,\n" "%F – ÑÑŠÑ ÑпиÑъка от входните файлове,\n" "%C – ÑÑŠÑ Ð·Ð½Ð°ÐºÐ¾Ð²Ð¸Ñ Ð½Ð°Ð±Ð¾Ñ€ на анализатора (виж по-долу)." #: src/resources/prefs.xrc:70 msgid "An item in keywords list:" msgstr "Елемент от ÑпиÑъка Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¸ думи:" #: src/resources/prefs.xrc:84 msgid "" "This will be attached to the command line once\n" "for each keyword. %k expands to the keyword." msgstr "" "Това ще бъде добавено по веднъж за вÑÑка ключова дума\n" "към ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´. %k Ñе замеÑтва Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð°Ñ‚Ð° дума." #: src/resources/prefs.xrc:93 msgid "An item in input files list:" msgstr "Елемент от ÑпиÑъка Ñ Ð²Ñ…Ð¾Ð´Ñщи файлове:" #: src/resources/prefs.xrc:107 #, c-format msgid "" "This will be attached to the command line once\n" "for each input file. %f expands to the filename." msgstr "" "Това ще бъде добавено по веднъж за вÑеки входÑщ файл\n" "към ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´. %f Ñе замеÑтва Ñ Ð¸Ð¼ÐµÑ‚Ð¾ на файла." #: src/resources/prefs.xrc:116 src/resources/properties.xrc:124 msgid "Source code charset:" msgstr "Знаков набор на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´:" #: src/resources/prefs.xrc:130 #, c-format msgid "" "This will be attached to the command line\n" "only if source code charset was given. %c expands to charset value." msgstr "" "Това ще бъде добавено към ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´, Ñамо ако\n" "е зададен знаков набор за Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. %c Ñе замеÑтва ÑÑŠÑ Ð·Ð½Ð°ÐºÐ¾Ð²Ð¸Ñ Ð½Ð°Ð±Ð¾Ñ€." #: src/resources/properties.xrc:4 src/resources/properties.xrc:153 msgid "Translation Properties" msgstr "СвойÑтва на превода" #: src/resources/properties.xrc:19 msgid "Project name and version:" msgstr "Име и верÑÐ¸Ñ Ð½Ð° проекта:" #: src/resources/properties.xrc:34 msgid "Language team:" msgstr "Екип преводачи:" #: src/resources/properties.xrc:66 msgid "Plural forms:" msgstr "Форми за множеÑтвено чиÑло:" #: src/resources/properties.xrc:73 msgid "Use default rules for this language" msgstr "Според &Ñтандартните правила" #: src/resources/properties.xrc:82 msgid "Use custom expression" msgstr "Специфичен &израз" #: src/resources/properties.xrc:98 msgid "Learn about plural forms" msgstr "Повече за множеÑтвените форми" #: src/resources/properties.xrc:112 msgid "Charset:" msgstr "Знаков набор:" #: src/resources/properties.xrc:138 msgid "Advanced Extraction Settings…" msgstr "Разширени наÑтройки за извличане…" #: src/resources/properties.xrc:139 msgid "Advanced extraction settings…" msgstr "Разширени наÑтройки за извличане…" #: src/resources/properties.xrc:154 msgid "Translation properties" msgstr "СвойÑтва на превода" #: src/resources/properties.xrc:157 msgid "Sources Paths" msgstr "Пътища за претърÑване" #: src/resources/properties.xrc:158 msgid "Sources paths" msgstr "Пътища за претърÑване" #: src/resources/properties.xrc:164 msgid "Extract text from source files in the following directories:" msgstr "Извличане на низове от изходните файлове в Ñледните папки:" #: src/resources/properties.xrc:173 msgid "Base path:" msgstr "ОÑновен път:" #: src/resources/properties.xrc:222 msgid "Sources Keywords" msgstr "Ключови думи в Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´" #: src/resources/properties.xrc:223 msgid "Sources keywords" msgstr "Ключови думи в Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´" #: src/resources/properties.xrc:229 msgid "" "Use these keywords (function names) to recognize translatable strings\n" "in source files:" msgstr "" "Ключови думи (имена на функции) за разпознаване на текÑтове\n" "Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´ във файловете Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код:" #: src/resources/properties.xrc:245 msgid "Also use default keywords for supported languages" msgstr "" "Също така да бъдат ползвани ключовите думи по подразбиране за поддържаните " "езици" #: src/resources/properties.xrc:252 msgid "Learn about gettext keywords" msgstr "Повече за ключовите думи на GNU gettext" #: src/resources/toolbar.xrc:13 src/resources/toolbar.xrc:18 msgid "Open" msgstr "" #: src/resources/toolbar.xrc:14 src/resources/toolbar.xrc:19 msgid "Open file" msgstr "ОтварÑне на файл" #: src/resources/toolbar.xrc:25 src/resources/toolbar.xrc:30 msgid "Save file" msgstr "Запазване на файл" #: src/resources/toolbar.xrc:38 msgid "Validate" msgstr "&Валидиране" #: src/resources/toolbar.xrc:39 msgid "Check for errors in the translation" msgstr "ПроверÑване за грешки в превода" #: src/resources/toolbar.xrc:45 src/wx/main_toolbar.cpp:99 msgid "Update from code" msgstr "ОбновÑване от кода" #: src/resources/toolbar.xrc:46 src/wx/main_toolbar.cpp:99 msgid "Update from Code" msgstr "ОбновÑване от кода" #: src/resources/toolbar.xrc:47 src/wx/main_toolbar.cpp:100 msgid "Update from source code" msgstr "Ðктуализиране от Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´" #: src/resources/toolbar.xrc:55 msgid "Sidebar" msgstr "Странична лента" #: src/resources/toolbar.xrc:56 msgid "Show or hide the sidebar" msgstr "Показва или Ñкрива Ñтраничната лента" #. TRANSLATORS: "Previous" as in used in the past, now replaced with newer. #: src/sidebar.cpp:134 msgid "Previous source text" msgstr "Предишен изходен текÑÑ‚" #: src/sidebar.cpp:137 msgid "" "The old source text (before it changed during an update) that the now-" "inaccurate translation corresponds to." msgstr "" "СтариÑÑ‚ изходен текÑÑ‚ (преди промÑната при обновÑване), на който ÑъответÑтва " "вече Ð½ÐµÑ‚Ð¾Ñ‡Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´." #: src/sidebar.cpp:163 msgid "Notes for translators" msgstr "Бележки към преводача" #: src/sidebar.cpp:196 msgid "Comment" msgstr "Коментар" #: src/sidebar.cpp:226 src/sidebar.cpp:245 msgid "Add comment" msgstr "ДобавÑне на коментар" #: src/sidebar.cpp:228 src/sidebar.cpp:230 src/sidebar.cpp:248 msgid "Add Comment" msgstr "ДобавÑне на коментар" #: src/sidebar.cpp:484 msgid "Delete From Translation Memory" msgstr "Изтриване от паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸" #: src/sidebar.cpp:484 msgid "Delete from translation memory" msgstr "Изтриване от паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸" #: src/sidebar.cpp:539 msgid "Translation suggestions" msgstr "ÐŸÑ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð° превод" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (Windows). #: src/sidebar.cpp:580 msgid "No matches found" msgstr "ÐÑма ÑъвпадениÑ" #. TRANSLATORS: This is shown when no translation suggestions can be found in the TM (macOS, Linux). #: src/sidebar.cpp:583 msgid "No Matches Found" msgstr "ÐÑма ÑъвпадениÑ" #: src/sidebar.cpp:623 msgid "This string was found in Poedit’s translation memory." msgstr "Ðиз от паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ на Poedit." #: src/sidebar.cpp:877 msgid "" "Translation suggestions require that source text is available. They don’t " "work if only IDs without the actual text are used." msgstr "" "ПредложениÑта за превод Ñе нуждаÑÑ‚ от реален изходен текÑÑ‚. Те не могат да " "работÑÑ‚, ако във файла има Ñамо текÑтови идентификатори." #: src/sidebar.cpp:882 msgid "" "Translation suggestions require that source text’s language is known. Poedit " "couldn’t detect it in this file." msgstr "" "За използването на Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð° превод трÑбва да е ÑÑно кой е изходниÑÑ‚ " "език на текÑта. Poedit не може да го разпознае в този файл." #: src/subprocess.cpp:219 src/subprocess.cpp:251 #, c-format msgid "Cannot execute program: %s" msgstr "Програмата не може да бъде изпълнена: %s" #: src/tm/tmx_io.cpp:88 src/tm/tmx_io.cpp:104 msgid "The TMX file is malformed." msgstr "Файлът TMX е повреден или неправилно форматиран." #: src/tm/transmem.cpp:87 #, c-format msgid "Translation memory database is corrupted: %s (%d)." msgstr "Базата данни на паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ е повредена: %s (%d)." #: src/tm/transmem.cpp:90 #, c-format msgid "Translation memory error: %s (%d)." msgstr "Грешка в паметта Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸: %s (%d)." #: src/uilang.cpp:235 msgid "(Use default language)" msgstr "(Ползване на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ ÐµÐ·Ð¸Ðº)" #: src/uilang.cpp:246 msgid "Language selection" msgstr "Избиране на език" #: src/uilang.cpp:246 msgid "Select your preferred language" msgstr "Избиране на предпочитан език" #: src/uilang.cpp:263 msgid "You must restart Poedit for this change to take effect." msgstr "ТрÑбва да реÑтартирате Poedit, за да влезе в Ñила тази промÑна." #: src/utility.cpp:143 src/utility.cpp:153 msgid "Cannot create temporary directory." msgstr "Временната папка не може да бъде Ñъздадена." #: src/welcomescreen.cpp:139 msgid "There are no translations. That’s unusual." msgstr "ÐÑма низове за превод. Това е необичайно." #: src/welcomescreen.cpp:148 msgid "" "Translatable entries aren’t added manually in the Gettext system, but are " "automatically extracted from source code. This way, they stay up to date and " "accurate. Translators typically use PO template files (POTs) prepared for " "them by the developer." msgstr "" "ТекÑтовете за превод не Ñе добавÑÑ‚ ръчно в Gettext, а Ñе извличат " "автоматично от Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. По този начин те Ñа винаги актуални и точни. " "Преводачите обикновено използват файлове-шаблони PO (POT), подготвени за Ñ‚ÑÑ… " "от разработчика." #: src/welcomescreen.cpp:151 msgid "Learn more about GNU gettext" msgstr "Ðаучете повече за GNU gettext" #: src/welcomescreen.cpp:155 msgid "" "The simplest way to fill this file with translations is to update it from a " "POT:" msgstr "" "Ðай-леÑÐ½Ð¸Ñ Ð½Ð°Ñ‡Ð¸Ð½ за попълване на файла Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸ е да бъде обновен от файл " "на POT:" #: src/welcomescreen.cpp:160 msgid "Update from POT" msgstr "ÐÐºÑ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ &файл POT" #: src/welcomescreen.cpp:161 msgid "Take translatable strings from an existing POT template." msgstr "Използване на изходни низове от ÑъщеÑтвуващ шаблон POT." #: src/welcomescreen.cpp:165 msgid "" "You can also extract translatable strings directly from the source code:" msgstr "Може да извличате низове за превод директно от изходен код:" #: src/welcomescreen.cpp:170 msgid "Extract from sources" msgstr "ÐÐºÑ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ &изходен код" #: src/welcomescreen.cpp:171 msgid "Configure source code extraction in Properties." msgstr "ÐаÑтройка на извличане от изходен код." #. TRANSLATORS: This is version information in about dialog, "%s" will be #. version number when used #: src/welcomescreen.cpp:263 src/wx_translatable_strings.h:46 #, c-format msgid "Version %s" msgstr "ВерÑÐ¸Ñ %s" #: src/welcomescreen.cpp:270 msgid "Create new" msgstr "Създаване на нов" #: src/welcomescreen.cpp:271 msgid "Create new translation from POT template." msgstr "Създаване на нов превод от шаблон на POT." #: src/welcomescreen.cpp:276 msgid "Browse files" msgstr "Разглеждане на файлове" #: src/welcomescreen.cpp:277 msgid "Open and edit translation files." msgstr "ОтварÑне и редактиране на файлове Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸." #: src/welcomescreen.cpp:283 msgid "Translate cloud project" msgstr "Превеждане на Ð¾Ð±Ð»Ð°Ñ‡Ð½Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚" #: src/welcomescreen.cpp:284 msgid "Collaborate with other people online." msgstr "Работете ÑъвмеÑтно Ñ Ð´Ñ€ÑƒÐ³Ð¸ хора в Интернет." #: src/welcomescreen.cpp:303 msgid "Recent files" msgstr "ПоÑледно отварÑни файлове" #: src/wx/main_toolbar.cpp:86 msgid "Sync" msgstr "Синхронизиране" #: src/wx/main_toolbar.cpp:87 msgid "Synchronize the translation with Crowdin" msgstr "Синхронизиране на превода Ñ Crowdin" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:42 #, c-format msgid "About %s" msgstr "ОтноÑно %s" #. TRANSLATORS: Title of the preferences window on Windows and Linux. "%s" is replaced with "Poedit" when running. #: src/wx_translatable_strings.h:49 #, c-format msgid "%s Preferences" msgstr "ÐаÑтройки на %s" #. TRANSLATORS: This is titlebar of about dialog, "%s" is application name #. ("Poedit" here, but please use "%s") #: src/wx_translatable_strings.h:60 #, c-format msgctxt "macOS menu item" msgid "About %s" msgstr "ОтноÑно %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:64 msgctxt "macOS menu item" msgid "Services" msgstr "УÑлуги" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:66 #, c-format msgctxt "macOS menu item" msgid "Hide %s" msgstr "Скриване на %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:68 msgctxt "macOS menu item" msgid "Hide Others" msgstr "Скриване на вÑички оÑтанали" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:70 msgctxt "macOS menu item" msgid "Show All" msgstr "Показване на вÑички" #. TRANSLATORS: macOS item in app menu, %s is replaced with "Poedit" #: src/wx_translatable_strings.h:72 #, c-format msgctxt "macOS menu item" msgid "Quit %s" msgstr "Изход от %s" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:74 msgid "Preferences…" msgstr "ÐаÑтройки…" #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:76 msgid "Preferences..." msgstr "ПредпочитаниÑ..." #. TRANSLATORS: macOS item in app menu #: src/wx_translatable_strings.h:78 msgctxt "macOS menu item" msgid "Preferences..." msgstr "ПредпочитаниÑ..." #: src/wx_translatable_strings.h:92 msgid "&Apply" msgstr "&Прилагане" #: src/wx_translatable_strings.h:92 msgid "Apply" msgstr "Прилагане" #: src/wx_translatable_strings.h:93 msgid "&Back" msgstr "&Ðазад" #: src/wx_translatable_strings.h:93 msgid "Back" msgstr "Ðазад" #: src/wx_translatable_strings.h:94 msgid "&Cancel" msgstr "&Отказ" #: src/wx_translatable_strings.h:95 msgid "&Clear" msgstr "&ИзчиÑтване" #: src/wx_translatable_strings.h:95 msgid "Clear" msgstr "ИзчиÑтване" #: src/wx_translatable_strings.h:98 msgid "Copy" msgstr "Копиране" #: src/wx_translatable_strings.h:99 msgid "Cu&t" msgstr "&ИзрÑзване" #: src/wx_translatable_strings.h:99 msgid "Cut" msgstr "ИзрÑзване" #: src/wx_translatable_strings.h:102 msgid "Edit" msgstr "&Редактиране" #: src/wx_translatable_strings.h:103 msgid "&Quit" msgstr "Из&ход" #: src/wx_translatable_strings.h:105 msgid "Help" msgstr "Помощ" #: src/wx_translatable_strings.h:106 msgid "&New" msgstr "&Ðов" #: src/wx_translatable_strings.h:106 msgid "New" msgstr "&ДобавÑне" #: src/wx_translatable_strings.h:107 msgid "&No" msgstr "&Ðе" #: src/wx_translatable_strings.h:107 msgid "No" msgstr "Ðе" #: src/wx_translatable_strings.h:108 msgid "&OK" msgstr "&Добре" #: src/wx_translatable_strings.h:109 msgid "Open…" msgstr "ОтварÑне…" #: src/wx_translatable_strings.h:110 msgid "&Open..." msgstr "&ОтварÑне…" #: src/wx_translatable_strings.h:110 msgid "Open..." msgstr "ОтварÑне…" #: src/wx_translatable_strings.h:111 msgid "&Paste" msgstr "По&ÑтавÑне" #: src/wx_translatable_strings.h:111 msgid "Paste" msgstr "ПоÑтавÑне" #: src/wx_translatable_strings.h:112 msgid "Preferences" msgstr "ÐаÑтройки" #: src/wx_translatable_strings.h:113 msgid "&Redo" msgstr "&ПовтарÑне" #: src/wx_translatable_strings.h:114 msgid "Refresh" msgstr "ОпреÑнÑване" #: src/wx_translatable_strings.h:116 msgid "&Save as" msgstr "Запазване &като" #: src/wx_translatable_strings.h:116 msgid "Save as" msgstr "Запазване като" #: src/wx_translatable_strings.h:117 msgid "Select &All" msgstr "Избор на &вÑичко" #: src/wx_translatable_strings.h:117 msgid "Select All" msgstr "Избор на &вÑичко" #: src/wx_translatable_strings.h:118 msgid "&Undo" msgstr "&ОтмÑна" #: src/wx_translatable_strings.h:119 msgid "&Yes" msgstr "&Да" #: src/wx_translatable_strings.h:119 msgid "Yes" msgstr "Да" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:125 msgctxt "keyboard key" msgid "Alt+" msgstr "Alt+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:127 msgctxt "keyboard key" msgid "Shift+" msgstr "Shift+" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:129 msgctxt "keyboard key" msgid "Enter" msgstr "Enter" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:131 msgctxt "keyboard key" msgid "Up" msgstr "Ðагоре" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:133 msgctxt "keyboard key" msgid "Down" msgstr "Ðадолу" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:135 msgctxt "keyboard key" msgid "Left" msgstr "ÐалÑво" #. TRANSLATORS: Keyboard shortcut for display in Windows menus #: src/wx_translatable_strings.h:137 msgctxt "keyboard key" msgid "Right" msgstr "ÐадÑÑно" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Ctrl+" #: src/wx_translatable_strings.h:140 msgctxt "keyboard key" msgid "ctrl" msgstr "ctrl" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Alt+" #: src/wx_translatable_strings.h:142 msgctxt "keyboard key" msgid "alt" msgstr "alt" #. TRANSLATORS: Keyboard shortcut, must correspond to translation of "Shift+" #: src/wx_translatable_strings.h:144 msgctxt "keyboard key" msgid "shift" msgstr "shift" #: src/wx_translatable_strings.h:152 msgid "Warning: " msgstr "Предупреждение: " poedit-3.6.3/locales/ug.mo0000644000175100001660000023060715011674352011077 Þ•È\¹œ,€; ; ;&˜;¿;<Ó;<&#<&J<_q<JÑ<g= „=Ž= =;§=ã= ê=ø=ÿ=> >>>!>)>8>G>M>S>\>p>„>ˆ>š>¬>²>·>¿>Ç>Ù>ë>ï> ó> ? ??? &?3?C?Y?o?~?š?¶?¼?Â?Ë?Ñ?Ú?ñ? @ @ $@1@7@S@o@ˆ@¡@¸@Ï@Õ@Ú@ñ@A A +A5A>AFAOA SA _AlA {A‡A —A£A ½AÊA ÙAåAõA B$B-BMBjBŠB  B ­B1¹B'ëBC&CCC ]ChCnC7ŠC6ÂCùC)DCD HD]SD±D<ÄDDE$FEkE rE€EF F"F8F+SF)F ©F´FÆFØFéFüFGG4GPG#eG‰GžG­G ³G¾G ÐGÛGíGóGùG H%HAH \H}H…HŽH¦H ·HÅH/àH IkI‰IŽI¡I·IÊIàI-ÿI1-J_J xJƒJ)šJÄJ äJªòJK¢KµKÈKÝKáKøKÿKL/LNL]LpL;ƒL¿L ÚL'çL^MLnM?»M ûM NN*)NTN"gN5ŠNÀNÛNöNüNO O "O 0O =O JOWOhOpOxOOf‘OøOPu,P¢PµP"ÇPêPòP ùPQQ)Q :QGQYQjQ0|Q­QÇQ#ÜQ<R`=RžR ®R*¹R+äR0S!AS'cS‹SS¦S(ÅSTîSCT HT RT`TtT…TšT ¯T ¹T ÇT ÔTáTðTÿTU!U 2U>U FUQU VUcUsU’U¬U©¯U‡YVzáV\W cWoW‚WžW±WÍW$èW X'X.XDXbX zX›X £X °X¼XÂXÉXàXåX;ûX(7Y`Y}YY ŸY ©Y·YÔY íYøY Z%ZBZ:GZ ‚Z<Z ÍZŒÚZ.g[–[¦[*¶[á[ü[ \\-\*6\a\g\x\ ‰\ ”\Ÿ\»¶\r]v] ]›] ´]À]Ú]ë]ü]ÿ]#^\4^‘^'¢^/Ê^ú^$_%4_Z_p_s_’w_ `%` ?` K`l`ƒ` `§`¶` Å`Ñ`å`í`õ`ý`aa-aBa\aíaóa b=bMb1`b’bn«bEc`cgc;€c ¼cÊcÑc@ëcõ,d¿"e,âe,fiGiPiciii„i8‰i ÂiÏiÔi Üi èi ôij" j",jOj_j!oj‘j ™j ¦j³j Æj(Ñjújkzk”k¥k¬k ±k ½k Ék Õkák ék ôk l@ l Ll Yl elpl‹lœl"´l×lól m m,m 5m AmNmhmxmˆm ›m ¨m¶mÇmÖm ïmüm n n*n2n:nCn KnYnrn…nžn§n°n Án În Únçnûn o o4oDoYo†noõop &p2pApTp epsp „p’pK™påpúp qq,q?qUq1qq£q0²q ãq ñqŽýq=ŒrÊrJsOs(asŠs ’s s+½sés ìs8ös"/tRtÂct&uCAu8…uî¾uŸ­v8Mw1†wR¸wc xQoxÁx'Üx&y:+ylfyPÓy-$zCRzA–zKØz0${.U{Ž„{!|)5|-_|+|8¹|Cò|u6},¬}LÙ};&~]b~…À~JFc‘[õoQ€«Á€7mm¥_‚[s‚ςՂùå‚߃÷ƒ „ „5„H„`„Hw„ZÀ„2…"N…q…‰… …~¸…q7†©†ˆ¼†E‡I‡]‡/b‡ ’‡³‡Ƈ ݇ë‡ó‡ú‡ ˆ"ˆ$7ˆ\ˆuˆŽˆŸˆ¯ˆÀˆ؈çˆïˆÿˆ‰/‰$L‰q‰‘‰«‰Á‰׉#ô‰VŠoŠ†ŠŠ ¢Š­Š½ŠÍŠ ëŠõŠ‹"‹3‹:‹.B‹ q‹}‹†‹ž‹¹‹H½‹5Œm<Œ7ªŒ âŒ3ìŒa ‚‡Œ.© ØùŽŽ=ŽTŽfŽyŽ‹ŽžŽ°ŽÃŽ׎çŽøŽ 6Nj‰¡ºÓéú !-§O÷‘’c-’‘’s­’#!“CE“C‰“•Í“ic”§Í” u•ƒ• •O«•û•–(–9–H–Z– k–v–…–"”–"·–Ú–ë–ü–!—!0—R—7c—7›—Ó— ä—ñ—˜!˜!6˜ X˜c˜t˜”˜ ´˜ ˜Иߘô˜# ™#0™T™8h™8¡™Ú™é™ü™š$"šCGšC‹šÏšïš›"›=5›=s›(±›(Ú›+œ+/œ[œ uœ*‚œ!­œ3Ïœ);J_f|“ª!Àâ.ø'ž>žUž!kž(ž'¶ž Þž1éž.Ÿ1JŸ,|Ÿ©Ÿ ÉŸoêŸhZ %àGé A1¡s¡ „¡L‘¡;Þ¡X¢:s¢a®¢££½0£/¤€¡¤8"¥[¥$o¥ö”¥ ‹¦™¦8¸¦:ñ¦M,§Oz§ʧ%Ú§%¨!&¨*H¨ s¨&¨1¨¨=Ú¨"©<;©"x©›© ·©!Ä©æ©!ª$ª@ª Gª(Rª({ªK¤ª7ðª/(«X«g«/w«§«¼«0ΫIÿ« I¬ÖV¬ -­8­(V­­(­2Æ­Pù­\J®-§®Õ®ë®@ ¯/K¯{¯%”¯ º°*Ű*ð°.±J±/Q± ±0Œ±!½±0ß±²*²H²qb².Ô²³1³¼I³q´Ux´δá´ð´U µbµ=~µI¼µA¶AH¶жž¶ µ¶¶â¶··:·(V··œ· ¬·"º·ÁÝ·1Ÿ¸1Ѹй(Ô¹?ý¹U=º“º¤º³ºBº»»4»S»k»"‚»G¥».í»¼D4¼dy¼§Þ¼†½¦½A¹½Kû½LG¾L”¾Bá¾ $¿#1¿,U¿N‚¿ŠÑ¿ \ÀgÀ…À%¥ÀËÀ&ëÀÁ2ÁPÁpÁ‚Á”ÁªÁ)ÀÁ êÁ&øÁ Â+Â> PÂ"]Â&€Â1§Â;ÙÂÃJÃYcÄ@½ÅþÆ<ÇQÇ/jÇšÇ/³Ç)ãÇ; È.IÈxÈ&‡È2®È#áÈ.É 4É!AÉ-cÉ ‘É žÉ&«ÉÒÉ#æÉB Ê/MÊ}ʖʪʿÊ!ÇÊAéÊ,+Ë%XË&~Ë;¥Ë9áËÌ}"Ì ÌxµÌ.Í#LÍ[pÎ&ÌÎ"óÎAÏ*XσϟÏ0³ÏäÏAõÏ 7Ð/AÐ/qСйÐÑгñÐ¥Ò3®ÒâÒ3Ó 5ÓAVÓ&˜Ó&¿ÓæÓ(íÓLÔ’cÔ.öÔ5%Õa[Õ1½ÕnïÕG^Ö)¦Ö ÐÖÝÖŒäÖ3qØ+¥ØÑØMëØ(9Ù+bÙŽÙ!¢Ù!ÄÙæÙ,Ú -Ú 7ÚAÚ XÚ1cÚ1•Ú$ÇÚ%ìÚ Û Ü*)ÜTÜc[Ü!¿Ü<áÜ,ÝKÝ©ÙÝ ƒÞ*Þo»Þ+ßDß*Kßrvß³éßnáI ã9Vã"ã³ã*ÏãyúãYtä3Îäåäæ¾ÿæ¾çÏçãç9÷çJ1è(|è(¥è&Îè'õè'é(Eéné‡é—é&¬é Óé4àé ên ê!ê±ê Àê&Íê&ôêë.ëNAëTë2åë2ìZKì¦ì%¹ì%ßì%í+íUAí—í?³íêóí!Þî ï ï'ï'@ïhïyï Šï#«ï#ÏïóïW ðcð€ðžð:¸ðóð.ñE@ñ,†ñ0³ñäñøñ òò$5ò1Zò$Œò ±ò/Òò(ó++ó.Wó†ó8¤ó$Ýó(ô +ô+LôxôŒô¢ôºô Ôô3õô")õ3Lõ€õ ˜õ(¥õ!Îõ!ðõ ö=3ö,qö0žö=Ïö, ÷0:÷-k÷$™÷>¾ø&ýø$ù<ùWù$tù™ù$«ùÐù âùníù$\úúú"»ú(Þú4û(<ûEeû,«û]Øû6üUüjü_oýÄÏý”þ'©þ@Ñþ ÿ!3ÿ6UÿbŒÿïÿòÿw U#×zû4vd«a•r RCf’ª½=ƒû-7­;åB! Âd }' 9¥ ‚ß {b †Þ >e ;¤ ÿà <à CKa8­Aæw(Ê Dku°P&ÎwôFƒ;¿À‚ãCU'S}ÕÑÚ§Í‚ P[þl.k0šËÞö.E“c—÷C:Ó.=%[ê¹l &!¨:! ã!î!"O"^d"Ã"$Ù"þ"## <#,I#v#C’#PÖ#''$'O$w$‘$©$$Ã$,è$%.%BI%1Œ%A¾%:&:;&2v&0©&:Ú&T'Fj'î±'0 (Ñ(%â( ),),A).n))º)'Õ)ý) *(*V;*’*ª*'Ê*3ò*&+•/+^Å+ž$,wÃ,;-NJ-¼™-V.!]..P—.+è./9%/._/*Ž/¹/¾/ Ä/Ï/Õ/Ü/ã/ ê/õ/ù/þ/00)0I0 ]0k0„0A 0â0*ô01<1:L1|ó™Áè=Fþ‡‹Â½Í!s-<>ºP•ND7~ûwcÁbž2J»ìØÓwBšT´(.‡…\;X’uE/IÚǼÀ€L„s>¿©?~Ù;x%ðàïË]¹”í*»ë‚ð^ªcVáföK¬ÚLŵñ”¢ëqçSµ쨤q¯BÐò\Ö„ ]m‰7[nÒ@§¥c:ásâôoR¼?·Îÿ¹úKÔ7TIîÝ_*ÓWJþŽF(wSPQ–`YX†Rü’ZÏ“ +^ªAz ´ŽÕ[)i 2 †·ÑÌ/06ÆÔ{‡9ÏF­£81O 0n¬n²jm£̤,#S³U¾.º×‹ iE)³}¡GfçB˜jz|#zaà„)U,ƒæ÷4qNýldÃ÷_¨4ôy`xZ&°Ä1  bÒ@\Ü <š¸Y`'‚Ê?ªE£p4"Á™Haí²â§ÈU%¯ À›t®– Æû/±d”gÈ!œG©6‘¦³å—v<ñä¶öZt{‰§9øîuåK,M¾ÉÛÍ5¹Cu#¬V %XÄÂ|ú¶ß¥¢ü’ÿ‘“Y+œRž$D!Ç-[ÞäV*reé08»—½«²W ¦>hWÃŒd¶9¤l8«®Œ›¯ãÎÝgÛ_&h}ø(¼t®¸GpÖ¦ +ƒƒ°x5‚ÅeP“¸ÊÅylÉÞ:©DrêCQ$k{=õ™ òLŠ—Õ]ævžêJHõkÄo¾ùeNv×A†ˆ…·k¢¿¨š ˜Àyù½‘µ^M¡ØjI1O"a¿¥3ˆQÙg&­p-Ÿ­~=ÜHÇm'C‹  óã ˆ3«:€èËOf…Šb5•ß.¡È´é›@}±ÐiŸ'A$6To˜ŸŠŒ°2‰±Ãr•œ–Ñ€ï"ý ŽhMÆ3;º (modified) (unsaved)%d code occurrence%d code occurrences%d entry%d entries%d entry was pre-translated.%d entries were pre-translated.%d error%d errors%d error occurred.%d errors occurred.%d error occurred:%d errors occurred:%d issue with the source strings was detected.%d issues with the source strings were detected.%d issue with the translation found.%d issues with the translation found.%i line of file “%s†was not loaded correctly.%i lines of file “%s†were not loaded correctly.%s Format%s Preferences%s format%s translation was imported.%s translations were imported.&About&About Poedit&Apply&Back&Cancel&Clear&Close&Copy&Delete&Done and Next&Done and next&Edit&File&Find…&GNU gettext Manual&GNU gettext manual&Go&Group By Context&Group by context&Help&New&New…&Next >&Next Translation&Next translation&No&OK&Online Help&Online help&Open...&Open…&Paste&Preferences&Preferences…&Previous Translation&Previous translation&Properties…&Purge Deleted Translations&Purge deleted translations&Quit&Redo&Replace&Save&Save as&Show Code Occurrences&Show code occurrences&Start Window&Start window&Translation&Undo&Untranslated Entries First&Untranslated entries first&Update from Source Code&Update from source code&Validate Translations&Validate translations&View&Yes(Use default language)(not signed in)(requires Windows 8 or newer)< &PreviousAbout %sAccountAccountsAddAdd CommentAdd Files…Add Folders…Add ProjectAdd Wildcard…Add commentAdd directory to the listAdd files…Add folders…Add projectAdd wildcard…Additional keywordsAdditional xgettext flags:AdvancedAdvanced Extraction Settings…Advanced extraction settingsAdvanced extraction settings…All Translation FilesAll commentsAll stringsAlso use default keywords for supported languagesAlways change focus to text input fieldAn error occurred.An item in input files list:An item in keywords list:AppearanceApplyApproximate matches from TMAre you sure you want to delete the “%s†extractor?Are you sure you want to reset the translation memory?Automatically check for updatesAutomatically compile MO file when savingBackBase path:Beta versions contain the latest new features and improvements, but may be a bit less stable.Bring All to FrontBroken PO file: plural form msgstr used without msgid_pluralBroken PO file: singular form msgstr used together with msgid_pluralBroken markup in translation string.BrowseBrowse filesBy default, inaccurate results are also included, but marked as needing work. Check this option to only include perfect matches.CancelCancelling…Cannot create temporary directory.Cannot execute program: %sCannot pre-translate from unknown language.Cannot pre-translate without source text.CapitalizeCatalogs &ManagerCatalogs &managerCatalogs ManagerChange UI languageCharset:Check Document NowCheck Grammar With SpellingCheck Spelling While TypingCheck for Updates…Check for errors in the translationCheck for updates…Check spellingClearClear MenuClear TranslationClear menuClear translationCloseCloudCode OccurrencesCode occurrencesCollaborate with other people online.Collecting source files…Command to extract translations:CommentComment:Comments prefixed with:Compile to MO…Compile to…Compiled Translation FilesConfigure source code extraction in Properties.ConfirmationConnect Poedit with supported cloud localization platforms to seamlessly sync translations managed on them.CopyCopy From SingularCopy from Source TextCopy from singularCopy from source textCorrect Spelling AutomaticallyCouldn’t download Localazy project details.Couldn’t load the file, it is probably damaged.Couldn’t save file %s.Create newCreate new translationCreate new translation from POT template.Create new translations projectCrowdin errorCrowdin is an online translation management platform and collaborative translation tool. We use Crowdin ourselves to translate Poedit into many languages, and we love it.Cu&tCustom Extractors:Custom extractors:Customize Toolbar…CutDatabase size on disk:DeleteDelete From Translation MemoryDelete extractorDelete from translation memoryDelete projectDelete the commentDelete the projectDeleting the project will not delete any translation files.Determining differences…Directories:Do you want to delete project “%sâ€?Do you want to reload the file from disk? Your unsaved edits in Poedit will be lost if you do.Do you want to remove all translations that are idential to the source text?Do you want to remove all translations that are no longer used?Do&n’t saveDon’t SaveDon’t Show AgainDon’t mark exact matches as needing workDon’t show againDownloading latest translations…Downloading translations is disabled in this project.Drag Folders or Files HereDrag folders or files hereE&xitE&xport to HTML…EditEdit &CommentEdit &commentEdit CommentEdit commentEdit projectEdit the projectEditingEdit…Email:Enter Full ScreenEntries in this file have different plural forms count from what the file’s Plural-Forms header saysEntries with Errors FirstEntries with errors firstEntries with errors were marked in red in the list. Details of the error will be shown when you select such an entry.Error opening fileError saving fileError while loading XLIFF file: %sError: ErrorsEverythingExact matches from TMExcluded pathsExport To TMX…Export as…Export to HTML…Export to TMX…Exporting to HTMLExporting translation memory to “%s†failed.Exporting translations…Extract from sourcesExtract notes for translators from:Extract text from source files in the following directories:Extracting translatable strings from %s file…Extracting translatable strings from %s files…Extractor setupExtractorsFailed to communicate with Poedit process.Failed to extract strings from source code.Failed to load file with extracted translations.Failed to merge gettext catalogs.Failed to update translation memory: %sFileFile cannot be openedFile “%s†doesn’t exist.File “%s†is not a translation file.File “%s†is read-only and cannot be saved. Please save it under different name.FindFind NextFind PreviousFind and Replace…Find in commentsFind in source textsFind in translationsFind nextFind previousFix LanguageFix languageFix the HeaderFix the headerFlutter Translation FilesForm %iForm %i (unused)GNU gettextGeneralHTML FilesHelpHide SidebarHide Status BarHide this notification messageHow does cloud sync work?IDIf 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.If you previously denied access to your files, you can allow it in System Preferences > Security & Privacy > Privacy > Files & Folders.If you previously denied access to your files, you can allow it in System Settings > Privacy & Security > Files & Folders.IgnoreIgnore caseImport From TMX…Import Translation Files…Import from TMX…Import translation files…Importing from “%sâ€â€¦Importing translation memory failed.Importing translations…In: %sInclude beta versionsInconsistent upper/lower caseInconsistent whitespaceInformation about the translatorInstallInvalid fileInvocation:IssueIssuesJSON Translation FilesKeepLanguage name or codeLanguage of the translation is the same as source language.Language of the translation isn’t set.Language of the translation:Language selectionLanguage team:Language:Last modifiedLearn about gettext keywordsLearn about plural formsLearn moreLearn more about %sLearn more about CrowdinLearn more about GNU gettextLineLine %d of file “%s†is corrupted (not valid %s data).Line endings:List of extensions separated by semicolons (e.g. *.cpp;*.h):Load EnglishLocalazy is a highly automated localization platform allowing anyone to translate their products and content into multiple languages easily.MO files can’t be directly edited in Poedit.Make Lower CaseMake Upper CaseMake a new translation from this POT file.Malformed header: “%sâ€Manage accountsManage…Merging differences…MinimizeName of the project the translation is forName:Ne&xt UnfinishedNe&xt unfinishedNeeds WorkNeeds workNetwork error: %s (%d)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.NewNew From &POT/PO File…New StringsNew from &POT/PO file…New stringsNew strings to translate:Next Plural FormNext plural formNoNo Matches FoundNo entries could be pre-translated.No information about this string’s occurrences in the source code is provided in the file.No matches foundNo problems with the translation found.No translation projects listed in your account.No usage informationNot all plural forms are translated.Not authorized, please sign in again.Notes for translatorsOKOneOnly enable if you trust the quality of your TM. By default, all matches from the TM are marked as needing work and should be reviewed before use.Only fill in exact matchesOpen Cloud Translation…Open RecentOpen and edit translation files.Open cloud translationOpen cloud translation…Open fileOpen in EditorOpen in editorOpen recentOpen reference fileOpen...Open…OptionsOtherP&revious UnfinishedP&revious unfinishedPO Translation FilesPOT Translation TemplatesPOT files are only templates and don’t contain any translations themselves. To make a translation, create a new PO file based on the template.PastePaste and Match StylePathsPerforms update from source code on all files in the project.Permission denied.Placeholder “%s†is missing from translation.Placeholders correctnessPlease open and edit the corresponding PO file instead. When you save it, the MO file will be updated as well.Please save the file first. This section cannot be edited until then.PluralPlural form translationsPlural forms expression used by the file is unusual for %s.Plural forms:PoeditPoedit - Catalogs managerPoedit automatically fixed invalid content in the file “%sâ€.Poedit can attempt to fill in new entries from only previous translations in the file or from your entire translation memory. Using the TM won’t be very effective if it’s near-empty, but it will get better as you add more translations to it.Poedit cannot show source code where the string is used, because the file is either not available in the referenced location or it is a symbolic reference that doesn’t point to a real file.Poedit is an easy to use translation editor.Poedit was unable to open the “%s†file.Pre-&translate…Pre-translatePre-translatedPre-translated %u stringPre-translated %u stringsPre-translating from translation memory…Pre-translating…Pre-translation automatically finds exact or fuzzy matches for untranslated strings in the translation memory and fills in their translations.Pre-translation requires that source text is available. It doesn’t work if only IDs without the actual text are used.Pre-translation requires that source text’s language is known. Poedit couldn’t detect it in this file.PreferencesPreferences...Preferences…Preparing strings…Preserve formatting of existing filesPrevious Plural FormPrevious plural formPrevious source textPreviously EditedPreviously editedProject name and version:Project name:Project:ProjectsPunctuation checksPurgePurge deleted translationsQuitReading file content failed with the following error: %sRecent filesRedoRefreshReload FileReload fileRemaining: %dRemoveRemove Same-as-Source TranslationsRemove same-as-source translationsRemoved StringsRemoved stringsRemoved strings (no longer used):ReplaceReplace &AllReplace &allReplacement stringReplace…Required header Plural-Forms is missing.ResetReset translation memoryResetting the translation memory will irrevocably delete all stored translations from it. You can’t undo this operation.Reveal in FinderReviewSaveSave &As…Save &as…Save AnywaySave anywaySave asSave as…Save changesSave fileSaving in a different location is not supported for XCLOC files.Screenshots:Select &AllSelect AllSelect TMX files to importSelect directorySelect translation fileSelect translation files to importSelect translation templateSelect your preferred languageSet LanguageSet languageSettingsSettings…Show SidebarShow Spelling and GrammarShow Status BarShow String &IDShow SubstitutionsShow ToolbarShow WarningsShow in ExplorerShow in FolderShow or hide the sidebarShow sidebarShow status barShow string &IDShow warningsSidebarSign InSign OutSign inSign in to %sSign in to Cloud AccountSign in to CrowdinSign in to cloud accountSign outSingularSmart Copy/PasteSmart DashesSmart LinksSmart QuotesSort by &File OrderSort by &SourceSort by &TranslationSort by &file orderSort by &sourceSort by &translationSource code charset:Source code extractors are used to find translatable strings in the source code files and extract them so that they can be translated.Source code not available.Source code not foundSource textSource text IDSource text — %sSources KeywordsSources PathsSources keywordsSources pathsSpeechSpellchecking is disabled, because the dictionary for %s isn’t installed.Spelling and GrammarStart SpeakingStop SpeakingStored translations:String context: %sString identifier: %sString length in charactersString length in characters: translation | sourceString to findString-based Crowdin projects are not supported.SubstitutionsSuggestionsSuggestions are not available if the translation language is not set correctly. Other features, such as plural forms, may be affected as well.Superfluous placeholder “%s†that isn’t in source text.Supports all programming languages recognized by GNU gettext tools (PHP, C/C++, C#, Perl, Python, Java, JavaScript and others).SyncSync with CrowdinSynchronize the translation with CrowdinSyncingSyncing errorSyncing with Crowdin failed.Syntax error in Plural-Forms header ("%s").TMTMX FilesTake translatable strings from an existing POT template.Team name and email address or URLText ReplacementThe 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.The TMX file is malformed.The changes made by the other application will be lost if you save.The file cannot be compiled into the MO format and used.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 needing work and correct them if necessary.The file couldn’t be saved in “%s†charset as specified in translation settings. It was saved in UTF-8 instead and the setting was modified accordingly.The file has been modified. Do you want to save changes?The file is in a format not recognized by Poedit.The file was compiled into the MO format, but it will probably not work correctly.The file was saved safely and compiled into the MO format, but it will probably not work correctly.The file was saved safely, but it cannot be compiled into the MO format and used.The file was saved safely.The file “%s†couldn’t be opened.The file “%s†couldn’t be saved.The file “%s†has been changed by another application.The old source text (before it changed during an update) that the now-inaccurate translation corresponds to.The simplest way to fill this file with translations is to update it from a POT:The translation doesn’t start with a space.The translation ends with a newline, but the source text doesn’t.The translation ends with a space, but the source text doesn’t.The translation ends with “%sâ€, but the source text ends with “%sâ€.The translation is missing a newline at the end.The translation is missing a space at the end.The translation is ready for use, but %d entry is not translated yet.The translation is ready for use, but %d entries are not translated yet.The translation is ready for use.The translation should end with “%sâ€.The translation should not end with “%sâ€.The translation should start as a sentence.The translation should start with a lowercase character.The translation starts with a space, but the source text doesn’t.The translations were marked as needing work, because they may be inaccurate. You should review them for correctness.There are no translations. That’s unusual.There was a problem formatting the file nicely (but it was saved all right).There was an error when uploading translations to Localazy.There were errors when loading the file. Some data may be missing or corrupted as the result.These settings affect internal formatting of PO files. Adjust them if you have specific requirements e.g. because of version control.This JSON file isn’t a translations file and cannot be edited in Poedit.This action will delete any translations that match the source text exactly. This cannot be undone.This file has entries with plural forms, but doesn’t have Plural-Forms header configured.This file uses string IDs instead of source text. Poedit can load English texts from the “%s†file for you.This is the command used to launch the extractor. %o expands to the name of output file, %K to list of keywords, %F to list of input files, %C to charset flag (see below).This string was found in Poedit’s translation memory.This will be attached to the command line only if source code charset was given. %c expands to charset value.This will be attached to the command line once for each input file. %f expands to the filename.This will be attached to the command line once for each keyword. %k expands to the keyword.TotalTransformationsTranslatable entries aren’t added manually in the Gettext system, but are automatically extracted from source code. This way, they stay up to date and accurate. Translators typically use PO template files (POTs) prepared for them by the developer.Translate cloud projectTranslated: %d of %d (%d %%)TranslationTranslation LanguageTranslation MemoryTranslation Needs &WorkTranslation PropertiesTranslation file is already up to date, no changes to strings were made.Translation file was updated with %s change.Translation file was updated with %s changes.Translation memory database is corrupted: %s (%d).Translation memory error: %s (%d).Translation needs &workTranslation propertiesTranslation suggestionsTranslation suggestions require that source text is available. They don’t work if only IDs without the actual text are used.Translation suggestions require that source text’s language is known. Poedit couldn’t detect it in this file.Translation — %sTranslations couldn’t be updated from the source code, because no code was found in the location specified in the file’s Properties.TwoUTF-8 (recommended)UndoUnexpectedly missing content in the XCLOC file.Unhandled exception occurred: %sUnix (recommended)Unknown Crowdin error.Unknown errorUntransUpdateUpdate SummaryUpdate allUpdate all catalogs in the projectUpdate all catalogs in this project?Update from &POT File…Update from &POT file…Update from CodeUpdate from POTUpdate from codeUpdate from source codeUpdate summaryUpdatesUpdating failedUpdating project catalogsUpdating translationsUpdating user information…Uploading translations to %s failed.Uploading translations to %s…Uploading translations…Use custom expressionUse custom list font:Use custom text fields font:Use default rules for this languageUse these keywords (function names) to recognize translatable strings in source files:Use translation memoryValidateValidation resultsVersion %sView Details…View details…Waiting for authentication…Warning: Welcome to PoeditWhen updating from sourcesWhole words onlyWindowWindowsWould you like to use English for source text?Wrap aroundWrap at:XLIFF Translation FilesXcode Localization CatalogYesYou can also extract translatable strings directly from the source code:You can’t drop more than one file on Poedit window.You don’t have permission to read source code files from the location specified in the file’s Properties.You must restart Poedit for this change to take effect.Your NameYour changes will be lost if you don’t save them.Your name and email address are only used to set the Last-Translator header of GNU gettext files.ZeroZoomcolumn/row headerNeeds Workdon’t delete temporary files (for debugging)e.g. nplurals=2; plural=(n > 1);error: fuzzy match within the filego to item at given line numberhandle a poedit:// URIkeyboard keyAlt+keyboard keyCtrl+keyboard keyDownkeyboard keyEnterkeyboard keyLeftkeyboard keyRightkeyboard keyShift+keyboard keyUpkeyboard keyaltkeyboard keyctrlkeyboard keyshiftmacOS menu itemAbout %smacOS menu itemHide %smacOS menu itemHide OthersmacOS menu itemPreferences...macOS menu itemQuit %smacOS menu itemServicesmacOS menu itemShow Allpre-translate from TMunknown languageunsupported version (%s)warning: you@example.com“%s†is not a valid POT file.Project-Id-Version: poedit Report-Msgid-Bugs-To: help@poedit.net PO-Revision-Date: 2025-04-17 10:16 Last-Translator: Language-Team: Uyghur Language: ug_CN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Crowdin-Project: poedit X-Crowdin-Project-ID: 53425 X-Crowdin-Language: ug X-Crowdin-File: /locales/poedit.pot X-Crowdin-File-ID: 3 (ئۆزگەرتىلگەن) (ساقلانمىغان)%d كودنىڭ كۆرۈنىدىغان ئورنى%d كودنىڭ كۆرۈنىدىغان ئورنى%d تىزىق%d تىزىق%d تىزىق ئالدىن تەرجىمە قىلىندى.%d تىزىق ئالدىن تەرجىمە قىلىندى.%d خاتالىق%d خاتالىق%d خاتالىق كۆرۈلدى.%d خاتالىق كۆرۈلدى.%d خاتالىق كۆرۈلدى:%d خاتالىق كۆرۈلدى:ئەسلى ھەرپ تىزىقىدىكى %d مەسىلە بايقالدى.ئەسلى ھەرپ تىزىقىدىكى %d مەسىلە بايقالدى.تەرجىمىدە %d مەسىلە بايقالدى.تەرجىمىدە %d مەسىلە بايقالدى.ھۆججەت «%2$s» نىڭ %1$i-قۇرىنى توغرا يۈكلىيەلمىدى.ھۆججەت «%2$s» نىڭ %1$i-قۇرىنى توغرا يۈكلىيەلمىدى.%s پىچىم%s مايىللىقلار%s پىچىم%s تەرجىمە ئەكىرىلگەن.%s تەرجىمە ئەكىرىلگەن.ھەققىدە(&A)Poedit ھەققىدە(&A)قوللان(&A)كەينى(&B)ۋاز ÙƒÛ•Ú†(&C)تازىلا(&C)ياپ(&C)كۆچۈر(&C)ئۆچۈر(&D)تامام Û‹Û• ÙƒÛيىنكى(&D)تامام Û‹Û• ÙƒÛيىنكى(&D)تەھرىر(&E)ھۆججەت(&F)ئىزدە…(&F)&GNU gettext قوللانمىسى&GNU gettext قوللانمىسىيۆتكەل(&G)تىل مۇھىتى بويىچە گۇرۇپپىلا(&G)تىل مۇھىتى بويىچە گۇرۇپپىلا(&G)ياردەم(&H)ÙŠÛÚ­Ù‰(&N)ÙŠÛÚ­Ù‰(&N)…‹ كەينى(&N)ÙƒÛيىنكى تەرجىمە(&N)ÙƒÛيىنكى تەرجىمە(&N)ياق(&N)جەزملە(&O)توردىكى ياردەم(&O)توردىكى ياردەم(&O)ئاچ(&O)…ئاچ(&O)…چاپلا(&P)مايىللىق(&P)مايىللىق(&P)…ئالدىنقى تەرجىمە(&P)ئالدىنقى تەرجىمە(&P)خاسلىق(&P)…ئۆچۈرۈلگەن تەرجىمىنى تازىلا(&P)ئۆچۈرۈلگەن تەرجىمىنى تازىلا(&P)Ú†Ûكىن(&Q)قايتىلا(&R)ئالماشتۇر(&R)ساقلا(&S)باشقا ئاتتا ساقلا(&S)كودنىڭ كۆرۈنىدىغان ئورنىنى كۆرسەت(&S)كودنىڭ كۆرۈنىدىغان ئورنىنى كۆرسەت(&S)باشلاش كۆزنىكى(&S)باشلاش كۆزنىكى(&S)تەرجىمە(&T)ÙŠÛنىۋال(&U)تەرجىمە قىلىنمىغان بىرىنچى تۈر(&U)تەرجىمە قىلىنمىغان بىرىنچى تۈر(&U)ئەسلى كودتىن ÙŠÛڭىلا(&U)ئەسلى كودتىن ÙŠÛڭىلا(&U)تەرجىمىلەرنى دەلىللە(&V)تەرجىمىلەرنى دەلىللە(&V)ﻛﯚﺭﯛﻧﯜﺵ(&V)ھەئە(&Y)كۆڭۈلدىكى تىلنى ئىشلەت(تىزىمغا كىرمىگەن)(Windows 8 ياكى ÙŠÛÚ­Ù‰ نەشرى زۆرۈر)< ئالدىنقى(&P)<ئاتسىز>%s Ú¾Û•Ù‚Ù‚Ù‰Ø¯Û•Ú¾ÛØ³Ø§Ø¨Ø§ØªÚ¾Ûساباتلارقوشئىزاھات قوشھۆججەت قوش…قىسقۇچ قوش…قۇرۇلۇش قوشئورتاق بەلگە قوش…ئىزاھات قوشتىزىملىككە مۇندەرىجە قوشھۆججەت قوش…قىسقۇچ قوش…قۇرۇلۇش قوشئورتاق بەلگە قوش…قوشۇمچە ئاچقۇچلۇق سۆزقوشۇمچە xgettext بەلگىسى:ئالىيئالىي ئاجرىتىش تەڭشەكلەر…ئالىي ئاجرىتىش تەڭشەكلەرئالىي ئاجرىتىش تەڭشەكلەر…ھەممە تەرجىمە ھۆججەتلەرھەممە ئىزاھاتلارھەممە ھەرپ تىزىقىقوللايدىغان تىللارغىمۇ كۆڭۈلدىكى ئاچقۇچلۇق سۆزنى ئىشلىتىدۇخەت كىرگۈزۈش رايونىدىكى مەركىزى نۇقتىسىنى دائىم ئۆزگەرتبىر خاتالىق كۆرۈلدى.ھۆججەت تىزىملىكى كىرگۈزۈشتىكى بىر تۈر:ھالقىلىق سۆز تىزىملىكىدىكى بىر تۈر:كۆرۈنۈشىقوللانتەرجىمە خاتىرىسىدىن تەخمىنەن ماس كەلگىنى«%s» يەشكۈچنى راستلا ئۆچۈرەمسىز؟تەرجىمە خاتىرىسىنى راستلا ئەسلىگە قايتۇرامسىز؟يÛڭىلاشنى ئاپتوماتىك تەكشۈرسۇنھۆججەت ساقلىغاندا ئۆزلۈكىدىن .mo ھۆججىتى ھاسىل قىلسۇنقايتئاساسىي يول:سىناق نەشرىدە ئەڭ ÙŠÛÚ­Ù‰ ئىقتىدار Û‹Û• ياخشىلاشنى ئۆز ئىچىگە ئالىدۇ، ئەمما ئازراق مۇقىم بولماسلىقى مۇمكىن.ھەممىسىنى ئەڭ ئالدىغا قويPO ھۆججىتى بۇزۇلغان: كۆپلۈك سان شەكلىدە msgstr ئىشلىتىپ msgid_plural ئىشلەتمىگەنPO ھۆججىتى بۇزۇلغان: بىرلىك شەكلىدە msgstr بىلەن msgid_plural بىللە ئىشلىتىلگەنتەرجىمە تىزىقىدىكى بەلگە خاتا.كۆز يۈگۈرتھۆججەتكە كۆز يۈگۈرتكۆڭۈلدىكى ھالەتتە، خاتا نەتىجىلەرمۇ بار، ئەمما ئىشلەش زۆرۈر بەلگىسى قويۇلدى. پەقەت مۇكەممەل ماسلاشتۇرۇش ئۈچۈن بۇ تاللانما تاللىنىدۇ.ۋاز كەچۋاز ÙƒÛچىۋاتىدۇ…ۋاقىتلىق قىسقۇچىنى قۇرالمىدى.پروگراممىنى ئىجرا قىلالمايدۇ: %sنامەلۇم تىلدىن ئالدىن تەرجىمە قىلالمايدۇ.مەنبە تÛكىستسىز ئالدىن تەرجىمە قىلالمايدۇ.Ú†ÙˆÚ­ ھەرپكاتالوگ باشقۇرغۇچ(&M)كاتالوگ باشقۇرغۇچ(&M)كاتالوگ باشقۇرغۇچكۆرۈنۈش تىلىنى ئۆزگەرتكودلاش:پۈتۈكنى ھازىر تەكشۈرئىملا Û‹Û• گرامماتىكا تەكشۈرخەت كىرگۈزۈۋاتقاندا ئىملا تەكشۈريÛڭىلاشنى تەكشۈر…تەرجىمىدىكى خاتالىقلارنى تەكشۈريÛڭىلاشنى تەكشۈر…ئىملا تەكشۈرۈشتازىلاتىزىملىكنى تازىلاتەرجىمە تازىلاتىزىملىكنى تازىلاتەرجىمە تازىلاياپبۇلۇتكود كۆرۈنىدىغان ئورۇنكود كۆرۈنىدىغان ئورۇنتوردىكى باشقا كىشىلەر بىلەن ھەمكارلىشىڭ.مەنبە ھۆججىتىنى توپلاۋاتىدۇ…تەرجىمە ئاجرىتىش بۇيرۇقى:ئىزاھاتئىزاھات:ئالدى قوشۇلغۇچى ئىزاھاتى:MO ھاسىللا…ھاسىللا…تەرجىمە ھۆججەت ھاسىللاندىخاسلىقىدا ئەسلى كود ئاجرىتىش سەپلىمىسى.جەزملەPoedit نى قوللايدىغان بۇلۇت يەرلىكلەشتۈرۈش سۇپىلىرى بىلەن باغلاپ ئۇنىڭدىكى تەرجىمىلەرنى يوچۇقسىز قەدەمداشلىيالايسىز.كۆچۈربىرلىكتىن كۆچۈرئەسلى تÛكىستتىن كۆچۈربىرلىكتىن كۆچۈرئەسلى تÛكىستتىن كۆچۈرئىملانى ئۆزلۈكىدىن توغرىلاLocalazy قۇرۇلۇشىنىڭ تەپسىلاتىنى چۈشۈرەلمەيدۇ.ھۆججەتنى يۈكلىيەلمىدى، ئۇ بۇزۇلغان بولۇشى مۇمكىن.%s ھۆججەتنى ساقلىيالمىدى.ÙŠÛڭىدىن قۇريÛÚ­Ù‰ تەرجىمە قۇريÛÚ­Ù‰ تەرجىمىنى POT Ù‚Ûلىپىدىن قۇرىدۇ.ÙŠÛÚ­Ù‰ تەرجىمە قۇرۇلۇشى قۇرCrowdin خاتالىقىCrowdin توردىكى تەرجىمە باشقۇرۇش سۇپىسى Û‹Û• ھەمكارلىشىپ تەرجىمە قىلىش قورالى. بىزمۇ Crowdin نى ئىشلىتىپ Poedit نى نۇرغۇن تىللارغا تەرجىمە قىلىمىز، بىز ئۇنى ياخشى كۆرىمىز.كەس(&T)ئىختىيارىچە ئاجراتقۇچ:ئىختىيارىچە ئاجراتقۇچ:ئىختىيارىچە قورال بالداقكەسدىسكىدىكى ساندان چوڭلۇقى:ئۆچۈرتەرجىمە خاتىرىسىدىن ئۆچۈرئاجراتقۇچنى ئۆچۈرتەرجىمە خاتىرىسىدىن ئۆچۈرقۇرۇلۇش ئۆچۈرئىزاھاتنى ئۆچۈرقۇرۇلۇش ئۆچۈربۇ قۇرۇلۇش ئۆچۈرۈلسە Ú¾Ûچقانداق تەرجىمە ھۆججىتىنى ئۆچۈرمەيدۇ.پەرقنى سÛلىشتۇرۇۋاتىدۇ…مۇندەرىجە:قۇرۇلۇش «%s» نى ئۆچۈرەمسىز؟ھۆججەتنى دىسكىدىن قايتا يۈكلەمسىز؟ ئەگەر بۇنداق قىلسىڭىز Poedit تا ساقلىمىغان ئۆزگەرتىشلەر ساقلانمايدۇ.ئەسلى تÛكىستكە ئوخشايدىغان بارلىق تەرجىمىلەرنى ئۆچۈرەەمسىز؟ئىشلىتىلمەيدىغان ھەممە تەرجىمىنى ئۆچۈرەمسىز؟ساقلىما(&N)ساقلىماقايتا كۆرسەتمەدەل ماسلاشقانغا ئىشلەش زۆرۈر بەلگىسى سالمايدۇقايتا كۆرسەتمەئاخىرقى تەرجىمىنى چۈشۈرۈۋاتىدۇ…بۇ قۇرۇلۇشتا تەرجىمە چۈشۈرۈش چەكلەنگەن.قىسقۇچ ياكى ھۆججەتنى بۇ جايغا سۆرەڭقىسقۇچ ياكى ھۆججەتنى بۇ جايغا سۆرەڭﭼﯧﻜﯩﻦ(&X)HTML چىقار(&X)…تەھرىرئىزاھات تەھرىر(&C)ئىزاھات تەھرىر(&C)ئىزاھات تەھرىرئىزاھات تەھرىرقۇرۇلۇش تەھرىربۇ قۇرۇلۇشنى تەھرىرلەتەھرىرلەۋاتىدۇتەھرىر…ئÛلخەت:پۈتۈن ئÛكرانغا كىرھۆججەت كۆپلۈك شەكىل Ø¨ÛØ´Ù‰Ø¯Ø§ ھۆججەت تۈرلىرىنىڭ ئوخشاش بولمىغان كۆپلۈك شەكلىدىكى سانىغۇچ تۈرلىرى بار ئىكەنخاتالىق بار تۈرلەر ئالدىداخاتالىق بار تۈرلەر ئالدىداخاتالىق بار تۈرلەر تىزىمدا قىزىل رەڭدە بەلگە سÛلىنىدۇ. بۇ خىل تۈرنى تاللىسىڭىز خاتالىقنىڭ تەپسىلاتىنى كۆرسىتىدۇ.ھۆججەت ئÛچىش خاتالىقىھۆججەتنى ساقلاشتا خاتالىق كۆرۈلدىXLIFF ھۆججىتىنى يۈكلەۋاتقاندا خاتالىق كۆرۈلدى: %sخاتالىق: خاتالىقھەممىسىتەرجىمە خاتىرىسىدىن دەل ماس كەلگىنىمۇستەسنا يولTMX ÙƒÛ• چىقار…سۈپىتىدە چىقار…HTML غا چىقار…TMX ÙƒÛ• چىقار…HTML غا چىقىرىۋاتىدۇتەرجىمە خاتىرىسىنى «%s» غا چىقىرالمىدى.تەرجىمىنى چىقىرىۋاتىدۇ…مەنبەدىن يايتەرجىمانغا ئىزاھاتنى ئاجرىتىش ئورنى:تÛكىستنى مەنبە ھۆججەتتىن تۆۋەندىكى مۇندەرىجىگە چىقار:تەرجىمە تىزىقىنى %s ھۆججەتتىن ئاجرىتىۋاتىدۇ…تەرجىمە تىزىقىنى %s ھۆججەتتىن ئاجرىتىۋاتىدۇ…ئاجراتقۇچ ئورناتئاجراتقۇچPoedit جەريانى بىلەن ئالاقە قىلالمىدى.ئەسلى كودتىن ھەرپ تىزىقىنى ئاجرىتالمىدى.ئاجراتقان تەرجىمە ھۆججەتنى يۈكلىيەلمىدى.gettext كاتالوگىنى بىرلەشتۈرۈش مەغلۇپ بولدى.تەرجىمە خاتىرىسىنى ÙŠÛڭىلىيالمىدى: %sھۆججەتھۆججەتنى ئاچالمىدىھۆججەت «%s» مەۋجۇت ئەمەس.ھۆججەت «%s» تەرجىمە قىلىدىغان ھۆججەت ئەمەس.ھۆججەت «%s» نى ئوقۇشقىلا بولىدۇ Û‹Û• ساقلىغىلى بولمايدۇ. باشقا ئىسىمدا ساقلاڭ.ئىزدەكÛيىنكىنى ئىزدەئالدىنقىنى ئىزدەئىزدە Û‹Û• ئالماشتۇر…ئىزاھاتتىن ئىزدەئەسلى تÛكستتىن ئىزدەتەرجىمىدىن ئىزدەتÛكىستتىن ئىزدەئالدىنقىنى ئىزدەتىل ئوڭشاتىل ئوڭشاباشنى ئوڭشاباشنى ئوڭشاFlutter تەرجىمە ھۆججەتلەرشەكىل %iشەكىل %i (ئىشلەتمىگەن)GNU gettextئادەتتىكىHTML ھۆججەتياردەميان بالداقنى يوشۇرھالەت بالداقنى يوشۇربۇ ئۇقتۇرۇش ئۇچۇرىنى يوشۇربۇلۇت قەدەمداش قانداق ئىشلەيدۇ؟IDئەگەر تازىلاشنى داۋاملاشتۇرسىڭىز، ئۆچۈرۈلدى بەلگىسى سÛلىنغان ھەممە تەرجىمە Ù…Û•Ú­Ú¯ÛˆÙ„ÛˆÙƒ ئۆچۈرۈلىدۇ. ئەگەر كەلگۈسىدە ئۇلارنى قايتا قوشسىڭىز ÙŠÛ•Ù†Û• باشتىن تەرجىمە قىلىشقا توغرا ÙƒÛلىدۇ.ئەگەر ئىلگىرى ھۆججىتىڭىزنى زىيارەت قىلىش ھوقۇقىنى رەت قىلغان بولسىڭىز، سىستÛما مايىللىقلار › بىخەتەرلىك Û‹Û• شەخسىيەت › شەخسىيەت › ھۆججەت Û‹Û• قىسقۇچتىن قايتىدىن زىيارەت قىلىشقا يول قويۇڭ.ئەگەر ئىلگىرى ھۆججىتىڭىزنى زىيارەت قىلىش ھوقۇقىنى رەت قىلغان بولسىڭىز، سىستÛما تەڭشەكلەر › شەخسىيەت Û‹Û• بىخەتەرلىك › ھۆججەت Û‹Û• قىسقۇچتىن قايتىدىن زىيارەت قىلىشقا يول قويۇڭ.پەرۋا قىلماچوڭ كىچىك ÙŠÛØ²Ù‰Ù„ىشىغا پەرۋا قىلماTMX تىن ئەكىر…تەرجىمە ھۆججىتىنى ئەكىر…TMX تىن ئەكىر…تەرجىمە ھۆججىتىنى ئەكىر…«%s» دىن ئەكىرىۋاتىدۇ…تەرجىمە خاتىرىسىنى ئەكىرەلمىدى.تەرجىمىنى ئەكىرىۋاتىدۇ…ئورنى: %sسىناق نەشرىمۇ ئىچىدەچوڭ/كىچىك ھەرپ بىردەك ئەمەسباغلاشمىغان بوشلۇقتەرجىمان ھەققىدىكى ئۇچۇرئورناتھۆججەت ئىناۋەتسىزيۆتكەپ ئىشلىتىش جەريانى:مەسىلەمەسىلەJSON تەرجىمە ھۆججەتلەرساقلاپ قالتىل ئىسمى ياكى كودىتەرجىمە تىلى ئەسلى تىل بىلەن ئوخشاش.تەرجىمە تىلى تەڭشەلمىگەن.تەرجىمە تىلى:تىل تاللاشتىل قوشۇنى:تىل:ئاخىرقى ئۆزگەرتىشGettext ئاچقۇچلۇق سۆز ھەققىدە بىلدۈرگۈكۆپلۈك ھەققىدە بىلدۈرگۈتەپسىلات بىلدۈرگۈسى%s ھەققىدىكى تەپسىلاتCrowdin ھەققىدە ØªÛØ®Ù‰Ù…Û‡ ÙƒÛ†Ù¾ بىلدۈرگۈGNU gettext ھەققىدە ØªÛØ®Ù‰Ù…Û‡ ÙƒÛ†Ù¾ ئۇچۇرقۇرھۆججەت «%2$s» نىڭ %1$d-قۇرى بۇزۇلغان (ئىناۋەتلىك %3$s سانلىق مەلۇماتى يوق).قۇر ئاخىرى:تىزىملىكتىكى ÙƒÛڭەيتىلگەن نام Ù¾Û•Ø´ بىلەن ئايرىلىدۇ (مەسىلەن: *.cpp;*.h):ئىنگلىزچە يۈكلەLocalazy زور دەرىجىدە ئاپتوماتلاشتۇرۇلغان يەرلىكلەشتۈرۈش سۇپىسى بولۇپ ھەر قانداق كىشىنىڭ مەھسۇلات Û‹Û• مەزمۇنلىرىنى ÙƒÛ†Ù¾ خىل تىلغا تەرجىمە قىلىشنى قۇلايلاشتۇرىدۇ.Poedit تا MO ھۆججەتنى بىۋاسىتە تەھرىرلىگىلى بولمايدۇ.كىچىك ھەرپكە ئۆزگەرتچوڭ ھەرپكە ئۆزگەرتبۇ POT ھۆججەتتىن ÙŠÛÚ­Ù‰ تەرجىمە قۇرىدۇ.باش قىسمى كۆرۈمسىز: «%sÂ»Ú¾ÛØ³Ø§Ø¨Ø§Øª باشقۇرباشقۇرۇش…پەرقنى بىرلەشتۈرۈۋاتىدۇ…كىچىكلەتتەرجىمە قىلىدىغان قۇرۇلۇشنىڭ ئىسمىئاتى:ÙƒÛيىنكى تاماملانمىغىنى(&X)ÙƒÛيىنكى تاماملانمىغىنى(&X)ئىشلەش زۆرۈرئىشلەش زۆرۈرتور خاتالىقى %s(%d).مەركىزى نۇقتىنى ھەرپ تىزمىسى جەدۋىلىدە توختاتماڭ. ئەگەر قوزغاتسىڭىز، چوقۇم Ctrl بىلەن يۆنىلىش كۇنۇپكىسىنى ئىشلىتىپ يول باشلىيالايسىز، ئەمما بۇنداق قىلسىڭىز دەرھال تÛكست كىرگۈزەلەيسىز، Tab نى Ø¨ÛØ³Ù‰Ù¾ مەركىزىي نۇقتىنى يۆتكىمىسىڭىزمۇ بولىدۇ.ÙŠÛÚ­Ù‰&POT/PO ھۆججەتتىن ÙŠÛڭىدىن قۇر…يÛÚ­Ù‰ ھەرپ تىزىقى&POT/PO ھۆججەتتىن ÙŠÛڭىدىن قۇر…يÛÚ­Ù‰ ھەرپ تىزمىسىتەرجىمە قىلىدىغان ÙŠÛÚ­Ù‰ ھەرپ تىزىقى:ÙƒÛيىنكى كۆپلۈك شەكلىكÛيىنكى كۆپلۈك شەكلىياقماس كەلگىنى تÛپىلمىدىئالدىن تەرجىمە قىلغىلى بولىدىغان تۈر يوق.ھۆججەتتە بۇ ھەرپ تىزىقىنىڭ ئەسلى كودتا كۆرۈنىدىغان ئورۇن ئۇچۇرى تەمىنلەنمىگەن.ماس كەلگەنلىرى تÛپىلمىدىتەرجىمىدە مەسىلە بايقالمىدى.Ú¾ÛØ³Ø§Ø¨Ø§ØªÙ‰Ú­Ù‰Ø²Ø¯Ø§ Ú¾Ûچقانداق تەرجىمە قۇرۇلۇشى تÛپىلمىدى.ئىشلىتىش ئۇسۇلى ئۇچۇرى يوقكۆپلۈك شەكىللىرىنىڭ ھەممىسىنى تەرجىمە قىلمىسىڭىزمۇ بولىدۇ.ھوقۇق Ø¨ÛØ±Ù‰Ù„مىگەن، قايتا تىزىمغا كىرىڭ.تەرجىمانلارغا ئىزاھاتجەزملەبىرپەقەت ئۆزىڭىزنىڭ تەرجىمە خاتىرە سۈپىتىڭىزگە ئىشەنگەندىلا ئاندىن قوزغىتىڭ. كۆڭۈلدىكى ئەھۋالدا، تەرجىمە خاتىرىسىدە ماس ÙƒÛ•Ù„Ú¯Û•Ù† ھەممىسىگە ئىشلەش زۆرۈر بەلگىسى قويۇلىدۇ ھەمدە ئىشلىتىشتىن ئىلگىرى قايتا تەكشۈرۈش ÙƒÛØ±Û•Ùƒ.تولۇق ماس كەلگەننىلا تولدۇربۇلۇت تەرجىمىسىنى ئاچ…يÛقىنقىنى ئاچتەرجىمە ھۆججەتلەرنى ئÛچىپ Û‹Û• تەھرىرلەيدۇ.بۇلۇت تەرجىمىسىنى ئاچبۇلۇت تەرجىمىسىنى ئاچ…ھۆججەت ئاچتەھرىرلىگۈچتە ئاچتەھرىرلىگۈچتە ئاچيÛقىنقىنى ئاچپايدىلانما ھۆججەتنى ئاچئاچ…ئاچ…تاللانمىلارباشقائالدىنقى تاماملانمىغىنى(&R)ئالدىنقى تاماملانمىغىنى(&R)PO تەرجىمە ھۆججەتلەرPOT تەرجىمە ھۆججەتلەرPOT ھۆججەتلىرى پەقەتلا Ù‚Ûلىپ بولۇپ، ئۆزى Ú¾Ûچقانداق تەرجىمىنى ئۆز ئىچىگە ئالمايدۇ. تەرجىمە قىلىش ئۈچۈن، Ù‚Ûلىپ ئاساسىدىكى ÙŠÛÚ­Ù‰ بىر PO ھۆججىتى قۇرۇڭ.چاپلاچاپلاپ ئۇسلۇبقا ماسلاشيولبۇ قۇرۇلۇشتىكى ھەممە ھۆججەتنى ئەسلى كودتىن ÙŠÛڭىلايدۇ.ھوقۇق رەت قىلىندى.تەرجىمىدە ئورۇن بەلگىسى «%s» ÙƒÛ•Ù….ئورۇن بەلگىسى توغرىلىقىمۇناسىپ PO ھۆججەتنى ئÛچىپ تەھرىرلەڭ. ئۇنى ساقلىغاندا، MO ھۆججىتىمۇ ÙŠÛڭىلىنىدۇ.ئالدى بىلەن ھۆججەتنى ساقلاڭ. تۆۋەندىكى مەزمۇنلارنى ئۇنىڭدىن ئىلگىرى تەھرىرلىگىلى بولمايدۇ.كۆپلۈككۆپلۈك شەكلى تەرجىمىسىبۇ ھۆججەتتە ئىشلىتىلگەن كۆپلۈك شەكلى %s غا نىسبەتەن ئالاھىدە.كۆپلۈك شەكلى:PoeditPoedit - كاتالوگ باشقۇرغۇچبۇ «%s» ھۆججەتتىكى ئىناۋەتسىز مەزمۇننى Poedit ئۆزلۈكىدىن تۈزەتتى.Poedit ئىلگىرىكى تەرجىمە ھۆججىتى ياكى پۈتكۈل تەرجىمە خاتىرىڭىزگە ئاساسەن ÙŠÛÚ­Ù‰ بۆلەكنى تولدۇرۇشنى سىنايدۇ. ئاساسەن بوش بولغان تەرجىمە خاتىرىسىنى ئىشلىتىشنىڭ ئانچە ئۈنۈمى بولمايدۇ، بىراق ئۇنىڭغا ØªÛØ®Ù‰Ù…Û‡ ÙƒÛ†Ù¾ تەرجىمە قوشسىڭىز ئۇ ياخشىلىنىدۇ.ھەرپ تىزىقىنىڭ ئەسلى كودنىڭ قايسى جايىدا ئىشلىتىلگەنلىكىنى Poedit كۆرسىتەلمەيدۇ، چۈنكى ھۆججەتنى نەقىل ئورنىدىنمۇ ئىشلەتكىلى بولمايدۇ ياكى ئۇ ئەمەلىي ھۆججەتنى نىشانلىمىغان بەلگە نەقىلى بولۇشى مۇمكىن.Poedit ئىشلىتىش ئوڭاي تەرجىمە تەھرىرلىگۈچ.Poedit بۇ «%s» ھۆججەتنى ئاچالمىغان.ئالدىن تەرجىمە(&T)…ئالدىن تەرجىمەئالدىن تەرجىمە قىلىندىئالدىن تەرجىمە قىلىنغىنى %u تىزىقئالدىن تەرجىمە قىلىنغىنى %u تىزىقتەرجىمە خاتىرىسىدىن ئالدىن تەرجىمە قىلىۋاتىدۇ…ئالدىن تەرجىمە قىلىۋاتىدۇ…ئالدىن تەرجىمە تەرجىمە خاتىرىسىدىكى دەل ياكى مۈجمەل ماس ÙƒÛ•Ù„Ú¯Û•Ù† تەرجىمە قىلمىغان تىزىقلارنى ئۆزلۈكىدىن ئىزدەپ تÛپىپ Û‹Û• ئۇلارنىڭ تەرجىمىسىنى تولدۇرىدۇ.ئالدىن تەرجىمە قىلىش ئۈچۈن مەنبە تÛكىستىنى ئىشلەتكىلى بولۇشى ÙƒÛØ±Û•Ùƒ. ئەگەر ئەمەلىي تÛكىست بولماي ID لا ئىشلىتىلسە ئىشلىمەيدۇ.ئالدىن تەرجىمە قىلىش ئۈچۈن مەنبە تÛكىستنىڭ تىلى ئÛنىق بولۇشى ÙƒÛØ±Û•Ùƒ. Poedit بۇ ھۆججەتتىن ئۇنى بايقىيالمىدى.مايىللىقمايىللىق…مايىللىق…ھەرپ تىزىقىنى تەييارلاۋاتىدۇ…مەۋجۇت ھۆججەتنىڭ پىچىمىنى ساقلاپ قالىدۇئالدىنقى كۆپلۈك شەكلىئالدىنقى كۆپلۈك شەكلىئالدىنقى مەنبە تÛكستئىلگىرى تەھرىرلەنگەنئىلگىرى تەھرىرلەنگەنقۇرۇلۇش ئاتى Û‹Û• نەشرى:قۇرۇلۇش ئاتى:قۇرۇلۇش:قۇرۇلۇشلارتىنىش بەلگە تەكشۈرۈشتازىلائۆچۈرۈلگەن تەرجىمىنى تازىلاچÛكىنتۆۋەندىكى خاتالىق تۈپەيلىدىن ھۆججەت مەزمۇنى ئوقۇيالمىدى: %sÙŠÛقىنقى ھۆججەتلەرقايتىلايÛڭىلاھۆججەتنى قايتا يۈكلەھۆججەتنى قايتا يۈكلەقالغىنى: %dچىقىرىۋەتمەنبە بىلەن ئوخشاش تەرجىمىلەرنى چىقىرىۋەتمەنبە بىلەن ئوخشاش تەرجىمىلەرنى Ú†Ù‰Ù‚Ù‰Ø±Ù‰Û‹ÛØªÙ‰Ø¯Û‡Ú†Ù‰Ù‚Ù‰Ø±Ù‰Û‹ÛØªÙ‰Ù„Ú¯Û•Ù† ھەرپ ØªÙ‰Ø²Ù‰Ù‚Ù‰Ú†Ù‰Ù‚Ù‰Ø±Ù‰Û‹ÛØªÙ‰Ù„Ú¯Û•Ù† ھەرپ ØªÙ‰Ø²Ù‰Ù‚Ù‰Ú†Ù‰Ù‚Ù‰Ø±Ù‰Û‹ÛØªÙ‰Ù„Ú¯Û•Ù† ھەرپ تىزىقى(ئەمدى ئىشلىتىلمەيدۇ):ئالماشتۇرھەممىنى ئالماشتۇر(&A)ھەممىنى ئالماشتۇر(&A)ئالمىشىدىغان تÛكىستئالماشتۇر…ھۆججەت Ø¨ÛØ´Ù‰Ø¯Ù‰ÙƒÙ‰ زۆرۈر بولغان كۆپلۈك شەكلى ÙƒÛ•Ù….ئەسلىگە قايتۇرتەرجىمە خاتىرىسىنى ئەسلىگە قايتۇرتەرجىمە خاتىرىسى ئەسلىگە قايتۇرۇلسا ساقلانغان بارلىق تەرجىمىنىڭ ھەممىسى پۈتۈنلەي ئۆچۈرۈلىدۇ. بۇ مەشغۇلاتتىن ÙŠÛنىۋالالمايسىز.ئىزدىگۈچتە كۆرسەتتەكشۈرساقلاباشقا ئاتتا ساقلا(&A)…باشقا ئاتتا ساقلا(&A)…ساقلاۋەرساقلاۋەرباشقا ئاتتا ساقلاباشقا ئاتتا ساقلا…ئۆزگەرتكەننى ساقلاھۆججەت ساقلاXCLOC ھۆججەت پەرقلىق ئورۇندا ساقلاشنى قوللىمايدۇ.ئÛكران كەسمىسى:ھەممىنى تاللا(&A)ھەممىنى تاللائەكىرىدىغان TMX ھۆججىتىنى تاللاڭمۇندەرىجە تاللاتەرجىمە ھۆججىتىنى تاللاڭئەكىرىدىغان تەرجىمە ھۆججىتىنى تاللاڭتەرجىمە Ù‚Ûلىپىنى تاللاڭياقتۇرىدىغان تىلنى تاللاڭتىل تەڭشەشتىل تەڭشەشتەڭشەكلەرتەڭشەكلەر…يان بالداقنى كۆرسەتئىملا Û‹Û• گرامماتىكا كۆرسەتھالەت بالداق كۆرسەتتىزىق &ID نى كۆرسەتئالماشتۇرىدىغاننى كۆرسەتقورال بالداقنى كۆرسەتئاگاھلاندۇرۇشنى كۆرسەتمەنبە باشقۇرغۇچتا كۆرسەتقىسقۇچتا كۆرسەتيان بالداقنى كۆرسەت ياكى يوشۇريان بالداقنى كۆرسەتھالەت بالداقنى كۆرسەتتىزىق &ID نى كۆرسەتئاگاھلاندۇرۇشنى كۆرسەتيان بالداقتىزىمغا كىرتىزىمدىن چىقتىزىمغا كىرىڭ%s‎ غا تىزىمغا كىربۇلۇت Ú¾ÛØ³Ø§Ø¨Ø§ØªÙ‚ا تىزىمغا كىرCrowdin غا تىزىمغا كىربۇلۇت Ú¾ÛØ³Ø§Ø¨Ø§ØªÙ‚ا تىزىمغا كىرتىزىمدىن چىقبىرلىكئىدراكلىق كۆچۈر/چاپلائىدراكلىق سىزىقچەئىدراكلىق ئۇلانمائىدراكلىق قوش پەشھۆججەت تەرتىپى بويىچە تەرتىپلە(&A)مەنبە بويىچە تەرتىپلە(&S)تەرجىمە بويىچە تەرتىپلە(&T)ھۆججەت تەرتىپى بويىچە تەرتىپلە(&A)مەنبە بويىچە تەرتىپلە(&S)تەرجىمە بويىچە تەرتىپلە(&T)مەنبە كودىنىڭ كودلىنىشى:مەنبە كود ئاجراتقۇچ مەنبە كودتىكى تەرجىمە قىلغىلى بولىدىغان ھەرپ تىزىقىنى ئىزدەپ Û‹Û• ئۇلارنى ئاجرىتىشقا ئىشلىتىلىدۇ، شۇڭلاشقا ئۇلارنى تەرجىمە قىلغىلى بولىدۇ.مەنبە كودىنى ئىشلەتكىلى بولمايدۇ.مەنبە كودى تÛپىلمىدىمەنبە تÛكىستمەنبە تÛكىست IDمەنبە تÛكىست - %sمەنبە ئاچقۇچلۇق سۆزمەنبە يولمەنبە ئاچقۇچلۇق سۆزمەنبە يولتاۋۇشئىملا تەكشۈرۈش چەكلەندى، چۈنكى %s ئۈچۈن لۇغەت ئورنىتىلمىغان.ئىملا Û‹Û• گرامماتىكاسۆزلەشنى باشلاسۆزلەشنى توختاتساقلانغان تەرجىمە:ھەرپ تىزىقى مەزمۇنى: %sھەرپ تىزىقى پەرقلەندۈرگۈچ: %sھەرپ تىزىقى ئۇزۇنلۇقىھەرپ تىزىقى ئۇزۇنلۇقى: تەرجىمە | مەنبەئىزدەيدىغان ھەرپ تىزىقىھەرپ تىزىقى ئاساسىدىكى Crowdin قۇرۇلۇشىنى قوللىمايدۇ.ئالماشتۇرىدىغانتەۋسىيەلەرئەگەر تەرجىمە تىلى توغرا تەڭشەلمىگەن بولسا تەۋسىيەنى ئىشلەتكىلى بولمايدۇ. كۆپلۈك شەكىلگە ئوخشاش باشقا ئىقتىدارلارمۇ تەسىرگە ئۇچرىشى مۇمكىن.مەنبە تÛكىستتە بولمىغان ئارتۇقچە ئورۇن بەلگىسى «%s».GNU gettext قورالى تونۇيالايدىغان بارلىق پىروگرامما تىللىرى (PHP, C/C++, C#, Perl, Python, Java, JavaScript Û‹Û• باشقىلار) نى قوللايدۇ.قەدەمداشلاCrowdin بىلەن قەدەمداشلاتەرجىمىنى Crowdin بىلەن قەدەمداشلايدۇقەدەمداشلاۋاتىدۇقەدەمداش خاتالىقىCrowdin بىلەن قەدامداشلىيالمىدى.كۆپلۈل شەكلىنىڭ باشى("%s")دا گرامماتىكىلىق خاتالىق بار.TMTMX ھۆججەتلەرمەۋجۇت POT Ù‚Ûلىپىدىن تەرجىمە قىلغىلى بولىدىغان تىزىقنى ئاجرىتىدۇ.قوشۇن ئىسمى Û‹Û• ئÛلخەت Ø¦Ø§Ø¯Ø±ÛØ³Ù‰ ياكى تور Ø¦Ø§Ø¯Ø±ÛØ³Ù‰ØªÛكىست ئالماشتۇرۇشتەرجىمە خاتىرىسىدە بۇ ھۆججەت مەزمۇنىغا ئوخشاپ ÙƒÛØªÙ‰Ø¯Ù‰ØºØ§Ù† Ú¾Ûچقانداق ھەرپ تىزىقىنى ئۆز ئىچىگە ئالمىغان. Poedit تەرجىمىڭىزدىن ÙŠÛØªÛ•رلىك ئۆگەنگەندىن ÙƒÛيىن ئاندىن ÙŠÛØ±Ù‰Ù… ئاپتوماتىك تەرجىمىدە رولىنى جارى قىلدۇرىدۇ.بۇ TMX ھۆججىتىنىڭ پىچىمى خاتا.ئەگەر ساقلىسىڭىز باشقا ئەپتىكى ئۆزگەرتىشلەر يوقىلىدۇ.ھۆججەتنى MO پىچىمىغا ھاسىللاپ Û‹Û• ئىشلەتكىلى بولمايدۇ.بۇ ھۆججەتتە تەكرار تۈر بار، بۇنىڭغا يول قويۇلمايدۇ ھەمدە ئۇنىڭ ئىشلىتىلىشىگە تەسىر كۆرسىتىدۇ. بۇ مەسىلىنى Poedit Ú¾Û•Ù„ قىلدى، ئەمما سىز «ئىشلەش زۆرۈر» بەلگىسى قويۇلغان ھەر قانداق تەرجىمىنى ئەگەر زۆرۈر بولسا تەكشۈرۈپ تۈزىتىڭ.تەرجىمە تەڭشىكىدە بەلگىلەنگەندەك ھۆججەتنى «%s» ھەرپ توپلىمىدا ساقلىيالمايدۇ. ئۇنى ‪UTF-8 ھەرپ توپلىمىدا ‬ساقلىغاندىمۇ، تەڭشەك مۇناسىپ ئۆزگىرىدۇ.ھۆججەت ئۆزگەرتىلدى. ئۆزگەرتكەننى ساقلامسىز؟بۇ ھۆججەتنىڭ پىچىمىنى Poedit تونىمىغان.ھۆججەت MO پىچىمىدا ھاسىللاندى، ئەمما ئۇ ئادەتتىكىدەك توغرا ئىشلىمەسلىكى مۇمكىن.ھۆججەت بىخەتەر ساقلاندى ھەمدە MO پىچىمىدا ھاسىللاندى، ئەمما ئۇ ئادەتتىكىدەك توغرا ئىشلىمەسلىكى مۇمكىن.ھۆججەت بىخەتەر ساقلاندى ئەمما MO پىچىمىغا ھاسىللاپ ئىشلەتكىلى بولمايدۇ.ھۆججەت بىخەتەر ساقلاندى.ھۆججەت «%s» نى ئاچقىلى بولمىدى.ھۆججەت «%s» نى ساقلىغىلى بولمىدى.بۇ «%s» ھۆججەت باش ئەپتە ئۆزگەرتىلدى.ھازىرقى توغرا بولمىغان تەرجىمىگە مۇناسىپ كونا ئەسلى تÛكىست (بۇ Ù‚ÛØªÙ‰Ù…لىق ÙŠÛڭىلاشتىن ئىلگىرى ئۆزگەرتىلگەن)بۇ ھۆججەتنىڭ تەرجىمىسىنى تولدۇرۇشنىڭ قۇلاي يولى ئۇنى POT تىن ÙŠÛڭىلاش:تەرجىمە بوشلۇقتىن باشلانمايدۇ.تەرجىمە ÙŠÛÚ­Ù‰ قۇر بىلەن ئاخىرلاشقان، ئەمما ئەسلى تÛكىستتە ئۇنداق ئەمەس.تەرجىمە بوشلۇق بىلەن ئاخىرلاشقان، ئەمما ئەسلى تÛكىست ئۇنداق ئەمەس.تەرجىمە «%s» بىلەن ئاخىرلاشقان، ئەمما ئەسلى تÛكىست «%s» بىلەن ئاخىرلاشقان.تەرجىمە ئاخىرىدا ÙŠÛÚ­Ù‰ بىر قۇر ÙƒÛ•Ù….تەرجىمە ئاخىرىدا بىر بوشلۇق ÙƒÛ•Ù….تەرجىمە ئىشلىتىشكە تەييار بولدى، ئەمما %d ØªÛˆØ±ØªÛØ®Ù‰ تەرجىمە قىلىنمىغان.تەرجىمە ئىشلىتىشكە تەييار بولدى، ئەمما %d ØªÛˆØ±ØªÛØ®Ù‰ تەرجىمە قىلىنمىغان.تەرجىمە ئىشلىتىشكە تەييار بولدى.تەرجىمە «%s» بىلەن ئاخىرلىشىشى ÙƒÛØ±Û•Ùƒ.تەرجىمە «%s» بىلەن ئاخىرلاشماسلىقى ÙƒÛØ±Û•Ùƒ.تەرجىمە جۈملە بىلەن باشلىنىدۇ.تەرجىمە كىچىك ھەرپ بىلەن باشلىنىدۇ.تەرجىمە بوشلۇق بىلەن باشلانغان، ئەمما ئەسلى تÛكىست ئۇنداق ئەمەس.تەرجىمىگە ئىشلەش زۆرۈر بەلگىسى سÛلىنغان، چۈنكى ئۇلار توغرا بولماسلىقى مۇمكىن. ئۇلارنىڭ توغرىلىقىنى تەكشۈرۈڭ.تەرجىمىسى يوق. بۇ ئادەتتىكىدەك ئەمەس.ھۆججەت Ùورماتىدا مەسىلە بار(ئەمما ئۇ مۇۋەپپەقىيەتلىك ساقلاندى).Localazy غا تەرجىمە يۈكلىگەندە خاتالىق كۆرۈلدى.ھۆججەتنى يۈكلەۋاتقاندا خاتالىق كۆرۈلدى. Ø´Û‡ سەۋەپتىن بىر قىسىم سانلىق مەلۇمات يوقاپ ÙƒÛØªÙ‰Ø´Ù‰ ياكى بۇزۇلۇشى مۇمكىن.بۇ تەڭشەكلەر PO ھۆججەتلەرنىڭ ئىچكى پىچىمىغا تەسىر كۆرسىتىدۇ. ئەگەر سىزنىڭ مۇئەييەن تەلىپىڭىز مەسىلەن نەشر تىزگىنلەش، ئۇلارنى تەڭشەڭ.بۇ JSON ھۆججىتى تەرجىمە ھۆججىتى ئەمەس ھەمدە Poedit تا تەھرىرلىگىلى بولمايدۇ.بۇ مەشغۇلات ئەسلى تÛكىستكە دەل ماس ÙƒÛلىدىغان تەرجىمىلەرنى Ø¦Û†Ú†ÛˆØ±ÛˆÛ‹ÛØªÙ‰Ø¯Û‡. بۇ مەشغۇلاتتىن يانغىلى بولمايدۇ.بۇ ھۆججەتنىڭ كۆپلۈك شەكلىدىكى تۈرلىرى بار ئىكەن ئەمما كۆپلۈك شەكلىنىڭ ھۆججەت Ø¨ÛØ´Ù‰Ø¯Ù‰ÙƒÙ‰ سەپلىمىسى يوقكەن.بۇ ھۆججەت مەنبە تÛكىستنىڭ ئورنىغا ھەرپ تىزىقى ID نى ئىشلىتىدۇ. Poedit سىز ئۈچۈن «%s» ھۆججىتىدىن ئىنگلىزچە تÛكىستنى يۈكلىيەلەيدۇ.بۇ يەشكۈچ بۇيرۇقىنى ئىجرا قىلىشقا ئىشلىتىلىدۇ %o چىقىرىدىغان ھۆججەتنىڭ ئىسمى، %K ھالقىلىق سۆز تىزىملىكى، %F كىرگۈزگەن ھۆججەت تىزىملىكى، %C ھەرپ بەلگە تىزمىسى بەلگىسى (تۆۋەندىكىنى كۆرۈڭ).بۇ تىزىق Poedit نىڭ تەرجىمە خاتىرىسىدە بايقالدى.پەقەت مەنبە كود ھەرپ توپلىمىدا بەلگىلىگەندىلا ئاندىن بۇيرۇق قۇرىغا قوشۇلىدۇ. %c ھەرپ توپلىمى قىممىتى قىلىپ ÙŠÛØ´Ù‰Ù„ىدۇ.كىرگۈزگەن ھەر بىر ھۆججەتكە نىسبەتەن يۇقىرىدىكى مەزمۇن بۇيرۇق قۇرىنىڭ كەينىگە قوشۇلىدۇ. %f ھۆججەت نامى بولۇپ ÙŠÛØ´Ù‰Ù„ىدۇ.ھەر بىر ھالقىلىق سۆزگە قارىتا يۇقىرىدىكى مەزمۇن بۇيرۇق قۇرىنىڭ كەينىگە قوشۇلىدۇ. %k ھالقىلىق سۆز بولۇپ ÙŠÛØ´Ù‰Ù„ىدۇ.جەمئىئۆزگىرىشتەرجىمە تۈرى Gettext سىستÛمىسىدا قولدا كىرگۈزۈلمەيدۇ، ئەمما مەنبە كودتىن ئۆزلۈكىدىن ئاجرىتىلىدۇ. بۇنداق بولغاندا، ئەڭ ÙŠÛÚ­Ù‰ Û‹Û• ئەڭ توغرا بولغان تەرجىمە قىلىشقا تÛگىشلىك تۈرلەرنى بىلەلەيمىز. تەرجىمانلار ئادەتتە ئىجادكارلار ئۇلارغا تەييارلاپ بەرگەن PO Ù‚Ûلىپ ھۆججەت (POT) نى ئىشلىتىدۇ.بۇلۇت قۇرۇلۇشى تەرجىمىسىتەرجىمە قىلىنغان: %d / %d (%d %%)تەرجىمىسىتەرجىمە تىلىتەرجىمە خاتىرىسىتەرجىمىگە ئىشلەش زۆرۈر(&W)تەرجىمە خاسلىقىتەرجىمە ھۆججەت ئاللىبۇرۇن ÙŠÛڭىلاندى، ھەرپ تىزىقىدا Ú¾Ûچقانداق ئۆزگىرىش بولمىدى.تەرجىمە ھۆججەتتىكى %s ئۆزگىرىش ÙŠÛڭىلاندى.تەرجىمە ھۆججەتتىكى %s ئۆزگىرىش ÙŠÛڭىلاندى.تەرجىمە خاتىرە ساندانى بۇزۇلدى: %s (%d).تەرجىمە خاتىرىسى خاتالىقى: %s (%d).تەرجىمىگە ئىشلەش زۆرۈر(&W)تەرجىمە خاسلىقىتەرجىمە تەۋسىيەلىرىتەرجىمە تەۋسىيەسى ئۈچۈن مەنبە تÛكىستىنى ئىشلەتكىلى بولۇشى ÙƒÛØ±Û•Ùƒ. ئەگەر ئەمەلىي تÛكىست بولماي ID لا ئىشلىتىلسە ئۇلار ئىشلىمەيدۇ.تەرجىمە تەۋسىيەسى ئۈچۈن مەنبە تÛكىستنىڭ تىلى ئÛنىق بولۇشى ÙƒÛØ±Û•Ùƒ. Poedit بۇ ھۆججەتتىن ئۇنى بايقىيالمىدى.تەرجىمە - %sتەرجىمىنى مەنبە كودتىن ÙŠÛڭىلىيالمايدۇ، چۈنكى ھۆججەتتە بەلگىلەنگەن ئورۇندىن كود تÛپىلمىدى.ئىككىUTF-8 (تەۋسىيە)ÙŠÛنىۋالXCLOC ھۆججىتىدە ئويلىشىلمىغان ÙƒÛ•Ù… مەزمۇن بار.بىر تەرەپ قىلغىلى بولمايدىغان مۇستەسنا يۈز بەردى: %sUnix (تەۋسىيە)يوچۇن Crowdin خاتالىقى.يوچۇن خاتالىقتەرجىمە قىلىنمىغانيÛڭىلاقىسقىچە مەزمۇننى ÙŠÛڭىلاھەممىنى ÙŠÛڭىلاقۇرۇلۇشتىكى بارلىق كاتالوگنى ÙŠÛڭىلابۇ قۇرۇلۇشتىكى بارلىق كاتالوگنى ÙŠÛڭىلامدۇ؟&POT ھۆججەتتىن ÙŠÛڭىلا…&POT ھۆججەتتىن ÙŠÛڭىلا…كودتىن ÙŠÛڭىلاPOT تىن ÙŠÛڭىلاكودتىن ÙŠÛڭىلائەسلى كودتىن ÙŠÛڭىلاقىسقىچە مەزمۇننى ÙŠÛڭىلايÛڭىلانمىلاريÛڭىلىيالمىدىقۇرۇلۇش مۇندەرىجىسىنى ÙŠÛڭىلاۋاتىدۇتەرجىمىلەرنى ÙŠÛڭىلاۋاتىدۇئىشلەتكۈچى ئۇچۇرىنى ÙŠÛڭىلاۋاتىدۇ…تەرجىمىلەرنى %s غا يۈكلىيەلمىدى.تەرجىمىلەرنى %s غا يۈكلەۋاتىدۇ…تەرجىمىلەرنى يۈكلەۋاتىدۇ…ئىختىيارىچە ئىپادە ئىشلەتئىختىيارىچە خەت نۇسخا ئىشلىتىش:ئىختىيارىچە تÛكىست بۆلىكى خەت نۇسخا ئىشلىتىش:بۇ تىلنىڭ كۆڭۈلدىكى قائىدىسىنى ئىشلەتبۇ ئاچقۇچلۇق سۆزلەر (Ùۇنكىتسىيە نامى)نى ئىشلىتىش ئارقىلىق مەنبە ھۆججەتلەردىكى تەرجىمە قىلغىلى بولىدىغان ھەرپ تىزمىسىنى تونۇيدۇ:تەرجىمە خاتىرىسىنى ئىشلەتدەلىللەشدەلىللەش نەتىجىلىرىنەشر %sتەپسىلاتىنى كۆرسىتىدۇ…تەپسىلاتىنى كۆرسىتىدۇ…دەلىللەشنى ساقلاۋاتىدۇ…ئاگاھلاندۇرۇش: Poedit غا مەرھابامەنبەدىن ÙŠÛڭىلىغاندابارلىق سۆزلەرلاكۆزنەككۆزنەكلەرمەنبە تÛكىستكە ئىنگلىزچە ئىشلىتىشنى خالامسىز؟تولۇق ماسلاشقۇر قاتلاش ئورنى:XLIFF تەرجىمە ھۆججەتلەرXcode يەرلىكلەشتۈرۈش كاتالوگىھەئەمەنبە كودتىن تەرجىمە قىلغىلى بولىدىغان ھەرپ تىزىقلىرىنى بىۋاسىتە ئاجرىتالايسىز:Poedit كۆزنىكىگە بىردىن ئارتۇق ھۆججەت تاشلىيالمايسىز.ھۆججەت خاسلىقىدا بەلگىلەنگەن ئورۇندىكى مەنبە كود ھۆججىتىنى ئوقۇيدىغان ھوقۇقىڭىز يوق.بۇ ئۆزگەرتىش ÙƒÛˆÚ†ÙƒÛ• ئىگە بولۇشى ئۈچۈن Poedit نى چوقۇم قايتا قوزغىتىڭ.ئاتىڭىزئەگەر ساقلىمىسىڭىز ئۆزگەرتىشلەر يوقىلىدۇ.ئات Û‹Û• ئÛلخەت Ø¦Ø§Ø¯Ø±ÛØ³Ù‰Ú­Ù‰Ø² GNU gettext ھۆججىتىنىڭ Ø¨ÛØ´Ù‰Ø¯Ù‰ÙƒÙ‰ ئاخىرقى تەرجىمە قىلغۇچى ئۇچۇرى ئۈچۈن ئىشلىتىلىدۇ.نۆليÛقىنلات يىراقلاتئىشلەش زۆرۈرۋاقىتلىق ھۆججەتلەرنى ئۆچۈرمە (سازلاش ئۈچۈن)مەسىلەن: nplurals=2; plural=(n > 1);خاتالىق: ھۆججەتتىكى مۈجىمەل ماس كەلگىنىبەلگىلەنگەن قۇرغا يۆتكەلpoedit:// URI بىر تەرەپ قىلىشAlt+Ctrl+ئاستىEnterسولئوڭShift+ئۈستىaltctrlshift%s ھەققىدە%s نى يوشۇرباشقىلارنى يوشۇرمايىللىق…%s Ú†Ûكىنمۇلازىمەتلەرھەممىنى كۆرسەتتەرجىمە خاتىرىسىدىن ئالدىن تەرجىمەيوچۇن تىلقوللىمايدىغان نەشرى (%s)ئاگاھلاندۇرۇش: you@example.com«%s» ئىناۋەتلىك POT ھۆججىتى ئەمەس.poedit-3.6.3/AUTHORS0000644000175100001660000003501315011674230007542 Maintainer: Vaclav Slavik The list of additional contributors below is outdated. To get accurate information, use git shortlog. For translations, see https://crowdin.com/project/poedit where individual translators are listed. --- historical contributors list: --- Patches: Olivier Sannier Stefan Kowski Christophe Hermier Frederic Giudicelli Tim Dijkstra Tim Kosse Sergio Talens-Oliag Guido Flohr Shane Harper David Fraser Vadim Berezniker Marcin Floryan Stanislav Petrakov Byrial Jensen Translations: Traditional Chinese: Leo Liaw Ying-Chieh Liao Jedi Xingyu Wang Jie Luo Cheng-Chia Tseng Simplified Chinese: 肖业平 Leo Liaw Han Guokai Luo Jie Wang Jian Guo Christopher Meng Alan Luo Croatian: Renato Pavicic Martin Bagić Czech: Vaclav Slavik JindÅ™ich Å esták Dutch: Patrick Hubers Kristof Bal Pjotr Kan Thomas De Rocker Pjotr Vertaalt Estonian: Joosep-Georg Jarvemaa Marko Silluste Mattias Põldaru French: Lionel Allorge Guy Clotilde Nicolas Boos Jean-Michel Poure Jean-Christophe Gigogne Jonathan Ernst Maximilian Schleiss Daniel Thibault Philippe Villiers Alexandre Franke Jean Sanchez German: Bernd Böckmann Lübbe Onken Carsten Stupka René Linke Mark Ziegler Simon Stücher Patrik Kernstock Norwegian Nynorsk: Karl Ove Hufthammer Jon Stødle Eirik U. Birkeland Norwegian BokmÃ¥l: Hans Fr. Nordhaug Polish: Arkadiusz Lipiec Radoslaw Dlugosz Artur Marzec Mateusz Gola Leszek Å»yczkowski Turkish: Hakki Dogusan Roman Neumüller Kaya Zeren Burak Yavuz Latvian: Artis Trops Kristaps Kaupe Arvis LÄcis Italian: Pino Toscano Mirko Tebaldi Renzo Campagna Giuseppe Pignataro Roberto Boriotti Vincenzo Reale Tamil: Prabu Anand Sri Ramadoss Mahalingam Bulgarian: Dimitar Boyn Pavel Constantinov Andrey Alexandrov Alexander Shopov СтоÑн Димитров Swedish: Simon Bohlin Stefan Pettersson Fredrik Wahlberg Andreas Pettersson Georgian: Aiet Kolkhi Romanian: Alexandru Bogdan Munteanu Ovidiu Constantin Sorin Sbarnea Manuel Ciosici Angelescu Catalan: Pau Bosch i Crespo David Planella Joan Coll i Teixidor Slovak: Pavol Cvengros Tibor Pittich Oto Brezina Ivan Masár DuÅ¡an Kazik Martin Kubanik Greek: Simos Xenitellis Velonis Petros Nikos Papadopoulos <231036448@freemail.gr> Japanese: Masapon Suzumizaki-Kimitaka Nobuhiro Iwamatsu Takeshi Hamasaki Naoko Takano Russian: Pavel Maryanov , Stanislav Petrakov Roman A. aka BasicXP Maxim Musatov Icelandic: Sveinn í Felli Spanish: Javier Bravo Alberto Fernández Pérez Lorenzo Luengo Sebastian Barrientos E. Festor Wailon Dacoba Sergi Medina Adolfo Jayme Barrientos Spanish (Puerto Rico): Fernando Ortiz Danish: Lars Dybdahl Anders Jenbo Byrial Jensen Jens Hyllegaard Serbian: Bojan Suzić Milorad Jovanović Ђорђе ВаÑиљевић Portuguese: Lazarus Long Hugo Patrício Sérgio Marques Portuguese (Brazilian): Leonardo Peixoto Creso Moraes Cleber Tavano Jose Carlos Medeiros Igor Ruckert Hungarian: Szilard Vizi Márton Balázs Gábor Nagy Zoltán Faludi Horváth László Petrovics Sándor Lithuanian: Mantas Kriauciunas Liudas Dmitrijevas Kestutis Snieska Ramunas Lukasevicius Rokas Masiulis Gintautas Miliauskas Andrius Å tikonas Algimantas MargeviÄius Farsi: Abbas Izad Hooman Mesgary Morteza Geransayeh Afrikaans: Petri Jooste Slovenian: Luka Marinko Martin Srebotnjak Matej UrbanÄiÄ Mongolian: Mendbayar Bayar Khurelbaatar Lkhagvasuren Punjabi: Amanpreet Singh Alam Albanian: Besnik Bleta Amharic: Tegegne Tefera Hindi: Dhananjaya Sharma Priyank Bolia Esperanto: Tim Morley Cyril Castelbou Belarusian: Siarhei Belarusian (latin): Alaksandar Navicki Breton: Korvigellou an Drouizig Giulia Fraboulet Walloon: Pablo Saratxaga Bangla: Omi Azad Basque: 3ARRANO Euskalgintza Taldea <3arrano@euskalerria.org> Xabier Aramendi Korean: Hojin Choi Hebrew: Nir Lavi Shalom Craimer Yaron Shahrabani Kyrgyz: Ilyas Bakirov Chyngyz Dzhumaliev Ukrainian: Cawko Xakep Hriziv Roman Rax Garfield Asturian: Softastur Galician: Leandro Regueiro Indonesian: Bayu Artanto Andika Triwidada Friulian: Andrea Decorte Finnish: Elias Julkunen Heikki Suopanki Juhani Numminen Lauri Nurmi Kurdish: Erdal Ronahi Tatarish: Albert Fazli Macedonian: Jovan Kostovski Митко КрÑтев Arabic: Mohammed al zaid Ahmad Gharbeia Samkari Abdullah Abouzekry Awadh Al-Ghaamdi Thai: Pun Malay: Mahrazi Mohd Kamal Urdu: Muhammad Shakir Aziz Irish: Seanán Ó Coistín Uyghur: Abduqadir Abliz Valencian: Robert Millan David Planella Vietnamese: Trần Ngá»c Quân Uzbek: Oybek Djuraev Bosnian: Kenan DerviÅ¡ević English (British): Robert Readman Kazakh: Baurzhan Muftakhidinov Marathi: Abhijit Jathar Tajik: Victor Ibragimov Kurdish Sorani: Asos Ap Nepali: Him Prasad Gautam Corsican: Patrick Santa-Maria Aragonese: Jorge Pérez Pérez Azerbaijani: Mushviq Abdulla Icons: Tango Desktop Project [http://tango.freedesktop.org] Mark James, Silk icons [http://www.famfamfam.com/lab/icons/silk] poedit-3.6.3/net.poedit.Poedit.desktop0000644000175100001660000000071015011674230013355 [Desktop Entry] Name=Poedit GenericName=Translation editor MimeType=application/x-po;application/x-gettext;text/x-gettext-translation;text/x-po;application/x-gettext-translation;text/x-gettext-translation-template;application/x-xliff+xml;application/json;application/x-arb; Exec=poedit %F Icon=net.poedit.Poedit Terminal=false Type=Application Categories=Development;Translation; StartupNotify=true Keywords=translate;translation;po;gettext;xliff;flutter; poedit-3.6.3/docs/0000755000175100001660000000000015011674362007506 5poedit-3.6.3/docs/Makefile.in0000644000175100001660000003735715011674351011510 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/admin/ax_boost_base.m4 \ $(top_srcdir)/admin/ax_boost_iostreams.m4 \ $(top_srcdir)/admin/ax_boost_system.m4 \ $(top_srcdir)/admin/ax_boost_thread.m4 \ $(top_srcdir)/admin/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/admin/wxwin.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(dist_man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ BOOST_IOSTREAMS_LIB = @BOOST_IOSTREAMS_LIB@ BOOST_LDFLAGS = @BOOST_LDFLAGS@ BOOST_SYSTEM_LIB = @BOOST_SYSTEM_LIB@ BOOST_THREAD_LIB = @BOOST_THREAD_LIB@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CLD2_LIBS = @CLD2_LIBS@ CPPFLAGS = @CPPFLAGS@ CPPREST_LIBS = @CPPREST_LIBS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ HAVE_CXX17 = @HAVE_CXX17@ ICU_CFLAGS = @ICU_CFLAGS@ ICU_LIBS = @ICU_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ 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@ LUCENE_LIBS = @LUCENE_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PUGIXML_CFLAGS = @PUGIXML_CFLAGS@ PUGIXML_LIBS = @PUGIXML_LIBS@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WXRC = @WXRC@ WX_CFLAGS = @WX_CFLAGS@ WX_CFLAGS_ONLY = @WX_CFLAGS_ONLY@ WX_CONFIG_PATH = @WX_CONFIG_PATH@ WX_CONFIG_WITH_ARGS = @WX_CONFIG_WITH_ARGS@ WX_CPPFLAGS = @WX_CPPFLAGS@ WX_CXXFLAGS = @WX_CXXFLAGS@ WX_CXXFLAGS_ONLY = @WX_CXXFLAGS_ONLY@ WX_LIBS = @WX_LIBS@ WX_LIBS_STATIC = @WX_LIBS_STATIC@ WX_RESCOMP = @WX_RESCOMP@ WX_VERSION = @WX_VERSION@ WX_VERSION_MAJOR = @WX_VERSION_MAJOR@ WX_VERSION_MICRO = @WX_VERSION_MICRO@ WX_VERSION_MINOR = @WX_VERSION_MINOR@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ dist_man_MANS = poedit.1 EXTRA_DIST = generate-docs.make man_asciidoc.conf man_fix.xsl poedit_man.txt all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign docs/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-man1: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: 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) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-man1 install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am uninstall-man \ uninstall-man1 .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: poedit-3.6.3/docs/poedit.10000644000175100001660000000411315011674230010765 '\" t .\" Title: poedit .\" Author: Vaclav Slavik .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 06/11/2018 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" .TH "POEDIT" "1" "06/11/2018" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" poedit \- gettext catalogs editor .SH "SYNOPSIS" .HP \w'\fBpoedit\fR\ 'u \fBpoedit\fR [\fB\-h\fR] [\fB\-\-verbose\fR] [\fIFILE\fR...] .SH "DESCRIPTION" .sp Poedit is GUI editor for GNU gettext translation files\&. .sp When launched with one or more files as argument, it loads and opens them for editing\&. .SH "OPTIONS" .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 Display usage information and exit\&. .RE .PP \fB\-\-verbose\fR .RS 4 Print verbose logging information\&. .RE .SH "AUTHOR" .sp Written by Vaclav Slavik <\m[blue]\fBvaclav@slavik\&.io\fR\m[]\&\s-2\u[1]\d\s+2> .SH "RESOURCES" .sp Web site: \m[blue]\fBhttps://poedit\&.net/\fR\m[] .SH "COPYRIGHT" .sp Copyright (C) 2008\-2025 Vaclav Slavik\&. .sp Free use of this software is granted under the terms of the MIT license\&. .SH "AUTHOR" .PP \fBVaclav Slavik\fR <\&vaclav@slavik\&.io\&> .RS 4 Author. .RE .SH "NOTES" .IP " 1." 4 vaclav@slavik.io .RS 4 \%mailto:vaclav@slavik.io .RE poedit-3.6.3/docs/man_fix.xsl0000644000175100001660000000134015011674230011567 poedit-3.6.3/docs/generate-docs.make0000644000175100001660000000047615011674230013006 ASCIIDOC = asciidoc XSLTPROC = xsltproc XMLTO = xmlto all: poedit.1 clean: rm -f poedit.1 poedit.1: poedit_man.txt man_asciidoc.conf man_fix.xsl $(ASCIIDOC) -d manpage -f man_asciidoc.conf -b docbook -o - poedit_man.txt \ | $(XSLTPROC) -o poedit.1.xml man_fix.xsl - $(XMLTO) man poedit.1.xml rm poedit.1.xml poedit-3.6.3/docs/poedit_man.txt0000644000175100001660000000127015011674230012300 POEDIT(1) ========= Vaclav Slavik NAME ---- poedit - gettext catalogs editor SYNOPSIS -------- $poedit$ [-h] [--verbose] [FILE...] DESCRIPTION ----------- Poedit is GUI editor for GNU gettext translation files. When launched with one or more files as argument, it loads and opens them for editing. OPTIONS ------- -h, --help:: Display usage information and exit. --verbose:: Print verbose logging information. AUTHOR ------ Written by Vaclav Slavik RESOURCES --------- Web site: https://poedit.net/ COPYRIGHT --------- Copyright \(C) 2008-2025 Vaclav Slavik. Free use of this software is granted under the terms of the MIT license. poedit-3.6.3/docs/man_asciidoc.conf0000644000175100001660000000064015011674230012700 [replacements] # interpret --foo and -f as options: (^|[\s]+|\[)(-|—|--)([\w]+)=\1 # repeatable, optional placeholder ("[FILE...]") \[([A-Z]+)(\.\.\.|…)\]=\1 # [-f] indicates optional choice: \[([^]]+)\]=\1 # $poedit$ means command "poedit": \$(.+)\$=\1 poedit-3.6.3/docs/Makefile.am0000644000175100001660000000015015011674230011450 dist_man_MANS = poedit.1 EXTRA_DIST = generate-docs.make man_asciidoc.conf man_fix.xsl poedit_man.txt poedit-3.6.3/deps/0000755000175100001660000000000015011674362007511 5poedit-3.6.3/deps/pugixml/0000755000175100001660000000000015011674362011176 5poedit-3.6.3/deps/pugixml/LICENSE.md0000644000175100001660000000206715011674244012526 MIT License Copyright (c) 2006-2025 Arseny Kapoulkine 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. poedit-3.6.3/deps/pugixml/src/0000755000175100001660000000000015011674362011765 5poedit-3.6.3/deps/pugixml/src/pugixml.hpp0000644000175100001660000015523315011674244014113 /** * pugixml parser - version 1.15 * -------------------------------------------------------- * Copyright (C) 2006-2025, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com) * Report bugs and download new versions at https://pugixml.org/ * * This library is distributed under the MIT License. See notice at the end * of this file. * * This work is based on the pugxml parser, which is: * Copyright (C) 2003, by Kristen Wegner (kristen@tima.net) */ // Define version macro; evaluates to major * 1000 + minor * 10 + patch so that it's safe to use in less-than comparisons // Note: pugixml used major * 100 + minor * 10 + patch format up until 1.9 (which had version identifier 190); starting from pugixml 1.10, the minor version number is two digits #ifndef PUGIXML_VERSION # define PUGIXML_VERSION 1150 // 1.15 #endif // Include user configuration file (this can define various configuration macros) #include "pugiconfig.hpp" #ifndef HEADER_PUGIXML_HPP #define HEADER_PUGIXML_HPP // Include stddef.h for size_t and ptrdiff_t #include // Include exception header for XPath #if !defined(PUGIXML_NO_XPATH) && !defined(PUGIXML_NO_EXCEPTIONS) # include #endif // Include STL headers #ifndef PUGIXML_NO_STL # include # include # include #endif // Check if std::string_view is available #if !defined(PUGIXML_HAS_STRING_VIEW) && !defined(PUGIXML_NO_STL) # if __cplusplus >= 201703L # define PUGIXML_HAS_STRING_VIEW # elif defined(_MSVC_LANG) && _MSVC_LANG >= 201703L # define PUGIXML_HAS_STRING_VIEW # endif #endif // Include string_view if appropriate #ifdef PUGIXML_HAS_STRING_VIEW # include #endif // Macro for deprecated features #ifndef PUGIXML_DEPRECATED # if defined(__GNUC__) # define PUGIXML_DEPRECATED __attribute__((deprecated)) # elif defined(_MSC_VER) && _MSC_VER >= 1300 # define PUGIXML_DEPRECATED __declspec(deprecated) # else # define PUGIXML_DEPRECATED # endif #endif // If no API is defined, assume default #ifndef PUGIXML_API # define PUGIXML_API #endif // If no API for classes is defined, assume default #ifndef PUGIXML_CLASS # define PUGIXML_CLASS PUGIXML_API #endif // If no API for functions is defined, assume default #ifndef PUGIXML_FUNCTION # define PUGIXML_FUNCTION PUGIXML_API #endif // If the platform is known to have long long support, enable long long functions #ifndef PUGIXML_HAS_LONG_LONG # if __cplusplus >= 201103 # define PUGIXML_HAS_LONG_LONG # elif defined(_MSC_VER) && _MSC_VER >= 1400 # define PUGIXML_HAS_LONG_LONG # endif #endif // If the platform is known to have move semantics support, compile move ctor/operator implementation #ifndef PUGIXML_HAS_MOVE # if __cplusplus >= 201103 # define PUGIXML_HAS_MOVE # elif defined(_MSC_VER) && _MSC_VER >= 1600 # define PUGIXML_HAS_MOVE # endif #endif // If C++ is 2011 or higher, use 'noexcept' specifiers #ifndef PUGIXML_NOEXCEPT # if __cplusplus >= 201103 # define PUGIXML_NOEXCEPT noexcept # elif defined(_MSC_VER) && _MSC_VER >= 1900 # define PUGIXML_NOEXCEPT noexcept # else # define PUGIXML_NOEXCEPT throw() # endif #endif // Some functions can not be noexcept in compact mode #ifdef PUGIXML_COMPACT # define PUGIXML_NOEXCEPT_IF_NOT_COMPACT #else # define PUGIXML_NOEXCEPT_IF_NOT_COMPACT PUGIXML_NOEXCEPT #endif // If C++ is 2011 or higher, add 'override' qualifiers #ifndef PUGIXML_OVERRIDE # if __cplusplus >= 201103 # define PUGIXML_OVERRIDE override # elif defined(_MSC_VER) && _MSC_VER >= 1700 # define PUGIXML_OVERRIDE override # else # define PUGIXML_OVERRIDE # endif #endif // If C++ is 2011 or higher, use 'nullptr' #ifndef PUGIXML_NULL # if __cplusplus >= 201103 # define PUGIXML_NULL nullptr # elif defined(_MSC_VER) && _MSC_VER >= 1600 # define PUGIXML_NULL nullptr # else # define PUGIXML_NULL 0 # endif #endif // Character interface macros #ifdef PUGIXML_WCHAR_MODE # define PUGIXML_TEXT(t) L ## t # define PUGIXML_CHAR wchar_t #else # define PUGIXML_TEXT(t) t # define PUGIXML_CHAR char #endif namespace pugi { // Character type used for all internal storage and operations; depends on PUGIXML_WCHAR_MODE typedef PUGIXML_CHAR char_t; #ifndef PUGIXML_NO_STL // String type used for operations that work with STL string; depends on PUGIXML_WCHAR_MODE typedef std::basic_string string_t; #endif #ifdef PUGIXML_HAS_STRING_VIEW // String view type used for operations that can work with a length delimited string; depends on PUGIXML_WCHAR_MODE typedef std::basic_string_view string_view_t; #endif } // The PugiXML namespace namespace pugi { // Tree node types enum xml_node_type { node_null, // Empty (null) node handle node_document, // A document tree's absolute root node_element, // Element tag, i.e. '' node_pcdata, // Plain character data, i.e. 'text' node_cdata, // Character data, i.e. '' node_comment, // Comment tag, i.e. '' node_pi, // Processing instruction, i.e. '' node_declaration, // Document declaration, i.e. '' node_doctype // Document type declaration, i.e. '' }; // Parsing options // Minimal parsing mode (equivalent to turning all other flags off). // Only elements and PCDATA sections are added to the DOM tree, no text conversions are performed. const unsigned int parse_minimal = 0x0000; // This flag determines if processing instructions (node_pi) are added to the DOM tree. This flag is off by default. const unsigned int parse_pi = 0x0001; // This flag determines if comments (node_comment) are added to the DOM tree. This flag is off by default. const unsigned int parse_comments = 0x0002; // This flag determines if CDATA sections (node_cdata) are added to the DOM tree. This flag is on by default. const unsigned int parse_cdata = 0x0004; // This flag determines if plain character data (node_pcdata) that consist only of whitespace are added to the DOM tree. // This flag is off by default; turning it on usually results in slower parsing and more memory consumption. const unsigned int parse_ws_pcdata = 0x0008; // This flag determines if character and entity references are expanded during parsing. This flag is on by default. const unsigned int parse_escapes = 0x0010; // This flag determines if EOL characters are normalized (converted to #xA) during parsing. This flag is on by default. const unsigned int parse_eol = 0x0020; // This flag determines if attribute values are normalized using CDATA normalization rules during parsing. This flag is on by default. const unsigned int parse_wconv_attribute = 0x0040; // This flag determines if attribute values are normalized using NMTOKENS normalization rules during parsing. This flag is off by default. const unsigned int parse_wnorm_attribute = 0x0080; // This flag determines if document declaration (node_declaration) is added to the DOM tree. This flag is off by default. const unsigned int parse_declaration = 0x0100; // This flag determines if document type declaration (node_doctype) is added to the DOM tree. This flag is off by default. const unsigned int parse_doctype = 0x0200; // This flag determines if plain character data (node_pcdata) that is the only child of the parent node and that consists only // of whitespace is added to the DOM tree. // This flag is off by default; turning it on may result in slower parsing and more memory consumption. const unsigned int parse_ws_pcdata_single = 0x0400; // This flag determines if leading and trailing whitespace is to be removed from plain character data. This flag is off by default. const unsigned int parse_trim_pcdata = 0x0800; // This flag determines if plain character data that does not have a parent node is added to the DOM tree, and if an empty document // is a valid document. This flag is off by default. const unsigned int parse_fragment = 0x1000; // This flag determines if plain character data is be stored in the parent element's value. This significantly changes the structure of // the document; this flag is only recommended for parsing documents with many PCDATA nodes in memory-constrained environments. // This flag is off by default. const unsigned int parse_embed_pcdata = 0x2000; // This flag determines whether determines whether the the two pcdata should be merged or not, if no intermediatory data are parsed in the document. // This flag is off by default. const unsigned int parse_merge_pcdata = 0x4000; // The default parsing mode. // Elements, PCDATA and CDATA sections are added to the DOM tree, character/reference entities are expanded, // End-of-Line characters are normalized, attribute values are normalized using CDATA normalization rules. const unsigned int parse_default = parse_cdata | parse_escapes | parse_wconv_attribute | parse_eol; // The full parsing mode. // Nodes of all types are added to the DOM tree, character/reference entities are expanded, // End-of-Line characters are normalized, attribute values are normalized using CDATA normalization rules. const unsigned int parse_full = parse_default | parse_pi | parse_comments | parse_declaration | parse_doctype; // These flags determine the encoding of input data for XML document enum xml_encoding { encoding_auto, // Auto-detect input encoding using BOM or < / class xml_object_range { public: typedef It const_iterator; typedef It iterator; xml_object_range(It b, It e): _begin(b), _end(e) { } It begin() const { return _begin; } It end() const { return _end; } bool empty() const { return _begin == _end; } private: It _begin, _end; }; // Writer interface for node printing (see xml_node::print) class PUGIXML_CLASS xml_writer { public: virtual ~xml_writer(); // Write memory chunk into stream/file/whatever virtual void write(const void* data, size_t size) = 0; }; // xml_writer implementation for FILE* class PUGIXML_CLASS xml_writer_file: public xml_writer { public: // Construct writer from a FILE* object; void* is used to avoid header dependencies on stdio xml_writer_file(void* file); virtual void write(const void* data, size_t size) PUGIXML_OVERRIDE; private: void* file; }; #ifndef PUGIXML_NO_STL // xml_writer implementation for streams class PUGIXML_CLASS xml_writer_stream: public xml_writer { public: // Construct writer from an output stream object xml_writer_stream(std::basic_ostream& stream); xml_writer_stream(std::basic_ostream& stream); virtual void write(const void* data, size_t size) PUGIXML_OVERRIDE; private: std::basic_ostream* narrow_stream; std::basic_ostream* wide_stream; }; #endif // A light-weight handle for manipulating attributes in DOM tree class PUGIXML_CLASS xml_attribute { friend class xml_attribute_iterator; friend class xml_node; private: xml_attribute_struct* _attr; typedef void (*unspecified_bool_type)(xml_attribute***); public: // Default constructor. Constructs an empty attribute. xml_attribute(); // Constructs attribute from internal pointer explicit xml_attribute(xml_attribute_struct* attr); // Safe bool conversion operator operator unspecified_bool_type() const; // Borland C++ workaround bool operator!() const; // Comparison operators (compares wrapped attribute pointers) bool operator==(const xml_attribute& r) const; bool operator!=(const xml_attribute& r) const; bool operator<(const xml_attribute& r) const; bool operator>(const xml_attribute& r) const; bool operator<=(const xml_attribute& r) const; bool operator>=(const xml_attribute& r) const; // Check if attribute is empty (null) bool empty() const; // Get attribute name/value, or "" if attribute is empty const char_t* name() const; const char_t* value() const; // Get attribute value, or the default value if attribute is empty const char_t* as_string(const char_t* def = PUGIXML_TEXT("")) const; // Get attribute value as a number, or the default value if conversion did not succeed or attribute is empty int as_int(int def = 0) const; unsigned int as_uint(unsigned int def = 0) const; double as_double(double def = 0) const; float as_float(float def = 0) const; #ifdef PUGIXML_HAS_LONG_LONG long long as_llong(long long def = 0) const; unsigned long long as_ullong(unsigned long long def = 0) const; #endif // Get attribute value as bool (returns true if first character is in '1tTyY' set), or the default value if attribute is empty bool as_bool(bool def = false) const; // Set attribute name/value (returns false if attribute is empty or there is not enough memory) bool set_name(const char_t* rhs); bool set_name(const char_t* rhs, size_t size); #ifdef PUGIXML_HAS_STRING_VIEW bool set_name(string_view_t rhs); #endif bool set_value(const char_t* rhs); bool set_value(const char_t* rhs, size_t size); #ifdef PUGIXML_HAS_STRING_VIEW bool set_value(string_view_t rhs); #endif // Set attribute value with type conversion (numbers are converted to strings, boolean is converted to "true"/"false") bool set_value(int rhs); bool set_value(unsigned int rhs); bool set_value(long rhs); bool set_value(unsigned long rhs); bool set_value(double rhs); bool set_value(double rhs, int precision); bool set_value(float rhs); bool set_value(float rhs, int precision); bool set_value(bool rhs); #ifdef PUGIXML_HAS_LONG_LONG bool set_value(long long rhs); bool set_value(unsigned long long rhs); #endif // Set attribute value (equivalent to set_value without error checking) xml_attribute& operator=(const char_t* rhs); xml_attribute& operator=(int rhs); xml_attribute& operator=(unsigned int rhs); xml_attribute& operator=(long rhs); xml_attribute& operator=(unsigned long rhs); xml_attribute& operator=(double rhs); xml_attribute& operator=(float rhs); xml_attribute& operator=(bool rhs); #ifdef PUGIXML_HAS_STRING_VIEW xml_attribute& operator=(string_view_t rhs); #endif #ifdef PUGIXML_HAS_LONG_LONG xml_attribute& operator=(long long rhs); xml_attribute& operator=(unsigned long long rhs); #endif // Get next/previous attribute in the attribute list of the parent node xml_attribute next_attribute() const; xml_attribute previous_attribute() const; // Get hash value (unique for handles to the same object) size_t hash_value() const; // Get internal pointer xml_attribute_struct* internal_object() const; }; #ifdef __BORLANDC__ // Borland C++ workaround bool PUGIXML_FUNCTION operator&&(const xml_attribute& lhs, bool rhs); bool PUGIXML_FUNCTION operator||(const xml_attribute& lhs, bool rhs); #endif // A light-weight handle for manipulating nodes in DOM tree class PUGIXML_CLASS xml_node { friend class xml_attribute_iterator; friend class xml_node_iterator; friend class xml_named_node_iterator; protected: xml_node_struct* _root; typedef void (*unspecified_bool_type)(xml_node***); public: // Default constructor. Constructs an empty node. xml_node(); // Constructs node from internal pointer explicit xml_node(xml_node_struct* p); // Safe bool conversion operator operator unspecified_bool_type() const; // Borland C++ workaround bool operator!() const; // Comparison operators (compares wrapped node pointers) bool operator==(const xml_node& r) const; bool operator!=(const xml_node& r) const; bool operator<(const xml_node& r) const; bool operator>(const xml_node& r) const; bool operator<=(const xml_node& r) const; bool operator>=(const xml_node& r) const; // Check if node is empty (null) bool empty() const; // Get node type xml_node_type type() const; // Get node name, or "" if node is empty or it has no name const char_t* name() const; // Get node value, or "" if node is empty or it has no value // Note: For text node.value() does not return "text"! Use child_value() or text() methods to access text inside nodes. const char_t* value() const; // Get attribute list xml_attribute first_attribute() const; xml_attribute last_attribute() const; // Get children list xml_node first_child() const; xml_node last_child() const; // Get next/previous sibling in the children list of the parent node xml_node next_sibling() const; xml_node previous_sibling() const; // Get parent node xml_node parent() const; // Get root of DOM tree this node belongs to xml_node root() const; // Get text object for the current node xml_text text() const; // Get child, attribute or next/previous sibling with the specified name xml_node child(const char_t* name) const; xml_attribute attribute(const char_t* name) const; xml_node next_sibling(const char_t* name) const; xml_node previous_sibling(const char_t* name) const; #ifdef PUGIXML_HAS_STRING_VIEW xml_node child(string_view_t name) const; xml_attribute attribute(string_view_t name) const; xml_node next_sibling(string_view_t name) const; xml_node previous_sibling(string_view_t name) const; #endif // Get attribute, starting the search from a hint (and updating hint so that searching for a sequence of attributes is fast) xml_attribute attribute(const char_t* name, xml_attribute& hint) const; #ifdef PUGIXML_HAS_STRING_VIEW xml_attribute attribute(string_view_t name, xml_attribute& hint) const; #endif // Get child value of current node; that is, value of the first child node of type PCDATA/CDATA const char_t* child_value() const; // Get child value of child with specified name. Equivalent to child(name).child_value(). const char_t* child_value(const char_t* name) const; // Set node name/value (returns false if node is empty, there is not enough memory, or node can not have name/value) bool set_name(const char_t* rhs); bool set_name(const char_t* rhs, size_t size); #ifdef PUGIXML_HAS_STRING_VIEW bool set_name(string_view_t rhs); #endif bool set_value(const char_t* rhs); bool set_value(const char_t* rhs, size_t size); #ifdef PUGIXML_HAS_STRING_VIEW bool set_value(string_view_t rhs); #endif // Add attribute with specified name. Returns added attribute, or empty attribute on errors. xml_attribute append_attribute(const char_t* name); xml_attribute prepend_attribute(const char_t* name); xml_attribute insert_attribute_after(const char_t* name, const xml_attribute& attr); xml_attribute insert_attribute_before(const char_t* name, const xml_attribute& attr); #ifdef PUGIXML_HAS_STRING_VIEW xml_attribute append_attribute(string_view_t name); xml_attribute prepend_attribute(string_view_t name); xml_attribute insert_attribute_after(string_view_t name, const xml_attribute& attr); xml_attribute insert_attribute_before(string_view_t name, const xml_attribute& attr); #endif // Add a copy of the specified attribute. Returns added attribute, or empty attribute on errors. xml_attribute append_copy(const xml_attribute& proto); xml_attribute prepend_copy(const xml_attribute& proto); xml_attribute insert_copy_after(const xml_attribute& proto, const xml_attribute& attr); xml_attribute insert_copy_before(const xml_attribute& proto, const xml_attribute& attr); // Add child node with specified type. Returns added node, or empty node on errors. xml_node append_child(xml_node_type type = node_element); xml_node prepend_child(xml_node_type type = node_element); xml_node insert_child_after(xml_node_type type, const xml_node& node); xml_node insert_child_before(xml_node_type type, const xml_node& node); // Add child element with specified name. Returns added node, or empty node on errors. xml_node append_child(const char_t* name); xml_node prepend_child(const char_t* name); xml_node insert_child_after(const char_t* name, const xml_node& node); xml_node insert_child_before(const char_t* name, const xml_node& node); #ifdef PUGIXML_HAS_STRING_VIEW xml_node append_child(string_view_t name); xml_node prepend_child(string_view_t name); xml_node insert_child_after(string_view_t, const xml_node& node); xml_node insert_child_before(string_view_t name, const xml_node& node); #endif // Add a copy of the specified node as a child. Returns added node, or empty node on errors. xml_node append_copy(const xml_node& proto); xml_node prepend_copy(const xml_node& proto); xml_node insert_copy_after(const xml_node& proto, const xml_node& node); xml_node insert_copy_before(const xml_node& proto, const xml_node& node); // Move the specified node to become a child of this node. Returns moved node, or empty node on errors. xml_node append_move(const xml_node& moved); xml_node prepend_move(const xml_node& moved); xml_node insert_move_after(const xml_node& moved, const xml_node& node); xml_node insert_move_before(const xml_node& moved, const xml_node& node); // Remove specified attribute bool remove_attribute(const xml_attribute& a); bool remove_attribute(const char_t* name); #ifdef PUGIXML_HAS_STRING_VIEW bool remove_attribute(string_view_t name); #endif // Remove all attributes bool remove_attributes(); // Remove specified child bool remove_child(const xml_node& n); bool remove_child(const char_t* name); #ifdef PUGIXML_HAS_STRING_VIEW bool remove_child(string_view_t name); #endif // Remove all children bool remove_children(); // Parses buffer as an XML document fragment and appends all nodes as children of the current node. // Copies/converts the buffer, so it may be deleted or changed after the function returns. // Note: append_buffer allocates memory that has the lifetime of the owning document; removing the appended nodes does not immediately reclaim that memory. xml_parse_result append_buffer(const void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); // Find attribute using predicate. Returns first attribute for which predicate returned true. template xml_attribute find_attribute(Predicate pred) const { if (!_root) return xml_attribute(); for (xml_attribute attrib = first_attribute(); attrib; attrib = attrib.next_attribute()) if (pred(attrib)) return attrib; return xml_attribute(); } // Find child node using predicate. Returns first child for which predicate returned true. template xml_node find_child(Predicate pred) const { if (!_root) return xml_node(); for (xml_node node = first_child(); node; node = node.next_sibling()) if (pred(node)) return node; return xml_node(); } // Find node from subtree using predicate. Returns first node from subtree (depth-first), for which predicate returned true. template xml_node find_node(Predicate pred) const { if (!_root) return xml_node(); xml_node cur = first_child(); while (cur._root && cur._root != _root) { if (pred(cur)) return cur; if (cur.first_child()) cur = cur.first_child(); else if (cur.next_sibling()) cur = cur.next_sibling(); else { while (!cur.next_sibling() && cur._root != _root) cur = cur.parent(); if (cur._root != _root) cur = cur.next_sibling(); } } return xml_node(); } // Find child node by attribute name/value xml_node find_child_by_attribute(const char_t* name, const char_t* attr_name, const char_t* attr_value) const; xml_node find_child_by_attribute(const char_t* attr_name, const char_t* attr_value) const; #ifndef PUGIXML_NO_STL // Get the absolute node path from root as a text string. string_t path(char_t delimiter = '/') const; #endif // Search for a node by path consisting of node names and . or .. elements. xml_node first_element_by_path(const char_t* path, char_t delimiter = '/') const; // Recursively traverse subtree with xml_tree_walker bool traverse(xml_tree_walker& walker); #ifndef PUGIXML_NO_XPATH // Select single node by evaluating XPath query. Returns first node from the resulting node set. xpath_node select_node(const char_t* query, xpath_variable_set* variables = PUGIXML_NULL) const; xpath_node select_node(const xpath_query& query) const; // Select node set by evaluating XPath query xpath_node_set select_nodes(const char_t* query, xpath_variable_set* variables = PUGIXML_NULL) const; xpath_node_set select_nodes(const xpath_query& query) const; // (deprecated: use select_node instead) Select single node by evaluating XPath query. PUGIXML_DEPRECATED xpath_node select_single_node(const char_t* query, xpath_variable_set* variables = PUGIXML_NULL) const; PUGIXML_DEPRECATED xpath_node select_single_node(const xpath_query& query) const; #endif // Print subtree using a writer object void print(xml_writer& writer, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto, unsigned int depth = 0) const; #ifndef PUGIXML_NO_STL // Print subtree to stream void print(std::basic_ostream& os, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto, unsigned int depth = 0) const; void print(std::basic_ostream& os, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, unsigned int depth = 0) const; #endif // Child nodes iterators typedef xml_node_iterator iterator; iterator begin() const; iterator end() const; // Attribute iterators typedef xml_attribute_iterator attribute_iterator; attribute_iterator attributes_begin() const; attribute_iterator attributes_end() const; // Range-based for support xml_object_range children() const; xml_object_range attributes() const; // Range-based for support for all children with the specified name // Note: name pointer must have a longer lifetime than the returned object; be careful with passing temporaries! xml_object_range children(const char_t* name) const; // Get node offset in parsed file/string (in char_t units) for debugging purposes ptrdiff_t offset_debug() const; // Get hash value (unique for handles to the same object) size_t hash_value() const; // Get internal pointer xml_node_struct* internal_object() const; }; #ifdef __BORLANDC__ // Borland C++ workaround bool PUGIXML_FUNCTION operator&&(const xml_node& lhs, bool rhs); bool PUGIXML_FUNCTION operator||(const xml_node& lhs, bool rhs); #endif // A helper for working with text inside PCDATA nodes class PUGIXML_CLASS xml_text { friend class xml_node; xml_node_struct* _root; typedef void (*unspecified_bool_type)(xml_text***); explicit xml_text(xml_node_struct* root); xml_node_struct* _data_new(); xml_node_struct* _data() const; public: // Default constructor. Constructs an empty object. xml_text(); // Safe bool conversion operator operator unspecified_bool_type() const; // Borland C++ workaround bool operator!() const; // Check if text object is empty (null) bool empty() const; // Get text, or "" if object is empty const char_t* get() const; // Get text, or the default value if object is empty const char_t* as_string(const char_t* def = PUGIXML_TEXT("")) const; // Get text as a number, or the default value if conversion did not succeed or object is empty int as_int(int def = 0) const; unsigned int as_uint(unsigned int def = 0) const; double as_double(double def = 0) const; float as_float(float def = 0) const; #ifdef PUGIXML_HAS_LONG_LONG long long as_llong(long long def = 0) const; unsigned long long as_ullong(unsigned long long def = 0) const; #endif // Get text as bool (returns true if first character is in '1tTyY' set), or the default value if object is empty bool as_bool(bool def = false) const; // Set text (returns false if object is empty or there is not enough memory) bool set(const char_t* rhs); bool set(const char_t* rhs, size_t size); #ifdef PUGIXML_HAS_STRING_VIEW bool set(string_view_t rhs); #endif // Set text with type conversion (numbers are converted to strings, boolean is converted to "true"/"false") bool set(int rhs); bool set(unsigned int rhs); bool set(long rhs); bool set(unsigned long rhs); bool set(double rhs); bool set(double rhs, int precision); bool set(float rhs); bool set(float rhs, int precision); bool set(bool rhs); #ifdef PUGIXML_HAS_LONG_LONG bool set(long long rhs); bool set(unsigned long long rhs); #endif // Set text (equivalent to set without error checking) xml_text& operator=(const char_t* rhs); xml_text& operator=(int rhs); xml_text& operator=(unsigned int rhs); xml_text& operator=(long rhs); xml_text& operator=(unsigned long rhs); xml_text& operator=(double rhs); xml_text& operator=(float rhs); xml_text& operator=(bool rhs); #ifdef PUGIXML_HAS_STRING_VIEW xml_text& operator=(string_view_t rhs); #endif #ifdef PUGIXML_HAS_LONG_LONG xml_text& operator=(long long rhs); xml_text& operator=(unsigned long long rhs); #endif // Get the data node (node_pcdata or node_cdata) for this object xml_node data() const; }; #ifdef __BORLANDC__ // Borland C++ workaround bool PUGIXML_FUNCTION operator&&(const xml_text& lhs, bool rhs); bool PUGIXML_FUNCTION operator||(const xml_text& lhs, bool rhs); #endif // Child node iterator (a bidirectional iterator over a collection of xml_node) class PUGIXML_CLASS xml_node_iterator { friend class xml_node; private: mutable xml_node _wrap; xml_node _parent; xml_node_iterator(xml_node_struct* ref, xml_node_struct* parent); public: // Iterator traits typedef ptrdiff_t difference_type; typedef xml_node value_type; typedef xml_node* pointer; typedef xml_node& reference; #ifndef PUGIXML_NO_STL typedef std::bidirectional_iterator_tag iterator_category; #endif // Default constructor xml_node_iterator(); // Construct an iterator which points to the specified node xml_node_iterator(const xml_node& node); // Iterator operators bool operator==(const xml_node_iterator& rhs) const; bool operator!=(const xml_node_iterator& rhs) const; xml_node& operator*() const; xml_node* operator->() const; xml_node_iterator& operator++(); xml_node_iterator operator++(int); xml_node_iterator& operator--(); xml_node_iterator operator--(int); }; // Attribute iterator (a bidirectional iterator over a collection of xml_attribute) class PUGIXML_CLASS xml_attribute_iterator { friend class xml_node; private: mutable xml_attribute _wrap; xml_node _parent; xml_attribute_iterator(xml_attribute_struct* ref, xml_node_struct* parent); public: // Iterator traits typedef ptrdiff_t difference_type; typedef xml_attribute value_type; typedef xml_attribute* pointer; typedef xml_attribute& reference; #ifndef PUGIXML_NO_STL typedef std::bidirectional_iterator_tag iterator_category; #endif // Default constructor xml_attribute_iterator(); // Construct an iterator which points to the specified attribute xml_attribute_iterator(const xml_attribute& attr, const xml_node& parent); // Iterator operators bool operator==(const xml_attribute_iterator& rhs) const; bool operator!=(const xml_attribute_iterator& rhs) const; xml_attribute& operator*() const; xml_attribute* operator->() const; xml_attribute_iterator& operator++(); xml_attribute_iterator operator++(int); xml_attribute_iterator& operator--(); xml_attribute_iterator operator--(int); }; // Named node range helper class PUGIXML_CLASS xml_named_node_iterator { friend class xml_node; public: // Iterator traits typedef ptrdiff_t difference_type; typedef xml_node value_type; typedef xml_node* pointer; typedef xml_node& reference; #ifndef PUGIXML_NO_STL typedef std::bidirectional_iterator_tag iterator_category; #endif // Default constructor xml_named_node_iterator(); // Construct an iterator which points to the specified node // Note: name pointer is stored in the iterator and must have a longer lifetime than iterator itself xml_named_node_iterator(const xml_node& node, const char_t* name); // Iterator operators bool operator==(const xml_named_node_iterator& rhs) const; bool operator!=(const xml_named_node_iterator& rhs) const; xml_node& operator*() const; xml_node* operator->() const; xml_named_node_iterator& operator++(); xml_named_node_iterator operator++(int); xml_named_node_iterator& operator--(); xml_named_node_iterator operator--(int); private: mutable xml_node _wrap; xml_node _parent; const char_t* _name; xml_named_node_iterator(xml_node_struct* ref, xml_node_struct* parent, const char_t* name); }; // Abstract tree walker class (see xml_node::traverse) class PUGIXML_CLASS xml_tree_walker { friend class xml_node; private: int _depth; protected: // Get current traversal depth int depth() const; public: xml_tree_walker(); virtual ~xml_tree_walker(); // Callback that is called when traversal begins virtual bool begin(xml_node& node); // Callback that is called for each node traversed virtual bool for_each(xml_node& node) = 0; // Callback that is called when traversal ends virtual bool end(xml_node& node); }; // Parsing status, returned as part of xml_parse_result object enum xml_parse_status { status_ok = 0, // No error status_file_not_found, // File was not found during load_file() status_io_error, // Error reading from file/stream status_out_of_memory, // Could not allocate memory status_internal_error, // Internal error occurred status_unrecognized_tag, // Parser could not determine tag type status_bad_pi, // Parsing error occurred while parsing document declaration/processing instruction status_bad_comment, // Parsing error occurred while parsing comment status_bad_cdata, // Parsing error occurred while parsing CDATA section status_bad_doctype, // Parsing error occurred while parsing document type declaration status_bad_pcdata, // Parsing error occurred while parsing PCDATA section status_bad_start_element, // Parsing error occurred while parsing start element tag status_bad_attribute, // Parsing error occurred while parsing element attribute status_bad_end_element, // Parsing error occurred while parsing end element tag status_end_element_mismatch,// There was a mismatch of start-end tags (closing tag had incorrect name, some tag was not closed or there was an excessive closing tag) status_append_invalid_root, // Unable to append nodes since root type is not node_element or node_document (exclusive to xml_node::append_buffer) status_no_document_element // Parsing resulted in a document without element nodes }; // Parsing result struct PUGIXML_CLASS xml_parse_result { // Parsing status (see xml_parse_status) xml_parse_status status; // Last parsed offset (in char_t units from start of input data) ptrdiff_t offset; // Source document encoding xml_encoding encoding; // Default constructor, initializes object to failed state xml_parse_result(); // Cast to bool operator operator bool() const; // Get error description const char* description() const; }; // Document class (DOM tree root) class PUGIXML_CLASS xml_document: public xml_node { private: char_t* _buffer; char _memory[192]; // Non-copyable semantics xml_document(const xml_document&); xml_document& operator=(const xml_document&); void _create(); void _destroy(); void _move(xml_document& rhs) PUGIXML_NOEXCEPT_IF_NOT_COMPACT; public: // Default constructor, makes empty document xml_document(); // Destructor, invalidates all node/attribute handles to this document ~xml_document(); #ifdef PUGIXML_HAS_MOVE // Move semantics support xml_document(xml_document&& rhs) PUGIXML_NOEXCEPT_IF_NOT_COMPACT; xml_document& operator=(xml_document&& rhs) PUGIXML_NOEXCEPT_IF_NOT_COMPACT; #endif // Removes all nodes, leaving the empty document void reset(); // Removes all nodes, then copies the entire contents of the specified document void reset(const xml_document& proto); #ifndef PUGIXML_NO_STL // Load document from stream. xml_parse_result load(std::basic_istream& stream, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); xml_parse_result load(std::basic_istream& stream, unsigned int options = parse_default); #endif // (deprecated: use load_string instead) Load document from zero-terminated string. No encoding conversions are applied. PUGIXML_DEPRECATED xml_parse_result load(const char_t* contents, unsigned int options = parse_default); // Load document from zero-terminated string. No encoding conversions are applied. xml_parse_result load_string(const char_t* contents, unsigned int options = parse_default); // Load document from file xml_parse_result load_file(const char* path, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); xml_parse_result load_file(const wchar_t* path, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); // Load document from buffer. Copies/converts the buffer, so it may be deleted or changed after the function returns. xml_parse_result load_buffer(const void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); // Load document from buffer, using the buffer for in-place parsing (the buffer is modified and used for storage of document data). // You should ensure that buffer data will persist throughout the document's lifetime, and free the buffer memory manually once document is destroyed. xml_parse_result load_buffer_inplace(void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); // Load document from buffer, using the buffer for in-place parsing (the buffer is modified and used for storage of document data). // You should allocate the buffer with pugixml allocation function; document will free the buffer when it is no longer needed (you can't use it anymore). xml_parse_result load_buffer_inplace_own(void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); // Save XML document to writer (semantics is slightly different from xml_node::print, see documentation for details). void save(xml_writer& writer, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const; #ifndef PUGIXML_NO_STL // Save XML document to stream (semantics is slightly different from xml_node::print, see documentation for details). void save(std::basic_ostream& stream, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const; void save(std::basic_ostream& stream, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default) const; #endif // Save XML to file bool save_file(const char* path, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const; bool save_file(const wchar_t* path, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const; // Get document element xml_node document_element() const; }; #ifndef PUGIXML_NO_XPATH // XPath query return type enum xpath_value_type { xpath_type_none, // Unknown type (query failed to compile) xpath_type_node_set, // Node set (xpath_node_set) xpath_type_number, // Number xpath_type_string, // String xpath_type_boolean // Boolean }; // XPath parsing result struct PUGIXML_CLASS xpath_parse_result { // Error message (0 if no error) const char* error; // Last parsed offset (in char_t units from string start) ptrdiff_t offset; // Default constructor, initializes object to failed state xpath_parse_result(); // Cast to bool operator operator bool() const; // Get error description const char* description() const; }; // A single XPath variable class PUGIXML_CLASS xpath_variable { friend class xpath_variable_set; protected: xpath_value_type _type; xpath_variable* _next; xpath_variable(xpath_value_type type); // Non-copyable semantics xpath_variable(const xpath_variable&); xpath_variable& operator=(const xpath_variable&); public: // Get variable name const char_t* name() const; // Get variable type xpath_value_type type() const; // Get variable value; no type conversion is performed, default value (false, NaN, empty string, empty node set) is returned on type mismatch error bool get_boolean() const; double get_number() const; const char_t* get_string() const; const xpath_node_set& get_node_set() const; // Set variable value; no type conversion is performed, false is returned on type mismatch error bool set(bool value); bool set(double value); bool set(const char_t* value); bool set(const xpath_node_set& value); }; // A set of XPath variables class PUGIXML_CLASS xpath_variable_set { private: xpath_variable* _data[64]; void _assign(const xpath_variable_set& rhs); void _swap(xpath_variable_set& rhs); xpath_variable* _find(const char_t* name) const; static bool _clone(xpath_variable* var, xpath_variable** out_result); static void _destroy(xpath_variable* var); public: // Default constructor/destructor xpath_variable_set(); ~xpath_variable_set(); // Copy constructor/assignment operator xpath_variable_set(const xpath_variable_set& rhs); xpath_variable_set& operator=(const xpath_variable_set& rhs); #ifdef PUGIXML_HAS_MOVE // Move semantics support xpath_variable_set(xpath_variable_set&& rhs) PUGIXML_NOEXCEPT; xpath_variable_set& operator=(xpath_variable_set&& rhs) PUGIXML_NOEXCEPT; #endif // Add a new variable or get the existing one, if the types match xpath_variable* add(const char_t* name, xpath_value_type type); // Set value of an existing variable; no type conversion is performed, false is returned if there is no such variable or if types mismatch bool set(const char_t* name, bool value); bool set(const char_t* name, double value); bool set(const char_t* name, const char_t* value); bool set(const char_t* name, const xpath_node_set& value); // Get existing variable by name xpath_variable* get(const char_t* name); const xpath_variable* get(const char_t* name) const; }; // A compiled XPath query object class PUGIXML_CLASS xpath_query { private: void* _impl; xpath_parse_result _result; typedef void (*unspecified_bool_type)(xpath_query***); // Non-copyable semantics xpath_query(const xpath_query&); xpath_query& operator=(const xpath_query&); public: // Construct a compiled object from XPath expression. // If PUGIXML_NO_EXCEPTIONS is not defined, throws xpath_exception on compilation errors. explicit xpath_query(const char_t* query, xpath_variable_set* variables = PUGIXML_NULL); // Constructor xpath_query(); // Destructor ~xpath_query(); #ifdef PUGIXML_HAS_MOVE // Move semantics support xpath_query(xpath_query&& rhs) PUGIXML_NOEXCEPT; xpath_query& operator=(xpath_query&& rhs) PUGIXML_NOEXCEPT; #endif // Get query expression return type xpath_value_type return_type() const; // Evaluate expression as boolean value in the specified context; performs type conversion if necessary. // If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors. bool evaluate_boolean(const xpath_node& n) const; // Evaluate expression as double value in the specified context; performs type conversion if necessary. // If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors. double evaluate_number(const xpath_node& n) const; #ifndef PUGIXML_NO_STL // Evaluate expression as string value in the specified context; performs type conversion if necessary. // If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors. string_t evaluate_string(const xpath_node& n) const; #endif // Evaluate expression as string value in the specified context; performs type conversion if necessary. // At most capacity characters are written to the destination buffer, full result size is returned (includes terminating zero). // If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors. // If PUGIXML_NO_EXCEPTIONS is defined, returns empty set instead. size_t evaluate_string(char_t* buffer, size_t capacity, const xpath_node& n) const; // Evaluate expression as node set in the specified context. // If PUGIXML_NO_EXCEPTIONS is not defined, throws xpath_exception on type mismatch and std::bad_alloc on out of memory errors. // If PUGIXML_NO_EXCEPTIONS is defined, returns empty node set instead. xpath_node_set evaluate_node_set(const xpath_node& n) const; // Evaluate expression as node set in the specified context. // Return first node in document order, or empty node if node set is empty. // If PUGIXML_NO_EXCEPTIONS is not defined, throws xpath_exception on type mismatch and std::bad_alloc on out of memory errors. // If PUGIXML_NO_EXCEPTIONS is defined, returns empty node instead. xpath_node evaluate_node(const xpath_node& n) const; // Get parsing result (used to get compilation errors in PUGIXML_NO_EXCEPTIONS mode) const xpath_parse_result& result() const; // Safe bool conversion operator operator unspecified_bool_type() const; // Borland C++ workaround bool operator!() const; }; #ifndef PUGIXML_NO_EXCEPTIONS #if defined(_MSC_VER) // C4275 can be ignored in Visual C++ if you are deriving // from a type in the Standard C++ Library #pragma warning(push) #pragma warning(disable: 4275) #endif // XPath exception class class PUGIXML_CLASS xpath_exception: public std::exception { private: xpath_parse_result _result; public: // Construct exception from parse result explicit xpath_exception(const xpath_parse_result& result); // Get error message virtual const char* what() const PUGIXML_NOEXCEPT PUGIXML_OVERRIDE; // Get parse result const xpath_parse_result& result() const; }; #if defined(_MSC_VER) #pragma warning(pop) #endif #endif // XPath node class (either xml_node or xml_attribute) class PUGIXML_CLASS xpath_node { private: xml_node _node; xml_attribute _attribute; typedef void (*unspecified_bool_type)(xpath_node***); public: // Default constructor; constructs empty XPath node xpath_node(); // Construct XPath node from XML node/attribute xpath_node(const xml_node& node); xpath_node(const xml_attribute& attribute, const xml_node& parent); // Get node/attribute, if any xml_node node() const; xml_attribute attribute() const; // Get parent of contained node/attribute xml_node parent() const; // Safe bool conversion operator operator unspecified_bool_type() const; // Borland C++ workaround bool operator!() const; // Comparison operators bool operator==(const xpath_node& n) const; bool operator!=(const xpath_node& n) const; }; #ifdef __BORLANDC__ // Borland C++ workaround bool PUGIXML_FUNCTION operator&&(const xpath_node& lhs, bool rhs); bool PUGIXML_FUNCTION operator||(const xpath_node& lhs, bool rhs); #endif // A fixed-size collection of XPath nodes class PUGIXML_CLASS xpath_node_set { public: // Collection type enum type_t { type_unsorted, // Not ordered type_sorted, // Sorted by document order (ascending) type_sorted_reverse // Sorted by document order (descending) }; // Constant iterator type typedef const xpath_node* const_iterator; // We define non-constant iterator to be the same as constant iterator so that various generic algorithms (i.e. boost foreach) work typedef const xpath_node* iterator; // Default constructor. Constructs empty set. xpath_node_set(); // Constructs a set from iterator range; data is not checked for duplicates and is not sorted according to provided type, so be careful xpath_node_set(const_iterator begin, const_iterator end, type_t type = type_unsorted); // Destructor ~xpath_node_set(); // Copy constructor/assignment operator xpath_node_set(const xpath_node_set& ns); xpath_node_set& operator=(const xpath_node_set& ns); #ifdef PUGIXML_HAS_MOVE // Move semantics support xpath_node_set(xpath_node_set&& rhs) PUGIXML_NOEXCEPT; xpath_node_set& operator=(xpath_node_set&& rhs) PUGIXML_NOEXCEPT; #endif // Get collection type type_t type() const; // Get collection size size_t size() const; // Indexing operator const xpath_node& operator[](size_t index) const; // Collection iterators const_iterator begin() const; const_iterator end() const; // Sort the collection in ascending/descending order by document order void sort(bool reverse = false); // Get first node in the collection by document order xpath_node first() const; // Check if collection is empty bool empty() const; private: type_t _type; xpath_node _storage[1]; xpath_node* _begin; xpath_node* _end; void _assign(const_iterator begin, const_iterator end, type_t type); void _move(xpath_node_set& rhs) PUGIXML_NOEXCEPT; }; #endif #ifndef PUGIXML_NO_STL // Convert wide string to UTF8 std::basic_string PUGIXML_FUNCTION as_utf8(const wchar_t* str); std::basic_string PUGIXML_FUNCTION as_utf8(const std::basic_string& str); // Convert UTF8 to wide string std::basic_string PUGIXML_FUNCTION as_wide(const char* str); std::basic_string PUGIXML_FUNCTION as_wide(const std::basic_string& str); #endif // Memory allocation function interface; returns pointer to allocated memory or NULL on failure typedef void* (*allocation_function)(size_t size); // Memory deallocation function interface typedef void (*deallocation_function)(void* ptr); // Override default memory management functions. All subsequent allocations/deallocations will be performed via supplied functions. void PUGIXML_FUNCTION set_memory_management_functions(allocation_function allocate, deallocation_function deallocate); // Get current memory management functions allocation_function PUGIXML_FUNCTION get_memory_allocation_function(); deallocation_function PUGIXML_FUNCTION get_memory_deallocation_function(); } #if !defined(PUGIXML_NO_STL) && (defined(_MSC_VER) || defined(__ICC)) namespace std { // Workarounds for (non-standard) iterator category detection for older versions (MSVC7/IC8 and earlier) std::bidirectional_iterator_tag PUGIXML_FUNCTION _Iter_cat(const pugi::xml_node_iterator&); std::bidirectional_iterator_tag PUGIXML_FUNCTION _Iter_cat(const pugi::xml_attribute_iterator&); std::bidirectional_iterator_tag PUGIXML_FUNCTION _Iter_cat(const pugi::xml_named_node_iterator&); } #endif #if !defined(PUGIXML_NO_STL) && defined(__SUNPRO_CC) namespace std { // Workarounds for (non-standard) iterator category detection std::bidirectional_iterator_tag PUGIXML_FUNCTION __iterator_category(const pugi::xml_node_iterator&); std::bidirectional_iterator_tag PUGIXML_FUNCTION __iterator_category(const pugi::xml_attribute_iterator&); std::bidirectional_iterator_tag PUGIXML_FUNCTION __iterator_category(const pugi::xml_named_node_iterator&); } #endif #endif // Make sure implementation is included in header-only mode // Use macro expansion in #include to work around QMake (QTBUG-11923) #if defined(PUGIXML_HEADER_ONLY) && !defined(PUGIXML_SOURCE) # define PUGIXML_SOURCE "pugixml.cpp" # include PUGIXML_SOURCE #endif /** * Copyright (c) 2006-2025 Arseny Kapoulkine * * 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. */ poedit-3.6.3/deps/pugixml/src/pugiconfig.hpp0000644000175100001660000000575515011674244014563 /** * pugixml parser - version 1.15 * -------------------------------------------------------- * Copyright (C) 2006-2025, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com) * Report bugs and download new versions at https://pugixml.org/ * * This library is distributed under the MIT License. See notice at the end * of this file. * * This work is based on the pugxml parser, which is: * Copyright (C) 2003, by Kristen Wegner (kristen@tima.net) */ #ifndef HEADER_PUGICONFIG_HPP #define HEADER_PUGICONFIG_HPP // Uncomment this to enable wchar_t mode // #define PUGIXML_WCHAR_MODE // Uncomment this to enable compact mode // #define PUGIXML_COMPACT // Uncomment this to disable XPath // #define PUGIXML_NO_XPATH // Uncomment this to disable STL // #define PUGIXML_NO_STL // Uncomment this to disable exceptions // #define PUGIXML_NO_EXCEPTIONS // Set this to control attributes for public classes/functions, i.e.: // #define PUGIXML_API __declspec(dllexport) // to export all public symbols from DLL // #define PUGIXML_CLASS __declspec(dllimport) // to import all classes from DLL // #define PUGIXML_FUNCTION __fastcall // to set calling conventions to all public functions to fastcall // In absence of PUGIXML_CLASS/PUGIXML_FUNCTION definitions PUGIXML_API is used instead // Tune these constants to adjust memory-related behavior // #define PUGIXML_MEMORY_PAGE_SIZE 32768 // #define PUGIXML_MEMORY_OUTPUT_STACK 10240 // #define PUGIXML_MEMORY_XPATH_PAGE_SIZE 4096 // Tune this constant to adjust max nesting for XPath queries // #define PUGIXML_XPATH_DEPTH_LIMIT 1024 // Uncomment this to switch to header-only version // #define PUGIXML_HEADER_ONLY // Uncomment this to enable long long support (usually enabled automatically) // #define PUGIXML_HAS_LONG_LONG // Uncomment this to enable support for std::string_view (usually enabled automatically) // #define PUGIXML_HAS_STRING_VIEW #endif /** * Copyright (c) 2006-2025 Arseny Kapoulkine * * 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. */ poedit-3.6.3/deps/pugixml/src/pugixml.cpp0000644000175100001660000126734515011674244014117 /** * pugixml parser - version 1.15 * -------------------------------------------------------- * Copyright (C) 2006-2025, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com) * Report bugs and download new versions at https://pugixml.org/ * * This library is distributed under the MIT License. See notice at the end * of this file. * * This work is based on the pugxml parser, which is: * Copyright (C) 2003, by Kristen Wegner (kristen@tima.net) */ #ifndef SOURCE_PUGIXML_CPP #define SOURCE_PUGIXML_CPP #include "pugixml.hpp" #include #include #include #include #include #ifdef PUGIXML_WCHAR_MODE # include #endif #ifndef PUGIXML_NO_XPATH # include # include #endif #ifndef PUGIXML_NO_STL # include # include # include #endif // For placement new #include // For load_file #if defined(__linux__) || defined(__APPLE__) #include #endif #ifdef _MSC_VER # pragma warning(push) # pragma warning(disable: 4127) // conditional expression is constant # pragma warning(disable: 4324) // structure was padded due to __declspec(align()) # pragma warning(disable: 4702) // unreachable code # pragma warning(disable: 4996) // this function or variable may be unsafe #endif #if defined(__clang__) # pragma clang diagnostic push # pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" // NULL as null pointer constant #endif #if defined(_MSC_VER) && defined(__c2__) # pragma clang diagnostic push # pragma clang diagnostic ignored "-Wdeprecated" // this function or variable may be unsafe #endif #ifdef __INTEL_COMPILER # pragma warning(disable: 177) // function was declared but never referenced # pragma warning(disable: 279) // controlling expression is constant # pragma warning(disable: 1478 1786) // function was declared "deprecated" # pragma warning(disable: 1684) // conversion from pointer to same-sized integral type #endif #if defined(__BORLANDC__) && defined(PUGIXML_HEADER_ONLY) # pragma warn -8080 // symbol is declared but never used; disabling this inside push/pop bracket does not make the warning go away #endif #ifdef __BORLANDC__ # pragma option push # pragma warn -8008 // condition is always false # pragma warn -8066 // unreachable code #endif #ifdef __SNC__ // Using diag_push/diag_pop does not disable the warnings inside templates due to a compiler bug # pragma diag_suppress=178 // function was declared but never referenced # pragma diag_suppress=237 // controlling expression is constant #endif #ifdef __TI_COMPILER_VERSION__ # pragma diag_suppress 179 // function was declared but never referenced #endif // Inlining controls #if defined(_MSC_VER) && _MSC_VER >= 1300 # define PUGI_IMPL_NO_INLINE __declspec(noinline) #elif defined(__GNUC__) # define PUGI_IMPL_NO_INLINE __attribute__((noinline)) #else # define PUGI_IMPL_NO_INLINE #endif // Branch weight controls #if defined(__GNUC__) && !defined(__c2__) # define PUGI_IMPL_UNLIKELY(cond) __builtin_expect(cond, 0) #else # define PUGI_IMPL_UNLIKELY(cond) (cond) #endif // Simple static assertion #define PUGI_IMPL_STATIC_ASSERT(cond) { static const char condition_failed[(cond) ? 1 : -1] = {0}; (void)condition_failed[0]; } // Digital Mars C++ bug workaround for passing char loaded from memory via stack #ifdef __DMC__ # define PUGI_IMPL_DMC_VOLATILE volatile #else # define PUGI_IMPL_DMC_VOLATILE #endif // Integer sanitizer workaround; we only apply this for clang since gcc8 has no_sanitize but not unsigned-integer-overflow and produces "attribute directive ignored" warnings #if defined(__clang__) && defined(__has_attribute) # if __has_attribute(no_sanitize) # define PUGI_IMPL_UNSIGNED_OVERFLOW __attribute__((no_sanitize("unsigned-integer-overflow"))) # else # define PUGI_IMPL_UNSIGNED_OVERFLOW # endif #else # define PUGI_IMPL_UNSIGNED_OVERFLOW #endif // Borland C++ bug workaround for not defining ::memcpy depending on header include order (can't always use std::memcpy because some compilers don't have it at all) #if defined(__BORLANDC__) && !defined(__MEM_H_USING_LIST) using std::memcpy; using std::memmove; using std::memset; #endif // Old versions of GCC do not define ::malloc and ::free depending on header include order #if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4)) using std::malloc; using std::free; #endif // Some MinGW/GCC versions have headers that erroneously omit LLONG_MIN/LLONG_MAX/ULLONG_MAX definitions from limits.h in some configurations #if defined(PUGIXML_HAS_LONG_LONG) && defined(__GNUC__) && !defined(LLONG_MAX) && !defined(LLONG_MIN) && !defined(ULLONG_MAX) # define LLONG_MIN (-LLONG_MAX - 1LL) # define LLONG_MAX __LONG_LONG_MAX__ # define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) #endif // In some environments MSVC is a compiler but the CRT lacks certain MSVC-specific features #if defined(_MSC_VER) && !defined(__S3E__) && !defined(_WIN32_WCE) # define PUGI_IMPL_MSVC_CRT_VERSION _MSC_VER #elif defined(_WIN32_WCE) # define PUGI_IMPL_MSVC_CRT_VERSION 1310 // MSVC7.1 #endif // Not all platforms have snprintf; we define a wrapper that uses snprintf if possible. This only works with buffers with a known size. #if __cplusplus >= 201103 # define PUGI_IMPL_SNPRINTF(buf, ...) snprintf(buf, sizeof(buf), __VA_ARGS__) #elif defined(PUGI_IMPL_MSVC_CRT_VERSION) && PUGI_IMPL_MSVC_CRT_VERSION >= 1400 # define PUGI_IMPL_SNPRINTF(buf, ...) _snprintf_s(buf, _countof(buf), _TRUNCATE, __VA_ARGS__) #elif defined(__APPLE__) && __clang_major__ >= 14 // Xcode 14 marks sprintf as deprecated while still using C++98 by default # define PUGI_IMPL_SNPRINTF(buf, fmt, arg1, arg2) snprintf(buf, sizeof(buf), fmt, arg1, arg2) #else # define PUGI_IMPL_SNPRINTF sprintf #endif // We put implementation details into an anonymous namespace in source mode, but have to keep it in non-anonymous namespace in header-only mode to prevent binary bloat. #ifdef PUGIXML_HEADER_ONLY # define PUGI_IMPL_NS_BEGIN namespace pugi { namespace impl { # define PUGI_IMPL_NS_END } } # define PUGI_IMPL_FN inline # define PUGI_IMPL_FN_NO_INLINE inline #else # if defined(_MSC_VER) && _MSC_VER < 1300 // MSVC6 seems to have an amusing bug with anonymous namespaces inside namespaces # define PUGI_IMPL_NS_BEGIN namespace pugi { namespace impl { # define PUGI_IMPL_NS_END } } # else # define PUGI_IMPL_NS_BEGIN namespace pugi { namespace impl { namespace { # define PUGI_IMPL_NS_END } } } # endif # define PUGI_IMPL_FN # define PUGI_IMPL_FN_NO_INLINE PUGI_IMPL_NO_INLINE #endif // uintptr_t #if (defined(_MSC_VER) && _MSC_VER < 1600) || (defined(__BORLANDC__) && __BORLANDC__ < 0x561) namespace pugi { # ifndef _UINTPTR_T_DEFINED typedef size_t uintptr_t; # endif typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; } #else # include #endif // Memory allocation PUGI_IMPL_NS_BEGIN PUGI_IMPL_FN void* default_allocate(size_t size) { return malloc(size); } PUGI_IMPL_FN void default_deallocate(void* ptr) { free(ptr); } template struct xml_memory_management_function_storage { static allocation_function allocate; static deallocation_function deallocate; }; // Global allocation functions are stored in class statics so that in header mode linker deduplicates them // Without a template<> we'll get multiple definitions of the same static template allocation_function xml_memory_management_function_storage::allocate = default_allocate; template deallocation_function xml_memory_management_function_storage::deallocate = default_deallocate; typedef xml_memory_management_function_storage xml_memory; PUGI_IMPL_NS_END // String utilities PUGI_IMPL_NS_BEGIN // Get string length PUGI_IMPL_FN size_t strlength(const char_t* s) { assert(s); #ifdef PUGIXML_WCHAR_MODE return wcslen(s); #else return strlen(s); #endif } // Compare two strings PUGI_IMPL_FN bool strequal(const char_t* src, const char_t* dst) { assert(src && dst); #ifdef PUGIXML_WCHAR_MODE return wcscmp(src, dst) == 0; #else return strcmp(src, dst) == 0; #endif } #ifdef PUGIXML_HAS_STRING_VIEW // Check if the null-terminated dst string is equal to the entire contents of srcview PUGI_IMPL_FN bool stringview_equal(string_view_t srcview, const char_t* dst) { // std::basic_string_view::compare(const char*) has the right behavior, but it performs an // extra traversal of dst to compute its length. assert(dst); const char_t* src = srcview.data(); size_t srclen = srcview.size(); while (srclen && *dst && *src == *dst) { --srclen; ++dst; ++src; } return srclen == 0 && *dst == 0; } #endif // Compare lhs with [rhs_begin, rhs_end) PUGI_IMPL_FN bool strequalrange(const char_t* lhs, const char_t* rhs, size_t count) { for (size_t i = 0; i < count; ++i) if (lhs[i] != rhs[i]) return false; return lhs[count] == 0; } // Get length of wide string, even if CRT lacks wide character support PUGI_IMPL_FN size_t strlength_wide(const wchar_t* s) { assert(s); #ifdef PUGIXML_WCHAR_MODE return wcslen(s); #else const wchar_t* end = s; while (*end) end++; return static_cast(end - s); #endif } PUGI_IMPL_NS_END // auto_ptr-like object for exception recovery PUGI_IMPL_NS_BEGIN template struct auto_deleter { typedef void (*D)(T*); T* data; D deleter; auto_deleter(T* data_, D deleter_): data(data_), deleter(deleter_) { } ~auto_deleter() { if (data) deleter(data); } T* release() { T* result = data; data = NULL; return result; } }; PUGI_IMPL_NS_END #ifdef PUGIXML_COMPACT PUGI_IMPL_NS_BEGIN class compact_hash_table { public: compact_hash_table(): _items(NULL), _capacity(0), _count(0) { } void clear() { if (_items) { xml_memory::deallocate(_items); _items = NULL; _capacity = 0; _count = 0; } } void* find(const void* key) { if (_capacity == 0) return NULL; item_t* item = get_item(key); assert(item); assert(item->key == key || (item->key == NULL && item->value == NULL)); return item->value; } void insert(const void* key, void* value) { assert(_capacity != 0 && _count < _capacity - _capacity / 4); item_t* item = get_item(key); assert(item); if (item->key == NULL) { _count++; item->key = key; } item->value = value; } bool reserve(size_t extra = 16) { if (_count + extra >= _capacity - _capacity / 4) return rehash(_count + extra); return true; } private: struct item_t { const void* key; void* value; }; item_t* _items; size_t _capacity; size_t _count; bool rehash(size_t count); item_t* get_item(const void* key) { assert(key); assert(_capacity > 0); size_t hashmod = _capacity - 1; size_t bucket = hash(key) & hashmod; for (size_t probe = 0; probe <= hashmod; ++probe) { item_t& probe_item = _items[bucket]; if (probe_item.key == key || probe_item.key == NULL) return &probe_item; // hash collision, quadratic probing bucket = (bucket + probe + 1) & hashmod; } assert(false && "Hash table is full"); // unreachable return NULL; } static PUGI_IMPL_UNSIGNED_OVERFLOW unsigned int hash(const void* key) { unsigned int h = static_cast(reinterpret_cast(key) & 0xffffffff); // MurmurHash3 32-bit finalizer h ^= h >> 16; h *= 0x85ebca6bu; h ^= h >> 13; h *= 0xc2b2ae35u; h ^= h >> 16; return h; } }; PUGI_IMPL_FN_NO_INLINE bool compact_hash_table::rehash(size_t count) { size_t capacity = 32; while (count >= capacity - capacity / 4) capacity *= 2; compact_hash_table rt; rt._capacity = capacity; rt._items = static_cast(xml_memory::allocate(sizeof(item_t) * capacity)); if (!rt._items) return false; memset(rt._items, 0, sizeof(item_t) * capacity); for (size_t i = 0; i < _capacity; ++i) if (_items[i].key) rt.insert(_items[i].key, _items[i].value); if (_items) xml_memory::deallocate(_items); _capacity = capacity; _items = rt._items; assert(_count == rt._count); return true; } PUGI_IMPL_NS_END #endif PUGI_IMPL_NS_BEGIN #ifdef PUGIXML_COMPACT static const uintptr_t xml_memory_block_alignment = 4; #else static const uintptr_t xml_memory_block_alignment = sizeof(void*); #endif // extra metadata bits static const uintptr_t xml_memory_page_contents_shared_mask = 64; static const uintptr_t xml_memory_page_name_allocated_mask = 32; static const uintptr_t xml_memory_page_value_allocated_mask = 16; static const uintptr_t xml_memory_page_type_mask = 15; // combined masks for string uniqueness static const uintptr_t xml_memory_page_name_allocated_or_shared_mask = xml_memory_page_name_allocated_mask | xml_memory_page_contents_shared_mask; static const uintptr_t xml_memory_page_value_allocated_or_shared_mask = xml_memory_page_value_allocated_mask | xml_memory_page_contents_shared_mask; #ifdef PUGIXML_COMPACT #define PUGI_IMPL_GETHEADER_IMPL(object, page, flags) // unused #define PUGI_IMPL_GETPAGE_IMPL(header) (header).get_page() #else #define PUGI_IMPL_GETHEADER_IMPL(object, page, flags) (((reinterpret_cast(object) - reinterpret_cast(page)) << 8) | (flags)) // this macro casts pointers through void* to avoid 'cast increases required alignment of target type' warnings #define PUGI_IMPL_GETPAGE_IMPL(header) static_cast(const_cast(static_cast(reinterpret_cast(&header) - (header >> 8)))) #endif #define PUGI_IMPL_GETPAGE(n) PUGI_IMPL_GETPAGE_IMPL((n)->header) #define PUGI_IMPL_NODETYPE(n) static_cast((n)->header & impl::xml_memory_page_type_mask) struct xml_allocator; struct xml_memory_page { static xml_memory_page* construct(void* memory) { xml_memory_page* result = static_cast(memory); result->allocator = NULL; result->prev = NULL; result->next = NULL; result->busy_size = 0; result->freed_size = 0; #ifdef PUGIXML_COMPACT result->compact_string_base = NULL; result->compact_shared_parent = NULL; result->compact_page_marker = NULL; #endif return result; } xml_allocator* allocator; xml_memory_page* prev; xml_memory_page* next; size_t busy_size; size_t freed_size; #ifdef PUGIXML_COMPACT char_t* compact_string_base; void* compact_shared_parent; uint32_t* compact_page_marker; #endif }; static const size_t xml_memory_page_size = #ifdef PUGIXML_MEMORY_PAGE_SIZE (PUGIXML_MEMORY_PAGE_SIZE) #else 32768 #endif - sizeof(xml_memory_page); struct xml_memory_string_header { uint16_t page_offset; // offset from page->data uint16_t full_size; // 0 if string occupies whole page }; struct xml_allocator { xml_allocator(xml_memory_page* root): _root(root), _busy_size(root->busy_size) { #ifdef PUGIXML_COMPACT _hash = NULL; #endif } xml_memory_page* allocate_page(size_t data_size) { size_t size = sizeof(xml_memory_page) + data_size; // allocate block with some alignment, leaving memory for worst-case padding void* memory = xml_memory::allocate(size); if (!memory) return NULL; // prepare page structure xml_memory_page* page = xml_memory_page::construct(memory); assert(page); assert(this == _root->allocator); page->allocator = this; return page; } static void deallocate_page(xml_memory_page* page) { xml_memory::deallocate(page); } void* allocate_memory_oob(size_t size, xml_memory_page*& out_page); void* allocate_memory(size_t size, xml_memory_page*& out_page) { if (PUGI_IMPL_UNLIKELY(_busy_size + size > xml_memory_page_size)) return allocate_memory_oob(size, out_page); void* buf = reinterpret_cast(_root) + sizeof(xml_memory_page) + _busy_size; _busy_size += size; out_page = _root; return buf; } #ifdef PUGIXML_COMPACT void* allocate_object(size_t size, xml_memory_page*& out_page) { void* result = allocate_memory(size + sizeof(uint32_t), out_page); if (!result) return NULL; // adjust for marker ptrdiff_t offset = static_cast(result) - reinterpret_cast(out_page->compact_page_marker); if (PUGI_IMPL_UNLIKELY(static_cast(offset) >= 256 * xml_memory_block_alignment)) { // insert new marker uint32_t* marker = static_cast(result); *marker = static_cast(reinterpret_cast(marker) - reinterpret_cast(out_page)); out_page->compact_page_marker = marker; // since we don't reuse the page space until we reallocate it, we can just pretend that we freed the marker block // this will make sure deallocate_memory correctly tracks the size out_page->freed_size += sizeof(uint32_t); return marker + 1; } else { // roll back uint32_t part _busy_size -= sizeof(uint32_t); return result; } } #else void* allocate_object(size_t size, xml_memory_page*& out_page) { return allocate_memory(size, out_page); } #endif void deallocate_memory(void* ptr, size_t size, xml_memory_page* page) { if (page == _root) page->busy_size = _busy_size; assert(ptr >= reinterpret_cast(page) + sizeof(xml_memory_page) && ptr < reinterpret_cast(page) + sizeof(xml_memory_page) + page->busy_size); (void)!ptr; page->freed_size += size; assert(page->freed_size <= page->busy_size); if (page->freed_size == page->busy_size) { if (page->next == NULL) { assert(_root == page); // top page freed, just reset sizes page->busy_size = 0; page->freed_size = 0; #ifdef PUGIXML_COMPACT // reset compact state to maximize efficiency page->compact_string_base = NULL; page->compact_shared_parent = NULL; page->compact_page_marker = NULL; #endif _busy_size = 0; } else { assert(_root != page); assert(page->prev); // remove from the list page->prev->next = page->next; page->next->prev = page->prev; // deallocate deallocate_page(page); } } } char_t* allocate_string(size_t length) { static const size_t max_encoded_offset = (1 << 16) * xml_memory_block_alignment; PUGI_IMPL_STATIC_ASSERT(xml_memory_page_size <= max_encoded_offset); // allocate memory for string and header block size_t size = sizeof(xml_memory_string_header) + length * sizeof(char_t); // round size up to block alignment boundary size_t full_size = (size + (xml_memory_block_alignment - 1)) & ~(xml_memory_block_alignment - 1); xml_memory_page* page; xml_memory_string_header* header = static_cast(allocate_memory(full_size, page)); if (!header) return NULL; // setup header ptrdiff_t page_offset = reinterpret_cast(header) - reinterpret_cast(page) - sizeof(xml_memory_page); assert(page_offset % xml_memory_block_alignment == 0); assert(page_offset >= 0 && static_cast(page_offset) < max_encoded_offset); header->page_offset = static_cast(static_cast(page_offset) / xml_memory_block_alignment); // full_size == 0 for large strings that occupy the whole page assert(full_size % xml_memory_block_alignment == 0); assert(full_size < max_encoded_offset || (page->busy_size == full_size && page_offset == 0)); header->full_size = static_cast(full_size < max_encoded_offset ? full_size / xml_memory_block_alignment : 0); // round-trip through void* to avoid 'cast increases required alignment of target type' warning // header is guaranteed a pointer-sized alignment, which should be enough for char_t return static_cast(static_cast(header + 1)); } void deallocate_string(char_t* string) { // this function casts pointers through void* to avoid 'cast increases required alignment of target type' warnings // we're guaranteed the proper (pointer-sized) alignment on the input string if it was allocated via allocate_string // get header xml_memory_string_header* header = static_cast(static_cast(string)) - 1; assert(header); // deallocate size_t page_offset = sizeof(xml_memory_page) + header->page_offset * xml_memory_block_alignment; xml_memory_page* page = reinterpret_cast(static_cast(reinterpret_cast(header) - page_offset)); // if full_size == 0 then this string occupies the whole page size_t full_size = header->full_size == 0 ? page->busy_size : header->full_size * xml_memory_block_alignment; deallocate_memory(header, full_size, page); } bool reserve() { #ifdef PUGIXML_COMPACT return _hash->reserve(); #else return true; #endif } xml_memory_page* _root; size_t _busy_size; #ifdef PUGIXML_COMPACT compact_hash_table* _hash; #endif }; PUGI_IMPL_FN_NO_INLINE void* xml_allocator::allocate_memory_oob(size_t size, xml_memory_page*& out_page) { const size_t large_allocation_threshold = xml_memory_page_size / 4; xml_memory_page* page = allocate_page(size <= large_allocation_threshold ? xml_memory_page_size : size); out_page = page; if (!page) return NULL; if (size <= large_allocation_threshold) { _root->busy_size = _busy_size; // insert page at the end of linked list page->prev = _root; _root->next = page; _root = page; _busy_size = size; } else { // insert page before the end of linked list, so that it is deleted as soon as possible // the last page is not deleted even if it's empty (see deallocate_memory) assert(_root->prev); page->prev = _root->prev; page->next = _root; _root->prev->next = page; _root->prev = page; page->busy_size = size; } return reinterpret_cast(page) + sizeof(xml_memory_page); } PUGI_IMPL_NS_END #ifdef PUGIXML_COMPACT PUGI_IMPL_NS_BEGIN static const uintptr_t compact_alignment_log2 = 2; static const uintptr_t compact_alignment = 1 << compact_alignment_log2; class compact_header { public: compact_header(xml_memory_page* page, unsigned int flags) { PUGI_IMPL_STATIC_ASSERT(xml_memory_block_alignment == compact_alignment); ptrdiff_t offset = (reinterpret_cast(this) - reinterpret_cast(page->compact_page_marker)); assert(offset % compact_alignment == 0 && static_cast(offset) < 256 * compact_alignment); _page = static_cast(offset >> compact_alignment_log2); _flags = static_cast(flags); } void operator&=(uintptr_t mod) { _flags &= static_cast(mod); } void operator|=(uintptr_t mod) { _flags |= static_cast(mod); } uintptr_t operator&(uintptr_t mod) const { return _flags & mod; } xml_memory_page* get_page() const { // round-trip through void* to silence 'cast increases required alignment of target type' warnings const char* page_marker = reinterpret_cast(this) - (_page << compact_alignment_log2); const char* page = page_marker - *reinterpret_cast(static_cast(page_marker)); return const_cast(reinterpret_cast(static_cast(page))); } private: unsigned char _page; unsigned char _flags; }; PUGI_IMPL_FN xml_memory_page* compact_get_page(const void* object, int header_offset) { const compact_header* header = reinterpret_cast(static_cast(object) - header_offset); return header->get_page(); } template PUGI_IMPL_FN_NO_INLINE T* compact_get_value(const void* object) { return static_cast(compact_get_page(object, header_offset)->allocator->_hash->find(object)); } template PUGI_IMPL_FN_NO_INLINE void compact_set_value(const void* object, T* value) { compact_get_page(object, header_offset)->allocator->_hash->insert(object, value); } template class compact_pointer { public: compact_pointer(): _data(0) { } void operator=(const compact_pointer& rhs) { *this = rhs + 0; } void operator=(T* value) { if (value) { // value is guaranteed to be compact-aligned; 'this' is not // our decoding is based on 'this' aligned to compact alignment downwards (see operator T*) // so for negative offsets (e.g. -3) we need to adjust the diff by compact_alignment - 1 to // compensate for arithmetic shift rounding for negative values ptrdiff_t diff = reinterpret_cast(value) - reinterpret_cast(this); ptrdiff_t offset = ((diff + int(compact_alignment - 1)) >> compact_alignment_log2) - start; if (static_cast(offset) <= 253) _data = static_cast(offset + 1); else { compact_set_value(this, value); _data = 255; } } else _data = 0; } operator T*() const { if (_data) { if (_data < 255) { uintptr_t base = reinterpret_cast(this) & ~(compact_alignment - 1); return reinterpret_cast(base + (_data - 1 + start) * compact_alignment); } else return compact_get_value(this); } else return NULL; } T* operator->() const { return *this; } private: unsigned char _data; }; template class compact_pointer_parent { public: compact_pointer_parent(): _data(0) { } void operator=(const compact_pointer_parent& rhs) { *this = rhs + 0; } void operator=(T* value) { if (value) { // value is guaranteed to be compact-aligned; 'this' is not // our decoding is based on 'this' aligned to compact alignment downwards (see operator T*) // so for negative offsets (e.g. -3) we need to adjust the diff by compact_alignment - 1 to // compensate for arithmetic shift behavior for negative values ptrdiff_t diff = reinterpret_cast(value) - reinterpret_cast(this); ptrdiff_t offset = ((diff + int(compact_alignment - 1)) >> compact_alignment_log2) + 65533; if (static_cast(offset) <= 65533) { _data = static_cast(offset + 1); } else { xml_memory_page* page = compact_get_page(this, header_offset); if (PUGI_IMPL_UNLIKELY(page->compact_shared_parent == NULL)) page->compact_shared_parent = value; if (page->compact_shared_parent == value) { _data = 65534; } else { compact_set_value(this, value); _data = 65535; } } } else { _data = 0; } } operator T*() const { if (_data) { if (_data < 65534) { uintptr_t base = reinterpret_cast(this) & ~(compact_alignment - 1); return reinterpret_cast(base + (_data - 1 - 65533) * compact_alignment); } else if (_data == 65534) return static_cast(compact_get_page(this, header_offset)->compact_shared_parent); else return compact_get_value(this); } else return NULL; } T* operator->() const { return *this; } private: uint16_t _data; }; template class compact_string { public: compact_string(): _data(0) { } void operator=(const compact_string& rhs) { *this = rhs + 0; } void operator=(char_t* value) { if (value) { xml_memory_page* page = compact_get_page(this, header_offset); if (PUGI_IMPL_UNLIKELY(page->compact_string_base == NULL)) page->compact_string_base = value; ptrdiff_t offset = value - page->compact_string_base; if (static_cast(offset) < (65535 << 7)) { // round-trip through void* to silence 'cast increases required alignment of target type' warnings uint16_t* base = reinterpret_cast(static_cast(reinterpret_cast(this) - base_offset)); if (*base == 0) { *base = static_cast((offset >> 7) + 1); _data = static_cast((offset & 127) + 1); } else { ptrdiff_t remainder = offset - ((*base - 1) << 7); if (static_cast(remainder) <= 253) { _data = static_cast(remainder + 1); } else { compact_set_value(this, value); _data = 255; } } } else { compact_set_value(this, value); _data = 255; } } else { _data = 0; } } operator char_t*() const { if (_data) { if (_data < 255) { xml_memory_page* page = compact_get_page(this, header_offset); // round-trip through void* to silence 'cast increases required alignment of target type' warnings const uint16_t* base = reinterpret_cast(static_cast(reinterpret_cast(this) - base_offset)); assert(*base); ptrdiff_t offset = ((*base - 1) << 7) + (_data - 1); return page->compact_string_base + offset; } else { return compact_get_value(this); } } else return NULL; } private: unsigned char _data; }; PUGI_IMPL_NS_END #endif #ifdef PUGIXML_COMPACT namespace pugi { struct xml_attribute_struct { xml_attribute_struct(impl::xml_memory_page* page): header(page, 0), namevalue_base(0) { PUGI_IMPL_STATIC_ASSERT(sizeof(xml_attribute_struct) == 8); } impl::compact_header header; uint16_t namevalue_base; impl::compact_string<4, 2> name; impl::compact_string<5, 3> value; impl::compact_pointer prev_attribute_c; impl::compact_pointer next_attribute; }; struct xml_node_struct { xml_node_struct(impl::xml_memory_page* page, xml_node_type type): header(page, type), namevalue_base(0) { PUGI_IMPL_STATIC_ASSERT(sizeof(xml_node_struct) == 12); } impl::compact_header header; uint16_t namevalue_base; impl::compact_string<4, 2> name; impl::compact_string<5, 3> value; impl::compact_pointer_parent parent; impl::compact_pointer first_child; impl::compact_pointer prev_sibling_c; impl::compact_pointer next_sibling; impl::compact_pointer first_attribute; }; } #else namespace pugi { struct xml_attribute_struct { xml_attribute_struct(impl::xml_memory_page* page): name(NULL), value(NULL), prev_attribute_c(NULL), next_attribute(NULL) { header = PUGI_IMPL_GETHEADER_IMPL(this, page, 0); } uintptr_t header; char_t* name; char_t* value; xml_attribute_struct* prev_attribute_c; xml_attribute_struct* next_attribute; }; struct xml_node_struct { xml_node_struct(impl::xml_memory_page* page, xml_node_type type): name(NULL), value(NULL), parent(NULL), first_child(NULL), prev_sibling_c(NULL), next_sibling(NULL), first_attribute(NULL) { header = PUGI_IMPL_GETHEADER_IMPL(this, page, type); } uintptr_t header; char_t* name; char_t* value; xml_node_struct* parent; xml_node_struct* first_child; xml_node_struct* prev_sibling_c; xml_node_struct* next_sibling; xml_attribute_struct* first_attribute; }; } #endif PUGI_IMPL_NS_BEGIN struct xml_extra_buffer { char_t* buffer; xml_extra_buffer* next; }; struct xml_document_struct: public xml_node_struct, public xml_allocator { xml_document_struct(xml_memory_page* page): xml_node_struct(page, node_document), xml_allocator(page), buffer(NULL), extra_buffers(NULL) { } const char_t* buffer; xml_extra_buffer* extra_buffers; #ifdef PUGIXML_COMPACT compact_hash_table hash; #endif }; template inline xml_allocator& get_allocator(const Object* object) { assert(object); return *PUGI_IMPL_GETPAGE(object)->allocator; } template inline xml_document_struct& get_document(const Object* object) { assert(object); return *static_cast(PUGI_IMPL_GETPAGE(object)->allocator); } PUGI_IMPL_NS_END // Low-level DOM operations PUGI_IMPL_NS_BEGIN inline xml_attribute_struct* allocate_attribute(xml_allocator& alloc) { xml_memory_page* page; void* memory = alloc.allocate_object(sizeof(xml_attribute_struct), page); if (!memory) return NULL; return new (memory) xml_attribute_struct(page); } inline xml_node_struct* allocate_node(xml_allocator& alloc, xml_node_type type) { xml_memory_page* page; void* memory = alloc.allocate_object(sizeof(xml_node_struct), page); if (!memory) return NULL; return new (memory) xml_node_struct(page, type); } inline void destroy_attribute(xml_attribute_struct* a, xml_allocator& alloc) { if (a->header & impl::xml_memory_page_name_allocated_mask) alloc.deallocate_string(a->name); if (a->header & impl::xml_memory_page_value_allocated_mask) alloc.deallocate_string(a->value); alloc.deallocate_memory(a, sizeof(xml_attribute_struct), PUGI_IMPL_GETPAGE(a)); } inline void destroy_node(xml_node_struct* n, xml_allocator& alloc) { if (n->header & impl::xml_memory_page_name_allocated_mask) alloc.deallocate_string(n->name); if (n->header & impl::xml_memory_page_value_allocated_mask) alloc.deallocate_string(n->value); for (xml_attribute_struct* attr = n->first_attribute; attr; ) { xml_attribute_struct* next = attr->next_attribute; destroy_attribute(attr, alloc); attr = next; } for (xml_node_struct* child = n->first_child; child; ) { xml_node_struct* next = child->next_sibling; destroy_node(child, alloc); child = next; } alloc.deallocate_memory(n, sizeof(xml_node_struct), PUGI_IMPL_GETPAGE(n)); } inline void append_node(xml_node_struct* child, xml_node_struct* node) { child->parent = node; xml_node_struct* head = node->first_child; if (head) { xml_node_struct* tail = head->prev_sibling_c; tail->next_sibling = child; child->prev_sibling_c = tail; head->prev_sibling_c = child; } else { node->first_child = child; child->prev_sibling_c = child; } } inline void prepend_node(xml_node_struct* child, xml_node_struct* node) { child->parent = node; xml_node_struct* head = node->first_child; if (head) { child->prev_sibling_c = head->prev_sibling_c; head->prev_sibling_c = child; } else child->prev_sibling_c = child; child->next_sibling = head; node->first_child = child; } inline void insert_node_after(xml_node_struct* child, xml_node_struct* node) { xml_node_struct* parent = node->parent; child->parent = parent; xml_node_struct* next = node->next_sibling; if (next) next->prev_sibling_c = child; else parent->first_child->prev_sibling_c = child; child->next_sibling = next; child->prev_sibling_c = node; node->next_sibling = child; } inline void insert_node_before(xml_node_struct* child, xml_node_struct* node) { xml_node_struct* parent = node->parent; child->parent = parent; xml_node_struct* prev = node->prev_sibling_c; if (prev->next_sibling) prev->next_sibling = child; else parent->first_child = child; child->prev_sibling_c = prev; child->next_sibling = node; node->prev_sibling_c = child; } inline void remove_node(xml_node_struct* node) { xml_node_struct* parent = node->parent; xml_node_struct* next = node->next_sibling; xml_node_struct* prev = node->prev_sibling_c; if (next) next->prev_sibling_c = prev; else parent->first_child->prev_sibling_c = prev; if (prev->next_sibling) prev->next_sibling = next; else parent->first_child = next; node->parent = NULL; node->prev_sibling_c = NULL; node->next_sibling = NULL; } inline void append_attribute(xml_attribute_struct* attr, xml_node_struct* node) { xml_attribute_struct* head = node->first_attribute; if (head) { xml_attribute_struct* tail = head->prev_attribute_c; tail->next_attribute = attr; attr->prev_attribute_c = tail; head->prev_attribute_c = attr; } else { node->first_attribute = attr; attr->prev_attribute_c = attr; } } inline void prepend_attribute(xml_attribute_struct* attr, xml_node_struct* node) { xml_attribute_struct* head = node->first_attribute; if (head) { attr->prev_attribute_c = head->prev_attribute_c; head->prev_attribute_c = attr; } else attr->prev_attribute_c = attr; attr->next_attribute = head; node->first_attribute = attr; } inline void insert_attribute_after(xml_attribute_struct* attr, xml_attribute_struct* place, xml_node_struct* node) { xml_attribute_struct* next = place->next_attribute; if (next) next->prev_attribute_c = attr; else node->first_attribute->prev_attribute_c = attr; attr->next_attribute = next; attr->prev_attribute_c = place; place->next_attribute = attr; } inline void insert_attribute_before(xml_attribute_struct* attr, xml_attribute_struct* place, xml_node_struct* node) { xml_attribute_struct* prev = place->prev_attribute_c; if (prev->next_attribute) prev->next_attribute = attr; else node->first_attribute = attr; attr->prev_attribute_c = prev; attr->next_attribute = place; place->prev_attribute_c = attr; } inline void remove_attribute(xml_attribute_struct* attr, xml_node_struct* node) { xml_attribute_struct* next = attr->next_attribute; xml_attribute_struct* prev = attr->prev_attribute_c; if (next) next->prev_attribute_c = prev; else node->first_attribute->prev_attribute_c = prev; if (prev->next_attribute) prev->next_attribute = next; else node->first_attribute = next; attr->prev_attribute_c = NULL; attr->next_attribute = NULL; } PUGI_IMPL_FN_NO_INLINE xml_node_struct* append_new_node(xml_node_struct* node, xml_allocator& alloc, xml_node_type type = node_element) { if (!alloc.reserve()) return NULL; xml_node_struct* child = allocate_node(alloc, type); if (!child) return NULL; append_node(child, node); return child; } PUGI_IMPL_FN_NO_INLINE xml_attribute_struct* append_new_attribute(xml_node_struct* node, xml_allocator& alloc) { if (!alloc.reserve()) return NULL; xml_attribute_struct* attr = allocate_attribute(alloc); if (!attr) return NULL; append_attribute(attr, node); return attr; } PUGI_IMPL_NS_END // Helper classes for code generation PUGI_IMPL_NS_BEGIN struct opt_false { enum { value = 0 }; }; struct opt_true { enum { value = 1 }; }; PUGI_IMPL_NS_END // Unicode utilities PUGI_IMPL_NS_BEGIN inline uint16_t endian_swap(uint16_t value) { return static_cast(((value & 0xff) << 8) | (value >> 8)); } inline uint32_t endian_swap(uint32_t value) { return ((value & 0xff) << 24) | ((value & 0xff00) << 8) | ((value & 0xff0000) >> 8) | (value >> 24); } struct utf8_counter { typedef size_t value_type; static value_type low(value_type result, uint32_t ch) { // U+0000..U+007F if (ch < 0x80) return result + 1; // U+0080..U+07FF else if (ch < 0x800) return result + 2; // U+0800..U+FFFF else return result + 3; } static value_type high(value_type result, uint32_t) { // U+10000..U+10FFFF return result + 4; } }; struct utf8_writer { typedef uint8_t* value_type; static value_type low(value_type result, uint32_t ch) { // U+0000..U+007F if (ch < 0x80) { *result = static_cast(ch); return result + 1; } // U+0080..U+07FF else if (ch < 0x800) { result[0] = static_cast(0xC0 | (ch >> 6)); result[1] = static_cast(0x80 | (ch & 0x3F)); return result + 2; } // U+0800..U+FFFF else { result[0] = static_cast(0xE0 | (ch >> 12)); result[1] = static_cast(0x80 | ((ch >> 6) & 0x3F)); result[2] = static_cast(0x80 | (ch & 0x3F)); return result + 3; } } static value_type high(value_type result, uint32_t ch) { // U+10000..U+10FFFF result[0] = static_cast(0xF0 | (ch >> 18)); result[1] = static_cast(0x80 | ((ch >> 12) & 0x3F)); result[2] = static_cast(0x80 | ((ch >> 6) & 0x3F)); result[3] = static_cast(0x80 | (ch & 0x3F)); return result + 4; } static value_type any(value_type result, uint32_t ch) { return (ch < 0x10000) ? low(result, ch) : high(result, ch); } }; struct utf16_counter { typedef size_t value_type; static value_type low(value_type result, uint32_t) { return result + 1; } static value_type high(value_type result, uint32_t) { return result + 2; } }; struct utf16_writer { typedef uint16_t* value_type; static value_type low(value_type result, uint32_t ch) { *result = static_cast(ch); return result + 1; } static value_type high(value_type result, uint32_t ch) { uint32_t msh = (ch - 0x10000U) >> 10; uint32_t lsh = (ch - 0x10000U) & 0x3ff; result[0] = static_cast(0xD800 + msh); result[1] = static_cast(0xDC00 + lsh); return result + 2; } static value_type any(value_type result, uint32_t ch) { return (ch < 0x10000) ? low(result, ch) : high(result, ch); } }; struct utf32_counter { typedef size_t value_type; static value_type low(value_type result, uint32_t) { return result + 1; } static value_type high(value_type result, uint32_t) { return result + 1; } }; struct utf32_writer { typedef uint32_t* value_type; static value_type low(value_type result, uint32_t ch) { *result = ch; return result + 1; } static value_type high(value_type result, uint32_t ch) { *result = ch; return result + 1; } static value_type any(value_type result, uint32_t ch) { *result = ch; return result + 1; } }; struct latin1_writer { typedef uint8_t* value_type; static value_type low(value_type result, uint32_t ch) { *result = static_cast(ch > 255 ? '?' : ch); return result + 1; } static value_type high(value_type result, uint32_t ch) { (void)ch; *result = '?'; return result + 1; } }; struct utf8_decoder { typedef uint8_t type; template static inline typename Traits::value_type process(const uint8_t* data, size_t size, typename Traits::value_type result, Traits) { const uint8_t utf8_byte_mask = 0x3f; while (size) { uint8_t lead = *data; // 0xxxxxxx -> U+0000..U+007F if (lead < 0x80) { result = Traits::low(result, lead); data += 1; size -= 1; // process aligned single-byte (ascii) blocks if ((reinterpret_cast(data) & 3) == 0) { // round-trip through void* to silence 'cast increases required alignment of target type' warnings while (size >= 4 && (*static_cast(static_cast(data)) & 0x80808080) == 0) { result = Traits::low(result, data[0]); result = Traits::low(result, data[1]); result = Traits::low(result, data[2]); result = Traits::low(result, data[3]); data += 4; size -= 4; } } } // 110xxxxx -> U+0080..U+07FF else if (static_cast(lead - 0xC0) < 0x20 && size >= 2 && (data[1] & 0xc0) == 0x80) { result = Traits::low(result, ((lead & ~0xC0) << 6) | (data[1] & utf8_byte_mask)); data += 2; size -= 2; } // 1110xxxx -> U+0800-U+FFFF else if (static_cast(lead - 0xE0) < 0x10 && size >= 3 && (data[1] & 0xc0) == 0x80 && (data[2] & 0xc0) == 0x80) { result = Traits::low(result, ((lead & ~0xE0) << 12) | ((data[1] & utf8_byte_mask) << 6) | (data[2] & utf8_byte_mask)); data += 3; size -= 3; } // 11110xxx -> U+10000..U+10FFFF else if (static_cast(lead - 0xF0) < 0x08 && size >= 4 && (data[1] & 0xc0) == 0x80 && (data[2] & 0xc0) == 0x80 && (data[3] & 0xc0) == 0x80) { result = Traits::high(result, ((lead & ~0xF0) << 18) | ((data[1] & utf8_byte_mask) << 12) | ((data[2] & utf8_byte_mask) << 6) | (data[3] & utf8_byte_mask)); data += 4; size -= 4; } // 10xxxxxx or 11111xxx -> invalid else { data += 1; size -= 1; } } return result; } }; template struct utf16_decoder { typedef uint16_t type; template static inline typename Traits::value_type process(const uint16_t* data, size_t size, typename Traits::value_type result, Traits) { while (size) { uint16_t lead = opt_swap::value ? endian_swap(*data) : *data; // U+0000..U+D7FF if (lead < 0xD800) { result = Traits::low(result, lead); data += 1; size -= 1; } // U+E000..U+FFFF else if (static_cast(lead - 0xE000) < 0x2000) { result = Traits::low(result, lead); data += 1; size -= 1; } // surrogate pair lead else if (static_cast(lead - 0xD800) < 0x400 && size >= 2) { uint16_t next = opt_swap::value ? endian_swap(data[1]) : data[1]; if (static_cast(next - 0xDC00) < 0x400) { result = Traits::high(result, 0x10000 + ((lead & 0x3ff) << 10) + (next & 0x3ff)); data += 2; size -= 2; } else { data += 1; size -= 1; } } else { data += 1; size -= 1; } } return result; } }; template struct utf32_decoder { typedef uint32_t type; template static inline typename Traits::value_type process(const uint32_t* data, size_t size, typename Traits::value_type result, Traits) { while (size) { uint32_t lead = opt_swap::value ? endian_swap(*data) : *data; // U+0000..U+FFFF if (lead < 0x10000) { result = Traits::low(result, lead); data += 1; size -= 1; } // U+10000..U+10FFFF else { result = Traits::high(result, lead); data += 1; size -= 1; } } return result; } }; struct latin1_decoder { typedef uint8_t type; template static inline typename Traits::value_type process(const uint8_t* data, size_t size, typename Traits::value_type result, Traits) { while (size) { result = Traits::low(result, *data); data += 1; size -= 1; } return result; } }; template struct wchar_selector; template <> struct wchar_selector<2> { typedef uint16_t type; typedef utf16_counter counter; typedef utf16_writer writer; typedef utf16_decoder decoder; }; template <> struct wchar_selector<4> { typedef uint32_t type; typedef utf32_counter counter; typedef utf32_writer writer; typedef utf32_decoder decoder; }; typedef wchar_selector::counter wchar_counter; typedef wchar_selector::writer wchar_writer; struct wchar_decoder { typedef wchar_t type; template static inline typename Traits::value_type process(const wchar_t* data, size_t size, typename Traits::value_type result, Traits traits) { typedef wchar_selector::decoder decoder; return decoder::process(reinterpret_cast(data), size, result, traits); } }; #ifdef PUGIXML_WCHAR_MODE PUGI_IMPL_FN void convert_wchar_endian_swap(wchar_t* result, const wchar_t* data, size_t length) { for (size_t i = 0; i < length; ++i) result[i] = static_cast(endian_swap(static_cast::type>(data[i]))); } #endif PUGI_IMPL_NS_END PUGI_IMPL_NS_BEGIN enum chartype_t { ct_parse_pcdata = 1, // \0, &, \r, < ct_parse_attr = 2, // \0, &, \r, ', " ct_parse_attr_ws = 4, // \0, &, \r, ', ", \n, tab ct_space = 8, // \r, \n, space, tab ct_parse_cdata = 16, // \0, ], >, \r ct_parse_comment = 32, // \0, -, >, \r ct_symbol = 64, // Any symbol > 127, a-z, A-Z, 0-9, _, :, -, . ct_start_symbol = 128 // Any symbol > 127, a-z, A-Z, _, : }; static const unsigned char chartype_table[256] = { 55, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 63, 0, 0, // 0-15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16-31 8, 0, 6, 0, 0, 0, 7, 6, 0, 0, 0, 0, 0, 96, 64, 0, // 32-47 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 192, 0, 1, 0, 48, 0, // 48-63 0, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, // 64-79 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 0, 0, 16, 0, 192, // 80-95 0, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, // 96-111 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 0, 0, 0, 0, 0, // 112-127 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, // 128+ 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192 }; enum chartypex_t { ctx_special_pcdata = 1, // Any symbol >= 0 and < 32 (except \t, \r, \n), &, <, > ctx_special_attr = 2, // Any symbol >= 0 and < 32, &, <, ", ' ctx_start_symbol = 4, // Any symbol > 127, a-z, A-Z, _ ctx_digit = 8, // 0-9 ctx_symbol = 16 // Any symbol > 127, a-z, A-Z, 0-9, _, -, . }; static const unsigned char chartypex_table[256] = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, 2, 3, 3, // 0-15 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 16-31 0, 0, 2, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 16, 16, 0, // 32-47 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 3, 0, 1, 0, // 48-63 0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, // 64-79 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 0, 0, 20, // 80-95 0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, // 96-111 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 0, 0, 0, // 112-127 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, // 128+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }; #ifdef PUGIXML_WCHAR_MODE #define PUGI_IMPL_IS_CHARTYPE_IMPL(c, ct, table) ((static_cast(c) < 128 ? table[static_cast(c)] : table[128]) & (ct)) #else #define PUGI_IMPL_IS_CHARTYPE_IMPL(c, ct, table) (table[static_cast(c)] & (ct)) #endif #define PUGI_IMPL_IS_CHARTYPE(c, ct) PUGI_IMPL_IS_CHARTYPE_IMPL(c, ct, chartype_table) #define PUGI_IMPL_IS_CHARTYPEX(c, ct) PUGI_IMPL_IS_CHARTYPE_IMPL(c, ct, chartypex_table) PUGI_IMPL_FN bool is_little_endian() { unsigned int ui = 1; return *reinterpret_cast(&ui) == 1; } PUGI_IMPL_FN xml_encoding get_wchar_encoding() { PUGI_IMPL_STATIC_ASSERT(sizeof(wchar_t) == 2 || sizeof(wchar_t) == 4); if (sizeof(wchar_t) == 2) return is_little_endian() ? encoding_utf16_le : encoding_utf16_be; else return is_little_endian() ? encoding_utf32_le : encoding_utf32_be; } PUGI_IMPL_FN bool parse_declaration_encoding(const uint8_t* data, size_t size, const uint8_t*& out_encoding, size_t& out_length) { #define PUGI_IMPL_SCANCHAR(ch) { if (offset >= size || data[offset] != ch) return false; offset++; } #define PUGI_IMPL_SCANCHARTYPE(ct) { while (offset < size && PUGI_IMPL_IS_CHARTYPE(data[offset], ct)) offset++; } // check if we have a non-empty XML declaration if (size < 6 || !((data[0] == '<') & (data[1] == '?') & (data[2] == 'x') & (data[3] == 'm') & (data[4] == 'l') && PUGI_IMPL_IS_CHARTYPE(data[5], ct_space))) return false; // scan XML declaration until the encoding field for (size_t i = 6; i + 1 < size; ++i) { // declaration can not contain ? in quoted values if (data[i] == '?') return false; if (data[i] == 'e' && data[i + 1] == 'n') { size_t offset = i; // encoding follows the version field which can't contain 'en' so this has to be the encoding if XML is well formed PUGI_IMPL_SCANCHAR('e'); PUGI_IMPL_SCANCHAR('n'); PUGI_IMPL_SCANCHAR('c'); PUGI_IMPL_SCANCHAR('o'); PUGI_IMPL_SCANCHAR('d'); PUGI_IMPL_SCANCHAR('i'); PUGI_IMPL_SCANCHAR('n'); PUGI_IMPL_SCANCHAR('g'); // S? = S? PUGI_IMPL_SCANCHARTYPE(ct_space); PUGI_IMPL_SCANCHAR('='); PUGI_IMPL_SCANCHARTYPE(ct_space); // the only two valid delimiters are ' and " uint8_t delimiter = (offset < size && data[offset] == '"') ? '"' : '\''; PUGI_IMPL_SCANCHAR(delimiter); size_t start = offset; out_encoding = data + offset; PUGI_IMPL_SCANCHARTYPE(ct_symbol); out_length = offset - start; PUGI_IMPL_SCANCHAR(delimiter); return true; } } return false; #undef PUGI_IMPL_SCANCHAR #undef PUGI_IMPL_SCANCHARTYPE } PUGI_IMPL_FN xml_encoding guess_buffer_encoding(const uint8_t* data, size_t size) { // skip encoding autodetection if input buffer is too small if (size < 4) return encoding_utf8; uint8_t d0 = data[0], d1 = data[1], d2 = data[2], d3 = data[3]; // look for BOM in first few bytes if (d0 == 0 && d1 == 0 && d2 == 0xfe && d3 == 0xff) return encoding_utf32_be; if (d0 == 0xff && d1 == 0xfe && d2 == 0 && d3 == 0) return encoding_utf32_le; if (d0 == 0xfe && d1 == 0xff) return encoding_utf16_be; if (d0 == 0xff && d1 == 0xfe) return encoding_utf16_le; if (d0 == 0xef && d1 == 0xbb && d2 == 0xbf) return encoding_utf8; // look for <, (contents); return guess_buffer_encoding(data, size); } PUGI_IMPL_FN bool get_mutable_buffer(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, bool is_mutable) { size_t length = size / sizeof(char_t); if (is_mutable) { out_buffer = static_cast(const_cast(contents)); out_length = length; } else { char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); if (!buffer) return false; if (contents) memcpy(buffer, contents, length * sizeof(char_t)); else assert(length == 0); buffer[length] = 0; out_buffer = buffer; out_length = length + 1; } return true; } #ifdef PUGIXML_WCHAR_MODE PUGI_IMPL_FN bool need_endian_swap_utf(xml_encoding le, xml_encoding re) { return (le == encoding_utf16_be && re == encoding_utf16_le) || (le == encoding_utf16_le && re == encoding_utf16_be) || (le == encoding_utf32_be && re == encoding_utf32_le) || (le == encoding_utf32_le && re == encoding_utf32_be); } PUGI_IMPL_FN bool convert_buffer_endian_swap(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, bool is_mutable) { const char_t* data = static_cast(contents); size_t length = size / sizeof(char_t); if (is_mutable) { char_t* buffer = const_cast(data); convert_wchar_endian_swap(buffer, data, length); out_buffer = buffer; out_length = length; } else { char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); if (!buffer) return false; convert_wchar_endian_swap(buffer, data, length); buffer[length] = 0; out_buffer = buffer; out_length = length + 1; } return true; } template PUGI_IMPL_FN bool convert_buffer_generic(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, D) { const typename D::type* data = static_cast(contents); size_t data_length = size / sizeof(typename D::type); // first pass: get length in wchar_t units size_t length = D::process(data, data_length, 0, wchar_counter()); // allocate buffer of suitable length char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); if (!buffer) return false; // second pass: convert utf16 input to wchar_t wchar_writer::value_type obegin = reinterpret_cast(buffer); wchar_writer::value_type oend = D::process(data, data_length, obegin, wchar_writer()); assert(oend == obegin + length); *oend = 0; out_buffer = buffer; out_length = length + 1; return true; } PUGI_IMPL_FN bool convert_buffer(char_t*& out_buffer, size_t& out_length, xml_encoding encoding, const void* contents, size_t size, bool is_mutable) { // get native encoding xml_encoding wchar_encoding = get_wchar_encoding(); // fast path: no conversion required if (encoding == wchar_encoding) return get_mutable_buffer(out_buffer, out_length, contents, size, is_mutable); // only endian-swapping is required if (need_endian_swap_utf(encoding, wchar_encoding)) return convert_buffer_endian_swap(out_buffer, out_length, contents, size, is_mutable); // source encoding is utf8 if (encoding == encoding_utf8) return convert_buffer_generic(out_buffer, out_length, contents, size, utf8_decoder()); // source encoding is utf16 if (encoding == encoding_utf16_be || encoding == encoding_utf16_le) { xml_encoding native_encoding = is_little_endian() ? encoding_utf16_le : encoding_utf16_be; return (native_encoding == encoding) ? convert_buffer_generic(out_buffer, out_length, contents, size, utf16_decoder()) : convert_buffer_generic(out_buffer, out_length, contents, size, utf16_decoder()); } // source encoding is utf32 if (encoding == encoding_utf32_be || encoding == encoding_utf32_le) { xml_encoding native_encoding = is_little_endian() ? encoding_utf32_le : encoding_utf32_be; return (native_encoding == encoding) ? convert_buffer_generic(out_buffer, out_length, contents, size, utf32_decoder()) : convert_buffer_generic(out_buffer, out_length, contents, size, utf32_decoder()); } // source encoding is latin1 if (encoding == encoding_latin1) return convert_buffer_generic(out_buffer, out_length, contents, size, latin1_decoder()); assert(false && "Invalid encoding"); // unreachable return false; } #else template PUGI_IMPL_FN bool convert_buffer_generic(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, D) { const typename D::type* data = static_cast(contents); size_t data_length = size / sizeof(typename D::type); // first pass: get length in utf8 units size_t length = D::process(data, data_length, 0, utf8_counter()); // allocate buffer of suitable length char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); if (!buffer) return false; // second pass: convert utf16 input to utf8 uint8_t* obegin = reinterpret_cast(buffer); uint8_t* oend = D::process(data, data_length, obegin, utf8_writer()); assert(oend == obegin + length); *oend = 0; out_buffer = buffer; out_length = length + 1; return true; } PUGI_IMPL_FN size_t get_latin1_7bit_prefix_length(const uint8_t* data, size_t size) { for (size_t i = 0; i < size; ++i) if (data[i] > 127) return i; return size; } PUGI_IMPL_FN bool convert_buffer_latin1(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, bool is_mutable) { const uint8_t* data = static_cast(contents); size_t data_length = size; // get size of prefix that does not need utf8 conversion size_t prefix_length = get_latin1_7bit_prefix_length(data, data_length); assert(prefix_length <= data_length); const uint8_t* postfix = data + prefix_length; size_t postfix_length = data_length - prefix_length; // if no conversion is needed, just return the original buffer if (postfix_length == 0) return get_mutable_buffer(out_buffer, out_length, contents, size, is_mutable); // first pass: get length in utf8 units size_t length = prefix_length + latin1_decoder::process(postfix, postfix_length, 0, utf8_counter()); // allocate buffer of suitable length char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); if (!buffer) return false; // second pass: convert latin1 input to utf8 memcpy(buffer, data, prefix_length); uint8_t* obegin = reinterpret_cast(buffer); uint8_t* oend = latin1_decoder::process(postfix, postfix_length, obegin + prefix_length, utf8_writer()); assert(oend == obegin + length); *oend = 0; out_buffer = buffer; out_length = length + 1; return true; } PUGI_IMPL_FN bool convert_buffer(char_t*& out_buffer, size_t& out_length, xml_encoding encoding, const void* contents, size_t size, bool is_mutable) { // fast path: no conversion required if (encoding == encoding_utf8) return get_mutable_buffer(out_buffer, out_length, contents, size, is_mutable); // source encoding is utf16 if (encoding == encoding_utf16_be || encoding == encoding_utf16_le) { xml_encoding native_encoding = is_little_endian() ? encoding_utf16_le : encoding_utf16_be; return (native_encoding == encoding) ? convert_buffer_generic(out_buffer, out_length, contents, size, utf16_decoder()) : convert_buffer_generic(out_buffer, out_length, contents, size, utf16_decoder()); } // source encoding is utf32 if (encoding == encoding_utf32_be || encoding == encoding_utf32_le) { xml_encoding native_encoding = is_little_endian() ? encoding_utf32_le : encoding_utf32_be; return (native_encoding == encoding) ? convert_buffer_generic(out_buffer, out_length, contents, size, utf32_decoder()) : convert_buffer_generic(out_buffer, out_length, contents, size, utf32_decoder()); } // source encoding is latin1 if (encoding == encoding_latin1) return convert_buffer_latin1(out_buffer, out_length, contents, size, is_mutable); assert(false && "Invalid encoding"); // unreachable return false; } #endif PUGI_IMPL_FN size_t as_utf8_begin(const wchar_t* str, size_t length) { // get length in utf8 characters return wchar_decoder::process(str, length, 0, utf8_counter()); } PUGI_IMPL_FN void as_utf8_end(char* buffer, size_t size, const wchar_t* str, size_t length) { // convert to utf8 uint8_t* begin = reinterpret_cast(buffer); uint8_t* end = wchar_decoder::process(str, length, begin, utf8_writer()); assert(begin + size == end); (void)!end; (void)!size; } #ifndef PUGIXML_NO_STL PUGI_IMPL_FN std::string as_utf8_impl(const wchar_t* str, size_t length) { // first pass: get length in utf8 characters size_t size = as_utf8_begin(str, length); // allocate resulting string std::string result; result.resize(size); // second pass: convert to utf8 if (size > 0) as_utf8_end(&result[0], size, str, length); return result; } PUGI_IMPL_FN std::basic_string as_wide_impl(const char* str, size_t size) { const uint8_t* data = reinterpret_cast(str); // first pass: get length in wchar_t units size_t length = utf8_decoder::process(data, size, 0, wchar_counter()); // allocate resulting string std::basic_string result; result.resize(length); // second pass: convert to wchar_t if (length > 0) { wchar_writer::value_type begin = reinterpret_cast(&result[0]); wchar_writer::value_type end = utf8_decoder::process(data, size, begin, wchar_writer()); assert(begin + length == end); (void)!end; } return result; } #endif template inline bool strcpy_insitu_allow(size_t length, const Header& header, uintptr_t header_mask, char_t* target) { // never reuse shared memory if (header & xml_memory_page_contents_shared_mask) return false; size_t target_length = strlength(target); // always reuse document buffer memory if possible if ((header & header_mask) == 0) return target_length >= length; // reuse heap memory if waste is not too great const size_t reuse_threshold = 32; return target_length >= length && (target_length < reuse_threshold || target_length - length < target_length / 2); } template PUGI_IMPL_FN bool strcpy_insitu(String& dest, Header& header, uintptr_t header_mask, const char_t* source, size_t source_length) { assert((header & header_mask) == 0 || dest); // header bit indicates whether dest was previously allocated if (source_length == 0) { // empty string and null pointer are equivalent, so just deallocate old memory xml_allocator* alloc = PUGI_IMPL_GETPAGE_IMPL(header)->allocator; if (header & header_mask) alloc->deallocate_string(dest); // mark the string as not allocated dest = NULL; header &= ~header_mask; return true; } else if (dest && strcpy_insitu_allow(source_length, header, header_mask, dest)) { // we can reuse old buffer, so just copy the new data (including zero terminator) memcpy(dest, source, source_length * sizeof(char_t)); dest[source_length] = 0; return true; } else { xml_allocator* alloc = PUGI_IMPL_GETPAGE_IMPL(header)->allocator; if (!alloc->reserve()) return false; // allocate new buffer char_t* buf = alloc->allocate_string(source_length + 1); if (!buf) return false; // copy the string (including zero terminator) memcpy(buf, source, source_length * sizeof(char_t)); buf[source_length] = 0; // deallocate old buffer (*after* the above to protect against overlapping memory and/or allocation failures) if (header & header_mask) alloc->deallocate_string(dest); // the string is now allocated, so set the flag dest = buf; header |= header_mask; return true; } } struct gap { char_t* end; size_t size; gap(): end(NULL), size(0) { } // Push new gap, move s count bytes further (skipping the gap). // Collapse previous gap. void push(char_t*& s, size_t count) { if (end) // there was a gap already; collapse it { // Move [old_gap_end, new_gap_start) to [old_gap_start, ...) assert(s >= end); memmove(end - size, end, (s - end) * sizeof(char_t)); } s += count; // end of current gap // "merge" two gaps end = s; size += count; } // Collapse all gaps, return past-the-end pointer char_t* flush(char_t* s) { if (end) { // Move [old_gap_end, current_pos) to [old_gap_start, ...) assert(s >= end); memmove(end - size, end, (s - end) * sizeof(char_t)); return s - size; } else return s; } }; PUGI_IMPL_FN char_t* strconv_escape(char_t* s, gap& g) { char_t* stre = s + 1; switch (*stre) { case '#': // &#... { unsigned int ucsc = 0; if (stre[1] == 'x') // &#x... (hex code) { stre += 2; char_t ch = *stre; if (ch == ';') return stre; for (;;) { if (static_cast(ch - '0') <= 9) ucsc = 16 * ucsc + (ch - '0'); else if (static_cast((ch | ' ') - 'a') <= 5) ucsc = 16 * ucsc + ((ch | ' ') - 'a' + 10); else if (ch == ';') break; else // cancel return stre; ch = *++stre; } ++stre; } else // &#... (dec code) { char_t ch = *++stre; if (ch == ';') return stre; for (;;) { if (static_cast(ch - '0') <= 9) ucsc = 10 * ucsc + (ch - '0'); else if (ch == ';') break; else // cancel return stre; ch = *++stre; } ++stre; } #ifdef PUGIXML_WCHAR_MODE s = reinterpret_cast(wchar_writer::any(reinterpret_cast(s), ucsc)); #else s = reinterpret_cast(utf8_writer::any(reinterpret_cast(s), ucsc)); #endif g.push(s, stre - s); return stre; } case 'a': // &a { ++stre; if (*stre == 'm') // &am { if (*++stre == 'p' && *++stre == ';') // & { *s++ = '&'; ++stre; g.push(s, stre - s); return stre; } } else if (*stre == 'p') // &ap { if (*++stre == 'o' && *++stre == 's' && *++stre == ';') // ' { *s++ = '\''; ++stre; g.push(s, stre - s); return stre; } } break; } case 'g': // &g { if (*++stre == 't' && *++stre == ';') // > { *s++ = '>'; ++stre; g.push(s, stre - s); return stre; } break; } case 'l': // &l { if (*++stre == 't' && *++stre == ';') // < { *s++ = '<'; ++stre; g.push(s, stre - s); return stre; } break; } case 'q': // &q { if (*++stre == 'u' && *++stre == 'o' && *++stre == 't' && *++stre == ';') // " { *s++ = '"'; ++stre; g.push(s, stre - s); return stre; } break; } default: break; } return stre; } // Parser utilities #define PUGI_IMPL_ENDSWITH(c, e) ((c) == (e) || ((c) == 0 && endch == (e))) #define PUGI_IMPL_SKIPWS() { while (PUGI_IMPL_IS_CHARTYPE(*s, ct_space)) ++s; } #define PUGI_IMPL_OPTSET(OPT) ( optmsk & (OPT) ) #define PUGI_IMPL_PUSHNODE(TYPE) { cursor = append_new_node(cursor, *alloc, TYPE); if (!cursor) PUGI_IMPL_THROW_ERROR(status_out_of_memory, s); } #define PUGI_IMPL_POPNODE() { cursor = cursor->parent; } #define PUGI_IMPL_SCANFOR(X) { while (*s != 0 && !(X)) ++s; } #define PUGI_IMPL_SCANWHILE(X) { while (X) ++s; } #define PUGI_IMPL_SCANWHILE_UNROLL(X) { for (;;) { char_t ss = s[0]; if (PUGI_IMPL_UNLIKELY(!(X))) { break; } ss = s[1]; if (PUGI_IMPL_UNLIKELY(!(X))) { s += 1; break; } ss = s[2]; if (PUGI_IMPL_UNLIKELY(!(X))) { s += 2; break; } ss = s[3]; if (PUGI_IMPL_UNLIKELY(!(X))) { s += 3; break; } s += 4; } } #define PUGI_IMPL_ENDSEG() { ch = *s; *s = 0; ++s; } #define PUGI_IMPL_THROW_ERROR(err, m) return error_offset = m, error_status = err, static_cast(NULL) #define PUGI_IMPL_CHECK_ERROR(err, m) { if (*s == 0) PUGI_IMPL_THROW_ERROR(err, m); } PUGI_IMPL_FN char_t* strconv_comment(char_t* s, char_t endch) { gap g; while (true) { PUGI_IMPL_SCANWHILE_UNROLL(!PUGI_IMPL_IS_CHARTYPE(ss, ct_parse_comment)); if (*s == '\r') // Either a single 0x0d or 0x0d 0x0a pair { *s++ = '\n'; // replace first one with 0x0a if (*s == '\n') g.push(s, 1); } else if (s[0] == '-' && s[1] == '-' && PUGI_IMPL_ENDSWITH(s[2], '>')) // comment ends here { *g.flush(s) = 0; return s + (s[2] == '>' ? 3 : 2); } else if (*s == 0) { return NULL; } else ++s; } } PUGI_IMPL_FN char_t* strconv_cdata(char_t* s, char_t endch) { gap g; while (true) { PUGI_IMPL_SCANWHILE_UNROLL(!PUGI_IMPL_IS_CHARTYPE(ss, ct_parse_cdata)); if (*s == '\r') // Either a single 0x0d or 0x0d 0x0a pair { *s++ = '\n'; // replace first one with 0x0a if (*s == '\n') g.push(s, 1); } else if (s[0] == ']' && s[1] == ']' && PUGI_IMPL_ENDSWITH(s[2], '>')) // CDATA ends here { *g.flush(s) = 0; return s + 1; } else if (*s == 0) { return NULL; } else ++s; } } typedef char_t* (*strconv_pcdata_t)(char_t*); template struct strconv_pcdata_impl { static char_t* parse(char_t* s) { gap g; char_t* begin = s; while (true) { PUGI_IMPL_SCANWHILE_UNROLL(!PUGI_IMPL_IS_CHARTYPE(ss, ct_parse_pcdata)); if (*s == '<') // PCDATA ends here { char_t* end = g.flush(s); if (opt_trim::value) while (end > begin && PUGI_IMPL_IS_CHARTYPE(end[-1], ct_space)) --end; *end = 0; return s + 1; } else if (opt_eol::value && *s == '\r') // Either a single 0x0d or 0x0d 0x0a pair { *s++ = '\n'; // replace first one with 0x0a if (*s == '\n') g.push(s, 1); } else if (opt_escape::value && *s == '&') { s = strconv_escape(s, g); } else if (*s == 0) { char_t* end = g.flush(s); if (opt_trim::value) while (end > begin && PUGI_IMPL_IS_CHARTYPE(end[-1], ct_space)) --end; *end = 0; return s; } else ++s; } } }; PUGI_IMPL_FN strconv_pcdata_t get_strconv_pcdata(unsigned int optmask) { PUGI_IMPL_STATIC_ASSERT(parse_escapes == 0x10 && parse_eol == 0x20 && parse_trim_pcdata == 0x0800); switch (((optmask >> 4) & 3) | ((optmask >> 9) & 4)) // get bitmask for flags (trim eol escapes); this simultaneously checks 3 options from assertion above { case 0: return strconv_pcdata_impl::parse; case 1: return strconv_pcdata_impl::parse; case 2: return strconv_pcdata_impl::parse; case 3: return strconv_pcdata_impl::parse; case 4: return strconv_pcdata_impl::parse; case 5: return strconv_pcdata_impl::parse; case 6: return strconv_pcdata_impl::parse; case 7: return strconv_pcdata_impl::parse; default: assert(false); return NULL; // unreachable } } typedef char_t* (*strconv_attribute_t)(char_t*, char_t); template struct strconv_attribute_impl { static char_t* parse_wnorm(char_t* s, char_t end_quote) { gap g; // trim leading whitespaces if (PUGI_IMPL_IS_CHARTYPE(*s, ct_space)) { char_t* str = s; do ++str; while (PUGI_IMPL_IS_CHARTYPE(*str, ct_space)); g.push(s, str - s); } while (true) { PUGI_IMPL_SCANWHILE_UNROLL(!PUGI_IMPL_IS_CHARTYPE(ss, ct_parse_attr_ws | ct_space)); if (*s == end_quote) { char_t* str = g.flush(s); do *str-- = 0; while (PUGI_IMPL_IS_CHARTYPE(*str, ct_space)); return s + 1; } else if (PUGI_IMPL_IS_CHARTYPE(*s, ct_space)) { *s++ = ' '; if (PUGI_IMPL_IS_CHARTYPE(*s, ct_space)) { char_t* str = s + 1; while (PUGI_IMPL_IS_CHARTYPE(*str, ct_space)) ++str; g.push(s, str - s); } } else if (opt_escape::value && *s == '&') { s = strconv_escape(s, g); } else if (!*s) { return NULL; } else ++s; } } static char_t* parse_wconv(char_t* s, char_t end_quote) { gap g; while (true) { PUGI_IMPL_SCANWHILE_UNROLL(!PUGI_IMPL_IS_CHARTYPE(ss, ct_parse_attr_ws)); if (*s == end_quote) { *g.flush(s) = 0; return s + 1; } else if (PUGI_IMPL_IS_CHARTYPE(*s, ct_space)) { if (*s == '\r') { *s++ = ' '; if (*s == '\n') g.push(s, 1); } else *s++ = ' '; } else if (opt_escape::value && *s == '&') { s = strconv_escape(s, g); } else if (!*s) { return NULL; } else ++s; } } static char_t* parse_eol(char_t* s, char_t end_quote) { gap g; while (true) { PUGI_IMPL_SCANWHILE_UNROLL(!PUGI_IMPL_IS_CHARTYPE(ss, ct_parse_attr)); if (*s == end_quote) { *g.flush(s) = 0; return s + 1; } else if (*s == '\r') { *s++ = '\n'; if (*s == '\n') g.push(s, 1); } else if (opt_escape::value && *s == '&') { s = strconv_escape(s, g); } else if (!*s) { return NULL; } else ++s; } } static char_t* parse_simple(char_t* s, char_t end_quote) { gap g; while (true) { PUGI_IMPL_SCANWHILE_UNROLL(!PUGI_IMPL_IS_CHARTYPE(ss, ct_parse_attr)); if (*s == end_quote) { *g.flush(s) = 0; return s + 1; } else if (opt_escape::value && *s == '&') { s = strconv_escape(s, g); } else if (!*s) { return NULL; } else ++s; } } }; PUGI_IMPL_FN strconv_attribute_t get_strconv_attribute(unsigned int optmask) { PUGI_IMPL_STATIC_ASSERT(parse_escapes == 0x10 && parse_eol == 0x20 && parse_wconv_attribute == 0x40 && parse_wnorm_attribute == 0x80); switch ((optmask >> 4) & 15) // get bitmask for flags (wnorm wconv eol escapes); this simultaneously checks 4 options from assertion above { case 0: return strconv_attribute_impl::parse_simple; case 1: return strconv_attribute_impl::parse_simple; case 2: return strconv_attribute_impl::parse_eol; case 3: return strconv_attribute_impl::parse_eol; case 4: return strconv_attribute_impl::parse_wconv; case 5: return strconv_attribute_impl::parse_wconv; case 6: return strconv_attribute_impl::parse_wconv; case 7: return strconv_attribute_impl::parse_wconv; case 8: return strconv_attribute_impl::parse_wnorm; case 9: return strconv_attribute_impl::parse_wnorm; case 10: return strconv_attribute_impl::parse_wnorm; case 11: return strconv_attribute_impl::parse_wnorm; case 12: return strconv_attribute_impl::parse_wnorm; case 13: return strconv_attribute_impl::parse_wnorm; case 14: return strconv_attribute_impl::parse_wnorm; case 15: return strconv_attribute_impl::parse_wnorm; default: assert(false); return NULL; // unreachable } } inline xml_parse_result make_parse_result(xml_parse_status status, ptrdiff_t offset = 0) { xml_parse_result result; result.status = status; result.offset = offset; return result; } struct xml_parser { xml_allocator* alloc; char_t* error_offset; xml_parse_status error_status; xml_parser(xml_allocator* alloc_): alloc(alloc_), error_offset(NULL), error_status(status_ok) { } // DOCTYPE consists of nested sections of the following possible types: // , , "...", '...' // // // First group can not contain nested groups // Second group can contain nested groups of the same type // Third group can contain all other groups char_t* parse_doctype_primitive(char_t* s) { if (*s == '"' || *s == '\'') { // quoted string char_t ch = *s++; PUGI_IMPL_SCANFOR(*s == ch); if (!*s) PUGI_IMPL_THROW_ERROR(status_bad_doctype, s); s++; } else if (s[0] == '<' && s[1] == '?') { // s += 2; PUGI_IMPL_SCANFOR(s[0] == '?' && s[1] == '>'); // no need for ENDSWITH because ?> can't terminate proper doctype if (!*s) PUGI_IMPL_THROW_ERROR(status_bad_doctype, s); s += 2; } else if (s[0] == '<' && s[1] == '!' && s[2] == '-' && s[3] == '-') { s += 4; PUGI_IMPL_SCANFOR(s[0] == '-' && s[1] == '-' && s[2] == '>'); // no need for ENDSWITH because --> can't terminate proper doctype if (!*s) PUGI_IMPL_THROW_ERROR(status_bad_doctype, s); s += 3; } else PUGI_IMPL_THROW_ERROR(status_bad_doctype, s); return s; } char_t* parse_doctype_ignore(char_t* s) { size_t depth = 0; assert(s[0] == '<' && s[1] == '!' && s[2] == '['); s += 3; while (*s) { if (s[0] == '<' && s[1] == '!' && s[2] == '[') { // nested ignore section s += 3; depth++; } else if (s[0] == ']' && s[1] == ']' && s[2] == '>') { // ignore section end s += 3; if (depth == 0) return s; depth--; } else s++; } PUGI_IMPL_THROW_ERROR(status_bad_doctype, s); } char_t* parse_doctype_group(char_t* s, char_t endch) { size_t depth = 0; assert((s[0] == '<' || s[0] == 0) && s[1] == '!'); s += 2; while (*s) { if (s[0] == '<' && s[1] == '!' && s[2] != '-') { if (s[2] == '[') { // ignore s = parse_doctype_ignore(s); if (!s) return s; } else { // some control group s += 2; depth++; } } else if (s[0] == '<' || s[0] == '"' || s[0] == '\'') { // unknown tag (forbidden), or some primitive group s = parse_doctype_primitive(s); if (!s) return s; } else if (*s == '>') { if (depth == 0) return s; depth--; s++; } else s++; } if (depth != 0 || endch != '>') PUGI_IMPL_THROW_ERROR(status_bad_doctype, s); return s; } char_t* parse_exclamation(char_t* s, xml_node_struct* cursor, unsigned int optmsk, char_t endch) { // parse node contents, starting with exclamation mark ++s; if (*s == '-') // 'value = s; // Save the offset. } if (PUGI_IMPL_OPTSET(parse_eol) && PUGI_IMPL_OPTSET(parse_comments)) { s = strconv_comment(s, endch); if (!s) PUGI_IMPL_THROW_ERROR(status_bad_comment, cursor->value); } else { // Scan for terminating '-->'. PUGI_IMPL_SCANFOR(s[0] == '-' && s[1] == '-' && PUGI_IMPL_ENDSWITH(s[2], '>')); PUGI_IMPL_CHECK_ERROR(status_bad_comment, s); if (PUGI_IMPL_OPTSET(parse_comments)) *s = 0; // Zero-terminate this segment at the first terminating '-'. s += (s[2] == '>' ? 3 : 2); // Step over the '\0->'. } } else PUGI_IMPL_THROW_ERROR(status_bad_comment, s); } else if (*s == '[') { // 'value = s; // Save the offset. if (PUGI_IMPL_OPTSET(parse_eol)) { s = strconv_cdata(s, endch); if (!s) PUGI_IMPL_THROW_ERROR(status_bad_cdata, cursor->value); } else { // Scan for terminating ']]>'. PUGI_IMPL_SCANFOR(s[0] == ']' && s[1] == ']' && PUGI_IMPL_ENDSWITH(s[2], '>')); PUGI_IMPL_CHECK_ERROR(status_bad_cdata, s); *s++ = 0; // Zero-terminate this segment. } } else // Flagged for discard, but we still have to scan for the terminator. { // Scan for terminating ']]>'. PUGI_IMPL_SCANFOR(s[0] == ']' && s[1] == ']' && PUGI_IMPL_ENDSWITH(s[2], '>')); PUGI_IMPL_CHECK_ERROR(status_bad_cdata, s); ++s; } s += (s[1] == '>' ? 2 : 1); // Step over the last ']>'. } else PUGI_IMPL_THROW_ERROR(status_bad_cdata, s); } else if (s[0] == 'D' && s[1] == 'O' && s[2] == 'C' && s[3] == 'T' && s[4] == 'Y' && s[5] == 'P' && PUGI_IMPL_ENDSWITH(s[6], 'E')) { s -= 2; if (cursor->parent) PUGI_IMPL_THROW_ERROR(status_bad_doctype, s); char_t* mark = s + 9; s = parse_doctype_group(s, endch); if (!s) return s; assert((*s == 0 && endch == '>') || *s == '>'); if (*s) *s++ = 0; if (PUGI_IMPL_OPTSET(parse_doctype)) { while (PUGI_IMPL_IS_CHARTYPE(*mark, ct_space)) ++mark; PUGI_IMPL_PUSHNODE(node_doctype); cursor->value = mark; } } else if (*s == 0 && endch == '-') PUGI_IMPL_THROW_ERROR(status_bad_comment, s); else if (*s == 0 && endch == '[') PUGI_IMPL_THROW_ERROR(status_bad_cdata, s); else PUGI_IMPL_THROW_ERROR(status_unrecognized_tag, s); return s; } char_t* parse_question(char_t* s, xml_node_struct*& ref_cursor, unsigned int optmsk, char_t endch) { // load into registers xml_node_struct* cursor = ref_cursor; char_t ch = 0; // parse node contents, starting with question mark ++s; // read PI target char_t* target = s; if (!PUGI_IMPL_IS_CHARTYPE(*s, ct_start_symbol)) PUGI_IMPL_THROW_ERROR(status_bad_pi, s); PUGI_IMPL_SCANWHILE(PUGI_IMPL_IS_CHARTYPE(*s, ct_symbol)); PUGI_IMPL_CHECK_ERROR(status_bad_pi, s); // determine node type; stricmp / strcasecmp is not portable bool declaration = (target[0] | ' ') == 'x' && (target[1] | ' ') == 'm' && (target[2] | ' ') == 'l' && target + 3 == s; if (declaration ? PUGI_IMPL_OPTSET(parse_declaration) : PUGI_IMPL_OPTSET(parse_pi)) { if (declaration) { // disallow non top-level declarations if (cursor->parent) PUGI_IMPL_THROW_ERROR(status_bad_pi, s); PUGI_IMPL_PUSHNODE(node_declaration); } else { PUGI_IMPL_PUSHNODE(node_pi); } cursor->name = target; PUGI_IMPL_ENDSEG(); // parse value/attributes if (ch == '?') { // empty node if (!PUGI_IMPL_ENDSWITH(*s, '>')) PUGI_IMPL_THROW_ERROR(status_bad_pi, s); s += (*s == '>'); PUGI_IMPL_POPNODE(); } else if (PUGI_IMPL_IS_CHARTYPE(ch, ct_space)) { PUGI_IMPL_SKIPWS(); // scan for tag end char_t* value = s; PUGI_IMPL_SCANFOR(s[0] == '?' && PUGI_IMPL_ENDSWITH(s[1], '>')); PUGI_IMPL_CHECK_ERROR(status_bad_pi, s); if (declaration) { // replace ending ? with / so that 'element' terminates properly *s = '/'; // we exit from this function with cursor at node_declaration, which is a signal to parse() to go to LOC_ATTRIBUTES s = value; } else { // store value and step over > cursor->value = value; PUGI_IMPL_POPNODE(); PUGI_IMPL_ENDSEG(); s += (*s == '>'); } } else PUGI_IMPL_THROW_ERROR(status_bad_pi, s); } else { // scan for tag end PUGI_IMPL_SCANFOR(s[0] == '?' && PUGI_IMPL_ENDSWITH(s[1], '>')); PUGI_IMPL_CHECK_ERROR(status_bad_pi, s); s += (s[1] == '>' ? 2 : 1); } // store from registers ref_cursor = cursor; return s; } char_t* parse_tree(char_t* s, xml_node_struct* root, unsigned int optmsk, char_t endch) { strconv_attribute_t strconv_attribute = get_strconv_attribute(optmsk); strconv_pcdata_t strconv_pcdata = get_strconv_pcdata(optmsk); char_t ch = 0; xml_node_struct* cursor = root; char_t* mark = s; char_t* merged_pcdata = s; while (*s != 0) { if (*s == '<') { ++s; LOC_TAG: if (PUGI_IMPL_IS_CHARTYPE(*s, ct_start_symbol)) // '<#...' { PUGI_IMPL_PUSHNODE(node_element); // Append a new node to the tree. cursor->name = s; PUGI_IMPL_SCANWHILE_UNROLL(PUGI_IMPL_IS_CHARTYPE(ss, ct_symbol)); // Scan for a terminator. PUGI_IMPL_ENDSEG(); // Save char in 'ch', terminate & step over. if (ch == '>') { // end of tag } else if (PUGI_IMPL_IS_CHARTYPE(ch, ct_space)) { LOC_ATTRIBUTES: while (true) { PUGI_IMPL_SKIPWS(); // Eat any whitespace. if (PUGI_IMPL_IS_CHARTYPE(*s, ct_start_symbol)) // <... #... { xml_attribute_struct* a = append_new_attribute(cursor, *alloc); // Make space for this attribute. if (!a) PUGI_IMPL_THROW_ERROR(status_out_of_memory, s); a->name = s; // Save the offset. PUGI_IMPL_SCANWHILE_UNROLL(PUGI_IMPL_IS_CHARTYPE(ss, ct_symbol)); // Scan for a terminator. PUGI_IMPL_ENDSEG(); // Save char in 'ch', terminate & step over. if (PUGI_IMPL_IS_CHARTYPE(ch, ct_space)) { PUGI_IMPL_SKIPWS(); // Eat any whitespace. ch = *s; ++s; } if (ch == '=') // '<... #=...' { PUGI_IMPL_SKIPWS(); // Eat any whitespace. if (*s == '"' || *s == '\'') // '<... #="...' { ch = *s; // Save quote char to avoid breaking on "''" -or- '""'. ++s; // Step over the quote. a->value = s; // Save the offset. s = strconv_attribute(s, ch); if (!s) PUGI_IMPL_THROW_ERROR(status_bad_attribute, a->value); // After this line the loop continues from the start; // Whitespaces, / and > are ok, symbols and EOF are wrong, // everything else will be detected if (PUGI_IMPL_IS_CHARTYPE(*s, ct_start_symbol)) PUGI_IMPL_THROW_ERROR(status_bad_attribute, s); } else PUGI_IMPL_THROW_ERROR(status_bad_attribute, s); } else PUGI_IMPL_THROW_ERROR(status_bad_attribute, s); } else if (*s == '/') { ++s; if (*s == '>') { PUGI_IMPL_POPNODE(); s++; break; } else if (*s == 0 && endch == '>') { PUGI_IMPL_POPNODE(); break; } else PUGI_IMPL_THROW_ERROR(status_bad_start_element, s); } else if (*s == '>') { ++s; break; } else if (*s == 0 && endch == '>') { break; } else PUGI_IMPL_THROW_ERROR(status_bad_start_element, s); } // !!! } else if (ch == '/') // '<#.../' { if (!PUGI_IMPL_ENDSWITH(*s, '>')) PUGI_IMPL_THROW_ERROR(status_bad_start_element, s); PUGI_IMPL_POPNODE(); // Pop. s += (*s == '>'); } else if (ch == 0) { // we stepped over null terminator, backtrack & handle closing tag --s; if (endch != '>') PUGI_IMPL_THROW_ERROR(status_bad_start_element, s); } else PUGI_IMPL_THROW_ERROR(status_bad_start_element, s); } else if (*s == '/') { ++s; mark = s; char_t* name = cursor->name; if (!name) PUGI_IMPL_THROW_ERROR(status_end_element_mismatch, mark); while (PUGI_IMPL_IS_CHARTYPE(*s, ct_symbol)) { if (*s++ != *name++) PUGI_IMPL_THROW_ERROR(status_end_element_mismatch, mark); } if (*name) { if (*s == 0 && name[0] == endch && name[1] == 0) PUGI_IMPL_THROW_ERROR(status_bad_end_element, s); else PUGI_IMPL_THROW_ERROR(status_end_element_mismatch, mark); } PUGI_IMPL_POPNODE(); // Pop. PUGI_IMPL_SKIPWS(); if (*s == 0) { if (endch != '>') PUGI_IMPL_THROW_ERROR(status_bad_end_element, s); } else { if (*s != '>') PUGI_IMPL_THROW_ERROR(status_bad_end_element, s); ++s; } } else if (*s == '?') // 'first_child) continue; } } if (!PUGI_IMPL_OPTSET(parse_trim_pcdata)) s = mark; if (cursor->parent || PUGI_IMPL_OPTSET(parse_fragment)) { char_t* parsed_pcdata = s; s = strconv_pcdata(s); if (PUGI_IMPL_OPTSET(parse_embed_pcdata) && cursor->parent && !cursor->first_child && !cursor->value) { cursor->value = parsed_pcdata; // Save the offset. } else if (PUGI_IMPL_OPTSET(parse_merge_pcdata) && cursor->first_child && PUGI_IMPL_NODETYPE(cursor->first_child->prev_sibling_c) == node_pcdata) { assert(merged_pcdata >= cursor->first_child->prev_sibling_c->value); // Catch up to the end of last parsed value; only needed for the first fragment. merged_pcdata += strlength(merged_pcdata); size_t length = strlength(parsed_pcdata); // Must use memmove instead of memcpy as this move may overlap memmove(merged_pcdata, parsed_pcdata, (length + 1) * sizeof(char_t)); merged_pcdata += length; } else { xml_node_struct* prev_cursor = cursor; PUGI_IMPL_PUSHNODE(node_pcdata); // Append a new node on the tree. cursor->value = parsed_pcdata; // Save the offset. merged_pcdata = parsed_pcdata; // Used for parse_merge_pcdata above, cheaper to save unconditionally cursor = prev_cursor; // Pop since this is a standalone. } if (!*s) break; } else { PUGI_IMPL_SCANFOR(*s == '<'); // '...<' if (!*s) break; ++s; } // We're after '<' goto LOC_TAG; } } // check that last tag is closed if (cursor != root) PUGI_IMPL_THROW_ERROR(status_end_element_mismatch, s); return s; } #ifdef PUGIXML_WCHAR_MODE static char_t* parse_skip_bom(char_t* s) { unsigned int bom = 0xfeff; return (s[0] == static_cast(bom)) ? s + 1 : s; } #else static char_t* parse_skip_bom(char_t* s) { return (s[0] == '\xef' && s[1] == '\xbb' && s[2] == '\xbf') ? s + 3 : s; } #endif static bool has_element_node_siblings(xml_node_struct* node) { while (node) { if (PUGI_IMPL_NODETYPE(node) == node_element) return true; node = node->next_sibling; } return false; } static xml_parse_result parse(char_t* buffer, size_t length, xml_document_struct* xmldoc, xml_node_struct* root, unsigned int optmsk) { // early-out for empty documents if (length == 0) return make_parse_result(PUGI_IMPL_OPTSET(parse_fragment) ? status_ok : status_no_document_element); // get last child of the root before parsing xml_node_struct* last_root_child = root->first_child ? root->first_child->prev_sibling_c + 0 : NULL; // create parser on stack xml_parser parser(static_cast(xmldoc)); // save last character and make buffer zero-terminated (speeds up parsing) char_t endch = buffer[length - 1]; buffer[length - 1] = 0; // skip BOM to make sure it does not end up as part of parse output char_t* buffer_data = parse_skip_bom(buffer); // perform actual parsing parser.parse_tree(buffer_data, root, optmsk, endch); xml_parse_result result = make_parse_result(parser.error_status, parser.error_offset ? parser.error_offset - buffer : 0); assert(result.offset >= 0 && static_cast(result.offset) <= length); if (result) { // since we removed last character, we have to handle the only possible false positive (stray <) if (endch == '<') return make_parse_result(status_unrecognized_tag, length - 1); // check if there are any element nodes parsed xml_node_struct* first_root_child_parsed = last_root_child ? last_root_child->next_sibling + 0 : root->first_child + 0; if (!PUGI_IMPL_OPTSET(parse_fragment) && !has_element_node_siblings(first_root_child_parsed)) return make_parse_result(status_no_document_element, length - 1); } else { // roll back offset if it occurs on a null terminator in the source buffer if (result.offset > 0 && static_cast(result.offset) == length - 1 && endch == 0) result.offset--; } return result; } }; // Output facilities PUGI_IMPL_FN xml_encoding get_write_native_encoding() { #ifdef PUGIXML_WCHAR_MODE return get_wchar_encoding(); #else return encoding_utf8; #endif } PUGI_IMPL_FN xml_encoding get_write_encoding(xml_encoding encoding) { // replace wchar encoding with utf implementation if (encoding == encoding_wchar) return get_wchar_encoding(); // replace utf16 encoding with utf16 with specific endianness if (encoding == encoding_utf16) return is_little_endian() ? encoding_utf16_le : encoding_utf16_be; // replace utf32 encoding with utf32 with specific endianness if (encoding == encoding_utf32) return is_little_endian() ? encoding_utf32_le : encoding_utf32_be; // only do autodetection if no explicit encoding is requested if (encoding != encoding_auto) return encoding; // assume utf8 encoding return encoding_utf8; } template PUGI_IMPL_FN size_t convert_buffer_output_generic(typename T::value_type dest, const char_t* data, size_t length, D, T) { PUGI_IMPL_STATIC_ASSERT(sizeof(char_t) == sizeof(typename D::type)); typename T::value_type end = D::process(reinterpret_cast(data), length, dest, T()); return static_cast(end - dest) * sizeof(*dest); } template PUGI_IMPL_FN size_t convert_buffer_output_generic(typename T::value_type dest, const char_t* data, size_t length, D, T, bool opt_swap) { PUGI_IMPL_STATIC_ASSERT(sizeof(char_t) == sizeof(typename D::type)); typename T::value_type end = D::process(reinterpret_cast(data), length, dest, T()); if (opt_swap) { for (typename T::value_type i = dest; i != end; ++i) *i = endian_swap(*i); } return static_cast(end - dest) * sizeof(*dest); } #ifdef PUGIXML_WCHAR_MODE PUGI_IMPL_FN size_t get_valid_length(const char_t* data, size_t length) { if (length < 1) return 0; // discard last character if it's the lead of a surrogate pair return (sizeof(wchar_t) == 2 && static_cast(static_cast(data[length - 1]) - 0xD800) < 0x400) ? length - 1 : length; } PUGI_IMPL_FN size_t convert_buffer_output(char_t* r_char, uint8_t* r_u8, uint16_t* r_u16, uint32_t* r_u32, const char_t* data, size_t length, xml_encoding encoding) { // only endian-swapping is required if (need_endian_swap_utf(encoding, get_wchar_encoding())) { convert_wchar_endian_swap(r_char, data, length); return length * sizeof(char_t); } // convert to utf8 if (encoding == encoding_utf8) return convert_buffer_output_generic(r_u8, data, length, wchar_decoder(), utf8_writer()); // convert to utf16 if (encoding == encoding_utf16_be || encoding == encoding_utf16_le) { xml_encoding native_encoding = is_little_endian() ? encoding_utf16_le : encoding_utf16_be; return convert_buffer_output_generic(r_u16, data, length, wchar_decoder(), utf16_writer(), native_encoding != encoding); } // convert to utf32 if (encoding == encoding_utf32_be || encoding == encoding_utf32_le) { xml_encoding native_encoding = is_little_endian() ? encoding_utf32_le : encoding_utf32_be; return convert_buffer_output_generic(r_u32, data, length, wchar_decoder(), utf32_writer(), native_encoding != encoding); } // convert to latin1 if (encoding == encoding_latin1) return convert_buffer_output_generic(r_u8, data, length, wchar_decoder(), latin1_writer()); assert(false && "Invalid encoding"); // unreachable return 0; } #else PUGI_IMPL_FN size_t get_valid_length(const char_t* data, size_t length) { if (length < 5) return 0; for (size_t i = 1; i <= 4; ++i) { uint8_t ch = static_cast(data[length - i]); // either a standalone character or a leading one if ((ch & 0xc0) != 0x80) return length - i; } // there are four non-leading characters at the end, sequence tail is broken so might as well process the whole chunk return length; } PUGI_IMPL_FN size_t convert_buffer_output(char_t* /* r_char */, uint8_t* r_u8, uint16_t* r_u16, uint32_t* r_u32, const char_t* data, size_t length, xml_encoding encoding) { if (encoding == encoding_utf16_be || encoding == encoding_utf16_le) { xml_encoding native_encoding = is_little_endian() ? encoding_utf16_le : encoding_utf16_be; return convert_buffer_output_generic(r_u16, data, length, utf8_decoder(), utf16_writer(), native_encoding != encoding); } if (encoding == encoding_utf32_be || encoding == encoding_utf32_le) { xml_encoding native_encoding = is_little_endian() ? encoding_utf32_le : encoding_utf32_be; return convert_buffer_output_generic(r_u32, data, length, utf8_decoder(), utf32_writer(), native_encoding != encoding); } if (encoding == encoding_latin1) return convert_buffer_output_generic(r_u8, data, length, utf8_decoder(), latin1_writer()); assert(false && "Invalid encoding"); // unreachable return 0; } #endif class xml_buffered_writer { xml_buffered_writer(const xml_buffered_writer&); xml_buffered_writer& operator=(const xml_buffered_writer&); public: xml_buffered_writer(xml_writer& writer_, xml_encoding user_encoding): writer(writer_), bufsize(0), encoding(get_write_encoding(user_encoding)) { PUGI_IMPL_STATIC_ASSERT(bufcapacity >= 8); } size_t flush() { flush(buffer, bufsize); bufsize = 0; return 0; } void flush(const char_t* data, size_t size) { if (size == 0) return; // fast path, just write data if (encoding == get_write_native_encoding()) writer.write(data, size * sizeof(char_t)); else { // convert chunk size_t result = convert_buffer_output(scratch.data_char, scratch.data_u8, scratch.data_u16, scratch.data_u32, data, size, encoding); assert(result <= sizeof(scratch)); // write data writer.write(scratch.data_u8, result); } } void write_direct(const char_t* data, size_t length) { // flush the remaining buffer contents flush(); // handle large chunks if (length > bufcapacity) { if (encoding == get_write_native_encoding()) { // fast path, can just write data chunk writer.write(data, length * sizeof(char_t)); return; } // need to convert in suitable chunks while (length > bufcapacity) { // get chunk size by selecting such number of characters that are guaranteed to fit into scratch buffer // and form a complete codepoint sequence (i.e. discard start of last codepoint if necessary) size_t chunk_size = get_valid_length(data, bufcapacity); assert(chunk_size); // convert chunk and write flush(data, chunk_size); // iterate data += chunk_size; length -= chunk_size; } // small tail is copied below bufsize = 0; } memcpy(buffer + bufsize, data, length * sizeof(char_t)); bufsize += length; } void write_buffer(const char_t* data, size_t length) { size_t offset = bufsize; if (offset + length <= bufcapacity) { memcpy(buffer + offset, data, length * sizeof(char_t)); bufsize = offset + length; } else { write_direct(data, length); } } void write_string(const char_t* data) { // write the part of the string that fits in the buffer size_t offset = bufsize; while (*data && offset < bufcapacity) buffer[offset++] = *data++; // write the rest if (offset < bufcapacity) { bufsize = offset; } else { // backtrack a bit if we have split the codepoint size_t length = offset - bufsize; size_t extra = length - get_valid_length(data - length, length); bufsize = offset - extra; write_direct(data - extra, strlength(data) + extra); } } void write(char_t d0) { size_t offset = bufsize; if (offset > bufcapacity - 1) offset = flush(); buffer[offset + 0] = d0; bufsize = offset + 1; } void write(char_t d0, char_t d1) { size_t offset = bufsize; if (offset > bufcapacity - 2) offset = flush(); buffer[offset + 0] = d0; buffer[offset + 1] = d1; bufsize = offset + 2; } void write(char_t d0, char_t d1, char_t d2) { size_t offset = bufsize; if (offset > bufcapacity - 3) offset = flush(); buffer[offset + 0] = d0; buffer[offset + 1] = d1; buffer[offset + 2] = d2; bufsize = offset + 3; } void write(char_t d0, char_t d1, char_t d2, char_t d3) { size_t offset = bufsize; if (offset > bufcapacity - 4) offset = flush(); buffer[offset + 0] = d0; buffer[offset + 1] = d1; buffer[offset + 2] = d2; buffer[offset + 3] = d3; bufsize = offset + 4; } void write(char_t d0, char_t d1, char_t d2, char_t d3, char_t d4) { size_t offset = bufsize; if (offset > bufcapacity - 5) offset = flush(); buffer[offset + 0] = d0; buffer[offset + 1] = d1; buffer[offset + 2] = d2; buffer[offset + 3] = d3; buffer[offset + 4] = d4; bufsize = offset + 5; } void write(char_t d0, char_t d1, char_t d2, char_t d3, char_t d4, char_t d5) { size_t offset = bufsize; if (offset > bufcapacity - 6) offset = flush(); buffer[offset + 0] = d0; buffer[offset + 1] = d1; buffer[offset + 2] = d2; buffer[offset + 3] = d3; buffer[offset + 4] = d4; buffer[offset + 5] = d5; bufsize = offset + 6; } // utf8 maximum expansion: x4 (-> utf32) // utf16 maximum expansion: x2 (-> utf32) // utf32 maximum expansion: x1 enum { bufcapacitybytes = #ifdef PUGIXML_MEMORY_OUTPUT_STACK PUGIXML_MEMORY_OUTPUT_STACK #else 10240 #endif , bufcapacity = bufcapacitybytes / (sizeof(char_t) + 4) }; char_t buffer[bufcapacity]; union { uint8_t data_u8[4 * bufcapacity]; uint16_t data_u16[2 * bufcapacity]; uint32_t data_u32[bufcapacity]; char_t data_char[bufcapacity]; } scratch; xml_writer& writer; size_t bufsize; xml_encoding encoding; }; PUGI_IMPL_FN void text_output_escaped(xml_buffered_writer& writer, const char_t* s, chartypex_t type, unsigned int flags) { while (*s) { const char_t* prev = s; // While *s is a usual symbol PUGI_IMPL_SCANWHILE_UNROLL(!PUGI_IMPL_IS_CHARTYPEX(ss, type)); writer.write_buffer(prev, static_cast(s - prev)); switch (*s) { case 0: break; case '&': writer.write('&', 'a', 'm', 'p', ';'); ++s; break; case '<': writer.write('&', 'l', 't', ';'); ++s; break; case '>': writer.write('&', 'g', 't', ';'); ++s; break; case '"': if (flags & format_attribute_single_quote) writer.write('"'); else writer.write('&', 'q', 'u', 'o', 't', ';'); ++s; break; case '\'': if (flags & format_attribute_single_quote) writer.write('&', 'a', 'p', 'o', 's', ';'); else writer.write('\''); ++s; break; default: // s is not a usual symbol { unsigned int ch = static_cast(*s++); assert(ch < 32); if (!(flags & format_skip_control_chars)) writer.write('&', '#', static_cast((ch / 10) + '0'), static_cast((ch % 10) + '0'), ';'); } } } } PUGI_IMPL_FN void text_output(xml_buffered_writer& writer, const char_t* s, chartypex_t type, unsigned int flags) { if (flags & format_no_escapes) writer.write_string(s); else text_output_escaped(writer, s, type, flags); } PUGI_IMPL_FN void text_output_cdata(xml_buffered_writer& writer, const char_t* s) { do { writer.write('<', '!', '[', 'C', 'D'); writer.write('A', 'T', 'A', '['); const char_t* prev = s; // look for ]]> sequence - we can't output it as is since it terminates CDATA while (*s && !(s[0] == ']' && s[1] == ']' && s[2] == '>')) ++s; // skip ]] if we stopped at ]]>, > will go to the next CDATA section if (*s) s += 2; writer.write_buffer(prev, static_cast(s - prev)); writer.write(']', ']', '>'); } while (*s); } PUGI_IMPL_FN void text_output_indent(xml_buffered_writer& writer, const char_t* indent, size_t indent_length, unsigned int depth) { switch (indent_length) { case 1: { for (unsigned int i = 0; i < depth; ++i) writer.write(indent[0]); break; } case 2: { for (unsigned int i = 0; i < depth; ++i) writer.write(indent[0], indent[1]); break; } case 3: { for (unsigned int i = 0; i < depth; ++i) writer.write(indent[0], indent[1], indent[2]); break; } case 4: { for (unsigned int i = 0; i < depth; ++i) writer.write(indent[0], indent[1], indent[2], indent[3]); break; } default: { for (unsigned int i = 0; i < depth; ++i) writer.write_buffer(indent, indent_length); } } } PUGI_IMPL_FN void node_output_comment(xml_buffered_writer& writer, const char_t* s) { writer.write('<', '!', '-', '-'); while (*s) { const char_t* prev = s; // look for -\0 or -- sequence - we can't output it since -- is illegal in comment body while (*s && !(s[0] == '-' && (s[1] == '-' || s[1] == 0))) ++s; writer.write_buffer(prev, static_cast(s - prev)); if (*s) { assert(*s == '-'); writer.write('-', ' '); ++s; } } writer.write('-', '-', '>'); } PUGI_IMPL_FN void node_output_pi_value(xml_buffered_writer& writer, const char_t* s) { while (*s) { const char_t* prev = s; // look for ?> sequence - we can't output it since ?> terminates PI while (*s && !(s[0] == '?' && s[1] == '>')) ++s; writer.write_buffer(prev, static_cast(s - prev)); if (*s) { assert(s[0] == '?' && s[1] == '>'); writer.write('?', ' ', '>'); s += 2; } } } PUGI_IMPL_FN void node_output_attributes(xml_buffered_writer& writer, xml_node_struct* node, const char_t* indent, size_t indent_length, unsigned int flags, unsigned int depth) { const char_t* default_name = PUGIXML_TEXT(":anonymous"); const char_t enquotation_char = (flags & format_attribute_single_quote) ? '\'' : '"'; for (xml_attribute_struct* a = node->first_attribute; a; a = a->next_attribute) { if ((flags & (format_indent_attributes | format_raw)) == format_indent_attributes) { writer.write('\n'); text_output_indent(writer, indent, indent_length, depth + 1); } else { writer.write(' '); } writer.write_string(a->name ? a->name + 0 : default_name); writer.write('=', enquotation_char); if (a->value) text_output(writer, a->value, ctx_special_attr, flags); writer.write(enquotation_char); } } PUGI_IMPL_FN bool node_output_start(xml_buffered_writer& writer, xml_node_struct* node, const char_t* indent, size_t indent_length, unsigned int flags, unsigned int depth) { const char_t* default_name = PUGIXML_TEXT(":anonymous"); const char_t* name = node->name ? node->name + 0 : default_name; writer.write('<'); writer.write_string(name); if (node->first_attribute) node_output_attributes(writer, node, indent, indent_length, flags, depth); // element nodes can have value if parse_embed_pcdata was used if (!node->value) { if (!node->first_child) { if (flags & format_no_empty_element_tags) { writer.write('>', '<', '/'); writer.write_string(name); writer.write('>'); return false; } else { if ((flags & format_raw) == 0) writer.write(' '); writer.write('/', '>'); return false; } } else { writer.write('>'); return true; } } else { writer.write('>'); text_output(writer, node->value, ctx_special_pcdata, flags); if (!node->first_child) { writer.write('<', '/'); writer.write_string(name); writer.write('>'); return false; } else { return true; } } } PUGI_IMPL_FN void node_output_end(xml_buffered_writer& writer, xml_node_struct* node) { const char_t* default_name = PUGIXML_TEXT(":anonymous"); const char_t* name = node->name ? node->name + 0 : default_name; writer.write('<', '/'); writer.write_string(name); writer.write('>'); } PUGI_IMPL_FN void node_output_simple(xml_buffered_writer& writer, xml_node_struct* node, unsigned int flags) { const char_t* default_name = PUGIXML_TEXT(":anonymous"); switch (PUGI_IMPL_NODETYPE(node)) { case node_pcdata: text_output(writer, node->value ? node->value + 0 : PUGIXML_TEXT(""), ctx_special_pcdata, flags); break; case node_cdata: text_output_cdata(writer, node->value ? node->value + 0 : PUGIXML_TEXT("")); break; case node_comment: node_output_comment(writer, node->value ? node->value + 0 : PUGIXML_TEXT("")); break; case node_pi: writer.write('<', '?'); writer.write_string(node->name ? node->name + 0 : default_name); if (node->value) { writer.write(' '); node_output_pi_value(writer, node->value); } writer.write('?', '>'); break; case node_declaration: writer.write('<', '?'); writer.write_string(node->name ? node->name + 0 : default_name); node_output_attributes(writer, node, PUGIXML_TEXT(""), 0, flags | format_raw, 0); writer.write('?', '>'); break; case node_doctype: writer.write('<', '!', 'D', 'O', 'C'); writer.write('T', 'Y', 'P', 'E'); if (node->value) { writer.write(' '); writer.write_string(node->value); } writer.write('>'); break; default: assert(false && "Invalid node type"); // unreachable } } enum indent_flags_t { indent_newline = 1, indent_indent = 2 }; PUGI_IMPL_FN void node_output(xml_buffered_writer& writer, xml_node_struct* root, const char_t* indent, unsigned int flags, unsigned int depth) { size_t indent_length = ((flags & (format_indent | format_indent_attributes)) && (flags & format_raw) == 0) ? strlength(indent) : 0; unsigned int indent_flags = indent_indent; xml_node_struct* node = root; do { assert(node); // begin writing current node if (PUGI_IMPL_NODETYPE(node) == node_pcdata || PUGI_IMPL_NODETYPE(node) == node_cdata) { node_output_simple(writer, node, flags); indent_flags = 0; } else { if ((indent_flags & indent_newline) && (flags & format_raw) == 0) writer.write('\n'); if ((indent_flags & indent_indent) && indent_length) text_output_indent(writer, indent, indent_length, depth); if (PUGI_IMPL_NODETYPE(node) == node_element) { indent_flags = indent_newline | indent_indent; if (node_output_start(writer, node, indent, indent_length, flags, depth)) { // element nodes can have value if parse_embed_pcdata was used if (node->value) indent_flags = 0; node = node->first_child; depth++; continue; } } else if (PUGI_IMPL_NODETYPE(node) == node_document) { indent_flags = indent_indent; if (node->first_child) { node = node->first_child; continue; } } else { node_output_simple(writer, node, flags); indent_flags = indent_newline | indent_indent; } } // continue to the next node while (node != root) { if (node->next_sibling) { node = node->next_sibling; break; } node = node->parent; // write closing node if (PUGI_IMPL_NODETYPE(node) == node_element) { depth--; if ((indent_flags & indent_newline) && (flags & format_raw) == 0) writer.write('\n'); if ((indent_flags & indent_indent) && indent_length) text_output_indent(writer, indent, indent_length, depth); node_output_end(writer, node); indent_flags = indent_newline | indent_indent; } } } while (node != root); if ((indent_flags & indent_newline) && (flags & format_raw) == 0) writer.write('\n'); } PUGI_IMPL_FN bool has_declaration(xml_node_struct* node) { for (xml_node_struct* child = node->first_child; child; child = child->next_sibling) { xml_node_type type = PUGI_IMPL_NODETYPE(child); if (type == node_declaration) return true; if (type == node_element) return false; } return false; } PUGI_IMPL_FN bool is_attribute_of(xml_attribute_struct* attr, xml_node_struct* node) { for (xml_attribute_struct* a = node->first_attribute; a; a = a->next_attribute) if (a == attr) return true; return false; } PUGI_IMPL_FN bool allow_insert_attribute(xml_node_type parent) { return parent == node_element || parent == node_declaration; } PUGI_IMPL_FN bool allow_insert_child(xml_node_type parent, xml_node_type child) { if (parent != node_document && parent != node_element) return false; if (child == node_document || child == node_null) return false; if (parent != node_document && (child == node_declaration || child == node_doctype)) return false; return true; } PUGI_IMPL_FN bool allow_move(xml_node parent, xml_node child) { // check that child can be a child of parent if (!allow_insert_child(parent.type(), child.type())) return false; // check that node is not moved between documents if (parent.root() != child.root()) return false; // check that new parent is not in the child subtree xml_node cur = parent; while (cur) { if (cur == child) return false; cur = cur.parent(); } return true; } template PUGI_IMPL_FN void node_copy_string(String& dest, Header& header, uintptr_t header_mask, char_t* source, Header& source_header, xml_allocator* alloc) { assert(!dest && (header & header_mask) == 0); // copies are performed into fresh nodes if (source) { if (alloc && (source_header & header_mask) == 0) { dest = source; // since strcpy_insitu can reuse document buffer memory we need to mark both source and dest as shared header |= xml_memory_page_contents_shared_mask; source_header |= xml_memory_page_contents_shared_mask; } else strcpy_insitu(dest, header, header_mask, source, strlength(source)); } } PUGI_IMPL_FN void node_copy_contents(xml_node_struct* dn, xml_node_struct* sn, xml_allocator* shared_alloc) { node_copy_string(dn->name, dn->header, xml_memory_page_name_allocated_mask, sn->name, sn->header, shared_alloc); node_copy_string(dn->value, dn->header, xml_memory_page_value_allocated_mask, sn->value, sn->header, shared_alloc); for (xml_attribute_struct* sa = sn->first_attribute; sa; sa = sa->next_attribute) { xml_attribute_struct* da = append_new_attribute(dn, get_allocator(dn)); if (da) { node_copy_string(da->name, da->header, xml_memory_page_name_allocated_mask, sa->name, sa->header, shared_alloc); node_copy_string(da->value, da->header, xml_memory_page_value_allocated_mask, sa->value, sa->header, shared_alloc); } } } PUGI_IMPL_FN void node_copy_tree(xml_node_struct* dn, xml_node_struct* sn) { xml_allocator& alloc = get_allocator(dn); xml_allocator* shared_alloc = (&alloc == &get_allocator(sn)) ? &alloc : NULL; node_copy_contents(dn, sn, shared_alloc); xml_node_struct* dit = dn; xml_node_struct* sit = sn->first_child; while (sit && sit != sn) { // loop invariant: dit is inside the subtree rooted at dn assert(dit); // when a tree is copied into one of the descendants, we need to skip that subtree to avoid an infinite loop if (sit != dn) { xml_node_struct* copy = append_new_node(dit, alloc, PUGI_IMPL_NODETYPE(sit)); if (copy) { node_copy_contents(copy, sit, shared_alloc); if (sit->first_child) { dit = copy; sit = sit->first_child; continue; } } } // continue to the next node do { if (sit->next_sibling) { sit = sit->next_sibling; break; } sit = sit->parent; dit = dit->parent; // loop invariant: dit is inside the subtree rooted at dn while sit is inside sn assert(sit == sn || dit); } while (sit != sn); } assert(!sit || dit == dn->parent); } PUGI_IMPL_FN void node_copy_attribute(xml_attribute_struct* da, xml_attribute_struct* sa) { xml_allocator& alloc = get_allocator(da); xml_allocator* shared_alloc = (&alloc == &get_allocator(sa)) ? &alloc : NULL; node_copy_string(da->name, da->header, xml_memory_page_name_allocated_mask, sa->name, sa->header, shared_alloc); node_copy_string(da->value, da->header, xml_memory_page_value_allocated_mask, sa->value, sa->header, shared_alloc); } inline bool is_text_node(xml_node_struct* node) { xml_node_type type = PUGI_IMPL_NODETYPE(node); return type == node_pcdata || type == node_cdata; } // get value with conversion functions template PUGI_IMPL_FN PUGI_IMPL_UNSIGNED_OVERFLOW U string_to_integer(const char_t* value, U minv, U maxv) { U result = 0; const char_t* s = value; while (PUGI_IMPL_IS_CHARTYPE(*s, ct_space)) s++; bool negative = (*s == '-'); s += (*s == '+' || *s == '-'); bool overflow = false; if (s[0] == '0' && (s[1] | ' ') == 'x') { s += 2; // since overflow detection relies on length of the sequence skip leading zeros while (*s == '0') s++; const char_t* start = s; for (;;) { if (static_cast(*s - '0') < 10) result = result * 16 + (*s - '0'); else if (static_cast((*s | ' ') - 'a') < 6) result = result * 16 + ((*s | ' ') - 'a' + 10); else break; s++; } size_t digits = static_cast(s - start); overflow = digits > sizeof(U) * 2; } else { // since overflow detection relies on length of the sequence skip leading zeros while (*s == '0') s++; const char_t* start = s; for (;;) { if (static_cast(*s - '0') < 10) result = result * 10 + (*s - '0'); else break; s++; } size_t digits = static_cast(s - start); PUGI_IMPL_STATIC_ASSERT(sizeof(U) == 8 || sizeof(U) == 4 || sizeof(U) == 2); const size_t max_digits10 = sizeof(U) == 8 ? 20 : sizeof(U) == 4 ? 10 : 5; const char_t max_lead = sizeof(U) == 8 ? '1' : sizeof(U) == 4 ? '4' : '6'; const size_t high_bit = sizeof(U) * 8 - 1; overflow = digits >= max_digits10 && !(digits == max_digits10 && (*start < max_lead || (*start == max_lead && result >> high_bit))); } if (negative) { // Workaround for crayc++ CC-3059: Expected no overflow in routine. #ifdef _CRAYC return (overflow || result > ~minv + 1) ? minv : ~result + 1; #else return (overflow || result > 0 - minv) ? minv : 0 - result; #endif } else return (overflow || result > maxv) ? maxv : result; } PUGI_IMPL_FN int get_value_int(const char_t* value) { return string_to_integer(value, static_cast(INT_MIN), INT_MAX); } PUGI_IMPL_FN unsigned int get_value_uint(const char_t* value) { return string_to_integer(value, 0, UINT_MAX); } PUGI_IMPL_FN double get_value_double(const char_t* value) { #ifdef PUGIXML_WCHAR_MODE return wcstod(value, NULL); #else return strtod(value, NULL); #endif } PUGI_IMPL_FN float get_value_float(const char_t* value) { #ifdef PUGIXML_WCHAR_MODE return static_cast(wcstod(value, NULL)); #else return static_cast(strtod(value, NULL)); #endif } PUGI_IMPL_FN bool get_value_bool(const char_t* value) { // only look at first char char_t first = *value; // 1*, t* (true), T* (True), y* (yes), Y* (YES) return (first == '1' || first == 't' || first == 'T' || first == 'y' || first == 'Y'); } #ifdef PUGIXML_HAS_LONG_LONG PUGI_IMPL_FN long long get_value_llong(const char_t* value) { return string_to_integer(value, static_cast(LLONG_MIN), LLONG_MAX); } PUGI_IMPL_FN unsigned long long get_value_ullong(const char_t* value) { return string_to_integer(value, 0, ULLONG_MAX); } #endif template PUGI_IMPL_FN PUGI_IMPL_UNSIGNED_OVERFLOW char_t* integer_to_string(char_t* begin, char_t* end, U value, bool negative) { char_t* result = end - 1; U rest = negative ? 0 - value : value; do { *result-- = static_cast('0' + (rest % 10)); rest /= 10; } while (rest); assert(result >= begin); (void)begin; *result = '-'; return result + !negative; } // set value with conversion functions template PUGI_IMPL_FN bool set_value_ascii(String& dest, Header& header, uintptr_t header_mask, char* buf) { #ifdef PUGIXML_WCHAR_MODE char_t wbuf[128]; assert(strlen(buf) < sizeof(wbuf) / sizeof(wbuf[0])); size_t offset = 0; for (; buf[offset]; ++offset) wbuf[offset] = buf[offset]; return strcpy_insitu(dest, header, header_mask, wbuf, offset); #else return strcpy_insitu(dest, header, header_mask, buf, strlen(buf)); #endif } template PUGI_IMPL_FN bool set_value_integer(String& dest, Header& header, uintptr_t header_mask, U value, bool negative) { char_t buf[64]; char_t* end = buf + sizeof(buf) / sizeof(buf[0]); char_t* begin = integer_to_string(buf, end, value, negative); return strcpy_insitu(dest, header, header_mask, begin, end - begin); } template PUGI_IMPL_FN bool set_value_convert(String& dest, Header& header, uintptr_t header_mask, float value, int precision) { char buf[128]; PUGI_IMPL_SNPRINTF(buf, "%.*g", precision, double(value)); return set_value_ascii(dest, header, header_mask, buf); } template PUGI_IMPL_FN bool set_value_convert(String& dest, Header& header, uintptr_t header_mask, double value, int precision) { char buf[128]; PUGI_IMPL_SNPRINTF(buf, "%.*g", precision, value); return set_value_ascii(dest, header, header_mask, buf); } template PUGI_IMPL_FN bool set_value_bool(String& dest, Header& header, uintptr_t header_mask, bool value) { return strcpy_insitu(dest, header, header_mask, value ? PUGIXML_TEXT("true") : PUGIXML_TEXT("false"), value ? 4 : 5); } PUGI_IMPL_FN xml_parse_result load_buffer_impl(xml_document_struct* doc, xml_node_struct* root, void* contents, size_t size, unsigned int options, xml_encoding encoding, bool is_mutable, bool own, char_t** out_buffer) { // check input buffer if (!contents && size) return make_parse_result(status_io_error); // get actual encoding xml_encoding buffer_encoding = impl::get_buffer_encoding(encoding, contents, size); // if convert_buffer below throws bad_alloc, we still need to deallocate contents if we own it auto_deleter contents_guard(own ? contents : NULL, xml_memory::deallocate); // get private buffer char_t* buffer = NULL; size_t length = 0; // coverity[var_deref_model] if (!impl::convert_buffer(buffer, length, buffer_encoding, contents, size, is_mutable)) return impl::make_parse_result(status_out_of_memory); // after this we either deallocate contents (below) or hold on to it via doc->buffer, so we don't need to guard it contents_guard.release(); // delete original buffer if we performed a conversion if (own && buffer != contents && contents) impl::xml_memory::deallocate(contents); // grab onto buffer if it's our buffer, user is responsible for deallocating contents himself if (own || buffer != contents) *out_buffer = buffer; // store buffer for offset_debug doc->buffer = buffer; // parse xml_parse_result res = impl::xml_parser::parse(buffer, length, doc, root, options); // remember encoding res.encoding = buffer_encoding; return res; } template PUGI_IMPL_FN xml_parse_status convert_file_size(T length, size_t& out_result) { // check for I/O errors if (length < 0) return status_io_error; // check for overflow size_t result = static_cast(length); if (static_cast(result) != length) return status_out_of_memory; out_result = result; return status_ok; } // we need to get length of entire file to load it in memory; the only (relatively) sane way to do it is via seek/tell trick PUGI_IMPL_FN xml_parse_status get_file_size(FILE* file, size_t& out_result) { #if defined(__linux__) || defined(__APPLE__) // this simultaneously retrieves the file size and file mode (to guard against loading non-files) struct stat st; if (fstat(fileno(file), &st) != 0) return status_io_error; // anything that's not a regular file doesn't have a coherent length if (!S_ISREG(st.st_mode)) return status_io_error; xml_parse_status status = convert_file_size(st.st_size, out_result); #elif defined(PUGI_IMPL_MSVC_CRT_VERSION) && PUGI_IMPL_MSVC_CRT_VERSION >= 1400 // there are 64-bit versions of fseek/ftell, let's use them _fseeki64(file, 0, SEEK_END); __int64 length = _ftelli64(file); _fseeki64(file, 0, SEEK_SET); xml_parse_status status = convert_file_size(length, out_result); #elif defined(__MINGW32__) && !defined(__NO_MINGW_LFS) && (!defined(__STRICT_ANSI__) || defined(__MINGW64_VERSION_MAJOR)) // there are 64-bit versions of fseek/ftell, let's use them fseeko64(file, 0, SEEK_END); off64_t length = ftello64(file); fseeko64(file, 0, SEEK_SET); xml_parse_status status = convert_file_size(length, out_result); #else // if this is a 32-bit OS, long is enough; if this is a unix system, long is 64-bit, which is enough; otherwise we can't do anything anyway. fseek(file, 0, SEEK_END); long length = ftell(file); fseek(file, 0, SEEK_SET); xml_parse_status status = convert_file_size(length, out_result); #endif return status; } // This function assumes that buffer has extra sizeof(char_t) writable bytes after size PUGI_IMPL_FN size_t zero_terminate_buffer(void* buffer, size_t size, xml_encoding encoding) { // We only need to zero-terminate if encoding conversion does not do it for us #ifdef PUGIXML_WCHAR_MODE xml_encoding wchar_encoding = get_wchar_encoding(); if (encoding == wchar_encoding || need_endian_swap_utf(encoding, wchar_encoding)) { size_t length = size / sizeof(char_t); static_cast(buffer)[length] = 0; return (length + 1) * sizeof(char_t); } #else if (encoding == encoding_utf8) { static_cast(buffer)[size] = 0; return size + 1; } #endif return size; } PUGI_IMPL_FN xml_parse_result load_file_impl(xml_document_struct* doc, FILE* file, unsigned int options, xml_encoding encoding, char_t** out_buffer) { if (!file) return make_parse_result(status_file_not_found); // get file size (can result in I/O errors) size_t size = 0; xml_parse_status size_status = get_file_size(file, size); if (size_status != status_ok) return make_parse_result(size_status); size_t max_suffix_size = sizeof(char_t); // allocate buffer for the whole file char* contents = static_cast(xml_memory::allocate(size + max_suffix_size)); if (!contents) return make_parse_result(status_out_of_memory); // read file in memory size_t read_size = fread(contents, 1, size, file); if (read_size != size) { xml_memory::deallocate(contents); return make_parse_result(status_io_error); } xml_encoding real_encoding = get_buffer_encoding(encoding, contents, size); return load_buffer_impl(doc, doc, contents, zero_terminate_buffer(contents, size, real_encoding), options, real_encoding, true, true, out_buffer); } PUGI_IMPL_FN void close_file(FILE* file) { fclose(file); } #ifndef PUGIXML_NO_STL template struct xml_stream_chunk { static xml_stream_chunk* create() { void* memory = xml_memory::allocate(sizeof(xml_stream_chunk)); if (!memory) return NULL; return new (memory) xml_stream_chunk(); } static void destroy(xml_stream_chunk* chunk) { // free chunk chain while (chunk) { xml_stream_chunk* next_ = chunk->next; xml_memory::deallocate(chunk); chunk = next_; } } xml_stream_chunk(): next(NULL), size(0) { } xml_stream_chunk* next; size_t size; T data[xml_memory_page_size / sizeof(T)]; }; template PUGI_IMPL_FN xml_parse_status load_stream_data_noseek(std::basic_istream& stream, void** out_buffer, size_t* out_size) { auto_deleter > chunks(NULL, xml_stream_chunk::destroy); // read file to a chunk list size_t total = 0; xml_stream_chunk* last = NULL; while (!stream.eof()) { // allocate new chunk xml_stream_chunk* chunk = xml_stream_chunk::create(); if (!chunk) return status_out_of_memory; // append chunk to list if (last) last = last->next = chunk; else chunks.data = last = chunk; // read data to chunk stream.read(chunk->data, static_cast(sizeof(chunk->data) / sizeof(T))); chunk->size = static_cast(stream.gcount()) * sizeof(T); // read may set failbit | eofbit in case gcount() is less than read length, so check for other I/O errors if (stream.bad() || (!stream.eof() && stream.fail())) return status_io_error; // guard against huge files (chunk size is small enough to make this overflow check work) if (total + chunk->size < total) return status_out_of_memory; total += chunk->size; } size_t max_suffix_size = sizeof(char_t); // copy chunk list to a contiguous buffer char* buffer = static_cast(xml_memory::allocate(total + max_suffix_size)); if (!buffer) return status_out_of_memory; char* write = buffer; for (xml_stream_chunk* chunk = chunks.data; chunk; chunk = chunk->next) { assert(write + chunk->size <= buffer + total); memcpy(write, chunk->data, chunk->size); write += chunk->size; } assert(write == buffer + total); // return buffer *out_buffer = buffer; *out_size = total; return status_ok; } template PUGI_IMPL_FN xml_parse_status load_stream_data_seek(std::basic_istream& stream, void** out_buffer, size_t* out_size) { // get length of remaining data in stream typename std::basic_istream::pos_type pos = stream.tellg(); stream.seekg(0, std::ios::end); std::streamoff length = stream.tellg() - pos; stream.seekg(pos); if (stream.fail() || pos < 0) return status_io_error; // guard against huge files size_t read_length = static_cast(length); if (static_cast(read_length) != length || length < 0) return status_out_of_memory; size_t max_suffix_size = sizeof(char_t); // read stream data into memory (guard against stream exceptions with buffer holder) auto_deleter buffer(xml_memory::allocate(read_length * sizeof(T) + max_suffix_size), xml_memory::deallocate); if (!buffer.data) return status_out_of_memory; stream.read(static_cast(buffer.data), static_cast(read_length)); // read may set failbit | eofbit in case gcount() is less than read_length (i.e. line ending conversion), so check for other I/O errors if (stream.bad() || (!stream.eof() && stream.fail())) return status_io_error; // return buffer size_t actual_length = static_cast(stream.gcount()); assert(actual_length <= read_length); *out_buffer = buffer.release(); *out_size = actual_length * sizeof(T); return status_ok; } template PUGI_IMPL_FN xml_parse_result load_stream_impl(xml_document_struct* doc, std::basic_istream& stream, unsigned int options, xml_encoding encoding, char_t** out_buffer) { void* buffer = NULL; size_t size = 0; xml_parse_status status = status_ok; // if stream has an error bit set, bail out (otherwise tellg() can fail and we'll clear error bits) if (stream.fail()) return make_parse_result(status_io_error); // load stream to memory (using seek-based implementation if possible, since it's faster and takes less memory) if (stream.tellg() < 0) { stream.clear(); // clear error flags that could be set by a failing tellg status = load_stream_data_noseek(stream, &buffer, &size); } else status = load_stream_data_seek(stream, &buffer, &size); if (status != status_ok) return make_parse_result(status); xml_encoding real_encoding = get_buffer_encoding(encoding, buffer, size); return load_buffer_impl(doc, doc, buffer, zero_terminate_buffer(buffer, size, real_encoding), options, real_encoding, true, true, out_buffer); } #endif #if defined(PUGI_IMPL_MSVC_CRT_VERSION) || defined(__BORLANDC__) || (defined(__MINGW32__) && (!defined(__STRICT_ANSI__) || defined(__MINGW64_VERSION_MAJOR))) PUGI_IMPL_FN FILE* open_file_wide(const wchar_t* path, const wchar_t* mode) { #ifdef PUGIXML_NO_STL // ensure these symbols are consistently referenced to avoid 'unreferenced function' warnings // note that generally these functions are used in STL builds, but PUGIXML_NO_STL leaves the only usage in convert_path_heap (void)&as_utf8_begin; (void)&as_utf8_end; (void)&strlength_wide; #endif #if defined(PUGI_IMPL_MSVC_CRT_VERSION) && PUGI_IMPL_MSVC_CRT_VERSION >= 1400 FILE* file = NULL; return _wfopen_s(&file, path, mode) == 0 ? file : NULL; #else return _wfopen(path, mode); #endif } #else PUGI_IMPL_FN char* convert_path_heap(const wchar_t* str) { assert(str); // first pass: get length in utf8 characters size_t length = strlength_wide(str); size_t size = as_utf8_begin(str, length); // allocate resulting string char* result = static_cast(xml_memory::allocate(size + 1)); if (!result) return NULL; // second pass: convert to utf8 as_utf8_end(result, size, str, length); // zero-terminate result[size] = 0; return result; } PUGI_IMPL_FN FILE* open_file_wide(const wchar_t* path, const wchar_t* mode) { // there is no standard function to open wide paths, so our best bet is to try utf8 path char* path_utf8 = convert_path_heap(path); if (!path_utf8) return NULL; // convert mode to ASCII (we mirror _wfopen interface) char mode_ascii[4] = {0}; for (size_t i = 0; mode[i]; ++i) mode_ascii[i] = static_cast(mode[i]); // try to open the utf8 path FILE* result = fopen(path_utf8, mode_ascii); // free dummy buffer xml_memory::deallocate(path_utf8); return result; } #endif PUGI_IMPL_FN FILE* open_file(const char* path, const char* mode) { #if defined(PUGI_IMPL_MSVC_CRT_VERSION) && PUGI_IMPL_MSVC_CRT_VERSION >= 1400 FILE* file = NULL; return fopen_s(&file, path, mode) == 0 ? file : NULL; #else return fopen(path, mode); #endif } PUGI_IMPL_FN bool save_file_impl(const xml_document& doc, FILE* file, const char_t* indent, unsigned int flags, xml_encoding encoding) { if (!file) return false; xml_writer_file writer(file); doc.save(writer, indent, flags, encoding); return fflush(file) == 0 && ferror(file) == 0; } struct name_null_sentry { xml_node_struct* node; char_t* name; name_null_sentry(xml_node_struct* node_): node(node_), name(node_->name) { node->name = NULL; } ~name_null_sentry() { node->name = name; } }; PUGI_IMPL_NS_END namespace pugi { PUGI_IMPL_FN xml_writer::~xml_writer() { } PUGI_IMPL_FN xml_writer_file::xml_writer_file(void* file_): file(file_) { } PUGI_IMPL_FN void xml_writer_file::write(const void* data, size_t size) { size_t result = fwrite(data, 1, size, static_cast(file)); (void)!result; // unfortunately we can't do proper error handling here } #ifndef PUGIXML_NO_STL PUGI_IMPL_FN xml_writer_stream::xml_writer_stream(std::basic_ostream& stream): narrow_stream(&stream), wide_stream(NULL) { } PUGI_IMPL_FN xml_writer_stream::xml_writer_stream(std::basic_ostream& stream): narrow_stream(NULL), wide_stream(&stream) { } PUGI_IMPL_FN void xml_writer_stream::write(const void* data, size_t size) { if (narrow_stream) { assert(!wide_stream); narrow_stream->write(reinterpret_cast(data), static_cast(size)); } else { assert(wide_stream); assert(size % sizeof(wchar_t) == 0); wide_stream->write(reinterpret_cast(data), static_cast(size / sizeof(wchar_t))); } } #endif PUGI_IMPL_FN xml_tree_walker::xml_tree_walker(): _depth(0) { } PUGI_IMPL_FN xml_tree_walker::~xml_tree_walker() { } PUGI_IMPL_FN int xml_tree_walker::depth() const { return _depth; } PUGI_IMPL_FN bool xml_tree_walker::begin(xml_node&) { return true; } PUGI_IMPL_FN bool xml_tree_walker::end(xml_node&) { return true; } PUGI_IMPL_FN xml_attribute::xml_attribute(): _attr(NULL) { } PUGI_IMPL_FN xml_attribute::xml_attribute(xml_attribute_struct* attr): _attr(attr) { } PUGI_IMPL_FN static void unspecified_bool_xml_attribute(xml_attribute***) { } PUGI_IMPL_FN xml_attribute::operator xml_attribute::unspecified_bool_type() const { return _attr ? unspecified_bool_xml_attribute : NULL; } PUGI_IMPL_FN bool xml_attribute::operator!() const { return !_attr; } PUGI_IMPL_FN bool xml_attribute::operator==(const xml_attribute& r) const { return (_attr == r._attr); } PUGI_IMPL_FN bool xml_attribute::operator!=(const xml_attribute& r) const { return (_attr != r._attr); } PUGI_IMPL_FN bool xml_attribute::operator<(const xml_attribute& r) const { return (_attr < r._attr); } PUGI_IMPL_FN bool xml_attribute::operator>(const xml_attribute& r) const { return (_attr > r._attr); } PUGI_IMPL_FN bool xml_attribute::operator<=(const xml_attribute& r) const { return (_attr <= r._attr); } PUGI_IMPL_FN bool xml_attribute::operator>=(const xml_attribute& r) const { return (_attr >= r._attr); } PUGI_IMPL_FN xml_attribute xml_attribute::next_attribute() const { if (!_attr) return xml_attribute(); return xml_attribute(_attr->next_attribute); } PUGI_IMPL_FN xml_attribute xml_attribute::previous_attribute() const { if (!_attr) return xml_attribute(); xml_attribute_struct* prev = _attr->prev_attribute_c; return prev->next_attribute ? xml_attribute(prev) : xml_attribute(); } PUGI_IMPL_FN const char_t* xml_attribute::as_string(const char_t* def) const { if (!_attr) return def; const char_t* value = _attr->value; return value ? value : def; } PUGI_IMPL_FN int xml_attribute::as_int(int def) const { if (!_attr) return def; const char_t* value = _attr->value; return value ? impl::get_value_int(value) : def; } PUGI_IMPL_FN unsigned int xml_attribute::as_uint(unsigned int def) const { if (!_attr) return def; const char_t* value = _attr->value; return value ? impl::get_value_uint(value) : def; } PUGI_IMPL_FN double xml_attribute::as_double(double def) const { if (!_attr) return def; const char_t* value = _attr->value; return value ? impl::get_value_double(value) : def; } PUGI_IMPL_FN float xml_attribute::as_float(float def) const { if (!_attr) return def; const char_t* value = _attr->value; return value ? impl::get_value_float(value) : def; } PUGI_IMPL_FN bool xml_attribute::as_bool(bool def) const { if (!_attr) return def; const char_t* value = _attr->value; return value ? impl::get_value_bool(value) : def; } #ifdef PUGIXML_HAS_LONG_LONG PUGI_IMPL_FN long long xml_attribute::as_llong(long long def) const { if (!_attr) return def; const char_t* value = _attr->value; return value ? impl::get_value_llong(value) : def; } PUGI_IMPL_FN unsigned long long xml_attribute::as_ullong(unsigned long long def) const { if (!_attr) return def; const char_t* value = _attr->value; return value ? impl::get_value_ullong(value) : def; } #endif PUGI_IMPL_FN bool xml_attribute::empty() const { return !_attr; } PUGI_IMPL_FN const char_t* xml_attribute::name() const { if (!_attr) return PUGIXML_TEXT(""); const char_t* name = _attr->name; return name ? name : PUGIXML_TEXT(""); } PUGI_IMPL_FN const char_t* xml_attribute::value() const { if (!_attr) return PUGIXML_TEXT(""); const char_t* value = _attr->value; return value ? value : PUGIXML_TEXT(""); } PUGI_IMPL_FN size_t xml_attribute::hash_value() const { return reinterpret_cast(_attr) / sizeof(xml_attribute_struct); } PUGI_IMPL_FN xml_attribute_struct* xml_attribute::internal_object() const { return _attr; } PUGI_IMPL_FN xml_attribute& xml_attribute::operator=(const char_t* rhs) { set_value(rhs); return *this; } PUGI_IMPL_FN xml_attribute& xml_attribute::operator=(int rhs) { set_value(rhs); return *this; } PUGI_IMPL_FN xml_attribute& xml_attribute::operator=(unsigned int rhs) { set_value(rhs); return *this; } PUGI_IMPL_FN xml_attribute& xml_attribute::operator=(long rhs) { set_value(rhs); return *this; } PUGI_IMPL_FN xml_attribute& xml_attribute::operator=(unsigned long rhs) { set_value(rhs); return *this; } PUGI_IMPL_FN xml_attribute& xml_attribute::operator=(double rhs) { set_value(rhs); return *this; } PUGI_IMPL_FN xml_attribute& xml_attribute::operator=(float rhs) { set_value(rhs); return *this; } PUGI_IMPL_FN xml_attribute& xml_attribute::operator=(bool rhs) { set_value(rhs); return *this; } #ifdef PUGIXML_HAS_STRING_VIEW PUGI_IMPL_FN xml_attribute& xml_attribute::operator=(string_view_t rhs) { set_value(rhs); return *this; } #endif #ifdef PUGIXML_HAS_LONG_LONG PUGI_IMPL_FN xml_attribute& xml_attribute::operator=(long long rhs) { set_value(rhs); return *this; } PUGI_IMPL_FN xml_attribute& xml_attribute::operator=(unsigned long long rhs) { set_value(rhs); return *this; } #endif PUGI_IMPL_FN bool xml_attribute::set_name(const char_t* rhs) { if (!_attr) return false; return impl::strcpy_insitu(_attr->name, _attr->header, impl::xml_memory_page_name_allocated_mask, rhs, impl::strlength(rhs)); } PUGI_IMPL_FN bool xml_attribute::set_name(const char_t* rhs, size_t size) { if (!_attr) return false; return impl::strcpy_insitu(_attr->name, _attr->header, impl::xml_memory_page_name_allocated_mask, rhs, size); } #ifdef PUGIXML_HAS_STRING_VIEW PUGI_IMPL_FN bool xml_attribute::set_name(string_view_t rhs) { if (!_attr) return false; return impl::strcpy_insitu(_attr->name, _attr->header, impl::xml_memory_page_name_allocated_mask, rhs.data(), rhs.size()); } #endif PUGI_IMPL_FN bool xml_attribute::set_value(const char_t* rhs) { if (!_attr) return false; return impl::strcpy_insitu(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs, impl::strlength(rhs)); } PUGI_IMPL_FN bool xml_attribute::set_value(const char_t* rhs, size_t size) { if (!_attr) return false; return impl::strcpy_insitu(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs, size); } #ifdef PUGIXML_HAS_STRING_VIEW PUGI_IMPL_FN bool xml_attribute::set_value(string_view_t rhs) { if (!_attr) return false; return impl::strcpy_insitu(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs.data(), rhs.size()); } #endif PUGI_IMPL_FN bool xml_attribute::set_value(int rhs) { if (!_attr) return false; return impl::set_value_integer(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs, rhs < 0); } PUGI_IMPL_FN bool xml_attribute::set_value(unsigned int rhs) { if (!_attr) return false; return impl::set_value_integer(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs, false); } PUGI_IMPL_FN bool xml_attribute::set_value(long rhs) { if (!_attr) return false; return impl::set_value_integer(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs, rhs < 0); } PUGI_IMPL_FN bool xml_attribute::set_value(unsigned long rhs) { if (!_attr) return false; return impl::set_value_integer(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs, false); } PUGI_IMPL_FN bool xml_attribute::set_value(double rhs) { if (!_attr) return false; return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs, default_double_precision); } PUGI_IMPL_FN bool xml_attribute::set_value(double rhs, int precision) { if (!_attr) return false; return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs, precision); } PUGI_IMPL_FN bool xml_attribute::set_value(float rhs) { if (!_attr) return false; return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs, default_float_precision); } PUGI_IMPL_FN bool xml_attribute::set_value(float rhs, int precision) { if (!_attr) return false; return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs, precision); } PUGI_IMPL_FN bool xml_attribute::set_value(bool rhs) { if (!_attr) return false; return impl::set_value_bool(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); } #ifdef PUGIXML_HAS_LONG_LONG PUGI_IMPL_FN bool xml_attribute::set_value(long long rhs) { if (!_attr) return false; return impl::set_value_integer(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs, rhs < 0); } PUGI_IMPL_FN bool xml_attribute::set_value(unsigned long long rhs) { if (!_attr) return false; return impl::set_value_integer(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs, false); } #endif #ifdef __BORLANDC__ PUGI_IMPL_FN bool operator&&(const xml_attribute& lhs, bool rhs) { return (bool)lhs && rhs; } PUGI_IMPL_FN bool operator||(const xml_attribute& lhs, bool rhs) { return (bool)lhs || rhs; } #endif PUGI_IMPL_FN xml_node::xml_node(): _root(NULL) { } PUGI_IMPL_FN xml_node::xml_node(xml_node_struct* p): _root(p) { } PUGI_IMPL_FN static void unspecified_bool_xml_node(xml_node***) { } PUGI_IMPL_FN xml_node::operator xml_node::unspecified_bool_type() const { return _root ? unspecified_bool_xml_node : NULL; } PUGI_IMPL_FN bool xml_node::operator!() const { return !_root; } PUGI_IMPL_FN xml_node::iterator xml_node::begin() const { return iterator(_root ? _root->first_child + 0 : NULL, _root); } PUGI_IMPL_FN xml_node::iterator xml_node::end() const { return iterator(NULL, _root); } PUGI_IMPL_FN xml_node::attribute_iterator xml_node::attributes_begin() const { return attribute_iterator(_root ? _root->first_attribute + 0 : NULL, _root); } PUGI_IMPL_FN xml_node::attribute_iterator xml_node::attributes_end() const { return attribute_iterator(NULL, _root); } PUGI_IMPL_FN xml_object_range xml_node::children() const { return xml_object_range(begin(), end()); } PUGI_IMPL_FN xml_object_range xml_node::children(const char_t* name_) const { return xml_object_range(xml_named_node_iterator(child(name_)._root, _root, name_), xml_named_node_iterator(NULL, _root, name_)); } PUGI_IMPL_FN xml_object_range xml_node::attributes() const { return xml_object_range(attributes_begin(), attributes_end()); } PUGI_IMPL_FN bool xml_node::operator==(const xml_node& r) const { return (_root == r._root); } PUGI_IMPL_FN bool xml_node::operator!=(const xml_node& r) const { return (_root != r._root); } PUGI_IMPL_FN bool xml_node::operator<(const xml_node& r) const { return (_root < r._root); } PUGI_IMPL_FN bool xml_node::operator>(const xml_node& r) const { return (_root > r._root); } PUGI_IMPL_FN bool xml_node::operator<=(const xml_node& r) const { return (_root <= r._root); } PUGI_IMPL_FN bool xml_node::operator>=(const xml_node& r) const { return (_root >= r._root); } PUGI_IMPL_FN bool xml_node::empty() const { return !_root; } PUGI_IMPL_FN const char_t* xml_node::name() const { if (!_root) return PUGIXML_TEXT(""); const char_t* name = _root->name; return name ? name : PUGIXML_TEXT(""); } PUGI_IMPL_FN xml_node_type xml_node::type() const { return _root ? PUGI_IMPL_NODETYPE(_root) : node_null; } PUGI_IMPL_FN const char_t* xml_node::value() const { if (!_root) return PUGIXML_TEXT(""); const char_t* value = _root->value; return value ? value : PUGIXML_TEXT(""); } PUGI_IMPL_FN xml_node xml_node::child(const char_t* name_) const { if (!_root) return xml_node(); for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) { const char_t* iname = i->name; if (iname && impl::strequal(name_, iname)) return xml_node(i); } return xml_node(); } PUGI_IMPL_FN xml_attribute xml_node::attribute(const char_t* name_) const { if (!_root) return xml_attribute(); for (xml_attribute_struct* i = _root->first_attribute; i; i = i->next_attribute) { const char_t* iname = i->name; if (iname && impl::strequal(name_, iname)) return xml_attribute(i); } return xml_attribute(); } PUGI_IMPL_FN xml_node xml_node::next_sibling(const char_t* name_) const { if (!_root) return xml_node(); for (xml_node_struct* i = _root->next_sibling; i; i = i->next_sibling) { const char_t* iname = i->name; if (iname && impl::strequal(name_, iname)) return xml_node(i); } return xml_node(); } PUGI_IMPL_FN xml_node xml_node::next_sibling() const { return _root ? xml_node(_root->next_sibling) : xml_node(); } PUGI_IMPL_FN xml_node xml_node::previous_sibling(const char_t* name_) const { if (!_root) return xml_node(); for (xml_node_struct* i = _root->prev_sibling_c; i->next_sibling; i = i->prev_sibling_c) { const char_t* iname = i->name; if (iname && impl::strequal(name_, iname)) return xml_node(i); } return xml_node(); } #ifdef PUGIXML_HAS_STRING_VIEW PUGI_IMPL_FN xml_node xml_node::child(string_view_t name_) const { if (!_root) return xml_node(); for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) { const char_t* iname = i->name; if (iname && impl::stringview_equal(name_, iname)) return xml_node(i); } return xml_node(); } PUGI_IMPL_FN xml_attribute xml_node::attribute(string_view_t name_) const { if (!_root) return xml_attribute(); for (xml_attribute_struct* i = _root->first_attribute; i; i = i->next_attribute) { const char_t* iname = i->name; if (iname && impl::stringview_equal(name_, iname)) return xml_attribute(i); } return xml_attribute(); } PUGI_IMPL_FN xml_node xml_node::next_sibling(string_view_t name_) const { if (!_root) return xml_node(); for (xml_node_struct* i = _root->next_sibling; i; i = i->next_sibling) { const char_t* iname = i->name; if (iname && impl::stringview_equal(name_, iname)) return xml_node(i); } return xml_node(); } PUGI_IMPL_FN xml_node xml_node::previous_sibling(string_view_t name_) const { if (!_root) return xml_node(); for (xml_node_struct* i = _root->prev_sibling_c; i->next_sibling; i = i->prev_sibling_c) { const char_t* iname = i->name; if (iname && impl::stringview_equal(name_, iname)) return xml_node(i); } return xml_node(); } #endif PUGI_IMPL_FN xml_attribute xml_node::attribute(const char_t* name_, xml_attribute& hint_) const { xml_attribute_struct* hint = hint_._attr; // if hint is not an attribute of node, behavior is not defined assert(!hint || (_root && impl::is_attribute_of(hint, _root))); if (!_root) return xml_attribute(); // optimistically search from hint up until the end for (xml_attribute_struct* i = hint; i; i = i->next_attribute) { const char_t* iname = i->name; if (iname && impl::strequal(name_, iname)) { // update hint to maximize efficiency of searching for consecutive attributes hint_._attr = i->next_attribute; return xml_attribute(i); } } // wrap around and search from the first attribute until the hint // 'j' null pointer check is technically redundant, but it prevents a crash in case the assertion above fails for (xml_attribute_struct* j = _root->first_attribute; j && j != hint; j = j->next_attribute) { const char_t* jname = j->name; if (jname && impl::strequal(name_, jname)) { // update hint to maximize efficiency of searching for consecutive attributes hint_._attr = j->next_attribute; return xml_attribute(j); } } return xml_attribute(); } #ifdef PUGIXML_HAS_STRING_VIEW PUGI_IMPL_FN xml_attribute xml_node::attribute(string_view_t name_, xml_attribute& hint_) const { xml_attribute_struct* hint = hint_._attr; // if hint is not an attribute of node, behavior is not defined assert(!hint || (_root && impl::is_attribute_of(hint, _root))); if (!_root) return xml_attribute(); // optimistically search from hint up until the end for (xml_attribute_struct* i = hint; i; i = i->next_attribute) { const char_t* iname = i->name; if (iname && impl::stringview_equal(name_, iname)) { // update hint to maximize efficiency of searching for consecutive attributes hint_._attr = i->next_attribute; return xml_attribute(i); } } // wrap around and search from the first attribute until the hint // 'j' null pointer check is technically redundant, but it prevents a crash in case the assertion above fails for (xml_attribute_struct* j = _root->first_attribute; j && j != hint; j = j->next_attribute) { const char_t* jname = j->name; if (jname && impl::stringview_equal(name_, jname)) { // update hint to maximize efficiency of searching for consecutive attributes hint_._attr = j->next_attribute; return xml_attribute(j); } } return xml_attribute(); } #endif PUGI_IMPL_FN xml_node xml_node::previous_sibling() const { if (!_root) return xml_node(); xml_node_struct* prev = _root->prev_sibling_c; return prev->next_sibling ? xml_node(prev) : xml_node(); } PUGI_IMPL_FN xml_node xml_node::parent() const { return _root ? xml_node(_root->parent) : xml_node(); } PUGI_IMPL_FN xml_node xml_node::root() const { return _root ? xml_node(&impl::get_document(_root)) : xml_node(); } PUGI_IMPL_FN xml_text xml_node::text() const { return xml_text(_root); } PUGI_IMPL_FN const char_t* xml_node::child_value() const { if (!_root) return PUGIXML_TEXT(""); // element nodes can have value if parse_embed_pcdata was used if (PUGI_IMPL_NODETYPE(_root) == node_element && _root->value) return _root->value; for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) { const char_t* ivalue = i->value; if (impl::is_text_node(i) && ivalue) return ivalue; } return PUGIXML_TEXT(""); } PUGI_IMPL_FN const char_t* xml_node::child_value(const char_t* name_) const { return child(name_).child_value(); } PUGI_IMPL_FN xml_attribute xml_node::first_attribute() const { if (!_root) return xml_attribute(); return xml_attribute(_root->first_attribute); } PUGI_IMPL_FN xml_attribute xml_node::last_attribute() const { if (!_root) return xml_attribute(); xml_attribute_struct* first = _root->first_attribute; return first ? xml_attribute(first->prev_attribute_c) : xml_attribute(); } PUGI_IMPL_FN xml_node xml_node::first_child() const { if (!_root) return xml_node(); return xml_node(_root->first_child); } PUGI_IMPL_FN xml_node xml_node::last_child() const { if (!_root) return xml_node(); xml_node_struct* first = _root->first_child; return first ? xml_node(first->prev_sibling_c) : xml_node(); } PUGI_IMPL_FN bool xml_node::set_name(const char_t* rhs) { xml_node_type type_ = _root ? PUGI_IMPL_NODETYPE(_root) : node_null; if (type_ != node_element && type_ != node_pi && type_ != node_declaration) return false; return impl::strcpy_insitu(_root->name, _root->header, impl::xml_memory_page_name_allocated_mask, rhs, impl::strlength(rhs)); } PUGI_IMPL_FN bool xml_node::set_name(const char_t* rhs, size_t size) { xml_node_type type_ = _root ? PUGI_IMPL_NODETYPE(_root) : node_null; if (type_ != node_element && type_ != node_pi && type_ != node_declaration) return false; return impl::strcpy_insitu(_root->name, _root->header, impl::xml_memory_page_name_allocated_mask, rhs, size); } #ifdef PUGIXML_HAS_STRING_VIEW PUGI_IMPL_FN bool xml_node::set_name(string_view_t rhs) { xml_node_type type_ = _root ? PUGI_IMPL_NODETYPE(_root) : node_null; if (type_ != node_element && type_ != node_pi && type_ != node_declaration) return false; return impl::strcpy_insitu(_root->name, _root->header, impl::xml_memory_page_name_allocated_mask, rhs.data(), rhs.size()); } #endif PUGI_IMPL_FN bool xml_node::set_value(const char_t* rhs) { xml_node_type type_ = _root ? PUGI_IMPL_NODETYPE(_root) : node_null; if (type_ != node_pcdata && type_ != node_cdata && type_ != node_comment && type_ != node_pi && type_ != node_doctype) return false; return impl::strcpy_insitu(_root->value, _root->header, impl::xml_memory_page_value_allocated_mask, rhs, impl::strlength(rhs)); } PUGI_IMPL_FN bool xml_node::set_value(const char_t* rhs, size_t size) { xml_node_type type_ = _root ? PUGI_IMPL_NODETYPE(_root) : node_null; if (type_ != node_pcdata && type_ != node_cdata && type_ != node_comment && type_ != node_pi && type_ != node_doctype) return false; return impl::strcpy_insitu(_root->value, _root->header, impl::xml_memory_page_value_allocated_mask, rhs, size); } #ifdef PUGIXML_HAS_STRING_VIEW PUGI_IMPL_FN bool xml_node::set_value(string_view_t rhs) { xml_node_type type_ = _root ? PUGI_IMPL_NODETYPE(_root) : node_null; if (type_ != node_pcdata && type_ != node_cdata && type_ != node_comment && type_ != node_pi && type_ != node_doctype) return false; return impl::strcpy_insitu(_root->value, _root->header, impl::xml_memory_page_value_allocated_mask, rhs.data(), rhs.size()); } #endif PUGI_IMPL_FN xml_attribute xml_node::append_attribute(const char_t* name_) { if (!impl::allow_insert_attribute(type())) return xml_attribute(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_attribute(); xml_attribute a(impl::allocate_attribute(alloc)); if (!a) return xml_attribute(); impl::append_attribute(a._attr, _root); a.set_name(name_); return a; } PUGI_IMPL_FN xml_attribute xml_node::prepend_attribute(const char_t* name_) { if (!impl::allow_insert_attribute(type())) return xml_attribute(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_attribute(); xml_attribute a(impl::allocate_attribute(alloc)); if (!a) return xml_attribute(); impl::prepend_attribute(a._attr, _root); a.set_name(name_); return a; } PUGI_IMPL_FN xml_attribute xml_node::insert_attribute_after(const char_t* name_, const xml_attribute& attr) { if (!impl::allow_insert_attribute(type())) return xml_attribute(); if (!attr || !impl::is_attribute_of(attr._attr, _root)) return xml_attribute(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_attribute(); xml_attribute a(impl::allocate_attribute(alloc)); if (!a) return xml_attribute(); impl::insert_attribute_after(a._attr, attr._attr, _root); a.set_name(name_); return a; } PUGI_IMPL_FN xml_attribute xml_node::insert_attribute_before(const char_t* name_, const xml_attribute& attr) { if (!impl::allow_insert_attribute(type())) return xml_attribute(); if (!attr || !impl::is_attribute_of(attr._attr, _root)) return xml_attribute(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_attribute(); xml_attribute a(impl::allocate_attribute(alloc)); if (!a) return xml_attribute(); impl::insert_attribute_before(a._attr, attr._attr, _root); a.set_name(name_); return a; } #ifdef PUGIXML_HAS_STRING_VIEW PUGI_IMPL_FN xml_attribute xml_node::append_attribute(string_view_t name_) { if (!impl::allow_insert_attribute(type())) return xml_attribute(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_attribute(); xml_attribute a(impl::allocate_attribute(alloc)); if (!a) return xml_attribute(); impl::append_attribute(a._attr, _root); a.set_name(name_); return a; } PUGI_IMPL_FN xml_attribute xml_node::prepend_attribute(string_view_t name_) { if (!impl::allow_insert_attribute(type())) return xml_attribute(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_attribute(); xml_attribute a(impl::allocate_attribute(alloc)); if (!a) return xml_attribute(); impl::prepend_attribute(a._attr, _root); a.set_name(name_); return a; } PUGI_IMPL_FN xml_attribute xml_node::insert_attribute_after(string_view_t name_, const xml_attribute& attr) { if (!impl::allow_insert_attribute(type())) return xml_attribute(); if (!attr || !impl::is_attribute_of(attr._attr, _root)) return xml_attribute(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_attribute(); xml_attribute a(impl::allocate_attribute(alloc)); if (!a) return xml_attribute(); impl::insert_attribute_after(a._attr, attr._attr, _root); a.set_name(name_); return a; } PUGI_IMPL_FN xml_attribute xml_node::insert_attribute_before(string_view_t name_, const xml_attribute& attr) { if (!impl::allow_insert_attribute(type())) return xml_attribute(); if (!attr || !impl::is_attribute_of(attr._attr, _root)) return xml_attribute(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_attribute(); xml_attribute a(impl::allocate_attribute(alloc)); if (!a) return xml_attribute(); impl::insert_attribute_before(a._attr, attr._attr, _root); a.set_name(name_); return a; } #endif PUGI_IMPL_FN xml_attribute xml_node::append_copy(const xml_attribute& proto) { if (!proto) return xml_attribute(); if (!impl::allow_insert_attribute(type())) return xml_attribute(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_attribute(); xml_attribute a(impl::allocate_attribute(alloc)); if (!a) return xml_attribute(); impl::append_attribute(a._attr, _root); impl::node_copy_attribute(a._attr, proto._attr); return a; } PUGI_IMPL_FN xml_attribute xml_node::prepend_copy(const xml_attribute& proto) { if (!proto) return xml_attribute(); if (!impl::allow_insert_attribute(type())) return xml_attribute(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_attribute(); xml_attribute a(impl::allocate_attribute(alloc)); if (!a) return xml_attribute(); impl::prepend_attribute(a._attr, _root); impl::node_copy_attribute(a._attr, proto._attr); return a; } PUGI_IMPL_FN xml_attribute xml_node::insert_copy_after(const xml_attribute& proto, const xml_attribute& attr) { if (!proto) return xml_attribute(); if (!impl::allow_insert_attribute(type())) return xml_attribute(); if (!attr || !impl::is_attribute_of(attr._attr, _root)) return xml_attribute(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_attribute(); xml_attribute a(impl::allocate_attribute(alloc)); if (!a) return xml_attribute(); impl::insert_attribute_after(a._attr, attr._attr, _root); impl::node_copy_attribute(a._attr, proto._attr); return a; } PUGI_IMPL_FN xml_attribute xml_node::insert_copy_before(const xml_attribute& proto, const xml_attribute& attr) { if (!proto) return xml_attribute(); if (!impl::allow_insert_attribute(type())) return xml_attribute(); if (!attr || !impl::is_attribute_of(attr._attr, _root)) return xml_attribute(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_attribute(); xml_attribute a(impl::allocate_attribute(alloc)); if (!a) return xml_attribute(); impl::insert_attribute_before(a._attr, attr._attr, _root); impl::node_copy_attribute(a._attr, proto._attr); return a; } PUGI_IMPL_FN xml_node xml_node::append_child(xml_node_type type_) { if (!impl::allow_insert_child(type(), type_)) return xml_node(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_node(); xml_node n(impl::allocate_node(alloc, type_)); if (!n) return xml_node(); impl::append_node(n._root, _root); if (type_ == node_declaration) n.set_name(PUGIXML_TEXT("xml")); return n; } PUGI_IMPL_FN xml_node xml_node::prepend_child(xml_node_type type_) { if (!impl::allow_insert_child(type(), type_)) return xml_node(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_node(); xml_node n(impl::allocate_node(alloc, type_)); if (!n) return xml_node(); impl::prepend_node(n._root, _root); if (type_ == node_declaration) n.set_name(PUGIXML_TEXT("xml")); return n; } PUGI_IMPL_FN xml_node xml_node::insert_child_before(xml_node_type type_, const xml_node& node) { if (!impl::allow_insert_child(type(), type_)) return xml_node(); if (!node._root || node._root->parent != _root) return xml_node(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_node(); xml_node n(impl::allocate_node(alloc, type_)); if (!n) return xml_node(); impl::insert_node_before(n._root, node._root); if (type_ == node_declaration) n.set_name(PUGIXML_TEXT("xml")); return n; } PUGI_IMPL_FN xml_node xml_node::insert_child_after(xml_node_type type_, const xml_node& node) { if (!impl::allow_insert_child(type(), type_)) return xml_node(); if (!node._root || node._root->parent != _root) return xml_node(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_node(); xml_node n(impl::allocate_node(alloc, type_)); if (!n) return xml_node(); impl::insert_node_after(n._root, node._root); if (type_ == node_declaration) n.set_name(PUGIXML_TEXT("xml")); return n; } PUGI_IMPL_FN xml_node xml_node::append_child(const char_t* name_) { xml_node result = append_child(node_element); result.set_name(name_); return result; } PUGI_IMPL_FN xml_node xml_node::prepend_child(const char_t* name_) { xml_node result = prepend_child(node_element); result.set_name(name_); return result; } PUGI_IMPL_FN xml_node xml_node::insert_child_after(const char_t* name_, const xml_node& node) { xml_node result = insert_child_after(node_element, node); result.set_name(name_); return result; } PUGI_IMPL_FN xml_node xml_node::insert_child_before(const char_t* name_, const xml_node& node) { xml_node result = insert_child_before(node_element, node); result.set_name(name_); return result; } #ifdef PUGIXML_HAS_STRING_VIEW PUGI_IMPL_FN xml_node xml_node::append_child(string_view_t name_) { xml_node result = append_child(node_element); result.set_name(name_); return result; } PUGI_IMPL_FN xml_node xml_node::prepend_child(string_view_t name_) { xml_node result = prepend_child(node_element); result.set_name(name_); return result; } PUGI_IMPL_FN xml_node xml_node::insert_child_after(string_view_t name_, const xml_node& node) { xml_node result = insert_child_after(node_element, node); result.set_name(name_); return result; } PUGI_IMPL_FN xml_node xml_node::insert_child_before(string_view_t name_, const xml_node& node) { xml_node result = insert_child_before(node_element, node); result.set_name(name_); return result; } #endif PUGI_IMPL_FN xml_node xml_node::append_copy(const xml_node& proto) { xml_node_type type_ = proto.type(); if (!impl::allow_insert_child(type(), type_)) return xml_node(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_node(); xml_node n(impl::allocate_node(alloc, type_)); if (!n) return xml_node(); impl::append_node(n._root, _root); impl::node_copy_tree(n._root, proto._root); return n; } PUGI_IMPL_FN xml_node xml_node::prepend_copy(const xml_node& proto) { xml_node_type type_ = proto.type(); if (!impl::allow_insert_child(type(), type_)) return xml_node(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_node(); xml_node n(impl::allocate_node(alloc, type_)); if (!n) return xml_node(); impl::prepend_node(n._root, _root); impl::node_copy_tree(n._root, proto._root); return n; } PUGI_IMPL_FN xml_node xml_node::insert_copy_after(const xml_node& proto, const xml_node& node) { xml_node_type type_ = proto.type(); if (!impl::allow_insert_child(type(), type_)) return xml_node(); if (!node._root || node._root->parent != _root) return xml_node(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_node(); xml_node n(impl::allocate_node(alloc, type_)); if (!n) return xml_node(); impl::insert_node_after(n._root, node._root); impl::node_copy_tree(n._root, proto._root); return n; } PUGI_IMPL_FN xml_node xml_node::insert_copy_before(const xml_node& proto, const xml_node& node) { xml_node_type type_ = proto.type(); if (!impl::allow_insert_child(type(), type_)) return xml_node(); if (!node._root || node._root->parent != _root) return xml_node(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_node(); xml_node n(impl::allocate_node(alloc, type_)); if (!n) return xml_node(); impl::insert_node_before(n._root, node._root); impl::node_copy_tree(n._root, proto._root); return n; } PUGI_IMPL_FN xml_node xml_node::append_move(const xml_node& moved) { if (!impl::allow_move(*this, moved)) return xml_node(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_node(); // disable document_buffer_order optimization since moving nodes around changes document order without changing buffer pointers impl::get_document(_root).header |= impl::xml_memory_page_contents_shared_mask; impl::remove_node(moved._root); impl::append_node(moved._root, _root); return moved; } PUGI_IMPL_FN xml_node xml_node::prepend_move(const xml_node& moved) { if (!impl::allow_move(*this, moved)) return xml_node(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_node(); // disable document_buffer_order optimization since moving nodes around changes document order without changing buffer pointers impl::get_document(_root).header |= impl::xml_memory_page_contents_shared_mask; impl::remove_node(moved._root); impl::prepend_node(moved._root, _root); return moved; } PUGI_IMPL_FN xml_node xml_node::insert_move_after(const xml_node& moved, const xml_node& node) { if (!impl::allow_move(*this, moved)) return xml_node(); if (!node._root || node._root->parent != _root) return xml_node(); if (moved._root == node._root) return xml_node(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_node(); // disable document_buffer_order optimization since moving nodes around changes document order without changing buffer pointers impl::get_document(_root).header |= impl::xml_memory_page_contents_shared_mask; impl::remove_node(moved._root); impl::insert_node_after(moved._root, node._root); return moved; } PUGI_IMPL_FN xml_node xml_node::insert_move_before(const xml_node& moved, const xml_node& node) { if (!impl::allow_move(*this, moved)) return xml_node(); if (!node._root || node._root->parent != _root) return xml_node(); if (moved._root == node._root) return xml_node(); impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return xml_node(); // disable document_buffer_order optimization since moving nodes around changes document order without changing buffer pointers impl::get_document(_root).header |= impl::xml_memory_page_contents_shared_mask; impl::remove_node(moved._root); impl::insert_node_before(moved._root, node._root); return moved; } PUGI_IMPL_FN bool xml_node::remove_attribute(const char_t* name_) { return remove_attribute(attribute(name_)); } #ifdef PUGIXML_HAS_STRING_VIEW PUGI_IMPL_FN bool xml_node::remove_attribute(string_view_t name_) { return remove_attribute(attribute(name_)); } #endif PUGI_IMPL_FN bool xml_node::remove_attribute(const xml_attribute& a) { if (!_root || !a._attr) return false; if (!impl::is_attribute_of(a._attr, _root)) return false; impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return false; impl::remove_attribute(a._attr, _root); impl::destroy_attribute(a._attr, alloc); return true; } PUGI_IMPL_FN bool xml_node::remove_attributes() { if (!_root) return false; impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return false; for (xml_attribute_struct* attr = _root->first_attribute; attr; ) { xml_attribute_struct* next = attr->next_attribute; impl::destroy_attribute(attr, alloc); attr = next; } _root->first_attribute = NULL; return true; } PUGI_IMPL_FN bool xml_node::remove_child(const char_t* name_) { return remove_child(child(name_)); } #ifdef PUGIXML_HAS_STRING_VIEW PUGI_IMPL_FN bool xml_node::remove_child(string_view_t name_) { return remove_child(child(name_)); } #endif PUGI_IMPL_FN bool xml_node::remove_child(const xml_node& n) { if (!_root || !n._root || n._root->parent != _root) return false; impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return false; impl::remove_node(n._root); impl::destroy_node(n._root, alloc); return true; } PUGI_IMPL_FN bool xml_node::remove_children() { if (!_root) return false; impl::xml_allocator& alloc = impl::get_allocator(_root); if (!alloc.reserve()) return false; for (xml_node_struct* cur = _root->first_child; cur; ) { xml_node_struct* next = cur->next_sibling; impl::destroy_node(cur, alloc); cur = next; } _root->first_child = NULL; return true; } PUGI_IMPL_FN xml_parse_result xml_node::append_buffer(const void* contents, size_t size, unsigned int options, xml_encoding encoding) { // append_buffer is only valid for elements/documents if (!impl::allow_insert_child(type(), node_element)) return impl::make_parse_result(status_append_invalid_root); // append buffer can not merge PCDATA into existing PCDATA nodes if ((options & parse_merge_pcdata) != 0 && last_child().type() == node_pcdata) return impl::make_parse_result(status_append_invalid_root); // get document node impl::xml_document_struct* doc = &impl::get_document(_root); // disable document_buffer_order optimization since in a document with multiple buffers comparing buffer pointers does not make sense doc->header |= impl::xml_memory_page_contents_shared_mask; // get extra buffer element (we'll store the document fragment buffer there so that we can deallocate it later) impl::xml_memory_page* page = NULL; impl::xml_extra_buffer* extra = static_cast(doc->allocate_memory(sizeof(impl::xml_extra_buffer) + sizeof(void*), page)); (void)page; if (!extra) return impl::make_parse_result(status_out_of_memory); #ifdef PUGIXML_COMPACT // align the memory block to a pointer boundary; this is required for compact mode where memory allocations are only 4b aligned // note that this requires up to sizeof(void*)-1 additional memory, which the allocation above takes into account extra = reinterpret_cast((reinterpret_cast(extra) + (sizeof(void*) - 1)) & ~(sizeof(void*) - 1)); #endif // add extra buffer to the list extra->buffer = NULL; extra->next = doc->extra_buffers; doc->extra_buffers = extra; // name of the root has to be NULL before parsing - otherwise closing node mismatches will not be detected at the top level impl::name_null_sentry sentry(_root); return impl::load_buffer_impl(doc, _root, const_cast(contents), size, options, encoding, false, false, &extra->buffer); } PUGI_IMPL_FN xml_node xml_node::find_child_by_attribute(const char_t* name_, const char_t* attr_name, const char_t* attr_value) const { if (!_root) return xml_node(); for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) { const char_t* iname = i->name; if (iname && impl::strequal(name_, iname)) { for (xml_attribute_struct* a = i->first_attribute; a; a = a->next_attribute) { const char_t* aname = a->name; if (aname && impl::strequal(attr_name, aname)) { const char_t* avalue = a->value; if (impl::strequal(attr_value, avalue ? avalue : PUGIXML_TEXT(""))) return xml_node(i); } } } } return xml_node(); } PUGI_IMPL_FN xml_node xml_node::find_child_by_attribute(const char_t* attr_name, const char_t* attr_value) const { if (!_root) return xml_node(); for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) for (xml_attribute_struct* a = i->first_attribute; a; a = a->next_attribute) { const char_t* aname = a->name; if (aname && impl::strequal(attr_name, aname)) { const char_t* avalue = a->value; if (impl::strequal(attr_value, avalue ? avalue : PUGIXML_TEXT(""))) return xml_node(i); } } return xml_node(); } #ifndef PUGIXML_NO_STL PUGI_IMPL_FN string_t xml_node::path(char_t delimiter) const { if (!_root) return string_t(); size_t offset = 0; for (xml_node_struct* i = _root; i; i = i->parent) { const char_t* iname = i->name; offset += (i != _root); offset += iname ? impl::strlength(iname) : 0; } string_t result; result.resize(offset); for (xml_node_struct* j = _root; j; j = j->parent) { if (j != _root) result[--offset] = delimiter; const char_t* jname = j->name; if (jname) { size_t length = impl::strlength(jname); offset -= length; memcpy(&result[offset], jname, length * sizeof(char_t)); } } assert(offset == 0); return result; } #endif PUGI_IMPL_FN xml_node xml_node::first_element_by_path(const char_t* path_, char_t delimiter) const { xml_node context = path_[0] == delimiter ? root() : *this; if (!context._root) return xml_node(); const char_t* path_segment = path_; while (*path_segment == delimiter) ++path_segment; const char_t* path_segment_end = path_segment; while (*path_segment_end && *path_segment_end != delimiter) ++path_segment_end; if (path_segment == path_segment_end) return context; const char_t* next_segment = path_segment_end; while (*next_segment == delimiter) ++next_segment; if (*path_segment == '.' && path_segment + 1 == path_segment_end) return context.first_element_by_path(next_segment, delimiter); else if (*path_segment == '.' && *(path_segment+1) == '.' && path_segment + 2 == path_segment_end) return context.parent().first_element_by_path(next_segment, delimiter); else { for (xml_node_struct* j = context._root->first_child; j; j = j->next_sibling) { const char_t* jname = j->name; if (jname && impl::strequalrange(jname, path_segment, static_cast(path_segment_end - path_segment))) { xml_node subsearch = xml_node(j).first_element_by_path(next_segment, delimiter); if (subsearch) return subsearch; } } return xml_node(); } } PUGI_IMPL_FN bool xml_node::traverse(xml_tree_walker& walker) { walker._depth = -1; xml_node arg_begin(_root); if (!walker.begin(arg_begin)) return false; xml_node_struct* cur = _root ? _root->first_child + 0 : NULL; if (cur) { ++walker._depth; do { xml_node arg_for_each(cur); if (!walker.for_each(arg_for_each)) return false; if (cur->first_child) { ++walker._depth; cur = cur->first_child; } else if (cur->next_sibling) cur = cur->next_sibling; else { while (!cur->next_sibling && cur != _root && cur->parent) { --walker._depth; cur = cur->parent; } if (cur != _root) cur = cur->next_sibling; } } while (cur && cur != _root); } assert(walker._depth == -1); xml_node arg_end(_root); return walker.end(arg_end); } PUGI_IMPL_FN size_t xml_node::hash_value() const { return reinterpret_cast(_root) / sizeof(xml_node_struct); } PUGI_IMPL_FN xml_node_struct* xml_node::internal_object() const { return _root; } PUGI_IMPL_FN void xml_node::print(xml_writer& writer, const char_t* indent, unsigned int flags, xml_encoding encoding, unsigned int depth) const { if (!_root) return; impl::xml_buffered_writer buffered_writer(writer, encoding); impl::node_output(buffered_writer, _root, indent, flags, depth); buffered_writer.flush(); } #ifndef PUGIXML_NO_STL PUGI_IMPL_FN void xml_node::print(std::basic_ostream& stream, const char_t* indent, unsigned int flags, xml_encoding encoding, unsigned int depth) const { xml_writer_stream writer(stream); print(writer, indent, flags, encoding, depth); } PUGI_IMPL_FN void xml_node::print(std::basic_ostream& stream, const char_t* indent, unsigned int flags, unsigned int depth) const { xml_writer_stream writer(stream); print(writer, indent, flags, encoding_wchar, depth); } #endif PUGI_IMPL_FN ptrdiff_t xml_node::offset_debug() const { if (!_root) return -1; impl::xml_document_struct& doc = impl::get_document(_root); // we can determine the offset reliably only if there is exactly once parse buffer if (!doc.buffer || doc.extra_buffers) return -1; switch (type()) { case node_document: return 0; case node_element: case node_declaration: case node_pi: return _root->name && (_root->header & impl::xml_memory_page_name_allocated_or_shared_mask) == 0 ? _root->name - doc.buffer : -1; case node_pcdata: case node_cdata: case node_comment: case node_doctype: return _root->value && (_root->header & impl::xml_memory_page_value_allocated_or_shared_mask) == 0 ? _root->value - doc.buffer : -1; default: assert(false && "Invalid node type"); // unreachable return -1; } } #ifdef __BORLANDC__ PUGI_IMPL_FN bool operator&&(const xml_node& lhs, bool rhs) { return (bool)lhs && rhs; } PUGI_IMPL_FN bool operator||(const xml_node& lhs, bool rhs) { return (bool)lhs || rhs; } #endif PUGI_IMPL_FN xml_text::xml_text(xml_node_struct* root): _root(root) { } PUGI_IMPL_FN xml_node_struct* xml_text::_data() const { if (!_root || impl::is_text_node(_root)) return _root; // element nodes can have value if parse_embed_pcdata was used if (PUGI_IMPL_NODETYPE(_root) == node_element && _root->value) return _root; for (xml_node_struct* node = _root->first_child; node; node = node->next_sibling) if (impl::is_text_node(node)) return node; return NULL; } PUGI_IMPL_FN xml_node_struct* xml_text::_data_new() { xml_node_struct* d = _data(); if (d) return d; return xml_node(_root).append_child(node_pcdata).internal_object(); } PUGI_IMPL_FN xml_text::xml_text(): _root(NULL) { } PUGI_IMPL_FN static void unspecified_bool_xml_text(xml_text***) { } PUGI_IMPL_FN xml_text::operator xml_text::unspecified_bool_type() const { return _data() ? unspecified_bool_xml_text : NULL; } PUGI_IMPL_FN bool xml_text::operator!() const { return !_data(); } PUGI_IMPL_FN bool xml_text::empty() const { return _data() == NULL; } PUGI_IMPL_FN const char_t* xml_text::get() const { xml_node_struct* d = _data(); if (!d) return PUGIXML_TEXT(""); const char_t* value = d->value; return value ? value : PUGIXML_TEXT(""); } PUGI_IMPL_FN const char_t* xml_text::as_string(const char_t* def) const { xml_node_struct* d = _data(); if (!d) return def; const char_t* value = d->value; return value ? value : def; } PUGI_IMPL_FN int xml_text::as_int(int def) const { xml_node_struct* d = _data(); if (!d) return def; const char_t* value = d->value; return value ? impl::get_value_int(value) : def; } PUGI_IMPL_FN unsigned int xml_text::as_uint(unsigned int def) const { xml_node_struct* d = _data(); if (!d) return def; const char_t* value = d->value; return value ? impl::get_value_uint(value) : def; } PUGI_IMPL_FN double xml_text::as_double(double def) const { xml_node_struct* d = _data(); if (!d) return def; const char_t* value = d->value; return value ? impl::get_value_double(value) : def; } PUGI_IMPL_FN float xml_text::as_float(float def) const { xml_node_struct* d = _data(); if (!d) return def; const char_t* value = d->value; return value ? impl::get_value_float(value) : def; } PUGI_IMPL_FN bool xml_text::as_bool(bool def) const { xml_node_struct* d = _data(); if (!d) return def; const char_t* value = d->value; return value ? impl::get_value_bool(value) : def; } #ifdef PUGIXML_HAS_LONG_LONG PUGI_IMPL_FN long long xml_text::as_llong(long long def) const { xml_node_struct* d = _data(); if (!d) return def; const char_t* value = d->value; return value ? impl::get_value_llong(value) : def; } PUGI_IMPL_FN unsigned long long xml_text::as_ullong(unsigned long long def) const { xml_node_struct* d = _data(); if (!d) return def; const char_t* value = d->value; return value ? impl::get_value_ullong(value) : def; } #endif PUGI_IMPL_FN bool xml_text::set(const char_t* rhs) { xml_node_struct* dn = _data_new(); return dn ? impl::strcpy_insitu(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs, impl::strlength(rhs)) : false; } PUGI_IMPL_FN bool xml_text::set(const char_t* rhs, size_t size) { xml_node_struct* dn = _data_new(); return dn ? impl::strcpy_insitu(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs, size) : false; } #ifdef PUGIXML_HAS_STRING_VIEW PUGI_IMPL_FN bool xml_text::set(string_view_t rhs) { xml_node_struct* dn = _data_new(); return dn ? impl::strcpy_insitu(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs.data(), rhs.size()) : false; } #endif PUGI_IMPL_FN bool xml_text::set(int rhs) { xml_node_struct* dn = _data_new(); return dn ? impl::set_value_integer(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs, rhs < 0) : false; } PUGI_IMPL_FN bool xml_text::set(unsigned int rhs) { xml_node_struct* dn = _data_new(); return dn ? impl::set_value_integer(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs, false) : false; } PUGI_IMPL_FN bool xml_text::set(long rhs) { xml_node_struct* dn = _data_new(); return dn ? impl::set_value_integer(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs, rhs < 0) : false; } PUGI_IMPL_FN bool xml_text::set(unsigned long rhs) { xml_node_struct* dn = _data_new(); return dn ? impl::set_value_integer(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs, false) : false; } PUGI_IMPL_FN bool xml_text::set(float rhs) { xml_node_struct* dn = _data_new(); return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs, default_float_precision) : false; } PUGI_IMPL_FN bool xml_text::set(float rhs, int precision) { xml_node_struct* dn = _data_new(); return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs, precision) : false; } PUGI_IMPL_FN bool xml_text::set(double rhs) { xml_node_struct* dn = _data_new(); return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs, default_double_precision) : false; } PUGI_IMPL_FN bool xml_text::set(double rhs, int precision) { xml_node_struct* dn = _data_new(); return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs, precision) : false; } PUGI_IMPL_FN bool xml_text::set(bool rhs) { xml_node_struct* dn = _data_new(); return dn ? impl::set_value_bool(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; } #ifdef PUGIXML_HAS_LONG_LONG PUGI_IMPL_FN bool xml_text::set(long long rhs) { xml_node_struct* dn = _data_new(); return dn ? impl::set_value_integer(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs, rhs < 0) : false; } PUGI_IMPL_FN bool xml_text::set(unsigned long long rhs) { xml_node_struct* dn = _data_new(); return dn ? impl::set_value_integer(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs, false) : false; } #endif PUGI_IMPL_FN xml_text& xml_text::operator=(const char_t* rhs) { set(rhs); return *this; } PUGI_IMPL_FN xml_text& xml_text::operator=(int rhs) { set(rhs); return *this; } PUGI_IMPL_FN xml_text& xml_text::operator=(unsigned int rhs) { set(rhs); return *this; } PUGI_IMPL_FN xml_text& xml_text::operator=(long rhs) { set(rhs); return *this; } PUGI_IMPL_FN xml_text& xml_text::operator=(unsigned long rhs) { set(rhs); return *this; } PUGI_IMPL_FN xml_text& xml_text::operator=(double rhs) { set(rhs); return *this; } PUGI_IMPL_FN xml_text& xml_text::operator=(float rhs) { set(rhs); return *this; } PUGI_IMPL_FN xml_text& xml_text::operator=(bool rhs) { set(rhs); return *this; } #ifdef PUGIXML_HAS_STRING_VIEW PUGI_IMPL_FN xml_text& xml_text::operator=(string_view_t rhs) { set(rhs); return *this; } #endif #ifdef PUGIXML_HAS_LONG_LONG PUGI_IMPL_FN xml_text& xml_text::operator=(long long rhs) { set(rhs); return *this; } PUGI_IMPL_FN xml_text& xml_text::operator=(unsigned long long rhs) { set(rhs); return *this; } #endif PUGI_IMPL_FN xml_node xml_text::data() const { return xml_node(_data()); } #ifdef __BORLANDC__ PUGI_IMPL_FN bool operator&&(const xml_text& lhs, bool rhs) { return (bool)lhs && rhs; } PUGI_IMPL_FN bool operator||(const xml_text& lhs, bool rhs) { return (bool)lhs || rhs; } #endif PUGI_IMPL_FN xml_node_iterator::xml_node_iterator() { } PUGI_IMPL_FN xml_node_iterator::xml_node_iterator(const xml_node& node): _wrap(node), _parent(node.parent()) { } PUGI_IMPL_FN xml_node_iterator::xml_node_iterator(xml_node_struct* ref, xml_node_struct* parent): _wrap(ref), _parent(parent) { } PUGI_IMPL_FN bool xml_node_iterator::operator==(const xml_node_iterator& rhs) const { return _wrap._root == rhs._wrap._root && _parent._root == rhs._parent._root; } PUGI_IMPL_FN bool xml_node_iterator::operator!=(const xml_node_iterator& rhs) const { return _wrap._root != rhs._wrap._root || _parent._root != rhs._parent._root; } PUGI_IMPL_FN xml_node& xml_node_iterator::operator*() const { assert(_wrap._root); return _wrap; } PUGI_IMPL_FN xml_node* xml_node_iterator::operator->() const { assert(_wrap._root); return &_wrap; } PUGI_IMPL_FN xml_node_iterator& xml_node_iterator::operator++() { assert(_wrap._root); _wrap._root = _wrap._root->next_sibling; return *this; } PUGI_IMPL_FN xml_node_iterator xml_node_iterator::operator++(int) { xml_node_iterator temp = *this; ++*this; return temp; } PUGI_IMPL_FN xml_node_iterator& xml_node_iterator::operator--() { _wrap = _wrap._root ? _wrap.previous_sibling() : _parent.last_child(); return *this; } PUGI_IMPL_FN xml_node_iterator xml_node_iterator::operator--(int) { xml_node_iterator temp = *this; --*this; return temp; } PUGI_IMPL_FN xml_attribute_iterator::xml_attribute_iterator() { } PUGI_IMPL_FN xml_attribute_iterator::xml_attribute_iterator(const xml_attribute& attr, const xml_node& parent): _wrap(attr), _parent(parent) { } PUGI_IMPL_FN xml_attribute_iterator::xml_attribute_iterator(xml_attribute_struct* ref, xml_node_struct* parent): _wrap(ref), _parent(parent) { } PUGI_IMPL_FN bool xml_attribute_iterator::operator==(const xml_attribute_iterator& rhs) const { return _wrap._attr == rhs._wrap._attr && _parent._root == rhs._parent._root; } PUGI_IMPL_FN bool xml_attribute_iterator::operator!=(const xml_attribute_iterator& rhs) const { return _wrap._attr != rhs._wrap._attr || _parent._root != rhs._parent._root; } PUGI_IMPL_FN xml_attribute& xml_attribute_iterator::operator*() const { assert(_wrap._attr); return _wrap; } PUGI_IMPL_FN xml_attribute* xml_attribute_iterator::operator->() const { assert(_wrap._attr); return &_wrap; } PUGI_IMPL_FN xml_attribute_iterator& xml_attribute_iterator::operator++() { assert(_wrap._attr); _wrap._attr = _wrap._attr->next_attribute; return *this; } PUGI_IMPL_FN xml_attribute_iterator xml_attribute_iterator::operator++(int) { xml_attribute_iterator temp = *this; ++*this; return temp; } PUGI_IMPL_FN xml_attribute_iterator& xml_attribute_iterator::operator--() { _wrap = _wrap._attr ? _wrap.previous_attribute() : _parent.last_attribute(); return *this; } PUGI_IMPL_FN xml_attribute_iterator xml_attribute_iterator::operator--(int) { xml_attribute_iterator temp = *this; --*this; return temp; } PUGI_IMPL_FN xml_named_node_iterator::xml_named_node_iterator(): _name(NULL) { } PUGI_IMPL_FN xml_named_node_iterator::xml_named_node_iterator(const xml_node& node, const char_t* name): _wrap(node), _parent(node.parent()), _name(name) { } PUGI_IMPL_FN xml_named_node_iterator::xml_named_node_iterator(xml_node_struct* ref, xml_node_struct* parent, const char_t* name): _wrap(ref), _parent(parent), _name(name) { } PUGI_IMPL_FN bool xml_named_node_iterator::operator==(const xml_named_node_iterator& rhs) const { return _wrap._root == rhs._wrap._root && _parent._root == rhs._parent._root; } PUGI_IMPL_FN bool xml_named_node_iterator::operator!=(const xml_named_node_iterator& rhs) const { return _wrap._root != rhs._wrap._root || _parent._root != rhs._parent._root; } PUGI_IMPL_FN xml_node& xml_named_node_iterator::operator*() const { assert(_wrap._root); return _wrap; } PUGI_IMPL_FN xml_node* xml_named_node_iterator::operator->() const { assert(_wrap._root); return &_wrap; } PUGI_IMPL_FN xml_named_node_iterator& xml_named_node_iterator::operator++() { assert(_wrap._root); _wrap = _wrap.next_sibling(_name); return *this; } PUGI_IMPL_FN xml_named_node_iterator xml_named_node_iterator::operator++(int) { xml_named_node_iterator temp = *this; ++*this; return temp; } PUGI_IMPL_FN xml_named_node_iterator& xml_named_node_iterator::operator--() { if (_wrap._root) _wrap = _wrap.previous_sibling(_name); else { _wrap = _parent.last_child(); if (!impl::strequal(_wrap.name(), _name)) _wrap = _wrap.previous_sibling(_name); } return *this; } PUGI_IMPL_FN xml_named_node_iterator xml_named_node_iterator::operator--(int) { xml_named_node_iterator temp = *this; --*this; return temp; } PUGI_IMPL_FN xml_parse_result::xml_parse_result(): status(status_internal_error), offset(0), encoding(encoding_auto) { } PUGI_IMPL_FN xml_parse_result::operator bool() const { return status == status_ok; } PUGI_IMPL_FN const char* xml_parse_result::description() const { switch (status) { case status_ok: return "No error"; case status_file_not_found: return "File was not found"; case status_io_error: return "Error reading from file/stream"; case status_out_of_memory: return "Could not allocate memory"; case status_internal_error: return "Internal error occurred"; case status_unrecognized_tag: return "Could not determine tag type"; case status_bad_pi: return "Error parsing document declaration/processing instruction"; case status_bad_comment: return "Error parsing comment"; case status_bad_cdata: return "Error parsing CDATA section"; case status_bad_doctype: return "Error parsing document type declaration"; case status_bad_pcdata: return "Error parsing PCDATA section"; case status_bad_start_element: return "Error parsing start element tag"; case status_bad_attribute: return "Error parsing element attribute"; case status_bad_end_element: return "Error parsing end element tag"; case status_end_element_mismatch: return "Start-end tags mismatch"; case status_append_invalid_root: return "Unable to append nodes: root is not an element or document"; case status_no_document_element: return "No document element found"; default: return "Unknown error"; } } PUGI_IMPL_FN xml_document::xml_document(): _buffer(NULL) { _create(); } PUGI_IMPL_FN xml_document::~xml_document() { _destroy(); } #ifdef PUGIXML_HAS_MOVE PUGI_IMPL_FN xml_document::xml_document(xml_document&& rhs) PUGIXML_NOEXCEPT_IF_NOT_COMPACT: _buffer(NULL) { _create(); _move(rhs); } PUGI_IMPL_FN xml_document& xml_document::operator=(xml_document&& rhs) PUGIXML_NOEXCEPT_IF_NOT_COMPACT { if (this == &rhs) return *this; _destroy(); _create(); _move(rhs); return *this; } #endif PUGI_IMPL_FN void xml_document::reset() { _destroy(); _create(); } PUGI_IMPL_FN void xml_document::reset(const xml_document& proto) { reset(); impl::node_copy_tree(_root, proto._root); } PUGI_IMPL_FN void xml_document::_create() { assert(!_root); #ifdef PUGIXML_COMPACT // space for page marker for the first page (uint32_t), rounded up to pointer size; assumes pointers are at least 32-bit const size_t page_offset = sizeof(void*); #else const size_t page_offset = 0; #endif // initialize sentinel page PUGI_IMPL_STATIC_ASSERT(sizeof(impl::xml_memory_page) + sizeof(impl::xml_document_struct) + page_offset <= sizeof(_memory)); // prepare page structure impl::xml_memory_page* page = impl::xml_memory_page::construct(_memory); assert(page); page->busy_size = impl::xml_memory_page_size; // setup first page marker #ifdef PUGIXML_COMPACT // round-trip through void* to avoid 'cast increases required alignment of target type' warning page->compact_page_marker = reinterpret_cast(static_cast(reinterpret_cast(page) + sizeof(impl::xml_memory_page))); *page->compact_page_marker = sizeof(impl::xml_memory_page); #endif // allocate new root _root = new (reinterpret_cast(page) + sizeof(impl::xml_memory_page) + page_offset) impl::xml_document_struct(page); _root->prev_sibling_c = _root; // setup sentinel page page->allocator = static_cast(_root); // setup hash table pointer in allocator #ifdef PUGIXML_COMPACT page->allocator->_hash = &static_cast(_root)->hash; #endif // verify the document allocation assert(reinterpret_cast(_root) + sizeof(impl::xml_document_struct) <= _memory + sizeof(_memory)); } PUGI_IMPL_FN void xml_document::_destroy() { assert(_root); // destroy static storage if (_buffer) { impl::xml_memory::deallocate(_buffer); _buffer = NULL; } // destroy extra buffers (note: no need to destroy linked list nodes, they're allocated using document allocator) for (impl::xml_extra_buffer* extra = static_cast(_root)->extra_buffers; extra; extra = extra->next) { if (extra->buffer) impl::xml_memory::deallocate(extra->buffer); } // destroy dynamic storage, leave sentinel page (it's in static memory) impl::xml_memory_page* root_page = PUGI_IMPL_GETPAGE(_root); assert(root_page && !root_page->prev); assert(reinterpret_cast(root_page) >= _memory && reinterpret_cast(root_page) < _memory + sizeof(_memory)); for (impl::xml_memory_page* page = root_page->next; page; ) { impl::xml_memory_page* next = page->next; impl::xml_allocator::deallocate_page(page); page = next; } #ifdef PUGIXML_COMPACT // destroy hash table static_cast(_root)->hash.clear(); #endif _root = NULL; } #ifdef PUGIXML_HAS_MOVE PUGI_IMPL_FN void xml_document::_move(xml_document& rhs) PUGIXML_NOEXCEPT_IF_NOT_COMPACT { impl::xml_document_struct* doc = static_cast(_root); impl::xml_document_struct* other = static_cast(rhs._root); // save first child pointer for later; this needs hash access xml_node_struct* other_first_child = other->first_child; #ifdef PUGIXML_COMPACT // reserve space for the hash table up front; this is the only operation that can fail // if it does, we have no choice but to throw (if we have exceptions) if (other_first_child) { size_t other_children = 0; for (xml_node_struct* node = other_first_child; node; node = node->next_sibling) other_children++; // in compact mode, each pointer assignment could result in a hash table request // during move, we have to relocate document first_child and parents of all children // normally there's just one child and its parent has a pointerless encoding but // we assume the worst here if (!other->_hash->reserve(other_children + 1)) { #ifdef PUGIXML_NO_EXCEPTIONS return; #else throw std::bad_alloc(); #endif } } #endif // move allocation state // note that other->_root may point to the embedded document page, in which case we should keep original (empty) state if (other->_root != PUGI_IMPL_GETPAGE(other)) { doc->_root = other->_root; doc->_busy_size = other->_busy_size; } // move buffer state doc->buffer = other->buffer; doc->extra_buffers = other->extra_buffers; _buffer = rhs._buffer; #ifdef PUGIXML_COMPACT // move compact hash; note that the hash table can have pointers to other but they will be "inactive", similarly to nodes removed with remove_child doc->hash = other->hash; doc->_hash = &doc->hash; // make sure we don't access other hash up until the end when we reinitialize other document other->_hash = NULL; #endif // move page structure impl::xml_memory_page* doc_page = PUGI_IMPL_GETPAGE(doc); assert(doc_page && !doc_page->prev && !doc_page->next); impl::xml_memory_page* other_page = PUGI_IMPL_GETPAGE(other); assert(other_page && !other_page->prev); // relink pages since root page is embedded into xml_document if (impl::xml_memory_page* page = other_page->next) { assert(page->prev == other_page); page->prev = doc_page; doc_page->next = page; other_page->next = NULL; } // make sure pages point to the correct document state for (impl::xml_memory_page* page = doc_page->next; page; page = page->next) { assert(page->allocator == other); page->allocator = doc; #ifdef PUGIXML_COMPACT // this automatically migrates most children between documents and prevents ->parent assignment from allocating if (page->compact_shared_parent == other) page->compact_shared_parent = doc; #endif } // move tree structure assert(!doc->first_child); doc->first_child = other_first_child; for (xml_node_struct* node = other_first_child; node; node = node->next_sibling) { #ifdef PUGIXML_COMPACT // most children will have migrated when we reassigned compact_shared_parent assert(node->parent == other || node->parent == doc); node->parent = doc; #else assert(node->parent == other); node->parent = doc; #endif } // reset other document new (other) impl::xml_document_struct(PUGI_IMPL_GETPAGE(other)); rhs._buffer = NULL; } #endif #ifndef PUGIXML_NO_STL PUGI_IMPL_FN xml_parse_result xml_document::load(std::basic_istream& stream, unsigned int options, xml_encoding encoding) { reset(); return impl::load_stream_impl(static_cast(_root), stream, options, encoding, &_buffer); } PUGI_IMPL_FN xml_parse_result xml_document::load(std::basic_istream& stream, unsigned int options) { reset(); return impl::load_stream_impl(static_cast(_root), stream, options, encoding_wchar, &_buffer); } #endif PUGI_IMPL_FN xml_parse_result xml_document::load_string(const char_t* contents, unsigned int options) { // Force native encoding (skip autodetection) #ifdef PUGIXML_WCHAR_MODE xml_encoding encoding = encoding_wchar; #else xml_encoding encoding = encoding_utf8; #endif return load_buffer(contents, impl::strlength(contents) * sizeof(char_t), options, encoding); } PUGI_IMPL_FN xml_parse_result xml_document::load(const char_t* contents, unsigned int options) { return load_string(contents, options); } PUGI_IMPL_FN xml_parse_result xml_document::load_file(const char* path_, unsigned int options, xml_encoding encoding) { reset(); using impl::auto_deleter; // MSVC7 workaround auto_deleter file(impl::open_file(path_, "rb"), impl::close_file); return impl::load_file_impl(static_cast(_root), file.data, options, encoding, &_buffer); } PUGI_IMPL_FN xml_parse_result xml_document::load_file(const wchar_t* path_, unsigned int options, xml_encoding encoding) { reset(); using impl::auto_deleter; // MSVC7 workaround auto_deleter file(impl::open_file_wide(path_, L"rb"), impl::close_file); return impl::load_file_impl(static_cast(_root), file.data, options, encoding, &_buffer); } PUGI_IMPL_FN xml_parse_result xml_document::load_buffer(const void* contents, size_t size, unsigned int options, xml_encoding encoding) { reset(); return impl::load_buffer_impl(static_cast(_root), _root, const_cast(contents), size, options, encoding, false, false, &_buffer); } PUGI_IMPL_FN xml_parse_result xml_document::load_buffer_inplace(void* contents, size_t size, unsigned int options, xml_encoding encoding) { reset(); return impl::load_buffer_impl(static_cast(_root), _root, contents, size, options, encoding, true, false, &_buffer); } PUGI_IMPL_FN xml_parse_result xml_document::load_buffer_inplace_own(void* contents, size_t size, unsigned int options, xml_encoding encoding) { reset(); return impl::load_buffer_impl(static_cast(_root), _root, contents, size, options, encoding, true, true, &_buffer); } PUGI_IMPL_FN void xml_document::save(xml_writer& writer, const char_t* indent, unsigned int flags, xml_encoding encoding) const { impl::xml_buffered_writer buffered_writer(writer, encoding); if ((flags & format_write_bom) && buffered_writer.encoding != encoding_latin1) { // BOM always represents the codepoint U+FEFF, so just write it in native encoding #ifdef PUGIXML_WCHAR_MODE unsigned int bom = 0xfeff; buffered_writer.write(static_cast(bom)); #else buffered_writer.write('\xef', '\xbb', '\xbf'); #endif } if (!(flags & format_no_declaration) && !impl::has_declaration(_root)) { buffered_writer.write_string(PUGIXML_TEXT("'); if (!(flags & format_raw)) buffered_writer.write('\n'); } impl::node_output(buffered_writer, _root, indent, flags, 0); buffered_writer.flush(); } #ifndef PUGIXML_NO_STL PUGI_IMPL_FN void xml_document::save(std::basic_ostream& stream, const char_t* indent, unsigned int flags, xml_encoding encoding) const { xml_writer_stream writer(stream); save(writer, indent, flags, encoding); } PUGI_IMPL_FN void xml_document::save(std::basic_ostream& stream, const char_t* indent, unsigned int flags) const { xml_writer_stream writer(stream); save(writer, indent, flags, encoding_wchar); } #endif PUGI_IMPL_FN bool xml_document::save_file(const char* path_, const char_t* indent, unsigned int flags, xml_encoding encoding) const { using impl::auto_deleter; // MSVC7 workaround auto_deleter file(impl::open_file(path_, (flags & format_save_file_text) ? "w" : "wb"), impl::close_file); return impl::save_file_impl(*this, file.data, indent, flags, encoding) && fclose(file.release()) == 0; } PUGI_IMPL_FN bool xml_document::save_file(const wchar_t* path_, const char_t* indent, unsigned int flags, xml_encoding encoding) const { using impl::auto_deleter; // MSVC7 workaround auto_deleter file(impl::open_file_wide(path_, (flags & format_save_file_text) ? L"w" : L"wb"), impl::close_file); return impl::save_file_impl(*this, file.data, indent, flags, encoding) && fclose(file.release()) == 0; } PUGI_IMPL_FN xml_node xml_document::document_element() const { assert(_root); for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) if (PUGI_IMPL_NODETYPE(i) == node_element) return xml_node(i); return xml_node(); } #ifndef PUGIXML_NO_STL PUGI_IMPL_FN std::string PUGIXML_FUNCTION as_utf8(const wchar_t* str) { assert(str); return impl::as_utf8_impl(str, impl::strlength_wide(str)); } PUGI_IMPL_FN std::string PUGIXML_FUNCTION as_utf8(const std::basic_string& str) { return impl::as_utf8_impl(str.c_str(), str.size()); } PUGI_IMPL_FN std::basic_string PUGIXML_FUNCTION as_wide(const char* str) { assert(str); return impl::as_wide_impl(str, strlen(str)); } PUGI_IMPL_FN std::basic_string PUGIXML_FUNCTION as_wide(const std::string& str) { return impl::as_wide_impl(str.c_str(), str.size()); } #endif PUGI_IMPL_FN void PUGIXML_FUNCTION set_memory_management_functions(allocation_function allocate, deallocation_function deallocate) { impl::xml_memory::allocate = allocate; impl::xml_memory::deallocate = deallocate; } PUGI_IMPL_FN allocation_function PUGIXML_FUNCTION get_memory_allocation_function() { return impl::xml_memory::allocate; } PUGI_IMPL_FN deallocation_function PUGIXML_FUNCTION get_memory_deallocation_function() { return impl::xml_memory::deallocate; } } #if !defined(PUGIXML_NO_STL) && (defined(_MSC_VER) || defined(__ICC)) namespace std { // Workarounds for (non-standard) iterator category detection for older versions (MSVC7/IC8 and earlier) PUGI_IMPL_FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_node_iterator&) { return std::bidirectional_iterator_tag(); } PUGI_IMPL_FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_attribute_iterator&) { return std::bidirectional_iterator_tag(); } PUGI_IMPL_FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_named_node_iterator&) { return std::bidirectional_iterator_tag(); } } #endif #if !defined(PUGIXML_NO_STL) && defined(__SUNPRO_CC) namespace std { // Workarounds for (non-standard) iterator category detection PUGI_IMPL_FN std::bidirectional_iterator_tag __iterator_category(const pugi::xml_node_iterator&) { return std::bidirectional_iterator_tag(); } PUGI_IMPL_FN std::bidirectional_iterator_tag __iterator_category(const pugi::xml_attribute_iterator&) { return std::bidirectional_iterator_tag(); } PUGI_IMPL_FN std::bidirectional_iterator_tag __iterator_category(const pugi::xml_named_node_iterator&) { return std::bidirectional_iterator_tag(); } } #endif #ifndef PUGIXML_NO_XPATH // STL replacements PUGI_IMPL_NS_BEGIN struct equal_to { template bool operator()(const T& lhs, const T& rhs) const { return lhs == rhs; } }; struct not_equal_to { template bool operator()(const T& lhs, const T& rhs) const { return lhs != rhs; } }; struct less { template bool operator()(const T& lhs, const T& rhs) const { return lhs < rhs; } }; struct less_equal { template bool operator()(const T& lhs, const T& rhs) const { return lhs <= rhs; } }; template inline void swap(T& lhs, T& rhs) { T temp = lhs; lhs = rhs; rhs = temp; } template PUGI_IMPL_FN I min_element(I begin, I end, const Pred& pred) { I result = begin; for (I it = begin + 1; it != end; ++it) if (pred(*it, *result)) result = it; return result; } template PUGI_IMPL_FN void reverse(I begin, I end) { while (end - begin > 1) swap(*begin++, *--end); } template PUGI_IMPL_FN I unique(I begin, I end) { // fast skip head while (end - begin > 1 && *begin != *(begin + 1)) begin++; if (begin == end) return begin; // last written element I write = begin++; // merge unique elements while (begin != end) { if (*begin != *write) *++write = *begin++; else begin++; } // past-the-end (write points to live element) return write + 1; } template PUGI_IMPL_FN void insertion_sort(T* begin, T* end, const Pred& pred) { if (begin == end) return; for (T* it = begin + 1; it != end; ++it) { T val = *it; T* hole = it; // move hole backwards while (hole > begin && pred(val, *(hole - 1))) { *hole = *(hole - 1); hole--; } // fill hole with element *hole = val; } } template inline I median3(I first, I middle, I last, const Pred& pred) { if (pred(*middle, *first)) swap(middle, first); if (pred(*last, *middle)) swap(last, middle); if (pred(*middle, *first)) swap(middle, first); return middle; } template PUGI_IMPL_FN void partition3(T* begin, T* end, T pivot, const Pred& pred, T** out_eqbeg, T** out_eqend) { // invariant: array is split into 4 groups: = < ? > (each variable denotes the boundary between the groups) T* eq = begin; T* lt = begin; T* gt = end; while (lt < gt) { if (pred(*lt, pivot)) lt++; else if (*lt == pivot) swap(*eq++, *lt++); else swap(*lt, *--gt); } // we now have just 4 groups: = < >; move equal elements to the middle T* eqbeg = gt; for (T* it = begin; it != eq; ++it) swap(*it, *--eqbeg); *out_eqbeg = eqbeg; *out_eqend = gt; } template PUGI_IMPL_FN void sort(I begin, I end, const Pred& pred) { // sort large chunks while (end - begin > 16) { // find median element I middle = begin + (end - begin) / 2; I median = median3(begin, middle, end - 1, pred); // partition in three chunks (< = >) I eqbeg, eqend; partition3(begin, end, *median, pred, &eqbeg, &eqend); // loop on larger half if (eqbeg - begin > end - eqend) { sort(eqend, end, pred); end = eqbeg; } else { sort(begin, eqbeg, pred); begin = eqend; } } // insertion sort small chunk insertion_sort(begin, end, pred); } PUGI_IMPL_FN bool hash_insert(const void** table, size_t size, const void* key) { assert(key); unsigned int h = static_cast(reinterpret_cast(key)); // MurmurHash3 32-bit finalizer h ^= h >> 16; h *= 0x85ebca6bu; h ^= h >> 13; h *= 0xc2b2ae35u; h ^= h >> 16; size_t hashmod = size - 1; size_t bucket = h & hashmod; for (size_t probe = 0; probe <= hashmod; ++probe) { if (table[bucket] == NULL) { table[bucket] = key; return true; } if (table[bucket] == key) return false; // hash collision, quadratic probing bucket = (bucket + probe + 1) & hashmod; } assert(false && "Hash table is full"); // unreachable return false; } PUGI_IMPL_NS_END // Allocator used for AST and evaluation stacks PUGI_IMPL_NS_BEGIN static const size_t xpath_memory_page_size = #ifdef PUGIXML_MEMORY_XPATH_PAGE_SIZE PUGIXML_MEMORY_XPATH_PAGE_SIZE #else 4096 #endif ; static const uintptr_t xpath_memory_block_alignment = sizeof(double) > sizeof(void*) ? sizeof(double) : sizeof(void*); struct xpath_memory_block { xpath_memory_block* next; size_t capacity; union { char data[xpath_memory_page_size]; double alignment; }; }; struct xpath_allocator { xpath_memory_block* _root; size_t _root_size; bool* _error; xpath_allocator(xpath_memory_block* root, bool* error = NULL): _root(root), _root_size(0), _error(error) { } void* allocate(size_t size) { // round size up to block alignment boundary size = (size + xpath_memory_block_alignment - 1) & ~(xpath_memory_block_alignment - 1); if (_root_size + size <= _root->capacity) { void* buf = &_root->data[0] + _root_size; _root_size += size; return buf; } else { // make sure we have at least 1/4th of the page free after allocation to satisfy subsequent allocation requests size_t block_capacity_base = sizeof(_root->data); size_t block_capacity_req = size + block_capacity_base / 4; size_t block_capacity = (block_capacity_base > block_capacity_req) ? block_capacity_base : block_capacity_req; size_t block_size = block_capacity + offsetof(xpath_memory_block, data); xpath_memory_block* block = static_cast(xml_memory::allocate(block_size)); if (!block) { if (_error) *_error = true; return NULL; } block->next = _root; block->capacity = block_capacity; _root = block; _root_size = size; return block->data; } } void* reallocate(void* ptr, size_t old_size, size_t new_size) { // round size up to block alignment boundary old_size = (old_size + xpath_memory_block_alignment - 1) & ~(xpath_memory_block_alignment - 1); new_size = (new_size + xpath_memory_block_alignment - 1) & ~(xpath_memory_block_alignment - 1); // we can only reallocate the last object assert(ptr == NULL || static_cast(ptr) + old_size == &_root->data[0] + _root_size); // try to reallocate the object inplace if (ptr && _root_size - old_size + new_size <= _root->capacity) { _root_size = _root_size - old_size + new_size; return ptr; } // allocate a new block void* result = allocate(new_size); if (!result) return NULL; // we have a new block if (ptr) { // copy old data (we only support growing) assert(new_size >= old_size); memcpy(result, ptr, old_size); // free the previous page if it had no other objects assert(_root->data == result); assert(_root->next); if (_root->next->data == ptr) { // deallocate the whole page, unless it was the first one xpath_memory_block* next = _root->next->next; if (next) { xml_memory::deallocate(_root->next); _root->next = next; } } } return result; } void revert(const xpath_allocator& state) { // free all new pages xpath_memory_block* cur = _root; while (cur != state._root) { xpath_memory_block* next = cur->next; xml_memory::deallocate(cur); cur = next; } // restore state _root = state._root; _root_size = state._root_size; } void release() { xpath_memory_block* cur = _root; assert(cur); while (cur->next) { xpath_memory_block* next = cur->next; xml_memory::deallocate(cur); cur = next; } } }; struct xpath_allocator_capture { xpath_allocator_capture(xpath_allocator* alloc): _target(alloc), _state(*alloc) { } ~xpath_allocator_capture() { _target->revert(_state); } xpath_allocator* _target; xpath_allocator _state; }; struct xpath_stack { xpath_allocator* result; xpath_allocator* temp; }; struct xpath_stack_data { xpath_memory_block blocks[2]; xpath_allocator result; xpath_allocator temp; xpath_stack stack; bool oom; xpath_stack_data(): result(blocks + 0, &oom), temp(blocks + 1, &oom), oom(false) { blocks[0].next = blocks[1].next = NULL; blocks[0].capacity = blocks[1].capacity = sizeof(blocks[0].data); stack.result = &result; stack.temp = &temp; } ~xpath_stack_data() { result.release(); temp.release(); } }; PUGI_IMPL_NS_END // String class PUGI_IMPL_NS_BEGIN class xpath_string { const char_t* _buffer; bool _uses_heap; size_t _length_heap; static char_t* duplicate_string(const char_t* string, size_t length, xpath_allocator* alloc) { char_t* result = static_cast(alloc->allocate((length + 1) * sizeof(char_t))); if (!result) return NULL; memcpy(result, string, length * sizeof(char_t)); result[length] = 0; return result; } xpath_string(const char_t* buffer, bool uses_heap_, size_t length_heap): _buffer(buffer), _uses_heap(uses_heap_), _length_heap(length_heap) { } public: static xpath_string from_const(const char_t* str) { return xpath_string(str, false, 0); } static xpath_string from_heap_preallocated(const char_t* begin, const char_t* end) { assert(begin <= end && *end == 0); return xpath_string(begin, true, static_cast(end - begin)); } static xpath_string from_heap(const char_t* begin, const char_t* end, xpath_allocator* alloc) { assert(begin <= end); if (begin == end) return xpath_string(); size_t length = static_cast(end - begin); const char_t* data = duplicate_string(begin, length, alloc); return data ? xpath_string(data, true, length) : xpath_string(); } xpath_string(): _buffer(PUGIXML_TEXT("")), _uses_heap(false), _length_heap(0) { } void append(const xpath_string& o, xpath_allocator* alloc) { // skip empty sources if (!*o._buffer) return; // fast append for constant empty target and constant source if (!*_buffer && !_uses_heap && !o._uses_heap) { _buffer = o._buffer; } else { // need to make heap copy size_t target_length = length(); size_t source_length = o.length(); size_t result_length = target_length + source_length; // allocate new buffer char_t* result = static_cast(alloc->reallocate(_uses_heap ? const_cast(_buffer) : NULL, (target_length + 1) * sizeof(char_t), (result_length + 1) * sizeof(char_t))); if (!result) return; // append first string to the new buffer in case there was no reallocation if (!_uses_heap) memcpy(result, _buffer, target_length * sizeof(char_t)); // append second string to the new buffer memcpy(result + target_length, o._buffer, source_length * sizeof(char_t)); result[result_length] = 0; // finalize _buffer = result; _uses_heap = true; _length_heap = result_length; } } const char_t* c_str() const { return _buffer; } size_t length() const { return _uses_heap ? _length_heap : strlength(_buffer); } char_t* data(xpath_allocator* alloc) { // make private heap copy if (!_uses_heap) { size_t length_ = strlength(_buffer); const char_t* data_ = duplicate_string(_buffer, length_, alloc); if (!data_) return NULL; _buffer = data_; _uses_heap = true; _length_heap = length_; } return const_cast(_buffer); } bool empty() const { return *_buffer == 0; } bool operator==(const xpath_string& o) const { return strequal(_buffer, o._buffer); } bool operator!=(const xpath_string& o) const { return !strequal(_buffer, o._buffer); } bool uses_heap() const { return _uses_heap; } }; PUGI_IMPL_NS_END PUGI_IMPL_NS_BEGIN PUGI_IMPL_FN bool starts_with(const char_t* string, const char_t* pattern) { while (*pattern && *string == *pattern) { string++; pattern++; } return *pattern == 0; } PUGI_IMPL_FN const char_t* find_char(const char_t* s, char_t c) { #ifdef PUGIXML_WCHAR_MODE return wcschr(s, c); #else return strchr(s, c); #endif } PUGI_IMPL_FN const char_t* find_substring(const char_t* s, const char_t* p) { #ifdef PUGIXML_WCHAR_MODE // MSVC6 wcsstr bug workaround (if s is empty it always returns 0) return (*p == 0) ? s : wcsstr(s, p); #else return strstr(s, p); #endif } // Converts symbol to lower case, if it is an ASCII one PUGI_IMPL_FN char_t tolower_ascii(char_t ch) { return static_cast(ch - 'A') < 26 ? static_cast(ch | ' ') : ch; } PUGI_IMPL_FN xpath_string string_value(const xpath_node& na, xpath_allocator* alloc) { if (na.attribute()) return xpath_string::from_const(na.attribute().value()); else { xml_node n = na.node(); switch (n.type()) { case node_pcdata: case node_cdata: case node_comment: case node_pi: return xpath_string::from_const(n.value()); case node_document: case node_element: { xpath_string result; // element nodes can have value if parse_embed_pcdata was used if (n.value()[0]) result.append(xpath_string::from_const(n.value()), alloc); xml_node cur = n.first_child(); while (cur && cur != n) { if (cur.type() == node_pcdata || cur.type() == node_cdata) result.append(xpath_string::from_const(cur.value()), alloc); if (cur.first_child()) cur = cur.first_child(); else if (cur.next_sibling()) cur = cur.next_sibling(); else { while (!cur.next_sibling() && cur != n) cur = cur.parent(); if (cur != n) cur = cur.next_sibling(); } } return result; } default: return xpath_string(); } } } PUGI_IMPL_FN bool node_is_before_sibling(xml_node_struct* ln, xml_node_struct* rn) { assert(ln->parent == rn->parent); // there is no common ancestor (the shared parent is null), nodes are from different documents if (!ln->parent) return ln < rn; // determine sibling order xml_node_struct* ls = ln; xml_node_struct* rs = rn; while (ls && rs) { if (ls == rn) return true; if (rs == ln) return false; ls = ls->next_sibling; rs = rs->next_sibling; } // if rn sibling chain ended ln must be before rn return !rs; } PUGI_IMPL_FN bool node_is_before(xml_node_struct* ln, xml_node_struct* rn) { // find common ancestor at the same depth, if any xml_node_struct* lp = ln; xml_node_struct* rp = rn; while (lp && rp && lp->parent != rp->parent) { lp = lp->parent; rp = rp->parent; } // parents are the same! if (lp && rp) return node_is_before_sibling(lp, rp); // nodes are at different depths, need to normalize heights bool left_higher = !lp; while (lp) { lp = lp->parent; ln = ln->parent; } while (rp) { rp = rp->parent; rn = rn->parent; } // one node is the ancestor of the other if (ln == rn) return left_higher; // find common ancestor... again while (ln->parent != rn->parent) { ln = ln->parent; rn = rn->parent; } return node_is_before_sibling(ln, rn); } PUGI_IMPL_FN bool node_is_ancestor(xml_node_struct* parent, xml_node_struct* node) { while (node && node != parent) node = node->parent; return parent && node == parent; } PUGI_IMPL_FN const void* document_buffer_order(const xpath_node& xnode) { xml_node_struct* node = xnode.node().internal_object(); if (node) { if ((get_document(node).header & xml_memory_page_contents_shared_mask) == 0) { if (node->name && (node->header & impl::xml_memory_page_name_allocated_or_shared_mask) == 0) return node->name; if (node->value && (node->header & impl::xml_memory_page_value_allocated_or_shared_mask) == 0) return node->value; } return NULL; } xml_attribute_struct* attr = xnode.attribute().internal_object(); if (attr) { if ((get_document(attr).header & xml_memory_page_contents_shared_mask) == 0) { if ((attr->header & impl::xml_memory_page_name_allocated_or_shared_mask) == 0) return attr->name; if ((attr->header & impl::xml_memory_page_value_allocated_or_shared_mask) == 0) return attr->value; } return NULL; } return NULL; } struct document_order_comparator { bool operator()(const xpath_node& lhs, const xpath_node& rhs) const { // optimized document order based check const void* lo = document_buffer_order(lhs); const void* ro = document_buffer_order(rhs); if (lo && ro) return lo < ro; // slow comparison xml_node ln = lhs.node(), rn = rhs.node(); // compare attributes if (lhs.attribute() && rhs.attribute()) { // shared parent if (lhs.parent() == rhs.parent()) { // determine sibling order for (xml_attribute a = lhs.attribute(); a; a = a.next_attribute()) if (a == rhs.attribute()) return true; return false; } // compare attribute parents ln = lhs.parent(); rn = rhs.parent(); } else if (lhs.attribute()) { // attributes go after the parent element if (lhs.parent() == rhs.node()) return false; ln = lhs.parent(); } else if (rhs.attribute()) { // attributes go after the parent element if (rhs.parent() == lhs.node()) return true; rn = rhs.parent(); } if (ln == rn) return false; if (!ln || !rn) return ln < rn; return node_is_before(ln.internal_object(), rn.internal_object()); } }; PUGI_IMPL_FN double gen_nan() { #if defined(__STDC_IEC_559__) || ((FLT_RADIX - 0 == 2) && (FLT_MAX_EXP - 0 == 128) && (FLT_MANT_DIG - 0 == 24)) PUGI_IMPL_STATIC_ASSERT(sizeof(float) == sizeof(uint32_t)); typedef uint32_t UI; // BCC5 workaround union { float f; UI i; } u; u.i = 0x7fc00000; return double(u.f); #else // fallback const volatile double zero = 0.0; return zero / zero; #endif } PUGI_IMPL_FN bool is_nan(double value) { #if defined(PUGI_IMPL_MSVC_CRT_VERSION) || defined(__BORLANDC__) return !!_isnan(value); #elif defined(fpclassify) && defined(FP_NAN) return fpclassify(value) == FP_NAN; #else // fallback const volatile double v = value; return v != v; #endif } PUGI_IMPL_FN const char_t* convert_number_to_string_special(double value) { #if defined(PUGI_IMPL_MSVC_CRT_VERSION) || defined(__BORLANDC__) if (_finite(value)) return (value == 0) ? PUGIXML_TEXT("0") : 0; if (_isnan(value)) return PUGIXML_TEXT("NaN"); return value > 0 ? PUGIXML_TEXT("Infinity") : PUGIXML_TEXT("-Infinity"); #elif defined(fpclassify) && defined(FP_NAN) && defined(FP_INFINITE) && defined(FP_ZERO) switch (fpclassify(value)) { case FP_NAN: return PUGIXML_TEXT("NaN"); case FP_INFINITE: return value > 0 ? PUGIXML_TEXT("Infinity") : PUGIXML_TEXT("-Infinity"); case FP_ZERO: return PUGIXML_TEXT("0"); default: return 0; } #else // fallback const volatile double v = value; if (v == 0) return PUGIXML_TEXT("0"); if (v != v) return PUGIXML_TEXT("NaN"); if (v * 2 == v) return value > 0 ? PUGIXML_TEXT("Infinity") : PUGIXML_TEXT("-Infinity"); return NULL; #endif } PUGI_IMPL_FN bool convert_number_to_boolean(double value) { return (value != 0 && !is_nan(value)); } PUGI_IMPL_FN void truncate_zeros(char* begin, char* end) { while (begin != end && end[-1] == '0') end--; *end = 0; } // gets mantissa digits in the form of 0.xxxxx with 0. implied and the exponent #if defined(PUGI_IMPL_MSVC_CRT_VERSION) && PUGI_IMPL_MSVC_CRT_VERSION >= 1400 PUGI_IMPL_FN void convert_number_to_mantissa_exponent(double value, char (&buffer)[32], char** out_mantissa, int* out_exponent) { // get base values int sign, exponent; _ecvt_s(buffer, sizeof(buffer), value, DBL_DIG + 1, &exponent, &sign); // truncate redundant zeros truncate_zeros(buffer, buffer + strlen(buffer)); // fill results *out_mantissa = buffer; *out_exponent = exponent; } #else PUGI_IMPL_FN void convert_number_to_mantissa_exponent(double value, char (&buffer)[32], char** out_mantissa, int* out_exponent) { // get a scientific notation value with IEEE DBL_DIG decimals PUGI_IMPL_SNPRINTF(buffer, "%.*e", DBL_DIG, value); // get the exponent (possibly negative) char* exponent_string = strchr(buffer, 'e'); assert(exponent_string); int exponent = atoi(exponent_string + 1); // extract mantissa string: skip sign char* mantissa = buffer[0] == '-' ? buffer + 1 : buffer; assert(mantissa[0] != '0' && (mantissa[1] == '.' || mantissa[1] == ',')); // divide mantissa by 10 to eliminate integer part mantissa[1] = mantissa[0]; mantissa++; exponent++; // remove extra mantissa digits and zero-terminate mantissa truncate_zeros(mantissa, exponent_string); // fill results *out_mantissa = mantissa; *out_exponent = exponent; } #endif PUGI_IMPL_FN xpath_string convert_number_to_string(double value, xpath_allocator* alloc) { // try special number conversion const char_t* special = convert_number_to_string_special(value); if (special) return xpath_string::from_const(special); // get mantissa + exponent form char mantissa_buffer[32]; char* mantissa; int exponent; convert_number_to_mantissa_exponent(value, mantissa_buffer, &mantissa, &exponent); // allocate a buffer of suitable length for the number size_t result_size = strlen(mantissa_buffer) + (exponent > 0 ? exponent : -exponent) + 4; char_t* result = static_cast(alloc->allocate(sizeof(char_t) * result_size)); if (!result) return xpath_string(); // make the number! char_t* s = result; // sign if (value < 0) *s++ = '-'; // integer part if (exponent <= 0) { *s++ = '0'; } else { while (exponent > 0) { assert(*mantissa == 0 || static_cast(*mantissa - '0') <= 9); *s++ = *mantissa ? *mantissa++ : '0'; exponent--; } } // fractional part if (*mantissa) { // decimal point *s++ = '.'; // extra zeroes from negative exponent while (exponent < 0) { *s++ = '0'; exponent++; } // extra mantissa digits while (*mantissa) { assert(static_cast(*mantissa - '0') <= 9); *s++ = *mantissa++; } } // zero-terminate assert(s < result + result_size); *s = 0; return xpath_string::from_heap_preallocated(result, s); } PUGI_IMPL_FN bool check_string_to_number_format(const char_t* string) { // parse leading whitespace while (PUGI_IMPL_IS_CHARTYPE(*string, ct_space)) ++string; // parse sign if (*string == '-') ++string; if (!*string) return false; // if there is no integer part, there should be a decimal part with at least one digit if (!PUGI_IMPL_IS_CHARTYPEX(string[0], ctx_digit) && (string[0] != '.' || !PUGI_IMPL_IS_CHARTYPEX(string[1], ctx_digit))) return false; // parse integer part while (PUGI_IMPL_IS_CHARTYPEX(*string, ctx_digit)) ++string; // parse decimal part if (*string == '.') { ++string; while (PUGI_IMPL_IS_CHARTYPEX(*string, ctx_digit)) ++string; } // parse trailing whitespace while (PUGI_IMPL_IS_CHARTYPE(*string, ct_space)) ++string; return *string == 0; } PUGI_IMPL_FN double convert_string_to_number(const char_t* string) { // check string format if (!check_string_to_number_format(string)) return gen_nan(); // parse string #ifdef PUGIXML_WCHAR_MODE return wcstod(string, NULL); #else return strtod(string, NULL); #endif } PUGI_IMPL_FN bool convert_string_to_number_scratch(char_t (&buffer)[32], const char_t* begin, const char_t* end, double* out_result) { size_t length = static_cast(end - begin); char_t* scratch = buffer; if (length >= sizeof(buffer) / sizeof(buffer[0])) { // need to make dummy on-heap copy scratch = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); if (!scratch) return false; } // copy string to zero-terminated buffer and perform conversion memcpy(scratch, begin, length * sizeof(char_t)); scratch[length] = 0; *out_result = convert_string_to_number(scratch); // free dummy buffer if (scratch != buffer) xml_memory::deallocate(scratch); return true; } PUGI_IMPL_FN double round_nearest(double value) { return floor(value + 0.5); } PUGI_IMPL_FN double round_nearest_nzero(double value) { // same as round_nearest, but returns -0 for [-0.5, -0] // ceil is used to differentiate between +0 and -0 (we return -0 for [-0.5, -0] and +0 for +0) return (value >= -0.5 && value <= 0) ? ceil(value) : floor(value + 0.5); } PUGI_IMPL_FN const char_t* qualified_name(const xpath_node& node) { return node.attribute() ? node.attribute().name() : node.node().name(); } PUGI_IMPL_FN const char_t* local_name(const xpath_node& node) { const char_t* name = qualified_name(node); const char_t* p = find_char(name, ':'); return p ? p + 1 : name; } struct namespace_uri_predicate { const char_t* prefix; size_t prefix_length; namespace_uri_predicate(const char_t* name) { const char_t* pos = find_char(name, ':'); prefix = pos ? name : NULL; prefix_length = pos ? static_cast(pos - name) : 0; } bool operator()(xml_attribute a) const { const char_t* name = a.name(); if (!starts_with(name, PUGIXML_TEXT("xmlns"))) return false; return prefix ? name[5] == ':' && strequalrange(name + 6, prefix, prefix_length) : name[5] == 0; } }; PUGI_IMPL_FN const char_t* namespace_uri(xml_node node) { namespace_uri_predicate pred = node.name(); xml_node p = node; while (p) { xml_attribute a = p.find_attribute(pred); if (a) return a.value(); p = p.parent(); } return PUGIXML_TEXT(""); } PUGI_IMPL_FN const char_t* namespace_uri(xml_attribute attr, xml_node parent) { namespace_uri_predicate pred = attr.name(); // Default namespace does not apply to attributes if (!pred.prefix) return PUGIXML_TEXT(""); xml_node p = parent; while (p) { xml_attribute a = p.find_attribute(pred); if (a) return a.value(); p = p.parent(); } return PUGIXML_TEXT(""); } PUGI_IMPL_FN const char_t* namespace_uri(const xpath_node& node) { return node.attribute() ? namespace_uri(node.attribute(), node.parent()) : namespace_uri(node.node()); } PUGI_IMPL_FN char_t* normalize_space(char_t* buffer) { char_t* write = buffer; for (char_t* it = buffer; *it; ) { char_t ch = *it++; if (PUGI_IMPL_IS_CHARTYPE(ch, ct_space)) { // replace whitespace sequence with single space while (PUGI_IMPL_IS_CHARTYPE(*it, ct_space)) it++; // avoid leading spaces if (write != buffer) *write++ = ' '; } else *write++ = ch; } // remove trailing space if (write != buffer && PUGI_IMPL_IS_CHARTYPE(write[-1], ct_space)) write--; // zero-terminate *write = 0; return write; } PUGI_IMPL_FN char_t* translate(char_t* buffer, const char_t* from, const char_t* to, size_t to_length) { char_t* write = buffer; while (*buffer) { PUGI_IMPL_DMC_VOLATILE char_t ch = *buffer++; const char_t* pos = find_char(from, ch); if (!pos) *write++ = ch; // do not process else if (static_cast(pos - from) < to_length) *write++ = to[pos - from]; // replace } // zero-terminate *write = 0; return write; } PUGI_IMPL_FN unsigned char* translate_table_generate(xpath_allocator* alloc, const char_t* from, const char_t* to) { unsigned char table[128] = {0}; while (*from) { unsigned int fc = static_cast(*from); unsigned int tc = static_cast(*to); if (fc >= 128 || tc >= 128) return NULL; // code=128 means "skip character" if (!table[fc]) table[fc] = static_cast(tc ? tc : 128); from++; if (tc) to++; } for (int i = 0; i < 128; ++i) if (!table[i]) table[i] = static_cast(i); void* result = alloc->allocate(sizeof(table)); if (!result) return NULL; memcpy(result, table, sizeof(table)); return static_cast(result); } PUGI_IMPL_FN char_t* translate_table(char_t* buffer, const unsigned char* table) { char_t* write = buffer; while (*buffer) { char_t ch = *buffer++; unsigned int index = static_cast(ch); if (index < 128) { unsigned char code = table[index]; // code=128 means "skip character" (table size is 128 so 128 can be a special value) // this code skips these characters without extra branches *write = static_cast(code); write += 1 - (code >> 7); } else { *write++ = ch; } } // zero-terminate *write = 0; return write; } inline bool is_xpath_attribute(const char_t* name) { return !(starts_with(name, PUGIXML_TEXT("xmlns")) && (name[5] == 0 || name[5] == ':')); } struct xpath_variable_boolean: xpath_variable { xpath_variable_boolean(): xpath_variable(xpath_type_boolean), value(false) { } bool value; char_t name[1]; }; struct xpath_variable_number: xpath_variable { xpath_variable_number(): xpath_variable(xpath_type_number), value(0) { } double value; char_t name[1]; }; struct xpath_variable_string: xpath_variable { xpath_variable_string(): xpath_variable(xpath_type_string), value(NULL) { } ~xpath_variable_string() { if (value) xml_memory::deallocate(value); } char_t* value; char_t name[1]; }; struct xpath_variable_node_set: xpath_variable { xpath_variable_node_set(): xpath_variable(xpath_type_node_set) { } xpath_node_set value; char_t name[1]; }; static const xpath_node_set dummy_node_set; PUGI_IMPL_FN PUGI_IMPL_UNSIGNED_OVERFLOW unsigned int hash_string(const char_t* str) { // Jenkins one-at-a-time hash (http://en.wikipedia.org/wiki/Jenkins_hash_function#one-at-a-time) unsigned int result = 0; while (*str) { result += static_cast(*str++); result += result << 10; result ^= result >> 6; } result += result << 3; result ^= result >> 11; result += result << 15; return result; } template PUGI_IMPL_FN T* new_xpath_variable(const char_t* name) { size_t length = strlength(name); if (length == 0) return NULL; // empty variable names are invalid // $$ we can't use offsetof(T, name) because T is non-POD, so we just allocate additional length characters void* memory = xml_memory::allocate(sizeof(T) + length * sizeof(char_t)); if (!memory) return NULL; T* result = new (memory) T(); memcpy(result->name, name, (length + 1) * sizeof(char_t)); return result; } PUGI_IMPL_FN xpath_variable* new_xpath_variable(xpath_value_type type, const char_t* name) { switch (type) { case xpath_type_node_set: return new_xpath_variable(name); case xpath_type_number: return new_xpath_variable(name); case xpath_type_string: return new_xpath_variable(name); case xpath_type_boolean: return new_xpath_variable(name); default: return NULL; } } template PUGI_IMPL_FN void delete_xpath_variable(T* var) { var->~T(); xml_memory::deallocate(var); } PUGI_IMPL_FN void delete_xpath_variable(xpath_value_type type, xpath_variable* var) { switch (type) { case xpath_type_node_set: delete_xpath_variable(static_cast(var)); break; case xpath_type_number: delete_xpath_variable(static_cast(var)); break; case xpath_type_string: delete_xpath_variable(static_cast(var)); break; case xpath_type_boolean: delete_xpath_variable(static_cast(var)); break; default: assert(false && "Invalid variable type"); // unreachable } } PUGI_IMPL_FN bool copy_xpath_variable(xpath_variable* lhs, const xpath_variable* rhs) { switch (rhs->type()) { case xpath_type_node_set: return lhs->set(static_cast(rhs)->value); case xpath_type_number: return lhs->set(static_cast(rhs)->value); case xpath_type_string: return lhs->set(static_cast(rhs)->value); case xpath_type_boolean: return lhs->set(static_cast(rhs)->value); default: assert(false && "Invalid variable type"); // unreachable return false; } } PUGI_IMPL_FN bool get_variable_scratch(char_t (&buffer)[32], xpath_variable_set* set, const char_t* begin, const char_t* end, xpath_variable** out_result) { size_t length = static_cast(end - begin); char_t* scratch = buffer; if (length >= sizeof(buffer) / sizeof(buffer[0])) { // need to make dummy on-heap copy scratch = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); if (!scratch) return false; } // copy string to zero-terminated buffer and perform lookup memcpy(scratch, begin, length * sizeof(char_t)); scratch[length] = 0; *out_result = set->get(scratch); // free dummy buffer if (scratch != buffer) xml_memory::deallocate(scratch); return true; } PUGI_IMPL_NS_END // Internal node set class PUGI_IMPL_NS_BEGIN PUGI_IMPL_FN xpath_node_set::type_t xpath_get_order(const xpath_node* begin, const xpath_node* end) { if (end - begin < 2) return xpath_node_set::type_sorted; document_order_comparator cmp; bool first = cmp(begin[0], begin[1]); for (const xpath_node* it = begin + 1; it + 1 < end; ++it) if (cmp(it[0], it[1]) != first) return xpath_node_set::type_unsorted; return first ? xpath_node_set::type_sorted : xpath_node_set::type_sorted_reverse; } PUGI_IMPL_FN xpath_node_set::type_t xpath_sort(xpath_node* begin, xpath_node* end, xpath_node_set::type_t type, bool rev) { xpath_node_set::type_t order = rev ? xpath_node_set::type_sorted_reverse : xpath_node_set::type_sorted; if (type == xpath_node_set::type_unsorted) { xpath_node_set::type_t sorted = xpath_get_order(begin, end); if (sorted == xpath_node_set::type_unsorted) { sort(begin, end, document_order_comparator()); type = xpath_node_set::type_sorted; } else type = sorted; } if (type != order) reverse(begin, end); return order; } PUGI_IMPL_FN xpath_node xpath_first(const xpath_node* begin, const xpath_node* end, xpath_node_set::type_t type) { if (begin == end) return xpath_node(); switch (type) { case xpath_node_set::type_sorted: return *begin; case xpath_node_set::type_sorted_reverse: return *(end - 1); case xpath_node_set::type_unsorted: return *min_element(begin, end, document_order_comparator()); default: assert(false && "Invalid node set type"); // unreachable return xpath_node(); } } class xpath_node_set_raw { xpath_node_set::type_t _type; xpath_node* _begin; xpath_node* _end; xpath_node* _eos; public: xpath_node_set_raw(): _type(xpath_node_set::type_unsorted), _begin(NULL), _end(NULL), _eos(NULL) { } xpath_node* begin() const { return _begin; } xpath_node* end() const { return _end; } bool empty() const { return _begin == _end; } size_t size() const { return static_cast(_end - _begin); } xpath_node first() const { return xpath_first(_begin, _end, _type); } void push_back_grow(const xpath_node& node, xpath_allocator* alloc); void push_back(const xpath_node& node, xpath_allocator* alloc) { if (_end != _eos) *_end++ = node; else push_back_grow(node, alloc); } void append(const xpath_node* begin_, const xpath_node* end_, xpath_allocator* alloc) { if (begin_ == end_) return; size_t size_ = static_cast(_end - _begin); size_t capacity = static_cast(_eos - _begin); size_t count = static_cast(end_ - begin_); if (size_ + count > capacity) { // reallocate the old array or allocate a new one xpath_node* data = static_cast(alloc->reallocate(_begin, capacity * sizeof(xpath_node), (size_ + count) * sizeof(xpath_node))); if (!data) return; // finalize _begin = data; _end = data + size_; _eos = data + size_ + count; } memcpy(_end, begin_, count * sizeof(xpath_node)); _end += count; } void sort_do() { _type = xpath_sort(_begin, _end, _type, false); } void truncate(xpath_node* pos) { assert(_begin <= pos && pos <= _end); _end = pos; } void remove_duplicates(xpath_allocator* alloc) { if (_type == xpath_node_set::type_unsorted && _end - _begin > 2) { xpath_allocator_capture cr(alloc); size_t size_ = static_cast(_end - _begin); size_t hash_size = 1; while (hash_size < size_ + size_ / 2) hash_size *= 2; const void** hash_data = static_cast(alloc->allocate(hash_size * sizeof(void**))); if (!hash_data) return; memset(hash_data, 0, hash_size * sizeof(const void**)); xpath_node* write = _begin; for (xpath_node* it = _begin; it != _end; ++it) { const void* attr = it->attribute().internal_object(); const void* node = it->node().internal_object(); const void* key = attr ? attr : node; if (key && hash_insert(hash_data, hash_size, key)) { *write++ = *it; } } _end = write; } else { _end = unique(_begin, _end); } } xpath_node_set::type_t type() const { return _type; } void set_type(xpath_node_set::type_t value) { _type = value; } }; PUGI_IMPL_FN_NO_INLINE void xpath_node_set_raw::push_back_grow(const xpath_node& node, xpath_allocator* alloc) { size_t capacity = static_cast(_eos - _begin); // get new capacity (1.5x rule) size_t new_capacity = capacity + capacity / 2 + 1; // reallocate the old array or allocate a new one xpath_node* data = static_cast(alloc->reallocate(_begin, capacity * sizeof(xpath_node), new_capacity * sizeof(xpath_node))); if (!data) return; // finalize _begin = data; _end = data + capacity; _eos = data + new_capacity; // push *_end++ = node; } PUGI_IMPL_NS_END PUGI_IMPL_NS_BEGIN struct xpath_context { xpath_node n; size_t position, size; xpath_context(const xpath_node& n_, size_t position_, size_t size_): n(n_), position(position_), size(size_) { } }; enum lexeme_t { lex_none = 0, lex_equal, lex_not_equal, lex_less, lex_greater, lex_less_or_equal, lex_greater_or_equal, lex_plus, lex_minus, lex_multiply, lex_union, lex_var_ref, lex_open_brace, lex_close_brace, lex_quoted_string, lex_number, lex_slash, lex_double_slash, lex_open_square_brace, lex_close_square_brace, lex_string, lex_comma, lex_axis_attribute, lex_dot, lex_double_dot, lex_double_colon, lex_eof }; struct xpath_lexer_string { const char_t* begin; const char_t* end; xpath_lexer_string(): begin(NULL), end(NULL) { } bool operator==(const char_t* other) const { size_t length = static_cast(end - begin); return strequalrange(other, begin, length); } }; class xpath_lexer { const char_t* _cur; const char_t* _cur_lexeme_pos; xpath_lexer_string _cur_lexeme_contents; lexeme_t _cur_lexeme; public: explicit xpath_lexer(const char_t* query): _cur(query) { next(); } const char_t* state() const { return _cur; } void next() { const char_t* cur = _cur; while (PUGI_IMPL_IS_CHARTYPE(*cur, ct_space)) ++cur; // save lexeme position for error reporting _cur_lexeme_pos = cur; switch (*cur) { case 0: _cur_lexeme = lex_eof; break; case '>': if (*(cur+1) == '=') { cur += 2; _cur_lexeme = lex_greater_or_equal; } else { cur += 1; _cur_lexeme = lex_greater; } break; case '<': if (*(cur+1) == '=') { cur += 2; _cur_lexeme = lex_less_or_equal; } else { cur += 1; _cur_lexeme = lex_less; } break; case '!': if (*(cur+1) == '=') { cur += 2; _cur_lexeme = lex_not_equal; } else { _cur_lexeme = lex_none; } break; case '=': cur += 1; _cur_lexeme = lex_equal; break; case '+': cur += 1; _cur_lexeme = lex_plus; break; case '-': cur += 1; _cur_lexeme = lex_minus; break; case '*': cur += 1; _cur_lexeme = lex_multiply; break; case '|': cur += 1; _cur_lexeme = lex_union; break; case '$': cur += 1; if (PUGI_IMPL_IS_CHARTYPEX(*cur, ctx_start_symbol)) { _cur_lexeme_contents.begin = cur; while (PUGI_IMPL_IS_CHARTYPEX(*cur, ctx_symbol)) cur++; if (cur[0] == ':' && PUGI_IMPL_IS_CHARTYPEX(cur[1], ctx_symbol)) // qname { cur++; // : while (PUGI_IMPL_IS_CHARTYPEX(*cur, ctx_symbol)) cur++; } _cur_lexeme_contents.end = cur; _cur_lexeme = lex_var_ref; } else { _cur_lexeme = lex_none; } break; case '(': cur += 1; _cur_lexeme = lex_open_brace; break; case ')': cur += 1; _cur_lexeme = lex_close_brace; break; case '[': cur += 1; _cur_lexeme = lex_open_square_brace; break; case ']': cur += 1; _cur_lexeme = lex_close_square_brace; break; case ',': cur += 1; _cur_lexeme = lex_comma; break; case '/': if (*(cur+1) == '/') { cur += 2; _cur_lexeme = lex_double_slash; } else { cur += 1; _cur_lexeme = lex_slash; } break; case '.': if (*(cur+1) == '.') { cur += 2; _cur_lexeme = lex_double_dot; } else if (PUGI_IMPL_IS_CHARTYPEX(*(cur+1), ctx_digit)) { _cur_lexeme_contents.begin = cur; // . ++cur; while (PUGI_IMPL_IS_CHARTYPEX(*cur, ctx_digit)) cur++; _cur_lexeme_contents.end = cur; _cur_lexeme = lex_number; } else { cur += 1; _cur_lexeme = lex_dot; } break; case '@': cur += 1; _cur_lexeme = lex_axis_attribute; break; case '"': case '\'': { char_t terminator = *cur; ++cur; _cur_lexeme_contents.begin = cur; while (*cur && *cur != terminator) cur++; _cur_lexeme_contents.end = cur; if (!*cur) _cur_lexeme = lex_none; else { cur += 1; _cur_lexeme = lex_quoted_string; } break; } case ':': if (*(cur+1) == ':') { cur += 2; _cur_lexeme = lex_double_colon; } else { _cur_lexeme = lex_none; } break; default: if (PUGI_IMPL_IS_CHARTYPEX(*cur, ctx_digit)) { _cur_lexeme_contents.begin = cur; while (PUGI_IMPL_IS_CHARTYPEX(*cur, ctx_digit)) cur++; if (*cur == '.') { cur++; while (PUGI_IMPL_IS_CHARTYPEX(*cur, ctx_digit)) cur++; } _cur_lexeme_contents.end = cur; _cur_lexeme = lex_number; } else if (PUGI_IMPL_IS_CHARTYPEX(*cur, ctx_start_symbol)) { _cur_lexeme_contents.begin = cur; while (PUGI_IMPL_IS_CHARTYPEX(*cur, ctx_symbol)) cur++; if (cur[0] == ':') { if (cur[1] == '*') // namespace test ncname:* { cur += 2; // :* } else if (PUGI_IMPL_IS_CHARTYPEX(cur[1], ctx_symbol)) // namespace test qname { cur++; // : while (PUGI_IMPL_IS_CHARTYPEX(*cur, ctx_symbol)) cur++; } } _cur_lexeme_contents.end = cur; _cur_lexeme = lex_string; } else { _cur_lexeme = lex_none; } } _cur = cur; } lexeme_t current() const { return _cur_lexeme; } const char_t* current_pos() const { return _cur_lexeme_pos; } const xpath_lexer_string& contents() const { assert(_cur_lexeme == lex_var_ref || _cur_lexeme == lex_number || _cur_lexeme == lex_string || _cur_lexeme == lex_quoted_string); return _cur_lexeme_contents; } }; enum ast_type_t { ast_unknown, ast_op_or, // left or right ast_op_and, // left and right ast_op_equal, // left = right ast_op_not_equal, // left != right ast_op_less, // left < right ast_op_greater, // left > right ast_op_less_or_equal, // left <= right ast_op_greater_or_equal, // left >= right ast_op_add, // left + right ast_op_subtract, // left - right ast_op_multiply, // left * right ast_op_divide, // left / right ast_op_mod, // left % right ast_op_negate, // left - right ast_op_union, // left | right ast_predicate, // apply predicate to set; next points to next predicate ast_filter, // select * from left where right ast_string_constant, // string constant ast_number_constant, // number constant ast_variable, // variable ast_func_last, // last() ast_func_position, // position() ast_func_count, // count(left) ast_func_id, // id(left) ast_func_local_name_0, // local-name() ast_func_local_name_1, // local-name(left) ast_func_namespace_uri_0, // namespace-uri() ast_func_namespace_uri_1, // namespace-uri(left) ast_func_name_0, // name() ast_func_name_1, // name(left) ast_func_string_0, // string() ast_func_string_1, // string(left) ast_func_concat, // concat(left, right, siblings) ast_func_starts_with, // starts_with(left, right) ast_func_contains, // contains(left, right) ast_func_substring_before, // substring-before(left, right) ast_func_substring_after, // substring-after(left, right) ast_func_substring_2, // substring(left, right) ast_func_substring_3, // substring(left, right, third) ast_func_string_length_0, // string-length() ast_func_string_length_1, // string-length(left) ast_func_normalize_space_0, // normalize-space() ast_func_normalize_space_1, // normalize-space(left) ast_func_translate, // translate(left, right, third) ast_func_boolean, // boolean(left) ast_func_not, // not(left) ast_func_true, // true() ast_func_false, // false() ast_func_lang, // lang(left) ast_func_number_0, // number() ast_func_number_1, // number(left) ast_func_sum, // sum(left) ast_func_floor, // floor(left) ast_func_ceiling, // ceiling(left) ast_func_round, // round(left) ast_step, // process set left with step ast_step_root, // select root node ast_opt_translate_table, // translate(left, right, third) where right/third are constants ast_opt_compare_attribute // @name = 'string' }; enum axis_t { axis_ancestor, axis_ancestor_or_self, axis_attribute, axis_child, axis_descendant, axis_descendant_or_self, axis_following, axis_following_sibling, axis_namespace, axis_parent, axis_preceding, axis_preceding_sibling, axis_self }; enum nodetest_t { nodetest_none, nodetest_name, nodetest_type_node, nodetest_type_comment, nodetest_type_pi, nodetest_type_text, nodetest_pi, nodetest_all, nodetest_all_in_namespace }; enum predicate_t { predicate_default, predicate_posinv, predicate_constant, predicate_constant_one }; enum nodeset_eval_t { nodeset_eval_all, nodeset_eval_any, nodeset_eval_first }; template struct axis_to_type { static const axis_t axis; }; template const axis_t axis_to_type::axis = N; class xpath_ast_node { private: // node type char _type; char _rettype; // for ast_step char _axis; // for ast_step/ast_predicate/ast_filter char _test; // tree node structure xpath_ast_node* _left; xpath_ast_node* _right; xpath_ast_node* _next; union { // value for ast_string_constant const char_t* string; // value for ast_number_constant double number; // variable for ast_variable xpath_variable* variable; // node test for ast_step (node name/namespace/node type/pi target) const char_t* nodetest; // table for ast_opt_translate_table const unsigned char* table; } _data; xpath_ast_node(const xpath_ast_node&); xpath_ast_node& operator=(const xpath_ast_node&); template static bool compare_eq(xpath_ast_node* lhs, xpath_ast_node* rhs, const xpath_context& c, const xpath_stack& stack, const Comp& comp) { xpath_value_type lt = lhs->rettype(), rt = rhs->rettype(); if (lt != xpath_type_node_set && rt != xpath_type_node_set) { if (lt == xpath_type_boolean || rt == xpath_type_boolean) return comp(lhs->eval_boolean(c, stack), rhs->eval_boolean(c, stack)); else if (lt == xpath_type_number || rt == xpath_type_number) return comp(lhs->eval_number(c, stack), rhs->eval_number(c, stack)); else if (lt == xpath_type_string || rt == xpath_type_string) { xpath_allocator_capture cr(stack.result); xpath_string ls = lhs->eval_string(c, stack); xpath_string rs = rhs->eval_string(c, stack); return comp(ls, rs); } } else if (lt == xpath_type_node_set && rt == xpath_type_node_set) { xpath_allocator_capture cr(stack.result); xpath_node_set_raw ls = lhs->eval_node_set(c, stack, nodeset_eval_all); xpath_node_set_raw rs = rhs->eval_node_set(c, stack, nodeset_eval_all); for (const xpath_node* li = ls.begin(); li != ls.end(); ++li) for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) { xpath_allocator_capture cri(stack.result); if (comp(string_value(*li, stack.result), string_value(*ri, stack.result))) return true; } return false; } else { if (lt == xpath_type_node_set) { swap(lhs, rhs); swap(lt, rt); } if (lt == xpath_type_boolean) return comp(lhs->eval_boolean(c, stack), rhs->eval_boolean(c, stack)); else if (lt == xpath_type_number) { xpath_allocator_capture cr(stack.result); double l = lhs->eval_number(c, stack); xpath_node_set_raw rs = rhs->eval_node_set(c, stack, nodeset_eval_all); for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) { xpath_allocator_capture cri(stack.result); if (comp(l, convert_string_to_number(string_value(*ri, stack.result).c_str()))) return true; } return false; } else if (lt == xpath_type_string) { xpath_allocator_capture cr(stack.result); xpath_string l = lhs->eval_string(c, stack); xpath_node_set_raw rs = rhs->eval_node_set(c, stack, nodeset_eval_all); for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) { xpath_allocator_capture cri(stack.result); if (comp(l, string_value(*ri, stack.result))) return true; } return false; } } assert(false && "Wrong types"); // unreachable return false; } static bool eval_once(xpath_node_set::type_t type, nodeset_eval_t eval) { return type == xpath_node_set::type_sorted ? eval != nodeset_eval_all : eval == nodeset_eval_any; } template static bool compare_rel(xpath_ast_node* lhs, xpath_ast_node* rhs, const xpath_context& c, const xpath_stack& stack, const Comp& comp) { xpath_value_type lt = lhs->rettype(), rt = rhs->rettype(); if (lt != xpath_type_node_set && rt != xpath_type_node_set) return comp(lhs->eval_number(c, stack), rhs->eval_number(c, stack)); else if (lt == xpath_type_node_set && rt == xpath_type_node_set) { xpath_allocator_capture cr(stack.result); xpath_node_set_raw ls = lhs->eval_node_set(c, stack, nodeset_eval_all); xpath_node_set_raw rs = rhs->eval_node_set(c, stack, nodeset_eval_all); for (const xpath_node* li = ls.begin(); li != ls.end(); ++li) { xpath_allocator_capture cri(stack.result); double l = convert_string_to_number(string_value(*li, stack.result).c_str()); for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) { xpath_allocator_capture crii(stack.result); if (comp(l, convert_string_to_number(string_value(*ri, stack.result).c_str()))) return true; } } return false; } else if (lt != xpath_type_node_set && rt == xpath_type_node_set) { xpath_allocator_capture cr(stack.result); double l = lhs->eval_number(c, stack); xpath_node_set_raw rs = rhs->eval_node_set(c, stack, nodeset_eval_all); for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) { xpath_allocator_capture cri(stack.result); if (comp(l, convert_string_to_number(string_value(*ri, stack.result).c_str()))) return true; } return false; } else if (lt == xpath_type_node_set && rt != xpath_type_node_set) { xpath_allocator_capture cr(stack.result); xpath_node_set_raw ls = lhs->eval_node_set(c, stack, nodeset_eval_all); double r = rhs->eval_number(c, stack); for (const xpath_node* li = ls.begin(); li != ls.end(); ++li) { xpath_allocator_capture cri(stack.result); if (comp(convert_string_to_number(string_value(*li, stack.result).c_str()), r)) return true; } return false; } else { assert(false && "Wrong types"); // unreachable return false; } } static void apply_predicate_boolean(xpath_node_set_raw& ns, size_t first, xpath_ast_node* expr, const xpath_stack& stack, bool once) { assert(ns.size() >= first); assert(expr->rettype() != xpath_type_number); size_t i = 1; size_t size = ns.size() - first; xpath_node* last = ns.begin() + first; // remove_if... or well, sort of for (xpath_node* it = last; it != ns.end(); ++it, ++i) { xpath_context c(*it, i, size); if (expr->eval_boolean(c, stack)) { *last++ = *it; if (once) break; } } ns.truncate(last); } static void apply_predicate_number(xpath_node_set_raw& ns, size_t first, xpath_ast_node* expr, const xpath_stack& stack, bool once) { assert(ns.size() >= first); assert(expr->rettype() == xpath_type_number); size_t i = 1; size_t size = ns.size() - first; xpath_node* last = ns.begin() + first; // remove_if... or well, sort of for (xpath_node* it = last; it != ns.end(); ++it, ++i) { xpath_context c(*it, i, size); if (expr->eval_number(c, stack) == static_cast(i)) { *last++ = *it; if (once) break; } } ns.truncate(last); } static void apply_predicate_number_const(xpath_node_set_raw& ns, size_t first, xpath_ast_node* expr, const xpath_stack& stack) { assert(ns.size() >= first); assert(expr->rettype() == xpath_type_number); size_t size = ns.size() - first; xpath_node* last = ns.begin() + first; xpath_node cn; xpath_context c(cn, 1, size); double er = expr->eval_number(c, stack); if (er >= 1.0 && er <= static_cast(size)) { size_t eri = static_cast(er); if (er == static_cast(eri)) { xpath_node r = last[eri - 1]; *last++ = r; } } ns.truncate(last); } void apply_predicate(xpath_node_set_raw& ns, size_t first, const xpath_stack& stack, bool once) { if (ns.size() == first) return; assert(_type == ast_filter || _type == ast_predicate); if (_test == predicate_constant || _test == predicate_constant_one) apply_predicate_number_const(ns, first, _right, stack); else if (_right->rettype() == xpath_type_number) apply_predicate_number(ns, first, _right, stack, once); else apply_predicate_boolean(ns, first, _right, stack, once); } void apply_predicates(xpath_node_set_raw& ns, size_t first, const xpath_stack& stack, nodeset_eval_t eval) { if (ns.size() == first) return; bool last_once = eval_once(ns.type(), eval); for (xpath_ast_node* pred = _right; pred; pred = pred->_next) pred->apply_predicate(ns, first, stack, !pred->_next && last_once); } bool step_push(xpath_node_set_raw& ns, xml_attribute_struct* a, xml_node_struct* parent, xpath_allocator* alloc) { assert(a); const char_t* name = a->name ? a->name + 0 : PUGIXML_TEXT(""); switch (_test) { case nodetest_name: if (strequal(name, _data.nodetest) && is_xpath_attribute(name)) { ns.push_back(xpath_node(xml_attribute(a), xml_node(parent)), alloc); return true; } break; case nodetest_type_node: case nodetest_all: if (is_xpath_attribute(name)) { ns.push_back(xpath_node(xml_attribute(a), xml_node(parent)), alloc); return true; } break; case nodetest_all_in_namespace: if (starts_with(name, _data.nodetest) && is_xpath_attribute(name)) { ns.push_back(xpath_node(xml_attribute(a), xml_node(parent)), alloc); return true; } break; default: ; } return false; } bool step_push(xpath_node_set_raw& ns, xml_node_struct* n, xpath_allocator* alloc) { assert(n); xml_node_type type = PUGI_IMPL_NODETYPE(n); switch (_test) { case nodetest_name: if (type == node_element && n->name && strequal(n->name, _data.nodetest)) { ns.push_back(xml_node(n), alloc); return true; } break; case nodetest_type_node: ns.push_back(xml_node(n), alloc); return true; case nodetest_type_comment: if (type == node_comment) { ns.push_back(xml_node(n), alloc); return true; } break; case nodetest_type_text: if (type == node_pcdata || type == node_cdata) { ns.push_back(xml_node(n), alloc); return true; } break; case nodetest_type_pi: if (type == node_pi) { ns.push_back(xml_node(n), alloc); return true; } break; case nodetest_pi: if (type == node_pi && n->name && strequal(n->name, _data.nodetest)) { ns.push_back(xml_node(n), alloc); return true; } break; case nodetest_all: if (type == node_element) { ns.push_back(xml_node(n), alloc); return true; } break; case nodetest_all_in_namespace: if (type == node_element && n->name && starts_with(n->name, _data.nodetest)) { ns.push_back(xml_node(n), alloc); return true; } break; default: assert(false && "Unknown axis"); // unreachable } return false; } template void step_fill(xpath_node_set_raw& ns, xml_node_struct* n, xpath_allocator* alloc, bool once, T) { const axis_t axis = T::axis; switch (axis) { case axis_attribute: { for (xml_attribute_struct* a = n->first_attribute; a; a = a->next_attribute) if (step_push(ns, a, n, alloc) & once) return; break; } case axis_child: { for (xml_node_struct* c = n->first_child; c; c = c->next_sibling) if (step_push(ns, c, alloc) & once) return; break; } case axis_descendant: case axis_descendant_or_self: { if (axis == axis_descendant_or_self) if (step_push(ns, n, alloc) & once) return; xml_node_struct* cur = n->first_child; while (cur) { if (step_push(ns, cur, alloc) & once) return; if (cur->first_child) cur = cur->first_child; else { while (!cur->next_sibling) { cur = cur->parent; if (cur == n) return; } cur = cur->next_sibling; } } break; } case axis_following_sibling: { for (xml_node_struct* c = n->next_sibling; c; c = c->next_sibling) if (step_push(ns, c, alloc) & once) return; break; } case axis_preceding_sibling: { for (xml_node_struct* c = n->prev_sibling_c; c->next_sibling; c = c->prev_sibling_c) if (step_push(ns, c, alloc) & once) return; break; } case axis_following: { xml_node_struct* cur = n; // exit from this node so that we don't include descendants while (!cur->next_sibling) { cur = cur->parent; if (!cur) return; } cur = cur->next_sibling; while (cur) { if (step_push(ns, cur, alloc) & once) return; if (cur->first_child) cur = cur->first_child; else { while (!cur->next_sibling) { cur = cur->parent; if (!cur) return; } cur = cur->next_sibling; } } break; } case axis_preceding: { xml_node_struct* cur = n; // exit from this node so that we don't include descendants while (!cur->prev_sibling_c->next_sibling) { cur = cur->parent; if (!cur) return; } cur = cur->prev_sibling_c; while (cur) { if (cur->first_child) cur = cur->first_child->prev_sibling_c; else { // leaf node, can't be ancestor if (step_push(ns, cur, alloc) & once) return; while (!cur->prev_sibling_c->next_sibling) { cur = cur->parent; if (!cur) return; if (!node_is_ancestor(cur, n)) if (step_push(ns, cur, alloc) & once) return; } cur = cur->prev_sibling_c; } } break; } case axis_ancestor: case axis_ancestor_or_self: { if (axis == axis_ancestor_or_self) if (step_push(ns, n, alloc) & once) return; xml_node_struct* cur = n->parent; while (cur) { if (step_push(ns, cur, alloc) & once) return; cur = cur->parent; } break; } case axis_self: { step_push(ns, n, alloc); break; } case axis_parent: { if (n->parent) step_push(ns, n->parent, alloc); break; } default: assert(false && "Unimplemented axis"); // unreachable } } template void step_fill(xpath_node_set_raw& ns, xml_attribute_struct* a, xml_node_struct* p, xpath_allocator* alloc, bool once, T v) { const axis_t axis = T::axis; switch (axis) { case axis_ancestor: case axis_ancestor_or_self: { if (axis == axis_ancestor_or_self && _test == nodetest_type_node) // reject attributes based on principal node type test if (step_push(ns, a, p, alloc) & once) return; xml_node_struct* cur = p; while (cur) { if (step_push(ns, cur, alloc) & once) return; cur = cur->parent; } break; } case axis_descendant_or_self: case axis_self: { if (_test == nodetest_type_node) // reject attributes based on principal node type test step_push(ns, a, p, alloc); break; } case axis_following: { xml_node_struct* cur = p; while (cur) { if (cur->first_child) cur = cur->first_child; else { while (!cur->next_sibling) { cur = cur->parent; if (!cur) return; } cur = cur->next_sibling; } if (step_push(ns, cur, alloc) & once) return; } break; } case axis_parent: { step_push(ns, p, alloc); break; } case axis_preceding: { // preceding:: axis does not include attribute nodes and attribute ancestors (they are the same as parent's ancestors), so we can reuse node preceding step_fill(ns, p, alloc, once, v); break; } default: assert(false && "Unimplemented axis"); // unreachable } } template void step_fill(xpath_node_set_raw& ns, const xpath_node& xn, xpath_allocator* alloc, bool once, T v) { const axis_t axis = T::axis; const bool axis_has_attributes = (axis == axis_ancestor || axis == axis_ancestor_or_self || axis == axis_descendant_or_self || axis == axis_following || axis == axis_parent || axis == axis_preceding || axis == axis_self); if (xn.node()) step_fill(ns, xn.node().internal_object(), alloc, once, v); else if (axis_has_attributes && xn.attribute() && xn.parent()) step_fill(ns, xn.attribute().internal_object(), xn.parent().internal_object(), alloc, once, v); } template xpath_node_set_raw step_do(const xpath_context& c, const xpath_stack& stack, nodeset_eval_t eval, T v) { const axis_t axis = T::axis; const bool axis_reverse = (axis == axis_ancestor || axis == axis_ancestor_or_self || axis == axis_preceding || axis == axis_preceding_sibling); const xpath_node_set::type_t axis_type = axis_reverse ? xpath_node_set::type_sorted_reverse : xpath_node_set::type_sorted; bool once = (axis == axis_attribute && _test == nodetest_name) || (!_right && eval_once(axis_type, eval)) || // coverity[mixed_enums] (_right && !_right->_next && _right->_test == predicate_constant_one); xpath_node_set_raw ns; ns.set_type(axis_type); if (_left) { xpath_node_set_raw s = _left->eval_node_set(c, stack, nodeset_eval_all); // self axis preserves the original order if (axis == axis_self) ns.set_type(s.type()); for (const xpath_node* it = s.begin(); it != s.end(); ++it) { size_t size = ns.size(); // in general, all axes generate elements in a particular order, but there is no order guarantee if axis is applied to two nodes if (axis != axis_self && size != 0) ns.set_type(xpath_node_set::type_unsorted); step_fill(ns, *it, stack.result, once, v); if (_right) apply_predicates(ns, size, stack, eval); } } else { step_fill(ns, c.n, stack.result, once, v); if (_right) apply_predicates(ns, 0, stack, eval); } // child, attribute and self axes always generate unique set of nodes // for other axis, if the set stayed sorted, it stayed unique because the traversal algorithms do not visit the same node twice if (axis != axis_child && axis != axis_attribute && axis != axis_self && ns.type() == xpath_node_set::type_unsorted) ns.remove_duplicates(stack.temp); return ns; } public: xpath_ast_node(ast_type_t type, xpath_value_type rettype_, const char_t* value): _type(static_cast(type)), _rettype(static_cast(rettype_)), _axis(0), _test(0), _left(NULL), _right(NULL), _next(NULL) { assert(type == ast_string_constant); _data.string = value; } xpath_ast_node(ast_type_t type, xpath_value_type rettype_, double value): _type(static_cast(type)), _rettype(static_cast(rettype_)), _axis(0), _test(0), _left(NULL), _right(NULL), _next(NULL) { assert(type == ast_number_constant); _data.number = value; } xpath_ast_node(ast_type_t type, xpath_value_type rettype_, xpath_variable* value): _type(static_cast(type)), _rettype(static_cast(rettype_)), _axis(0), _test(0), _left(NULL), _right(NULL), _next(NULL) { assert(type == ast_variable); _data.variable = value; } xpath_ast_node(ast_type_t type, xpath_value_type rettype_, xpath_ast_node* left = NULL, xpath_ast_node* right = NULL): _type(static_cast(type)), _rettype(static_cast(rettype_)), _axis(0), _test(0), _left(left), _right(right), _next(NULL) { } xpath_ast_node(ast_type_t type, xpath_ast_node* left, axis_t axis, nodetest_t test, const char_t* contents): _type(static_cast(type)), _rettype(xpath_type_node_set), _axis(static_cast(axis)), _test(static_cast(test)), _left(left), _right(NULL), _next(NULL) { assert(type == ast_step); _data.nodetest = contents; } xpath_ast_node(ast_type_t type, xpath_ast_node* left, xpath_ast_node* right, predicate_t test): _type(static_cast(type)), _rettype(xpath_type_node_set), _axis(0), _test(static_cast(test)), _left(left), _right(right), _next(NULL) { assert(type == ast_filter || type == ast_predicate); } void set_next(xpath_ast_node* value) { _next = value; } void set_right(xpath_ast_node* value) { _right = value; } bool eval_boolean(const xpath_context& c, const xpath_stack& stack) { switch (_type) { case ast_op_or: return _left->eval_boolean(c, stack) || _right->eval_boolean(c, stack); case ast_op_and: return _left->eval_boolean(c, stack) && _right->eval_boolean(c, stack); case ast_op_equal: return compare_eq(_left, _right, c, stack, equal_to()); case ast_op_not_equal: return compare_eq(_left, _right, c, stack, not_equal_to()); case ast_op_less: return compare_rel(_left, _right, c, stack, less()); case ast_op_greater: return compare_rel(_right, _left, c, stack, less()); case ast_op_less_or_equal: return compare_rel(_left, _right, c, stack, less_equal()); case ast_op_greater_or_equal: return compare_rel(_right, _left, c, stack, less_equal()); case ast_func_starts_with: { xpath_allocator_capture cr(stack.result); xpath_string lr = _left->eval_string(c, stack); xpath_string rr = _right->eval_string(c, stack); return starts_with(lr.c_str(), rr.c_str()); } case ast_func_contains: { xpath_allocator_capture cr(stack.result); xpath_string lr = _left->eval_string(c, stack); xpath_string rr = _right->eval_string(c, stack); return find_substring(lr.c_str(), rr.c_str()) != NULL; } case ast_func_boolean: return _left->eval_boolean(c, stack); case ast_func_not: return !_left->eval_boolean(c, stack); case ast_func_true: return true; case ast_func_false: return false; case ast_func_lang: { if (c.n.attribute()) return false; xpath_allocator_capture cr(stack.result); xpath_string lang = _left->eval_string(c, stack); for (xml_node n = c.n.node(); n; n = n.parent()) { xml_attribute a = n.attribute(PUGIXML_TEXT("xml:lang")); if (a) { const char_t* value = a.value(); // strnicmp / strncasecmp is not portable for (const char_t* lit = lang.c_str(); *lit; ++lit) { if (tolower_ascii(*lit) != tolower_ascii(*value)) return false; ++value; } return *value == 0 || *value == '-'; } } return false; } case ast_opt_compare_attribute: { const char_t* value = (_right->_type == ast_string_constant) ? _right->_data.string : _right->_data.variable->get_string(); xml_attribute attr = c.n.node().attribute(_left->_data.nodetest); return attr && strequal(attr.value(), value) && is_xpath_attribute(attr.name()); } case ast_variable: { assert(_rettype == _data.variable->type()); if (_rettype == xpath_type_boolean) return _data.variable->get_boolean(); // variable needs to be converted to the correct type, this is handled by the fallthrough block below break; } default: ; } // none of the ast types that return the value directly matched, we need to perform type conversion switch (_rettype) { case xpath_type_number: return convert_number_to_boolean(eval_number(c, stack)); case xpath_type_string: { xpath_allocator_capture cr(stack.result); return !eval_string(c, stack).empty(); } case xpath_type_node_set: { xpath_allocator_capture cr(stack.result); return !eval_node_set(c, stack, nodeset_eval_any).empty(); } default: assert(false && "Wrong expression for return type boolean"); // unreachable return false; } } double eval_number(const xpath_context& c, const xpath_stack& stack) { switch (_type) { case ast_op_add: return _left->eval_number(c, stack) + _right->eval_number(c, stack); case ast_op_subtract: return _left->eval_number(c, stack) - _right->eval_number(c, stack); case ast_op_multiply: return _left->eval_number(c, stack) * _right->eval_number(c, stack); case ast_op_divide: return _left->eval_number(c, stack) / _right->eval_number(c, stack); case ast_op_mod: return fmod(_left->eval_number(c, stack), _right->eval_number(c, stack)); case ast_op_negate: return -_left->eval_number(c, stack); case ast_number_constant: return _data.number; case ast_func_last: return static_cast(c.size); case ast_func_position: return static_cast(c.position); case ast_func_count: { xpath_allocator_capture cr(stack.result); return static_cast(_left->eval_node_set(c, stack, nodeset_eval_all).size()); } case ast_func_string_length_0: { xpath_allocator_capture cr(stack.result); return static_cast(string_value(c.n, stack.result).length()); } case ast_func_string_length_1: { xpath_allocator_capture cr(stack.result); return static_cast(_left->eval_string(c, stack).length()); } case ast_func_number_0: { xpath_allocator_capture cr(stack.result); return convert_string_to_number(string_value(c.n, stack.result).c_str()); } case ast_func_number_1: return _left->eval_number(c, stack); case ast_func_sum: { xpath_allocator_capture cr(stack.result); double r = 0; xpath_node_set_raw ns = _left->eval_node_set(c, stack, nodeset_eval_all); for (const xpath_node* it = ns.begin(); it != ns.end(); ++it) { xpath_allocator_capture cri(stack.result); r += convert_string_to_number(string_value(*it, stack.result).c_str()); } return r; } case ast_func_floor: { double r = _left->eval_number(c, stack); return r == r ? floor(r) : r; } case ast_func_ceiling: { double r = _left->eval_number(c, stack); return r == r ? ceil(r) : r; } case ast_func_round: return round_nearest_nzero(_left->eval_number(c, stack)); case ast_variable: { assert(_rettype == _data.variable->type()); if (_rettype == xpath_type_number) return _data.variable->get_number(); // variable needs to be converted to the correct type, this is handled by the fallthrough block below break; } default: ; } // none of the ast types that return the value directly matched, we need to perform type conversion switch (_rettype) { case xpath_type_boolean: return eval_boolean(c, stack) ? 1 : 0; case xpath_type_string: { xpath_allocator_capture cr(stack.result); return convert_string_to_number(eval_string(c, stack).c_str()); } case xpath_type_node_set: { xpath_allocator_capture cr(stack.result); return convert_string_to_number(eval_string(c, stack).c_str()); } default: assert(false && "Wrong expression for return type number"); // unreachable return 0; } } xpath_string eval_string_concat(const xpath_context& c, const xpath_stack& stack) { assert(_type == ast_func_concat); xpath_allocator_capture ct(stack.temp); // count the string number size_t count = 1; for (xpath_ast_node* nc = _right; nc; nc = nc->_next) count++; // allocate a buffer for temporary string objects xpath_string* buffer = static_cast(stack.temp->allocate(count * sizeof(xpath_string))); if (!buffer) return xpath_string(); // evaluate all strings to temporary stack xpath_stack swapped_stack = {stack.temp, stack.result}; buffer[0] = _left->eval_string(c, swapped_stack); size_t pos = 1; for (xpath_ast_node* n = _right; n; n = n->_next, ++pos) buffer[pos] = n->eval_string(c, swapped_stack); assert(pos == count); // get total length size_t length = 0; for (size_t i = 0; i < count; ++i) length += buffer[i].length(); // create final string char_t* result = static_cast(stack.result->allocate((length + 1) * sizeof(char_t))); if (!result) return xpath_string(); char_t* ri = result; for (size_t j = 0; j < count; ++j) for (const char_t* bi = buffer[j].c_str(); *bi; ++bi) *ri++ = *bi; *ri = 0; return xpath_string::from_heap_preallocated(result, ri); } xpath_string eval_string(const xpath_context& c, const xpath_stack& stack) { switch (_type) { case ast_string_constant: return xpath_string::from_const(_data.string); case ast_func_local_name_0: { xpath_node na = c.n; return xpath_string::from_const(local_name(na)); } case ast_func_local_name_1: { xpath_allocator_capture cr(stack.result); xpath_node_set_raw ns = _left->eval_node_set(c, stack, nodeset_eval_first); xpath_node na = ns.first(); return xpath_string::from_const(local_name(na)); } case ast_func_name_0: { xpath_node na = c.n; return xpath_string::from_const(qualified_name(na)); } case ast_func_name_1: { xpath_allocator_capture cr(stack.result); xpath_node_set_raw ns = _left->eval_node_set(c, stack, nodeset_eval_first); xpath_node na = ns.first(); return xpath_string::from_const(qualified_name(na)); } case ast_func_namespace_uri_0: { xpath_node na = c.n; return xpath_string::from_const(namespace_uri(na)); } case ast_func_namespace_uri_1: { xpath_allocator_capture cr(stack.result); xpath_node_set_raw ns = _left->eval_node_set(c, stack, nodeset_eval_first); xpath_node na = ns.first(); return xpath_string::from_const(namespace_uri(na)); } case ast_func_string_0: return string_value(c.n, stack.result); case ast_func_string_1: return _left->eval_string(c, stack); case ast_func_concat: return eval_string_concat(c, stack); case ast_func_substring_before: { xpath_allocator_capture cr(stack.temp); xpath_stack swapped_stack = {stack.temp, stack.result}; xpath_string s = _left->eval_string(c, swapped_stack); xpath_string p = _right->eval_string(c, swapped_stack); const char_t* pos = find_substring(s.c_str(), p.c_str()); return pos ? xpath_string::from_heap(s.c_str(), pos, stack.result) : xpath_string(); } case ast_func_substring_after: { xpath_allocator_capture cr(stack.temp); xpath_stack swapped_stack = {stack.temp, stack.result}; xpath_string s = _left->eval_string(c, swapped_stack); xpath_string p = _right->eval_string(c, swapped_stack); const char_t* pos = find_substring(s.c_str(), p.c_str()); if (!pos) return xpath_string(); const char_t* rbegin = pos + p.length(); const char_t* rend = s.c_str() + s.length(); return s.uses_heap() ? xpath_string::from_heap(rbegin, rend, stack.result) : xpath_string::from_const(rbegin); } case ast_func_substring_2: { xpath_allocator_capture cr(stack.temp); xpath_stack swapped_stack = {stack.temp, stack.result}; xpath_string s = _left->eval_string(c, swapped_stack); size_t s_length = s.length(); double first = round_nearest(_right->eval_number(c, stack)); if (is_nan(first)) return xpath_string(); // NaN else if (first >= static_cast(s_length + 1)) return xpath_string(); size_t pos = first < 1 ? 1 : static_cast(first); assert(1 <= pos && pos <= s_length + 1); const char_t* rbegin = s.c_str() + (pos - 1); const char_t* rend = s.c_str() + s.length(); return s.uses_heap() ? xpath_string::from_heap(rbegin, rend, stack.result) : xpath_string::from_const(rbegin); } case ast_func_substring_3: { xpath_allocator_capture cr(stack.temp); xpath_stack swapped_stack = {stack.temp, stack.result}; xpath_string s = _left->eval_string(c, swapped_stack); size_t s_length = s.length(); double first = round_nearest(_right->eval_number(c, stack)); double last = first + round_nearest(_right->_next->eval_number(c, stack)); if (is_nan(first) || is_nan(last)) return xpath_string(); else if (first >= static_cast(s_length + 1)) return xpath_string(); else if (first >= last) return xpath_string(); else if (last < 1) return xpath_string(); size_t pos = first < 1 ? 1 : static_cast(first); size_t end = last >= static_cast(s_length + 1) ? s_length + 1 : static_cast(last); assert(1 <= pos && pos <= end && end <= s_length + 1); const char_t* rbegin = s.c_str() + (pos - 1); const char_t* rend = s.c_str() + (end - 1); return (end == s_length + 1 && !s.uses_heap()) ? xpath_string::from_const(rbegin) : xpath_string::from_heap(rbegin, rend, stack.result); } case ast_func_normalize_space_0: { xpath_string s = string_value(c.n, stack.result); char_t* begin = s.data(stack.result); if (!begin) return xpath_string(); char_t* end = normalize_space(begin); return xpath_string::from_heap_preallocated(begin, end); } case ast_func_normalize_space_1: { xpath_string s = _left->eval_string(c, stack); char_t* begin = s.data(stack.result); if (!begin) return xpath_string(); char_t* end = normalize_space(begin); return xpath_string::from_heap_preallocated(begin, end); } case ast_func_translate: { xpath_allocator_capture cr(stack.temp); xpath_stack swapped_stack = {stack.temp, stack.result}; xpath_string s = _left->eval_string(c, stack); xpath_string from = _right->eval_string(c, swapped_stack); xpath_string to = _right->_next->eval_string(c, swapped_stack); char_t* begin = s.data(stack.result); if (!begin) return xpath_string(); char_t* end = translate(begin, from.c_str(), to.c_str(), to.length()); return xpath_string::from_heap_preallocated(begin, end); } case ast_opt_translate_table: { xpath_string s = _left->eval_string(c, stack); char_t* begin = s.data(stack.result); if (!begin) return xpath_string(); char_t* end = translate_table(begin, _data.table); return xpath_string::from_heap_preallocated(begin, end); } case ast_variable: { assert(_rettype == _data.variable->type()); if (_rettype == xpath_type_string) return xpath_string::from_const(_data.variable->get_string()); // variable needs to be converted to the correct type, this is handled by the fallthrough block below break; } default: ; } // none of the ast types that return the value directly matched, we need to perform type conversion switch (_rettype) { case xpath_type_boolean: return xpath_string::from_const(eval_boolean(c, stack) ? PUGIXML_TEXT("true") : PUGIXML_TEXT("false")); case xpath_type_number: return convert_number_to_string(eval_number(c, stack), stack.result); case xpath_type_node_set: { xpath_allocator_capture cr(stack.temp); xpath_stack swapped_stack = {stack.temp, stack.result}; xpath_node_set_raw ns = eval_node_set(c, swapped_stack, nodeset_eval_first); return ns.empty() ? xpath_string() : string_value(ns.first(), stack.result); } default: assert(false && "Wrong expression for return type string"); // unreachable return xpath_string(); } } xpath_node_set_raw eval_node_set(const xpath_context& c, const xpath_stack& stack, nodeset_eval_t eval) { switch (_type) { case ast_op_union: { xpath_allocator_capture cr(stack.temp); xpath_stack swapped_stack = {stack.temp, stack.result}; xpath_node_set_raw ls = _left->eval_node_set(c, stack, eval); xpath_node_set_raw rs = _right->eval_node_set(c, swapped_stack, eval); // we can optimize merging two sorted sets, but this is a very rare operation, so don't bother ls.set_type(xpath_node_set::type_unsorted); ls.append(rs.begin(), rs.end(), stack.result); ls.remove_duplicates(stack.temp); return ls; } case ast_filter: { xpath_node_set_raw set = _left->eval_node_set(c, stack, _test == predicate_constant_one ? nodeset_eval_first : nodeset_eval_all); // either expression is a number or it contains position() call; sort by document order if (_test != predicate_posinv) set.sort_do(); bool once = eval_once(set.type(), eval); apply_predicate(set, 0, stack, once); return set; } case ast_func_id: return xpath_node_set_raw(); case ast_step: { switch (_axis) { case axis_ancestor: return step_do(c, stack, eval, axis_to_type()); case axis_ancestor_or_self: return step_do(c, stack, eval, axis_to_type()); case axis_attribute: return step_do(c, stack, eval, axis_to_type()); case axis_child: return step_do(c, stack, eval, axis_to_type()); case axis_descendant: return step_do(c, stack, eval, axis_to_type()); case axis_descendant_or_self: return step_do(c, stack, eval, axis_to_type()); case axis_following: return step_do(c, stack, eval, axis_to_type()); case axis_following_sibling: return step_do(c, stack, eval, axis_to_type()); case axis_namespace: // namespaced axis is not supported return xpath_node_set_raw(); case axis_parent: return step_do(c, stack, eval, axis_to_type()); case axis_preceding: return step_do(c, stack, eval, axis_to_type()); case axis_preceding_sibling: return step_do(c, stack, eval, axis_to_type()); case axis_self: return step_do(c, stack, eval, axis_to_type()); default: assert(false && "Unknown axis"); // unreachable return xpath_node_set_raw(); } } case ast_step_root: { assert(!_right); // root step can't have any predicates xpath_node_set_raw ns; ns.set_type(xpath_node_set::type_sorted); if (c.n.node()) ns.push_back(c.n.node().root(), stack.result); else if (c.n.attribute()) ns.push_back(c.n.parent().root(), stack.result); return ns; } case ast_variable: { assert(_rettype == _data.variable->type()); if (_rettype == xpath_type_node_set) { const xpath_node_set& s = _data.variable->get_node_set(); xpath_node_set_raw ns; ns.set_type(s.type()); ns.append(s.begin(), s.end(), stack.result); return ns; } // variable needs to be converted to the correct type, this is handled by the fallthrough block below break; } default: ; } // none of the ast types that return the value directly matched, but conversions to node set are invalid assert(false && "Wrong expression for return type node set"); // unreachable return xpath_node_set_raw(); } void optimize(xpath_allocator* alloc) { if (_left) _left->optimize(alloc); if (_right) _right->optimize(alloc); if (_next) _next->optimize(alloc); // coverity[var_deref_model] optimize_self(alloc); } void optimize_self(xpath_allocator* alloc) { // Rewrite [position()=expr] with [expr] // Note that this step has to go before classification to recognize [position()=1] if ((_type == ast_filter || _type == ast_predicate) && _right && // workaround for clang static analyzer (_right is never null for ast_filter/ast_predicate) _right->_type == ast_op_equal && _right->_left->_type == ast_func_position && _right->_right->_rettype == xpath_type_number) { _right = _right->_right; } // Classify filter/predicate ops to perform various optimizations during evaluation if ((_type == ast_filter || _type == ast_predicate) && _right) // workaround for clang static analyzer (_right is never null for ast_filter/ast_predicate) { assert(_test == predicate_default); if (_right->_type == ast_number_constant && _right->_data.number == 1.0) _test = predicate_constant_one; else if (_right->_rettype == xpath_type_number && (_right->_type == ast_number_constant || _right->_type == ast_variable || _right->_type == ast_func_last)) _test = predicate_constant; else if (_right->_rettype != xpath_type_number && _right->is_posinv_expr()) _test = predicate_posinv; } // Rewrite descendant-or-self::node()/child::foo with descendant::foo // The former is a full form of //foo, the latter is much faster since it executes the node test immediately // Do a similar kind of rewrite for self/descendant/descendant-or-self axes // Note that we only rewrite positionally invariant steps (//foo[1] != /descendant::foo[1]) if (_type == ast_step && (_axis == axis_child || _axis == axis_self || _axis == axis_descendant || _axis == axis_descendant_or_self) && _left && _left->_type == ast_step && _left->_axis == axis_descendant_or_self && _left->_test == nodetest_type_node && !_left->_right && is_posinv_step()) { if (_axis == axis_child || _axis == axis_descendant) _axis = axis_descendant; else _axis = axis_descendant_or_self; _left = _left->_left; } // Use optimized lookup table implementation for translate() with constant arguments if (_type == ast_func_translate && _right && // workaround for clang static analyzer (_right is never null for ast_func_translate) _right->_type == ast_string_constant && _right->_next->_type == ast_string_constant) { unsigned char* table = translate_table_generate(alloc, _right->_data.string, _right->_next->_data.string); if (table) { _type = ast_opt_translate_table; _data.table = table; } } // Use optimized path for @attr = 'value' or @attr = $value if (_type == ast_op_equal && _left && _right && // workaround for clang static analyzer and Coverity (_left and _right are never null for ast_op_equal) // coverity[mixed_enums] _left->_type == ast_step && _left->_axis == axis_attribute && _left->_test == nodetest_name && !_left->_left && !_left->_right && (_right->_type == ast_string_constant || (_right->_type == ast_variable && _right->_rettype == xpath_type_string))) { _type = ast_opt_compare_attribute; } } bool is_posinv_expr() const { switch (_type) { case ast_func_position: case ast_func_last: return false; case ast_string_constant: case ast_number_constant: case ast_variable: return true; case ast_step: case ast_step_root: return true; case ast_predicate: case ast_filter: return true; default: if (_left && !_left->is_posinv_expr()) return false; for (xpath_ast_node* n = _right; n; n = n->_next) if (!n->is_posinv_expr()) return false; return true; } } bool is_posinv_step() const { assert(_type == ast_step); for (xpath_ast_node* n = _right; n; n = n->_next) { assert(n->_type == ast_predicate); if (n->_test != predicate_posinv) return false; } return true; } xpath_value_type rettype() const { return static_cast(_rettype); } }; static const size_t xpath_ast_depth_limit = #ifdef PUGIXML_XPATH_DEPTH_LIMIT PUGIXML_XPATH_DEPTH_LIMIT #else 1024 #endif ; struct xpath_parser { xpath_allocator* _alloc; xpath_lexer _lexer; const char_t* _query; xpath_variable_set* _variables; xpath_parse_result* _result; char_t _scratch[32]; size_t _depth; xpath_ast_node* error(const char* message) { _result->error = message; _result->offset = _lexer.current_pos() - _query; return NULL; } xpath_ast_node* error_oom() { assert(_alloc->_error); *_alloc->_error = true; return NULL; } xpath_ast_node* error_rec() { return error("Exceeded maximum allowed query depth"); } void* alloc_node() { return _alloc->allocate(sizeof(xpath_ast_node)); } xpath_ast_node* alloc_node(ast_type_t type, xpath_value_type rettype, const char_t* value) { void* memory = alloc_node(); return memory ? new (memory) xpath_ast_node(type, rettype, value) : NULL; } xpath_ast_node* alloc_node(ast_type_t type, xpath_value_type rettype, double value) { void* memory = alloc_node(); return memory ? new (memory) xpath_ast_node(type, rettype, value) : NULL; } xpath_ast_node* alloc_node(ast_type_t type, xpath_value_type rettype, xpath_variable* value) { void* memory = alloc_node(); return memory ? new (memory) xpath_ast_node(type, rettype, value) : NULL; } xpath_ast_node* alloc_node(ast_type_t type, xpath_value_type rettype, xpath_ast_node* left = NULL, xpath_ast_node* right = NULL) { void* memory = alloc_node(); return memory ? new (memory) xpath_ast_node(type, rettype, left, right) : NULL; } xpath_ast_node* alloc_node(ast_type_t type, xpath_ast_node* left, axis_t axis, nodetest_t test, const char_t* contents) { void* memory = alloc_node(); return memory ? new (memory) xpath_ast_node(type, left, axis, test, contents) : NULL; } xpath_ast_node* alloc_node(ast_type_t type, xpath_ast_node* left, xpath_ast_node* right, predicate_t test) { void* memory = alloc_node(); return memory ? new (memory) xpath_ast_node(type, left, right, test) : NULL; } const char_t* alloc_string(const xpath_lexer_string& value) { if (!value.begin) return PUGIXML_TEXT(""); size_t length = static_cast(value.end - value.begin); char_t* c = static_cast(_alloc->allocate((length + 1) * sizeof(char_t))); if (!c) return NULL; memcpy(c, value.begin, length * sizeof(char_t)); c[length] = 0; return c; } xpath_ast_node* parse_function(const xpath_lexer_string& name, size_t argc, xpath_ast_node* args[2]) { switch (name.begin[0]) { case 'b': if (name == PUGIXML_TEXT("boolean") && argc == 1) return alloc_node(ast_func_boolean, xpath_type_boolean, args[0]); break; case 'c': if (name == PUGIXML_TEXT("count") && argc == 1) { if (args[0]->rettype() != xpath_type_node_set) return error("Function has to be applied to node set"); return alloc_node(ast_func_count, xpath_type_number, args[0]); } else if (name == PUGIXML_TEXT("contains") && argc == 2) return alloc_node(ast_func_contains, xpath_type_boolean, args[0], args[1]); else if (name == PUGIXML_TEXT("concat") && argc >= 2) return alloc_node(ast_func_concat, xpath_type_string, args[0], args[1]); else if (name == PUGIXML_TEXT("ceiling") && argc == 1) return alloc_node(ast_func_ceiling, xpath_type_number, args[0]); break; case 'f': if (name == PUGIXML_TEXT("false") && argc == 0) return alloc_node(ast_func_false, xpath_type_boolean); else if (name == PUGIXML_TEXT("floor") && argc == 1) return alloc_node(ast_func_floor, xpath_type_number, args[0]); break; case 'i': if (name == PUGIXML_TEXT("id") && argc == 1) return alloc_node(ast_func_id, xpath_type_node_set, args[0]); break; case 'l': if (name == PUGIXML_TEXT("last") && argc == 0) return alloc_node(ast_func_last, xpath_type_number); else if (name == PUGIXML_TEXT("lang") && argc == 1) return alloc_node(ast_func_lang, xpath_type_boolean, args[0]); else if (name == PUGIXML_TEXT("local-name") && argc <= 1) { if (argc == 1 && args[0]->rettype() != xpath_type_node_set) return error("Function has to be applied to node set"); return alloc_node(argc == 0 ? ast_func_local_name_0 : ast_func_local_name_1, xpath_type_string, args[0]); } break; case 'n': if (name == PUGIXML_TEXT("name") && argc <= 1) { if (argc == 1 && args[0]->rettype() != xpath_type_node_set) return error("Function has to be applied to node set"); return alloc_node(argc == 0 ? ast_func_name_0 : ast_func_name_1, xpath_type_string, args[0]); } else if (name == PUGIXML_TEXT("namespace-uri") && argc <= 1) { if (argc == 1 && args[0]->rettype() != xpath_type_node_set) return error("Function has to be applied to node set"); return alloc_node(argc == 0 ? ast_func_namespace_uri_0 : ast_func_namespace_uri_1, xpath_type_string, args[0]); } else if (name == PUGIXML_TEXT("normalize-space") && argc <= 1) return alloc_node(argc == 0 ? ast_func_normalize_space_0 : ast_func_normalize_space_1, xpath_type_string, args[0], args[1]); else if (name == PUGIXML_TEXT("not") && argc == 1) return alloc_node(ast_func_not, xpath_type_boolean, args[0]); else if (name == PUGIXML_TEXT("number") && argc <= 1) return alloc_node(argc == 0 ? ast_func_number_0 : ast_func_number_1, xpath_type_number, args[0]); break; case 'p': if (name == PUGIXML_TEXT("position") && argc == 0) return alloc_node(ast_func_position, xpath_type_number); break; case 'r': if (name == PUGIXML_TEXT("round") && argc == 1) return alloc_node(ast_func_round, xpath_type_number, args[0]); break; case 's': if (name == PUGIXML_TEXT("string") && argc <= 1) return alloc_node(argc == 0 ? ast_func_string_0 : ast_func_string_1, xpath_type_string, args[0]); else if (name == PUGIXML_TEXT("string-length") && argc <= 1) return alloc_node(argc == 0 ? ast_func_string_length_0 : ast_func_string_length_1, xpath_type_number, args[0]); else if (name == PUGIXML_TEXT("starts-with") && argc == 2) return alloc_node(ast_func_starts_with, xpath_type_boolean, args[0], args[1]); else if (name == PUGIXML_TEXT("substring-before") && argc == 2) return alloc_node(ast_func_substring_before, xpath_type_string, args[0], args[1]); else if (name == PUGIXML_TEXT("substring-after") && argc == 2) return alloc_node(ast_func_substring_after, xpath_type_string, args[0], args[1]); else if (name == PUGIXML_TEXT("substring") && (argc == 2 || argc == 3)) return alloc_node(argc == 2 ? ast_func_substring_2 : ast_func_substring_3, xpath_type_string, args[0], args[1]); else if (name == PUGIXML_TEXT("sum") && argc == 1) { if (args[0]->rettype() != xpath_type_node_set) return error("Function has to be applied to node set"); return alloc_node(ast_func_sum, xpath_type_number, args[0]); } break; case 't': if (name == PUGIXML_TEXT("translate") && argc == 3) return alloc_node(ast_func_translate, xpath_type_string, args[0], args[1]); else if (name == PUGIXML_TEXT("true") && argc == 0) return alloc_node(ast_func_true, xpath_type_boolean); break; default: break; } return error("Unrecognized function or wrong parameter count"); } axis_t parse_axis_name(const xpath_lexer_string& name, bool& specified) { specified = true; switch (name.begin[0]) { case 'a': if (name == PUGIXML_TEXT("ancestor")) return axis_ancestor; else if (name == PUGIXML_TEXT("ancestor-or-self")) return axis_ancestor_or_self; else if (name == PUGIXML_TEXT("attribute")) return axis_attribute; break; case 'c': if (name == PUGIXML_TEXT("child")) return axis_child; break; case 'd': if (name == PUGIXML_TEXT("descendant")) return axis_descendant; else if (name == PUGIXML_TEXT("descendant-or-self")) return axis_descendant_or_self; break; case 'f': if (name == PUGIXML_TEXT("following")) return axis_following; else if (name == PUGIXML_TEXT("following-sibling")) return axis_following_sibling; break; case 'n': if (name == PUGIXML_TEXT("namespace")) return axis_namespace; break; case 'p': if (name == PUGIXML_TEXT("parent")) return axis_parent; else if (name == PUGIXML_TEXT("preceding")) return axis_preceding; else if (name == PUGIXML_TEXT("preceding-sibling")) return axis_preceding_sibling; break; case 's': if (name == PUGIXML_TEXT("self")) return axis_self; break; default: break; } specified = false; return axis_child; } nodetest_t parse_node_test_type(const xpath_lexer_string& name) { switch (name.begin[0]) { case 'c': if (name == PUGIXML_TEXT("comment")) return nodetest_type_comment; break; case 'n': if (name == PUGIXML_TEXT("node")) return nodetest_type_node; break; case 'p': if (name == PUGIXML_TEXT("processing-instruction")) return nodetest_type_pi; break; case 't': if (name == PUGIXML_TEXT("text")) return nodetest_type_text; break; default: break; } return nodetest_none; } // PrimaryExpr ::= VariableReference | '(' Expr ')' | Literal | Number | FunctionCall xpath_ast_node* parse_primary_expression() { switch (_lexer.current()) { case lex_var_ref: { xpath_lexer_string name = _lexer.contents(); if (!_variables) return error("Unknown variable: variable set is not provided"); xpath_variable* var = NULL; if (!get_variable_scratch(_scratch, _variables, name.begin, name.end, &var)) return error_oom(); if (!var) return error("Unknown variable: variable set does not contain the given name"); _lexer.next(); return alloc_node(ast_variable, var->type(), var); } case lex_open_brace: { _lexer.next(); xpath_ast_node* n = parse_expression(); if (!n) return NULL; if (_lexer.current() != lex_close_brace) return error("Expected ')' to match an opening '('"); _lexer.next(); return n; } case lex_quoted_string: { const char_t* value = alloc_string(_lexer.contents()); if (!value) return NULL; _lexer.next(); return alloc_node(ast_string_constant, xpath_type_string, value); } case lex_number: { double value = 0; if (!convert_string_to_number_scratch(_scratch, _lexer.contents().begin, _lexer.contents().end, &value)) return error_oom(); _lexer.next(); return alloc_node(ast_number_constant, xpath_type_number, value); } case lex_string: { xpath_ast_node* args[2] = {NULL}; size_t argc = 0; xpath_lexer_string function = _lexer.contents(); _lexer.next(); xpath_ast_node* last_arg = NULL; if (_lexer.current() != lex_open_brace) return error("Unrecognized function call"); _lexer.next(); size_t old_depth = _depth; while (_lexer.current() != lex_close_brace) { if (argc > 0) { if (_lexer.current() != lex_comma) return error("No comma between function arguments"); _lexer.next(); } if (++_depth > xpath_ast_depth_limit) return error_rec(); xpath_ast_node* n = parse_expression(); if (!n) return NULL; if (argc < 2) args[argc] = n; else last_arg->set_next(n); argc++; last_arg = n; } _lexer.next(); _depth = old_depth; return parse_function(function, argc, args); } default: return error("Unrecognizable primary expression"); } } // FilterExpr ::= PrimaryExpr | FilterExpr Predicate // Predicate ::= '[' PredicateExpr ']' // PredicateExpr ::= Expr xpath_ast_node* parse_filter_expression() { xpath_ast_node* n = parse_primary_expression(); if (!n) return NULL; size_t old_depth = _depth; while (_lexer.current() == lex_open_square_brace) { _lexer.next(); if (++_depth > xpath_ast_depth_limit) return error_rec(); if (n->rettype() != xpath_type_node_set) return error("Predicate has to be applied to node set"); xpath_ast_node* expr = parse_expression(); if (!expr) return NULL; n = alloc_node(ast_filter, n, expr, predicate_default); if (!n) return NULL; if (_lexer.current() != lex_close_square_brace) return error("Expected ']' to match an opening '['"); _lexer.next(); } _depth = old_depth; return n; } // Step ::= AxisSpecifier NodeTest Predicate* | AbbreviatedStep // AxisSpecifier ::= AxisName '::' | '@'? // NodeTest ::= NameTest | NodeType '(' ')' | 'processing-instruction' '(' Literal ')' // NameTest ::= '*' | NCName ':' '*' | QName // AbbreviatedStep ::= '.' | '..' xpath_ast_node* parse_step(xpath_ast_node* set) { if (set && set->rettype() != xpath_type_node_set) return error("Step has to be applied to node set"); bool axis_specified = false; axis_t axis = axis_child; // implied child axis if (_lexer.current() == lex_axis_attribute) { axis = axis_attribute; axis_specified = true; _lexer.next(); } else if (_lexer.current() == lex_dot) { _lexer.next(); if (_lexer.current() == lex_open_square_brace) return error("Predicates are not allowed after an abbreviated step"); return alloc_node(ast_step, set, axis_self, nodetest_type_node, NULL); } else if (_lexer.current() == lex_double_dot) { _lexer.next(); if (_lexer.current() == lex_open_square_brace) return error("Predicates are not allowed after an abbreviated step"); return alloc_node(ast_step, set, axis_parent, nodetest_type_node, NULL); } nodetest_t nt_type = nodetest_none; xpath_lexer_string nt_name; if (_lexer.current() == lex_string) { // node name test nt_name = _lexer.contents(); _lexer.next(); // was it an axis name? if (_lexer.current() == lex_double_colon) { // parse axis name if (axis_specified) return error("Two axis specifiers in one step"); axis = parse_axis_name(nt_name, axis_specified); if (!axis_specified) return error("Unknown axis"); // read actual node test _lexer.next(); if (_lexer.current() == lex_multiply) { nt_type = nodetest_all; nt_name = xpath_lexer_string(); _lexer.next(); } else if (_lexer.current() == lex_string) { nt_name = _lexer.contents(); _lexer.next(); } else { return error("Unrecognized node test"); } } if (nt_type == nodetest_none) { // node type test or processing-instruction if (_lexer.current() == lex_open_brace) { _lexer.next(); if (_lexer.current() == lex_close_brace) { _lexer.next(); nt_type = parse_node_test_type(nt_name); if (nt_type == nodetest_none) return error("Unrecognized node type"); nt_name = xpath_lexer_string(); } else if (nt_name == PUGIXML_TEXT("processing-instruction")) { if (_lexer.current() != lex_quoted_string) return error("Only literals are allowed as arguments to processing-instruction()"); nt_type = nodetest_pi; nt_name = _lexer.contents(); _lexer.next(); if (_lexer.current() != lex_close_brace) return error("Unmatched brace near processing-instruction()"); _lexer.next(); } else { return error("Unmatched brace near node type test"); } } // QName or NCName:* else { if (nt_name.end - nt_name.begin > 2 && nt_name.end[-2] == ':' && nt_name.end[-1] == '*') // NCName:* { nt_name.end--; // erase * nt_type = nodetest_all_in_namespace; } else { nt_type = nodetest_name; } } } } else if (_lexer.current() == lex_multiply) { nt_type = nodetest_all; _lexer.next(); } else { return error("Unrecognized node test"); } const char_t* nt_name_copy = alloc_string(nt_name); if (!nt_name_copy) return NULL; xpath_ast_node* n = alloc_node(ast_step, set, axis, nt_type, nt_name_copy); if (!n) return NULL; size_t old_depth = _depth; xpath_ast_node* last = NULL; while (_lexer.current() == lex_open_square_brace) { _lexer.next(); if (++_depth > xpath_ast_depth_limit) return error_rec(); xpath_ast_node* expr = parse_expression(); if (!expr) return NULL; xpath_ast_node* pred = alloc_node(ast_predicate, NULL, expr, predicate_default); if (!pred) return NULL; if (_lexer.current() != lex_close_square_brace) return error("Expected ']' to match an opening '['"); _lexer.next(); if (last) last->set_next(pred); else n->set_right(pred); last = pred; } _depth = old_depth; return n; } // RelativeLocationPath ::= Step | RelativeLocationPath '/' Step | RelativeLocationPath '//' Step xpath_ast_node* parse_relative_location_path(xpath_ast_node* set) { xpath_ast_node* n = parse_step(set); if (!n) return NULL; size_t old_depth = _depth; while (_lexer.current() == lex_slash || _lexer.current() == lex_double_slash) { lexeme_t l = _lexer.current(); _lexer.next(); if (l == lex_double_slash) { n = alloc_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, NULL); if (!n) return NULL; ++_depth; } if (++_depth > xpath_ast_depth_limit) return error_rec(); n = parse_step(n); if (!n) return NULL; } _depth = old_depth; return n; } // LocationPath ::= RelativeLocationPath | AbsoluteLocationPath // AbsoluteLocationPath ::= '/' RelativeLocationPath? | '//' RelativeLocationPath xpath_ast_node* parse_location_path() { if (_lexer.current() == lex_slash) { _lexer.next(); xpath_ast_node* n = alloc_node(ast_step_root, xpath_type_node_set); if (!n) return NULL; // relative location path can start from axis_attribute, dot, double_dot, multiply and string lexemes; any other lexeme means standalone root path lexeme_t l = _lexer.current(); if (l == lex_string || l == lex_axis_attribute || l == lex_dot || l == lex_double_dot || l == lex_multiply) return parse_relative_location_path(n); else return n; } else if (_lexer.current() == lex_double_slash) { _lexer.next(); xpath_ast_node* n = alloc_node(ast_step_root, xpath_type_node_set); if (!n) return NULL; n = alloc_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, NULL); if (!n) return NULL; return parse_relative_location_path(n); } // else clause moved outside of if because of bogus warning 'control may reach end of non-void function being inlined' in gcc 4.0.1 return parse_relative_location_path(NULL); } // PathExpr ::= LocationPath // | FilterExpr // | FilterExpr '/' RelativeLocationPath // | FilterExpr '//' RelativeLocationPath // UnionExpr ::= PathExpr | UnionExpr '|' PathExpr // UnaryExpr ::= UnionExpr | '-' UnaryExpr xpath_ast_node* parse_path_or_unary_expression() { // Clarification. // PathExpr begins with either LocationPath or FilterExpr. // FilterExpr begins with PrimaryExpr // PrimaryExpr begins with '$' in case of it being a variable reference, // '(' in case of it being an expression, string literal, number constant or // function call. if (_lexer.current() == lex_var_ref || _lexer.current() == lex_open_brace || _lexer.current() == lex_quoted_string || _lexer.current() == lex_number || _lexer.current() == lex_string) { if (_lexer.current() == lex_string) { // This is either a function call, or not - if not, we shall proceed with location path const char_t* state = _lexer.state(); while (PUGI_IMPL_IS_CHARTYPE(*state, ct_space)) ++state; if (*state != '(') return parse_location_path(); // This looks like a function call; however this still can be a node-test. Check it. if (parse_node_test_type(_lexer.contents()) != nodetest_none) return parse_location_path(); } xpath_ast_node* n = parse_filter_expression(); if (!n) return NULL; if (_lexer.current() == lex_slash || _lexer.current() == lex_double_slash) { lexeme_t l = _lexer.current(); _lexer.next(); if (l == lex_double_slash) { if (n->rettype() != xpath_type_node_set) return error("Step has to be applied to node set"); n = alloc_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, NULL); if (!n) return NULL; } // select from location path return parse_relative_location_path(n); } return n; } else if (_lexer.current() == lex_minus) { _lexer.next(); // precedence 7+ - only parses union expressions xpath_ast_node* n = parse_expression(7); if (!n) return NULL; return alloc_node(ast_op_negate, xpath_type_number, n); } else { return parse_location_path(); } } struct binary_op_t { ast_type_t asttype; xpath_value_type rettype; int precedence; binary_op_t(): asttype(ast_unknown), rettype(xpath_type_none), precedence(0) { } binary_op_t(ast_type_t asttype_, xpath_value_type rettype_, int precedence_): asttype(asttype_), rettype(rettype_), precedence(precedence_) { } static binary_op_t parse(xpath_lexer& lexer) { switch (lexer.current()) { case lex_string: if (lexer.contents() == PUGIXML_TEXT("or")) return binary_op_t(ast_op_or, xpath_type_boolean, 1); else if (lexer.contents() == PUGIXML_TEXT("and")) return binary_op_t(ast_op_and, xpath_type_boolean, 2); else if (lexer.contents() == PUGIXML_TEXT("div")) return binary_op_t(ast_op_divide, xpath_type_number, 6); else if (lexer.contents() == PUGIXML_TEXT("mod")) return binary_op_t(ast_op_mod, xpath_type_number, 6); else return binary_op_t(); case lex_equal: return binary_op_t(ast_op_equal, xpath_type_boolean, 3); case lex_not_equal: return binary_op_t(ast_op_not_equal, xpath_type_boolean, 3); case lex_less: return binary_op_t(ast_op_less, xpath_type_boolean, 4); case lex_greater: return binary_op_t(ast_op_greater, xpath_type_boolean, 4); case lex_less_or_equal: return binary_op_t(ast_op_less_or_equal, xpath_type_boolean, 4); case lex_greater_or_equal: return binary_op_t(ast_op_greater_or_equal, xpath_type_boolean, 4); case lex_plus: return binary_op_t(ast_op_add, xpath_type_number, 5); case lex_minus: return binary_op_t(ast_op_subtract, xpath_type_number, 5); case lex_multiply: return binary_op_t(ast_op_multiply, xpath_type_number, 6); case lex_union: return binary_op_t(ast_op_union, xpath_type_node_set, 7); default: return binary_op_t(); } } }; xpath_ast_node* parse_expression_rec(xpath_ast_node* lhs, int limit) { binary_op_t op = binary_op_t::parse(_lexer); while (op.asttype != ast_unknown && op.precedence >= limit) { _lexer.next(); if (++_depth > xpath_ast_depth_limit) return error_rec(); xpath_ast_node* rhs = parse_path_or_unary_expression(); if (!rhs) return NULL; binary_op_t nextop = binary_op_t::parse(_lexer); while (nextop.asttype != ast_unknown && nextop.precedence > op.precedence) { rhs = parse_expression_rec(rhs, nextop.precedence); if (!rhs) return NULL; nextop = binary_op_t::parse(_lexer); } if (op.asttype == ast_op_union && (lhs->rettype() != xpath_type_node_set || rhs->rettype() != xpath_type_node_set)) return error("Union operator has to be applied to node sets"); lhs = alloc_node(op.asttype, op.rettype, lhs, rhs); if (!lhs) return NULL; op = binary_op_t::parse(_lexer); } return lhs; } // Expr ::= OrExpr // OrExpr ::= AndExpr | OrExpr 'or' AndExpr // AndExpr ::= EqualityExpr | AndExpr 'and' EqualityExpr // EqualityExpr ::= RelationalExpr // | EqualityExpr '=' RelationalExpr // | EqualityExpr '!=' RelationalExpr // RelationalExpr ::= AdditiveExpr // | RelationalExpr '<' AdditiveExpr // | RelationalExpr '>' AdditiveExpr // | RelationalExpr '<=' AdditiveExpr // | RelationalExpr '>=' AdditiveExpr // AdditiveExpr ::= MultiplicativeExpr // | AdditiveExpr '+' MultiplicativeExpr // | AdditiveExpr '-' MultiplicativeExpr // MultiplicativeExpr ::= UnaryExpr // | MultiplicativeExpr '*' UnaryExpr // | MultiplicativeExpr 'div' UnaryExpr // | MultiplicativeExpr 'mod' UnaryExpr xpath_ast_node* parse_expression(int limit = 0) { size_t old_depth = _depth; if (++_depth > xpath_ast_depth_limit) return error_rec(); xpath_ast_node* n = parse_path_or_unary_expression(); if (!n) return NULL; n = parse_expression_rec(n, limit); _depth = old_depth; return n; } xpath_parser(const char_t* query, xpath_variable_set* variables, xpath_allocator* alloc, xpath_parse_result* result): _alloc(alloc), _lexer(query), _query(query), _variables(variables), _result(result), _depth(0) { } xpath_ast_node* parse() { xpath_ast_node* n = parse_expression(); if (!n) return NULL; assert(_depth == 0); // check if there are unparsed tokens left if (_lexer.current() != lex_eof) return error("Incorrect query"); return n; } static xpath_ast_node* parse(const char_t* query, xpath_variable_set* variables, xpath_allocator* alloc, xpath_parse_result* result) { xpath_parser parser(query, variables, alloc, result); return parser.parse(); } }; struct xpath_query_impl { static xpath_query_impl* create() { void* memory = xml_memory::allocate(sizeof(xpath_query_impl)); if (!memory) return NULL; return new (memory) xpath_query_impl(); } static void destroy(xpath_query_impl* impl) { // free all allocated pages impl->alloc.release(); // free allocator memory (with the first page) xml_memory::deallocate(impl); } xpath_query_impl(): root(NULL), alloc(&block, &oom), oom(false) { block.next = NULL; block.capacity = sizeof(block.data); } xpath_ast_node* root; xpath_allocator alloc; xpath_memory_block block; bool oom; }; PUGI_IMPL_FN impl::xpath_ast_node* evaluate_node_set_prepare(xpath_query_impl* impl) { if (!impl) return NULL; if (impl->root->rettype() != xpath_type_node_set) { #ifdef PUGIXML_NO_EXCEPTIONS return 0; #else xpath_parse_result res; res.error = "Expression does not evaluate to node set"; throw xpath_exception(res); #endif } return impl->root; } PUGI_IMPL_NS_END namespace pugi { #ifndef PUGIXML_NO_EXCEPTIONS PUGI_IMPL_FN xpath_exception::xpath_exception(const xpath_parse_result& result_): _result(result_) { assert(_result.error); } PUGI_IMPL_FN const char* xpath_exception::what() const PUGIXML_NOEXCEPT { return _result.error; } PUGI_IMPL_FN const xpath_parse_result& xpath_exception::result() const { return _result; } #endif PUGI_IMPL_FN xpath_node::xpath_node() { } PUGI_IMPL_FN xpath_node::xpath_node(const xml_node& node_): _node(node_) { } PUGI_IMPL_FN xpath_node::xpath_node(const xml_attribute& attribute_, const xml_node& parent_): _node(attribute_ ? parent_ : xml_node()), _attribute(attribute_) { } PUGI_IMPL_FN xml_node xpath_node::node() const { return _attribute ? xml_node() : _node; } PUGI_IMPL_FN xml_attribute xpath_node::attribute() const { return _attribute; } PUGI_IMPL_FN xml_node xpath_node::parent() const { return _attribute ? _node : _node.parent(); } PUGI_IMPL_FN static void unspecified_bool_xpath_node(xpath_node***) { } PUGI_IMPL_FN xpath_node::operator xpath_node::unspecified_bool_type() const { return (_node || _attribute) ? unspecified_bool_xpath_node : NULL; } PUGI_IMPL_FN bool xpath_node::operator!() const { return !(_node || _attribute); } PUGI_IMPL_FN bool xpath_node::operator==(const xpath_node& n) const { return _node == n._node && _attribute == n._attribute; } PUGI_IMPL_FN bool xpath_node::operator!=(const xpath_node& n) const { return _node != n._node || _attribute != n._attribute; } #ifdef __BORLANDC__ PUGI_IMPL_FN bool operator&&(const xpath_node& lhs, bool rhs) { return (bool)lhs && rhs; } PUGI_IMPL_FN bool operator||(const xpath_node& lhs, bool rhs) { return (bool)lhs || rhs; } #endif PUGI_IMPL_FN void xpath_node_set::_assign(const_iterator begin_, const_iterator end_, type_t type_) { assert(begin_ <= end_); size_t size_ = static_cast(end_ - begin_); // use internal buffer for 0 or 1 elements, heap buffer otherwise xpath_node* storage = (size_ <= 1) ? _storage : static_cast(impl::xml_memory::allocate(size_ * sizeof(xpath_node))); if (!storage) { #ifdef PUGIXML_NO_EXCEPTIONS return; #else throw std::bad_alloc(); #endif } // deallocate old buffer if (_begin != _storage) impl::xml_memory::deallocate(_begin); // size check is necessary because for begin_ = end_ = nullptr, memcpy is UB if (size_) memcpy(storage, begin_, size_ * sizeof(xpath_node)); _begin = storage; _end = storage + size_; _type = type_; } #ifdef PUGIXML_HAS_MOVE PUGI_IMPL_FN void xpath_node_set::_move(xpath_node_set& rhs) PUGIXML_NOEXCEPT { _type = rhs._type; _storage[0] = rhs._storage[0]; _begin = (rhs._begin == rhs._storage) ? _storage : rhs._begin; _end = _begin + (rhs._end - rhs._begin); rhs._type = type_unsorted; rhs._begin = rhs._storage; rhs._end = rhs._storage; } #endif PUGI_IMPL_FN xpath_node_set::xpath_node_set(): _type(type_unsorted), _begin(_storage), _end(_storage) { } PUGI_IMPL_FN xpath_node_set::xpath_node_set(const_iterator begin_, const_iterator end_, type_t type_): _type(type_unsorted), _begin(_storage), _end(_storage) { _assign(begin_, end_, type_); } PUGI_IMPL_FN xpath_node_set::~xpath_node_set() { if (_begin != _storage) impl::xml_memory::deallocate(_begin); } PUGI_IMPL_FN xpath_node_set::xpath_node_set(const xpath_node_set& ns): _type(type_unsorted), _begin(_storage), _end(_storage) { _assign(ns._begin, ns._end, ns._type); } PUGI_IMPL_FN xpath_node_set& xpath_node_set::operator=(const xpath_node_set& ns) { if (this == &ns) return *this; _assign(ns._begin, ns._end, ns._type); return *this; } #ifdef PUGIXML_HAS_MOVE PUGI_IMPL_FN xpath_node_set::xpath_node_set(xpath_node_set&& rhs) PUGIXML_NOEXCEPT: _type(type_unsorted), _begin(_storage), _end(_storage) { _move(rhs); } PUGI_IMPL_FN xpath_node_set& xpath_node_set::operator=(xpath_node_set&& rhs) PUGIXML_NOEXCEPT { if (this == &rhs) return *this; if (_begin != _storage) impl::xml_memory::deallocate(_begin); _move(rhs); return *this; } #endif PUGI_IMPL_FN xpath_node_set::type_t xpath_node_set::type() const { return _type; } PUGI_IMPL_FN size_t xpath_node_set::size() const { return _end - _begin; } PUGI_IMPL_FN bool xpath_node_set::empty() const { return _begin == _end; } PUGI_IMPL_FN const xpath_node& xpath_node_set::operator[](size_t index) const { assert(index < size()); return _begin[index]; } PUGI_IMPL_FN xpath_node_set::const_iterator xpath_node_set::begin() const { return _begin; } PUGI_IMPL_FN xpath_node_set::const_iterator xpath_node_set::end() const { return _end; } PUGI_IMPL_FN void xpath_node_set::sort(bool reverse) { _type = impl::xpath_sort(_begin, _end, _type, reverse); } PUGI_IMPL_FN xpath_node xpath_node_set::first() const { return impl::xpath_first(_begin, _end, _type); } PUGI_IMPL_FN xpath_parse_result::xpath_parse_result(): error("Internal error"), offset(0) { } PUGI_IMPL_FN xpath_parse_result::operator bool() const { return error == NULL; } PUGI_IMPL_FN const char* xpath_parse_result::description() const { return error ? error : "No error"; } PUGI_IMPL_FN xpath_variable::xpath_variable(xpath_value_type type_): _type(type_), _next(NULL) { } PUGI_IMPL_FN const char_t* xpath_variable::name() const { switch (_type) { case xpath_type_node_set: return static_cast(this)->name; case xpath_type_number: return static_cast(this)->name; case xpath_type_string: return static_cast(this)->name; case xpath_type_boolean: return static_cast(this)->name; default: assert(false && "Invalid variable type"); // unreachable return NULL; } } PUGI_IMPL_FN xpath_value_type xpath_variable::type() const { return _type; } PUGI_IMPL_FN bool xpath_variable::get_boolean() const { return (_type == xpath_type_boolean) ? static_cast(this)->value : false; } PUGI_IMPL_FN double xpath_variable::get_number() const { return (_type == xpath_type_number) ? static_cast(this)->value : impl::gen_nan(); } PUGI_IMPL_FN const char_t* xpath_variable::get_string() const { const char_t* value = (_type == xpath_type_string) ? static_cast(this)->value : NULL; return value ? value : PUGIXML_TEXT(""); } PUGI_IMPL_FN const xpath_node_set& xpath_variable::get_node_set() const { return (_type == xpath_type_node_set) ? static_cast(this)->value : impl::dummy_node_set; } PUGI_IMPL_FN bool xpath_variable::set(bool value) { if (_type != xpath_type_boolean) return false; static_cast(this)->value = value; return true; } PUGI_IMPL_FN bool xpath_variable::set(double value) { if (_type != xpath_type_number) return false; static_cast(this)->value = value; return true; } PUGI_IMPL_FN bool xpath_variable::set(const char_t* value) { if (_type != xpath_type_string) return false; impl::xpath_variable_string* var = static_cast(this); // duplicate string size_t size = (impl::strlength(value) + 1) * sizeof(char_t); char_t* copy = static_cast(impl::xml_memory::allocate(size)); if (!copy) return false; memcpy(copy, value, size); // replace old string if (var->value) impl::xml_memory::deallocate(var->value); var->value = copy; return true; } PUGI_IMPL_FN bool xpath_variable::set(const xpath_node_set& value) { if (_type != xpath_type_node_set) return false; static_cast(this)->value = value; return true; } PUGI_IMPL_FN xpath_variable_set::xpath_variable_set() { for (size_t i = 0; i < sizeof(_data) / sizeof(_data[0]); ++i) _data[i] = NULL; } PUGI_IMPL_FN xpath_variable_set::~xpath_variable_set() { for (size_t i = 0; i < sizeof(_data) / sizeof(_data[0]); ++i) _destroy(_data[i]); } PUGI_IMPL_FN xpath_variable_set::xpath_variable_set(const xpath_variable_set& rhs) { for (size_t i = 0; i < sizeof(_data) / sizeof(_data[0]); ++i) _data[i] = NULL; _assign(rhs); } PUGI_IMPL_FN xpath_variable_set& xpath_variable_set::operator=(const xpath_variable_set& rhs) { if (this == &rhs) return *this; _assign(rhs); return *this; } #ifdef PUGIXML_HAS_MOVE PUGI_IMPL_FN xpath_variable_set::xpath_variable_set(xpath_variable_set&& rhs) PUGIXML_NOEXCEPT { for (size_t i = 0; i < sizeof(_data) / sizeof(_data[0]); ++i) { _data[i] = rhs._data[i]; rhs._data[i] = NULL; } } PUGI_IMPL_FN xpath_variable_set& xpath_variable_set::operator=(xpath_variable_set&& rhs) PUGIXML_NOEXCEPT { for (size_t i = 0; i < sizeof(_data) / sizeof(_data[0]); ++i) { _destroy(_data[i]); _data[i] = rhs._data[i]; rhs._data[i] = NULL; } return *this; } #endif PUGI_IMPL_FN void xpath_variable_set::_assign(const xpath_variable_set& rhs) { xpath_variable_set temp; for (size_t i = 0; i < sizeof(_data) / sizeof(_data[0]); ++i) if (rhs._data[i] && !_clone(rhs._data[i], &temp._data[i])) return; _swap(temp); } PUGI_IMPL_FN void xpath_variable_set::_swap(xpath_variable_set& rhs) { for (size_t i = 0; i < sizeof(_data) / sizeof(_data[0]); ++i) { xpath_variable* chain = _data[i]; _data[i] = rhs._data[i]; rhs._data[i] = chain; } } PUGI_IMPL_FN xpath_variable* xpath_variable_set::_find(const char_t* name) const { const size_t hash_size = sizeof(_data) / sizeof(_data[0]); size_t hash = impl::hash_string(name) % hash_size; // look for existing variable for (xpath_variable* var = _data[hash]; var; var = var->_next) if (impl::strequal(var->name(), name)) return var; return NULL; } PUGI_IMPL_FN bool xpath_variable_set::_clone(xpath_variable* var, xpath_variable** out_result) { xpath_variable* last = NULL; while (var) { // allocate storage for new variable xpath_variable* nvar = impl::new_xpath_variable(var->_type, var->name()); if (!nvar) return false; // link the variable to the result immediately to handle failures gracefully if (last) last->_next = nvar; else *out_result = nvar; last = nvar; // copy the value; this can fail due to out-of-memory conditions if (!impl::copy_xpath_variable(nvar, var)) return false; var = var->_next; } return true; } PUGI_IMPL_FN void xpath_variable_set::_destroy(xpath_variable* var) { while (var) { xpath_variable* next = var->_next; impl::delete_xpath_variable(var->_type, var); var = next; } } PUGI_IMPL_FN xpath_variable* xpath_variable_set::add(const char_t* name, xpath_value_type type) { const size_t hash_size = sizeof(_data) / sizeof(_data[0]); size_t hash = impl::hash_string(name) % hash_size; // look for existing variable for (xpath_variable* var = _data[hash]; var; var = var->_next) if (impl::strequal(var->name(), name)) return var->type() == type ? var : NULL; // add new variable xpath_variable* result = impl::new_xpath_variable(type, name); if (result) { result->_next = _data[hash]; _data[hash] = result; } return result; } PUGI_IMPL_FN bool xpath_variable_set::set(const char_t* name, bool value) { xpath_variable* var = add(name, xpath_type_boolean); return var ? var->set(value) : false; } PUGI_IMPL_FN bool xpath_variable_set::set(const char_t* name, double value) { xpath_variable* var = add(name, xpath_type_number); return var ? var->set(value) : false; } PUGI_IMPL_FN bool xpath_variable_set::set(const char_t* name, const char_t* value) { xpath_variable* var = add(name, xpath_type_string); return var ? var->set(value) : false; } PUGI_IMPL_FN bool xpath_variable_set::set(const char_t* name, const xpath_node_set& value) { xpath_variable* var = add(name, xpath_type_node_set); return var ? var->set(value) : false; } PUGI_IMPL_FN xpath_variable* xpath_variable_set::get(const char_t* name) { return _find(name); } PUGI_IMPL_FN const xpath_variable* xpath_variable_set::get(const char_t* name) const { return _find(name); } PUGI_IMPL_FN xpath_query::xpath_query(const char_t* query, xpath_variable_set* variables): _impl(NULL) { impl::xpath_query_impl* qimpl = impl::xpath_query_impl::create(); if (!qimpl) { #ifdef PUGIXML_NO_EXCEPTIONS _result.error = "Out of memory"; #else throw std::bad_alloc(); #endif } else { using impl::auto_deleter; // MSVC7 workaround auto_deleter impl(qimpl, impl::xpath_query_impl::destroy); qimpl->root = impl::xpath_parser::parse(query, variables, &qimpl->alloc, &_result); if (qimpl->root) { qimpl->root->optimize(&qimpl->alloc); _impl = impl.release(); _result.error = NULL; } else { #ifdef PUGIXML_NO_EXCEPTIONS if (qimpl->oom) _result.error = "Out of memory"; #else if (qimpl->oom) throw std::bad_alloc(); throw xpath_exception(_result); #endif } } } PUGI_IMPL_FN xpath_query::xpath_query(): _impl(NULL) { } PUGI_IMPL_FN xpath_query::~xpath_query() { if (_impl) impl::xpath_query_impl::destroy(static_cast(_impl)); } #ifdef PUGIXML_HAS_MOVE PUGI_IMPL_FN xpath_query::xpath_query(xpath_query&& rhs) PUGIXML_NOEXCEPT { _impl = rhs._impl; _result = rhs._result; rhs._impl = NULL; rhs._result = xpath_parse_result(); } PUGI_IMPL_FN xpath_query& xpath_query::operator=(xpath_query&& rhs) PUGIXML_NOEXCEPT { if (this == &rhs) return *this; if (_impl) impl::xpath_query_impl::destroy(static_cast(_impl)); _impl = rhs._impl; _result = rhs._result; rhs._impl = NULL; rhs._result = xpath_parse_result(); return *this; } #endif PUGI_IMPL_FN xpath_value_type xpath_query::return_type() const { if (!_impl) return xpath_type_none; return static_cast(_impl)->root->rettype(); } PUGI_IMPL_FN bool xpath_query::evaluate_boolean(const xpath_node& n) const { if (!_impl) return false; impl::xpath_context c(n, 1, 1); impl::xpath_stack_data sd; bool r = static_cast(_impl)->root->eval_boolean(c, sd.stack); if (sd.oom) { #ifdef PUGIXML_NO_EXCEPTIONS return false; #else throw std::bad_alloc(); #endif } return r; } PUGI_IMPL_FN double xpath_query::evaluate_number(const xpath_node& n) const { if (!_impl) return impl::gen_nan(); impl::xpath_context c(n, 1, 1); impl::xpath_stack_data sd; double r = static_cast(_impl)->root->eval_number(c, sd.stack); if (sd.oom) { #ifdef PUGIXML_NO_EXCEPTIONS return impl::gen_nan(); #else throw std::bad_alloc(); #endif } return r; } #ifndef PUGIXML_NO_STL PUGI_IMPL_FN string_t xpath_query::evaluate_string(const xpath_node& n) const { if (!_impl) return string_t(); impl::xpath_context c(n, 1, 1); impl::xpath_stack_data sd; impl::xpath_string r = static_cast(_impl)->root->eval_string(c, sd.stack); if (sd.oom) { #ifdef PUGIXML_NO_EXCEPTIONS return string_t(); #else throw std::bad_alloc(); #endif } return string_t(r.c_str(), r.length()); } #endif PUGI_IMPL_FN size_t xpath_query::evaluate_string(char_t* buffer, size_t capacity, const xpath_node& n) const { impl::xpath_context c(n, 1, 1); impl::xpath_stack_data sd; impl::xpath_string r = _impl ? static_cast(_impl)->root->eval_string(c, sd.stack) : impl::xpath_string(); if (sd.oom) { #ifdef PUGIXML_NO_EXCEPTIONS r = impl::xpath_string(); #else throw std::bad_alloc(); #endif } size_t full_size = r.length() + 1; if (capacity > 0) { size_t size = (full_size < capacity) ? full_size : capacity; assert(size > 0); memcpy(buffer, r.c_str(), (size - 1) * sizeof(char_t)); buffer[size - 1] = 0; } return full_size; } PUGI_IMPL_FN xpath_node_set xpath_query::evaluate_node_set(const xpath_node& n) const { impl::xpath_ast_node* root = impl::evaluate_node_set_prepare(static_cast(_impl)); if (!root) return xpath_node_set(); impl::xpath_context c(n, 1, 1); impl::xpath_stack_data sd; impl::xpath_node_set_raw r = root->eval_node_set(c, sd.stack, impl::nodeset_eval_all); if (sd.oom) { #ifdef PUGIXML_NO_EXCEPTIONS return xpath_node_set(); #else throw std::bad_alloc(); #endif } return xpath_node_set(r.begin(), r.end(), r.type()); } PUGI_IMPL_FN xpath_node xpath_query::evaluate_node(const xpath_node& n) const { impl::xpath_ast_node* root = impl::evaluate_node_set_prepare(static_cast(_impl)); if (!root) return xpath_node(); impl::xpath_context c(n, 1, 1); impl::xpath_stack_data sd; impl::xpath_node_set_raw r = root->eval_node_set(c, sd.stack, impl::nodeset_eval_first); if (sd.oom) { #ifdef PUGIXML_NO_EXCEPTIONS return xpath_node(); #else throw std::bad_alloc(); #endif } return r.first(); } PUGI_IMPL_FN const xpath_parse_result& xpath_query::result() const { return _result; } PUGI_IMPL_FN static void unspecified_bool_xpath_query(xpath_query***) { } PUGI_IMPL_FN xpath_query::operator xpath_query::unspecified_bool_type() const { return _impl ? unspecified_bool_xpath_query : NULL; } PUGI_IMPL_FN bool xpath_query::operator!() const { return !_impl; } PUGI_IMPL_FN xpath_node xml_node::select_node(const char_t* query, xpath_variable_set* variables) const { xpath_query q(query, variables); return q.evaluate_node(*this); } PUGI_IMPL_FN xpath_node xml_node::select_node(const xpath_query& query) const { return query.evaluate_node(*this); } PUGI_IMPL_FN xpath_node_set xml_node::select_nodes(const char_t* query, xpath_variable_set* variables) const { xpath_query q(query, variables); return q.evaluate_node_set(*this); } PUGI_IMPL_FN xpath_node_set xml_node::select_nodes(const xpath_query& query) const { return query.evaluate_node_set(*this); } PUGI_IMPL_FN xpath_node xml_node::select_single_node(const char_t* query, xpath_variable_set* variables) const { xpath_query q(query, variables); return q.evaluate_node(*this); } PUGI_IMPL_FN xpath_node xml_node::select_single_node(const xpath_query& query) const { return query.evaluate_node(*this); } } #endif #ifdef __BORLANDC__ # pragma option pop #endif #if defined(_MSC_VER) && defined(__c2__) # pragma clang diagnostic pop #endif #if defined(__clang__) # pragma clang diagnostic pop #endif // Intel C++ does not properly keep warning state for function templates, // so popping warning state at the end of translation unit leads to warnings in the middle. #if defined(_MSC_VER) && !defined(__INTEL_COMPILER) # pragma warning(pop) #endif // Undefine all local macros (makes sure we're not leaking macros in header-only mode) #undef PUGI_IMPL_NO_INLINE #undef PUGI_IMPL_UNLIKELY #undef PUGI_IMPL_STATIC_ASSERT #undef PUGI_IMPL_DMC_VOLATILE #undef PUGI_IMPL_UNSIGNED_OVERFLOW #undef PUGI_IMPL_MSVC_CRT_VERSION #undef PUGI_IMPL_SNPRINTF #undef PUGI_IMPL_NS_BEGIN #undef PUGI_IMPL_NS_END #undef PUGI_IMPL_FN #undef PUGI_IMPL_FN_NO_INLINE #undef PUGI_IMPL_GETHEADER_IMPL #undef PUGI_IMPL_GETPAGE_IMPL #undef PUGI_IMPL_GETPAGE #undef PUGI_IMPL_NODETYPE #undef PUGI_IMPL_IS_CHARTYPE_IMPL #undef PUGI_IMPL_IS_CHARTYPE #undef PUGI_IMPL_IS_CHARTYPEX #undef PUGI_IMPL_ENDSWITH #undef PUGI_IMPL_SKIPWS #undef PUGI_IMPL_OPTSET #undef PUGI_IMPL_PUSHNODE #undef PUGI_IMPL_POPNODE #undef PUGI_IMPL_SCANFOR #undef PUGI_IMPL_SCANWHILE #undef PUGI_IMPL_SCANWHILE_UNROLL #undef PUGI_IMPL_ENDSEG #undef PUGI_IMPL_THROW_ERROR #undef PUGI_IMPL_CHECK_ERROR #endif /** * Copyright (c) 2006-2025 Arseny Kapoulkine * * 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. */ poedit-3.6.3/deps/json/0000755000175100001660000000000015011674362010462 5poedit-3.6.3/deps/json/single_include/0000755000175100001660000000000015011674362013446 5poedit-3.6.3/deps/json/single_include/nlohmann/0000755000175100001660000000000015011674362015260 5poedit-3.6.3/deps/json/single_include/nlohmann/json.hpp0000644000175100001660000350613415011674244016675 // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT /****************************************************************************\ * Note on documentation: The source files contain links to the online * * documentation of the public API at https://json.nlohmann.me. This URL * * contains the most recent documentation and should also be applicable to * * previous versions; documentation for deprecated functions is not * * removed, but marked deprecated. See "Generate documentation" section in * * file docs/README.md. * \****************************************************************************/ #ifndef INCLUDE_NLOHMANN_JSON_HPP_ #define INCLUDE_NLOHMANN_JSON_HPP_ #include // all_of, find, for_each #include // nullptr_t, ptrdiff_t, size_t #include // hash, less #include // initializer_list #ifndef JSON_NO_IO #include // istream, ostream #endif // JSON_NO_IO #include // random_access_iterator_tag #include // unique_ptr #include // string, stoi, to_string #include // declval, forward, move, pair, swap #include // vector // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT #include // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT // This file contains all macro definitions affecting or depending on the ABI #ifndef JSON_SKIP_LIBRARY_VERSION_CHECK #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 12 || NLOHMANN_JSON_VERSION_PATCH != 0 #warning "Already included a different version of the library!" #endif #endif #endif #define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) #define NLOHMANN_JSON_VERSION_MINOR 12 // NOLINT(modernize-macro-to-enum) #define NLOHMANN_JSON_VERSION_PATCH 0 // NOLINT(modernize-macro-to-enum) #ifndef JSON_DIAGNOSTICS #define JSON_DIAGNOSTICS 0 #endif #ifndef JSON_DIAGNOSTIC_POSITIONS #define JSON_DIAGNOSTIC_POSITIONS 0 #endif #ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 #endif #if JSON_DIAGNOSTICS #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag #else #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS #endif #if JSON_DIAGNOSTIC_POSITIONS #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS _dp #else #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS #endif #if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp #else #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON #endif #ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 #endif // Construct the namespace ABI tags component #define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c) json_abi ## a ## b ## c #define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b, c) \ NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c) #define NLOHMANN_JSON_ABI_TAGS \ NLOHMANN_JSON_ABI_TAGS_CONCAT( \ NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON, \ NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS) // Construct the namespace version component #define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \ _v ## major ## _ ## minor ## _ ## patch #define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \ NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) #if NLOHMANN_JSON_NAMESPACE_NO_VERSION #define NLOHMANN_JSON_NAMESPACE_VERSION #else #define NLOHMANN_JSON_NAMESPACE_VERSION \ NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \ NLOHMANN_JSON_VERSION_MINOR, \ NLOHMANN_JSON_VERSION_PATCH) #endif // Combine namespace components #define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b #define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \ NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) #ifndef NLOHMANN_JSON_NAMESPACE #define NLOHMANN_JSON_NAMESPACE \ nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \ NLOHMANN_JSON_ABI_TAGS, \ NLOHMANN_JSON_NAMESPACE_VERSION) #endif #ifndef NLOHMANN_JSON_NAMESPACE_BEGIN #define NLOHMANN_JSON_NAMESPACE_BEGIN \ namespace nlohmann \ { \ inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \ NLOHMANN_JSON_ABI_TAGS, \ NLOHMANN_JSON_NAMESPACE_VERSION) \ { #endif #ifndef NLOHMANN_JSON_NAMESPACE_END #define NLOHMANN_JSON_NAMESPACE_END \ } /* namespace (inline namespace) NOLINT(readability/namespace) */ \ } // namespace nlohmann #endif // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT #include // transform #include // array #include // forward_list #include // inserter, front_inserter, end #include // map #ifdef JSON_HAS_CPP_17 #include // optional #endif #include // string #include // tuple, make_tuple #include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible #include // unordered_map #include // pair, declval #include // valarray // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT #include // nullptr_t #include // exception #if JSON_DIAGNOSTICS #include // accumulate #endif #include // runtime_error #include // to_string #include // vector // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT #include // array #include // size_t #include // uint8_t #include // string // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT #include // declval, pair // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT #include // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT // #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template struct make_void { using type = void; }; template using void_t = typename make_void::type; } // namespace detail NLOHMANN_JSON_NAMESPACE_END NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { // https://en.cppreference.com/w/cpp/experimental/is_detected struct nonesuch { nonesuch() = delete; ~nonesuch() = delete; nonesuch(nonesuch const&) = delete; nonesuch(nonesuch const&&) = delete; void operator=(nonesuch const&) = delete; void operator=(nonesuch&&) = delete; }; template class Op, class... Args> struct detector { using value_t = std::false_type; using type = Default; }; template class Op, class... Args> struct detector>, Op, Args...> { using value_t = std::true_type; using type = Op; }; template class Op, class... Args> using is_detected = typename detector::value_t; template class Op, class... Args> struct is_detected_lazy : is_detected { }; template class Op, class... Args> using detected_t = typename detector::type; template class Op, class... Args> using detected_or = detector; template class Op, class... Args> using detected_or_t = typename detected_or::type; template class Op, class... Args> using is_detected_exact = std::is_same>; template class Op, class... Args> using is_detected_convertible = std::is_convertible, To>; } // namespace detail NLOHMANN_JSON_NAMESPACE_END // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-FileCopyrightText: 2016 - 2021 Evan Nemerson // SPDX-License-Identifier: MIT /* Hedley - https://nemequ.github.io/hedley * Created by Evan Nemerson */ #if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 15) #if defined(JSON_HEDLEY_VERSION) #undef JSON_HEDLEY_VERSION #endif #define JSON_HEDLEY_VERSION 15 #if defined(JSON_HEDLEY_STRINGIFY_EX) #undef JSON_HEDLEY_STRINGIFY_EX #endif #define JSON_HEDLEY_STRINGIFY_EX(x) #x #if defined(JSON_HEDLEY_STRINGIFY) #undef JSON_HEDLEY_STRINGIFY #endif #define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x) #if defined(JSON_HEDLEY_CONCAT_EX) #undef JSON_HEDLEY_CONCAT_EX #endif #define JSON_HEDLEY_CONCAT_EX(a,b) a##b #if defined(JSON_HEDLEY_CONCAT) #undef JSON_HEDLEY_CONCAT #endif #define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b) #if defined(JSON_HEDLEY_CONCAT3_EX) #undef JSON_HEDLEY_CONCAT3_EX #endif #define JSON_HEDLEY_CONCAT3_EX(a,b,c) a##b##c #if defined(JSON_HEDLEY_CONCAT3) #undef JSON_HEDLEY_CONCAT3 #endif #define JSON_HEDLEY_CONCAT3(a,b,c) JSON_HEDLEY_CONCAT3_EX(a,b,c) #if defined(JSON_HEDLEY_VERSION_ENCODE) #undef JSON_HEDLEY_VERSION_ENCODE #endif #define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision)) #if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR) #undef JSON_HEDLEY_VERSION_DECODE_MAJOR #endif #define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000) #if defined(JSON_HEDLEY_VERSION_DECODE_MINOR) #undef JSON_HEDLEY_VERSION_DECODE_MINOR #endif #define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000) #if defined(JSON_HEDLEY_VERSION_DECODE_REVISION) #undef JSON_HEDLEY_VERSION_DECODE_REVISION #endif #define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000) #if defined(JSON_HEDLEY_GNUC_VERSION) #undef JSON_HEDLEY_GNUC_VERSION #endif #if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__) #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) #elif defined(__GNUC__) #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0) #endif #if defined(JSON_HEDLEY_GNUC_VERSION_CHECK) #undef JSON_HEDLEY_GNUC_VERSION_CHECK #endif #if defined(JSON_HEDLEY_GNUC_VERSION) #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_MSVC_VERSION) #undef JSON_HEDLEY_MSVC_VERSION #endif #if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000) && !defined(__ICL) #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100) #elif defined(_MSC_FULL_VER) && !defined(__ICL) #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10) #elif defined(_MSC_VER) && !defined(__ICL) #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0) #endif #if defined(JSON_HEDLEY_MSVC_VERSION_CHECK) #undef JSON_HEDLEY_MSVC_VERSION_CHECK #endif #if !defined(JSON_HEDLEY_MSVC_VERSION) #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0) #elif defined(_MSC_VER) && (_MSC_VER >= 1400) #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch))) #elif defined(_MSC_VER) && (_MSC_VER >= 1200) #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch))) #else #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor))) #endif #if defined(JSON_HEDLEY_INTEL_VERSION) #undef JSON_HEDLEY_INTEL_VERSION #endif #if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && !defined(__ICL) #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE) #elif defined(__INTEL_COMPILER) && !defined(__ICL) #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0) #endif #if defined(JSON_HEDLEY_INTEL_VERSION_CHECK) #undef JSON_HEDLEY_INTEL_VERSION_CHECK #endif #if defined(JSON_HEDLEY_INTEL_VERSION) #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_INTEL_CL_VERSION) #undef JSON_HEDLEY_INTEL_CL_VERSION #endif #if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && defined(__ICL) #define JSON_HEDLEY_INTEL_CL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER, __INTEL_COMPILER_UPDATE, 0) #endif #if defined(JSON_HEDLEY_INTEL_CL_VERSION_CHECK) #undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK #endif #if defined(JSON_HEDLEY_INTEL_CL_VERSION) #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_CL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_PGI_VERSION) #undef JSON_HEDLEY_PGI_VERSION #endif #if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__) #endif #if defined(JSON_HEDLEY_PGI_VERSION_CHECK) #undef JSON_HEDLEY_PGI_VERSION_CHECK #endif #if defined(JSON_HEDLEY_PGI_VERSION) #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_SUNPRO_VERSION) #undef JSON_HEDLEY_SUNPRO_VERSION #endif #if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000) #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10) #elif defined(__SUNPRO_C) #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf) #elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000) #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10) #elif defined(__SUNPRO_CC) #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf) #endif #if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK) #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK #endif #if defined(JSON_HEDLEY_SUNPRO_VERSION) #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) #undef JSON_HEDLEY_EMSCRIPTEN_VERSION #endif #if defined(__EMSCRIPTEN__) #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__) #endif #if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK) #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK #endif #if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_ARM_VERSION) #undef JSON_HEDLEY_ARM_VERSION #endif #if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION) #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100) #elif defined(__CC_ARM) && defined(__ARMCC_VERSION) #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100) #endif #if defined(JSON_HEDLEY_ARM_VERSION_CHECK) #undef JSON_HEDLEY_ARM_VERSION_CHECK #endif #if defined(JSON_HEDLEY_ARM_VERSION) #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_IBM_VERSION) #undef JSON_HEDLEY_IBM_VERSION #endif #if defined(__ibmxl__) #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__) #elif defined(__xlC__) && defined(__xlC_ver__) #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff) #elif defined(__xlC__) #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0) #endif #if defined(JSON_HEDLEY_IBM_VERSION_CHECK) #undef JSON_HEDLEY_IBM_VERSION_CHECK #endif #if defined(JSON_HEDLEY_IBM_VERSION) #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_TI_VERSION) #undef JSON_HEDLEY_TI_VERSION #endif #if \ defined(__TI_COMPILER_VERSION__) && \ ( \ defined(__TMS470__) || defined(__TI_ARM__) || \ defined(__MSP430__) || \ defined(__TMS320C2000__) \ ) #if (__TI_COMPILER_VERSION__ >= 16000000) #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) #endif #endif #if defined(JSON_HEDLEY_TI_VERSION_CHECK) #undef JSON_HEDLEY_TI_VERSION_CHECK #endif #if defined(JSON_HEDLEY_TI_VERSION) #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_TI_CL2000_VERSION) #undef JSON_HEDLEY_TI_CL2000_VERSION #endif #if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__) #define JSON_HEDLEY_TI_CL2000_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) #endif #if defined(JSON_HEDLEY_TI_CL2000_VERSION_CHECK) #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK #endif #if defined(JSON_HEDLEY_TI_CL2000_VERSION) #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL2000_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_TI_CL430_VERSION) #undef JSON_HEDLEY_TI_CL430_VERSION #endif #if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__) #define JSON_HEDLEY_TI_CL430_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) #endif #if defined(JSON_HEDLEY_TI_CL430_VERSION_CHECK) #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK #endif #if defined(JSON_HEDLEY_TI_CL430_VERSION) #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL430_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_TI_ARMCL_VERSION) #undef JSON_HEDLEY_TI_ARMCL_VERSION #endif #if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__)) #define JSON_HEDLEY_TI_ARMCL_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) #endif #if defined(JSON_HEDLEY_TI_ARMCL_VERSION_CHECK) #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK #endif #if defined(JSON_HEDLEY_TI_ARMCL_VERSION) #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_ARMCL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_TI_CL6X_VERSION) #undef JSON_HEDLEY_TI_CL6X_VERSION #endif #if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__) #define JSON_HEDLEY_TI_CL6X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) #endif #if defined(JSON_HEDLEY_TI_CL6X_VERSION_CHECK) #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK #endif #if defined(JSON_HEDLEY_TI_CL6X_VERSION) #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL6X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_TI_CL7X_VERSION) #undef JSON_HEDLEY_TI_CL7X_VERSION #endif #if defined(__TI_COMPILER_VERSION__) && defined(__C7000__) #define JSON_HEDLEY_TI_CL7X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) #endif #if defined(JSON_HEDLEY_TI_CL7X_VERSION_CHECK) #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK #endif #if defined(JSON_HEDLEY_TI_CL7X_VERSION) #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL7X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_TI_CLPRU_VERSION) #undef JSON_HEDLEY_TI_CLPRU_VERSION #endif #if defined(__TI_COMPILER_VERSION__) && defined(__PRU__) #define JSON_HEDLEY_TI_CLPRU_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) #endif #if defined(JSON_HEDLEY_TI_CLPRU_VERSION_CHECK) #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK #endif #if defined(JSON_HEDLEY_TI_CLPRU_VERSION) #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CLPRU_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_CRAY_VERSION) #undef JSON_HEDLEY_CRAY_VERSION #endif #if defined(_CRAYC) #if defined(_RELEASE_PATCHLEVEL) #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL) #else #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0) #endif #endif #if defined(JSON_HEDLEY_CRAY_VERSION_CHECK) #undef JSON_HEDLEY_CRAY_VERSION_CHECK #endif #if defined(JSON_HEDLEY_CRAY_VERSION) #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_IAR_VERSION) #undef JSON_HEDLEY_IAR_VERSION #endif #if defined(__IAR_SYSTEMS_ICC__) #if __VER__ > 1000 #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000)) #else #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(__VER__ / 100, __VER__ % 100, 0) #endif #endif #if defined(JSON_HEDLEY_IAR_VERSION_CHECK) #undef JSON_HEDLEY_IAR_VERSION_CHECK #endif #if defined(JSON_HEDLEY_IAR_VERSION) #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_TINYC_VERSION) #undef JSON_HEDLEY_TINYC_VERSION #endif #if defined(__TINYC__) #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100) #endif #if defined(JSON_HEDLEY_TINYC_VERSION_CHECK) #undef JSON_HEDLEY_TINYC_VERSION_CHECK #endif #if defined(JSON_HEDLEY_TINYC_VERSION) #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_DMC_VERSION) #undef JSON_HEDLEY_DMC_VERSION #endif #if defined(__DMC__) #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf) #endif #if defined(JSON_HEDLEY_DMC_VERSION_CHECK) #undef JSON_HEDLEY_DMC_VERSION_CHECK #endif #if defined(JSON_HEDLEY_DMC_VERSION) #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_COMPCERT_VERSION) #undef JSON_HEDLEY_COMPCERT_VERSION #endif #if defined(__COMPCERT_VERSION__) #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100) #endif #if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK) #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK #endif #if defined(JSON_HEDLEY_COMPCERT_VERSION) #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_PELLES_VERSION) #undef JSON_HEDLEY_PELLES_VERSION #endif #if defined(__POCC__) #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0) #endif #if defined(JSON_HEDLEY_PELLES_VERSION_CHECK) #undef JSON_HEDLEY_PELLES_VERSION_CHECK #endif #if defined(JSON_HEDLEY_PELLES_VERSION) #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_MCST_LCC_VERSION) #undef JSON_HEDLEY_MCST_LCC_VERSION #endif #if defined(__LCC__) && defined(__LCC_MINOR__) #define JSON_HEDLEY_MCST_LCC_VERSION JSON_HEDLEY_VERSION_ENCODE(__LCC__ / 100, __LCC__ % 100, __LCC_MINOR__) #endif #if defined(JSON_HEDLEY_MCST_LCC_VERSION_CHECK) #undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK #endif #if defined(JSON_HEDLEY_MCST_LCC_VERSION) #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_MCST_LCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_GCC_VERSION) #undef JSON_HEDLEY_GCC_VERSION #endif #if \ defined(JSON_HEDLEY_GNUC_VERSION) && \ !defined(__clang__) && \ !defined(JSON_HEDLEY_INTEL_VERSION) && \ !defined(JSON_HEDLEY_PGI_VERSION) && \ !defined(JSON_HEDLEY_ARM_VERSION) && \ !defined(JSON_HEDLEY_CRAY_VERSION) && \ !defined(JSON_HEDLEY_TI_VERSION) && \ !defined(JSON_HEDLEY_TI_ARMCL_VERSION) && \ !defined(JSON_HEDLEY_TI_CL430_VERSION) && \ !defined(JSON_HEDLEY_TI_CL2000_VERSION) && \ !defined(JSON_HEDLEY_TI_CL6X_VERSION) && \ !defined(JSON_HEDLEY_TI_CL7X_VERSION) && \ !defined(JSON_HEDLEY_TI_CLPRU_VERSION) && \ !defined(__COMPCERT__) && \ !defined(JSON_HEDLEY_MCST_LCC_VERSION) #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION #endif #if defined(JSON_HEDLEY_GCC_VERSION_CHECK) #undef JSON_HEDLEY_GCC_VERSION_CHECK #endif #if defined(JSON_HEDLEY_GCC_VERSION) #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) #else #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0) #endif #if defined(JSON_HEDLEY_HAS_ATTRIBUTE) #undef JSON_HEDLEY_HAS_ATTRIBUTE #endif #if \ defined(__has_attribute) && \ ( \ (!defined(JSON_HEDLEY_IAR_VERSION) || JSON_HEDLEY_IAR_VERSION_CHECK(8,5,9)) \ ) # define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute) #else # define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0) #endif #if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE) #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE #endif #if defined(__has_attribute) #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) #else #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE) #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE #endif #if defined(__has_attribute) #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) #else #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE) #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE #endif #if \ defined(__has_cpp_attribute) && \ defined(__cplusplus) && \ (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute) #else #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0) #endif #if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS) #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS #endif #if !defined(__cplusplus) || !defined(__has_cpp_attribute) #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) #elif \ !defined(JSON_HEDLEY_PGI_VERSION) && \ !defined(JSON_HEDLEY_IAR_VERSION) && \ (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \ (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0)) #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute) #else #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) #endif #if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE) #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE #endif #if defined(__has_cpp_attribute) && defined(__cplusplus) #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) #else #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE) #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE #endif #if defined(__has_cpp_attribute) && defined(__cplusplus) #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) #else #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_HAS_BUILTIN) #undef JSON_HEDLEY_HAS_BUILTIN #endif #if defined(__has_builtin) #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin) #else #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0) #endif #if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN) #undef JSON_HEDLEY_GNUC_HAS_BUILTIN #endif #if defined(__has_builtin) #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) #else #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_GCC_HAS_BUILTIN) #undef JSON_HEDLEY_GCC_HAS_BUILTIN #endif #if defined(__has_builtin) #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) #else #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_HAS_FEATURE) #undef JSON_HEDLEY_HAS_FEATURE #endif #if defined(__has_feature) #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature) #else #define JSON_HEDLEY_HAS_FEATURE(feature) (0) #endif #if defined(JSON_HEDLEY_GNUC_HAS_FEATURE) #undef JSON_HEDLEY_GNUC_HAS_FEATURE #endif #if defined(__has_feature) #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) #else #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_GCC_HAS_FEATURE) #undef JSON_HEDLEY_GCC_HAS_FEATURE #endif #if defined(__has_feature) #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) #else #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_HAS_EXTENSION) #undef JSON_HEDLEY_HAS_EXTENSION #endif #if defined(__has_extension) #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension) #else #define JSON_HEDLEY_HAS_EXTENSION(extension) (0) #endif #if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION) #undef JSON_HEDLEY_GNUC_HAS_EXTENSION #endif #if defined(__has_extension) #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) #else #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_GCC_HAS_EXTENSION) #undef JSON_HEDLEY_GCC_HAS_EXTENSION #endif #if defined(__has_extension) #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) #else #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE) #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE #endif #if defined(__has_declspec_attribute) #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute) #else #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0) #endif #if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE) #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE #endif #if defined(__has_declspec_attribute) #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) #else #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE) #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE #endif #if defined(__has_declspec_attribute) #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) #else #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_HAS_WARNING) #undef JSON_HEDLEY_HAS_WARNING #endif #if defined(__has_warning) #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning) #else #define JSON_HEDLEY_HAS_WARNING(warning) (0) #endif #if defined(JSON_HEDLEY_GNUC_HAS_WARNING) #undef JSON_HEDLEY_GNUC_HAS_WARNING #endif #if defined(__has_warning) #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) #else #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_GCC_HAS_WARNING) #undef JSON_HEDLEY_GCC_HAS_WARNING #endif #if defined(__has_warning) #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) #else #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) #endif #if \ (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ defined(__clang__) || \ JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,0,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \ JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \ JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \ (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR)) #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value) #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) #define JSON_HEDLEY_PRAGMA(value) __pragma(value) #else #define JSON_HEDLEY_PRAGMA(value) #endif #if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH) #undef JSON_HEDLEY_DIAGNOSTIC_PUSH #endif #if defined(JSON_HEDLEY_DIAGNOSTIC_POP) #undef JSON_HEDLEY_DIAGNOSTIC_POP #endif #if defined(__clang__) #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") #elif \ JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push)) #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop)) #elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push") #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop") #elif \ JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,4,0) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push") #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop") #elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") #else #define JSON_HEDLEY_DIAGNOSTIC_PUSH #define JSON_HEDLEY_DIAGNOSTIC_POP #endif /* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ #endif #if defined(__cplusplus) # if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat") # if JSON_HEDLEY_HAS_WARNING("-Wc++17-extensions") # if JSON_HEDLEY_HAS_WARNING("-Wc++1z-extensions") # define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ JSON_HEDLEY_DIAGNOSTIC_PUSH \ _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ _Pragma("clang diagnostic ignored \"-Wc++1z-extensions\"") \ xpr \ JSON_HEDLEY_DIAGNOSTIC_POP # else # define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ JSON_HEDLEY_DIAGNOSTIC_PUSH \ _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ xpr \ JSON_HEDLEY_DIAGNOSTIC_POP # endif # else # define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ JSON_HEDLEY_DIAGNOSTIC_PUSH \ _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ xpr \ JSON_HEDLEY_DIAGNOSTIC_POP # endif # endif #endif #if !defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x #endif #if defined(JSON_HEDLEY_CONST_CAST) #undef JSON_HEDLEY_CONST_CAST #endif #if defined(__cplusplus) # define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast(expr)) #elif \ JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \ JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) # define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \ JSON_HEDLEY_DIAGNOSTIC_PUSH \ JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \ ((T) (expr)); \ JSON_HEDLEY_DIAGNOSTIC_POP \ })) #else # define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr)) #endif #if defined(JSON_HEDLEY_REINTERPRET_CAST) #undef JSON_HEDLEY_REINTERPRET_CAST #endif #if defined(__cplusplus) #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast(expr)) #else #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) ((T) (expr)) #endif #if defined(JSON_HEDLEY_STATIC_CAST) #undef JSON_HEDLEY_STATIC_CAST #endif #if defined(__cplusplus) #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast(expr)) #else #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr)) #endif #if defined(JSON_HEDLEY_CPP_CAST) #undef JSON_HEDLEY_CPP_CAST #endif #if defined(__cplusplus) # if JSON_HEDLEY_HAS_WARNING("-Wold-style-cast") # define JSON_HEDLEY_CPP_CAST(T, expr) \ JSON_HEDLEY_DIAGNOSTIC_PUSH \ _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \ ((T) (expr)) \ JSON_HEDLEY_DIAGNOSTIC_POP # elif JSON_HEDLEY_IAR_VERSION_CHECK(8,3,0) # define JSON_HEDLEY_CPP_CAST(T, expr) \ JSON_HEDLEY_DIAGNOSTIC_PUSH \ _Pragma("diag_suppress=Pe137") \ JSON_HEDLEY_DIAGNOSTIC_POP # else # define JSON_HEDLEY_CPP_CAST(T, expr) ((T) (expr)) # endif #else # define JSON_HEDLEY_CPP_CAST(T, expr) (expr) #endif #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED) #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED #endif #if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations") #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)") #elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:1478 1786)) #elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1216,1444,1445") #elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996)) #elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") #elif \ JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718") #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)") #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)") #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215") #elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)") #else #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED #endif #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS) #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS #endif #if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)") #elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:161)) #elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675") #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068)) #elif \ JSON_HEDLEY_TI_VERSION_CHECK(16,9,0) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") #elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161") #elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 161") #else #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS #endif #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES) #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES #endif #if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes") #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"") #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") #elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)") #elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:1292)) #elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030)) #elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097,1098") #elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)") #elif \ JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173") #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097") #elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") #else #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES #endif #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL) #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL #endif #if JSON_HEDLEY_HAS_WARNING("-Wcast-qual") #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"") #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)") #elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") #else #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL #endif #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION) #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION #endif #if JSON_HEDLEY_HAS_WARNING("-Wunused-function") #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("clang diagnostic ignored \"-Wunused-function\"") #elif JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("GCC diagnostic ignored \"-Wunused-function\"") #elif JSON_HEDLEY_MSVC_VERSION_CHECK(1,0,0) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION __pragma(warning(disable:4505)) #elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("diag_suppress 3142") #else #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION #endif #if defined(JSON_HEDLEY_DEPRECATED) #undef JSON_HEDLEY_DEPRECATED #endif #if defined(JSON_HEDLEY_DEPRECATED_FOR) #undef JSON_HEDLEY_DEPRECATED_FOR #endif #if \ JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since)) #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement)) #elif \ (JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \ JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(18,1,0) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since))) #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement))) #elif defined(__cplusplus) && (__cplusplus >= 201402L) #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]]) #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]]) #elif \ JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \ JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__)) #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__)) #elif \ JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated) #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated) #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated") #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated") #else #define JSON_HEDLEY_DEPRECATED(since) #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) #endif #if defined(JSON_HEDLEY_UNAVAILABLE) #undef JSON_HEDLEY_UNAVAILABLE #endif #if \ JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \ JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since))) #else #define JSON_HEDLEY_UNAVAILABLE(available_since) #endif #if defined(JSON_HEDLEY_WARN_UNUSED_RESULT) #undef JSON_HEDLEY_WARN_UNUSED_RESULT #endif #if defined(JSON_HEDLEY_WARN_UNUSED_RESULT_MSG) #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG #endif #if \ JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \ JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__)) #elif (JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L) #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]]) #elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) #elif defined(_Check_return_) /* SAL */ #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_ #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_ #else #define JSON_HEDLEY_WARN_UNUSED_RESULT #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) #endif #if defined(JSON_HEDLEY_SENTINEL) #undef JSON_HEDLEY_SENTINEL #endif #if \ JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \ JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position))) #else #define JSON_HEDLEY_SENTINEL(position) #endif #if defined(JSON_HEDLEY_NO_RETURN) #undef JSON_HEDLEY_NO_RETURN #endif #if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) #define JSON_HEDLEY_NO_RETURN __noreturn #elif \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L #define JSON_HEDLEY_NO_RETURN _Noreturn #elif defined(__cplusplus) && (__cplusplus >= 201103L) #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]]) #elif \ JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \ JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \ JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return") #elif \ JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) #elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;") #elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) #define JSON_HEDLEY_NO_RETURN __attribute((noreturn)) #elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) #else #define JSON_HEDLEY_NO_RETURN #endif #if defined(JSON_HEDLEY_NO_ESCAPE) #undef JSON_HEDLEY_NO_ESCAPE #endif #if JSON_HEDLEY_HAS_ATTRIBUTE(noescape) #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__)) #else #define JSON_HEDLEY_NO_ESCAPE #endif #if defined(JSON_HEDLEY_UNREACHABLE) #undef JSON_HEDLEY_UNREACHABLE #endif #if defined(JSON_HEDLEY_UNREACHABLE_RETURN) #undef JSON_HEDLEY_UNREACHABLE_RETURN #endif #if defined(JSON_HEDLEY_ASSUME) #undef JSON_HEDLEY_ASSUME #endif #if \ JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) #define JSON_HEDLEY_ASSUME(expr) __assume(expr) #elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume) #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr) #elif \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) #if defined(__cplusplus) #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr) #else #define JSON_HEDLEY_ASSUME(expr) _nassert(expr) #endif #endif #if \ (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \ JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ JSON_HEDLEY_PGI_VERSION_CHECK(18,10,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5) || \ JSON_HEDLEY_CRAY_VERSION_CHECK(10,0,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable() #elif defined(JSON_HEDLEY_ASSUME) #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) #endif #if !defined(JSON_HEDLEY_ASSUME) #if defined(JSON_HEDLEY_UNREACHABLE) #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (JSON_HEDLEY_UNREACHABLE(), 1))) #else #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, expr) #endif #endif #if defined(JSON_HEDLEY_UNREACHABLE) #if \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (JSON_HEDLEY_STATIC_CAST(void, JSON_HEDLEY_ASSUME(0)), (value)) #else #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE() #endif #else #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (value) #endif #if !defined(JSON_HEDLEY_UNREACHABLE) #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) #endif JSON_HEDLEY_DIAGNOSTIC_PUSH #if JSON_HEDLEY_HAS_WARNING("-Wpedantic") #pragma clang diagnostic ignored "-Wpedantic" #endif #if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus) #pragma clang diagnostic ignored "-Wc++98-compat-pedantic" #endif #if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0) #if defined(__clang__) #pragma clang diagnostic ignored "-Wvariadic-macros" #elif defined(JSON_HEDLEY_GCC_VERSION) #pragma GCC diagnostic ignored "-Wvariadic-macros" #endif #endif #if defined(JSON_HEDLEY_NON_NULL) #undef JSON_HEDLEY_NON_NULL #endif #if \ JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \ JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__))) #else #define JSON_HEDLEY_NON_NULL(...) #endif JSON_HEDLEY_DIAGNOSTIC_POP #if defined(JSON_HEDLEY_PRINTF_FORMAT) #undef JSON_HEDLEY_PRINTF_FORMAT #endif #if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO) #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check))) #elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO) #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check))) #elif \ JSON_HEDLEY_HAS_ATTRIBUTE(format) || \ JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check))) #elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0) #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check)) #else #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) #endif #if defined(JSON_HEDLEY_CONSTEXPR) #undef JSON_HEDLEY_CONSTEXPR #endif #if defined(__cplusplus) #if __cplusplus >= 201103L #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr) #endif #endif #if !defined(JSON_HEDLEY_CONSTEXPR) #define JSON_HEDLEY_CONSTEXPR #endif #if defined(JSON_HEDLEY_PREDICT) #undef JSON_HEDLEY_PREDICT #endif #if defined(JSON_HEDLEY_LIKELY) #undef JSON_HEDLEY_LIKELY #endif #if defined(JSON_HEDLEY_UNLIKELY) #undef JSON_HEDLEY_UNLIKELY #endif #if defined(JSON_HEDLEY_UNPREDICTABLE) #undef JSON_HEDLEY_UNPREDICTABLE #endif #if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable) #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr)) #endif #if \ (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) && !defined(JSON_HEDLEY_PGI_VERSION)) || \ JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) # define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability)) # define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability)) # define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability)) # define JSON_HEDLEY_LIKELY(expr) __builtin_expect (!!(expr), 1 ) # define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect (!!(expr), 0 ) #elif \ (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27) || \ JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) # define JSON_HEDLEY_PREDICT(expr, expected, probability) \ (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))) # define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \ (__extension__ ({ \ double hedley_probability_ = (probability); \ ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \ })) # define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \ (__extension__ ({ \ double hedley_probability_ = (probability); \ ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \ })) # define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1) # define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0) #else # define JSON_HEDLEY_PREDICT(expr, expected, probability) (JSON_HEDLEY_STATIC_CAST(void, expected), (expr)) # define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr)) # define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr)) # define JSON_HEDLEY_LIKELY(expr) (!!(expr)) # define JSON_HEDLEY_UNLIKELY(expr) (!!(expr)) #endif #if !defined(JSON_HEDLEY_UNPREDICTABLE) #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5) #endif #if defined(JSON_HEDLEY_MALLOC) #undef JSON_HEDLEY_MALLOC #endif #if \ JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \ JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_MALLOC __attribute__((__malloc__)) #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory") #elif \ JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) #define JSON_HEDLEY_MALLOC __declspec(restrict) #else #define JSON_HEDLEY_MALLOC #endif #if defined(JSON_HEDLEY_PURE) #undef JSON_HEDLEY_PURE #endif #if \ JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \ JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) # define JSON_HEDLEY_PURE __attribute__((__pure__)) #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) # define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data") #elif defined(__cplusplus) && \ ( \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) \ ) # define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;") #else # define JSON_HEDLEY_PURE #endif #if defined(JSON_HEDLEY_CONST) #undef JSON_HEDLEY_CONST #endif #if \ JSON_HEDLEY_HAS_ATTRIBUTE(const) || \ JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_CONST __attribute__((__const__)) #elif \ JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) #define JSON_HEDLEY_CONST _Pragma("no_side_effect") #else #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE #endif #if defined(JSON_HEDLEY_RESTRICT) #undef JSON_HEDLEY_RESTRICT #endif #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus) #define JSON_HEDLEY_RESTRICT restrict #elif \ JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,4) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \ JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ defined(__clang__) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_RESTRICT __restrict #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus) #define JSON_HEDLEY_RESTRICT _Restrict #else #define JSON_HEDLEY_RESTRICT #endif #if defined(JSON_HEDLEY_INLINE) #undef JSON_HEDLEY_INLINE #endif #if \ (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ (defined(__cplusplus) && (__cplusplus >= 199711L)) #define JSON_HEDLEY_INLINE inline #elif \ defined(JSON_HEDLEY_GCC_VERSION) || \ JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0) #define JSON_HEDLEY_INLINE __inline__ #elif \ JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,1,0) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_INLINE __inline #else #define JSON_HEDLEY_INLINE #endif #if defined(JSON_HEDLEY_ALWAYS_INLINE) #undef JSON_HEDLEY_ALWAYS_INLINE #endif #if \ JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \ JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) # define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE #elif \ JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) # define JSON_HEDLEY_ALWAYS_INLINE __forceinline #elif defined(__cplusplus) && \ ( \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) \ ) # define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;") #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) # define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced") #else # define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE #endif #if defined(JSON_HEDLEY_NEVER_INLINE) #undef JSON_HEDLEY_NEVER_INLINE #endif #if \ JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \ JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__)) #elif \ JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) #elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0) #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline") #elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;") #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never") #elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline)) #elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) #else #define JSON_HEDLEY_NEVER_INLINE #endif #if defined(JSON_HEDLEY_PRIVATE) #undef JSON_HEDLEY_PRIVATE #endif #if defined(JSON_HEDLEY_PUBLIC) #undef JSON_HEDLEY_PUBLIC #endif #if defined(JSON_HEDLEY_IMPORT) #undef JSON_HEDLEY_IMPORT #endif #if defined(_WIN32) || defined(__CYGWIN__) # define JSON_HEDLEY_PRIVATE # define JSON_HEDLEY_PUBLIC __declspec(dllexport) # define JSON_HEDLEY_IMPORT __declspec(dllimport) #else # if \ JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \ JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ ( \ defined(__TI_EABI__) && \ ( \ (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) \ ) \ ) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) # define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden"))) # define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default"))) # else # define JSON_HEDLEY_PRIVATE # define JSON_HEDLEY_PUBLIC # endif # define JSON_HEDLEY_IMPORT extern #endif #if defined(JSON_HEDLEY_NO_THROW) #undef JSON_HEDLEY_NO_THROW #endif #if \ JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \ JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__)) #elif \ JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) #define JSON_HEDLEY_NO_THROW __declspec(nothrow) #else #define JSON_HEDLEY_NO_THROW #endif #if defined(JSON_HEDLEY_FALL_THROUGH) #undef JSON_HEDLEY_FALL_THROUGH #endif #if \ JSON_HEDLEY_HAS_ATTRIBUTE(fallthrough) || \ JSON_HEDLEY_GCC_VERSION_CHECK(7,0,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__)) #elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough) #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]]) #elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough) #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]]) #elif defined(__fallthrough) /* SAL */ #define JSON_HEDLEY_FALL_THROUGH __fallthrough #else #define JSON_HEDLEY_FALL_THROUGH #endif #if defined(JSON_HEDLEY_RETURNS_NON_NULL) #undef JSON_HEDLEY_RETURNS_NON_NULL #endif #if \ JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \ JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__)) #elif defined(_Ret_notnull_) /* SAL */ #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_ #else #define JSON_HEDLEY_RETURNS_NON_NULL #endif #if defined(JSON_HEDLEY_ARRAY_PARAM) #undef JSON_HEDLEY_ARRAY_PARAM #endif #if \ defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ !defined(__STDC_NO_VLA__) && \ !defined(__cplusplus) && \ !defined(JSON_HEDLEY_PGI_VERSION) && \ !defined(JSON_HEDLEY_TINYC_VERSION) #define JSON_HEDLEY_ARRAY_PARAM(name) (name) #else #define JSON_HEDLEY_ARRAY_PARAM(name) #endif #if defined(JSON_HEDLEY_IS_CONSTANT) #undef JSON_HEDLEY_IS_CONSTANT #endif #if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR) #undef JSON_HEDLEY_REQUIRE_CONSTEXPR #endif /* JSON_HEDLEY_IS_CONSTEXPR_ is for HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ #if defined(JSON_HEDLEY_IS_CONSTEXPR_) #undef JSON_HEDLEY_IS_CONSTEXPR_ #endif #if \ JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \ JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \ JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \ JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr) #endif #if !defined(__cplusplus) # if \ JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \ JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24) #if defined(__INTPTR_TYPE__) #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*) #else #include #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*) #endif # elif \ ( \ defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ !defined(JSON_HEDLEY_SUNPRO_VERSION) && \ !defined(JSON_HEDLEY_PGI_VERSION) && \ !defined(JSON_HEDLEY_IAR_VERSION)) || \ (JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \ JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0) #if defined(__INTPTR_TYPE__) #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0) #else #include #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0) #endif # elif \ defined(JSON_HEDLEY_GCC_VERSION) || \ defined(JSON_HEDLEY_INTEL_VERSION) || \ defined(JSON_HEDLEY_TINYC_VERSION) || \ defined(JSON_HEDLEY_TI_ARMCL_VERSION) || \ JSON_HEDLEY_TI_CL430_VERSION_CHECK(18,12,0) || \ defined(JSON_HEDLEY_TI_CL2000_VERSION) || \ defined(JSON_HEDLEY_TI_CL6X_VERSION) || \ defined(JSON_HEDLEY_TI_CL7X_VERSION) || \ defined(JSON_HEDLEY_TI_CLPRU_VERSION) || \ defined(__clang__) # define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \ sizeof(void) != \ sizeof(*( \ 1 ? \ ((void*) ((expr) * 0L) ) : \ ((struct { char v[sizeof(void) * 2]; } *) 1) \ ) \ ) \ ) # endif #endif #if defined(JSON_HEDLEY_IS_CONSTEXPR_) #if !defined(JSON_HEDLEY_IS_CONSTANT) #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr) #endif #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1)) #else #if !defined(JSON_HEDLEY_IS_CONSTANT) #define JSON_HEDLEY_IS_CONSTANT(expr) (0) #endif #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr) #endif #if defined(JSON_HEDLEY_BEGIN_C_DECLS) #undef JSON_HEDLEY_BEGIN_C_DECLS #endif #if defined(JSON_HEDLEY_END_C_DECLS) #undef JSON_HEDLEY_END_C_DECLS #endif #if defined(JSON_HEDLEY_C_DECL) #undef JSON_HEDLEY_C_DECL #endif #if defined(__cplusplus) #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" { #define JSON_HEDLEY_END_C_DECLS } #define JSON_HEDLEY_C_DECL extern "C" #else #define JSON_HEDLEY_BEGIN_C_DECLS #define JSON_HEDLEY_END_C_DECLS #define JSON_HEDLEY_C_DECL #endif #if defined(JSON_HEDLEY_STATIC_ASSERT) #undef JSON_HEDLEY_STATIC_ASSERT #endif #if \ !defined(__cplusplus) && ( \ (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \ (JSON_HEDLEY_HAS_FEATURE(c_static_assert) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ defined(_Static_assert) \ ) # define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message) #elif \ (defined(__cplusplus) && (__cplusplus >= 201103L)) || \ JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) # define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message)) #else # define JSON_HEDLEY_STATIC_ASSERT(expr, message) #endif #if defined(JSON_HEDLEY_NULL) #undef JSON_HEDLEY_NULL #endif #if defined(__cplusplus) #if __cplusplus >= 201103L #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr) #elif defined(NULL) #define JSON_HEDLEY_NULL NULL #else #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0) #endif #elif defined(NULL) #define JSON_HEDLEY_NULL NULL #else #define JSON_HEDLEY_NULL ((void*) 0) #endif #if defined(JSON_HEDLEY_MESSAGE) #undef JSON_HEDLEY_MESSAGE #endif #if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") # define JSON_HEDLEY_MESSAGE(msg) \ JSON_HEDLEY_DIAGNOSTIC_PUSH \ JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ JSON_HEDLEY_PRAGMA(message msg) \ JSON_HEDLEY_DIAGNOSTIC_POP #elif \ JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg) #elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg) #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) #elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0) # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) #else # define JSON_HEDLEY_MESSAGE(msg) #endif #if defined(JSON_HEDLEY_WARNING) #undef JSON_HEDLEY_WARNING #endif #if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") # define JSON_HEDLEY_WARNING(msg) \ JSON_HEDLEY_DIAGNOSTIC_PUSH \ JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ JSON_HEDLEY_PRAGMA(clang warning msg) \ JSON_HEDLEY_DIAGNOSTIC_POP #elif \ JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \ JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) # define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg) #elif \ JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) # define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg)) #else # define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg) #endif #if defined(JSON_HEDLEY_REQUIRE) #undef JSON_HEDLEY_REQUIRE #endif #if defined(JSON_HEDLEY_REQUIRE_MSG) #undef JSON_HEDLEY_REQUIRE_MSG #endif #if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if) # if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat") # define JSON_HEDLEY_REQUIRE(expr) \ JSON_HEDLEY_DIAGNOSTIC_PUSH \ _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ __attribute__((diagnose_if(!(expr), #expr, "error"))) \ JSON_HEDLEY_DIAGNOSTIC_POP # define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \ JSON_HEDLEY_DIAGNOSTIC_PUSH \ _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ __attribute__((diagnose_if(!(expr), msg, "error"))) \ JSON_HEDLEY_DIAGNOSTIC_POP # else # define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error"))) # define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error"))) # endif #else # define JSON_HEDLEY_REQUIRE(expr) # define JSON_HEDLEY_REQUIRE_MSG(expr,msg) #endif #if defined(JSON_HEDLEY_FLAGS) #undef JSON_HEDLEY_FLAGS #endif #if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum) && (!defined(__cplusplus) || JSON_HEDLEY_HAS_WARNING("-Wbitfield-enum-conversion")) #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__)) #else #define JSON_HEDLEY_FLAGS #endif #if defined(JSON_HEDLEY_FLAGS_CAST) #undef JSON_HEDLEY_FLAGS_CAST #endif #if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0) # define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \ JSON_HEDLEY_DIAGNOSTIC_PUSH \ _Pragma("warning(disable:188)") \ ((T) (expr)); \ JSON_HEDLEY_DIAGNOSTIC_POP \ })) #else # define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr) #endif #if defined(JSON_HEDLEY_EMPTY_BASES) #undef JSON_HEDLEY_EMPTY_BASES #endif #if \ (JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)) || \ JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases) #else #define JSON_HEDLEY_EMPTY_BASES #endif /* Remaining macros are deprecated. */ #if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK) #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK #endif #if defined(__clang__) #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0) #else #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) #endif #if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE) #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE #endif #define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) #if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE) #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE #endif #define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) #if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN) #undef JSON_HEDLEY_CLANG_HAS_BUILTIN #endif #define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin) #if defined(JSON_HEDLEY_CLANG_HAS_FEATURE) #undef JSON_HEDLEY_CLANG_HAS_FEATURE #endif #define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature) #if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION) #undef JSON_HEDLEY_CLANG_HAS_EXTENSION #endif #define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension) #if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE) #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE #endif #define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) #if defined(JSON_HEDLEY_CLANG_HAS_WARNING) #undef JSON_HEDLEY_CLANG_HAS_WARNING #endif #define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning) #endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */ // This file contains all internal macro definitions (except those affecting ABI) // You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them // #include // exclude unsupported compilers #if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) #if defined(__clang__) #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" #endif #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" #endif #endif #endif // C++ language standard detection // if the user manually specified the used c++ version this is skipped #if !defined(JSON_HAS_CPP_23) && !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) #if (defined(__cplusplus) && __cplusplus > 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG > 202002L) #define JSON_HAS_CPP_23 #define JSON_HAS_CPP_20 #define JSON_HAS_CPP_17 #define JSON_HAS_CPP_14 #elif (defined(__cplusplus) && __cplusplus > 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG > 201703L) #define JSON_HAS_CPP_20 #define JSON_HAS_CPP_17 #define JSON_HAS_CPP_14 #elif (defined(__cplusplus) && __cplusplus > 201402L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 #define JSON_HAS_CPP_17 #define JSON_HAS_CPP_14 #elif (defined(__cplusplus) && __cplusplus > 201103L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) #define JSON_HAS_CPP_14 #endif // the cpp 11 flag is always specified because it is the minimal required version #define JSON_HAS_CPP_11 #endif #ifdef __has_include #if __has_include() #include #endif #endif #if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM) #ifdef JSON_HAS_CPP_17 #if defined(__cpp_lib_filesystem) #define JSON_HAS_FILESYSTEM 1 #elif defined(__cpp_lib_experimental_filesystem) #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 #elif !defined(__has_include) #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 #elif __has_include() #define JSON_HAS_FILESYSTEM 1 #elif __has_include() #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 #endif // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/ #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #endif // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #endif // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support #if defined(__clang_major__) && __clang_major__ < 7 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #endif // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support #if defined(_MSC_VER) && _MSC_VER < 1914 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #endif // no filesystem support before iOS 13 #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #endif // no filesystem support before macOS Catalina #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #endif #endif #endif #ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0 #endif #ifndef JSON_HAS_FILESYSTEM #define JSON_HAS_FILESYSTEM 0 #endif #ifndef JSON_HAS_THREE_WAY_COMPARISON #if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L \ && defined(__cpp_lib_three_way_comparison) && __cpp_lib_three_way_comparison >= 201907L #define JSON_HAS_THREE_WAY_COMPARISON 1 #else #define JSON_HAS_THREE_WAY_COMPARISON 0 #endif #endif #ifndef JSON_HAS_RANGES // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has syntax error #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 #define JSON_HAS_RANGES 0 #elif defined(__cpp_lib_ranges) #define JSON_HAS_RANGES 1 #else #define JSON_HAS_RANGES 0 #endif #endif #ifndef JSON_HAS_STATIC_RTTI #if !defined(_HAS_STATIC_RTTI) || _HAS_STATIC_RTTI != 0 #define JSON_HAS_STATIC_RTTI 1 #else #define JSON_HAS_STATIC_RTTI 0 #endif #endif #ifdef JSON_HAS_CPP_17 #define JSON_INLINE_VARIABLE inline #else #define JSON_INLINE_VARIABLE #endif #if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address) #define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]] #else #define JSON_NO_UNIQUE_ADDRESS #endif // disable documentation warnings on clang #if defined(__clang__) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdocumentation" #pragma clang diagnostic ignored "-Wdocumentation-unknown-command" #endif // allow disabling exceptions #if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) #define JSON_THROW(exception) throw exception #define JSON_TRY try #define JSON_CATCH(exception) catch(exception) #define JSON_INTERNAL_CATCH(exception) catch(exception) #else #include #define JSON_THROW(exception) std::abort() #define JSON_TRY if(true) #define JSON_CATCH(exception) if(false) #define JSON_INTERNAL_CATCH(exception) if(false) #endif // override exception macros #if defined(JSON_THROW_USER) #undef JSON_THROW #define JSON_THROW JSON_THROW_USER #endif #if defined(JSON_TRY_USER) #undef JSON_TRY #define JSON_TRY JSON_TRY_USER #endif #if defined(JSON_CATCH_USER) #undef JSON_CATCH #define JSON_CATCH JSON_CATCH_USER #undef JSON_INTERNAL_CATCH #define JSON_INTERNAL_CATCH JSON_CATCH_USER #endif #if defined(JSON_INTERNAL_CATCH_USER) #undef JSON_INTERNAL_CATCH #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER #endif // allow overriding assert #if !defined(JSON_ASSERT) #include // assert #define JSON_ASSERT(x) assert(x) #endif // allow to access some private functions (needed by the test suite) #if defined(JSON_TESTS_PRIVATE) #define JSON_PRIVATE_UNLESS_TESTED public #else #define JSON_PRIVATE_UNLESS_TESTED private #endif /*! @brief macro to briefly define a mapping between an enum and JSON @def NLOHMANN_JSON_SERIALIZE_ENUM @since version 3.4.0 */ #define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ template \ inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ { \ /* NOLINTNEXTLINE(modernize-type-traits) we use C++11 */ \ static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ /* NOLINTNEXTLINE(modernize-avoid-c-arrays) we don't want to depend on */ \ static const std::pair m[] = __VA_ARGS__; \ auto it = std::find_if(std::begin(m), std::end(m), \ [e](const std::pair& ej_pair) -> bool \ { \ return ej_pair.first == e; \ }); \ j = ((it != std::end(m)) ? it : std::begin(m))->second; \ } \ template \ inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ { \ /* NOLINTNEXTLINE(modernize-type-traits) we use C++11 */ \ static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ /* NOLINTNEXTLINE(modernize-avoid-c-arrays) we don't want to depend on */ \ static const std::pair m[] = __VA_ARGS__; \ auto it = std::find_if(std::begin(m), std::end(m), \ [&j](const std::pair& ej_pair) -> bool \ { \ return ej_pair.second == j; \ }); \ e = ((it != std::end(m)) ? it : std::begin(m))->first; \ } // Ugly macros to avoid uglier copy-paste when specializing basic_json. They // may be removed in the future once the class is split. #define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ template class ObjectType, \ template class ArrayType, \ class StringType, class BooleanType, class NumberIntegerType, \ class NumberUnsignedType, class NumberFloatType, \ template class AllocatorType, \ template class JSONSerializer, \ class BinaryType, \ class CustomBaseClass> #define NLOHMANN_BASIC_JSON_TPL \ basic_json // Macros to simplify conversion from/to types #define NLOHMANN_JSON_EXPAND( x ) x #define NLOHMANN_JSON_GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME #define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ NLOHMANN_JSON_PASTE64, \ NLOHMANN_JSON_PASTE63, \ NLOHMANN_JSON_PASTE62, \ NLOHMANN_JSON_PASTE61, \ NLOHMANN_JSON_PASTE60, \ NLOHMANN_JSON_PASTE59, \ NLOHMANN_JSON_PASTE58, \ NLOHMANN_JSON_PASTE57, \ NLOHMANN_JSON_PASTE56, \ NLOHMANN_JSON_PASTE55, \ NLOHMANN_JSON_PASTE54, \ NLOHMANN_JSON_PASTE53, \ NLOHMANN_JSON_PASTE52, \ NLOHMANN_JSON_PASTE51, \ NLOHMANN_JSON_PASTE50, \ NLOHMANN_JSON_PASTE49, \ NLOHMANN_JSON_PASTE48, \ NLOHMANN_JSON_PASTE47, \ NLOHMANN_JSON_PASTE46, \ NLOHMANN_JSON_PASTE45, \ NLOHMANN_JSON_PASTE44, \ NLOHMANN_JSON_PASTE43, \ NLOHMANN_JSON_PASTE42, \ NLOHMANN_JSON_PASTE41, \ NLOHMANN_JSON_PASTE40, \ NLOHMANN_JSON_PASTE39, \ NLOHMANN_JSON_PASTE38, \ NLOHMANN_JSON_PASTE37, \ NLOHMANN_JSON_PASTE36, \ NLOHMANN_JSON_PASTE35, \ NLOHMANN_JSON_PASTE34, \ NLOHMANN_JSON_PASTE33, \ NLOHMANN_JSON_PASTE32, \ NLOHMANN_JSON_PASTE31, \ NLOHMANN_JSON_PASTE30, \ NLOHMANN_JSON_PASTE29, \ NLOHMANN_JSON_PASTE28, \ NLOHMANN_JSON_PASTE27, \ NLOHMANN_JSON_PASTE26, \ NLOHMANN_JSON_PASTE25, \ NLOHMANN_JSON_PASTE24, \ NLOHMANN_JSON_PASTE23, \ NLOHMANN_JSON_PASTE22, \ NLOHMANN_JSON_PASTE21, \ NLOHMANN_JSON_PASTE20, \ NLOHMANN_JSON_PASTE19, \ NLOHMANN_JSON_PASTE18, \ NLOHMANN_JSON_PASTE17, \ NLOHMANN_JSON_PASTE16, \ NLOHMANN_JSON_PASTE15, \ NLOHMANN_JSON_PASTE14, \ NLOHMANN_JSON_PASTE13, \ NLOHMANN_JSON_PASTE12, \ NLOHMANN_JSON_PASTE11, \ NLOHMANN_JSON_PASTE10, \ NLOHMANN_JSON_PASTE9, \ NLOHMANN_JSON_PASTE8, \ NLOHMANN_JSON_PASTE7, \ NLOHMANN_JSON_PASTE6, \ NLOHMANN_JSON_PASTE5, \ NLOHMANN_JSON_PASTE4, \ NLOHMANN_JSON_PASTE3, \ NLOHMANN_JSON_PASTE2, \ NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) #define NLOHMANN_JSON_PASTE2(func, v1) func(v1) #define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) #define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) #define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) #define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) #define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) #define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) #define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) #define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) #define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) #define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) #define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) #define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) #define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) #define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) #define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) #define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) #define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) #define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) #define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) #define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) #define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) #define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) #define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) #define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) #define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) #define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) #define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) #define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) #define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) #define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) #define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) #define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) #define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) #define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) #define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) #define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) #define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) #define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) #define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) #define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) #define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) #define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) #define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) #define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) #define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) #define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) #define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) #define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) #define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) #define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) #define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) #define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) #define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) #define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) #define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) #define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) #define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) #define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) #define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) #define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) #define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) #define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) #define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; #define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); #define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = !nlohmann_json_j.is_null() ? nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1) : nlohmann_json_default_obj.v1; /*! @brief macro @def NLOHMANN_DEFINE_TYPE_INTRUSIVE @since version 3.9.0 @sa https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ */ #define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ template::value, int> = 0> \ friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ template::value, int> = 0> \ friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } /*! @brief macro @def NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT @since version 3.11.0 @sa https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ */ #define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \ template::value, int> = 0> \ friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ template::value, int> = 0> \ friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } /*! @brief macro @def NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE @since version 3.11.3 @sa https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ */ #define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ template::value, int> = 0> \ friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } /*! @brief macro @def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE @since version 3.9.0 @sa https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ */ #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ template::value, int> = 0> \ void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ template::value, int> = 0> \ void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } /*! @brief macro @def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT @since version 3.11.0 @sa https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ */ #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \ template::value, int> = 0> \ void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ template::value, int> = 0> \ void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } /*! @brief macro @def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE @since version 3.11.3 @sa https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ */ #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ template::value, int> = 0> \ void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } /*! @brief macro @def NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE @since version 3.12.0 @sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ */ #define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(Type, BaseType, ...) \ template::value, int> = 0> \ friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ template::value, int> = 0> \ friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } /*! @brief macro @def NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT @since version 3.12.0 @sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ */ #define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT(Type, BaseType, ...) \ template::value, int> = 0> \ friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ template::value, int> = 0> \ friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } /*! @brief macro @def NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE @since version 3.12.0 @sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ */ #define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, BaseType, ...) \ template::value, int> = 0> \ friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } /*! @brief macro @def NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE @since version 3.12.0 @sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ */ #define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE(Type, BaseType, ...) \ template::value, int> = 0> \ void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ template::value, int> = 0> \ void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } /*! @brief macro @def NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT @since version 3.12.0 @sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ */ #define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, BaseType, ...) \ template::value, int> = 0> \ void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ template::value, int> = 0> \ void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } /*! @brief macro @def NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE @since version 3.12.0 @sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ */ #define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, BaseType, ...) \ template::value, int> = 0> \ void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } // inspired from https://stackoverflow.com/a/26745591 // allows calling any std function as if (e.g., with begin): // using std::begin; begin(x); // // it allows using the detected idiom to retrieve the return type // of such an expression #define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \ namespace detail { \ using std::std_name; \ \ template \ using result_of_##std_name = decltype(std_name(std::declval()...)); \ } \ \ namespace detail2 { \ struct std_name##_tag \ { \ }; \ \ template \ std_name##_tag std_name(T&&...); \ \ template \ using result_of_##std_name = decltype(std_name(std::declval()...)); \ \ template \ struct would_call_std_##std_name \ { \ static constexpr auto const value = ::nlohmann::detail:: \ is_detected_exact::value; \ }; \ } /* namespace detail2 */ \ \ template \ struct would_call_std_##std_name : detail2::would_call_std_##std_name \ { \ } #ifndef JSON_USE_IMPLICIT_CONVERSIONS #define JSON_USE_IMPLICIT_CONVERSIONS 1 #endif #if JSON_USE_IMPLICIT_CONVERSIONS #define JSON_EXPLICIT #else #define JSON_EXPLICIT explicit #endif #ifndef JSON_DISABLE_ENUM_SERIALIZATION #define JSON_DISABLE_ENUM_SERIALIZATION 0 #endif #ifndef JSON_USE_GLOBAL_UDLS #define JSON_USE_GLOBAL_UDLS 1 #endif #if JSON_HAS_THREE_WAY_COMPARISON #include // partial_ordering #endif NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /////////////////////////// // JSON type enumeration // /////////////////////////// /*! @brief the JSON type enumeration This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions @ref basic_json::is_null(), @ref basic_json::is_object(), @ref basic_json::is_array(), @ref basic_json::is_string(), @ref basic_json::is_boolean(), @ref basic_json::is_number() (with @ref basic_json::is_number_integer(), @ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), @ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and @ref basic_json::is_structured() rely on it. @note There are three enumeration entries (number_integer, number_unsigned, and number_float), because the library distinguishes these three types for numbers: @ref basic_json::number_unsigned_t is used for unsigned integers, @ref basic_json::number_integer_t is used for signed integers, and @ref basic_json::number_float_t is used for floating-point numbers or to approximate integers which do not fit in the limits of their respective type. @sa see @ref basic_json::basic_json(const value_t value_type) -- create a JSON value with the default value for a given type @since version 1.0.0 */ enum class value_t : std::uint8_t { null, ///< null value object, ///< object (unordered set of name/value pairs) array, ///< array (ordered collection of values) string, ///< string value boolean, ///< boolean value number_integer, ///< number value (signed integer) number_unsigned, ///< number value (unsigned integer) number_float, ///< number value (floating-point) binary, ///< binary array (ordered collection of bytes) discarded ///< discarded by the parser callback function }; /*! @brief comparison operator for JSON types Returns an ordering that is similar to Python: - order: null < boolean < number < object < array < string < binary - furthermore, each type is not smaller than itself - discarded values are not comparable - binary is represented as a b"" string in python and directly comparable to a string; however, making a binary array directly comparable with a string would be surprising behavior in a JSON file. @since version 1.0.0 */ #if JSON_HAS_THREE_WAY_COMPARISON inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD* #else inline bool operator<(const value_t lhs, const value_t rhs) noexcept #endif { static constexpr std::array order = {{ 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */, 6 /* binary */ } }; const auto l_index = static_cast(lhs); const auto r_index = static_cast(rhs); #if JSON_HAS_THREE_WAY_COMPARISON if (l_index < order.size() && r_index < order.size()) { return order[l_index] <=> order[r_index]; // *NOPAD* } return std::partial_ordering::unordered; #else return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index]; #endif } // GCC selects the built-in operator< over an operator rewritten from // a user-defined spaceship operator // Clang, MSVC, and ICC select the rewritten candidate // (see GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105200) #if JSON_HAS_THREE_WAY_COMPARISON && defined(__GNUC__) inline bool operator<(const value_t lhs, const value_t rhs) noexcept { return std::is_lt(lhs <=> rhs); // *NOPAD* } #endif } // namespace detail NLOHMANN_JSON_NAMESPACE_END // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT // #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /*! @brief replace all occurrences of a substring by another string @param[in,out] s the string to manipulate; changed so that all occurrences of @a f are replaced with @a t @param[in] f the substring to replace with @a t @param[in] t the string to replace @a f @pre The search string @a f must not be empty. **This precondition is enforced with an assertion.** @since version 2.0.0 */ template inline void replace_substring(StringType& s, const StringType& f, const StringType& t) { JSON_ASSERT(!f.empty()); for (auto pos = s.find(f); // find first occurrence of f pos != StringType::npos; // make sure f was found s.replace(pos, f.size(), t), // replace with t, and pos = s.find(f, pos + t.size())) // find next occurrence of f {} } /*! * @brief string escaping as described in RFC 6901 (Sect. 4) * @param[in] s string to escape * @return escaped string * * Note the order of escaping "~" to "~0" and "/" to "~1" is important. */ template inline StringType escape(StringType s) { replace_substring(s, StringType{"~"}, StringType{"~0"}); replace_substring(s, StringType{"/"}, StringType{"~1"}); return s; } /*! * @brief string unescaping as described in RFC 6901 (Sect. 4) * @param[in] s string to unescape * @return unescaped string * * Note the order of escaping "~1" to "/" and "~0" to "~" is important. */ template static void unescape(StringType& s) { replace_substring(s, StringType{"~1"}, StringType{"/"}); replace_substring(s, StringType{"~0"}, StringType{"~"}); } } // namespace detail NLOHMANN_JSON_NAMESPACE_END // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT #include // size_t // #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /// struct to capture the start position of the current token struct position_t { /// the total number of characters read std::size_t chars_read_total = 0; /// the number of characters read in the current line std::size_t chars_read_current_line = 0; /// the number of lines read std::size_t lines_read = 0; /// conversion to size_t to preserve SAX interface constexpr operator size_t() const { return chars_read_total; } }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END // #include // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-FileCopyrightText: 2018 The Abseil Authors // SPDX-License-Identifier: MIT #include // array #include // size_t #include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type #include // index_sequence, make_index_sequence, index_sequence_for // #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template using uncvref_t = typename std::remove_cv::type>::type; #ifdef JSON_HAS_CPP_14 // the following utilities are natively available in C++14 using std::enable_if_t; using std::index_sequence; using std::make_index_sequence; using std::index_sequence_for; #else // alias templates to reduce boilerplate template using enable_if_t = typename std::enable_if::type; // The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h // which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. //// START OF CODE FROM GOOGLE ABSEIL // integer_sequence // // Class template representing a compile-time integer sequence. An instantiation // of `integer_sequence` has a sequence of integers encoded in its // type through its template arguments (which is a common need when // working with C++11 variadic templates). `absl::integer_sequence` is designed // to be a drop-in replacement for C++14's `std::integer_sequence`. // // Example: // // template< class T, T... Ints > // void user_function(integer_sequence); // // int main() // { // // user_function's `T` will be deduced to `int` and `Ints...` // // will be deduced to `0, 1, 2, 3, 4`. // user_function(make_integer_sequence()); // } template struct integer_sequence { using value_type = T; static constexpr std::size_t size() noexcept { return sizeof...(Ints); } }; // index_sequence // // A helper template for an `integer_sequence` of `size_t`, // `absl::index_sequence` is designed to be a drop-in replacement for C++14's // `std::index_sequence`. template using index_sequence = integer_sequence; namespace utility_internal { template struct Extend; // Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. template struct Extend, SeqSize, 0> { using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; }; template struct Extend, SeqSize, 1> { using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; }; // Recursion helper for 'make_integer_sequence'. // 'Gen::type' is an alias for 'integer_sequence'. template struct Gen { using type = typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; }; template struct Gen { using type = integer_sequence; }; } // namespace utility_internal // Compile-time sequences of integers // make_integer_sequence // // This template alias is equivalent to // `integer_sequence`, and is designed to be a drop-in // replacement for C++14's `std::make_integer_sequence`. template using make_integer_sequence = typename utility_internal::Gen::type; // make_index_sequence // // This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, // and is designed to be a drop-in replacement for C++14's // `std::make_index_sequence`. template using make_index_sequence = make_integer_sequence; // index_sequence_for // // Converts a typename pack into an index sequence of the same length, and // is designed to be a drop-in replacement for C++14's // `std::index_sequence_for()` template using index_sequence_for = make_index_sequence; //// END OF CODE FROM GOOGLE ABSEIL #endif // dispatch utility (taken from ranges-v3) template struct priority_tag : priority_tag < N - 1 > {}; template<> struct priority_tag<0> {}; // taken from ranges-v3 template struct static_const { static JSON_INLINE_VARIABLE constexpr T value{}; }; #ifndef JSON_HAS_CPP_17 template constexpr T static_const::value; #endif template constexpr std::array make_array(Args&& ... args) { return std::array {{static_cast(std::forward(args))...}}; } } // namespace detail NLOHMANN_JSON_NAMESPACE_END // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT #include // numeric_limits #include // char_traits #include // tuple #include // false_type, is_constructible, is_integral, is_same, true_type #include // declval // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT #include // random_access_iterator_tag // #include // #include // #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template struct iterator_types {}; template struct iterator_types < It, void_t> { using difference_type = typename It::difference_type; using value_type = typename It::value_type; using pointer = typename It::pointer; using reference = typename It::reference; using iterator_category = typename It::iterator_category; }; // This is required as some compilers implement std::iterator_traits in a way that // doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. template struct iterator_traits { }; template struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> : iterator_types { }; template struct iterator_traits::value>> { using iterator_category = std::random_access_iterator_tag; using value_type = T; using difference_type = ptrdiff_t; using pointer = T*; using reference = T&; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END // #include // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT // #include NLOHMANN_JSON_NAMESPACE_BEGIN NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); NLOHMANN_JSON_NAMESPACE_END // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT // #include NLOHMANN_JSON_NAMESPACE_BEGIN NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); NLOHMANN_JSON_NAMESPACE_END // #include // #include // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann // SPDX-License-Identifier: MIT #ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ #define INCLUDE_NLOHMANN_JSON_FWD_HPP_ #include // int64_t, uint64_t #include // map #include // allocator #include // string #include // vector // #include /*! @brief namespace for Niels Lohmann @see https://github.com/nlohmann @since version 1.0.0 */ NLOHMANN_JSON_NAMESPACE_BEGIN /*! @brief default JSONSerializer template argument This serializer ignores the template arguments and uses ADL ([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) for serialization. */ template struct adl_serializer; /// a class to store JSON values /// @sa https://json.nlohmann.me/api/basic_json/ template class ObjectType = std::map, template class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template class AllocatorType = std::allocator, template class JSONSerializer = adl_serializer, class BinaryType = std::vector, // cppcheck-suppress syntaxError class CustomBaseClass = void> class basic_json; /// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document /// @sa https://json.nlohmann.me/api/json_pointer/ template class json_pointer; /*! @brief default specialization @sa https://json.nlohmann.me/api/json/ */ using json = basic_json<>; /// @brief a minimal map-like container that preserves insertion order /// @sa https://json.nlohmann.me/api/ordered_map/ template struct ordered_map; /// @brief specialization that maintains the insertion order of object keys /// @sa https://json.nlohmann.me/api/ordered_json/ using ordered_json = basic_json; NLOHMANN_JSON_NAMESPACE_END #endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ NLOHMANN_JSON_NAMESPACE_BEGIN /*! @brief detail namespace with internal helper functions This namespace collects functions that should not be exposed, implementations of some @ref basic_json methods, and meta-programming helpers. @since version 2.1.0 */ namespace detail { ///////////// // helpers // ///////////// // Note to maintainers: // // Every trait in this file expects a non CV-qualified type. // The only exceptions are in the 'aliases for detected' section // (i.e. those of the form: decltype(T::member_function(std::declval()))) // // In this case, T has to be properly CV-qualified to constraint the function arguments // (e.g. to_json(BasicJsonType&, const T&)) template struct is_basic_json : std::false_type {}; NLOHMANN_BASIC_JSON_TPL_DECLARATION struct is_basic_json : std::true_type {}; // used by exceptions create() member functions // true_type for pointer to possibly cv-qualified basic_json or std::nullptr_t // false_type otherwise template struct is_basic_json_context : std::integral_constant < bool, is_basic_json::type>::type>::value || std::is_same::value > {}; ////////////////////// // json_ref helpers // ////////////////////// template class json_ref; template struct is_json_ref : std::false_type {}; template struct is_json_ref> : std::true_type {}; ////////////////////////// // aliases for detected // ////////////////////////// template using mapped_type_t = typename T::mapped_type; template using key_type_t = typename T::key_type; template using value_type_t = typename T::value_type; template using difference_type_t = typename T::difference_type; template using pointer_t = typename T::pointer; template using reference_t = typename T::reference; template using iterator_category_t = typename T::iterator_category; template using to_json_function = decltype(T::to_json(std::declval()...)); template using from_json_function = decltype(T::from_json(std::declval()...)); template using get_template_function = decltype(std::declval().template get()); // trait checking if JSONSerializer::from_json(json const&, udt&) exists template struct has_from_json : std::false_type {}; // trait checking if j.get is valid // use this trait instead of std::is_constructible or std::is_convertible, // both rely on, or make use of implicit conversions, and thus fail when T // has several constructors/operator= (see https://github.com/nlohmann/json/issues/958) template struct is_getable { static constexpr bool value = is_detected::value; }; template struct has_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> { using serializer = typename BasicJsonType::template json_serializer; static constexpr bool value = is_detected_exact::value; }; // This trait checks if JSONSerializer::from_json(json const&) exists // this overload is used for non-default-constructible user-defined-types template struct has_non_default_from_json : std::false_type {}; template struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> { using serializer = typename BasicJsonType::template json_serializer; static constexpr bool value = is_detected_exact::value; }; // This trait checks if BasicJsonType::json_serializer::to_json exists // Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. template struct has_to_json : std::false_type {}; template struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> { using serializer = typename BasicJsonType::template json_serializer; static constexpr bool value = is_detected_exact::value; }; template using detect_key_compare = typename T::key_compare; template struct has_key_compare : std::integral_constant::value> {}; // obtains the actual object key comparator template struct actual_object_comparator { using object_t = typename BasicJsonType::object_t; using object_comparator_t = typename BasicJsonType::default_object_comparator_t; using type = typename std::conditional < has_key_compare::value, typename object_t::key_compare, object_comparator_t>::type; }; template using actual_object_comparator_t = typename actual_object_comparator::type; ///////////////// // char_traits // ///////////////// // Primary template of char_traits calls std char_traits template struct char_traits : std::char_traits {}; // Explicitly define char traits for unsigned char since it is not standard template<> struct char_traits : std::char_traits { using char_type = unsigned char; using int_type = uint64_t; // Redefine to_int_type function static int_type to_int_type(char_type c) noexcept { return static_cast(c); } static char_type to_char_type(int_type i) noexcept { return static_cast(i); } static constexpr int_type eof() noexcept { return static_cast(std::char_traits::eof()); } }; // Explicitly define char traits for signed char since it is not standard template<> struct char_traits : std::char_traits { using char_type = signed char; using int_type = uint64_t; // Redefine to_int_type function static int_type to_int_type(char_type c) noexcept { return static_cast(c); } static char_type to_char_type(int_type i) noexcept { return static_cast(i); } static constexpr int_type eof() noexcept { return static_cast(std::char_traits::eof()); } }; /////////////////// // is_ functions // /////////////////// // https://en.cppreference.com/w/cpp/types/conjunction template struct conjunction : std::true_type { }; template struct conjunction : B { }; template struct conjunction : std::conditional(B::value), conjunction, B>::type {}; // https://en.cppreference.com/w/cpp/types/negation template struct negation : std::integral_constant < bool, !B::value > { }; // Reimplementation of is_constructible and is_default_constructible, due to them being broken for // std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367). // This causes compile errors in e.g. clang 3.5 or gcc 4.9. template struct is_default_constructible : std::is_default_constructible {}; template struct is_default_constructible> : conjunction, is_default_constructible> {}; template struct is_default_constructible> : conjunction, is_default_constructible> {}; template struct is_default_constructible> : conjunction...> {}; template struct is_default_constructible> : conjunction...> {}; template struct is_constructible : std::is_constructible {}; template struct is_constructible> : is_default_constructible> {}; template struct is_constructible> : is_default_constructible> {}; template struct is_constructible> : is_default_constructible> {}; template struct is_constructible> : is_default_constructible> {}; template struct is_iterator_traits : std::false_type {}; template struct is_iterator_traits> { private: using traits = iterator_traits; public: static constexpr auto value = is_detected::value && is_detected::value && is_detected::value && is_detected::value && is_detected::value; }; template struct is_range { private: using t_ref = typename std::add_lvalue_reference::type; using iterator = detected_t; using sentinel = detected_t; // to be 100% correct, it should use https://en.cppreference.com/w/cpp/iterator/input_or_output_iterator // and https://en.cppreference.com/w/cpp/iterator/sentinel_for // but reimplementing these would be too much work, as a lot of other concepts are used underneath static constexpr auto is_iterator_begin = is_iterator_traits>::value; public: static constexpr bool value = !std::is_same::value && !std::is_same::value && is_iterator_begin; }; template using iterator_t = enable_if_t::value, result_of_begin())>>; template using range_value_t = value_type_t>>; // The following implementation of is_complete_type is taken from // https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/ // and is written by Xiang Fan who agreed to using it in this library. template struct is_complete_type : std::false_type {}; template struct is_complete_type : std::true_type {}; template struct is_compatible_object_type_impl : std::false_type {}; template struct is_compatible_object_type_impl < BasicJsonType, CompatibleObjectType, enable_if_t < is_detected::value&& is_detected::value >> { using object_t = typename BasicJsonType::object_t; // macOS's is_constructible does not play well with nonesuch... static constexpr bool value = is_constructible::value && is_constructible::value; }; template struct is_compatible_object_type : is_compatible_object_type_impl {}; template struct is_constructible_object_type_impl : std::false_type {}; template struct is_constructible_object_type_impl < BasicJsonType, ConstructibleObjectType, enable_if_t < is_detected::value&& is_detected::value >> { using object_t = typename BasicJsonType::object_t; static constexpr bool value = (is_default_constructible::value && (std::is_move_assignable::value || std::is_copy_assignable::value) && (is_constructible::value && std::is_same < typename object_t::mapped_type, typename ConstructibleObjectType::mapped_type >::value)) || (has_from_json::value || has_non_default_from_json < BasicJsonType, typename ConstructibleObjectType::mapped_type >::value); }; template struct is_constructible_object_type : is_constructible_object_type_impl {}; template struct is_compatible_string_type { static constexpr auto value = is_constructible::value; }; template struct is_constructible_string_type { // launder type through decltype() to fix compilation failure on ICPC #ifdef __INTEL_COMPILER using laundered_type = decltype(std::declval()); #else using laundered_type = ConstructibleStringType; #endif static constexpr auto value = conjunction < is_constructible, is_detected_exact>::value; }; template struct is_compatible_array_type_impl : std::false_type {}; template struct is_compatible_array_type_impl < BasicJsonType, CompatibleArrayType, enable_if_t < is_detected::value&& is_iterator_traits>>::value&& // special case for types like std::filesystem::path whose iterator's value_type are themselves // c.f. https://github.com/nlohmann/json/pull/3073 !std::is_same>::value >> { static constexpr bool value = is_constructible>::value; }; template struct is_compatible_array_type : is_compatible_array_type_impl {}; template struct is_constructible_array_type_impl : std::false_type {}; template struct is_constructible_array_type_impl < BasicJsonType, ConstructibleArrayType, enable_if_t::value >> : std::true_type {}; template struct is_constructible_array_type_impl < BasicJsonType, ConstructibleArrayType, enable_if_t < !std::is_same::value&& !is_compatible_string_type::value&& is_default_constructible::value&& (std::is_move_assignable::value || std::is_copy_assignable::value)&& is_detected::value&& is_iterator_traits>>::value&& is_detected::value&& // special case for types like std::filesystem::path whose iterator's value_type are themselves // c.f. https://github.com/nlohmann/json/pull/3073 !std::is_same>::value&& is_complete_type < detected_t>::value >> { using value_type = range_value_t; static constexpr bool value = std::is_same::value || has_from_json::value || has_non_default_from_json < BasicJsonType, value_type >::value; }; template struct is_constructible_array_type : is_constructible_array_type_impl {}; template struct is_compatible_integer_type_impl : std::false_type {}; template struct is_compatible_integer_type_impl < RealIntegerType, CompatibleNumberIntegerType, enable_if_t < std::is_integral::value&& std::is_integral::value&& !std::is_same::value >> { // is there an assert somewhere on overflows? using RealLimits = std::numeric_limits; using CompatibleLimits = std::numeric_limits; static constexpr auto value = is_constructible::value && CompatibleLimits::is_integer && RealLimits::is_signed == CompatibleLimits::is_signed; }; template struct is_compatible_integer_type : is_compatible_integer_type_impl {}; template struct is_compatible_type_impl: std::false_type {}; template struct is_compatible_type_impl < BasicJsonType, CompatibleType, enable_if_t::value >> { static constexpr bool value = has_to_json::value; }; template struct is_compatible_type : is_compatible_type_impl {}; template struct is_constructible_tuple : std::false_type {}; template struct is_constructible_tuple> : conjunction...> {}; template struct is_json_iterator_of : std::false_type {}; template struct is_json_iterator_of : std::true_type {}; template struct is_json_iterator_of : std::true_type {}; // checks if a given type T is a template specialization of Primary template